@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.
@@ -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: EmailAccountMailsRoute,
6753
- path: "/settings/hartl-services/email/account",
6752
+ Component: EmailAffiliateMailsRoute,
6753
+ path: "/settings/hartl-services/email/affiliate",
6754
6754
  handle: handle$9
6755
6755
  },
6756
6756
  {
6757
- Component: EmailAffiliateMailsRoute,
6758
- path: "/settings/hartl-services/email/affiliate",
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: EmailAccountMailsRoute,
6747
- path: "/settings/hartl-services/email/account",
6746
+ Component: EmailAffiliateMailsRoute,
6747
+ path: "/settings/hartl-services/email/affiliate",
6748
6748
  handle: handle$9
6749
6749
  },
6750
6750
  {
6751
- Component: EmailAffiliateMailsRoute,
6752
- path: "/settings/hartl-services/email/affiliate",
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 storage modules plus
18
- * four feature plugins). Deployment
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 and the /files
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2hvcC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2hvcC1jb25maWcvYnVpbGQtc2hvcC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5RUEsMENBb1ZDO0FBR0QsNENBS0M7QUFyYUQsdURBQW9EO0FBQ3BELDBGQUFpRztBQUNqRyxxREFBMkU7QUFFM0UsNkNBaUIwQjtBQUMxQixvR0FBc0Y7QUFDdEYsNEZBQXFGO0FBQ3JGLDJEQUFtRTtBQUVuRSx1Q0FHbUI7QUFtQ25COzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixPQUEwQixFQUMxQixjQUFpQyxPQUFPLENBQUMsR0FBRztJQUU1QyxJQUFBLGlDQUF1QixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWpDLElBQUksT0FBTyxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUNsQyxJQUFBLGVBQU8sRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzlFLE1BQU0sYUFBYSxHQUFHLElBQUEsb0NBQTJCLEVBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXRFLE1BQU0sR0FBRyxHQUFHLElBQUEsMkJBQWtCLEVBQzVCLFdBQVcsRUFDWDtRQUNFLGNBQWM7UUFDZCxZQUFZO1FBQ1osWUFBWTtRQUNaLFdBQVc7UUFDWCxZQUFZO1FBQ1osZUFBZTtRQUNmLG9CQUFvQjtRQUNwQixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIseUJBQXlCO1FBQ3pCLHlCQUF5QjtLQUMxQixFQUNE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
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==