@hszrdm/core 1.3.0 → 1.5.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 +5572 -3759
- package/.medusa/server/src/admin/index.mjs +5572 -3759
- package/.medusa/server/src/api/admin/back-in-stock/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/back-in-stock/route.js +70 -0
- package/.medusa/server/src/api/admin/customer-activation/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/customer-activation/route.js +97 -0
- package/.medusa/server/src/api/admin/customer-import/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/customer-import/route.js +166 -0
- package/.medusa/server/src/api/admin/order-export/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/order-export/route.js +88 -0
- package/.medusa/server/src/api/admin/product-migration/inventory/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/product-migration/inventory/route.js +164 -0
- package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.js +204 -0
- package/.medusa/server/src/api/admin/product-migration/products/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/product-migration/products/route.js +24 -0
- package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +36 -4
- package/.medusa/server/src/api/admin/product-reviews/settings/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/product-reviews/settings/route.js +63 -0
- package/.medusa/server/src/api/admin/system-runtime/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/system-runtime/route.js +18 -0
- package/.medusa/server/src/api/hooks/packeta/status/route.d.ts +2 -0
- package/.medusa/server/src/api/hooks/packeta/status/route.js +55 -0
- package/.medusa/server/src/api/mcp/route.d.ts +4 -0
- package/.medusa/server/src/api/mcp/route.js +19 -0
- package/.medusa/server/src/api/middlewares.js +16 -1
- package/.medusa/server/src/api/store/abandoned-cart/recover/route.d.ts +2 -0
- package/.medusa/server/src/api/store/abandoned-cart/recover/route.js +37 -0
- package/.medusa/server/src/api/store/back-in-stock/route.d.ts +8 -0
- package/.medusa/server/src/api/store/back-in-stock/route.js +124 -0
- package/.medusa/server/src/api/store/customer-activation/complete/route.d.ts +2 -0
- package/.medusa/server/src/api/store/customer-activation/complete/route.js +96 -0
- package/.medusa/server/src/api/store/customer-activation/route.d.ts +2 -0
- package/.medusa/server/src/api/store/customer-activation/route.js +34 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +1 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.js +76 -34
- package/.medusa/server/src/api/store/review-request/route.d.ts +2 -0
- package/.medusa/server/src/api/store/review-request/route.js +60 -0
- package/.medusa/server/src/config.d.ts +1 -1
- package/.medusa/server/src/core/abandoned-cart.d.ts +64 -0
- package/.medusa/server/src/core/abandoned-cart.js +197 -0
- package/.medusa/server/src/core/back-in-stock.d.ts +51 -0
- package/.medusa/server/src/core/back-in-stock.js +107 -0
- package/.medusa/server/src/core/checkout-contract.d.ts +1 -0
- package/.medusa/server/src/core/checkout-contract.js +2 -1
- package/.medusa/server/src/core/customer-account-contract.d.ts +3 -0
- package/.medusa/server/src/core/customer-account-contract.js +4 -1
- package/.medusa/server/src/core/customer-activation.d.ts +120 -0
- package/.medusa/server/src/core/customer-activation.js +169 -0
- package/.medusa/server/src/core/customer-email.d.ts +1 -1
- package/.medusa/server/src/core/customer-email.js +4 -1
- package/.medusa/server/src/core/native-migration-export.d.ts +6 -0
- package/.medusa/server/src/core/native-migration-export.js +105 -0
- package/.medusa/server/src/core/order-export.d.ts +11 -0
- package/.medusa/server/src/core/order-export.js +297 -0
- package/.medusa/server/src/core/review-request.d.ts +61 -0
- package/.medusa/server/src/core/review-request.js +105 -0
- package/.medusa/server/src/core/review-reward.d.ts +94 -0
- package/.medusa/server/src/core/review-reward.js +124 -0
- package/.medusa/server/src/core/runtime-health.d.ts +39 -0
- package/.medusa/server/src/core/runtime-health.js +250 -0
- package/.medusa/server/src/core/store-mcp.d.ts +19 -0
- package/.medusa/server/src/core/store-mcp.js +541 -0
- package/.medusa/server/src/core/storefront-core-config.d.ts +10 -0
- package/.medusa/server/src/core/storefront-core-config.js +26 -1
- package/.medusa/server/src/core/version.d.ts +2 -2
- package/.medusa/server/src/core/version.js +2 -2
- package/.medusa/server/src/jobs/abandoned-cart-recovery.d.ts +23 -0
- package/.medusa/server/src/jobs/abandoned-cart-recovery.js +138 -0
- package/.medusa/server/src/jobs/back-in-stock-reconciliation.d.ts +15 -0
- package/.medusa/server/src/jobs/back-in-stock-reconciliation.js +90 -0
- package/.medusa/server/src/jobs/dpd-statusdata-sync.d.ts +17 -0
- package/.medusa/server/src/jobs/dpd-statusdata-sync.js +107 -0
- package/.medusa/server/src/jobs/mpl-push-tracking.d.ts +19 -0
- package/.medusa/server/src/jobs/mpl-push-tracking.js +183 -0
- package/.medusa/server/src/jobs/mpl-status-sync.d.ts +8 -2
- package/.medusa/server/src/jobs/mpl-status-sync.js +12 -7
- package/.medusa/server/src/jobs/product-review-request-dispatch.d.ts +28 -0
- package/.medusa/server/src/jobs/product-review-request-dispatch.js +84 -0
- package/.medusa/server/src/jobs/runtime-heartbeat.d.ts +12 -0
- package/.medusa/server/src/jobs/runtime-heartbeat.js +13 -0
- package/.medusa/server/src/jobs/shipping-status-sync.d.ts +8 -2
- package/.medusa/server/src/jobs/shipping-status-sync.js +11 -14
- package/.medusa/server/src/lib/modules/shipping/idempotency.js +3 -3
- package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
- package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
- package/.medusa/server/src/lib/modules/shipping/tracking.d.ts +48 -0
- package/.medusa/server/src/lib/modules/shipping/tracking.js +368 -0
- package/.medusa/server/src/lib/modules/shipping/webhooks.d.ts +6 -9
- package/.medusa/server/src/lib/modules/shipping/webhooks.js +24 -137
- package/.medusa/server/src/localized-config.d.ts +1 -1
- package/.medusa/server/src/modules/back-in-stock/index.d.ts +23 -0
- package/.medusa/server/src/modules/back-in-stock/index.js +16 -0
- package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.d.ts +5 -0
- package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.js +18 -0
- package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.d.ts +13 -0
- package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.js +23 -0
- package/.medusa/server/src/modules/back-in-stock/service.d.ts +22 -0
- package/.medusa/server/src/modules/back-in-stock/service.js +12 -0
- package/.medusa/server/src/modules/cms/index.d.ts +32 -1
- package/.medusa/server/src/modules/core-audit/index.d.ts +18 -1
- package/.medusa/server/src/modules/core-audit/writer.d.ts +14 -1
- package/.medusa/server/src/modules/email-center/abandoned-cart-registration.d.ts +1 -0
- package/.medusa/server/src/modules/email-center/abandoned-cart-registration.js +27 -0
- package/.medusa/server/src/modules/email-center/back-in-stock-registration.d.ts +1 -0
- package/.medusa/server/src/modules/email-center/back-in-stock-registration.js +27 -0
- package/.medusa/server/src/modules/email-center/campaign.d.ts +69 -3
- package/.medusa/server/src/modules/email-center/defaults.js +7 -1
- package/.medusa/server/src/modules/email-center/index.d.ts +49 -1
- package/.medusa/server/src/modules/email-center/index.js +3 -1
- package/.medusa/server/src/modules/integration-operation/index.d.ts +18 -1
- package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.js +30 -0
- package/.medusa/server/src/modules/integration-settings/index.d.ts +19 -1
- package/.medusa/server/src/modules/integration-settings/index.js +2 -1
- package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -1
- package/.medusa/server/src/modules/lead/index.d.ts +18 -1
- package/.medusa/server/src/modules/legal-consent/consent.d.ts +4 -4
- package/.medusa/server/src/modules/legal-consent/index.d.ts +46 -1
- package/.medusa/server/src/modules/newsletter/index.d.ts +18 -1
- package/.medusa/server/src/modules/product-review/index.d.ts +32 -1
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.js +28 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.js +20 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.js +18 -0
- package/.medusa/server/src/modules/product-review/models/product-review-settings.d.ts +15 -0
- package/.medusa/server/src/modules/product-review/models/product-review-settings.js +19 -0
- package/.medusa/server/src/modules/product-review/models/product-review.d.ts +6 -2
- package/.medusa/server/src/modules/product-review/models/product-review.js +7 -3
- package/.medusa/server/src/modules/product-review/service.d.ts +22 -1
- package/.medusa/server/src/modules/product-review/service.js +3 -2
- package/.medusa/server/src/modules/quote-request/index.d.ts +18 -1
- package/.medusa/server/src/modules/seo/index.d.ts +32 -1
- package/.medusa/server/src/modules/webshop-analytics/index.d.ts +18 -1
- package/.medusa/server/src/modules/wishlist/index.d.ts +18 -1
- package/.medusa/server/src/providers/dpd/index.d.ts +3 -1
- package/.medusa/server/src/providers/dpd/index.js +3 -1
- package/.medusa/server/src/providers/dpd/statusdata-ftp.d.ts +16 -0
- package/.medusa/server/src/providers/dpd/statusdata-ftp.js +268 -0
- package/.medusa/server/src/providers/dpd/statusdata.d.ts +14 -0
- package/.medusa/server/src/providers/dpd/statusdata.js +161 -0
- package/.medusa/server/src/providers/email/index.d.ts +1 -1
- package/.medusa/server/src/providers/foxpost/index.d.ts +1 -1
- package/.medusa/server/src/providers/gls/index.d.ts +1 -1
- package/.medusa/server/src/providers/mpl/client.d.ts +3 -1
- package/.medusa/server/src/providers/mpl/client.js +154 -2
- package/.medusa/server/src/providers/mpl/index.d.ts +1 -1
- package/.medusa/server/src/providers/mpl/service.js +31 -20
- package/.medusa/server/src/providers/mpl/types.d.ts +25 -0
- package/.medusa/server/src/providers/mpl/types.js +1 -1
- package/.medusa/server/src/providers/packeta/index.d.ts +2 -1
- package/.medusa/server/src/providers/packeta/index.js +2 -1
- package/.medusa/server/src/providers/packeta/push-tracking.d.ts +8 -0
- package/.medusa/server/src/providers/packeta/push-tracking.js +96 -0
- package/.medusa/server/src/providers/packeta/service.js +22 -2
- package/.medusa/server/src/providers/resilient-stripe/index.d.ts +1 -1
- package/.medusa/server/src/providers/simplepay/index.d.ts +1 -1
- package/.medusa/server/src/scripts/core-init.d.ts +1 -1
- package/.medusa/server/src/scripts/core-init.js +3 -2
- package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.d.ts +7 -0
- package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.js +65 -0
- package/.medusa/server/src/workflows/link-migrated-customer.d.ts +8 -0
- package/.medusa/server/src/workflows/link-migrated-customer.js +17 -0
- package/package.json +2 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.variantAvailability = variantAvailability;
|
|
4
|
+
exports.variantMinimumOrderQuantity = variantMinimumOrderQuantity;
|
|
5
|
+
exports.variantIsPurchasable = variantIsPurchasable;
|
|
6
|
+
exports.backInStockProductUrl = backInStockProductUrl;
|
|
7
|
+
exports.dispatchBackInStockVariant = dispatchBackInStockVariant;
|
|
8
|
+
exports.sendBackInStockEmail = sendBackInStockEmail;
|
|
9
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
10
|
+
const email_center_1 = require("../modules/email-center");
|
|
11
|
+
const back_in_stock_1 = require("../modules/back-in-stock");
|
|
12
|
+
const customer_email_1 = require("./customer-email");
|
|
13
|
+
async function variantAvailability(query, variantId) {
|
|
14
|
+
const result = await (0, utils_1.getTotalVariantAvailability)(query, { variant_ids: [variantId] });
|
|
15
|
+
return result[variantId]?.availability ?? null;
|
|
16
|
+
}
|
|
17
|
+
function variantMinimumOrderQuantity(variant) {
|
|
18
|
+
const variantMetadata = asRecord(variant.metadata);
|
|
19
|
+
const productMetadata = asRecord(variant.product?.metadata);
|
|
20
|
+
const raw = variantMetadata.minimum_order_quantity ?? productMetadata.minimum_order_quantity;
|
|
21
|
+
const value = Number(raw);
|
|
22
|
+
return Number.isFinite(value) ? Math.max(1, Math.trunc(value)) : 1;
|
|
23
|
+
}
|
|
24
|
+
function variantIsPurchasable(variant, availability) {
|
|
25
|
+
if (variant.manage_inventory !== true)
|
|
26
|
+
return true;
|
|
27
|
+
if (variant.allow_backorder === true)
|
|
28
|
+
return true;
|
|
29
|
+
if (availability == null)
|
|
30
|
+
return true;
|
|
31
|
+
return availability >= variantMinimumOrderQuantity(variant);
|
|
32
|
+
}
|
|
33
|
+
function backInStockProductUrl(variant, locale) {
|
|
34
|
+
const handle = String(variant.product?.handle || "").trim();
|
|
35
|
+
if (!handle)
|
|
36
|
+
return (0, customer_email_1.storefrontUrl)();
|
|
37
|
+
const prefix = locale.toLowerCase().startsWith("en") ? "/en/products" : "/hu/termekek";
|
|
38
|
+
return `${(0, customer_email_1.storefrontUrl)()}${prefix}/${encodeURIComponent(handle)}`;
|
|
39
|
+
}
|
|
40
|
+
async function dispatchBackInStockVariant(input) {
|
|
41
|
+
const availability = await variantAvailability(input.query, input.variant.id);
|
|
42
|
+
if (!variantIsPurchasable(input.variant, availability)) {
|
|
43
|
+
return { available: false, sent: 0, availability };
|
|
44
|
+
}
|
|
45
|
+
const service = input.container.resolve(back_in_stock_1.BACK_IN_STOCK_MODULE);
|
|
46
|
+
const subscriptions = await service.listBackInStockSubscriptions({ variant_id: input.variant.id, status: "active" }, { take: 1000 });
|
|
47
|
+
let sent = 0;
|
|
48
|
+
const logger = input.container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
49
|
+
for (const subscription of subscriptions) {
|
|
50
|
+
try {
|
|
51
|
+
await sendBackInStockEmail({
|
|
52
|
+
container: input.container,
|
|
53
|
+
subscription: {
|
|
54
|
+
id: String(subscription.id),
|
|
55
|
+
email: String(subscription.email),
|
|
56
|
+
locale: subscription.locale,
|
|
57
|
+
notificationCycle: Math.max(1, Number(subscription.notification_cycle) || 1),
|
|
58
|
+
},
|
|
59
|
+
variant: input.variant,
|
|
60
|
+
});
|
|
61
|
+
await service.updateBackInStockSubscriptions({
|
|
62
|
+
id: subscription.id,
|
|
63
|
+
status: "notified",
|
|
64
|
+
notified_at: new Date(),
|
|
65
|
+
last_error: null,
|
|
66
|
+
});
|
|
67
|
+
sent += 1;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
71
|
+
await service.updateBackInStockSubscriptions({
|
|
72
|
+
id: subscription.id,
|
|
73
|
+
last_error: message.slice(0, 4000),
|
|
74
|
+
});
|
|
75
|
+
logger.warn(`[back-in-stock] ${subscription.id}: ${message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return { available: true, sent, availability };
|
|
79
|
+
}
|
|
80
|
+
async function sendBackInStockEmail(input) {
|
|
81
|
+
const locale = String(input.subscription.locale || "hu-HU");
|
|
82
|
+
const productName = String(input.variant.product?.title || input.variant.title || "Termék");
|
|
83
|
+
const variantName = String(input.variant.title || input.variant.sku || "");
|
|
84
|
+
const cycle = Math.max(1, Number(input.subscription.notificationCycle) || 1);
|
|
85
|
+
return (0, email_center_1.sendManagedEmail)({
|
|
86
|
+
container: input.container,
|
|
87
|
+
to: input.subscription.email,
|
|
88
|
+
key: "product.back_in_stock",
|
|
89
|
+
locale,
|
|
90
|
+
idempotencyKey: `back-in-stock:${input.subscription.id}:cycle:${cycle}`,
|
|
91
|
+
resourceId: input.subscription.id,
|
|
92
|
+
resourceType: "back_in_stock_subscription",
|
|
93
|
+
data: {
|
|
94
|
+
store_name: process.env.STORE_NAME || "Webshop",
|
|
95
|
+
storefront_url: (0, customer_email_1.storefrontUrl)(),
|
|
96
|
+
product_name: productName,
|
|
97
|
+
variant_name: variantName,
|
|
98
|
+
product_url: backInStockProductUrl(input.variant, locale),
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function asRecord(value) {
|
|
103
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
104
|
+
? value
|
|
105
|
+
: {};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1pbi1zdG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2JhY2staW4tc3RvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3QkEsa0RBR0M7QUFFRCxrRUFNQztBQUVELG9EQUtDO0FBRUQsc0RBS0M7QUFFRCxnRUFnREM7QUFFRCxvREErQkM7QUFwSUQscURBQWtHO0FBQ2xHLDBEQUEwRDtBQUMxRCw0REFBd0Y7QUFDeEYscURBQWdEO0FBcUJ6QyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsS0FBWSxFQUFFLFNBQWlCO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxtQ0FBMkIsRUFBQyxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDckYsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxJQUFJLElBQUksQ0FBQTtBQUNoRCxDQUFDO0FBRUQsU0FBZ0IsMkJBQTJCLENBQUMsT0FBMkI7SUFDckUsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNsRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUMzRCxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsc0JBQXNCLElBQUksZUFBZSxDQUFDLHNCQUFzQixDQUFBO0lBQzVGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3BFLENBQUM7QUFFRCxTQUFnQixvQkFBb0Is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
|
|
@@ -19,6 +19,7 @@ export declare const CHECKOUT_ENDPOINTS: {
|
|
|
19
19
|
readonly line_item: "/store/carts/:id/line-items/:line_id";
|
|
20
20
|
readonly add_promotion: "/store/carts/:id/promotions";
|
|
21
21
|
readonly remove_promotion: "/store/carts/:id/promotions";
|
|
22
|
+
readonly abandoned_cart_recovery: "/store/abandoned-cart/recover";
|
|
22
23
|
readonly shipping_options: "/store/shipping-options?cart_id=:id";
|
|
23
24
|
readonly calculate_shipping_option: "/store/shipping-options/:option_id/calculate";
|
|
24
25
|
readonly add_shipping_method: "/store/carts/:id/shipping-methods";
|
|
@@ -23,6 +23,7 @@ exports.CHECKOUT_ENDPOINTS = {
|
|
|
23
23
|
line_item: "/store/carts/:id/line-items/:line_id",
|
|
24
24
|
add_promotion: "/store/carts/:id/promotions",
|
|
25
25
|
remove_promotion: "/store/carts/:id/promotions",
|
|
26
|
+
abandoned_cart_recovery: "/store/abandoned-cart/recover",
|
|
26
27
|
shipping_options: "/store/shipping-options?cart_id=:id",
|
|
27
28
|
calculate_shipping_option: "/store/shipping-options/:option_id/calculate",
|
|
28
29
|
add_shipping_method: "/store/carts/:id/shipping-methods",
|
|
@@ -64,4 +65,4 @@ function checkoutError(code, message, context = {}) {
|
|
|
64
65
|
message,
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jaGVja291dC1jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnRUEsc0NBV0M7QUEzRVksUUFBQSxtQkFBbUIsR0FBRztJQUNqQyxJQUFJLEVBQUUsUUFBUTtJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLGdCQUFnQixFQUFFLFFBQVE7SUFDMUIsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixpQkFBaUIsRUFBRSxRQUFRO0lBQzNCLGtCQUFrQixFQUFFLFFBQVE7SUFDNUIsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixVQUFVLEVBQUUsUUFBUTtJQUNwQixhQUFhLEVBQUUsTUFBTTtDQUNiLENBQUE7QUFFRyxRQUFBLGtCQUFrQixHQUFHO0lBQ2hDLE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QixhQUFhLEVBQUUsMkJBQTJCO0lBQzFDLGFBQWEsRUFBRSw2QkFBNkI7SUFDNUMsU0FBUyxFQUFFLHNDQUFzQztJQUNqRCxhQUFhLEVBQUUsNkJBQTZCO0lBQzVDLGdCQUFnQixFQUFFLDZCQUE2QjtJQUMvQyx1QkFBdUIsRUFBRSwrQkFBK0I7SUFDeEQsZ0JBQWdCLEVBQUUscUNBQXFDO0lBQ3ZELHlCQUF5QixFQUFFLDhDQUE4QztJQUN6RSxtQkFBbUIsRUFBRSxtQ0FBbUM7SUFDeEQsaUJBQWlCLEVBQUUsK0NBQStDO0lBQ2xFLHlCQUF5QixFQUFFLDRCQUE0QjtJQUN2RCxnQkFBZ0IsRUFDZCxvRUFBb0U7SUFDdEUsUUFBUSxFQUFFLDJCQUEyQjtJQUNyQyxxQkFBcUIsRUFBRSxzQ0FBc0M7SUFDN0QsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsZUFBZSxFQUFFLHdCQUF3QjtJQUN6QyxtQkFBbUIsRUFBRSw0QkFBNEI7SUFDakQsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLG1CQUFtQixFQUFFLDRCQUE0QjtDQUN6QyxDQUFBO0FBRUcsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixvQkFBb0IsRUFBRSxlQUFlO0lBQ3JDLHFCQUFxQixFQUFFLGFBQWE7SUFDcEMsZ0JBQWdCLEVBQUUsYUFBYTtJQUMvQixvQkFBb0IsRUFBRSxhQUFhO0lBQ25DLHVCQUF1QixFQUFFLE9BQU87SUFDaEMsdUJBQXVCLEVBQUUsTUFBTTtJQUMvQixrQkFBa0IsRUFBRSwrQkFBK0I7SUFDbkQsd0JBQXdCLEVBQUUsK0JBQStCO0NBQ2pELENBQUE7QUFFRyxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLG9CQUFvQixFQUFFLHdCQUF3QjtJQUM5Qyx1QkFBdUIsRUFBRSwyQkFBMkI7SUFDcEQsd0JBQXdCLEVBQUUsNEJBQTRCO0lBQ3RELDJCQUEyQixFQUFFLGdDQUFnQztJQUM3RCx3QkFBd0IsRUFBRSw0QkFBNEI7Q0FDOUMsQ0FBQTtBQUVHLFFBQUEsOEJBQThCLEdBQUcsOEJBQThCLENBQUE7QUFLNUUsU0FBZ0IsYUFBYSxDQUMzQixJQUFzRSxFQUN0RSxPQUFlLEVBQ2YsVUFBbUMsRUFBRTtJQUVyQyxPQUFPO1FBQ0wsR0FBRyxPQUFPO1FBQ1YsSUFBSSxFQUFFLGdCQUF5QjtRQUMvQixJQUFJO1FBQ0osT0FBTztLQUNSLENBQUE7QUFDSCxDQUFDIn0=
|
|
@@ -15,6 +15,8 @@ export declare const CUSTOMER_ACCOUNT_ENDPOINTS: {
|
|
|
15
15
|
readonly email_verification: "/store/account/verify-email";
|
|
16
16
|
readonly email_change: "/store/account/email";
|
|
17
17
|
readonly delete_account: "/store/account/delete";
|
|
18
|
+
readonly customer_activation: "/store/customer-activation";
|
|
19
|
+
readonly customer_activation_complete: "/store/customer-activation/complete";
|
|
18
20
|
};
|
|
19
21
|
export declare const CUSTOMER_ACCOUNT_MANAGED_BY: {
|
|
20
22
|
readonly profile: "medusa";
|
|
@@ -25,6 +27,7 @@ export declare const CUSTOMER_ACCOUNT_MANAGED_BY: {
|
|
|
25
27
|
readonly email_verification: "core";
|
|
26
28
|
readonly email_change: "core";
|
|
27
29
|
readonly delete_account: "core";
|
|
30
|
+
readonly migration_activation: "core";
|
|
28
31
|
};
|
|
29
32
|
export type CustomerAccountEndpoints = typeof CUSTOMER_ACCOUNT_ENDPOINTS;
|
|
30
33
|
export type CustomerAccountManagedBy = typeof CUSTOMER_ACCOUNT_MANAGED_BY;
|
|
@@ -18,6 +18,8 @@ exports.CUSTOMER_ACCOUNT_ENDPOINTS = {
|
|
|
18
18
|
email_verification: "/store/account/verify-email",
|
|
19
19
|
email_change: "/store/account/email",
|
|
20
20
|
delete_account: "/store/account/delete",
|
|
21
|
+
customer_activation: "/store/customer-activation",
|
|
22
|
+
customer_activation_complete: "/store/customer-activation/complete",
|
|
21
23
|
};
|
|
22
24
|
exports.CUSTOMER_ACCOUNT_MANAGED_BY = {
|
|
23
25
|
profile: "medusa",
|
|
@@ -28,5 +30,6 @@ exports.CUSTOMER_ACCOUNT_MANAGED_BY = {
|
|
|
28
30
|
email_verification: "core",
|
|
29
31
|
email_change: "core",
|
|
30
32
|
delete_account: "core",
|
|
33
|
+
migration_activation: "core",
|
|
31
34
|
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWNjb3VudC1jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2N1c3RvbWVyLWFjY291bnQtY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSwwQkFBMEIsR0FBRztJQUN4QyxLQUFLLEVBQUUsMEJBQTBCO0lBQ2pDLGtCQUFrQixFQUFFLG1DQUFtQztJQUN2RCxPQUFPLEVBQUUsZUFBZTtJQUN4QixNQUFNLEVBQUUsZUFBZTtJQUN2QixpQkFBaUIsRUFBRSxrQkFBa0I7SUFDckMsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixTQUFTLEVBQUUsK0JBQStCO0lBQzFDLE9BQU8sRUFBRSwyQ0FBMkM7SUFDcEQsTUFBTSxFQUFFLGVBQWU7SUFDdkIsS0FBSyxFQUFFLG1CQUFtQjtJQUMxQixlQUFlLEVBQUUseUJBQXlCO0lBQzFDLHNCQUFzQixFQUFFLHlDQUF5QztJQUNqRSx1QkFBdUIsRUFBRSxpQ0FBaUM7SUFDMUQsa0JBQWtCLEVBQUUsNkJBQTZCO0lBQ2pELFlBQVksRUFBRSxzQkFBc0I7SUFDcEMsY0FBYyxFQUFFLHVCQUF1QjtJQUN2QyxtQkFBbUIsRUFBRSw0QkFBNEI7SUFDakQsNEJBQTRCLEVBQUUscUNBQXFDO0NBQzNELENBQUE7QUFFRyxRQUFBLDJCQUEyQixHQUFHO0lBQ3pDLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFNBQVMsRUFBRSxRQUFRO0lBQ25CLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLGVBQWUsRUFBRSxNQUFNO0lBQ3ZCLGtCQUFrQixFQUFFLE1BQU07SUFDMUIsWUFBWSxFQUFFLE1BQU07SUFDcEIsY0FBYyxFQUFFLE1BQU07SUFDdEIsb0JBQW9CLEVBQUUsTUFBTTtDQUNwQixDQUFBIn0=
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export type ActivationReward = {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
type: "percentage" | "fixed";
|
|
4
|
+
value: number;
|
|
5
|
+
currency_code?: string;
|
|
6
|
+
};
|
|
7
|
+
export type CustomerActivationState = {
|
|
8
|
+
status: "pending" | "auth_linked" | "activated";
|
|
9
|
+
token_hash?: string;
|
|
10
|
+
issued_at?: string;
|
|
11
|
+
expires_at?: string;
|
|
12
|
+
email_sent_at?: string | null;
|
|
13
|
+
auth_identity_id?: string | null;
|
|
14
|
+
reward?: ActivationReward;
|
|
15
|
+
promotion_id?: string | null;
|
|
16
|
+
coupon_code?: string | null;
|
|
17
|
+
activated_at?: string | null;
|
|
18
|
+
};
|
|
19
|
+
type CustomerLike = {
|
|
20
|
+
id: string;
|
|
21
|
+
email?: string | null;
|
|
22
|
+
first_name?: string | null;
|
|
23
|
+
metadata?: Record<string, unknown> | null;
|
|
24
|
+
};
|
|
25
|
+
type ResolveContainer = {
|
|
26
|
+
resolve: (key: string) => unknown;
|
|
27
|
+
};
|
|
28
|
+
export declare function normalizeActivationReward(value: unknown): ActivationReward;
|
|
29
|
+
export declare function issueCustomerActivation(customer: CustomerLike, input?: {
|
|
30
|
+
expiresHours?: number;
|
|
31
|
+
reward?: unknown;
|
|
32
|
+
}): {
|
|
33
|
+
token: string;
|
|
34
|
+
state: CustomerActivationState;
|
|
35
|
+
metadata: {
|
|
36
|
+
migration_activation: CustomerActivationState;
|
|
37
|
+
};
|
|
38
|
+
activation_url: string;
|
|
39
|
+
};
|
|
40
|
+
export declare function readCustomerActivation(customer: CustomerLike): CustomerActivationState | null;
|
|
41
|
+
export declare function verifyCustomerActivation(customer: CustomerLike, token: string): {
|
|
42
|
+
valid: boolean;
|
|
43
|
+
reason: "missing";
|
|
44
|
+
state: null;
|
|
45
|
+
} | {
|
|
46
|
+
valid: boolean;
|
|
47
|
+
reason: "used";
|
|
48
|
+
state: CustomerActivationState;
|
|
49
|
+
} | {
|
|
50
|
+
valid: boolean;
|
|
51
|
+
reason: "invalid";
|
|
52
|
+
state: CustomerActivationState;
|
|
53
|
+
} | {
|
|
54
|
+
valid: boolean;
|
|
55
|
+
reason: "expired";
|
|
56
|
+
state: CustomerActivationState;
|
|
57
|
+
} | {
|
|
58
|
+
valid: boolean;
|
|
59
|
+
reason: null;
|
|
60
|
+
state: CustomerActivationState;
|
|
61
|
+
};
|
|
62
|
+
export declare function mergeActivationMetadata(metadata: Record<string, unknown> | null | undefined, state: CustomerActivationState): {
|
|
63
|
+
migration_activation: CustomerActivationState;
|
|
64
|
+
};
|
|
65
|
+
export declare function activationUrl(customerId: string, token: string): string;
|
|
66
|
+
export declare function maskEmail(email: string): string;
|
|
67
|
+
export declare function sendCustomerActivationEmail(input: {
|
|
68
|
+
container: ResolveContainer;
|
|
69
|
+
customer: CustomerLike;
|
|
70
|
+
token: string;
|
|
71
|
+
expiresAt: string;
|
|
72
|
+
}): Promise<{
|
|
73
|
+
skipped: boolean;
|
|
74
|
+
reason: "missing-email";
|
|
75
|
+
locale?: undefined;
|
|
76
|
+
template?: undefined;
|
|
77
|
+
} | {
|
|
78
|
+
skipped: boolean;
|
|
79
|
+
reason: "disabled";
|
|
80
|
+
locale?: undefined;
|
|
81
|
+
template?: undefined;
|
|
82
|
+
} | {
|
|
83
|
+
skipped: boolean;
|
|
84
|
+
locale: string;
|
|
85
|
+
template: string;
|
|
86
|
+
reason?: undefined;
|
|
87
|
+
} | {
|
|
88
|
+
skipped: boolean;
|
|
89
|
+
reason: "provider-disabled";
|
|
90
|
+
locale?: undefined;
|
|
91
|
+
template?: undefined;
|
|
92
|
+
} | {
|
|
93
|
+
skipped: boolean;
|
|
94
|
+
reason: "missing-template";
|
|
95
|
+
locale?: undefined;
|
|
96
|
+
template?: undefined;
|
|
97
|
+
}>;
|
|
98
|
+
export declare function createCustomerActivationPromotion(container: ResolveContainer, customerId: string, reward: ActivationReward): Promise<{
|
|
99
|
+
id: any;
|
|
100
|
+
code: any;
|
|
101
|
+
} | null>;
|
|
102
|
+
export declare function activatedState(state: CustomerActivationState, input: {
|
|
103
|
+
authIdentityId: string;
|
|
104
|
+
promotion?: {
|
|
105
|
+
id: string;
|
|
106
|
+
code: string;
|
|
107
|
+
} | null;
|
|
108
|
+
}): {
|
|
109
|
+
status: "activated";
|
|
110
|
+
token_hash: undefined;
|
|
111
|
+
auth_identity_id: string;
|
|
112
|
+
promotion_id: string | null;
|
|
113
|
+
coupon_code: string | null;
|
|
114
|
+
activated_at: string;
|
|
115
|
+
issued_at?: string;
|
|
116
|
+
expires_at?: string;
|
|
117
|
+
email_sent_at?: string | null;
|
|
118
|
+
reward?: ActivationReward;
|
|
119
|
+
};
|
|
120
|
+
export {};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeActivationReward = normalizeActivationReward;
|
|
4
|
+
exports.issueCustomerActivation = issueCustomerActivation;
|
|
5
|
+
exports.readCustomerActivation = readCustomerActivation;
|
|
6
|
+
exports.verifyCustomerActivation = verifyCustomerActivation;
|
|
7
|
+
exports.mergeActivationMetadata = mergeActivationMetadata;
|
|
8
|
+
exports.activationUrl = activationUrl;
|
|
9
|
+
exports.maskEmail = maskEmail;
|
|
10
|
+
exports.sendCustomerActivationEmail = sendCustomerActivationEmail;
|
|
11
|
+
exports.createCustomerActivationPromotion = createCustomerActivationPromotion;
|
|
12
|
+
exports.activatedState = activatedState;
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
14
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
15
|
+
const customer_email_1 = require("./customer-email");
|
|
16
|
+
function normalizeActivationReward(value) {
|
|
17
|
+
const input = value && typeof value === "object" ? value : {};
|
|
18
|
+
const enabled = input.enabled !== false;
|
|
19
|
+
const type = input.type === "fixed" ? "fixed" : "percentage";
|
|
20
|
+
const rawValue = Number(input.value ?? (type === "percentage" ? 10 : 2000));
|
|
21
|
+
const amount = Number.isFinite(rawValue) && rawValue > 0 ? rawValue : type === "percentage" ? 10 : 2000;
|
|
22
|
+
const currency = typeof input.currency_code === "string" && input.currency_code.trim()
|
|
23
|
+
? input.currency_code.trim().toLowerCase()
|
|
24
|
+
: "huf";
|
|
25
|
+
return {
|
|
26
|
+
enabled,
|
|
27
|
+
type,
|
|
28
|
+
value: type === "percentage" ? Math.min(amount, 100) : amount,
|
|
29
|
+
...(type === "fixed" ? { currency_code: currency } : {}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function issueCustomerActivation(customer, input) {
|
|
33
|
+
const expiresHours = clamp(Number(input?.expiresHours ?? 72), 1, 168);
|
|
34
|
+
const token = (0, node_crypto_1.randomBytes)(32).toString("base64url");
|
|
35
|
+
const now = new Date();
|
|
36
|
+
const expiresAt = new Date(now.getTime() + expiresHours * 60 * 60 * 1000);
|
|
37
|
+
const state = {
|
|
38
|
+
status: "pending",
|
|
39
|
+
token_hash: hashActivationToken(token),
|
|
40
|
+
issued_at: now.toISOString(),
|
|
41
|
+
expires_at: expiresAt.toISOString(),
|
|
42
|
+
email_sent_at: null,
|
|
43
|
+
auth_identity_id: null,
|
|
44
|
+
reward: normalizeActivationReward(input?.reward),
|
|
45
|
+
promotion_id: null,
|
|
46
|
+
coupon_code: null,
|
|
47
|
+
activated_at: null,
|
|
48
|
+
};
|
|
49
|
+
return {
|
|
50
|
+
token,
|
|
51
|
+
state,
|
|
52
|
+
metadata: mergeActivationMetadata(customer.metadata, state),
|
|
53
|
+
activation_url: activationUrl(customer.id, token),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function readCustomerActivation(customer) {
|
|
57
|
+
const value = customer.metadata?.migration_activation;
|
|
58
|
+
if (!value || typeof value !== "object")
|
|
59
|
+
return null;
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
function verifyCustomerActivation(customer, token) {
|
|
63
|
+
const state = readCustomerActivation(customer);
|
|
64
|
+
if (!state)
|
|
65
|
+
return { valid: false, reason: "missing", state: null };
|
|
66
|
+
if (state.status === "activated")
|
|
67
|
+
return { valid: false, reason: "used", state };
|
|
68
|
+
if (!state.token_hash || !token)
|
|
69
|
+
return { valid: false, reason: "invalid", state };
|
|
70
|
+
if (!state.expires_at || Date.parse(state.expires_at) <= Date.now()) {
|
|
71
|
+
return { valid: false, reason: "expired", state };
|
|
72
|
+
}
|
|
73
|
+
const actual = Buffer.from(hashActivationToken(token), "hex");
|
|
74
|
+
const expected = Buffer.from(state.token_hash, "hex");
|
|
75
|
+
if (actual.length !== expected.length || !(0, node_crypto_1.timingSafeEqual)(actual, expected)) {
|
|
76
|
+
return { valid: false, reason: "invalid", state };
|
|
77
|
+
}
|
|
78
|
+
return { valid: true, reason: null, state };
|
|
79
|
+
}
|
|
80
|
+
function mergeActivationMetadata(metadata, state) {
|
|
81
|
+
return {
|
|
82
|
+
...(metadata || {}),
|
|
83
|
+
migration_activation: state,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function activationUrl(customerId, token) {
|
|
87
|
+
const base = (0, customer_email_1.storefrontUrl)();
|
|
88
|
+
const query = new URLSearchParams({ customer: customerId, token });
|
|
89
|
+
return `${base}/fiok-aktivalas?${query.toString()}`;
|
|
90
|
+
}
|
|
91
|
+
function maskEmail(email) {
|
|
92
|
+
const [local, domain] = email.split("@");
|
|
93
|
+
if (!local || !domain)
|
|
94
|
+
return email;
|
|
95
|
+
return `${local.slice(0, 1)}${"*".repeat(Math.max(3, local.length - 1))}@${domain}`;
|
|
96
|
+
}
|
|
97
|
+
async function sendCustomerActivationEmail(input) {
|
|
98
|
+
const email = String(input.customer.email || "").trim().toLowerCase();
|
|
99
|
+
if (!email)
|
|
100
|
+
throw new Error("Az aktiválási e-mailhez hiányzik a vevő e-mail címe.");
|
|
101
|
+
const url = activationUrl(input.customer.id, input.token);
|
|
102
|
+
return (0, customer_email_1.queueCustomerAccountEmail)({
|
|
103
|
+
container: input.container,
|
|
104
|
+
kind: "migration_activation",
|
|
105
|
+
to: email,
|
|
106
|
+
resourceId: input.customer.id,
|
|
107
|
+
idempotencyKey: `customer-migration-activation:${input.customer.id}:${hashActivationToken(input.token).slice(0, 16)}`,
|
|
108
|
+
data: {
|
|
109
|
+
first_name: input.customer.first_name || "",
|
|
110
|
+
activation_url: url,
|
|
111
|
+
activation_expires_at: input.expiresAt,
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
async function createCustomerActivationPromotion(container, customerId, reward) {
|
|
116
|
+
if (!reward.enabled)
|
|
117
|
+
return null;
|
|
118
|
+
const promotionService = container.resolve(utils_1.Modules.PROMOTION);
|
|
119
|
+
let lastError;
|
|
120
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
121
|
+
const code = `WELCOME-${(0, node_crypto_1.randomBytes)(5).toString("hex").toUpperCase()}`;
|
|
122
|
+
try {
|
|
123
|
+
const promotion = await promotionService.createPromotions({
|
|
124
|
+
code,
|
|
125
|
+
type: "standard",
|
|
126
|
+
status: "active",
|
|
127
|
+
limit: 1,
|
|
128
|
+
application_method: {
|
|
129
|
+
type: reward.type,
|
|
130
|
+
target_type: "order",
|
|
131
|
+
value: reward.value,
|
|
132
|
+
...(reward.type === "fixed" ? { currency_code: reward.currency_code || "huf" } : {}),
|
|
133
|
+
},
|
|
134
|
+
rules: [
|
|
135
|
+
{
|
|
136
|
+
attribute: "customer_id",
|
|
137
|
+
operator: "eq",
|
|
138
|
+
values: [customerId],
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
});
|
|
142
|
+
return { id: promotion.id, code: promotion.code || code };
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
lastError = error;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
throw lastError instanceof Error ? lastError : new Error("Az egyedi aktiválási kupon létrehozása nem sikerült.");
|
|
149
|
+
}
|
|
150
|
+
function activatedState(state, input) {
|
|
151
|
+
return {
|
|
152
|
+
...state,
|
|
153
|
+
status: "activated",
|
|
154
|
+
token_hash: undefined,
|
|
155
|
+
auth_identity_id: input.authIdentityId,
|
|
156
|
+
promotion_id: input.promotion?.id || null,
|
|
157
|
+
coupon_code: input.promotion?.code || null,
|
|
158
|
+
activated_at: new Date().toISOString(),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function hashActivationToken(value) {
|
|
162
|
+
return (0, node_crypto_1.createHash)("sha256").update(value).digest("hex");
|
|
163
|
+
}
|
|
164
|
+
function clamp(value, min, max) {
|
|
165
|
+
if (!Number.isFinite(value))
|
|
166
|
+
return min;
|
|
167
|
+
return Math.min(Math.max(value, min), max);
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWN0aXZhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL2N1c3RvbWVyLWFjdGl2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQ0EsOERBZUM7QUFFRCwwREF1QkM7QUFFRCx3REFJQztBQUVELDREQWNDO0FBRUQsMERBS0M7QUFFRCxzQ0FJQztBQUVELDhCQUlDO0FBRUQsa0VBcUJDO0FBRUQsOEVBb0NDO0FBRUQsd0NBVUM7QUEzTEQsNkNBQXNFO0FBQ3RFLHFEQUFtRDtBQUNuRCxxREFBMkU7QUErQjNFLFNBQWdCLHlCQUF5QixDQUFDLEtBQWM7SUFDdEQsTUFBTSxLQUFLLEdBQUcsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBZ0MsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ3hGLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFBO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQTtJQUM1RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUMzRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDdkcsTUFBTSxRQUFRLEdBQUcsT0FBTyxLQUFLLENBQUMsYUFBYSxL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
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
type ResolveContainer = {
|
|
2
2
|
resolve: (key: string) => unknown;
|
|
3
3
|
};
|
|
4
|
-
export type CustomerEmailKind = "welcome" | "registration_verification" | "password_reset" | "email_change_verification" | "password_changed" | "email_changed" | "account_deleted";
|
|
4
|
+
export type CustomerEmailKind = "welcome" | "registration_verification" | "password_reset" | "email_change_verification" | "password_changed" | "email_changed" | "account_deleted" | "migration_activation" | "review_request" | "review_reward";
|
|
5
5
|
export declare function customerEmailEnabled(kind: CustomerEmailKind): boolean;
|
|
6
6
|
export declare function customerEmailLocale(input?: {
|
|
7
7
|
locale?: unknown;
|
|
@@ -17,6 +17,9 @@ const CUSTOMER_EMAIL_CONFIG = {
|
|
|
17
17
|
password_changed: { enabled: "EMAIL_PASSWORD_CHANGED_ENABLED", legacyEnabled: "SENDGRID_PASSWORD_CHANGED_ENABLED", templatePrefix: "SENDGRID_PASSWORD_CHANGED_TEMPLATE_ID", localTemplate: "customer-password-changed", coreKey: "customer.password_changed" },
|
|
18
18
|
email_changed: { enabled: "EMAIL_CHANGED_ENABLED", legacyEnabled: "SENDGRID_EMAIL_CHANGED_ENABLED", templatePrefix: "SENDGRID_EMAIL_CHANGED_TEMPLATE_ID", localTemplate: "customer-email-changed", coreKey: "customer.email_changed" },
|
|
19
19
|
account_deleted: { enabled: "EMAIL_ACCOUNT_DELETED_ENABLED", legacyEnabled: "SENDGRID_ACCOUNT_DELETED_ENABLED", templatePrefix: "SENDGRID_ACCOUNT_DELETED_TEMPLATE_ID", localTemplate: "customer-account-deleted", coreKey: "customer.account_deleted" },
|
|
20
|
+
migration_activation: { enabled: "EMAIL_CUSTOMER_MIGRATION_ACTIVATION_ENABLED", legacyEnabled: "SENDGRID_CUSTOMER_MIGRATION_ACTIVATION_ENABLED", templatePrefix: "SENDGRID_CUSTOMER_MIGRATION_ACTIVATION_TEMPLATE_ID", defaultEnabled: true, localTemplate: "customer-migration-activation", coreKey: "customer.migration_activation" },
|
|
21
|
+
review_request: { enabled: "EMAIL_REVIEW_REQUEST_ENABLED", legacyEnabled: "SENDGRID_REVIEW_REQUEST_ENABLED", templatePrefix: "SENDGRID_REVIEW_REQUEST_TEMPLATE_ID", defaultEnabled: true, localTemplate: "customer-review-request", coreKey: "customer.review_request" },
|
|
22
|
+
review_reward: { enabled: "EMAIL_REVIEW_REWARD_ENABLED", legacyEnabled: "SENDGRID_REVIEW_REWARD_ENABLED", templatePrefix: "SENDGRID_REVIEW_REWARD_TEMPLATE_ID", defaultEnabled: true, localTemplate: "customer-review-reward", coreKey: "customer.review_reward" },
|
|
20
23
|
};
|
|
21
24
|
function customerEmailEnabled(kind) {
|
|
22
25
|
const config = CUSTOMER_EMAIL_CONFIG[kind];
|
|
@@ -95,4 +98,4 @@ function isProductionRuntime() { return process.env.APP_ENV === "production" ||
|
|
|
95
98
|
function stringValue(value) { return typeof value === "string" && value.trim() ? value.trim() : undefined; }
|
|
96
99
|
function boolEnv(key) { const raw = process.env[key]?.trim(); if (!raw)
|
|
97
100
|
return null; return raw === "true"; }
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jdXN0b21lci1lbWFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJDQSxvREFRQztBQUVELGtEQUlDO0FBRUQsNENBQXdIO0FBQ3hILHNDQUtDO0FBRUQsOERBK0JDO0FBRUQsb0VBT0M7QUEzR0QsNkNBQXdDO0FBQ3hDLHFEQUE4RTtBQUM5RSwwREFBK0U7QUE0Qi9FLE1BQU0scUJBQXFCLEdBQW1EO0lBQzVFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhLEVBQUUsbUNBQW1DLEVBQUUsY0FBYyxFQUFFLHVDQUF1QyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7SUFDdE8seUJBQXlCLEVBQUUsRUFBRSxPQUFPLEVBQUUseUNBQXlDLEVBQUUsYUFBYSxFQUFFLDRDQUE0QyxFQUFFLGNBQWMsRUFBRSxnREFBZ0QsRUFBRSxhQUFhLEVBQUUsb0NBQW9DLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFO0lBQzdTLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxhQUFhLEVBQUUsaUNBQWlDLEVBQUUsY0FBYyxFQUFFLHFDQUFxQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUscUNBQXFDLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRTtJQUN6VCx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLEVBQUUsNENBQTRDLEVBQUUsY0FBYyxFQUFFLGdEQUFnRCxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUseUNBQXlDLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRTtJQUMzVyxnQkFBZ0IsRUFB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
|