@hszrdm/core 1.0.2 → 1.1.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 +3546 -2338
- package/.medusa/server/src/admin/index.mjs +3546 -2338
- 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/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 +11 -6
- 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/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/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 +10 -0
- package/.medusa/server/src/modules/cms/config.js +50 -0
- package/.medusa/server/src/modules/cms/index.d.ts +8 -0
- package/.medusa/server/src/modules/cms/index.js +28 -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/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/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 +2 -2
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
type Body = Record<string, unknown>;
|
|
3
|
+
export declare function GET(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
4
|
+
export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
|
|
5
|
+
export declare function DELETE(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
exports.POST = POST;
|
|
5
|
+
exports.DELETE = DELETE;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const core_audit_1 = require("../../../../../modules/core-audit");
|
|
8
|
+
const cms_1 = require("../../../../../modules/cms");
|
|
9
|
+
async function GET(req, res) {
|
|
10
|
+
const locale = text(req.query?.locale);
|
|
11
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
12
|
+
const result = await query.graph({
|
|
13
|
+
entity: "cms_entry",
|
|
14
|
+
fields: [
|
|
15
|
+
"id", "content_type", "status", "title", "slug", "excerpt", "body", "body_format", "blocks",
|
|
16
|
+
"featured_image_url", "featured_image_alt", "author_id", "author_name", "seo_title", "seo_description",
|
|
17
|
+
"canonical_url", "noindex", "og_image_url", "published_at", "sort_order", "custom_fields", "created_at", "updated_at",
|
|
18
|
+
"terms.id", "terms.taxonomy", "terms.name", "terms.slug", "terms.description",
|
|
19
|
+
],
|
|
20
|
+
filters: { id: req.params.id },
|
|
21
|
+
}, locale ? { locale } : undefined);
|
|
22
|
+
const entry = result.data?.[0];
|
|
23
|
+
if (!entry)
|
|
24
|
+
return res.status(404).json({ message: "A tartalom nem található." });
|
|
25
|
+
return res.json({ entry });
|
|
26
|
+
}
|
|
27
|
+
async function POST(req, res) {
|
|
28
|
+
const service = req.scope.resolve(cms_1.CMS_MODULE);
|
|
29
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
30
|
+
try {
|
|
31
|
+
const current = await service.retrieveCmsEntry(req.params.id, { relations: ["terms"] });
|
|
32
|
+
const input = (0, cms_1.normalizeCmsEntryInput)(req.body, { actorId }, current);
|
|
33
|
+
await assertUnique(service, input.content_type, input.slug, req.params.id);
|
|
34
|
+
const entry = await service.updateCmsEntries({ id: req.params.id, ...input });
|
|
35
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
36
|
+
action: "cms.entry.update",
|
|
37
|
+
resourceType: "cms_entry",
|
|
38
|
+
resourceId: req.params.id,
|
|
39
|
+
integration: "cms",
|
|
40
|
+
actorId,
|
|
41
|
+
summary: `CMS tartalom módosítva: ${input.title}.`,
|
|
42
|
+
details: { content_type: input.content_type, status: input.status, slug: input.slug },
|
|
43
|
+
});
|
|
44
|
+
return res.json({ entry });
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A tartalom nem menthető." });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function DELETE(req, res) {
|
|
51
|
+
const service = req.scope.resolve(cms_1.CMS_MODULE);
|
|
52
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
53
|
+
try {
|
|
54
|
+
await service.deleteCmsEntries(req.params.id);
|
|
55
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
56
|
+
action: "cms.entry.delete",
|
|
57
|
+
resourceType: "cms_entry",
|
|
58
|
+
resourceId: req.params.id,
|
|
59
|
+
integration: "cms",
|
|
60
|
+
actorId,
|
|
61
|
+
summary: "CMS tartalom törölve.",
|
|
62
|
+
});
|
|
63
|
+
return res.status(200).json({ id: req.params.id, deleted: true });
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A tartalom nem törölhető." });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function assertUnique(service, contentType, slug, excludeId) {
|
|
70
|
+
const entries = await service.listCmsEntries({ content_type: contentType, slug }, { take: 10 });
|
|
71
|
+
if (entries.some((entry) => entry.id !== excludeId))
|
|
72
|
+
throw new Error("Ez a slug már használatban van ennél a tartalomtípusnál.");
|
|
73
|
+
}
|
|
74
|
+
function text(value) {
|
|
75
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
76
|
+
return typeof raw === "string" && raw.trim() ? raw.trim() : "";
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Ntcy9lbnRyaWVzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsa0JBZ0JDO0FBRUQsb0JBcUJDO0FBRUQsd0JBaUJDO0FBMUVELHFEQUFxRTtBQUNyRSxrRUFBa0U7QUFDbEUsb0RBSW1DO0FBVTVCLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQXlCLENBQUE7SUFDeEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQy9CLE1BQU0sRUFBRSxXQUFXO1FBQ25CLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUTtZQUMzRixvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxpQkFBaUI7WUFDdEcsZUFBZSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFlBQVk7WUFDckgsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CO1NBQzlFO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0tBQy9CLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
type Body = Record<string, unknown>;
|
|
3
|
+
export declare function GET(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
4
|
+
export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
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 limit = clamp(req.query?.limit, 1, 100, 50);
|
|
10
|
+
const offset = clamp(req.query?.offset, 0, 100_000, 0);
|
|
11
|
+
const locale = text(req.query?.locale);
|
|
12
|
+
const filters = {};
|
|
13
|
+
for (const key of ["content_type", "status", "q"]) {
|
|
14
|
+
const value = text(req.query?.[key]);
|
|
15
|
+
if (value)
|
|
16
|
+
filters[key] = value;
|
|
17
|
+
}
|
|
18
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
19
|
+
const result = await query.graph({
|
|
20
|
+
entity: "cms_entry",
|
|
21
|
+
fields: [
|
|
22
|
+
"id", "content_type", "status", "title", "slug", "excerpt", "body", "body_format", "blocks",
|
|
23
|
+
"featured_image_url", "featured_image_alt", "author_id", "author_name", "seo_title", "seo_description",
|
|
24
|
+
"canonical_url", "noindex", "og_image_url", "published_at", "sort_order", "custom_fields", "created_at", "updated_at",
|
|
25
|
+
"terms.id", "terms.taxonomy", "terms.name", "terms.slug", "terms.description",
|
|
26
|
+
],
|
|
27
|
+
filters,
|
|
28
|
+
pagination: {
|
|
29
|
+
take: limit,
|
|
30
|
+
skip: offset,
|
|
31
|
+
order: { updated_at: "DESC" },
|
|
32
|
+
},
|
|
33
|
+
}, locale ? { locale } : undefined);
|
|
34
|
+
return res.json({
|
|
35
|
+
entries: result.data || [],
|
|
36
|
+
count: result.metadata?.count ?? (result.data || []).length,
|
|
37
|
+
limit,
|
|
38
|
+
offset,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async function POST(req, res) {
|
|
42
|
+
const service = req.scope.resolve(cms_1.CMS_MODULE);
|
|
43
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
44
|
+
try {
|
|
45
|
+
const input = (0, cms_1.normalizeCmsEntryInput)(req.body, { actorId });
|
|
46
|
+
await assertUnique(service, input.content_type, input.slug);
|
|
47
|
+
const entry = await service.createCmsEntries(input);
|
|
48
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
49
|
+
action: "cms.entry.create",
|
|
50
|
+
resourceType: "cms_entry",
|
|
51
|
+
resourceId: entry.id,
|
|
52
|
+
integration: "cms",
|
|
53
|
+
actorId,
|
|
54
|
+
summary: `CMS tartalom létrehozva: ${input.title}.`,
|
|
55
|
+
details: { content_type: input.content_type, status: input.status, slug: input.slug },
|
|
56
|
+
});
|
|
57
|
+
return res.status(201).json({ entry });
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A tartalom nem hozható létre." });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async function assertUnique(service, contentType, slug) {
|
|
64
|
+
const entries = await service.listCmsEntries({ content_type: contentType, slug }, { take: 1 });
|
|
65
|
+
if (entries.length)
|
|
66
|
+
throw new Error("Ez a slug már használatban van ennél a tartalomtípusnál.");
|
|
67
|
+
}
|
|
68
|
+
function text(value) {
|
|
69
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
70
|
+
return typeof raw === "string" && raw.trim() ? raw.trim() : "";
|
|
71
|
+
}
|
|
72
|
+
function clamp(value, min, max, fallback) {
|
|
73
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
74
|
+
const number = Number(raw);
|
|
75
|
+
return Number.isFinite(number) ? Math.max(min, Math.min(max, Math.trunc(number))) : fallback;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Ntcy9lbnRyaWVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBLGtCQWlDQztBQUVELG9CQW9CQztBQTFFRCxxREFBcUU7QUFDckUsK0RBQStEO0FBQy9ELGlEQUlnQztBQWF6QixLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDdEMsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQTtJQUMzQyxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQVUsRUFBRSxDQUFDO1FBQzNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNwQyxJQUFJLEtBQUs7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO0lBQ2pDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQXlCLENBQUE7SUFDeEYsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQy9CLE1BQU0sRUFBRSxXQUFXO1FB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
type Body = Record<string, unknown>;
|
|
3
|
+
export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
|
|
4
|
+
export declare function DELETE(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
exports.DELETE = DELETE;
|
|
5
|
+
const core_audit_1 = require("../../../../../modules/core-audit");
|
|
6
|
+
const cms_1 = require("../../../../../modules/cms");
|
|
7
|
+
async function POST(req, res) {
|
|
8
|
+
const service = req.scope.resolve(cms_1.CMS_MODULE);
|
|
9
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
10
|
+
try {
|
|
11
|
+
const current = await service.retrieveCmsTaxonomyTerm(req.params.id);
|
|
12
|
+
const input = (0, cms_1.normalizeCmsTaxonomyInput)(req.body, current);
|
|
13
|
+
const terms = await service.listCmsTaxonomyTerms({ taxonomy: input.taxonomy, slug: input.slug }, { take: 10 });
|
|
14
|
+
if (terms.some((term) => term.id !== req.params.id))
|
|
15
|
+
throw new Error("Ez a taxonómia slug már használatban van.");
|
|
16
|
+
const term = await service.updateCmsTaxonomyTerms({ id: req.params.id, ...input });
|
|
17
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
18
|
+
action: "cms.taxonomy.update",
|
|
19
|
+
resourceType: "cms_taxonomy_term",
|
|
20
|
+
resourceId: req.params.id,
|
|
21
|
+
integration: "cms",
|
|
22
|
+
actorId,
|
|
23
|
+
summary: `CMS ${input.taxonomy} módosítva: ${input.name}.`,
|
|
24
|
+
});
|
|
25
|
+
return res.json({ term });
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A taxonómia nem menthető." });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async function DELETE(req, res) {
|
|
32
|
+
const service = req.scope.resolve(cms_1.CMS_MODULE);
|
|
33
|
+
const actorId = req.auth_context?.actor_id || null;
|
|
34
|
+
try {
|
|
35
|
+
await service.deleteCmsTaxonomyTerms(req.params.id);
|
|
36
|
+
await (0, core_audit_1.writeCoreAudit)(req.scope, {
|
|
37
|
+
action: "cms.taxonomy.delete",
|
|
38
|
+
resourceType: "cms_taxonomy_term",
|
|
39
|
+
resourceId: req.params.id,
|
|
40
|
+
integration: "cms",
|
|
41
|
+
actorId,
|
|
42
|
+
summary: "CMS taxonómia törölve.",
|
|
43
|
+
});
|
|
44
|
+
return res.json({ id: req.params.id, deleted: true });
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
return res.status(400).json({ message: error instanceof Error ? error.message : "A taxonómia nem törölhető." });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Ntcy90YXhvbm9teS9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsb0JBcUJDO0FBRUQsd0JBaUJDO0FBakRELGtFQUFrRTtBQUNsRSxvREFJbUM7QUFJNUIsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUF3QixFQUFFLEdBQW1CO0lBQ3RFLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQWUsQ0FBQTtJQUMzRCxNQUFNLE9BQU8sR0FBSSxHQUEyRCxDQUFDLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxDQUFBO0lBQzNHLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDcEUsTUFBTSxLQUFLLEdBQUcsSUFBQSwrQkFBeUIsRUFBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQXlDLENBQUMsQ0FBQTtRQUM1RixNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFXLENBQXFDLENBQUE7UUFDcEssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1FBQ2pILE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBTyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFXLENBQUMsQ0FBQTtRQUMzRixNQUFNLElBQUEsMkJBQWMsRUFBQyxHQUFHLENBQUMsS0FBYyxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxxQkFBcUI7WUFDN0IsWUFBWSxFQUFFLG1CQUFtQjtZQUNqQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLE9BQU87WUFDUCxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsUUFBUSxlQUFlLEtBQUssQ0FBQyxJQUFJLEdBQUc7U0FDM0QsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUMzQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxDQUFBO0lBQ2hILENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLE1BQU0sQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFVLENBQWUsQ0FBQTtJQUMzRCxNQUFNLE9BQU8sR0FBSSxHQUEyRCxDQUFDLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSSxDQUFBO0lBQzNHLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbkQsTUFBTSxJQUFBLDJCQUFjLEVBQUMsR0FBRyxDQUFDLEtBQWMsRUFBRTtZQUN2QyxNQUFNLEVBQUUscUJBQXFCO1lBQzdCLFlBQVksRUFBRSxtQkFBbUI7WUFDakMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixXQUFXLEVBQUUsS0FBSztZQUNsQixPQUFPO1lBQ1AsT0FBTyxFQUFFLHdCQUF3QjtTQUNsQyxDQUFDLENBQUE7UUFDRixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDRCQUE0QixFQUFFLENBQUMsQ0FBQTtJQUNqSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
|
|
2
|
+
type Body = Record<string, unknown>;
|
|
3
|
+
export declare function GET(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
|
|
4
|
+
export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
|
|
5
|
+
export {};
|
|
@@ -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,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 {};
|