@hszrdm/core 1.0.3 → 1.2.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 +4375 -2368
- package/.medusa/server/src/admin/index.mjs +4376 -2369
- 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/cms/entries/[id]/route.d.ts +6 -0
- package/.medusa/server/src/api/admin/cms/entries/[id]/route.js +78 -0
- package/.medusa/server/src/api/admin/cms/entries/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/cms/entries/route.js +77 -0
- package/.medusa/server/src/api/admin/cms/taxonomy/[id]/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/cms/taxonomy/[id]/route.js +50 -0
- package/.medusa/server/src/api/admin/cms/taxonomy/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/cms/taxonomy/route.js +60 -0
- package/.medusa/server/src/api/admin/core/status/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/core/status/route.js +11 -0
- package/.medusa/server/src/api/admin/featured-products/[id]/route.d.ts +7 -0
- package/.medusa/server/src/api/admin/featured-products/[id]/route.js +54 -0
- package/.medusa/server/src/api/admin/leads/[id]/route.d.ts +9 -0
- package/.medusa/server/src/api/admin/leads/[id]/route.js +64 -0
- package/.medusa/server/src/api/admin/leads/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/leads/route.js +26 -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/admin/quote-requests/[id]/draft-order/route.d.ts +8 -0
- package/.medusa/server/src/api/admin/quote-requests/[id]/draft-order/route.js +160 -0
- package/.medusa/server/src/api/admin/quote-requests/[id]/order/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/quote-requests/[id]/order/route.js +54 -0
- package/.medusa/server/src/api/admin/quote-requests/[id]/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/quote-requests/[id]/route.js +80 -0
- package/.medusa/server/src/api/admin/quote-requests/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/quote-requests/route.js +19 -0
- package/.medusa/server/src/api/middlewares.js +19 -6
- 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/config/route.d.ts +2 -0
- package/.medusa/server/src/api/store/cms/config/route.js +17 -0
- package/.medusa/server/src/api/store/cms/entries/[slug]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +62 -0
- package/.medusa/server/src/api/store/cms/entries/route.d.ts +2 -0
- package/.medusa/server/src/api/store/cms/entries/route.js +87 -0
- package/.medusa/server/src/api/store/cms/taxonomy/route.d.ts +2 -0
- package/.medusa/server/src/api/store/cms/taxonomy/route.js +44 -0
- package/.medusa/server/src/api/store/core/pricing/variants/[id]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/core/pricing/variants/[id]/route.js +152 -0
- package/.medusa/server/src/api/store/featured-products/route.d.ts +2 -0
- package/.medusa/server/src/api/store/featured-products/route.js +38 -0
- package/.medusa/server/src/api/store/leads/config/route.d.ts +2 -0
- package/.medusa/server/src/api/store/leads/config/route.js +21 -0
- package/.medusa/server/src/api/store/leads/route.d.ts +4 -0
- package/.medusa/server/src/api/store/leads/route.js +176 -0
- 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 +172 -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/config/route.d.ts +2 -0
- package/.medusa/server/src/api/store/quote-requests/config/route.js +13 -0
- package/.medusa/server/src/api/store/quote-requests/route.d.ts +5 -0
- package/.medusa/server/src/api/store/quote-requests/route.js +214 -0
- package/.medusa/server/src/api/store/seo/route.js +42 -10
- package/.medusa/server/src/api/store/seo/structured-data/route.js +3 -2
- package/.medusa/server/src/config.js +7 -1
- package/.medusa/server/src/core/admin-analytics-dashboard.d.ts +1 -0
- package/.medusa/server/src/core/admin-analytics-dashboard.js +15 -3
- 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/featured-products.d.ts +19 -0
- package/.medusa/server/src/core/featured-products.js +45 -0
- package/.medusa/server/src/core/pricing-tiers.d.ts +25 -0
- package/.medusa/server/src/core/pricing-tiers.js +88 -0
- package/.medusa/server/src/core/release-info.d.ts +10 -0
- package/.medusa/server/src/core/release-info.js +22 -0
- package/.medusa/server/src/core/version.d.ts +4 -4
- package/.medusa/server/src/core/version.js +3 -3
- package/.medusa/server/src/lib/modules/arukereso/config.js +2 -2
- package/.medusa/server/src/lib/modules/google-merchant/config.d.ts +2 -0
- package/.medusa/server/src/lib/modules/google-merchant/config.js +9 -2
- package/.medusa/server/src/lib/modules/google-merchant/feed.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-merchant/feed.js +4 -2
- package/.medusa/server/src/localized-config.d.ts +9 -0
- package/.medusa/server/src/localized-config.js +14 -0
- package/.medusa/server/src/modules/cms/config.d.ts +11 -0
- package/.medusa/server/src/modules/cms/config.js +65 -0
- 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 +9 -0
- package/.medusa/server/src/modules/cms/index.js +32 -0
- package/.medusa/server/src/modules/cms/migrations/Migration20261029170000.d.ts +5 -0
- package/.medusa/server/src/modules/cms/migrations/Migration20261029170000.js +27 -0
- package/.medusa/server/src/modules/cms/migrations/Migration20261029190000.d.ts +5 -0
- package/.medusa/server/src/modules/cms/migrations/Migration20261029190000.js +52 -0
- package/.medusa/server/src/modules/cms/models/cms.d.ts +67 -0
- package/.medusa/server/src/modules/cms/models/cms.js +64 -0
- package/.medusa/server/src/modules/cms/service.d.ts +82 -0
- package/.medusa/server/src/modules/cms/service.js +9 -0
- package/.medusa/server/src/modules/cms/utils.d.ts +67 -0
- package/.medusa/server/src/modules/cms/utils.js +190 -0
- package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +2 -2
- package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +6 -2
- package/.medusa/server/src/modules/lead/config.d.ts +37 -0
- package/.medusa/server/src/modules/lead/config.js +147 -0
- package/.medusa/server/src/modules/lead/email.d.ts +17 -0
- package/.medusa/server/src/modules/lead/email.js +68 -0
- package/.medusa/server/src/modules/lead/index.d.ts +9 -0
- package/.medusa/server/src/modules/lead/index.js +27 -0
- package/.medusa/server/src/modules/lead/migrations/Migration20261029163000.d.ts +5 -0
- package/.medusa/server/src/modules/lead/migrations/Migration20261029163000.js +19 -0
- package/.medusa/server/src/modules/lead/models/lead.d.ts +26 -0
- package/.medusa/server/src/modules/lead/models/lead.js +53 -0
- package/.medusa/server/src/modules/lead/service.d.ts +29 -0
- package/.medusa/server/src/modules/lead/service.js +11 -0
- package/.medusa/server/src/modules/lead/spam.d.ts +24 -0
- package/.medusa/server/src/modules/lead/spam.js +114 -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/quote-request/config.d.ts +14 -0
- package/.medusa/server/src/modules/quote-request/config.js +52 -0
- package/.medusa/server/src/modules/quote-request/email.d.ts +17 -0
- package/.medusa/server/src/modules/quote-request/email.js +133 -0
- package/.medusa/server/src/modules/quote-request/index.d.ts +8 -0
- package/.medusa/server/src/modules/quote-request/index.js +23 -0
- package/.medusa/server/src/modules/quote-request/migrations/Migration20261029160000.d.ts +5 -0
- package/.medusa/server/src/modules/quote-request/migrations/Migration20261029160000.js +20 -0
- package/.medusa/server/src/modules/quote-request/models/quote-request.d.ts +24 -0
- package/.medusa/server/src/modules/quote-request/models/quote-request.js +54 -0
- package/.medusa/server/src/modules/quote-request/service.d.ts +32 -0
- package/.medusa/server/src/modules/quote-request/service.js +12 -0
- package/.medusa/server/src/modules/seo/models/seo-page.js +5 -5
- package/.medusa/server/src/modules/seo/sitemap.js +44 -10
- package/.medusa/server/src/modules/seo/structured-data.d.ts +1 -1
- package/.medusa/server/src/modules/seo/structured-data.js +41 -25
- package/.medusa/server/src/modules/seo/technical.d.ts +7 -2
- package/.medusa/server/src/modules/seo/technical.js +45 -6
- package/.medusa/server/src/modules/seo/types.d.ts +2 -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/scripts/ensure-locales.d.ts +2 -0
- package/.medusa/server/src/scripts/ensure-locales.js +34 -0
- package/.medusa/server/src/scripts/ensure-shipping.d.ts +3 -0
- package/.medusa/server/src/scripts/ensure-shipping.js +211 -0
- package/.medusa/server/src/scripts/verify-bootstrap.js +19 -2
- package/.medusa/server/src/subscribers/quote-request-order-placed.d.ts +7 -0
- package/.medusa/server/src/subscribers/quote-request-order-placed.js +27 -0
- package/package.json +3 -2
|
@@ -0,0 +1,60 @@
|
|
|
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 core_audit_1 = require("../../../../modules/core-audit");
|
|
7
|
+
const cms_1 = require("../../../../modules/cms");
|
|
8
|
+
async function GET(req, res) {
|
|
9
|
+
const filters = {};
|
|
10
|
+
const taxonomy = text(req.query?.taxonomy);
|
|
11
|
+
const queryText = text(req.query?.q);
|
|
12
|
+
const locale = text(req.query?.locale);
|
|
13
|
+
if (taxonomy)
|
|
14
|
+
filters.taxonomy = taxonomy;
|
|
15
|
+
if (queryText)
|
|
16
|
+
filters.q = queryText;
|
|
17
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
18
|
+
const result = await query.graph({
|
|
19
|
+
entity: "cms_taxonomy_term",
|
|
20
|
+
fields: ["id", "taxonomy", "name", "slug", "description", "metadata", "created_at", "updated_at"],
|
|
21
|
+
filters,
|
|
22
|
+
pagination: {
|
|
23
|
+
take: 500,
|
|
24
|
+
skip: 0,
|
|
25
|
+
order: { taxonomy: "ASC", name: "ASC" },
|
|
26
|
+
},
|
|
27
|
+
}, locale ? { locale } : undefined);
|
|
28
|
+
return res.json({ terms: result.data || [], count: (result.data || []).length });
|
|
29
|
+
}
|
|
30
|
+
async function POST(req, res) {
|
|
31
|
+
const service = req.scope.resolve(cms_1.CMS_MODULE);
|
|
32
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
33
|
+
try {
|
|
34
|
+
const input = (0, cms_1.normalizeCmsTaxonomyInput)(req.body);
|
|
35
|
+
await assertUnique(service, input.taxonomy, input.slug);
|
|
36
|
+
const term = await service.createCmsTaxonomyTerms(input);
|
|
37
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
38
|
+
action: "cms.taxonomy.create",
|
|
39
|
+
resourceType: "cms_taxonomy_term",
|
|
40
|
+
resourceId: term.id,
|
|
41
|
+
integration: "cms",
|
|
42
|
+
actorId,
|
|
43
|
+
summary: `CMS ${input.taxonomy} létrehozva: ${input.name}.`,
|
|
44
|
+
});
|
|
45
|
+
return res.status(201).json({ term });
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A taxonómia nem hozható létre." });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function assertUnique(service, taxonomy, slug) {
|
|
52
|
+
const terms = await service.listCmsTaxonomyTerms({ taxonomy, slug }, { take: 1 });
|
|
53
|
+
if (terms.length)
|
|
54
|
+
throw new Error("Ez a taxonómia slug már használatban van.");
|
|
55
|
+
}
|
|
56
|
+
function text(value) {
|
|
57
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
58
|
+
return typeof raw === "string" && raw.trim() ? raw.trim() : "";
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Ntcy90YXhvbm9teS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxrQkFxQkM7QUFFRCxvQkFtQkM7QUExREQscURBQXFFO0FBQ3JFLCtEQUErRDtBQUMvRCxpREFJZ0M7QUFVekIsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7SUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEMsSUFBSSxRQUFRO1FBQUUsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFDekMsSUFBSSxTQUFTO1FBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUE7SUFFcEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUF5QixDQUFBO0lBQ3hGLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLEVBQUUsbUJBQW1CO1FBQzNCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7UUFDakcsT0FBTztRQUNQLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxHQUFHO1lBQ1QsSUFBSSxFQUFFLENBQUM7WUFD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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const release_info_1 = require("../../../../core/release-info");
|
|
5
|
+
function GET(_req, res) {
|
|
6
|
+
res.setHeader("Cache-Control", "no-store");
|
|
7
|
+
res.json({
|
|
8
|
+
core: (0, release_info_1.getCoreReleaseInfo)(),
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvcmUvc3RhdHVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esa0JBS0M7QUFQRCxnRUFBa0U7QUFFbEUsU0FBZ0IsR0FBRyxDQUFDLElBQW1CLEVBQUUsR0FBbUI7SUFDMUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDMUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLElBQUksRUFBRSxJQUFBLGlDQUFrQixHQUFFO0tBQzNCLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
5
|
+
const core_audit_1 = require("../../../../modules/core-audit");
|
|
6
|
+
const featured_products_1 = require("../../../../core/featured-products");
|
|
7
|
+
async function POST(req, res) {
|
|
8
|
+
const id = req.params.id;
|
|
9
|
+
const actorId = req.auth_context?.actor_id;
|
|
10
|
+
if (!id) {
|
|
11
|
+
return res.status(400).json({ message: "Hiányzó termékazonosító." });
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const settings = (0, featured_products_1.normalizeFeaturedProductInput)(req.body);
|
|
15
|
+
await (0, core_flows_1.updateProductsWorkflow)(req.scope).run({
|
|
16
|
+
input: {
|
|
17
|
+
products: [
|
|
18
|
+
{
|
|
19
|
+
id,
|
|
20
|
+
metadata: (0, featured_products_1.featuredProductMetadata)(settings),
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
26
|
+
action: "catalog.product.featured.update",
|
|
27
|
+
resourceType: "product",
|
|
28
|
+
resourceId: id,
|
|
29
|
+
integration: "catalog",
|
|
30
|
+
actorId,
|
|
31
|
+
summary: settings.featured
|
|
32
|
+
? `Termék kiemelve, sorrend: ${settings.order}.`
|
|
33
|
+
: "Termék kiemelése kikapcsolva.",
|
|
34
|
+
details: settings,
|
|
35
|
+
});
|
|
36
|
+
return res.json({ id, ...settings });
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const message = error instanceof Error
|
|
40
|
+
? error.message
|
|
41
|
+
: "A kiemelt termék beállítás mentése nem sikerült.";
|
|
42
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
43
|
+
action: "catalog.product.featured.update",
|
|
44
|
+
resourceType: "product",
|
|
45
|
+
resourceId: id,
|
|
46
|
+
integration: "catalog",
|
|
47
|
+
actorId,
|
|
48
|
+
status: "error",
|
|
49
|
+
summary: message,
|
|
50
|
+
});
|
|
51
|
+
return res.status(400).json({ message });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ZlYXR1cmVkLXByb2R1Y3RzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSxvQkF5REM7QUFyRUQsNERBQW9FO0FBQ3BFLCtEQUErRDtBQUMvRCwwRUFHMkM7QUFPcEMsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBd0IsRUFDeEIsR0FBbUI7SUFFbkIsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUE7SUFDeEIsTUFBTSxPQUFPLEdBQ1gsR0FDRCxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUE7SUFFeEIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLElBQUEsaURBQTZCLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXhELE1BQU0sSUFBQSxtQ0FBc0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFDLEtBQUssRUFBRTtnQkFDTCxRQUFRLEVBQUU7b0JBQ1I7d0JBQ0UsRUFBRTt3QkFDRixRQUFRLEVBQUUsSUFBQSwyQ0FBdUIsRUFBQyxRQUFRLENBQUM7cUJBQzVDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLElBQUEsMkJBQWMsRUFBQyxHQUFHLENBQUMsS0FBYyxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxpQ0FBaUM7WUFDekMsWUFBWSxFQUFFLFNBQVM7WUFDdkIsVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsU0FBUztZQUN0QixPQUFPO1lBQ1AsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUN4QixDQUFDLENBQUMsNkJBQTZCLFFBQVEsQ0FBQyxLQUFLLEdBQUc7Z0JBQ2hELENBQUMsQ0FBQywrQkFBK0I7WUFDbkMsT0FBTyxFQUFFLFFBQVE7U0FDbEIsQ0FBQyxDQUFBO1FBRUYsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLEtBQUssWUFBWSxLQUFLO1lBQ3BDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNmLENBQUMsQ0FBQyxrREFBa0QsQ0FBQTtRQUV0RCxNQUFNLElBQUEsMkJBQWMsRUFBQyxHQUFHLENBQUMsS0FBYyxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxpQ0FBaUM7WUFDekMsWUFBWSxFQUFFLFNBQVM7WUFDdkIsVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsU0FBUztZQUN0QixPQUFPO1lBQ1AsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUE7UUFFRixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
type Body = {
|
|
3
|
+
status?: unknown;
|
|
4
|
+
admin_note?: unknown;
|
|
5
|
+
notify_customer?: unknown;
|
|
6
|
+
};
|
|
7
|
+
export declare function GET(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
8
|
+
export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
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 core_audit_1 = require("../../../../modules/core-audit");
|
|
7
|
+
const lead_1 = require("../../../../modules/lead");
|
|
8
|
+
async function GET(req, res) {
|
|
9
|
+
const service = req.scope.resolve(lead_1.LEAD_MODULE);
|
|
10
|
+
try {
|
|
11
|
+
return res.json({ lead: await service.retrieveLead(req.params.id) });
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return res.status(404).json({ message: "A lead nem található." });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function POST(req, res) {
|
|
18
|
+
const service = req.scope.resolve(lead_1.LEAD_MODULE);
|
|
19
|
+
const actorId = req.auth_context?.actor_id;
|
|
20
|
+
try {
|
|
21
|
+
const current = await service.retrieveLead(req.params.id);
|
|
22
|
+
const status = typeof req.body.status === "string" ? req.body.status : current.status;
|
|
23
|
+
if (!lead_1.LEAD_STATUSES.includes(status))
|
|
24
|
+
throw new Error("Érvénytelen lead státusz.");
|
|
25
|
+
const adminNote = typeof req.body.admin_note === "string" ? req.body.admin_note.trim().slice(0, 10000) || null : current.admin_note;
|
|
26
|
+
const updated = await service.updateLeads({ id: req.params.id, status, admin_note: adminNote });
|
|
27
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
28
|
+
action: "lead.update",
|
|
29
|
+
resourceType: "lead",
|
|
30
|
+
resourceId: req.params.id,
|
|
31
|
+
integration: "lead",
|
|
32
|
+
actorId,
|
|
33
|
+
summary: `Lead státusz: ${status}.`,
|
|
34
|
+
details: { previous_status: current.status, status },
|
|
35
|
+
});
|
|
36
|
+
if (req.body.notify_customer === true && status !== current.status && current.email && status !== "spam") {
|
|
37
|
+
await notifyCustomer(req, updated);
|
|
38
|
+
}
|
|
39
|
+
return res.json({ lead: updated });
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A lead mentése nem sikerült." });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function notifyCustomer(req, lead) {
|
|
46
|
+
const config = (0, lead_1.loadLeadConfig)();
|
|
47
|
+
if (!config.emailEnabled || !lead.email)
|
|
48
|
+
return;
|
|
49
|
+
let notifications;
|
|
50
|
+
try {
|
|
51
|
+
notifications = req.scope.resolve(utils_1.Modules.NOTIFICATION);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const brand = process.env.STORE_NAME || process.env.VITE_ADMIN_BRAND_NAME || "HSZRDM Commerce";
|
|
57
|
+
const email = (0, lead_1.leadStatusEmail)(lead, brand);
|
|
58
|
+
await notifications.createNotifications({
|
|
59
|
+
to: lead.email, channel: "email", content: email,
|
|
60
|
+
trigger_type: "lead.status.customer", resource_id: lead.id, resource_type: "lead",
|
|
61
|
+
idempotency_key: `lead-status-${lead.id}-${lead.status}`,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2xlYWRzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFjQSxrQkFJQztBQUVELG9CQTJCQztBQTlDRCxxREFBbUQ7QUFDbkQsK0RBQStEO0FBQy9ELG1EQU1pQztBQUsxQixLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsa0JBQVcsQ0FBZ0IsQ0FBQTtJQUM3RCxJQUFJLENBQUM7UUFBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUM1RSxNQUFNLENBQUM7UUFBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQTtJQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVNLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBd0IsRUFBRSxHQUFtQjtJQUN0RSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxrQkFBVyxDQUFnQixDQUFBO0lBQzdELE1BQU0sT0FBTyxHQUFJLEdBQTJELENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQTtJQUNuRyxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQW1DLENBQUE7UUFDM0YsTUFBTSxNQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxR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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const lead_1 = require("../../../modules/lead");
|
|
5
|
+
async function GET(req, res) {
|
|
6
|
+
const service = req.scope.resolve(lead_1.LEAD_MODULE);
|
|
7
|
+
const limit = clamp(req.query?.limit, 1, 100, 50);
|
|
8
|
+
const offset = clamp(req.query?.offset, 0, 1_000_000, 0);
|
|
9
|
+
const filters = {};
|
|
10
|
+
if (typeof req.query?.status === "string" && req.query.status)
|
|
11
|
+
filters.status = req.query.status;
|
|
12
|
+
if (typeof req.query?.form_key === "string" && req.query.form_key)
|
|
13
|
+
filters.form_key = req.query.form_key;
|
|
14
|
+
const [leads, count] = await service.listAndCountLeads(filters, {
|
|
15
|
+
take: limit,
|
|
16
|
+
skip: offset,
|
|
17
|
+
order: { created_at: "DESC" },
|
|
18
|
+
});
|
|
19
|
+
return res.json({ leads, count, limit, offset });
|
|
20
|
+
}
|
|
21
|
+
function clamp(value, min, max, fallback) {
|
|
22
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
23
|
+
const number = Number(raw);
|
|
24
|
+
return Number.isInteger(number) ? Math.max(min, Math.min(max, number)) : fallback;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2xlYWRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esa0JBYUM7QUFmRCxnREFBcUU7QUFFOUQsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFXLENBQWdCLENBQUE7SUFDN0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDeEQsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQTtJQUMzQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDaEcsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVE7UUFBRSxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFBO0lBQ3hHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBZ0IsRUFBRTtRQUN2RSxJQUFJLEVBQUUsS0FBSztRQUNYLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtLQUNyQixDQUFDLENBQUE7SUFDWCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ2xELENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxLQUFjLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxRQUFnQjtJQUN2RSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDMUIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7QUFDbkYsQ0FBQyJ9
|
|
@@ -0,0 +1,74 @@
|
|
|
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 service = req.scope.resolve(newsletter_1.NEWSLETTER_MODULE);
|
|
7
|
+
const filters = {};
|
|
8
|
+
const status = text(req.query?.status);
|
|
9
|
+
const source = text(req.query?.source);
|
|
10
|
+
if (status)
|
|
11
|
+
filters.status = status;
|
|
12
|
+
if (source)
|
|
13
|
+
filters.source = source;
|
|
14
|
+
const subscribers = await service.listNewsletterSubscribers(filters, {
|
|
15
|
+
take: 100_000,
|
|
16
|
+
skip: 0,
|
|
17
|
+
order: { created_at: "DESC" },
|
|
18
|
+
});
|
|
19
|
+
const header = [
|
|
20
|
+
"email",
|
|
21
|
+
"status",
|
|
22
|
+
"source",
|
|
23
|
+
"consent_at",
|
|
24
|
+
"consent_version",
|
|
25
|
+
"double_opt_in",
|
|
26
|
+
"confirmation_sent_at",
|
|
27
|
+
"confirmed_at",
|
|
28
|
+
"subscribed_at",
|
|
29
|
+
"unsubscribed_at",
|
|
30
|
+
"utm_source",
|
|
31
|
+
"utm_medium",
|
|
32
|
+
"utm_campaign",
|
|
33
|
+
"utm_term",
|
|
34
|
+
"utm_content",
|
|
35
|
+
"created_at",
|
|
36
|
+
"updated_at",
|
|
37
|
+
];
|
|
38
|
+
const rows = subscribers.map((subscriber) => {
|
|
39
|
+
const utm = subscriber.utm && typeof subscriber.utm === "object" ? subscriber.utm : {};
|
|
40
|
+
return [
|
|
41
|
+
subscriber.email,
|
|
42
|
+
subscriber.status,
|
|
43
|
+
subscriber.source,
|
|
44
|
+
subscriber.consent_at,
|
|
45
|
+
subscriber.consent_version,
|
|
46
|
+
subscriber.double_opt_in,
|
|
47
|
+
subscriber.confirmation_sent_at,
|
|
48
|
+
subscriber.confirmed_at,
|
|
49
|
+
subscriber.subscribed_at,
|
|
50
|
+
subscriber.unsubscribed_at,
|
|
51
|
+
utm.utm_source,
|
|
52
|
+
utm.utm_medium,
|
|
53
|
+
utm.utm_campaign,
|
|
54
|
+
utm.utm_term,
|
|
55
|
+
utm.utm_content,
|
|
56
|
+
subscriber.created_at,
|
|
57
|
+
subscriber.updated_at,
|
|
58
|
+
].map(csvCell).join(",");
|
|
59
|
+
});
|
|
60
|
+
const csv = `\uFEFF${[header.join(","), ...rows].join("\r\n")}\r\n`;
|
|
61
|
+
const stamp = new Date().toISOString().slice(0, 10);
|
|
62
|
+
res.setHeader("content-type", "text/csv; charset=utf-8");
|
|
63
|
+
res.setHeader("content-disposition", `attachment; filename="newsletter-subscribers-${stamp}.csv"`);
|
|
64
|
+
return res.status(200).send(csv);
|
|
65
|
+
}
|
|
66
|
+
function csvCell(value) {
|
|
67
|
+
const text = value == null ? "" : value instanceof Date ? value.toISOString() : String(value);
|
|
68
|
+
return `"${text.replace(/"/g, '""')}"`;
|
|
69
|
+
}
|
|
70
|
+
function text(value) {
|
|
71
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
72
|
+
return typeof raw === "string" ? raw.trim() : "";
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL25ld3NsZXR0ZXIvc3Vic2NyaWJlcnMvZXhwb3J0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esa0JBOERDO0FBaEVELGtFQUE2RjtBQUV0RixLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsOEJBQWlCLENBQXNCLENBQUE7SUFDekUsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQTtJQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0QyxJQUFJLE1BQU07UUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUNuQyxJQUFJLE1BQU07UUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUVuQyxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxPQUFnQixFQUFFO1FBQzVFLElBQUksRUFBRSxPQUFPO1FBQ2IsSUFBSSxFQUFFLENBQUM7UUFDUCxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO0tBQ3JCLENBQTBDLENBQUE7SUFFcEQsTUFBTSxNQUFNLEdBQUc7UUFDYixPQUFPO1FBQ1AsUUFBUTtRQUNSLFFBQVE7UUFDUixZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsY0FBYztRQUNkLGVBQWU7UUFDZixpQkFBaUI7UUFDakIsWUFBWTtRQUNaLFlBQVk7UUFDWixjQUFjO1FBQ2QsVUFBVTtRQUNWLGFB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
|
|
@@ -0,0 +1,57 @@
|
|
|
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 service = req.scope.resolve(newsletter_1.NEWSLETTER_MODULE);
|
|
7
|
+
const limit = clamp(req.query?.limit, 1, 200, 100);
|
|
8
|
+
const offset = clamp(req.query?.offset, 0, 1_000_000, 0);
|
|
9
|
+
const filters = {};
|
|
10
|
+
const status = text(req.query?.status);
|
|
11
|
+
const source = text(req.query?.source);
|
|
12
|
+
if (status)
|
|
13
|
+
filters.status = status;
|
|
14
|
+
if (source)
|
|
15
|
+
filters.source = source;
|
|
16
|
+
const [subscribers, count] = await service.listAndCountNewsletterSubscribers(filters, {
|
|
17
|
+
take: limit,
|
|
18
|
+
skip: offset,
|
|
19
|
+
order: { created_at: "DESC" },
|
|
20
|
+
});
|
|
21
|
+
return res.json({
|
|
22
|
+
subscribers: subscribers.map(publicAdminSubscriber),
|
|
23
|
+
count,
|
|
24
|
+
limit,
|
|
25
|
+
offset,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function publicAdminSubscriber(subscriber) {
|
|
29
|
+
return {
|
|
30
|
+
id: subscriber.id,
|
|
31
|
+
email: subscriber.email,
|
|
32
|
+
status: subscriber.status,
|
|
33
|
+
source: subscriber.source,
|
|
34
|
+
page_url: subscriber.page_url,
|
|
35
|
+
utm: subscriber.utm,
|
|
36
|
+
consent_at: subscriber.consent_at,
|
|
37
|
+
consent_version: subscriber.consent_version,
|
|
38
|
+
consent_url: subscriber.consent_url,
|
|
39
|
+
double_opt_in: subscriber.double_opt_in,
|
|
40
|
+
confirmation_sent_at: subscriber.confirmation_sent_at,
|
|
41
|
+
confirmed_at: subscriber.confirmed_at,
|
|
42
|
+
subscribed_at: subscriber.subscribed_at,
|
|
43
|
+
unsubscribed_at: subscriber.unsubscribed_at,
|
|
44
|
+
created_at: subscriber.created_at,
|
|
45
|
+
updated_at: subscriber.updated_at,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function text(value) {
|
|
49
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
50
|
+
return typeof raw === "string" ? raw.trim() : "";
|
|
51
|
+
}
|
|
52
|
+
function clamp(value, min, max, fallback) {
|
|
53
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
54
|
+
const number = Number(raw);
|
|
55
|
+
return Number.isInteger(number) ? Math.max(min, Math.min(max, number)) : fallback;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL25ld3NsZXR0ZXIvc3Vic2NyaWJlcnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxrQkFzQkM7QUF4QkQsK0RBQTBGO0FBRW5GLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyw4QkFBaUIsQ0FBc0IsQ0FBQTtJQUN6RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNsRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RCxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFBO0lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3RDLElBQUksTUFBTTtRQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ25DLElBQUksTUFBTTtRQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBRW5DLE1BQU0sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsaUNBQWlDLENBQUMsT0FBZ0IsRUFBRTtRQUM3RixJQUFJLEVBQUUsS0FBSztRQUNYLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtLQUNyQixDQUFDLENBQUE7SUFFWCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDZCxXQUFXLEVBQUcsV0FBcUQsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7UUFDOUYsS0FBSztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsVUFBK0I7SUFDNUQsT0FBTztRQUNMLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRTtRQUNqQixLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7UUFDdkIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNO1FBQ3pCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtRQUN6QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7UUFDN0IsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHO1FBQ25CLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWU7UUFDM0MsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO1FBQ25DLGFBQWEsRUFBRSxVQUFVLENBQUMsYUFBYTtRQUN2QyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsb0JBQW9CO1FBQ3JELFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWTtRQUNyQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWE7UUFDdkMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxlQUFlO1FBQzNDLFVBQVUsRUFBRSxVQUFVLENBQUMsVUFBVTtRQUNqQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVU7S0FDbEMsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFjO0lBQzFCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ25ELE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQUMsS0FBYyxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsUUFBZ0I7SUFDdkUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDbkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0FBQ25GLENBQUMifQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
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 product_review_1 = require("../../../../modules/product-review");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
const service = req.scope.resolve(product_review_1.PRODUCT_REVIEW_MODULE);
|
|
8
|
+
const status = text(req.body?.status, 40);
|
|
9
|
+
if (!product_review_1.PRODUCT_REVIEW_STATUSES.includes(status)) {
|
|
10
|
+
return res.status(400).json({ message: "Érvénytelen értékelés státusz." });
|
|
11
|
+
}
|
|
12
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
13
|
+
try {
|
|
14
|
+
const review = await service.retrieveProductReview(req.params.id);
|
|
15
|
+
const updated = await service.updateProductReviews({
|
|
16
|
+
id: review.id,
|
|
17
|
+
status,
|
|
18
|
+
moderation_note: text(req.body?.moderation_note, 2000) || null,
|
|
19
|
+
moderated_at: new Date(),
|
|
20
|
+
moderated_by: actorId,
|
|
21
|
+
});
|
|
22
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
23
|
+
action: `product_review.${status}`,
|
|
24
|
+
resourceType: "product_review",
|
|
25
|
+
resourceId: review.id,
|
|
26
|
+
integration: "product-review",
|
|
27
|
+
actorId,
|
|
28
|
+
summary: `Termékértékelés moderálva: ${status}.`,
|
|
29
|
+
details: { product_id: review.product_id, customer_id: review.customer_id, status },
|
|
30
|
+
});
|
|
31
|
+
return res.json({ review: updated });
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "Az értékelés nem moderálható." });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function text(value, max) {
|
|
38
|
+
return typeof value === "string" ? value.trim().slice(0, max) : "";
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Byb2R1Y3QtcmV2aWV3cy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsb0JBZ0NDO0FBekNELCtEQUErRDtBQUMvRCx1RUFJMkM7QUFJcEMsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUF3QixFQUFFLEdBQW1CO0lBQ3RFLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUF5QixDQUFBO0lBQ2hGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN6QyxJQUFJLENBQUUsd0NBQTZDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFJLEdBQTJELENBQUMsWUFBWSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUE7SUFDM0csSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQW1DLENBQUE7UUFDbkcsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsb0JBQW9CLENBQUM7WUFDakQsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ2IsTUFBTTtZQUNOLGVBQWUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSTtZQUM5RCxZQUFZLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDeEIsWUFBWSxFQUFFLE9BQU87U0FDYixDQUFtQyxDQUFBO1FBRTdDLE1BQU0sSUFBQSwyQkFBYyxFQUFDLEdBQUcsQ0FBQyxLQUFjLEVBQUU7WUFDdkMsTUFBTSxFQUFFLGtCQUFrQixNQUFNLEVBQUU7WUFDbEMsWUFBWSxFQUFFLGdCQUFnQjtZQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDckIsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixPQUFPO1lBQ1AsT0FBTyxFQUFFLDhCQUE4QixNQUFNLEdBQUc7WUFDaEQsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO1NBQ3BGLENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUE7SUFDcEgsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFjLEVBQUUsR0FBVztJQUN2QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUNwRSxDQUFDIn0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const product_review_1 = require("../../../modules/product-review");
|
|
5
|
+
async function GET(req, res) {
|
|
6
|
+
const limit = clamp(req.query?.limit, 1, 200, 50);
|
|
7
|
+
const offset = clamp(req.query?.offset, 0, 100_000, 0);
|
|
8
|
+
const filters = {};
|
|
9
|
+
const status = text(req.query?.status);
|
|
10
|
+
const productId = text(req.query?.product_id);
|
|
11
|
+
const customerId = text(req.query?.customer_id);
|
|
12
|
+
if (status && product_review_1.PRODUCT_REVIEW_STATUSES.includes(status))
|
|
13
|
+
filters.status = status;
|
|
14
|
+
if (productId)
|
|
15
|
+
filters.product_id = productId;
|
|
16
|
+
if (customerId)
|
|
17
|
+
filters.customer_id = customerId;
|
|
18
|
+
const service = req.scope.resolve(product_review_1.PRODUCT_REVIEW_MODULE);
|
|
19
|
+
const [reviews, count] = await service.listAndCountProductReviews(filters, { take: limit, skip: offset, order: { created_at: "DESC" } });
|
|
20
|
+
return res.json({ reviews, count, limit, offset });
|
|
21
|
+
}
|
|
22
|
+
function text(value) {
|
|
23
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
24
|
+
return typeof raw === "string" ? raw.trim() : "";
|
|
25
|
+
}
|
|
26
|
+
function clamp(value, min, max, fallback) {
|
|
27
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
28
|
+
const number = Number(raw);
|
|
29
|
+
return Number.isFinite(number) ? Math.max(min, Math.min(max, Math.trunc(number))) : fallback;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Byb2R1Y3QtcmV2aWV3cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLGtCQWtCQztBQXhCRCxvRUFJd0M7QUFFakMsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3RELE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7SUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0MsSUFBSSxNQUFNLElBQUssd0NBQTZDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RHLElBQUksU0FBUztRQUFFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBQzdDLElBQUksVUFBVTtRQUFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFBO0lBRWhELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNDQUFxQixDQUF5QixDQUFBO0lBQ2hGLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsMEJBQTBCLENBQy9ELE9BQWdCLEVBQ2hCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBVyxDQUNuQixDQUFBO0lBRXBELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDcEQsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEtBQWM7SUFDMUIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFDbkQsT0FBTyxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQ2xELENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxLQUFjLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxRQUFnQjtJQUN2RSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUNuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDMUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0FBQzlGLENBQUMifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
type Body = {
|
|
3
|
+
region_id?: string;
|
|
4
|
+
sales_channel_id?: string;
|
|
5
|
+
currency_code?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
|
|
8
|
+
export {};
|