@hartl-services/medusa-base 2.6.0 → 2.7.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/ImageSettingInput.d.ts +3 -2
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ImageSettingInput.js +4 -4
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginActionsSection.js +4 -4
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginBreadcrumb.d.ts +16 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginBreadcrumb.js +25 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginDetailPage.js +1 -1
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +5 -4
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeatureSections.js +8 -5
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +4 -4
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesCard.js +24 -27
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +2 -2
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +9 -9
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginHubCard.d.ts +5 -1
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginHubCard.js +11 -15
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.d.ts +10 -4
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.js +10 -5
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +0 -1
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.js +73 -26
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +5 -1
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginStatusChips.js +8 -6
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ShopMasterDataBanner.d.ts +11 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ShopMasterDataBanner.js +15 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +36 -5
- package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +144 -20
- package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +36 -5
- package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSwitch.d.ts +15 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSwitch.js +66 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +144 -20
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.d.ts +49 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.js +72 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-draft.d.ts +1 -12
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-draft.js +4 -20
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-layout.d.ts +43 -0
- package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-layout.js +66 -0
- package/.medusa/server/src/admin/admin-components/i18n/texts.d.ts +22 -2
- package/.medusa/server/src/admin/admin-components/i18n/texts.js +29 -7
- package/.medusa/server/src/admin/admin-components/index.d.ts +12 -0
- package/.medusa/server/src/admin/admin-components/index.js +11 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/AdminPageHeader.d.ts +22 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/AdminPageHeader.js +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/AdminSection.d.ts +26 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/AdminSection.js +12 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/BreadcrumbTrail.d.ts +23 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/BreadcrumbTrail.js +20 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/FileDropField.d.ts +21 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/FileDropField.js +33 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/FocusModalShell.d.ts +27 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/FocusModalShell.js +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/InfoTooltip.d.ts +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/InfoTooltip.js +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/MultiSelectDropdown.d.ts +22 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/MultiSelectDropdown.js +14 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/PdfPreviewModal.js +1 -1
- package/.medusa/server/src/admin/admin-components/shared/ui/PluginIcon.d.ts +10 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/PluginIcon.js +10 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/SwitchRow.d.ts +27 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/SwitchRow.js +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/WidgetHeader.d.ts +15 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/WidgetHeader.js +8 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/file-drop.d.ts +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/file-drop.js +16 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/multi-select.d.ts +13 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/multi-select.js +11 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/plugin-icon.d.ts +12 -0
- package/.medusa/server/src/admin/admin-components/shared/ui/plugin-icon.js +29 -0
- package/.medusa/server/src/admin/index.js +3123 -2019
- package/.medusa/server/src/admin/index.mjs +3126 -2022
- package/.medusa/server/src/api/admin-first-login-password-policy.js +56 -0
- package/.medusa/server/src/api/answer-actor-type-casing-not-found.js +26 -0
- package/.medusa/server/src/api/answer-code-provider-route-not-found.js +34 -0
- package/.medusa/server/src/api/code-account-password-routes.js +92 -0
- package/.medusa/server/src/api/middlewares.js +82 -17
- package/.medusa/server/src/api/password-policy.js +55 -10
- package/.medusa/server/src/api/require-login-code-customer-email.js +40 -0
- package/.medusa/server/src/api/store/customer-auth/login-code/route.js +17 -0
- package/.medusa/server/src/api/store/customer-auth/password-policy/route.js +19 -0
- package/.medusa/server/src/customer-auth/application/prepare-code-account-password-reset.js +111 -0
- package/.medusa/server/src/customer-auth/application/request-login-code.js +145 -0
- package/.medusa/server/src/customer-auth/customer-auth-methods-snapshot.js +55 -0
- package/.medusa/server/src/customer-auth/customer-password-policy.js +40 -0
- package/.medusa/server/src/customer-auth/domain/account-linking.js +53 -0
- package/.medusa/server/src/customer-auth/domain/auth-methods.js +32 -0
- package/.medusa/server/src/customer-auth/domain/login-code.js +39 -0
- package/.medusa/server/src/customer-auth/login-code-accounts.js +146 -0
- package/.medusa/server/src/customer-auth/login-code-state.js +139 -0
- package/.medusa/server/src/customer-auth/plugin-features.js +80 -0
- package/.medusa/server/src/customer-auth/remove-provider-identity.js +18 -0
- package/.medusa/server/src/customer-auth/start-customer-auth-methods.js +20 -0
- package/.medusa/server/src/documents/plugin-features.js +8 -2
- package/.medusa/server/src/email/application/deliver-ephemeral-auth-mail.js +186 -0
- package/.medusa/server/src/email/application/deliver-login-code.js +89 -0
- package/.medusa/server/src/email/application/handle-customer-verification-event.js +29 -168
- package/.medusa/server/src/email/application/handle-password-reset-event.js +27 -166
- package/.medusa/server/src/email/customer-verification-snapshot.js +20 -108
- package/.medusa/server/src/email/domain/business-keys.js +15 -2
- package/.medusa/server/src/email/plugin-features.js +8 -3
- package/.medusa/server/src/email/rendering/default-templates.js +2 -1
- package/.medusa/server/src/email/templates/blocks/dynamic-blocks.js +19 -1
- package/.medusa/server/src/email/templates/defaults/documents.js +7 -1
- package/.medusa/server/src/email/templates/defaults/subjects.js +3 -1
- package/.medusa/server/src/email/templates/defaults/texts.js +5 -2
- package/.medusa/server/src/email/templates/render.js +2 -1
- package/.medusa/server/src/email/templates/sample-data.js +2 -1
- package/.medusa/server/src/email/templates/validate.js +8 -3
- package/.medusa/server/src/email/types/email-kinds.js +4 -2
- package/.medusa/server/src/email/types/template-data.js +9 -1
- package/.medusa/server/src/modules/customer-auth/index.js +14 -0
- package/.medusa/server/src/modules/customer-auth/service.js +35 -0
- package/.medusa/server/src/modules/email/migrations/Migration20261010090000.js +20 -0
- package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +4 -1
- package/.medusa/server/src/modules/plugin-features/service.js +26 -1
- package/.medusa/server/src/providers/email-otp/index.js +8 -0
- package/.medusa/server/src/providers/email-otp/service.js +96 -0
- package/.medusa/server/src/public/descriptor.js +117 -5
- package/.medusa/server/src/public/effective-features.js +22 -1
- package/.medusa/server/src/public/index.js +4 -2
- package/.medusa/server/src/public/plugin-icons.js +28 -0
- package/.medusa/server/src/public/shop-master-data.js +33 -14
- package/.medusa/server/src/shared/lib/index.js +2 -1
- package/.medusa/server/src/shared/lib/refreshing-snapshot.js +122 -0
- package/.medusa/server/src/shop-config/build-food-shop-config.js +38 -1
- package/README.md +436 -87
- package/dist/customer-auth/customer-auth-methods-snapshot.d.ts +25 -0
- package/dist/customer-auth/customer-auth-methods-snapshot.js +54 -0
- package/dist/customer-auth/domain/auth-methods.d.ts +16 -0
- package/dist/customer-auth/domain/auth-methods.js +31 -0
- package/dist/customer-auth/plugin-features.d.ts +2 -0
- package/dist/customer-auth/plugin-features.js +79 -0
- package/dist/email/customer-verification-snapshot.d.ts +3 -15
- package/dist/email/customer-verification-snapshot.js +19 -107
- package/dist/email/types/email-kinds.d.ts +4 -3
- package/dist/email/types/email-kinds.js +3 -1
- package/dist/email/types/template-data.d.ts +8 -0
- package/dist/email/types/template-data.js +8 -0
- package/dist/public/descriptor.js +116 -4
- package/dist/public/effective-features.d.ts +10 -0
- package/dist/public/effective-features.js +21 -0
- package/dist/public/index.d.ts +2 -1
- package/dist/public/index.js +3 -1
- package/dist/public/plugin-icons.d.ts +7 -0
- package/dist/public/plugin-icons.js +27 -0
- package/dist/public/shop-master-data.js +32 -13
- package/dist/public/types.d.ts +63 -1
- package/dist/shared/lib/index.d.ts +1 -0
- package/dist/shared/lib/index.js +1 -0
- package/dist/shared/lib/refreshing-snapshot.d.ts +52 -0
- package/dist/shared/lib/refreshing-snapshot.js +121 -0
- package/dist/shop-config/build-food-shop-config.js +37 -0
- package/package.json +8 -3
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLUGIN_ICON_NAMES = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Names of `@medusajs/icons` components a plugin descriptor may use as `icon`.
|
|
6
|
+
* A plain list so the server needs no icon package; the Admin maps the name to
|
|
7
|
+
* the component and falls back to a default icon for an unknown one. Every
|
|
8
|
+
* name is an export of `@medusajs/icons`.
|
|
9
|
+
*/
|
|
10
|
+
exports.PLUGIN_ICON_NAMES = [
|
|
11
|
+
"ArchiveBox",
|
|
12
|
+
"ArrowPath",
|
|
13
|
+
"BuildingStorefront",
|
|
14
|
+
"Buildings",
|
|
15
|
+
"ClockSolid",
|
|
16
|
+
"CogSixTooth",
|
|
17
|
+
"CreditCard",
|
|
18
|
+
"DocumentText",
|
|
19
|
+
"Envelope",
|
|
20
|
+
"ReceiptPercent",
|
|
21
|
+
"ShieldCheck",
|
|
22
|
+
"ShoppingCart",
|
|
23
|
+
"SquaresPlus",
|
|
24
|
+
"Tag",
|
|
25
|
+
"TruckFast",
|
|
26
|
+
"Users",
|
|
27
|
+
];
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWljb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9wbHVnaW4taWNvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7O0dBS0c7QUFDVSxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLFlBQVk7SUFDWixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLFdBQVc7SUFDWCxZQUFZO0lBQ1osYUFBYTtJQUNiLFlBQVk7SUFDWixjQUFjO0lBQ2QsVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsY0FBYztJQUNkLGFBQWE7SUFDYixLQUFLO0lBQ0wsV0FBVztJQUNYLE9BQU87Q0FDQyxDQUFBIn0=
|
|
@@ -7,6 +7,10 @@ const descriptor_1 = require("./descriptor");
|
|
|
7
7
|
const settings_1 = require("./settings");
|
|
8
8
|
const COMPANY = "Firmendaten";
|
|
9
9
|
const APPEARANCE = "Erscheinungsbild";
|
|
10
|
+
const ADDRESS = "Adresse";
|
|
11
|
+
const TAX_CONTACT = "Steuer und Kontakt";
|
|
12
|
+
const BANK_REGISTER = "Bank und Firmenbuch";
|
|
13
|
+
const COLORS = "Farben";
|
|
10
14
|
const DEFAULT_COLOR_HINT = "Leer lassen für die Standardfarbe von E-Mails und Dokumenten.";
|
|
11
15
|
/**
|
|
12
16
|
* The base's own descriptor: the shop's master data (Firmenangaben) and its
|
|
@@ -18,18 +22,22 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
18
22
|
plugin_key: "shop",
|
|
19
23
|
label: "Shop-Stammdaten",
|
|
20
24
|
description: "Firmenangaben des Shops für E-Mails, Rechnungen, Dokumente und Steuerprüfungen sowie Logo und Farben von E-Mails und Dokumenten.",
|
|
25
|
+
summary: "Firmenangaben, Logo und Farben für E-Mails, Rechnungen, Dokumente und Steuerprüfungen.",
|
|
26
|
+
icon: "Buildings",
|
|
21
27
|
switchable: false,
|
|
22
28
|
features: [],
|
|
23
29
|
settings: [
|
|
24
|
-
{ key: "legal_name", group: COMPANY, label: "Firmenname", type: "string", required: true },
|
|
25
|
-
{ key: "address_line1", group: COMPANY, label: "Adresse", type: "string", required: true },
|
|
26
|
-
{ key: "address_line2", group: COMPANY, label: "Adresszusatz", type: "string" },
|
|
27
|
-
{ key: "postal_code", group: COMPANY, label: "Postleitzahl", type: "string", required: true },
|
|
28
|
-
{ key: "city", group: COMPANY, label: "Ort", type: "string", required: true },
|
|
30
|
+
{ key: "legal_name", group: COMPANY, section: ADDRESS, label: "Firmenname", type: "string", required: true },
|
|
31
|
+
{ key: "address_line1", group: COMPANY, section: ADDRESS, width: "half", label: "Adresse", type: "string", required: true },
|
|
32
|
+
{ key: "address_line2", group: COMPANY, section: ADDRESS, width: "half", label: "Adresszusatz", type: "string" },
|
|
33
|
+
{ key: "postal_code", group: COMPANY, section: ADDRESS, width: "half", label: "Postleitzahl", type: "string", required: true },
|
|
34
|
+
{ key: "city", group: COMPANY, section: ADDRESS, width: "half", label: "Ort", type: "string", required: true },
|
|
29
35
|
{
|
|
30
36
|
key: "country_code",
|
|
31
37
|
group: COMPANY,
|
|
32
38
|
label: "Land",
|
|
39
|
+
section: ADDRESS,
|
|
40
|
+
width: "half",
|
|
33
41
|
type: "select",
|
|
34
42
|
required: true,
|
|
35
43
|
// EU-27 plus CH, GB, NO, IS, LI (ISO 3166-1 alpha-2, lowercase),
|
|
@@ -69,24 +77,27 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
69
77
|
{ value: "cy", label: "Zypern" },
|
|
70
78
|
],
|
|
71
79
|
},
|
|
72
|
-
{ key: "vat_number", group: COMPANY, label: "UID-Nummer", type: "string", required: true },
|
|
73
|
-
{ key: "email", group: COMPANY, label: "E-Mail", type: "string" },
|
|
74
|
-
{ key: "phone", group: COMPANY, label: "Telefon", type: "string" },
|
|
75
|
-
{ key: "website", group: COMPANY, label: "Website", type: "url" },
|
|
76
|
-
{ key: "iban", group: COMPANY, label: "IBAN", type: "string" },
|
|
77
|
-
{ key: "bic", group: COMPANY, label: "BIC", type: "string" },
|
|
78
|
-
{ key: "company_register_number", group: COMPANY, label: "Firmenbuchnummer", type: "string" },
|
|
79
|
-
{ key: "company_register_court", group: COMPANY, label: "Firmenbuchgericht", type: "string" },
|
|
80
|
+
{ key: "vat_number", group: COMPANY, section: TAX_CONTACT, width: "half", label: "UID-Nummer", type: "string", required: true },
|
|
81
|
+
{ key: "email", group: COMPANY, section: TAX_CONTACT, width: "half", label: "E-Mail", type: "string" },
|
|
82
|
+
{ key: "phone", group: COMPANY, section: TAX_CONTACT, width: "half", label: "Telefon", type: "string" },
|
|
83
|
+
{ key: "website", group: COMPANY, section: TAX_CONTACT, width: "half", label: "Website", type: "url" },
|
|
84
|
+
{ key: "iban", group: COMPANY, section: BANK_REGISTER, width: "half", label: "IBAN", type: "string" },
|
|
85
|
+
{ key: "bic", group: COMPANY, section: BANK_REGISTER, width: "half", label: "BIC", type: "string" },
|
|
86
|
+
{ key: "company_register_number", group: COMPANY, section: BANK_REGISTER, width: "half", label: "Firmenbuchnummer", type: "string" },
|
|
87
|
+
{ key: "company_register_court", group: COMPANY, section: BANK_REGISTER, width: "half", label: "Firmenbuchgericht", type: "string" },
|
|
80
88
|
{
|
|
81
89
|
key: "logo",
|
|
82
90
|
group: APPEARANCE,
|
|
83
91
|
label: "Logo",
|
|
84
92
|
description: "PNG oder JPG, erscheint oben in den E-Mails und auf Rechnungen und Lieferscheinen. Ohne Logo steht dort der Firmenname bzw. Shopname.",
|
|
93
|
+
hint: "PNG oder JPG, ohne Logo erscheint der Firmenname.",
|
|
85
94
|
type: "image",
|
|
86
95
|
},
|
|
87
96
|
{
|
|
88
97
|
key: "color_accent",
|
|
89
98
|
group: APPEARANCE,
|
|
99
|
+
section: COLORS,
|
|
100
|
+
width: "half",
|
|
90
101
|
label: "Akzentfarbe",
|
|
91
102
|
description: `Buttons, Überschriften und Links. ${DEFAULT_COLOR_HINT}`,
|
|
92
103
|
type: "color",
|
|
@@ -94,6 +105,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
94
105
|
{
|
|
95
106
|
key: "color_text",
|
|
96
107
|
group: APPEARANCE,
|
|
108
|
+
section: COLORS,
|
|
109
|
+
width: "half",
|
|
97
110
|
label: "Textfarbe",
|
|
98
111
|
description: `Fließtext und Beträge. ${DEFAULT_COLOR_HINT}`,
|
|
99
112
|
type: "color",
|
|
@@ -101,6 +114,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
101
114
|
{
|
|
102
115
|
key: "color_muted",
|
|
103
116
|
group: APPEARANCE,
|
|
117
|
+
section: COLORS,
|
|
118
|
+
width: "half",
|
|
104
119
|
label: "Nebentextfarbe",
|
|
105
120
|
description: `Beschriftungen, Hinweise und Fußzeilen. ${DEFAULT_COLOR_HINT}`,
|
|
106
121
|
type: "color",
|
|
@@ -108,6 +123,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
108
123
|
{
|
|
109
124
|
key: "color_line",
|
|
110
125
|
group: APPEARANCE,
|
|
126
|
+
section: COLORS,
|
|
127
|
+
width: "half",
|
|
111
128
|
label: "Linienfarbe",
|
|
112
129
|
description: `Rahmen und Trennlinien. ${DEFAULT_COLOR_HINT}`,
|
|
113
130
|
type: "color",
|
|
@@ -115,6 +132,8 @@ exports.shopMasterDataDescriptor = (0, descriptor_1.definePluginFeatures)({
|
|
|
115
132
|
{
|
|
116
133
|
key: "color_surface",
|
|
117
134
|
group: APPEARANCE,
|
|
135
|
+
section: COLORS,
|
|
136
|
+
width: "half",
|
|
118
137
|
label: "Flächenfarbe",
|
|
119
138
|
description: `Hinterlegte Flächen wie Infoboxen und Tabellenköpfe. ${DEFAULT_COLOR_HINT}`,
|
|
120
139
|
type: "color",
|
|
@@ -183,4 +202,4 @@ async function getShopAppearance(container) {
|
|
|
183
202
|
colors,
|
|
184
203
|
};
|
|
185
204
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcC1tYXN0ZXItZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvc2hvcC1tYXN0ZXItZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1TEEsOENBbUJDO0FBMkJELDhDQWVDO0FBbFBELDZDQUFtRDtBQUNuRCx5Q0FBOEM7QUFHOUMsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFBO0FBQzdCLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFBO0FBQ3JDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQTtBQUN6QixNQUFNLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQTtBQUN4QyxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQTtBQUMzQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUE7QUFDdkIsTUFBTSxrQkFBa0IsR0FDdEIsK0RBQStELENBQUE7QUFFakU7Ozs7O0dBS0c7QUFDVSxRQUFBLHdCQUF3QixHQUFHLElBQUEsaUNBQW9CLEVBQUM7SUFDM0QsVUFBVSxFQUFFLE1BQU07SUFDbEIsS0FBSyxFQUFFLGlCQUFpQjtJQUN4QixXQUFXLEVBQ1Qsa0lBQWtJO0lBQ3BJLE9BQU8sRUFDTCx3RkFBd0Y7SUFDMUYsSUFBSSxFQUFFLFdBQVc7SUFDakIsVUFBVSxFQUFFLEtBQUs7SUFDakIsUUFBUSxFQUFFLEVBQUU7SUFDWixRQUFRLEVBQUU7UUFDUixFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1FBQzVHLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVB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
|
|
@@ -23,7 +23,8 @@ __exportStar(require("./errors"), exports);
|
|
|
23
23
|
__exportStar(require("./hash"), exports);
|
|
24
24
|
__exportStar(require("./logging"), exports);
|
|
25
25
|
__exportStar(require("./money"), exports);
|
|
26
|
+
__exportStar(require("./refreshing-snapshot"), exports);
|
|
26
27
|
__exportStar(require("./text"), exports);
|
|
27
28
|
__exportStar(require("./transaction"), exports);
|
|
28
29
|
__exportStar(require("./wire-response"), exports);
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQXVFO0FBQ3ZFLHFDQUFxQztBQUNyQywyQ0FBd0I7QUFDeEIsZ0RBQTZCO0FBQzdCLDBDQUF1QjtBQUN2QiwyQ0FBd0I7QUFDeEIseUNBQXNCO0FBQ3RCLDRDQUF5QjtBQUN6QiwwQ0FBdUI7QUFDdkIsd0RBQXFDO0FBQ3JDLHlDQUFzQjtBQUN0QixnREFBNkI7QUFDN0Isa0RBQStCIn0=
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRefreshingSnapshot = exports.SNAPSHOT_REFRESH_MS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* In-memory copy of one value for the places that cannot await it: Medusa
|
|
6
|
+
* reads some `projectConfig.http` settings synchronously on every login, and
|
|
7
|
+
* the shop preset puts a getter backed by such a copy there, so a change in
|
|
8
|
+
* the Admin takes effect without a restart.
|
|
9
|
+
*
|
|
10
|
+
* - Boot: `start` loads the value once.
|
|
11
|
+
* - Afterwards an unref'd timer refreshes every 30 s, so a change reaches an
|
|
12
|
+
* idle instance too. A read that finds the copy older than 30 s (a blocked
|
|
13
|
+
* timer, say) also starts one refresh in the background
|
|
14
|
+
* (stale-while-revalidate) and still answers from the copy. A change thus
|
|
15
|
+
* reaches a running instance within about 30 s plus the duration of the
|
|
16
|
+
* read.
|
|
17
|
+
* - A failed read keeps the last value (initially `initial`) and is logged;
|
|
18
|
+
* the next attempt waits another 30 s. Neither a throwing reader nor a
|
|
19
|
+
* throwing logger escapes.
|
|
20
|
+
*
|
|
21
|
+
* The state lives on `globalThis` under a `Symbol.for(key)`: the preset
|
|
22
|
+
* (`dist`) and the Medusa-loaded plugin code (`.medusa/server`) are compiled
|
|
23
|
+
* separately and would otherwise each hold their own copy.
|
|
24
|
+
*/
|
|
25
|
+
exports.SNAPSHOT_REFRESH_MS = 30_000;
|
|
26
|
+
const createRefreshingSnapshot = (options) => {
|
|
27
|
+
const { key, initial } = options;
|
|
28
|
+
const symbol = Symbol.for(key);
|
|
29
|
+
const state = () => {
|
|
30
|
+
const holder = globalThis;
|
|
31
|
+
holder[symbol] ??= {
|
|
32
|
+
value: initial,
|
|
33
|
+
refreshedAt: null,
|
|
34
|
+
refreshing: null,
|
|
35
|
+
timer: null,
|
|
36
|
+
read: null,
|
|
37
|
+
warn: null,
|
|
38
|
+
};
|
|
39
|
+
return holder[symbol];
|
|
40
|
+
};
|
|
41
|
+
const logFailure = (current, error) => {
|
|
42
|
+
try {
|
|
43
|
+
current.warn?.(`${options.describe(current.value)}: ${error instanceof Error ? error.message : "unknown error"}`);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// A broken logger must not turn a failed refresh into a throw.
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const refresh = () => {
|
|
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.value = await read();
|
|
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
|
+
};
|
|
74
|
+
const stopTimer = (current) => {
|
|
75
|
+
if (current.timer) {
|
|
76
|
+
clearInterval(current.timer);
|
|
77
|
+
current.timer = null;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
refresh,
|
|
82
|
+
start: (input) => {
|
|
83
|
+
const current = state();
|
|
84
|
+
current.read = input.read;
|
|
85
|
+
current.warn = input.warn;
|
|
86
|
+
stopTimer(current);
|
|
87
|
+
current.timer = setInterval(() => {
|
|
88
|
+
void refresh();
|
|
89
|
+
}, exports.SNAPSHOT_REFRESH_MS);
|
|
90
|
+
// An idle timer must not keep the process (or a test run) alive.
|
|
91
|
+
current.timer.unref();
|
|
92
|
+
return refresh();
|
|
93
|
+
},
|
|
94
|
+
stop: () => stopTimer(state()),
|
|
95
|
+
current: () => {
|
|
96
|
+
const current = state();
|
|
97
|
+
if (current.read &&
|
|
98
|
+
!current.refreshing &&
|
|
99
|
+
(current.refreshedAt === null ||
|
|
100
|
+
Date.now() - current.refreshedAt >= exports.SNAPSHOT_REFRESH_MS)) {
|
|
101
|
+
void refresh();
|
|
102
|
+
}
|
|
103
|
+
return current.value;
|
|
104
|
+
},
|
|
105
|
+
setForTests: (value) => {
|
|
106
|
+
const current = state();
|
|
107
|
+
if (value === null) {
|
|
108
|
+
stopTimer(current);
|
|
109
|
+
current.value = initial;
|
|
110
|
+
current.refreshedAt = null;
|
|
111
|
+
current.refreshing = null;
|
|
112
|
+
current.read = null;
|
|
113
|
+
current.warn = null;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
current.value = value;
|
|
117
|
+
current.refreshedAt = Date.now();
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
exports.createRefreshingSnapshot = createRefreshingSnapshot;
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaGluZy1zbmFwc2hvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvbGliL3JlZnJlc2hpbmctc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxNQUFNLENBQUE7QUFrQ2xDLE1BQU0sd0JBQXdCLEdBQUcsQ0FDdEMsT0FPRSxFQUNxQixFQUFFO0lBQ3pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFOUIsTUFBTSxLQUFLLEdBQUcsR0FBcUIsRUFBRTtRQUNuQyxNQUFNLE1BQU0sR0FBRyxVQUF5RCxDQUFBO1FBQ3hFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztZQUNqQixLQUFLLEVBQUUsT0FBTztZQUNkLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUE7UUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN2QixDQUFDLENBQUE7SUFFRCxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQXlCLEVBQUUsS0FBYyxFQUFRLEVBQUU7UUFDckUsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNaLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQ2hDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQzNDLEVBQUUsQ0FDSCxDQUFBO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FB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
|
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.buildFoodShopConfig = buildFoodShopConfig;
|
|
4
4
|
exports.defineFoodShopConfig = defineFoodShopConfig;
|
|
5
5
|
const logger_1 = require("@medusajs/framework/logger");
|
|
6
|
+
const customer_auth_1 = require("@hartl-services/medusa-food-supplements-contracts/schemas/customer-auth");
|
|
6
7
|
const utils_1 = require("@medusajs/framework/utils");
|
|
7
8
|
const config_1 = require("../public/config");
|
|
9
|
+
const customer_auth_methods_snapshot_1 = require("../customer-auth/customer-auth-methods-snapshot");
|
|
8
10
|
const customer_verification_snapshot_1 = require("../email/customer-verification-snapshot");
|
|
9
11
|
const sentry_logger_1 = require("../public/sentry-logger");
|
|
10
12
|
const options_1 = require("./options");
|
|
@@ -101,6 +103,30 @@ function buildFoodShopConfig(options, environment = process.env) {
|
|
|
101
103
|
: []),
|
|
102
104
|
(0, config_1.createSmtpNotificationModuleConfig)((0, config_1.resolveSmtp)(env, allowInsecure)),
|
|
103
105
|
s3CacheStorage.fileModule,
|
|
106
|
+
{
|
|
107
|
+
// Replaces Medusa's default auth entry (same module key): the same
|
|
108
|
+
// `emailpass` provider as the default plus the code login. defineConfig
|
|
109
|
+
// merges its MFA defaults back into this entry. Which of the two a
|
|
110
|
+
// customer may use is decided at run time by `authMethodsPerActor`
|
|
111
|
+
// (customer_auth switches), not by this list.
|
|
112
|
+
resolve: "@medusajs/medusa/auth",
|
|
113
|
+
options: {
|
|
114
|
+
providers: [
|
|
115
|
+
{
|
|
116
|
+
resolve: "@medusajs/medusa/auth-emailpass",
|
|
117
|
+
id: "emailpass",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
resolve: "@hartl-services/medusa-base/providers/email-otp",
|
|
121
|
+
id: customer_auth_1.EMAIL_OTP_AUTH_PROVIDER,
|
|
122
|
+
// Must equal projectConfig.http.jwtSecret (below): the code
|
|
123
|
+
// request reads its key material from there, the provider from
|
|
124
|
+
// this option; both derive the same HMAC key.
|
|
125
|
+
options: { hmacSecret: env.JWT_SECRET },
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
104
130
|
{
|
|
105
131
|
resolve: "@medusajs/medusa/tax",
|
|
106
132
|
options: {
|
|
@@ -244,6 +270,17 @@ function buildFoodShopConfig(options, environment = process.env) {
|
|
|
244
270
|
return (0, customer_verification_snapshot_1.customerVerificationActors)();
|
|
245
271
|
},
|
|
246
272
|
},
|
|
273
|
+
// The same technique for the login methods (customer_auth switches,
|
|
274
|
+
// see customer-auth-methods-snapshot.ts). Customers: emailpass, the
|
|
275
|
+
// code login, both, or none when both switches are off. Admin users
|
|
276
|
+
// are pinned to emailpass: without an allowlist Medusa would let
|
|
277
|
+
// them use every registered provider, the code login included.
|
|
278
|
+
authMethodsPerActor: {
|
|
279
|
+
get customer() {
|
|
280
|
+
return (0, customer_auth_methods_snapshot_1.customerAuthMethods)();
|
|
281
|
+
},
|
|
282
|
+
user: ["emailpass"],
|
|
283
|
+
},
|
|
247
284
|
},
|
|
248
285
|
// The storefront turns its customer JWT into a Medusa browser session
|
|
249
286
|
// at login, so its browser-side cart and payment calls carry the
|
|
@@ -262,4 +299,4 @@ function buildFoodShopConfig(options, environment = process.env) {
|
|
|
262
299
|
function defineFoodShopConfig(options, environment = process.env) {
|
|
263
300
|
return (0, utils_1.defineConfig)(buildFoodShopConfig(options, environment));
|
|
264
301
|
}
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtZm9vZC1zaG9wLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaG9wLWNvbmZpZy9idWlsZC1mb29kLXNob3AtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNEVBLGtEQW1WQztBQUdELG9EQUtDO0FBdmFELHVEQUFvRDtBQUNwRCwyR0FBa0g7QUFDbEgscURBQTJFO0FBRTNFLDZDQW9CMEI7QUFDMUIsb0dBQXNGO0FBQ3RGLDRGQUFxRjtBQUNyRiwyREFBbUU7QUFFbkUsdUNBR21CO0FBbUNuQjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxPQUE4QixFQUM5QixjQUFpQyxPQUFPLENBQUMsR0FBRztJQUU1QyxJQUFBLHFDQUEyQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXJDLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFBLGVBQU8sRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLE1BQU0sYUFBYSxHQUFHLElBQUEsb0NBQTJCLEVBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXRFLE1BQU0sR0FBRyxHQUFHLElBQUEsMkJBQWtCLEVBQzVCLFdBQVcsRUFDWDtRQUNFLGNBQWM7UUFDZCxZQUFZO1FBQ1osWUFBWTtRQUNaLFdBQVc7UUFDWCxZQUFZO1FBQ1osZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixnQkFBZ0I7UUFDaEIsR0FBRyxtQ0FBMEI7UUFDN0IsZ0JBQWdCO1FBQ2hCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIs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
|