@hartl-services/medusa-base 4.0.0 → 5.0.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/index.js +8 -8
- package/.medusa/server/src/admin/index.mjs +8 -8
- package/.medusa/server/src/free-shipping/free-shipping-settings.js +38 -0
- package/.medusa/server/src/free-shipping/plugin-features.js +45 -0
- package/.medusa/server/src/jobs/free-shipping-promotion-sync.js +22 -0
- package/.medusa/server/src/modules/free-shipping/index.js +13 -0
- package/.medusa/server/src/modules/free-shipping/migrations/Migration20260911114515.js +16 -0
- package/.medusa/server/src/modules/free-shipping/migrations/Migration20260928201511.js +19 -0
- package/.medusa/server/src/modules/free-shipping/migrations/Migration20260928211756.js +110 -0
- package/.medusa/server/src/modules/free-shipping/service.js +17 -0
- package/.medusa/server/src/shop-config/build-shop-config.js +5 -9
- package/.medusa/server/src/subscribers/free-shipping-plugin-features-updated.js +25 -0
- package/.medusa/server/src/subscribers/free-shipping-plugin-settings-updated.js +26 -0
- package/.medusa/server/src/workflows/free-shipping/sync-free-shipping-promotions.js +143 -0
- package/.medusa/server/src/workflows/hooks/set-free-shipping-promotion-context.js +86 -0
- package/README.md +712 -530
- package/dist/shop-config/build-shop-config.d.ts +2 -2
- package/dist/shop-config/build-shop-config.js +4 -8
- package/package.json +2 -2
|
@@ -4006,13 +4006,13 @@ const EmailTemplateGroupPage = ({
|
|
|
4006
4006
|
] });
|
|
4007
4007
|
};
|
|
4008
4008
|
const handle$9 = {
|
|
4009
|
-
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.account.label
|
|
4010
|
-
};
|
|
4011
|
-
const EmailAccountMailsRoute = () => /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailTemplateGroupPage, { group: "account" }) });
|
|
4012
|
-
const handle$8 = {
|
|
4013
4009
|
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.affiliate.label
|
|
4014
4010
|
};
|
|
4015
4011
|
const EmailAffiliateMailsRoute = () => /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailTemplateGroupPage, { group: "affiliate" }) });
|
|
4012
|
+
const handle$8 = {
|
|
4013
|
+
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.account.label
|
|
4014
|
+
};
|
|
4015
|
+
const EmailAccountMailsRoute = () => /* @__PURE__ */ jsxRuntime.jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsxRuntime.jsx(EmailTemplateGroupPage, { group: "account" }) });
|
|
4016
4016
|
const ATTACHMENT_PDF_OPTIONS = {
|
|
4017
4017
|
maxBytes: email$1.EMAIL_ATTACHMENT_MAX_PDF_BYTES,
|
|
4018
4018
|
types: ["application/pdf"],
|
|
@@ -6749,13 +6749,13 @@ const routeModule = {
|
|
|
6749
6749
|
handle: handle$a
|
|
6750
6750
|
},
|
|
6751
6751
|
{
|
|
6752
|
-
Component:
|
|
6753
|
-
path: "/settings/hartl-services/email/
|
|
6752
|
+
Component: EmailAffiliateMailsRoute,
|
|
6753
|
+
path: "/settings/hartl-services/email/affiliate",
|
|
6754
6754
|
handle: handle$9
|
|
6755
6755
|
},
|
|
6756
6756
|
{
|
|
6757
|
-
Component:
|
|
6758
|
-
path: "/settings/hartl-services/email/
|
|
6757
|
+
Component: EmailAccountMailsRoute,
|
|
6758
|
+
path: "/settings/hartl-services/email/account",
|
|
6759
6759
|
handle: handle$8
|
|
6760
6760
|
},
|
|
6761
6761
|
{
|
|
@@ -4000,13 +4000,13 @@ const EmailTemplateGroupPage = ({
|
|
|
4000
4000
|
] });
|
|
4001
4001
|
};
|
|
4002
4002
|
const handle$9 = {
|
|
4003
|
-
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.account.label
|
|
4004
|
-
};
|
|
4005
|
-
const EmailAccountMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "account" }) });
|
|
4006
|
-
const handle$8 = {
|
|
4007
4003
|
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.affiliate.label
|
|
4008
4004
|
};
|
|
4009
4005
|
const EmailAffiliateMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "affiliate" }) });
|
|
4006
|
+
const handle$8 = {
|
|
4007
|
+
breadcrumb: () => EMAIL_TEMPLATE_GROUPS.account.label
|
|
4008
|
+
};
|
|
4009
|
+
const EmailAccountMailsRoute = () => /* @__PURE__ */ jsx(PluginFeatureRoute, { pluginKey: "email", children: /* @__PURE__ */ jsx(EmailTemplateGroupPage, { group: "account" }) });
|
|
4010
4010
|
const ATTACHMENT_PDF_OPTIONS = {
|
|
4011
4011
|
maxBytes: EMAIL_ATTACHMENT_MAX_PDF_BYTES,
|
|
4012
4012
|
types: ["application/pdf"],
|
|
@@ -6743,13 +6743,13 @@ const routeModule = {
|
|
|
6743
6743
|
handle: handle$a
|
|
6744
6744
|
},
|
|
6745
6745
|
{
|
|
6746
|
-
Component:
|
|
6747
|
-
path: "/settings/hartl-services/email/
|
|
6746
|
+
Component: EmailAffiliateMailsRoute,
|
|
6747
|
+
path: "/settings/hartl-services/email/affiliate",
|
|
6748
6748
|
handle: handle$9
|
|
6749
6749
|
},
|
|
6750
6750
|
{
|
|
6751
|
-
Component:
|
|
6752
|
-
path: "/settings/hartl-services/email/
|
|
6751
|
+
Component: EmailAccountMailsRoute,
|
|
6752
|
+
path: "/settings/hartl-services/email/account",
|
|
6753
6753
|
handle: handle$8
|
|
6754
6754
|
},
|
|
6755
6755
|
{
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveFreeShippingSettings = resolveFreeShippingSettings;
|
|
4
|
+
const public_1 = require("../public");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const plugin_features_1 = require("./plugin-features");
|
|
7
|
+
const invalidSetting = (key) => new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Die Versandkosten-Einstellung "${key}" hat keinen gültigen Wert.`);
|
|
8
|
+
/**
|
|
9
|
+
* Reads the four settings through `getPluginSettings` (stored in the Admin >
|
|
10
|
+
* declared default). The base validates every stored value against the
|
|
11
|
+
* descriptor and every setting has a default, so a missing or mistyped value
|
|
12
|
+
* means a broken base and is thrown, never replaced by a guess. Read failures
|
|
13
|
+
* propagate.
|
|
14
|
+
*/
|
|
15
|
+
async function resolveFreeShippingSettings(container) {
|
|
16
|
+
const { values } = await (0, public_1.getPluginSettings)(container, plugin_features_1.freeShippingPluginFeatures);
|
|
17
|
+
const readNumber = (key) => {
|
|
18
|
+
const value = values[key];
|
|
19
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
20
|
+
throw invalidSetting(key);
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
const readBoolean = (key) => {
|
|
25
|
+
const value = values[key];
|
|
26
|
+
if (typeof value !== "boolean") {
|
|
27
|
+
throw invalidSetting(key);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
};
|
|
31
|
+
return {
|
|
32
|
+
default_threshold: readNumber("default_threshold"),
|
|
33
|
+
affiliate_threshold: readNumber("affiliate_threshold"),
|
|
34
|
+
affiliate_applies_to_account_holders: readBoolean("affiliate_applies_to_account_holders"),
|
|
35
|
+
affiliate_applies_to_referred_customers: readBoolean("affiliate_applies_to_referred_customers"),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZS1zaGlwcGluZy1zZXR0aW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mcmVlLXNoaXBwaW5nL2ZyZWUtc2hpcHBpbmctc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyQkEsa0VBdUNDO0FBbEVELHNDQUE2QztBQUU3QyxxREFBdUQ7QUFFdkQsdURBQThEO0FBVTlELE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBVyxFQUFlLEVBQUUsQ0FDbEQsSUFBSSxtQkFBVyxDQUNiLG1CQUFXLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUNsQyxrQ0FBa0MsR0FBRyw2QkFBNkIsQ0FDbkUsQ0FBQTtBQUVIOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsU0FBMEI7SUFFMUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSwwQkFBaUIsRUFDeEMsU0FBUyxFQUNULDRDQUEwQixDQUMzQixDQUFBO0lBRUQsTUFBTSxVQUFVLEdBQUcsQ0FDakIsR0FBZ0QsRUFDeEMsRUFBRTtRQUNWLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN6QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzNCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUMsQ0FBQTtJQUNELE1BQU0sV0FBVyxHQUFHLENBQ2xCLEdBRTZDLEVBQ3BDLEVBQUU7UUFDWCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDekIsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQixNQUFNLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDLENBQUE7SUFFRCxPQUFPO1FBQ0wsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1FBQ2xELG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQztRQUN0RCxvQ0FBb0MsRUFBRSxXQUFXLENBQy9DLHNDQUFzQyxDQUN2QztRQUNELHVDQUF1QyxFQUFFLFdBQVcsQ0FDbEQseUNBQXlDLENBQzFDO0tBQ0YsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.freeShippingPluginFeatures = void 0;
|
|
4
|
+
const public_1 = require("../public");
|
|
5
|
+
exports.freeShippingPluginFeatures = (0, public_1.definePluginFeatures)({
|
|
6
|
+
plugin_key: "free_shipping",
|
|
7
|
+
label: "Versandkostenfrei",
|
|
8
|
+
description: "Schaltet die beiden automatischen Versandkosten-Aktionen aktiv bzw. inaktiv. Die Schwellenwerte bleiben auch ausgeschaltet bearbeitbar; der Aktionskontext im Warenkorb läuft weiter.",
|
|
9
|
+
summary: "Die beiden automatischen Versandkosten-Aktionen mit ihren Schwellenwerten.",
|
|
10
|
+
icon: "TruckFast",
|
|
11
|
+
disable_hint: "Aus: beide Aktionen sind inaktiv. Die Schwellenwerte bleiben bearbeitbar.",
|
|
12
|
+
disable_confirm: "Die beiden automatischen Versandkosten-Aktionen werden dann inaktiv. Die Schwellenwerte bleiben auch ausgeschaltet bearbeitbar, und der Aktionskontext im Warenkorb läuft weiter.",
|
|
13
|
+
features: [],
|
|
14
|
+
settings: [
|
|
15
|
+
{
|
|
16
|
+
key: "default_threshold",
|
|
17
|
+
label: "Kostenlose Lieferung ab (€)",
|
|
18
|
+
width: "half",
|
|
19
|
+
type: "number",
|
|
20
|
+
min: 0,
|
|
21
|
+
default: 50,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: "affiliate_threshold",
|
|
25
|
+
label: "Für Affiliates ab (€)",
|
|
26
|
+
width: "half",
|
|
27
|
+
type: "number",
|
|
28
|
+
min: 0,
|
|
29
|
+
default: 100,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
key: "affiliate_applies_to_account_holders",
|
|
33
|
+
label: "Gilt, wenn der Kunde selbst Affiliate ist",
|
|
34
|
+
type: "boolean",
|
|
35
|
+
default: true,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: "affiliate_applies_to_referred_customers",
|
|
39
|
+
label: "Gilt, wenn der Warenkorb über einen Affiliate-Link oder -Code zugeordnet wurde",
|
|
40
|
+
type: "boolean",
|
|
41
|
+
default: false,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ZyZWUtc2hpcHBpbmcvcGx1Z2luLWZlYXR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNDQUFnRDtBQUVuQyxRQUFBLDBCQUEwQixHQUFHLElBQUEsNkJBQW9CLEVBQUM7SUFDN0QsVUFBVSxFQUFFLGVBQWU7SUFDM0IsS0FBSyxFQUFFLG1CQUFtQjtJQUMxQixXQUFXLEVBQ1QsdUxBQXVMO0lBQ3pMLE9BQU8sRUFDTCw0RUFBNEU7SUFDOUUsSUFBSSxFQUFFLFdBQVc7SUFDakIsWUFBWSxFQUNWLDJFQUEyRTtJQUM3RSxlQUFlLEVBQ2IsbUxBQW1MO0lBQ3JMLFFBQVEsRUFBRSxFQUFFO0lBQ1osUUFBUSxFQUFFO1FBQ1I7WUFDRSxHQUFHLEVBQUUsbUJBQW1CO1lBQ3hCLEtBQUssRUFBRSw2QkFBNkI7WUFDcEMsS0FBSyxFQUFFLE1BQU07WUFDYixJQUFJLEVBQUUsUUFBUTtZQUNkLEdBQUcsRUFBRSxDQUFDO1lBQ04sT0FBTyxFQUFFLEVBQUU7U0FDWjtRQUNEO1lBQ0UsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixLQUFLLEVBQUUsdUJBQXVCO1lBQzlCLEtBQUssRUFBRSxNQUFNO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxHQUFHLEVBQUUsQ0FBQztZQUNOLE9BQU8sRUFBRSxHQUFHO1NBQ2I7UUFDRDtZQUNFLEdBQUcsRUFBRSxzQ0FBc0M7WUFDM0MsS0FBSyxFQUFFLDJDQUEyQztZQUNsRCxJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNFLEdBQUcsRUFBRSx5Q0FBeUM7WUFDOUMsS0FBSyxFQUNILGdGQUFnRjtZQUNsRixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxLQUFLO1NBQ2Y7S0FDRjtDQUNGLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = freeShippingPromotionSyncJob;
|
|
5
|
+
const sync_free_shipping_promotions_1 = require("../workflows/free-shipping/sync-free-shipping-promotions");
|
|
6
|
+
/**
|
|
7
|
+
* Keeps the two automatic promotions in line with the plugin's settings and
|
|
8
|
+
* the `free_shipping` plugin toggle, also after a deploy/migration or when a
|
|
9
|
+
* change event was lost. Deliberately not gated by the toggle: while the
|
|
10
|
+
* plugin is off, this run is what deactivates the promotions. The sync
|
|
11
|
+
* writes only differences, so a run against in-sync promotions is
|
|
12
|
+
* read-only. A failure is logged by Medusa's job runner and retried on the
|
|
13
|
+
* next run.
|
|
14
|
+
*/
|
|
15
|
+
async function freeShippingPromotionSyncJob(container) {
|
|
16
|
+
await (0, sync_free_shipping_promotions_1.syncFreeShippingPromotions)(container);
|
|
17
|
+
}
|
|
18
|
+
exports.config = {
|
|
19
|
+
name: "free-shipping-promotion-sync",
|
|
20
|
+
schedule: "*/15 * * * *",
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZS1zaGlwcGluZy1wcm9tb3Rpb24tc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9qb2JzL2ZyZWUtc2hpcHBpbmctcHJvbW90aW9uLXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBYUEsK0NBSUM7QUFmRCw0R0FBcUc7QUFFckc7Ozs7Ozs7O0dBUUc7QUFDWSxLQUFLLFVBQVUsNEJBQTRCLENBQ3hELFNBQTBCO0lBRTFCLE1BQU0sSUFBQSwwREFBMEIsRUFBQyxTQUFTLENBQUMsQ0FBQTtBQUM3QyxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQUc7SUFDcEIsSUFBSSxFQUFFLDhCQUE4QjtJQUNwQyxRQUFRLEVBQUUsY0FBYztDQUN6QixDQUFBIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FREE_SHIPPING_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.FREE_SHIPPING_MODULE = "free_shipping";
|
|
10
|
+
exports.default = (0, utils_1.Module)(exports.FREE_SHIPPING_MODULE, {
|
|
11
|
+
service: service_1.default,
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9mcmVlLXNoaXBwaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUFrRDtBQUVsRCx3REFBaUQ7QUFFcEMsUUFBQSxvQkFBb0IsR0FBRyxlQUFlLENBQUE7QUFFbkQsa0JBQWUsSUFBQSxjQUFNLEVBQUMsNEJBQW9CLEVBQUU7SUFDMUMsT0FBTyxFQUFFLGlCQUF5QjtDQUNuQyxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260911114515 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260911114515 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "free_shipping_settings" ("id" text not null, "scope" text not null default 'global', "enabled" boolean not null default true, "default_threshold" real not null default 50, "affiliate_threshold" real not null default 100, "affiliate_applies_to_account_holders" boolean not null default true, "affiliate_applies_to_referred_customers" boolean not null default false, "policy_version" integer not null default 1, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "free_shipping_settings_pkey" primary key ("id"));`);
|
|
8
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_free_shipping_settings_deleted_at" ON "free_shipping_settings" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
9
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_free_shipping_settings_global" ON "free_shipping_settings" ("scope") WHERE deleted_at IS NULL;`);
|
|
10
|
+
}
|
|
11
|
+
async down() {
|
|
12
|
+
this.addSql(`drop table if exists "free_shipping_settings" cascade;`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.Migration20260911114515 = Migration20260911114515;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA5MTExMTQ1MTUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9mcmVlLXNoaXBwaW5nL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjA5MTExMTQ1MTUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLHNuQkFBc25CLENBQUMsQ0FBQztRQUNwb0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyx5SUFBeUksQ0FBQyxDQUFDO1FBQ3ZKLElBQUksQ0FBQyxNQUFNLENBQUMsdUlBQXVJLENBQUMsQ0FBQztJQUN2SixDQUFDO0lBRVEsS0FBSyxDQUFDLElBQUk7UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FFRjtBQVpELDBEQVlDIn0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260928201511 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
/**
|
|
6
|
+
* Used to drop `free_shipping_settings.enabled`. It no longer does:
|
|
7
|
+
* Migration20260928211756 carries `enabled = false` over into the base
|
|
8
|
+
* plugin's toggle before it drops the whole table, so the column must
|
|
9
|
+
* survive until then. Kept (as a no-op) because databases that already ran
|
|
10
|
+
* it have it recorded.
|
|
11
|
+
*/
|
|
12
|
+
class Migration20260928201511 extends migrations_1.Migration {
|
|
13
|
+
async up() { }
|
|
14
|
+
async down() {
|
|
15
|
+
this.addSql(`alter table if exists "free_shipping_settings" add column if not exists "enabled" boolean not null default true;`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.Migration20260928201511 = Migration20260928201511;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA5MjgyMDE1MTEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9mcmVlLXNoaXBwaW5nL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjA5MjgyMDE1MTEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFOzs7Ozs7R0FNRztBQUNILE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUUsS0FBbUIsQ0FBQztJQUU1QixLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLGtIQUFrSCxDQUFDLENBQUM7SUFDbEksQ0FBQztDQUVGO0FBUkQsMERBUUMifQ==
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260928211756 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
/**
|
|
6
|
+
* Carries the stored free-shipping settings over into the base plugin
|
|
7
|
+
* (`plugin_setting_state` / `plugin_feature_state`, plugin key
|
|
8
|
+
* `free_shipping`) and drops the plugin's own table. Written by hand:
|
|
9
|
+
* `medusa plugin:db:generate` skips a module without models.
|
|
10
|
+
*
|
|
11
|
+
* - Thresholds and both affiliate rules of the old row become the stored
|
|
12
|
+
* `free_shipping` settings, unless the base already holds a row for it
|
|
13
|
+
* (settings saved in the Admin win).
|
|
14
|
+
* - An old `enabled = false` becomes a stored plugin toggle `enabled = false`
|
|
15
|
+
* (again only when the base holds no toggle row yet). The `enabled` column
|
|
16
|
+
* exists in 0.1.0 databases; Migration20260928201511 no longer drops it.
|
|
17
|
+
* - Without the base tables (base plugin not migrated yet) nothing is carried
|
|
18
|
+
* over: a NOTICE is raised, the defaults (50 / 100 / on / off) apply, and
|
|
19
|
+
* the table is dropped anyway.
|
|
20
|
+
*
|
|
21
|
+
* No `?` in the SQL: the migration runner treats it as a binding. Not
|
|
22
|
+
* exported: Medusa's migrator instantiates the file's first export.
|
|
23
|
+
*/
|
|
24
|
+
const CARRY_OVER_FREE_SHIPPING_SETTINGS_SQL = `
|
|
25
|
+
DO $migration$
|
|
26
|
+
DECLARE
|
|
27
|
+
old_row record;
|
|
28
|
+
found_rows integer;
|
|
29
|
+
has_enabled boolean;
|
|
30
|
+
BEGIN
|
|
31
|
+
IF to_regclass('free_shipping_settings') IS NULL THEN
|
|
32
|
+
RETURN;
|
|
33
|
+
END IF;
|
|
34
|
+
|
|
35
|
+
SELECT EXISTS (
|
|
36
|
+
SELECT 1 FROM information_schema.columns
|
|
37
|
+
WHERE table_schema = current_schema()
|
|
38
|
+
AND table_name = 'free_shipping_settings'
|
|
39
|
+
AND column_name = 'enabled'
|
|
40
|
+
) INTO has_enabled;
|
|
41
|
+
|
|
42
|
+
EXECUTE format(
|
|
43
|
+
'SELECT default_threshold, affiliate_threshold, '
|
|
44
|
+
|| 'affiliate_applies_to_account_holders, '
|
|
45
|
+
|| 'affiliate_applies_to_referred_customers, %s AS enabled '
|
|
46
|
+
|| 'FROM free_shipping_settings WHERE deleted_at IS NULL '
|
|
47
|
+
|| 'ORDER BY (scope = %L) DESC, created_at ASC LIMIT 1',
|
|
48
|
+
CASE WHEN has_enabled THEN 'enabled' ELSE 'true' END,
|
|
49
|
+
'global'
|
|
50
|
+
) INTO old_row;
|
|
51
|
+
GET DIAGNOSTICS found_rows = ROW_COUNT;
|
|
52
|
+
IF found_rows = 0 THEN
|
|
53
|
+
RETURN;
|
|
54
|
+
END IF;
|
|
55
|
+
|
|
56
|
+
IF to_regclass('plugin_setting_state') IS NULL THEN
|
|
57
|
+
RAISE NOTICE 'free_shipping_settings: plugin_setting_state is missing (base plugin not migrated); the stored thresholds are not carried over.';
|
|
58
|
+
ELSE
|
|
59
|
+
INSERT INTO plugin_setting_state (id, plugin_key, "values", version)
|
|
60
|
+
SELECT
|
|
61
|
+
'plgset_' || substr(md5(random()::text || clock_timestamp()::text), 1, 26),
|
|
62
|
+
'free_shipping',
|
|
63
|
+
jsonb_build_object(
|
|
64
|
+
'default_threshold', old_row.default_threshold::numeric,
|
|
65
|
+
'affiliate_threshold', old_row.affiliate_threshold::numeric,
|
|
66
|
+
'affiliate_applies_to_account_holders', old_row.affiliate_applies_to_account_holders,
|
|
67
|
+
'affiliate_applies_to_referred_customers', old_row.affiliate_applies_to_referred_customers
|
|
68
|
+
),
|
|
69
|
+
1
|
|
70
|
+
WHERE NOT EXISTS (
|
|
71
|
+
SELECT 1 FROM plugin_setting_state
|
|
72
|
+
WHERE plugin_key = 'free_shipping' AND deleted_at IS NULL
|
|
73
|
+
);
|
|
74
|
+
END IF;
|
|
75
|
+
|
|
76
|
+
IF old_row.enabled IS FALSE THEN
|
|
77
|
+
IF to_regclass('plugin_feature_state') IS NULL THEN
|
|
78
|
+
RAISE NOTICE 'free_shipping_settings: plugin_feature_state is missing (base plugin not migrated); enabled = false is not carried over.';
|
|
79
|
+
ELSE
|
|
80
|
+
INSERT INTO plugin_feature_state (id, plugin_key, enabled, features, version)
|
|
81
|
+
SELECT
|
|
82
|
+
'plgfeat_' || substr(md5(random()::text || clock_timestamp()::text), 1, 26),
|
|
83
|
+
'free_shipping',
|
|
84
|
+
false,
|
|
85
|
+
'{}'::jsonb,
|
|
86
|
+
1
|
|
87
|
+
WHERE NOT EXISTS (
|
|
88
|
+
SELECT 1 FROM plugin_feature_state
|
|
89
|
+
WHERE plugin_key = 'free_shipping' AND deleted_at IS NULL
|
|
90
|
+
);
|
|
91
|
+
END IF;
|
|
92
|
+
END IF;
|
|
93
|
+
END
|
|
94
|
+
$migration$;
|
|
95
|
+
`;
|
|
96
|
+
class Migration20260928211756 extends migrations_1.Migration {
|
|
97
|
+
async up() {
|
|
98
|
+
this.addSql(CARRY_OVER_FREE_SHIPPING_SETTINGS_SQL);
|
|
99
|
+
this.addSql(`drop table if exists "free_shipping_settings" cascade;`);
|
|
100
|
+
}
|
|
101
|
+
async down() {
|
|
102
|
+
// Recreates the 0.1.0 shape (with `enabled`, which
|
|
103
|
+
// Migration20260928201511 no longer drops). Values are not restored.
|
|
104
|
+
this.addSql(`create table if not exists "free_shipping_settings" ("id" text not null, "scope" text not null default 'global', "enabled" boolean not null default true, "default_threshold" real not null default 50, "affiliate_threshold" real not null default 100, "affiliate_applies_to_account_holders" boolean not null default true, "affiliate_applies_to_referred_customers" boolean not null default false, "policy_version" integer not null default 1, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "free_shipping_settings_pkey" primary key ("id"));`);
|
|
105
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_free_shipping_settings_deleted_at" ON "free_shipping_settings" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
106
|
+
this.addSql(`CREATE UNIQUE INDEX IF NOT EXISTS "IDX_free_shipping_settings_global" ON "free_shipping_settings" ("scope") WHERE deleted_at IS NULL;`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.Migration20260928211756 = Migration20260928211756;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA5MjgyMTE3NTYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9mcmVlLXNoaXBwaW5nL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjA5MjgyMTE3NTYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLHFDQUFxQyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXVFN0MsQ0FBQztBQUVGLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixtREFBbUQ7UUFDbkQscUVBQXFFO1FBQ3JFLElBQUksQ0FBQyxNQUFNLENBQUMsc25CQUFzbkIsQ0FBQyxDQUFDO1FBQ3BvQixJQUFJLENBQUMsTUFBTSxDQUFDLHlJQUF5SSxDQUFDLENBQUM7UUFDdkosSUFBSSxDQUFDLE1BQU0sQ0FBQyx1SUFBdUksQ0FBQyxDQUFDO0lBQ3ZKLENBQUM7Q0FFRjtBQWZELDBEQWVDIn0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const plugin_features_1 = require("../../free-shipping/plugin-features");
|
|
4
|
+
/**
|
|
5
|
+
* Holds no data: the thresholds are settings of the base plugin (see
|
|
6
|
+
* `utils/free-shipping-settings.ts`). The module exists so that the base
|
|
7
|
+
* discovers the descriptor under the module key `free_shipping` and so that
|
|
8
|
+
* the migrations that dropped the former settings table keep running.
|
|
9
|
+
*/
|
|
10
|
+
class FreeShippingModuleService {
|
|
11
|
+
constructor() {
|
|
12
|
+
/** Discovered by @hartl-services/medusa-base for the toggle and settings. */
|
|
13
|
+
this.pluginFeatures = plugin_features_1.freeShippingPluginFeatures;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.default = FreeShippingModuleService;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ZyZWUtc2hpcHBpbmcvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlFQUFnRjtBQUVoRjs7Ozs7R0FLRztBQUNILE1BQU0seUJBQXlCO0lBQS9CO1FBQ0UsNkVBQTZFO1FBQ3BFLG1CQUFjLEdBQUcsNENBQTBCLENBQUE7SUFDdEQsQ0FBQztDQUFBO0FBRUQsa0JBQWUseUJBQXlCLENBQUEifQ==
|
|
@@ -14,8 +14,8 @@ const options_1 = require("./options");
|
|
|
14
14
|
* Builds the plain `medusa-config.ts` input of a shop: Medusa core
|
|
15
15
|
* settings, the Redis event bus, the mail provider (set up in the Admin), S3 file storage, tax and
|
|
16
16
|
* Stripe payment providers, and the Hartl Services plugins (the base plugin
|
|
17
|
-
* with its E-Mail, Documents, Steuer-Compliance and file
|
|
18
|
-
*
|
|
17
|
+
* with its E-Mail, Documents, Steuer-Compliance, Versandkostenfrei and file
|
|
18
|
+
* storage modules plus three feature plugins). Deployment
|
|
19
19
|
* values are read and validated from `environment`; a missing or invalid one
|
|
20
20
|
* fails with its name.
|
|
21
21
|
*/
|
|
@@ -162,8 +162,8 @@ function buildShopConfig(options, environment = process.env) {
|
|
|
162
162
|
const plugins = [
|
|
163
163
|
{
|
|
164
164
|
// Always first: owns the plugin feature toggles the other plugins gate
|
|
165
|
-
// on, and carries E-Mail, Documents, Steuer-Compliance
|
|
166
|
-
// gateway.
|
|
165
|
+
// on, and carries E-Mail, Documents, Steuer-Compliance, Versandkostenfrei
|
|
166
|
+
// and the /files gateway.
|
|
167
167
|
resolve: "@hartl-services/medusa-base",
|
|
168
168
|
options: {
|
|
169
169
|
email: {
|
|
@@ -210,10 +210,6 @@ function buildShopConfig(options, environment = process.env) {
|
|
|
210
210
|
files: { gateway: s3CacheStorage.gateway },
|
|
211
211
|
},
|
|
212
212
|
},
|
|
213
|
-
{
|
|
214
|
-
resolve: "@hartl-services/medusa-free-shipping",
|
|
215
|
-
options: {},
|
|
216
|
-
},
|
|
217
213
|
{
|
|
218
214
|
resolve: "@hartl-services/medusa-batch-management",
|
|
219
215
|
options: {},
|
|
@@ -300,4 +296,4 @@ function buildShopConfig(options, environment = process.env) {
|
|
|
300
296
|
function defineShopConfig(options, environment = process.env) {
|
|
301
297
|
return (0, utils_1.defineConfig)(buildShopConfig(options, environment));
|
|
302
298
|
}
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
299
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2hvcC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2hvcC1jb25maWcvYnVpbGQtc2hvcC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5RUEsMENBZ1ZDO0FBR0QsNENBS0M7QUFqYUQsdURBQW9EO0FBQ3BELDBGQUFpRztBQUNqRyxxREFBMkU7QUFFM0UsNkNBaUIwQjtBQUMxQixvR0FBc0Y7QUFDdEYsNEZBQXFGO0FBQ3JGLDJEQUFtRTtBQUVuRSx1Q0FHbUI7QUFtQ25COzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixPQUEwQixFQUMxQixjQUFpQyxPQUFPLENBQUMsR0FBRztJQUU1QyxJQUFBLGlDQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWpDLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFBLGVBQU8sRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLE1BQU0sYUFBYSxHQUFHLElBQUEsb0NBQTJCLEVBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXRFLE1BQU0sR0FBRyxHQUFHLElBQUEsMkJBQWtCLEVBQzVCLFdBQVcsRUFDWDtRQUNFLGNBQWM7UUFDZCxZQUFZO1FBQ1osWUFBWTtRQUNaLFdBQVc7UUFDWCxZQUFZO1FBQ1osZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIseUJBQXlCO1FBQ3pCLHlCQUF5QjtLQUMxQixFQUNE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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = freeShippingPluginFeaturesUpdatedSubscriber;
|
|
5
|
+
const public_1 = require("../public");
|
|
6
|
+
const plugin_features_1 = require("@hartl-services/medusa-contracts/events/plugin-features");
|
|
7
|
+
const plugin_features_2 = require("../free-shipping/plugin-features");
|
|
8
|
+
const sync_free_shipping_promotions_1 = require("../workflows/free-shipping/sync-free-shipping-promotions");
|
|
9
|
+
/**
|
|
10
|
+
* Switching the `free_shipping` plugin toggle in the Admin (de)activates the
|
|
11
|
+
* two automatic promotions right away instead of on the next 15-minute
|
|
12
|
+
* `free-shipping-promotion-sync` run. The sync reads the toggle itself, so a
|
|
13
|
+
* late or repeated event still converges on the current value.
|
|
14
|
+
*/
|
|
15
|
+
async function freeShippingPluginFeaturesUpdatedSubscriber({ event, container, }) {
|
|
16
|
+
const payload = plugin_features_1.PluginFeaturesUpdatedEventSchema.parse(event.data);
|
|
17
|
+
if (!(0, public_1.isOwnPluginEvent)(payload, plugin_features_2.freeShippingPluginFeatures.plugin_key)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
await (0, sync_free_shipping_promotions_1.syncFreeShippingPromotions)(container);
|
|
21
|
+
}
|
|
22
|
+
exports.config = {
|
|
23
|
+
event: plugin_features_1.PLUGIN_FEATURES_UPDATED_EVENT,
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZS1zaGlwcGluZy1wbHVnaW4tZmVhdHVyZXMtdXBkYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9mcmVlLXNoaXBwaW5nLXBsdWdpbi1mZWF0dXJlcy11cGRhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW9CQSw4REFVQztBQTFCRCxzQ0FBNEM7QUFDNUMsNkZBSWdFO0FBRWhFLHNFQUE2RTtBQUM3RSw0R0FBcUc7QUFFckc7Ozs7O0dBS0c7QUFDWSxLQUFLLFVBQVUsMkNBQTJDLENBQUMsRUFDeEUsS0FBSyxFQUNMLFNBQVMsR0FDa0M7SUFDM0MsTUFBTSxPQUFPLEdBQUcsa0RBQWdDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNsRSxJQUFJLENBQUMsSUFBQSx5QkFBZ0IsRUFBQyxPQUFPLEVBQUUsNENBQTBCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUN0RSxPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sSUFBQSwwREFBMEIsRUFBQyxTQUFTLENBQUMsQ0FBQTtBQUM3QyxDQUFDO0FBRVksUUFBQSxNQUFNLEdBQXFCO0lBQ3RDLEtBQUssRUFBRSwrQ0FBNkI7Q0FDckMsQ0FBQSJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = freeShippingPluginSettingsUpdatedSubscriber;
|
|
5
|
+
const public_1 = require("../public");
|
|
6
|
+
const plugin_features_1 = require("@hartl-services/medusa-contracts/events/plugin-features");
|
|
7
|
+
const plugin_features_2 = require("../free-shipping/plugin-features");
|
|
8
|
+
const sync_free_shipping_promotions_1 = require("../workflows/free-shipping/sync-free-shipping-promotions");
|
|
9
|
+
/**
|
|
10
|
+
* Saving the `free_shipping` settings in the Admin moves the thresholds of
|
|
11
|
+
* the two automatic promotions right away instead of on the next 15-minute
|
|
12
|
+
* `free-shipping-promotion-sync` run. The event carries no values; the sync
|
|
13
|
+
* reads the current settings itself, so a late or repeated event still
|
|
14
|
+
* converges on the saved values.
|
|
15
|
+
*/
|
|
16
|
+
async function freeShippingPluginSettingsUpdatedSubscriber({ event, container, }) {
|
|
17
|
+
const payload = plugin_features_1.PluginSettingsUpdatedEventSchema.parse(event.data);
|
|
18
|
+
if (!(0, public_1.isOwnPluginEvent)(payload, plugin_features_2.freeShippingPluginFeatures.plugin_key)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
await (0, sync_free_shipping_promotions_1.syncFreeShippingPromotions)(container);
|
|
22
|
+
}
|
|
23
|
+
exports.config = {
|
|
24
|
+
event: plugin_features_1.PLUGIN_SETTINGS_UPDATED_EVENT,
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlZS1zaGlwcGluZy1wbHVnaW4tc2V0dGluZ3MtdXBkYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zdWJzY3JpYmVycy9mcmVlLXNoaXBwaW5nLXBsdWdpbi1zZXR0aW5ncy11cGRhdGVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXFCQSw4REFVQztBQTNCRCxzQ0FBNEM7QUFDNUMsNkZBSWdFO0FBRWhFLHNFQUE2RTtBQUM3RSw0R0FBcUc7QUFFckc7Ozs7OztHQU1HO0FBQ1ksS0FBSyxVQUFVLDJDQUEyQyxDQUFDLEVBQ3hFLEtBQUssRUFDTCxTQUFTLEdBQ2tDO0lBQzNDLE1BQU0sT0FBTyxHQUFHLGtEQUFnQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEUsSUFBSSxDQUFDLElBQUEseUJBQWdCLEVBQUMsT0FBTyxFQUFFLDRDQUEwQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdEUsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLElBQUEsMERBQTBCLEVBQUMsU0FBUyxDQUFDLENBQUE7QUFDN0MsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFxQjtJQUN0QyxLQUFLLEVBQUUsK0NBQTZCO0NBQ3JDLENBQUEifQ==
|