@hszrdm/core 1.1.0 → 1.3.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 +4041 -2995
- package/.medusa/server/src/admin/index.mjs +4043 -2997
- package/.medusa/server/src/api/admin/ai-translations/apply/route.d.ts +11 -0
- package/.medusa/server/src/api/admin/ai-translations/apply/route.js +102 -0
- package/.medusa/server/src/api/admin/ai-translations/preview/route.d.ts +10 -0
- package/.medusa/server/src/api/admin/ai-translations/preview/route.js +141 -0
- package/.medusa/server/src/api/admin/ai-translations/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/ai-translations/route.js +19 -0
- package/.medusa/server/src/api/admin/email/preview/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/email/preview/route.js +20 -0
- package/.medusa/server/src/api/admin/email/templates/[id]/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/email/templates/[id]/route.js +25 -0
- package/.medusa/server/src/api/admin/email/templates/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/email/templates/route.js +40 -0
- package/.medusa/server/src/api/admin/email/test-send/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/email/test-send/route.js +64 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/cancel/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/cancel/route.js +15 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/route.js +39 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/send/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/send/route.js +14 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/stats/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/stats/route.js +17 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/test-send/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/test-send/route.js +23 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/newsletter/campaigns/route.js +40 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/export/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/export/route.js +74 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/newsletter/subscribers/route.js +57 -0
- package/.medusa/server/src/api/admin/product-reviews/[id]/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +40 -0
- package/.medusa/server/src/api/admin/product-reviews/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/product-reviews/route.js +31 -0
- package/.medusa/server/src/api/hooks/email/status/route.d.ts +2 -0
- package/.medusa/server/src/api/hooks/email/status/route.js +69 -0
- package/.medusa/server/src/api/middlewares.js +9 -1
- package/.medusa/server/src/api/store/account/wishlist/[productId]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/account/wishlist/[productId]/route.js +18 -0
- package/.medusa/server/src/api/store/account/wishlist/merge/route.d.ts +6 -0
- package/.medusa/server/src/api/store/account/wishlist/merge/route.js +51 -0
- package/.medusa/server/src/api/store/account/wishlist/route.d.ts +7 -0
- package/.medusa/server/src/api/store/account/wishlist/route.js +76 -0
- package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +4 -4
- package/.medusa/server/src/api/store/cms/entries/route.js +4 -4
- package/.medusa/server/src/api/store/email/track/click/[token]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/email/track/click/[token]/route.js +19 -0
- package/.medusa/server/src/api/store/email/track/open/[token]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/email/track/open/[token]/route.js +22 -0
- package/.medusa/server/src/api/store/leads/route.js +27 -93
- package/.medusa/server/src/api/store/newsletter/config/route.d.ts +2 -0
- package/.medusa/server/src/api/store/newsletter/config/route.js +14 -0
- package/.medusa/server/src/api/store/newsletter/confirm/route.d.ts +4 -0
- package/.medusa/server/src/api/store/newsletter/confirm/route.js +52 -0
- package/.medusa/server/src/api/store/newsletter/route.d.ts +4 -0
- package/.medusa/server/src/api/store/newsletter/route.js +89 -0
- package/.medusa/server/src/api/store/newsletter/unsubscribe/route.d.ts +4 -0
- package/.medusa/server/src/api/store/newsletter/unsubscribe/route.js +54 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +8 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.js +174 -0
- package/.medusa/server/src/api/store/quote-requests/route.js +41 -129
- package/.medusa/server/src/config.js +38 -15
- package/.medusa/server/src/core/ai-translation.d.ts +26 -0
- package/.medusa/server/src/core/ai-translation.js +173 -0
- package/.medusa/server/src/core/customer-email.d.ts +5 -5
- package/.medusa/server/src/core/customer-email.js +55 -109
- package/.medusa/server/src/core/transactional-email.d.ts +9 -8
- package/.medusa/server/src/core/transactional-email.js +74 -244
- package/.medusa/server/src/core/version.d.ts +2 -2
- package/.medusa/server/src/core/version.js +2 -2
- package/.medusa/server/src/jobs/email-campaign-dispatch.d.ts +6 -0
- package/.medusa/server/src/jobs/email-campaign-dispatch.js +18 -0
- package/.medusa/server/src/modules/cms/config.d.ts +2 -1
- package/.medusa/server/src/modules/cms/config.js +27 -12
- package/.medusa/server/src/modules/cms/content-types.d.ts +24 -0
- package/.medusa/server/src/modules/cms/content-types.js +27 -0
- package/.medusa/server/src/modules/cms/index.d.ts +1 -0
- package/.medusa/server/src/modules/cms/index.js +6 -2
- package/.medusa/server/src/modules/email-center/campaign.d.ts +8 -0
- package/.medusa/server/src/modules/email-center/campaign.js +193 -0
- package/.medusa/server/src/modules/email-center/constants.d.ts +1 -0
- package/.medusa/server/src/modules/email-center/constants.js +5 -0
- package/.medusa/server/src/modules/email-center/defaults.d.ts +10 -0
- package/.medusa/server/src/modules/email-center/defaults.js +49 -0
- package/.medusa/server/src/modules/email-center/index.d.ts +11 -0
- package/.medusa/server/src/modules/email-center/index.js +42 -0
- package/.medusa/server/src/modules/email-center/migrations/Migration20261030173000.d.ts +5 -0
- package/.medusa/server/src/modules/email-center/migrations/Migration20261030173000.js +25 -0
- package/.medusa/server/src/modules/email-center/models/email-campaign.d.ts +22 -0
- package/.medusa/server/src/modules/email-center/models/email-campaign.js +37 -0
- package/.medusa/server/src/modules/email-center/models/email-delivery.d.ts +21 -0
- package/.medusa/server/src/modules/email-center/models/email-delivery.js +38 -0
- package/.medusa/server/src/modules/email-center/models/email-template.d.ts +13 -0
- package/.medusa/server/src/modules/email-center/models/email-template.js +20 -0
- package/.medusa/server/src/modules/email-center/render.d.ts +31 -0
- package/.medusa/server/src/modules/email-center/render.js +92 -0
- package/.medusa/server/src/modules/email-center/send.d.ts +27 -0
- package/.medusa/server/src/modules/email-center/send.js +67 -0
- package/.medusa/server/src/modules/email-center/service.d.ts +56 -0
- package/.medusa/server/src/modules/email-center/service.js +13 -0
- package/.medusa/server/src/modules/email-center/tracking.d.ts +9 -0
- package/.medusa/server/src/modules/email-center/tracking.js +92 -0
- package/.medusa/server/src/modules/newsletter/config.d.ts +14 -0
- package/.medusa/server/src/modules/newsletter/config.js +51 -0
- package/.medusa/server/src/modules/newsletter/email.d.ts +9 -0
- package/.medusa/server/src/modules/newsletter/email.js +38 -0
- package/.medusa/server/src/modules/newsletter/events.d.ts +10 -0
- package/.medusa/server/src/modules/newsletter/events.js +34 -0
- package/.medusa/server/src/modules/newsletter/index.d.ts +10 -0
- package/.medusa/server/src/modules/newsletter/index.js +33 -0
- package/.medusa/server/src/modules/newsletter/migrations/Migration20261030130000.d.ts +5 -0
- package/.medusa/server/src/modules/newsletter/migrations/Migration20261030130000.js +18 -0
- package/.medusa/server/src/modules/newsletter/models/newsletter-subscriber.d.ts +21 -0
- package/.medusa/server/src/modules/newsletter/models/newsletter-subscriber.js +35 -0
- package/.medusa/server/src/modules/newsletter/service.d.ts +24 -0
- package/.medusa/server/src/modules/newsletter/service.js +11 -0
- package/.medusa/server/src/modules/newsletter/token.d.ts +10 -0
- package/.medusa/server/src/modules/newsletter/token.js +97 -0
- package/.medusa/server/src/modules/product-review/config.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/config.js +10 -0
- package/.medusa/server/src/modules/product-review/index.d.ts +7 -0
- package/.medusa/server/src/modules/product-review/index.js +18 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261030160100.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261030160100.js +18 -0
- package/.medusa/server/src/modules/product-review/models/product-review.d.ts +16 -0
- package/.medusa/server/src/modules/product-review/models/product-review.js +26 -0
- package/.medusa/server/src/modules/product-review/service.d.ts +25 -0
- package/.medusa/server/src/modules/product-review/service.js +12 -0
- package/.medusa/server/src/modules/wishlist/index.d.ts +5 -0
- package/.medusa/server/src/modules/wishlist/index.js +14 -0
- package/.medusa/server/src/modules/wishlist/migrations/Migration20261030160000.d.ts +5 -0
- package/.medusa/server/src/modules/wishlist/migrations/Migration20261030160000.js +17 -0
- package/.medusa/server/src/modules/wishlist/models/wishlist-item.d.ts +6 -0
- package/.medusa/server/src/modules/wishlist/models/wishlist-item.js +14 -0
- package/.medusa/server/src/modules/wishlist/service.d.ts +15 -0
- package/.medusa/server/src/modules/wishlist/service.js +12 -0
- package/.medusa/server/src/providers/email/index.d.ts +2 -0
- package/.medusa/server/src/providers/email/index.js +11 -0
- package/.medusa/server/src/providers/email/service.d.ts +24 -0
- package/.medusa/server/src/providers/email/service.js +117 -0
- package/.medusa/server/src/scripts/core-init.js +20 -3
- package/.medusa/server/src/scripts/verify-bootstrap.js +1 -7
- package/.medusa/server/src/subscribers/transactional-email-shipment-created.js +6 -2
- package/package.json +4 -3
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
exports.POST = POST;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const wishlist_1 = require("../../../../modules/wishlist");
|
|
7
|
+
async function GET(req, res) {
|
|
8
|
+
const customerId = requireCustomerId(req);
|
|
9
|
+
const service = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
10
|
+
const items = await service.listWishlistItems({ customer_id: customerId }, { take: 500, order: { created_at: "DESC" } });
|
|
11
|
+
return res.json(await wishlistPayload(req, items));
|
|
12
|
+
}
|
|
13
|
+
async function POST(req, res) {
|
|
14
|
+
const customerId = requireCustomerId(req);
|
|
15
|
+
const productId = text(req.body?.product_id);
|
|
16
|
+
if (!productId)
|
|
17
|
+
return res.status(400).json({ message: "A product_id megadása kötelező." });
|
|
18
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
19
|
+
const product = await query.graph({
|
|
20
|
+
entity: "product",
|
|
21
|
+
fields: ["id"],
|
|
22
|
+
filters: { id: productId },
|
|
23
|
+
pagination: { take: 1, skip: 0 },
|
|
24
|
+
});
|
|
25
|
+
if (!product.data?.length)
|
|
26
|
+
return res.status(404).json({ message: "A termék nem található." });
|
|
27
|
+
const service = req.scope.resolve(wishlist_1.WISHLIST_MODULE);
|
|
28
|
+
const [existing] = await service.listWishlistItems({ customer_id: customerId, product_id: productId }, { take: 1 });
|
|
29
|
+
if (existing) {
|
|
30
|
+
return res.status(200).json({ item: existing, already_saved: true });
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const item = await service.createWishlistItems({
|
|
34
|
+
customer_id: customerId,
|
|
35
|
+
product_id: productId,
|
|
36
|
+
});
|
|
37
|
+
return res.status(201).json({ item, already_saved: false });
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const [raced] = await service.listWishlistItems({ customer_id: customerId, product_id: productId }, { take: 1 });
|
|
41
|
+
if (raced)
|
|
42
|
+
return res.status(200).json({ item: raced, already_saved: true });
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function wishlistPayload(req, items) {
|
|
47
|
+
const productIds = items.map((item) => String(item.product_id || "")).filter(Boolean);
|
|
48
|
+
const products = productIds.length
|
|
49
|
+
? await req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY).graph({
|
|
50
|
+
entity: "product",
|
|
51
|
+
fields: ["id", "title", "handle", "thumbnail", "status"],
|
|
52
|
+
filters: { id: productIds },
|
|
53
|
+
pagination: { take: Math.min(productIds.length, 500), skip: 0 },
|
|
54
|
+
})
|
|
55
|
+
: { data: [] };
|
|
56
|
+
const byId = new Map((products.data || []).map((product) => [String(product.id), product]));
|
|
57
|
+
return {
|
|
58
|
+
items: items.map((item) => ({
|
|
59
|
+
id: item.id,
|
|
60
|
+
product_id: item.product_id,
|
|
61
|
+
created_at: item.created_at,
|
|
62
|
+
product: byId.get(String(item.product_id)) || null,
|
|
63
|
+
})),
|
|
64
|
+
count: items.length,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function requireCustomerId(req) {
|
|
68
|
+
const id = String(req.auth_context?.actor_id || "").trim();
|
|
69
|
+
if (!id)
|
|
70
|
+
throw new Error("Bejelentkezett ügyfél szükséges.");
|
|
71
|
+
return id;
|
|
72
|
+
}
|
|
73
|
+
function text(value) {
|
|
74
|
+
return typeof value === "string" ? value.trim() : "";
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2FjY291bnQvd2lzaGxpc3Qvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxrQkFTQztBQUVELG9CQXNDQztBQXpERCxxREFBcUU7QUFDckUsMkRBQW9GO0FBTzdFLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBK0IsRUFBRSxHQUFtQjtJQUM1RSxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQywwQkFBZSxDQUFvQixDQUFBO0lBQ3JFLE1BQU0sS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixDQUMzQyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQVcsRUFDcEMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBVyxDQUNiLENBQUE7SUFFMUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sZUFBZSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3BELENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXFDLEVBQUUsR0FBbUI7SUFDbkYsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDNUMsSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLENBQUMsQ0FBQTtJQUUzRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FB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
|
|
@@ -7,7 +7,7 @@ async function GET(req, res) {
|
|
|
7
7
|
const config = (0, cms_1.loadCmsConfig)();
|
|
8
8
|
if (!config.enabled)
|
|
9
9
|
return res.status(404).json({ message: "A CMS jelenleg nem elérhető." });
|
|
10
|
-
const requestLocale = queryText(req.locale || req.query?.locale)
|
|
10
|
+
const requestLocale = queryText(req.locale || req.query?.locale);
|
|
11
11
|
const contentType = queryText(req.query?.content_type);
|
|
12
12
|
const filters = {
|
|
13
13
|
slug: req.params.slug,
|
|
@@ -49,14 +49,14 @@ async function GET(req, res) {
|
|
|
49
49
|
],
|
|
50
50
|
filters,
|
|
51
51
|
pagination: { take: 20, skip: 0 },
|
|
52
|
-
}, { locale: requestLocale });
|
|
52
|
+
}, requestLocale ? { locale: requestLocale } : undefined);
|
|
53
53
|
const entry = (result.data || []).find((candidate) => (0, cms_1.isCmsEntryPublic)(candidate));
|
|
54
54
|
if (!entry)
|
|
55
55
|
return res.status(404).json({ message: "A tartalom nem található." });
|
|
56
|
-
return res.json({ entry: (0, cms_1.publicCmsEntry)(entry, requestLocale) });
|
|
56
|
+
return res.json({ entry: (0, cms_1.publicCmsEntry)(entry, requestLocale || null) });
|
|
57
57
|
}
|
|
58
58
|
function queryText(value) {
|
|
59
59
|
const raw = Array.isArray(value) ? value[0] : value;
|
|
60
60
|
return typeof raw === "string" && raw.trim() ? raw.trim() : "";
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2Ntcy9lbnRyaWVzL1tzbHVnXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxrQkFtREM7QUFuRUQscURBQXFFO0FBQ3JFLG9EQUltQztBQVc1QixLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBYSxHQUFFLENBQUE7SUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxDQUFDLENBQUE7SUFFN0YsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFFLEdBQThCLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDNUYsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDdEQsTUFBTSxPQUFPLEdBQTRCO1FBQ3ZDLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUk7UUFDckIsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztLQUNuQyxDQUFBO0lBQ0QsSUFBSSxXQUFXO1FBQUUsT0FBTyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUE7SUFFbkQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUF5QixDQUFBO0lBQ3hGLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLEVBQUUsV0FBVztRQUNuQixNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osY0FBYztZQUNkLFFBQVE7WUFDUixPQUFPO1lBQ1AsTUFBTTtZQUNOLFNBQVM7WUFDVCxNQUFNO1lBQ04sYUFBYTtZQUNiLFFBQVE7WUFDUixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLGFBQWE7WUFDYixXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLGVBQWU7WUFDZixTQUFTO1lBQ1QsY0FBYztZQUNkLGNBQWM7WUFDZCxZQUFZO1lBQ1osZUFBZTtZQUNmLFlBQVk7WUFDWixZQUFZO1lBQ1osVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osWUFBWTtZQUNaLG1CQUFtQjtTQUNwQjtRQUNELE9BQU87UUFDUCxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7S0FDbEMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUV6RCxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFBLHNCQUFnQixFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7SUFDbEYsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLENBQUMsQ0FBQTtJQUNqRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBQSxvQkFBYyxFQUFDLEtBQUssRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQzFFLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFjO0lBQy9CLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ25ELE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDaEUsQ0FBQyJ9
|
|
@@ -37,7 +37,7 @@ async function GET(req, res) {
|
|
|
37
37
|
if (!config.enabled)
|
|
38
38
|
return res.status(404).json({ message: "A CMS jelenleg nem elérhető." });
|
|
39
39
|
const queryService = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
40
|
-
const requestLocale = text(req.locale || req.query?.locale)
|
|
40
|
+
const requestLocale = text(req.locale || req.query?.locale);
|
|
41
41
|
const contentType = text(req.query?.content_type);
|
|
42
42
|
const search = text(req.query?.q);
|
|
43
43
|
const category = text(req.query?.category);
|
|
@@ -60,13 +60,13 @@ async function GET(req, res) {
|
|
|
60
60
|
skip: 0,
|
|
61
61
|
order: { published_at: "DESC", created_at: "DESC" },
|
|
62
62
|
},
|
|
63
|
-
}, { locale: requestLocale });
|
|
63
|
+
}, requestLocale ? { locale: requestLocale } : undefined);
|
|
64
64
|
const visible = (result.data || [])
|
|
65
65
|
.filter((entry) => (0, cms_1.isCmsEntryPublic)(entry))
|
|
66
66
|
.filter((entry) => !category || hasTerm(entry, "category", category))
|
|
67
67
|
.filter((entry) => !tag || hasTerm(entry, "tag", tag));
|
|
68
68
|
return res.json({
|
|
69
|
-
entries: visible.slice(offset, offset + limit).map((entry) => (0, cms_1.publicCmsEntry)(entry, requestLocale)),
|
|
69
|
+
entries: visible.slice(offset, offset + limit).map((entry) => (0, cms_1.publicCmsEntry)(entry, requestLocale || null)),
|
|
70
70
|
count: visible.length,
|
|
71
71
|
limit,
|
|
72
72
|
offset,
|
|
@@ -84,4 +84,4 @@ function clamp(value, min, max, fallback) {
|
|
|
84
84
|
const number = Number(raw);
|
|
85
85
|
return Number.isFinite(number) ? Math.max(min, Math.min(max, Math.trunc(number))) : fallback;
|
|
86
86
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2Ntcy9lbnRyaWVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0RBLGtCQXlDQztBQTFGRCxxREFBcUU7QUFDckUsaURBSWdDO0FBY2hDLE1BQU0sWUFBWSxHQUFHO0lBQ25CLElBQUk7SUFDSixjQUFjO0lBQ2QsUUFBUTtJQUNSLE9BQU87SUFDUCxNQUFNO0lBQ04sU0FBUztJQUNULE1BQU07SUFDTixhQUFhO0lBQ2IsUUFBUTtJQUNSLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLFNBQVM7SUFDVCxjQUFjO0lBQ2QsY0FBYztJQUNkLFlBQVk7SUFDWixlQUFlO0lBQ2YsWUFBWTtJQUNaLFlBQVk7SUFDWixVQUFVO0lBQ1YsZ0JBQWdCO0lBQ2hCLFlBQVk7SUFDWixZQUFZO0lBQ1osbUJBQW1CO0NBQ3BCLENBQUE7QUFFTSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxtQkFBYSxHQUFFLENBQUE7SUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxDQUFDLENBQUE7SUFFN0YsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUF5QixDQUFBO0lBQy9GLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBRSxHQUE4QixDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FB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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const email_center_1 = require("../../../../../../modules/email-center");
|
|
5
|
+
async function GET(req, res) {
|
|
6
|
+
const payload = (0, email_center_1.verifyEmailTrackingToken)(req.params.token);
|
|
7
|
+
if (!payload?.url)
|
|
8
|
+
return res.status(400).json({ message: "Érvénytelen tracking link." });
|
|
9
|
+
try {
|
|
10
|
+
const service = req.scope.resolve(email_center_1.EMAIL_CENTER_MODULE);
|
|
11
|
+
const delivery = await service.retrieveEmailDelivery(payload.delivery_id);
|
|
12
|
+
await service.updateEmailDeliveries({ id: delivery.id, status: "clicked", opened_at: delivery.opened_at || new Date(), clicked_at: delivery.clicked_at || new Date(), click_count: Number(delivery.click_count || 0) + 1 });
|
|
13
|
+
if (delivery.campaign_id)
|
|
14
|
+
await (0, email_center_1.refreshCampaignStats)(req.scope, delivery.campaign_id);
|
|
15
|
+
}
|
|
16
|
+
catch { /* A valid signed URL can still redirect if persistence is unavailable. */ }
|
|
17
|
+
return res.redirect(302, payload.url);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2VtYWlsL3RyYWNrL2NsaWNrL1t0b2tlbl0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxrQkFVQztBQVpELHlFQUFxSjtBQUU5SSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxPQUFPLEdBQUcsSUFBQSx1Q0FBd0IsRUFBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzFELElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRztRQUFFLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyxDQUFBO0lBQ3pGLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUF1QixDQUFBO1FBQzVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQW1DLENBQUE7UUFDM0csTUFBTSxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFXLENBQUMsQ0FBQTtRQUNwTyxJQUFJLFFBQVEsQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFBLG1DQUFvQixFQUFDLEdBQUcsQ0FBQyxLQUFjLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hHLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQywwRUFBMEUsQ0FBQyxDQUFDO0lBQ3RGLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZDLENBQUMifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const email_center_1 = require("../../../../../../modules/email-center");
|
|
5
|
+
const GIF = Buffer.from("R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", "base64");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
const payload = (0, email_center_1.verifyEmailTrackingToken)(req.params.token);
|
|
8
|
+
if (payload) {
|
|
9
|
+
try {
|
|
10
|
+
const service = req.scope.resolve(email_center_1.EMAIL_CENTER_MODULE);
|
|
11
|
+
const delivery = await service.retrieveEmailDelivery(payload.delivery_id);
|
|
12
|
+
await service.updateEmailDeliveries({ id: delivery.id, status: delivery.status === "clicked" ? "clicked" : "opened", opened_at: delivery.opened_at || new Date(), open_count: Number(delivery.open_count || 0) + 1 });
|
|
13
|
+
if (delivery.campaign_id)
|
|
14
|
+
await (0, email_center_1.refreshCampaignStats)(req.scope, delivery.campaign_id);
|
|
15
|
+
}
|
|
16
|
+
catch { /* Tracking must never break image delivery. */ }
|
|
17
|
+
}
|
|
18
|
+
res.setHeader("Content-Type", "image/gif");
|
|
19
|
+
res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, proxy-revalidate");
|
|
20
|
+
return res.status(200).send(GIF);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2VtYWlsL3RyYWNrL29wZW4vW3Rva2VuXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLGtCQWFDO0FBaEJELHlFQUFxSjtBQUVySixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ2xFLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHVDQUF3QixFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtDQUFtQixDQUF1QixDQUFBO1lBQzVFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQW1DLENBQUE7WUFDM0csTUFBTSxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBVyxDQUFDLENBQUE7WUFDOU4sSUFBSSxRQUFRLENBQUMsV0FBVztnQkFBRSxNQUFNLElBQUEsbUNBQW9CLEVBQUMsR0FBRyxDQUFDLEtBQWMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEcsQ0FBQztRQUFDLE1BQU0sQ0FBQyxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLHVEQUF1RCxDQUFDLENBQUE7SUFDdkYsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNsQyxDQUFDIn0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.POST = POST;
|
|
4
|
-
const utils_1 = require("@medusajs/framework/utils");
|
|
5
4
|
const core_audit_1 = require("../../../modules/core-audit");
|
|
5
|
+
const email_center_1 = require("../../../modules/email-center");
|
|
6
6
|
const lead_1 = require("../../../modules/lead");
|
|
7
7
|
async function POST(req, res) {
|
|
8
8
|
const config = (0, lead_1.loadLeadConfig)();
|
|
@@ -15,67 +15,28 @@ async function POST(req, res) {
|
|
|
15
15
|
return res.status(404).json({ message: "Ismeretlen vagy kikapcsolt űrlap." });
|
|
16
16
|
const fingerprint = (0, lead_1.clientFingerprint)(req.headers);
|
|
17
17
|
const email = optionalText(req.body.email, 240)?.toLowerCase() || null;
|
|
18
|
-
const allowed = await (0, lead_1.checkLeadRateLimit)({
|
|
19
|
-
fingerprint,
|
|
20
|
-
email,
|
|
21
|
-
max: config.rateLimitMax,
|
|
22
|
-
windowSeconds: config.rateLimitWindowSeconds,
|
|
23
|
-
});
|
|
18
|
+
const allowed = await (0, lead_1.checkLeadRateLimit)({ fingerprint, email, max: config.rateLimitMax, windowSeconds: config.rateLimitWindowSeconds });
|
|
24
19
|
if (!allowed)
|
|
25
20
|
return res.status(429).json({ message: "Túl sok beküldési kísérlet. Próbáld újra később." });
|
|
26
|
-
const spam = (0, lead_1.assessLeadSpam)({
|
|
27
|
-
honeypotValue: req.body[config.honeypotField],
|
|
28
|
-
formStartedAt: req.body.form_started_at,
|
|
29
|
-
});
|
|
30
|
-
// Honeypot hits are intentionally acknowledged but not persisted. This
|
|
31
|
-
// avoids filling the database with bot payloads and doesn't reveal the trap.
|
|
21
|
+
const spam = (0, lead_1.assessLeadSpam)({ honeypotValue: req.body[config.honeypotField], formStartedAt: req.body.form_started_at });
|
|
32
22
|
if (spam.spam)
|
|
33
23
|
return res.status(201).json({ lead: { id: null, status: "received" } });
|
|
34
24
|
if (config.turnstile.enabled) {
|
|
35
|
-
const turnstileOk = await (0, lead_1.verifyTurnstile)({
|
|
36
|
-
token: optionalText(req.body.turnstile_token, 5000),
|
|
37
|
-
secretKey: config.turnstile.secretKey,
|
|
38
|
-
});
|
|
25
|
+
const turnstileOk = await (0, lead_1.verifyTurnstile)({ token: optionalText(req.body.turnstile_token, 5000), secretKey: config.turnstile.secretKey });
|
|
39
26
|
if (!turnstileOk)
|
|
40
27
|
return res.status(400).json({ message: "A spamvédelmi ellenőrzés nem sikerült." });
|
|
41
28
|
}
|
|
42
29
|
const standard = normalizeStandardFields(req.body, form.required_standard_fields);
|
|
43
30
|
const fields = normalizeFields(req.body.fields, form.fields);
|
|
44
31
|
const consentAccepted = req.body.privacy_consent === true;
|
|
45
|
-
if (form.privacy.required && !consentAccepted)
|
|
32
|
+
if (form.privacy.required && !consentAccepted)
|
|
46
33
|
throw new Error("Az adatkezelési hozzájárulás kötelező.");
|
|
47
|
-
}
|
|
48
34
|
const service = req.scope.resolve(lead_1.LEAD_MODULE);
|
|
49
35
|
const customerId = req.auth_context?.actor_id || null;
|
|
50
|
-
const lead = await service.createLeads({
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
...standard,
|
|
54
|
-
fields,
|
|
55
|
-
source: optionalText(req.body.source, 160),
|
|
56
|
-
page_url: optionalText(req.body.page_url, 2000),
|
|
57
|
-
referrer: optionalText(req.body.referrer, 2000),
|
|
58
|
-
utm: normalizeRecord(req.body.utm, 20, 500),
|
|
59
|
-
customer_id: customerId,
|
|
60
|
-
privacy_consent_at: consentAccepted ? new Date() : null,
|
|
61
|
-
privacy_policy_version: form.privacy.version,
|
|
62
|
-
privacy_policy_url: form.privacy.url,
|
|
63
|
-
privacy_policy_label: form.privacy.label,
|
|
64
|
-
request_fingerprint: fingerprint,
|
|
65
|
-
spam_score: spam.score,
|
|
66
|
-
spam_reasons: spam.reasons,
|
|
67
|
-
});
|
|
68
|
-
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
69
|
-
action: "lead.created",
|
|
70
|
-
resourceType: "lead",
|
|
71
|
-
resourceId: lead.id,
|
|
72
|
-
integration: "lead",
|
|
73
|
-
summary: `Új lead: ${form.key}.`,
|
|
74
|
-
details: { form_key: form.key, spam_score: spam.score, spam_reasons: spam.reasons },
|
|
75
|
-
});
|
|
76
|
-
if (config.emailEnabled) {
|
|
36
|
+
const lead = await service.createLeads({ form_key: form.key, status: "new", ...standard, fields, source: optionalText(req.body.source, 160), page_url: optionalText(req.body.page_url, 2000), referrer: optionalText(req.body.referrer, 2000), utm: normalizeRecord(req.body.utm, 20, 500), customer_id: customerId, privacy_consent_at: consentAccepted ? new Date() : null, privacy_policy_version: form.privacy.version, privacy_policy_url: form.privacy.url, privacy_policy_label: form.privacy.label, request_fingerprint: fingerprint, spam_score: spam.score, spam_reasons: spam.reasons });
|
|
37
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, { action: "lead.created", resourceType: "lead", resourceId: lead.id, integration: "lead", summary: `Új lead: ${form.key}.`, details: { form_key: form.key, spam_score: spam.score, spam_reasons: spam.reasons } });
|
|
38
|
+
if (config.emailEnabled)
|
|
77
39
|
await notify(req, lead, config.adminEmails, config.customerEmailEnabled);
|
|
78
|
-
}
|
|
79
40
|
return res.status(201).json({ lead: { id: lead.id, status: "new" } });
|
|
80
41
|
}
|
|
81
42
|
catch (error) {
|
|
@@ -83,41 +44,25 @@ async function POST(req, res) {
|
|
|
83
44
|
}
|
|
84
45
|
}
|
|
85
46
|
async function notify(req, lead, adminEmails, customerEmailEnabled) {
|
|
86
|
-
let notifications;
|
|
87
|
-
try {
|
|
88
|
-
notifications = req.scope.resolve(utils_1.Modules.NOTIFICATION);
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
47
|
const brand = process.env.STORE_NAME || process.env.VITE_ADMIN_BRAND_NAME || "HSZRDM Commerce";
|
|
48
|
+
const locale = process.env.STORE_LOCALE;
|
|
49
|
+
const data = { lead_id: lead.id, form_key: lead.form_key, name: lead.name || "", email: lead.email || "", phone: lead.phone || "", company: lead.company || "", message: lead.message || "", fields: lead.fields || {}, source: lead.source || "" };
|
|
94
50
|
const tasks = [];
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
idempotency_key: `lead-created-admin-${lead.id}-${to}`,
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
51
|
+
const adminFallback = (0, lead_1.leadAdminEmail)(lead, brand);
|
|
52
|
+
const adminContent = await (0, email_center_1.resolveEmailContent)({ container: req.scope, key: "lead.created.admin", locale, data, fallback: adminFallback });
|
|
53
|
+
if (adminContent)
|
|
54
|
+
for (const to of adminEmails)
|
|
55
|
+
tasks.push((0, email_center_1.sendManagedEmail)({ container: req.scope, to, key: "lead.created.admin", locale, content: adminContent, idempotencyKey: `lead-created-admin-${lead.id}-${to}`, resourceId: lead.id, resourceType: "lead", track: false }));
|
|
103
56
|
if (customerEmailEnabled && lead.email) {
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
idempotency_key: `lead-created-customer-${lead.id}`,
|
|
109
|
-
}));
|
|
57
|
+
const customerFallback = (0, lead_1.leadCustomerEmail)(lead, brand);
|
|
58
|
+
const customerContent = await (0, email_center_1.resolveEmailContent)({ container: req.scope, key: "lead.created", locale, data, fallback: customerFallback });
|
|
59
|
+
if (customerContent)
|
|
60
|
+
tasks.push((0, email_center_1.sendManagedEmail)({ container: req.scope, to: lead.email, key: "lead.created", locale, content: customerContent, idempotencyKey: `lead-created-customer-${lead.id}`, resourceId: lead.id, resourceType: "lead", track: false }));
|
|
110
61
|
}
|
|
111
62
|
await Promise.allSettled(tasks);
|
|
112
63
|
}
|
|
113
64
|
function normalizeStandardFields(body, required) {
|
|
114
|
-
const values = {
|
|
115
|
-
name: optionalText(body.name, 240),
|
|
116
|
-
email: optionalText(body.email, 240)?.toLowerCase() || null,
|
|
117
|
-
phone: optionalText(body.phone, 80),
|
|
118
|
-
company: optionalText(body.company, 240),
|
|
119
|
-
message: optionalText(body.message, 10000),
|
|
120
|
-
};
|
|
65
|
+
const values = { name: optionalText(body.name, 240), email: optionalText(body.email, 240)?.toLowerCase() || null, phone: optionalText(body.phone, 80), company: optionalText(body.company, 240), message: optionalText(body.message, 10000) };
|
|
121
66
|
for (const key of required)
|
|
122
67
|
if (!values[key])
|
|
123
68
|
throw new Error(`${key} megadása kötelező.`);
|
|
@@ -155,22 +100,11 @@ function normalizeField(value, field) {
|
|
|
155
100
|
throw new Error(`${field.label}: érvénytelen választás.`);
|
|
156
101
|
return text;
|
|
157
102
|
}
|
|
158
|
-
function normalizeRecord(value, maxEntries, maxLength) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const result = optionalText(value, max);
|
|
165
|
-
if (!result)
|
|
166
|
-
throw new Error(`${label} megadása kötelező.`);
|
|
167
|
-
return result;
|
|
168
|
-
}
|
|
169
|
-
function optionalText(value, max) {
|
|
170
|
-
if (typeof value !== "string")
|
|
171
|
-
return null;
|
|
172
|
-
const result = value.trim();
|
|
173
|
-
return result ? result.slice(0, max) : null;
|
|
174
|
-
}
|
|
103
|
+
function normalizeRecord(value, maxEntries, maxLength) { if (!value || typeof value !== "object" || Array.isArray(value))
|
|
104
|
+
return {}; return Object.fromEntries(Object.entries(value).slice(0, maxEntries).map(([key, raw]) => [key.slice(0, 80), optionalText(raw, maxLength)])); }
|
|
105
|
+
function requiredText(value, label, max) { const result = optionalText(value, max); if (!result)
|
|
106
|
+
throw new Error(`${label} megadása kötelező.`); return result; }
|
|
107
|
+
function optionalText(value, max) { if (typeof value !== "string")
|
|
108
|
+
return null; const result = value.trim(); return result ? result.slice(0, max) : null; }
|
|
175
109
|
function isEmpty(value) { return value == null || value === "" || value === false; }
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2xlYWRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLG9CQWdGQztBQWxHRCxxREFBbUQ7QUFDbkQsNERBQTREO0FBQzVELGdEQVc4QjtBQUt2QixLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXdCLEVBQUUsR0FBbUI7SUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBYyxHQUFFLENBQUE7SUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxDQUFDLENBQUE7SUFFeEcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDN0YsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsQ0FBQTtRQUV4RixNQUFNLFdBQVcsR0FBRyxJQUFBLHdCQUFpQixFQUFDLEdBQUcsQ0FBQyxPQUFrQyxDQUFDLENBQUE7UUFDN0UsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUks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
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2xlYWRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLG9CQXFDQztBQXRERCw0REFBNEQ7QUFDNUQsZ0VBQXFGO0FBQ3JGLGdEQVc4QjtBQUl2QixLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXdCLEVBQUUsR0FBbUI7SUFDdEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBYyxHQUFFLENBQUE7SUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxDQUFDLENBQUE7SUFFeEcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDN0YsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLENBQUMsQ0FBQTtRQUV4RixNQUFNLFdBQVcsR0FBRyxJQUFBLHdCQUFpQixFQUFDLEdBQUcsQ0FBQyxPQUFrQyxDQUFDLENBQUE7UUFDN0UsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUks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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const newsletter_1 = require("../../../../modules/newsletter");
|
|
5
|
+
async function GET(_req, res) {
|
|
6
|
+
const config = (0, newsletter_1.loadNewsletterConfig)();
|
|
7
|
+
return res.json({
|
|
8
|
+
enabled: config.enabled,
|
|
9
|
+
double_opt_in: config.doubleOptIn,
|
|
10
|
+
consent_version: config.consentVersion,
|
|
11
|
+
consent_url: config.consentUrl,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ld3NsZXR0ZXIvY29uZmlnL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esa0JBUUM7QUFWRCwrREFBcUU7QUFFOUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxJQUFtQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUEsaUNBQW9CLEdBQUUsQ0FBQTtJQUNyQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDZCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDdkIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQ2pDLGVBQWUsRUFBRSxNQUFNLENBQUMsY0FBYztRQUN0QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFVBQVU7S0FDL0IsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const core_audit_1 = require("../../../../modules/core-audit");
|
|
5
|
+
const newsletter_1 = require("../../../../modules/newsletter");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
const config = (0, newsletter_1.loadNewsletterConfig)();
|
|
8
|
+
if (!config.enabled)
|
|
9
|
+
return res.status(404).json({ message: "A hírlevél jelenleg nem elérhető." });
|
|
10
|
+
try {
|
|
11
|
+
const token = requiredToken(req.body?.token);
|
|
12
|
+
const hash = (0, newsletter_1.hashNewsletterToken)(token);
|
|
13
|
+
const service = req.scope.resolve(newsletter_1.NEWSLETTER_MODULE);
|
|
14
|
+
const [subscriber] = await service.listNewsletterSubscribers({ confirmation_token_hash: hash }, { take: 1 });
|
|
15
|
+
if (!subscriber || subscriber.status !== "pending") {
|
|
16
|
+
return res.status(400).json({ message: "A megerősítő link érvénytelen vagy már felhasználták." });
|
|
17
|
+
}
|
|
18
|
+
const expiresAt = subscriber.confirmation_expires_at ? new Date(subscriber.confirmation_expires_at) : null;
|
|
19
|
+
if (expiresAt && expiresAt.getTime() < Date.now()) {
|
|
20
|
+
return res.status(400).json({ message: "A megerősítő link lejárt. Iratkozz fel újra egy új linkért." });
|
|
21
|
+
}
|
|
22
|
+
const now = new Date();
|
|
23
|
+
const updated = await service.updateNewsletterSubscribers({
|
|
24
|
+
id: subscriber.id,
|
|
25
|
+
status: "subscribed",
|
|
26
|
+
confirmed_at: now,
|
|
27
|
+
subscribed_at: now,
|
|
28
|
+
unsubscribed_at: null,
|
|
29
|
+
confirmation_token_hash: null,
|
|
30
|
+
confirmation_expires_at: null,
|
|
31
|
+
});
|
|
32
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
33
|
+
action: "newsletter.subscription.confirm",
|
|
34
|
+
resourceType: "newsletter_subscriber",
|
|
35
|
+
resourceId: updated.id,
|
|
36
|
+
integration: "newsletter",
|
|
37
|
+
summary: "Hírlevél-feliratkozás double opt-in megerősítve.",
|
|
38
|
+
details: { status: updated.status, source: updated.source, consent_version: updated.consent_version },
|
|
39
|
+
});
|
|
40
|
+
await (0, newsletter_1.emitNewsletterEvent)(req.scope, newsletter_1.NEWSLETTER_EVENTS.subscribed, updated);
|
|
41
|
+
return res.json({ subscriber: { id: updated.id, status: updated.status }, message: "A hírlevél-feliratkozás megerősítve." });
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A feliratkozás megerősítése nem sikerült." });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function requiredToken(value) {
|
|
48
|
+
if (typeof value !== "string" || !value.trim() || value.length > 500)
|
|
49
|
+
throw new Error("Érvényes megerősítő token szükséges.");
|
|
50
|
+
return value.trim();
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ld3NsZXR0ZXIvY29uZmlybS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQStDQztBQTNERCwrREFBK0Q7QUFDL0QsK0RBT3VDO0FBSWhDLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBd0IsRUFBRSxHQUFtQjtJQUN0RSxNQUFNLE1BQU0sR0FBRyxJQUFBLGlDQUFvQixHQUFFLENBQUE7SUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxDQUFDLENBQUE7SUFFbEcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBQSxnQ0FBbUIsRUFBQyxLQUFLLENBQUMsQ0FBQTtRQUN2QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyw4QkFBaUIsQ0FBc0IsQ0FBQTtRQUN6RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMseUJBQXlCLENBQzFELEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFXLEVBQzFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBVyxDQUNvQixDQUFBO1FBRTFDLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHVEQUF1RCxFQUFFLENBQUMsQ0FBQTtRQUNuRyxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzFHLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNsRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDZEQUE2RCxFQUFFLENBQUMsQ0FBQTtRQUN6RyxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUN0QixNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQztZQUN4RCxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDakIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsWUFBWSxFQUFFLEdBQUc7WUFDakIsYUFBYSxFQUFFLEdBQUc7WUFDbEIsZUFBZSxFQUFFLElBQUk7WUFDckIsdUJBQXVCLEVBQUUsSUFBSTtZQUM3Qix1QkFBdUIsRUFBRSxJQUFJO1NBQ3JCLENBQW1DLENBQUE7UUFFN0MsTUFBTSxJQUFBLDJCQUFjLEVBQUMsR0FBRyxDQUFDLEtBQWMsRUFBRTtZQUN2QyxNQUFNLEVBQUUsaUNBQWlDO1lBQ3pDLFlBQVksRUFBRSx1QkFBdUI7WUFDckMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ3RCLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLE9BQU8sRUFBRSxrREFBa0Q7WUFDM0QsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUU7U0FDdEcsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxJQUFBLGdDQUFtQixFQUFDLEdBQUcsQ0FBQyxLQUFjLEVBQUUsOEJBQWlCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRXBGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLENBQUMsQ0FBQTtJQUM5SCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMkNBQTJDLEVBQUUsQ0FBQyxDQUFBO0lBQ2hJLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsS0FBYztJQUNuQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUc7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUE7SUFDN0gsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7QUFDckIsQ0FBQyJ9
|