@hartl-services/medusa-base 2.8.0 → 2.9.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.
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.js +4 -5
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.d.ts +0 -5
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.js +0 -5
- package/.medusa/server/src/admin/admin-components/i18n/texts.d.ts +1 -2
- package/.medusa/server/src/admin/admin-components/i18n/texts.js +1 -2
- package/.medusa/server/src/admin/index.js +106 -69
- package/.medusa/server/src/admin/index.mjs +107 -70
- package/.medusa/server/src/api/admin/email/templates/[kind]/send-test/route.js +7 -1
- package/.medusa/server/src/email/application/warn-credential-expiry.js +77 -0
- package/.medusa/server/src/email/config/index.js +8 -2
- package/.medusa/server/src/email/config/notification-module.js +28 -2
- package/.medusa/server/src/email/domain/business-keys.js +5 -2
- package/.medusa/server/src/email/domain/failure-classification.js +9 -1
- package/.medusa/server/src/email/plugin-features.js +123 -1
- package/.medusa/server/src/email/rendering/default-templates.js +16 -1
- package/.medusa/server/src/email/rendering/render-email.js +2 -1
- package/.medusa/server/src/email/types/email-kinds.js +2 -1
- package/.medusa/server/src/email/types/template-data.js +8 -1
- package/.medusa/server/src/jobs/email-credential-expiry.js +27 -0
- package/.medusa/server/src/modules/email/domain/message-state.js +3 -1
- package/.medusa/server/src/modules/email/migrations/Migration20261011120000.js +20 -0
- package/.medusa/server/src/providers/smtp/delivery-settings.js +75 -0
- package/.medusa/server/src/providers/smtp/graph-transport.js +150 -0
- package/.medusa/server/src/providers/smtp/service.js +105 -37
- package/.medusa/server/src/providers/smtp/types.js +7 -1
- package/.medusa/server/src/shop-config/build-food-shop-config.js +3 -5
- package/README.md +100 -65
- package/dist/email/config/index.d.ts +6 -1
- package/dist/email/config/index.js +7 -1
- package/dist/email/config/notification-module.d.ts +25 -0
- package/dist/email/config/notification-module.js +27 -1
- package/dist/email/types/email-kinds.d.ts +2 -1
- package/dist/email/types/email-kinds.js +1 -0
- package/dist/email/types/template-data.d.ts +10 -0
- package/dist/email/types/template-data.js +7 -0
- package/dist/shop-config/build-food-shop-config.d.ts +1 -1
- package/dist/shop-config/build-food-shop-config.js +2 -4
- package/package.json +2 -2
|
@@ -4,7 +4,7 @@ import { Container, IconBadge, Heading, Text, Tooltip, IconButton, toast, Status
|
|
|
4
4
|
import { useQuery, useQueryClient, useMutation, keepPreviousData, skipToken } from "@tanstack/react-query";
|
|
5
5
|
import { emailAdminPaths } from "@hartl-services/medusa-food-supplements-contracts/paths/email";
|
|
6
6
|
import Medusa from "@medusajs/js-sdk";
|
|
7
|
-
import { ArrowLongLeft, InformationCircle, Users, TruckFast, Tag, SquaresPlus, ShoppingCart, ShieldCheck, ReceiptPercent, Envelope, DocumentText, CreditCard, CogSixTooth, ClockSolid, Buildings, BuildingStorefront, ArrowPath, ArchiveBox, ArrowUpTray, TriangleRightMini, ChevronDownMini, PaperClip, User, ArrowDownTray } from "@medusajs/icons";
|
|
7
|
+
import { ArrowLongLeft, InformationCircle, Users, TruckFast, Tag, SquaresPlus, ShoppingCart, ShieldCheck, ReceiptPercent, Envelope, DocumentText, CreditCard, CogSixTooth, ClockSolid, Buildings, BuildingStorefront, ArrowPath, ArchiveBox, ArrowUpTray, TriangleRightMini, ChevronDownMini, PaperPlane, PaperClip, User, ArrowDownTray } from "@medusajs/icons";
|
|
8
8
|
import { Link, useLocation, useSearchParams, useParams } from "react-router-dom";
|
|
9
9
|
import { pluginFeaturesAdminPaths } from "@hartl-services/medusa-food-supplements-contracts/paths/plugin-features";
|
|
10
10
|
import { useRef, useEffect, useState, useMemo, Fragment as Fragment$1, useCallback, useLayoutEffect, useId, forwardRef, useImperativeHandle } from "react";
|
|
@@ -22,7 +22,8 @@ const texts = {
|
|
|
22
22
|
},
|
|
23
23
|
breadcrumbs: {
|
|
24
24
|
hub: "Plugins",
|
|
25
|
-
emailAttachments: "Anhänge"
|
|
25
|
+
emailAttachments: "Anhänge",
|
|
26
|
+
emailDelivery: "Versand"
|
|
26
27
|
},
|
|
27
28
|
page: {
|
|
28
29
|
title: "Hartl Services Plugins",
|
|
@@ -88,8 +89,6 @@ const texts = {
|
|
|
88
89
|
secretClearUndoLabel: (label) => `${label} nicht löschen`,
|
|
89
90
|
/** Shown on a secret: the settings whose change deletes it ("A", "A oder B"). */
|
|
90
91
|
invalidatedBy: (labels) => `Wird gelöscht, wenn ${labels.length > 1 ? `${labels.slice(0, -1).join(", ")} oder ${labels[labels.length - 1]}` : labels.join("")} sich ändert.`,
|
|
91
|
-
/** Shown on the changing setting: the secrets its change deletes. */
|
|
92
|
-
invalidates: (labels) => `Beim Ändern muss ${labels} neu eingegeben werden.`,
|
|
93
92
|
invalidNumber: "Bitte eine gültige Zahl eingeben.",
|
|
94
93
|
invalidColor: "Bitte eine Hex-Farbe wie #1a2b3c eingeben.",
|
|
95
94
|
colorPlaceholder: "Standard",
|
|
@@ -390,9 +389,6 @@ const disabledParent = (features, feature) => {
|
|
|
390
389
|
};
|
|
391
390
|
const invalidatedByLabels = (settings, secretKey) => settings.filter((setting) => setting.invalidates.includes(secretKey)).map((setting) => setting.label);
|
|
392
391
|
const isGroupDimmed = (features, requiresFeature) => requiresFeature !== null && features.find((feature) => feature.key === requiresFeature)?.effective_enabled === false;
|
|
393
|
-
const invalidatesLabels = (settings, setting) => setting.invalidates.map(
|
|
394
|
-
(key) => settings.find((candidate) => candidate.key === key)?.label ?? key
|
|
395
|
-
);
|
|
396
392
|
const settingInfoText = (setting) => setting.hint !== null && setting.description !== null && setting.description !== setting.hint ? setting.description : null;
|
|
397
393
|
const headerInfoText = (plugin2) => plugin2.summary !== null && plugin2.description !== null && plugin2.description !== plugin2.summary ? plugin2.description : null;
|
|
398
394
|
const showsSourceHint = (source) => source !== "default";
|
|
@@ -1337,7 +1333,6 @@ const SettingField = ({
|
|
|
1337
1333
|
pluginKey,
|
|
1338
1334
|
setting,
|
|
1339
1335
|
invalidatedBy,
|
|
1340
|
-
invalidates,
|
|
1341
1336
|
value,
|
|
1342
1337
|
invalid,
|
|
1343
1338
|
disabled,
|
|
@@ -1352,7 +1347,7 @@ const SettingField = ({
|
|
|
1352
1347
|
const info = settingInfoText(setting);
|
|
1353
1348
|
const showBounds = Boolean(bounds) && showsBoundsLine(setting);
|
|
1354
1349
|
const required = setting.required;
|
|
1355
|
-
const hasHints = Boolean(hint) || clearPending || invalidatedBy.length > 0 ||
|
|
1350
|
+
const hasHints = Boolean(hint) || clearPending || invalidatedBy.length > 0 || showBounds || invalid;
|
|
1356
1351
|
const describedBy = hasHints ? hintId : void 0;
|
|
1357
1352
|
const placeholder = setting.placeholder ?? void 0;
|
|
1358
1353
|
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
@@ -1476,7 +1471,6 @@ const SettingField = ({
|
|
|
1476
1471
|
hint && /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: hint }),
|
|
1477
1472
|
clearPending && /* @__PURE__ */ jsx(Hint, { variant: "info", children: texts.settings.secretClearPending }),
|
|
1478
1473
|
invalidatedBy.length > 0 && /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: texts.settings.invalidatedBy(invalidatedBy) }),
|
|
1479
|
-
invalidates.length > 0 && /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: texts.settings.invalidates(invalidates.join(", ")) }),
|
|
1480
1474
|
showBounds && !invalid && /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-muted", children: bounds }),
|
|
1481
1475
|
invalid && /* @__PURE__ */ jsx(Hint, { variant: "error", children: setting.type === "color" ? texts.settings.invalidColor : bounds ?? texts.settings.invalidNumber })
|
|
1482
1476
|
] })
|
|
@@ -1499,7 +1493,6 @@ const PluginSettingsForm = ({ plugin: plugin2 }) => {
|
|
|
1499
1493
|
pluginKey: plugin2.plugin_key,
|
|
1500
1494
|
setting,
|
|
1501
1495
|
invalidatedBy: setting.type === "secret" ? invalidatedByLabels(plugin2.settings, setting.key) : [],
|
|
1502
|
-
invalidates: invalidatesLabels(plugin2.settings, setting),
|
|
1503
1496
|
value: form.draft[setting.key],
|
|
1504
1497
|
invalid: form.invalid.includes(setting.key),
|
|
1505
1498
|
disabled: pending,
|
|
@@ -3522,7 +3515,7 @@ const PluginFeaturesSettingsPage = () => {
|
|
|
3522
3515
|
const config = defineRouteConfig({
|
|
3523
3516
|
label: texts.menu.label
|
|
3524
3517
|
});
|
|
3525
|
-
const handle$
|
|
3518
|
+
const handle$b = {
|
|
3526
3519
|
breadcrumb: () => texts.breadcrumbs.hub
|
|
3527
3520
|
};
|
|
3528
3521
|
const KINDS = [
|
|
@@ -3538,7 +3531,8 @@ const KINDS = [
|
|
|
3538
3531
|
"auth.login_code",
|
|
3539
3532
|
"affiliate.consignment_report_due",
|
|
3540
3533
|
"affiliate.application_submitted.admin",
|
|
3541
|
-
"user.invite"
|
|
3534
|
+
"user.invite",
|
|
3535
|
+
"system.credential_expiry.admin"
|
|
3542
3536
|
];
|
|
3543
3537
|
const KIND_LABELS = {
|
|
3544
3538
|
"order.received": "Bestellbestätigung (Kunde)",
|
|
@@ -3553,10 +3547,12 @@ const KIND_LABELS = {
|
|
|
3553
3547
|
"auth.login_code": "Anmeldecode",
|
|
3554
3548
|
"affiliate.consignment_report_due": "Affiliate-Meldung",
|
|
3555
3549
|
"affiliate.application_submitted.admin": "Neue Partner-Bewerbung (Shop)",
|
|
3556
|
-
"user.invite": "Admin-Einladung"
|
|
3550
|
+
"user.invite": "Admin-Einladung",
|
|
3551
|
+
"system.credential_expiry.admin": "Secret läuft ab (Shop)"
|
|
3557
3552
|
};
|
|
3558
3553
|
const EMAIL_PAGE_PATH = `${PLUGIN_HUB_PATH}/email`;
|
|
3559
3554
|
const EMAIL_ATTACHMENTS_PAGE_PATH = `${EMAIL_PAGE_PATH}/attachments`;
|
|
3555
|
+
const EMAIL_DELIVERY_PAGE_PATH = `${EMAIL_PAGE_PATH}/delivery`;
|
|
3560
3556
|
const emailAttachmentPagePath = (attachmentId) => `${EMAIL_ATTACHMENTS_PAGE_PATH}/${encodeURIComponent(attachmentId)}`;
|
|
3561
3557
|
const NO_MAIL_ASSIGNED_LABEL = "keiner Mail zugeordnet";
|
|
3562
3558
|
const MAIL_KIND_OPTIONS = EMAIL_ATTACHABLE_KINDS.map((kind) => ({
|
|
@@ -3814,52 +3810,61 @@ const LinkRow = ({
|
|
|
3814
3810
|
description,
|
|
3815
3811
|
to,
|
|
3816
3812
|
disabled
|
|
3817
|
-
}) => /* @__PURE__ */ jsxs(
|
|
3818
|
-
|
|
3819
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-y-0.5", children: [
|
|
3820
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: title }),
|
|
3821
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: description })
|
|
3822
|
-
] }),
|
|
3823
|
-
disabled ? /* @__PURE__ */ jsx(
|
|
3824
|
-
Button,
|
|
3825
|
-
{
|
|
3826
|
-
"aria-label": texts.plugin.openLabel(title),
|
|
3827
|
-
disabled: true,
|
|
3828
|
-
size: "small",
|
|
3829
|
-
variant: "secondary",
|
|
3830
|
-
children: texts.plugin.open
|
|
3831
|
-
}
|
|
3832
|
-
) : /* @__PURE__ */ jsx(Button, { asChild: true, size: "small", variant: "secondary", children: /* @__PURE__ */ jsx(Link, { "aria-label": texts.plugin.openLabel(title), to, children: texts.plugin.open }) })
|
|
3833
|
-
] });
|
|
3834
|
-
const EmailManagementSection = ({ disabled }) => /* @__PURE__ */ jsxs(
|
|
3835
|
-
AdminSection,
|
|
3813
|
+
}) => /* @__PURE__ */ jsxs(
|
|
3814
|
+
"div",
|
|
3836
3815
|
{
|
|
3837
|
-
className: `transition-opacity ${disabled ? "opacity-50" : ""}`,
|
|
3838
|
-
title: "Verwaltung",
|
|
3816
|
+
className: `flex items-center gap-4 px-6 py-3 transition-opacity ${disabled ? "opacity-50" : ""}`,
|
|
3839
3817
|
children: [
|
|
3840
|
-
/* @__PURE__ */ jsx(
|
|
3841
|
-
|
|
3842
|
-
{
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
to: EMAIL_ATTACHMENTS_PAGE_PATH
|
|
3848
|
-
}
|
|
3849
|
-
),
|
|
3850
|
-
/* @__PURE__ */ jsx(
|
|
3851
|
-
LinkRow,
|
|
3818
|
+
/* @__PURE__ */ jsx(IconBadge, { children: icon }),
|
|
3819
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-y-0.5", children: [
|
|
3820
|
+
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: title }),
|
|
3821
|
+
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: description })
|
|
3822
|
+
] }),
|
|
3823
|
+
disabled ? /* @__PURE__ */ jsx(
|
|
3824
|
+
Button,
|
|
3852
3825
|
{
|
|
3853
|
-
|
|
3854
|
-
disabled,
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3826
|
+
"aria-label": texts.plugin.openLabel(title),
|
|
3827
|
+
disabled: true,
|
|
3828
|
+
size: "small",
|
|
3829
|
+
variant: "secondary",
|
|
3830
|
+
children: texts.plugin.open
|
|
3858
3831
|
}
|
|
3859
|
-
)
|
|
3832
|
+
) : /* @__PURE__ */ jsx(Button, { asChild: true, size: "small", variant: "secondary", children: /* @__PURE__ */ jsx(Link, { "aria-label": texts.plugin.openLabel(title), to, children: texts.plugin.open }) })
|
|
3860
3833
|
]
|
|
3861
3834
|
}
|
|
3862
3835
|
);
|
|
3836
|
+
const EmailManagementSection = ({ disabled }) => /* @__PURE__ */ jsxs(AdminSection, { title: "Verwaltung", children: [
|
|
3837
|
+
/* @__PURE__ */ jsx(
|
|
3838
|
+
LinkRow,
|
|
3839
|
+
{
|
|
3840
|
+
description: "SMTP oder Microsoft 365.",
|
|
3841
|
+
disabled: false,
|
|
3842
|
+
icon: /* @__PURE__ */ jsx(PaperPlane, {}),
|
|
3843
|
+
title: texts.breadcrumbs.emailDelivery,
|
|
3844
|
+
to: EMAIL_DELIVERY_PAGE_PATH
|
|
3845
|
+
}
|
|
3846
|
+
),
|
|
3847
|
+
/* @__PURE__ */ jsx(
|
|
3848
|
+
LinkRow,
|
|
3849
|
+
{
|
|
3850
|
+
description: "PDFs an Kunden-Mails, z. B. AGB.",
|
|
3851
|
+
disabled,
|
|
3852
|
+
icon: /* @__PURE__ */ jsx(PaperClip, {}),
|
|
3853
|
+
title: "Anhänge",
|
|
3854
|
+
to: EMAIL_ATTACHMENTS_PAGE_PATH
|
|
3855
|
+
}
|
|
3856
|
+
),
|
|
3857
|
+
/* @__PURE__ */ jsx(
|
|
3858
|
+
LinkRow,
|
|
3859
|
+
{
|
|
3860
|
+
description: "Status und Zustellversuche.",
|
|
3861
|
+
disabled,
|
|
3862
|
+
icon: /* @__PURE__ */ jsx(ClockSolid, {}),
|
|
3863
|
+
title: "E-Mail-Protokoll",
|
|
3864
|
+
to: EMAIL_LOG_PAGE_PATH
|
|
3865
|
+
}
|
|
3866
|
+
)
|
|
3867
|
+
] });
|
|
3863
3868
|
const EmailOverviewSections = () => {
|
|
3864
3869
|
const plugin2 = usePluginFeature("email").data?.plugin;
|
|
3865
3870
|
if (!plugin2) {
|
|
@@ -3871,7 +3876,7 @@ const EmailOverviewSections = () => {
|
|
|
3871
3876
|
] });
|
|
3872
3877
|
};
|
|
3873
3878
|
const EmailOverviewPage = () => /* @__PURE__ */ jsx(PluginPageShell, { pluginKey: "email", variant: "header", children: /* @__PURE__ */ jsx(EmailOverviewSections, {}) });
|
|
3874
|
-
const handle$
|
|
3879
|
+
const handle$a = {
|
|
3875
3880
|
breadcrumb: (_match) => /* @__PURE__ */ jsx(PluginLabelCrumb, { pluginKey: "email" })
|
|
3876
3881
|
};
|
|
3877
3882
|
const EMAIL_TEMPLATES_PATH = `${EMAIL_PAGE_PATH}/templates`;
|
|
@@ -3991,11 +3996,11 @@ const EmailTemplateGroupPage = ({
|
|
|
3991
3996
|
) })
|
|
3992
3997
|
] });
|
|
3993
3998
|
};
|
|
3994
|
-
const handle$
|
|
3999
|
+
const handle$9 = {
|
|
3995
4000
|
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.account.label
|
|
3996
4001
|
};
|
|
3997
4002
|
const EmailAccountMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "account" }) });
|
|
3998
|
-
const handle$
|
|
4003
|
+
const handle$8 = {
|
|
3999
4004
|
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.affiliate.label
|
|
4000
4005
|
};
|
|
4001
4006
|
const EmailAffiliateMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "affiliate" }) });
|
|
@@ -4396,10 +4401,37 @@ const EmailAttachmentsPage = () => {
|
|
|
4396
4401
|
/* @__PURE__ */ jsx(NewAttachmentModal, { onOpenChange: setNewOpen, open: newOpen })
|
|
4397
4402
|
] });
|
|
4398
4403
|
};
|
|
4399
|
-
const handle$
|
|
4404
|
+
const handle$7 = {
|
|
4400
4405
|
breadcrumb: () => texts.breadcrumbs.emailAttachments
|
|
4401
4406
|
};
|
|
4402
4407
|
const EmailAttachmentsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailAttachmentsPage, {}) });
|
|
4408
|
+
const EmailDeliveryPage = () => {
|
|
4409
|
+
const query = usePluginFeature("email");
|
|
4410
|
+
const plugin2 = query.data?.plugin;
|
|
4411
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-3", children: [
|
|
4412
|
+
/* @__PURE__ */ jsx(
|
|
4413
|
+
AdminPageHeader,
|
|
4414
|
+
{
|
|
4415
|
+
badges: plugin2 && /* @__PURE__ */ jsx(StatusBadge, { color: plugin2.configured ? "green" : "orange", children: plugin2.configured ? texts.chips.configured : texts.chips.notConfigured }),
|
|
4416
|
+
description: "SMTP oder Microsoft 365.",
|
|
4417
|
+
icon: /* @__PURE__ */ jsx(PaperPlane, {}),
|
|
4418
|
+
title: texts.breadcrumbs.emailDelivery
|
|
4419
|
+
}
|
|
4420
|
+
),
|
|
4421
|
+
plugin2 ? /* @__PURE__ */ jsx(PluginSettingsForm, { plugin: plugin2 }) : /* @__PURE__ */ jsx(Container, { className: "p-0", children: /* @__PURE__ */ jsx(
|
|
4422
|
+
QueryState,
|
|
4423
|
+
{
|
|
4424
|
+
error: query.error,
|
|
4425
|
+
errorText: texts.states.error,
|
|
4426
|
+
isLoading: query.isPending,
|
|
4427
|
+
loadingText: texts.states.loading
|
|
4428
|
+
}
|
|
4429
|
+
) })
|
|
4430
|
+
] });
|
|
4431
|
+
};
|
|
4432
|
+
const handle$6 = {
|
|
4433
|
+
breadcrumb: () => texts.breadcrumbs.emailDelivery
|
|
4434
|
+
};
|
|
4403
4435
|
const LOG_PAGE_SIZE = 20;
|
|
4404
4436
|
const LOG_MAX_OFFSET = 1e4;
|
|
4405
4437
|
const LOG_MAX_RESOURCE_ID_LENGTH = 255;
|
|
@@ -4631,17 +4663,17 @@ const handle$5 = {
|
|
|
4631
4663
|
breadcrumb: () => "Protokoll"
|
|
4632
4664
|
};
|
|
4633
4665
|
const EmailLogRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailLogPage, {}) });
|
|
4666
|
+
const handle$4 = {
|
|
4667
|
+
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.order.label
|
|
4668
|
+
};
|
|
4669
|
+
const EmailOrderMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "order" }) });
|
|
4634
4670
|
const PluginDetailPage = () => {
|
|
4635
4671
|
const { plugin_key: pluginKey = "" } = useParams();
|
|
4636
4672
|
return /* @__PURE__ */ jsx(PluginPageShell, { pluginKey, variant: "header", children: /* @__PURE__ */ jsx(PluginFeatureSections, { pluginKey }) });
|
|
4637
4673
|
};
|
|
4638
|
-
const handle$4 = {
|
|
4639
|
-
breadcrumb: (match) => /* @__PURE__ */ jsx(PluginLabelCrumb, { pluginKey: match.params.plugin_key ?? "" })
|
|
4640
|
-
};
|
|
4641
4674
|
const handle$3 = {
|
|
4642
|
-
breadcrumb: () =>
|
|
4675
|
+
breadcrumb: (match) => /* @__PURE__ */ jsx(PluginLabelCrumb, { pluginKey: match.params.plugin_key ?? "" })
|
|
4643
4676
|
};
|
|
4644
|
-
const EmailOrderMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "order" }) });
|
|
4645
4677
|
const STATUS_BADGES = {
|
|
4646
4678
|
current: { label: "aktuell", color: "green" },
|
|
4647
4679
|
planned: { label: "geplant", color: "blue" },
|
|
@@ -6699,26 +6731,31 @@ const routeModule = {
|
|
|
6699
6731
|
{
|
|
6700
6732
|
Component: PluginFeaturesSettingsPage,
|
|
6701
6733
|
path: "/settings/hartl-services",
|
|
6702
|
-
handle: { label: config.label, translationNs: config.translationNs, ...handle$
|
|
6734
|
+
handle: { label: config.label, translationNs: config.translationNs, ...handle$b }
|
|
6703
6735
|
},
|
|
6704
6736
|
{
|
|
6705
6737
|
Component: EmailOverviewPage,
|
|
6706
6738
|
path: "/settings/hartl-services/email",
|
|
6707
|
-
handle: handle$
|
|
6739
|
+
handle: handle$a
|
|
6708
6740
|
},
|
|
6709
6741
|
{
|
|
6710
6742
|
Component: EmailAccountMailsRoute,
|
|
6711
6743
|
path: "/settings/hartl-services/email/account",
|
|
6712
|
-
handle: handle$
|
|
6744
|
+
handle: handle$9
|
|
6713
6745
|
},
|
|
6714
6746
|
{
|
|
6715
6747
|
Component: EmailAffiliateMailsRoute,
|
|
6716
6748
|
path: "/settings/hartl-services/email/affiliate",
|
|
6717
|
-
handle: handle$
|
|
6749
|
+
handle: handle$8
|
|
6718
6750
|
},
|
|
6719
6751
|
{
|
|
6720
6752
|
Component: EmailAttachmentsRoute,
|
|
6721
6753
|
path: "/settings/hartl-services/email/attachments",
|
|
6754
|
+
handle: handle$7
|
|
6755
|
+
},
|
|
6756
|
+
{
|
|
6757
|
+
Component: EmailDeliveryPage,
|
|
6758
|
+
path: "/settings/hartl-services/email/delivery",
|
|
6722
6759
|
handle: handle$6
|
|
6723
6760
|
},
|
|
6724
6761
|
{
|
|
@@ -6727,13 +6764,13 @@ const routeModule = {
|
|
|
6727
6764
|
handle: handle$5
|
|
6728
6765
|
},
|
|
6729
6766
|
{
|
|
6730
|
-
Component:
|
|
6731
|
-
path: "/settings/hartl-services/
|
|
6767
|
+
Component: EmailOrderMailsRoute,
|
|
6768
|
+
path: "/settings/hartl-services/email/order",
|
|
6732
6769
|
handle: handle$4
|
|
6733
6770
|
},
|
|
6734
6771
|
{
|
|
6735
|
-
Component:
|
|
6736
|
-
path: "/settings/hartl-services/
|
|
6772
|
+
Component: PluginDetailPage,
|
|
6773
|
+
path: "/settings/hartl-services/plugin/:plugin_key",
|
|
6737
6774
|
handle: handle$3
|
|
6738
6775
|
},
|
|
6739
6776
|
{
|
|
@@ -16,6 +16,12 @@ const TEST_SUBJECT_PREFIX = "[Test] ";
|
|
|
16
16
|
/** A German Admin message for a failed test send; the provider's own text never reaches the Admin. */
|
|
17
17
|
const testSendFailure = (error) => {
|
|
18
18
|
const { code } = (0, failure_classification_1.classifyNotificationFailure)(error);
|
|
19
|
+
if (code === "not_configured") {
|
|
20
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Der Versand ist nicht eingerichtet (E-Mail › Versand).");
|
|
21
|
+
}
|
|
22
|
+
if (code === "auth_failed") {
|
|
23
|
+
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Die Anmeldung beim Mailanbieter ist fehlgeschlagen. Zugangsdaten unter E-Mail › Versand prüfen.");
|
|
24
|
+
}
|
|
19
25
|
if (code === "permanent_rejection") {
|
|
20
26
|
return new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Der Mailserver hat die Adresse abgelehnt.");
|
|
21
27
|
}
|
|
@@ -176,4 +182,4 @@ const POST = async (req, res) => {
|
|
|
176
182
|
}));
|
|
177
183
|
};
|
|
178
184
|
exports.POST = POST;
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2VtYWlsL3RlbXBsYXRlcy9ba2luZF0vc2VuZC10ZXN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFpRTtBQUtqRSwyRkFHeUU7QUFRekUsMkdBS3NFO0FBQ3RFLDJHQUlzRTtBQUN0RSxnRkFJc0Q7QUFDdEQsa0dBQW9HO0FBQ3BHLHVHQUFpRztBQUNqRyxpRUFBMEU7QUFFMUUsMkRBQStEO0FBQy9ELGtGQUkyRDtBQUUzRCxvRkFBMkU7QUFFM0UsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUM7QUFFdEMsc0dBQXNHO0FBQ3RHLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBYyxFQUFlLEVBQUU7SUFDdEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUEsb0RBQTJCLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix3REFBd0QsQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixpR0FBaUcsQ0FDbEcsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDJDQUEyQyxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQ0UsSUFBSSxLQUFLLG1CQUFtQjtRQUM1QixJQUFJLEtBQUsscUJBQXFCO1FBQzlCLElBQUksS0FBSyxzQkFBc0IsRUFDL0IsQ0FBQztRQUNELE9BQU8sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsNEVBQTRFLENBQzdFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyw2Q0FBNkMsQ0FDOUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQStCLEVBQUUsQ0FDcEUsOEJBQWdELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRW5FOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUMvQixHQUEyRCxFQUMzRCxXQUEyQyxFQUNSLEVBQUU7SUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sSUFBQSxzREFBMkIsRUFDdEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXFCLGVBQU8sQ0FBQyxJQUFJLENBQUMsRUFDbkQsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQ0UsS0FBSyxZQUFZLHNEQUEyQjtZQUM1QyxDQUFDLENBQUMsS0FBSyxZQUFZLGlFQUFzQyxDQUFDLEVBQzFELENBQUM7WUFDRCxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixXQUFXLEtBQUssQ0FBQyxRQUFRLDhCQUE4QixDQUN4RCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsS0FBSyxZQUFZLHNEQUEyQjtZQUMxQyxDQUFDLENBQUMsV0FBVyxLQUFLLENBQUMsUUFBUSx1Q0FBdUM7WUFDbEUsQ0FBQyxDQUFDLGtEQUFrRCxDQUN2RCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQUlGLDRFQUE0RTtBQUM1RSxNQUFNLGFBQWEsR0FBRyxDQUNwQixJQUF1QixFQUN2QixLQUF3QixFQUNzQyxFQUFFO0lBQ2hFLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLGVBQWU7WUFDbEIsT0FBTyxLQUFLLENBQUMsU0FBUztnQkFDcEIsQ0FBQyxDQUFDO29CQUNFLFdBQVcsRUFBRSxJQUFBLHVDQUF1QixFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7b0JBQ3JELElBQUksRUFBRSxrQkFBa0I7aUJBQ3pCO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWCxLQUFLLGdCQUFnQjtZQUNuQixPQUFPO2dCQUNMLFdBQVcsRUFBRSxJQUFBLHdDQUF3QixFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ3JELElBQUksRUFBRSx1QkFBdUI7YUFDOUIsQ0FBQztRQUNKLEtBQUssZ0JBQWdCO1lBQ25CLE9BQU8sS0FBSyxDQUFDLFNBQVM7Z0JBQ3BCLENBQUMsQ0FBQztvQkFDRSxXQUFXLEVBQUUsSUFBQSx3Q0FBd0IsRUFBQyxLQUFLLENBQUMsU0FBUyxDQUFDO29CQUN0RCxJQUFJLEVBQUUsdUJBQXVCO2lCQUM5QjtnQkFDSCxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1g7WUFDRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUM3QixLQUF5QixFQUN6QixJQUF1QixFQUN2QixLQUF3QixFQUd4QixFQUFFO0lBQ0YsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQTRCLENBQUM7SUFDdkUsT0FBTztRQUNMLEtBQUssRUFBRTtZQUNMLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRTtnQkFDTCxHQUFHLEtBQUssQ0FBQyxLQUFLO2dCQUNkLElBQUksRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7YUFDL0M7U0FDeEI7UUFDRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxVQUFVLENBQUMsQ0FDakQ7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsc0ZBQXNGO0FBQ3RGLE1BQU0sc0JBQXNCLEdBQUcsQ0FDN0IsSUFBdUIsRUFDdkIsS0FBK0IsRUFDekIsRUFBRSxDQUNSLEtBQUssSUFBSSxJQUFJLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7QUFFcEU7Ozs7Ozs7O0dBUUc7QUFDSSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQTJELEVBQzNELEdBQXVELEVBQ3hDLEVBQUU7SUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQ0FBaUIsRUFBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7SUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDeEUsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsa0VBQWtFLENBQ25FLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBQSw4Q0FBbUIsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFxQixvQkFBWSxDQUFDLENBQUM7SUFDbEUsSUFBSSxhQUF5RSxDQUFDO0lBQzlFLElBQUksQ0FBQztRQUNILGFBQWEsR0FBRyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsZ0dBQWdHLENBQ2pHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLDhDQUFvQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxLQUFLLENBQUM7SUFDOUQsTUFBTSxRQUFRLEdBQ1osSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsSUFBSSxJQUFBLDhDQUFtQixFQUFDLElBQUksQ0FBQztRQUM5RCxDQUFDLENBQUMsTUFBTSxJQUFBLGdEQUFxQixFQUN6QixHQUFHLENBQUMsS0FBSyxFQUNULElBQUksRUFDSixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksRUFDSixJQUFJLENBQUMsU0FBUyxDQUNmO1FBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQ3hCLFFBQVEsSUFBSSxrQkFBa0I7UUFDNUIsQ0FBQyxDQUFDLE1BQU0saUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7UUFDaEQsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBQSxpQ0FBcUIsRUFBQztRQUNwQyxhQUFhO1FBQ2IsSUFBSTtRQUNKLElBQUk7UUFDSixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3pDLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxHQUNYLGtCQUFrQixJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMxQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsd0JBQXdCLENBQ2xDLElBQUksRUFDSixzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3BDO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULE1BQU0sV0FBVyxHQUFHLE1BQU0sbUJBQW1CLENBQzNDLEdBQUcsRUFDSCxJQUFBLGtDQUFxQixFQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUNsRCxDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsR0FBRyxtQkFBbUIsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNuQixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDckMsZUFBTyxDQUFDLFlBQVksQ0FDckIsQ0FBQztJQUNGLElBQUksQ0FBQztRQUNILE1BQU0sYUFBYSxDQUFDLG1CQUFtQixDQUFDO1lBQ3RDLEVBQUU7WUFDRixPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDNUQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxxQkFBcUI7WUFDbkMsR0FBRyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDO29CQUNFLGFBQWEsRUFBRSxPQUFPO29CQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVE7b0JBQzNCLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtpQkFDOUM7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUM1RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxHQUFHLENBQUMsSUFBSSxDQUNOLGdEQUF3QyxDQUFDLEtBQUssQ0FBQztRQUM3QyxJQUFJLEVBQUUsSUFBSTtRQUNWLEVBQUU7UUFDRixPQUFPO1FBQ1AsV0FBVyxFQUFFLFdBQVcsQ0FBQyxNQUFNO0tBQ2hDLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBL0ZXLFFBQUEsSUFBSSxRQStGZiJ9
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.warnCredentialExpiry = exports.isCredentialExpiryDue = exports.calendarDateIn = exports.CREDENTIAL_EXPIRY_WARNING_DAYS = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const settings_1 = require("../../public/settings");
|
|
6
|
+
const shop_master_data_1 = require("../../public/shop-master-data");
|
|
7
|
+
const lib_1 = require("../../shared/lib");
|
|
8
|
+
const email_1 = require("../../modules/email");
|
|
9
|
+
const dispatch_email_message_1 = require("../../workflows/email/dispatch-email-message");
|
|
10
|
+
const business_keys_1 = require("../domain/business-keys");
|
|
11
|
+
const plugin_features_1 = require("../plugin-features");
|
|
12
|
+
/** The warning goes out this many days before the secret expires. */
|
|
13
|
+
exports.CREDENTIAL_EXPIRY_WARNING_DAYS = 7;
|
|
14
|
+
const DAY_MS = 86_400_000;
|
|
15
|
+
/** `YYYY-MM-DD` of `now` in `timeZone`. */
|
|
16
|
+
const calendarDateIn = (now, timeZone) => new Intl.DateTimeFormat("en-CA", {
|
|
17
|
+
day: "2-digit",
|
|
18
|
+
month: "2-digit",
|
|
19
|
+
timeZone,
|
|
20
|
+
year: "numeric",
|
|
21
|
+
}).format(now);
|
|
22
|
+
exports.calendarDateIn = calendarDateIn;
|
|
23
|
+
/** From seven days before the expiry up to the expiry day itself. */
|
|
24
|
+
const isCredentialExpiryDue = (expiresOn, today) => {
|
|
25
|
+
const days = (Date.parse(`${expiresOn}T00:00:00Z`) - Date.parse(`${today}T00:00:00Z`)) /
|
|
26
|
+
DAY_MS;
|
|
27
|
+
return days >= 0 && days <= exports.CREDENTIAL_EXPIRY_WARNING_DAYS;
|
|
28
|
+
};
|
|
29
|
+
exports.isCredentialExpiryDue = isCredentialExpiryDue;
|
|
30
|
+
/**
|
|
31
|
+
* Warns the shop (e-mail of the Shop-Stammdaten) that the Microsoft 365
|
|
32
|
+
* client secret expires soon. The business key holds client id and expiry
|
|
33
|
+
* date, so each secret is warned about once; a new date warns again.
|
|
34
|
+
*/
|
|
35
|
+
const warnCredentialExpiry = async (container, now = new Date()) => {
|
|
36
|
+
const { values } = await (0, settings_1.getPluginSettings)(container, plugin_features_1.emailPluginFeatures);
|
|
37
|
+
const expiresOn = values.microsoft_client_secret_expires_on;
|
|
38
|
+
const clientId = values.microsoft_client_id;
|
|
39
|
+
if (values.provider !== "microsoft365" ||
|
|
40
|
+
!(0, lib_1.isCalendarDate)(expiresOn) ||
|
|
41
|
+
typeof clientId !== "string") {
|
|
42
|
+
return "not_due";
|
|
43
|
+
}
|
|
44
|
+
const email = container.resolve(email_1.EMAIL_MODULE);
|
|
45
|
+
const timeZone = email.getDispatchConfiguration().timeZone ?? "Europe/Vienna";
|
|
46
|
+
if (!(0, exports.isCredentialExpiryDue)(expiresOn, (0, exports.calendarDateIn)(now, timeZone))) {
|
|
47
|
+
return "not_due";
|
|
48
|
+
}
|
|
49
|
+
const recipient = (await (0, shop_master_data_1.getShopMasterData)(container)).values.email;
|
|
50
|
+
if (!recipient) {
|
|
51
|
+
container
|
|
52
|
+
.resolve(utils_1.ContainerRegistrationKeys.LOGGER)
|
|
53
|
+
.warn("email: the client secret expires soon, but the Shop-Stammdaten have no e-mail to warn");
|
|
54
|
+
return "no_recipient";
|
|
55
|
+
}
|
|
56
|
+
const message = await email.upsertMessageFact({
|
|
57
|
+
kind: "system.credential_expiry.admin",
|
|
58
|
+
business_key: (0, business_keys_1.credentialExpiryBusinessKey)(clientId, expiresOn),
|
|
59
|
+
resource_type: "email_provider",
|
|
60
|
+
resource_id: clientId,
|
|
61
|
+
recipient,
|
|
62
|
+
required_facts: ["due"],
|
|
63
|
+
fact: "due",
|
|
64
|
+
template_data: {
|
|
65
|
+
provider: "microsoft365",
|
|
66
|
+
client_id: clientId,
|
|
67
|
+
expires_on: expiresOn,
|
|
68
|
+
},
|
|
69
|
+
suppression_code: null,
|
|
70
|
+
});
|
|
71
|
+
await (0, dispatch_email_message_1.dispatchEmailMessageWorkflow)(container).run({
|
|
72
|
+
input: { message_id: message.id },
|
|
73
|
+
});
|
|
74
|
+
return "dispatched";
|
|
75
|
+
};
|
|
76
|
+
exports.warnCredentialExpiry = warnCredentialExpiry;
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fybi1jcmVkZW50aWFsLWV4cGlyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9hcHBsaWNhdGlvbi93YXJuLWNyZWRlbnRpYWwtZXhwaXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFzRTtBQUV0RSxvREFBMEQ7QUFDMUQsb0VBQWtFO0FBQ2xFLDBDQUFrRDtBQUNsRCwrQ0FBbUQ7QUFFbkQseUZBQTRGO0FBQzVGLDJEQUFzRTtBQUN0RSx3REFBeUQ7QUFFekQscUVBQXFFO0FBQ3hELFFBQUEsOEJBQThCLEdBQUcsQ0FBQyxDQUFDO0FBRWhELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQztBQUUxQiwyQ0FBMkM7QUFDcEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFTLEVBQUUsUUFBZ0IsRUFBVSxFQUFFLENBQ3BFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7SUFDL0IsR0FBRyxFQUFFLFNBQVM7SUFDZCxLQUFLLEVBQUUsU0FBUztJQUNoQixRQUFRO0lBQ1IsSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQU5KLFFBQUEsY0FBYyxrQkFNVjtBQUVqQixxRUFBcUU7QUFDOUQsTUFBTSxxQkFBcUIsR0FBRyxDQUNuQyxTQUFpQixFQUNqQixLQUFhLEVBQ0osRUFBRTtJQUNYLE1BQU0sSUFBSSxHQUNSLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDekUsTUFBTSxDQUFDO0lBQ1QsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxzQ0FBOEIsQ0FBQztBQUM3RCxDQUFDLENBQUM7QUFSVyxRQUFBLHFCQUFxQix5QkFRaEM7QUFPRjs7OztHQUlHO0FBQ0ksTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ3ZDLFNBQTBCLEVBQzFCLE1BQVksSUFBSSxJQUFJLEVBQUUsRUFDa0IsRUFBRTtJQUMxQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDRCQUFpQixFQUFDLFNBQVMsRUFBRSxxQ0FBbUIsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQztJQUM1RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDNUMsSUFDRSxNQUFNLENBQUMsUUFBUSxLQUFLLGNBQWM7UUFDbEMsQ0FBQyxJQUFBLG9CQUFjLEVBQUMsU0FBUyxDQUFDO1FBQzFCLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFDNUIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFxQixvQkFBWSxDQUFDLENBQUM7SUFDbEUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxJQUFJLGVBQWUsQ0FBQztJQUM5RSxJQUFJLENBQUMsSUFBQSw2QkFBcUIsRUFBQyxTQUFTLEVBQUUsSUFBQSxzQkFBYyxFQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxJQUFBLG9DQUFpQixFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNwRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixTQUFTO2FBQ04sT0FBTyxDQUFTLGlDQUF5QixDQUFDLE1BQU0sQ0FBQzthQUNqRCxJQUFJLENBQ0gsdUZBQXVGLENBQ3hGLENBQUM7UUFDSixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDNUMsSUFBSSxFQUFFLGdDQUFnQztRQUN0QyxZQUFZLEVBQUUsSUFBQSwyQ0FBMkIsRUFBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQzlELGFBQWEsRUFBRSxnQkFBZ0I7UUFDL0IsV0FBVyxFQUFFLFFBQVE7UUFDckIsU0FBUztRQUNULGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLEVBQUUsS0FBSztRQUNYLGFBQWEsRUFBRTtZQUNiLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFVBQVUsRUFBRSxTQUFTO1NBQ3RCO1FBQ0QsZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QixDQUFDLENBQUM7SUFDSCxNQUFNLElBQUEscURBQTRCLEVBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2hELEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO0tBQ2xDLENBQUMsQ0FBQztJQUNILE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQWxEVyxRQUFBLG9CQUFvQix3QkFrRC9CIn0=
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveSmtp = exports.SMTP_BUILD_PLACEHOLDERS = exports.SMTP_ENVIRONMENT_VARIABLES = exports.defineShopEmailConfiguration = exports.createSmtpNotificationModuleConfig = void 0;
|
|
3
|
+
exports.resolveSmtp = exports.SMTP_BUILD_PLACEHOLDERS = exports.SMTP_ENVIRONMENT_VARIABLES = exports.defineShopEmailConfiguration = exports.createSmtpNotificationModuleConfig = exports.createEmailNotificationModuleConfig = void 0;
|
|
4
4
|
const config_1 = require("../../public/config");
|
|
5
5
|
const sender_1 = require("../domain/sender");
|
|
6
6
|
var notification_module_1 = require("./notification-module");
|
|
7
|
+
Object.defineProperty(exports, "createEmailNotificationModuleConfig", { enumerable: true, get: function () { return notification_module_1.createEmailNotificationModuleConfig; } });
|
|
7
8
|
Object.defineProperty(exports, "createSmtpNotificationModuleConfig", { enumerable: true, get: function () { return notification_module_1.createSmtpNotificationModuleConfig; } });
|
|
8
9
|
const defineShopEmailConfiguration = (configuration) => configuration;
|
|
9
10
|
exports.defineShopEmailConfiguration = defineShopEmailConfiguration;
|
|
11
|
+
/** @deprecated The provider is set in the Admin (E-Mail > Versand). */
|
|
10
12
|
exports.SMTP_ENVIRONMENT_VARIABLES = [
|
|
11
13
|
"SMTP_HOST",
|
|
12
14
|
"SMTP_PORT",
|
|
@@ -17,6 +19,8 @@ exports.SMTP_ENVIRONMENT_VARIABLES = [
|
|
|
17
19
|
"SMTP_REQUIRE_TLS",
|
|
18
20
|
];
|
|
19
21
|
/**
|
|
22
|
+
* @deprecated The provider is set in the Admin (E-Mail > Versand).
|
|
23
|
+
*
|
|
20
24
|
* `medusa build` loads the configuration without deployment secrets. These
|
|
21
25
|
* placeholders only satisfy the required-variable checks of a build; they
|
|
22
26
|
* never reach a running server.
|
|
@@ -31,6 +35,8 @@ exports.SMTP_BUILD_PLACEHOLDERS = {
|
|
|
31
35
|
SMTP_USER: "build-user",
|
|
32
36
|
};
|
|
33
37
|
/**
|
|
38
|
+
* @deprecated The provider is set in the Admin (E-Mail > Versand).
|
|
39
|
+
*
|
|
34
40
|
* Validates the SMTP environment values and returns the transport
|
|
35
41
|
* configuration. `allowInsecure` permits plain SMTP for development, tests
|
|
36
42
|
* and builds; otherwise `SMTP_SECURE` or `SMTP_REQUIRE_TLS` must be `true`.
|
|
@@ -60,4 +66,4 @@ const resolveSmtp = (values, allowInsecure) => {
|
|
|
60
66
|
return smtp;
|
|
61
67
|
};
|
|
62
68
|
exports.resolveSmtp = resolveSmtp;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUE2RTtBQUM3RSw2Q0FBdUU7QUFNdkUsNkRBRytCO0FBRjdCLDBJQUFBLG1DQUFtQyxPQUFBO0FBQ25DLHlJQUFBLGtDQUFrQyxPQUFBO0FBRzdCLE1BQU0sNEJBQTRCLEdBQUcsQ0FHMUMsYUFBNEIsRUFDYixFQUFFLENBQUMsYUFBYSxDQUFDO0FBSnJCLFFBQUEsNEJBQTRCLGdDQUlQO0FBT2xDLHVFQUF1RTtBQUMxRCxRQUFBLDBCQUEwQixHQUFHO0lBQ3hDLFdBQVc7SUFDWCxXQUFXO0lBQ1gsYUFBYTtJQUNiLFdBQVc7SUFDWCxlQUFlO0lBQ2YsV0FBVztJQUNYLGtCQUFrQjtDQUNWLENBQUM7QUFFWDs7Ozs7O0dBTUc7QUFDVSxRQUFBLHVCQUF1QixHQUFxQztJQUN2RSxTQUFTLEVBQUUsNkJBQTZCO0lBQ3hDLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixTQUFTLEVBQUUsTUFBTTtJQUNqQixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLFdBQVcsRUFBRSxPQUFPO0lBQ3BCLFNBQVMsRUFBRSxZQUFZO0NBQ3hCLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSSxNQUFNLFdBQVcsR0FBRyxDQUN6QixNQUE2RSxFQUM3RSxhQUFzQixFQUNLLEVBQUU7SUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBa0IsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELGdFQUFnRTtJQUNoRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHlCQUFnQixFQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksU0FBUyxDQUNqQixxRUFBcUUsQ0FDdEUsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRztRQUNYLElBQUksRUFBRSxJQUFBLDBCQUFpQixFQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLEVBQUUsTUFBTSxDQUFDLFNBQVM7UUFDdEIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1FBQzlCLElBQUk7UUFDSixVQUFVLEVBQUUsSUFBQSwyQkFBa0IsRUFBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxDQUFDO1FBQ2pFLE1BQU0sRUFBRSxJQUFBLDJCQUFrQixFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDO1FBQ3hELElBQUksRUFBRSxNQUFNLENBQUMsU0FBUztLQUN2QixDQUFDO0lBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkQsTUFBTSxJQUFJLFNBQVMsQ0FDakIsdUZBQXVGLENBQ3hGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUEvQlcsUUFBQSxXQUFXLGVBK0J0QiJ9
|
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createSmtpNotificationModuleConfig = void 0;
|
|
3
|
+
exports.createSmtpNotificationModuleConfig = exports.createEmailNotificationModuleConfig = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The Notification Module with the shop's mail provider. Provider and
|
|
6
|
+
* credentials are set in the Admin (E-Mail > Versand); `allowInsecure`
|
|
7
|
+
* (development and tests only) permits SMTP without encryption there.
|
|
8
|
+
*/
|
|
9
|
+
const createEmailNotificationModuleConfig = (options = {}) => ({
|
|
10
|
+
resolve: "@medusajs/medusa/notification",
|
|
11
|
+
options: {
|
|
12
|
+
providers: [
|
|
13
|
+
{
|
|
14
|
+
id: "smtp",
|
|
15
|
+
options: {
|
|
16
|
+
allowInsecure: options.allowInsecure === true,
|
|
17
|
+
channels: ["email"],
|
|
18
|
+
},
|
|
19
|
+
resolve: "@hartl-services/medusa-base/providers/smtp",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
exports.createEmailNotificationModuleConfig = createEmailNotificationModuleConfig;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use `createEmailNotificationModuleConfig` and set the provider
|
|
27
|
+
* in the Admin (E-Mail > Versand). The SMTP values given here only fill the
|
|
28
|
+
* SMTP settings that are not stored in the Admin.
|
|
29
|
+
*/
|
|
4
30
|
const createSmtpNotificationModuleConfig = (smtp) => ({
|
|
5
31
|
resolve: "@medusajs/medusa/notification",
|
|
6
32
|
options: {
|
|
@@ -17,4 +43,4 @@ const createSmtpNotificationModuleConfig = (smtp) => ({
|
|
|
17
43
|
},
|
|
18
44
|
});
|
|
19
45
|
exports.createSmtpNotificationModuleConfig = createSmtpNotificationModuleConfig;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9jb25maWcvbm90aWZpY2F0aW9uLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7OztHQUlHO0FBQ0ksTUFBTSxtQ0FBbUMsR0FBRyxDQUNqRCxVQUFpRCxFQUFFLEVBQ25ELEVBQUUsQ0FBQyxDQUFDO0lBQ0osT0FBTyxFQUFFLCtCQUErQjtJQUN4QyxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUU7WUFDVDtnQkFDRSxFQUFFLEVBQUUsTUFBTTtnQkFDVixPQUFPLEVBQUU7b0JBQ1AsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEtBQUssSUFBSTtvQkFDN0MsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDO2lCQUNwQjtnQkFDRCxPQUFPLEVBQUUsNENBQTRDO2FBQ3REO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQztBQWhCVSxRQUFBLG1DQUFtQyx1Q0FnQjdDO0FBRUg7Ozs7R0FJRztBQUNJLE1BQU0sa0NBQWtDLEdBQUcsQ0FDaEQsSUFBK0IsRUFDL0IsRUFBRSxDQUFDLENBQUM7SUFDSixPQUFPLEVBQUUsK0JBQStCO0lBQ3hDLE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRTtZQUNUO2dCQUNFLEVBQUUsRUFBRSxNQUFNO2dCQUNWLE9BQU8sRUFBRTtvQkFDUCxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUM7b0JBQ25CLElBQUk7aUJBQ0w7Z0JBQ0QsT0FBTyxFQUFFLDRDQUE0QzthQUN0RDtTQUNGO0tBQ0Y7Q0FDRixDQUFDLENBQUM7QUFoQlUsUUFBQSxrQ0FBa0Msc0NBZ0I1QyJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
3
|
+
exports.credentialExpiryBusinessKey = 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) => {
|
|
@@ -72,4 +72,7 @@ const loginCodeBusinessKey = (issueId) => {
|
|
|
72
72
|
return `login-code:${normalized}`;
|
|
73
73
|
};
|
|
74
74
|
exports.loginCodeBusinessKey = loginCodeBusinessKey;
|
|
75
|
-
|
|
75
|
+
/** One warning per app registration and expiry date. */
|
|
76
|
+
const credentialExpiryBusinessKey = (clientId, expiresOn) => `credential-expiry:${normalizedIdentifier(clientId, "clientId")}:${normalizedIdentifier(expiresOn, "expiresOn")}`;
|
|
77
|
+
exports.credentialExpiryBusinessKey = credentialExpiryBusinessKey;
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3Mta2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vYnVzaW5lc3Mta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQ0FBNkM7QUFDN0Msa0dBQTJIO0FBRTNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDbEUsa0JBQWtCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRGxELFFBQUEsd0JBQXdCLDRCQUMwQjtBQUV4RCxNQUFNLDZCQUE2QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDdkUsd0JBQXdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRHhELFFBQUEsNkJBQTZCLGlDQUMyQjtBQUU5RCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBcUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztBQUQ3RCxRQUFBLHVCQUF1QiwyQkFDc0M7QUFFbkUsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ2xFLGtCQUFrQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQURsRCxRQUFBLHdCQUF3Qiw0QkFDMEI7QUFFeEQsTUFB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
|
|
@@ -5,6 +5,14 @@ const types_1 = require("../../providers/smtp/types");
|
|
|
5
5
|
exports.MAX_AUTOMATIC_EMAIL_ATTEMPTS = 3;
|
|
6
6
|
const RETRY_DELAYS_MS = [60_000, 5 * 60_000];
|
|
7
7
|
const bySentinel = new Map([
|
|
8
|
+
[
|
|
9
|
+
types_1.SMTP_FAILURE_SENTINELS.authFailed,
|
|
10
|
+
{ code: "auth_failed", outcome: "failed" },
|
|
11
|
+
],
|
|
12
|
+
[
|
|
13
|
+
types_1.SMTP_FAILURE_SENTINELS.notConfigured,
|
|
14
|
+
{ code: "not_configured", outcome: "retryable" },
|
|
15
|
+
],
|
|
8
16
|
[
|
|
9
17
|
types_1.SMTP_FAILURE_SENTINELS.connectionFailed,
|
|
10
18
|
{ code: "connection_failed", outcome: "retryable" },
|
|
@@ -50,4 +58,4 @@ const nextAutomaticRetryAt = (now, attemptNumber) => {
|
|
|
50
58
|
exports.nextAutomaticRetryAt = nextAutomaticRetryAt;
|
|
51
59
|
const emailAttemptNotificationKey = (attemptId) => `email-attempt:${attemptId}`;
|
|
52
60
|
exports.emailAttemptNotificationKey = emailAttemptNotificationKey;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1jbGFzc2lmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vZmFpbHVyZS1jbGFzc2lmaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBb0U7QUFFdkQsUUFBQSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFFOUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBVSxDQUFDO0FBZXRELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUErQjtJQUN2RDtRQUNFLDhCQUFzQixDQUFDLFVBQVU7UUFDakMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7S0FDM0M7SUFDRDtRQUNFLDhCQUFzQixDQUFDLGFBQWE7UUFDcEMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRTtLQUNqRDtJQUNEO1FBQ0UsOEJBQXNCLENBQUMsZ0JBQWdCO1FBQ3ZDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7S0FDcEQ7SUFDRDtRQUNFLDhCQUFzQixDQUFDLGNBQWM7UUFDckMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtLQUMvQztJQUNEO1FBQ0UsOEJBQXNCLENBQUMsY0FBYztRQUNyQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0tBQ2hEO0lBQ0Q7UUFDRSw4QkFBc0IsQ0FBQyxrQkFBa0I7UUFDekMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRTtLQUNuRDtJQUNEO1FBQ0UsOEJBQXNCLENBQUMsa0JBQWtCO1FBQ3pDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUU7S0FDdEQ7Q0FDRixDQUFDLENBQUM7QUFFSSxNQUFNLDJCQUEyQixHQUFHLENBQ3pDLEtBQWMsRUFDUSxFQUFFO0lBQ3hCLElBQUksQ0FBQyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzlCLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDL0Isc0VBQXNFLENBQ3ZFLENBQUM7SUFDRixPQUFPLENBQ0wsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUk7UUFDckQsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixPQUFPLEVBQUUsU0FBUztLQUNuQixDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFmVyxRQUFBLDJCQUEyQiwrQkFldEM7QUFFSyxNQUFNLHFCQUFxQixHQUFHLENBQUMsYUFBcUIsRUFBVyxFQUFFLENBQ3RFLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO0lBQy9CLGFBQWEsR0FBRyxDQUFDO0lBQ2pCLGFBQWEsR0FBRyxvQ0FBNEIsQ0FBQztBQUhsQyxRQUFBLHFCQUFxQix5QkFHYTtBQUV4QyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLEdBQVMsRUFDVCxhQUFxQixFQUNmLEVBQUU7SUFDUixJQUFJLENBQUMsSUFBQSw2QkFBcUIsRUFBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxTQUFTLENBQUMscURBQXFELENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsZUFBZSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLENBQUMsQ0FBQztBQVJXLFFBQUEsb0JBQW9CLHdCQVEvQjtBQUVLLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUUsQ0FDdkUsaUJBQWlCLFNBQVMsRUFBRSxDQUFDO0FBRGxCLFFBQUEsMkJBQTJCLCtCQUNUIn0=
|