@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.
Files changed (124) hide show
  1. package/.medusa/server/src/admin/index.js +3546 -2338
  2. package/.medusa/server/src/admin/index.mjs +3546 -2338
  3. package/.medusa/server/src/api/admin/cms/entries/[id]/route.d.ts +6 -0
  4. package/.medusa/server/src/api/admin/cms/entries/[id]/route.js +78 -0
  5. package/.medusa/server/src/api/admin/cms/entries/route.d.ts +5 -0
  6. package/.medusa/server/src/api/admin/cms/entries/route.js +77 -0
  7. package/.medusa/server/src/api/admin/cms/taxonomy/[id]/route.d.ts +5 -0
  8. package/.medusa/server/src/api/admin/cms/taxonomy/[id]/route.js +50 -0
  9. package/.medusa/server/src/api/admin/cms/taxonomy/route.d.ts +5 -0
  10. package/.medusa/server/src/api/admin/cms/taxonomy/route.js +60 -0
  11. package/.medusa/server/src/api/admin/core/status/route.d.ts +2 -0
  12. package/.medusa/server/src/api/admin/core/status/route.js +11 -0
  13. package/.medusa/server/src/api/admin/featured-products/[id]/route.d.ts +7 -0
  14. package/.medusa/server/src/api/admin/featured-products/[id]/route.js +54 -0
  15. package/.medusa/server/src/api/admin/leads/[id]/route.d.ts +9 -0
  16. package/.medusa/server/src/api/admin/leads/[id]/route.js +64 -0
  17. package/.medusa/server/src/api/admin/leads/route.d.ts +2 -0
  18. package/.medusa/server/src/api/admin/leads/route.js +26 -0
  19. package/.medusa/server/src/api/admin/quote-requests/[id]/draft-order/route.d.ts +8 -0
  20. package/.medusa/server/src/api/admin/quote-requests/[id]/draft-order/route.js +160 -0
  21. package/.medusa/server/src/api/admin/quote-requests/[id]/order/route.d.ts +2 -0
  22. package/.medusa/server/src/api/admin/quote-requests/[id]/order/route.js +54 -0
  23. package/.medusa/server/src/api/admin/quote-requests/[id]/route.d.ts +5 -0
  24. package/.medusa/server/src/api/admin/quote-requests/[id]/route.js +80 -0
  25. package/.medusa/server/src/api/admin/quote-requests/route.d.ts +2 -0
  26. package/.medusa/server/src/api/admin/quote-requests/route.js +19 -0
  27. package/.medusa/server/src/api/middlewares.js +11 -6
  28. package/.medusa/server/src/api/store/cms/config/route.d.ts +2 -0
  29. package/.medusa/server/src/api/store/cms/config/route.js +17 -0
  30. package/.medusa/server/src/api/store/cms/entries/[slug]/route.d.ts +2 -0
  31. package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +62 -0
  32. package/.medusa/server/src/api/store/cms/entries/route.d.ts +2 -0
  33. package/.medusa/server/src/api/store/cms/entries/route.js +87 -0
  34. package/.medusa/server/src/api/store/cms/taxonomy/route.d.ts +2 -0
  35. package/.medusa/server/src/api/store/cms/taxonomy/route.js +44 -0
  36. package/.medusa/server/src/api/store/core/pricing/variants/[id]/route.d.ts +2 -0
  37. package/.medusa/server/src/api/store/core/pricing/variants/[id]/route.js +152 -0
  38. package/.medusa/server/src/api/store/featured-products/route.d.ts +2 -0
  39. package/.medusa/server/src/api/store/featured-products/route.js +38 -0
  40. package/.medusa/server/src/api/store/leads/config/route.d.ts +2 -0
  41. package/.medusa/server/src/api/store/leads/config/route.js +21 -0
  42. package/.medusa/server/src/api/store/leads/route.d.ts +4 -0
  43. package/.medusa/server/src/api/store/leads/route.js +176 -0
  44. package/.medusa/server/src/api/store/quote-requests/config/route.d.ts +2 -0
  45. package/.medusa/server/src/api/store/quote-requests/config/route.js +13 -0
  46. package/.medusa/server/src/api/store/quote-requests/route.d.ts +5 -0
  47. package/.medusa/server/src/api/store/quote-requests/route.js +214 -0
  48. package/.medusa/server/src/api/store/seo/route.js +42 -10
  49. package/.medusa/server/src/api/store/seo/structured-data/route.js +3 -2
  50. package/.medusa/server/src/config.js +7 -1
  51. package/.medusa/server/src/core/admin-analytics-dashboard.d.ts +1 -0
  52. package/.medusa/server/src/core/admin-analytics-dashboard.js +15 -3
  53. package/.medusa/server/src/core/featured-products.d.ts +19 -0
  54. package/.medusa/server/src/core/featured-products.js +45 -0
  55. package/.medusa/server/src/core/pricing-tiers.d.ts +25 -0
  56. package/.medusa/server/src/core/pricing-tiers.js +88 -0
  57. package/.medusa/server/src/core/release-info.d.ts +10 -0
  58. package/.medusa/server/src/core/release-info.js +22 -0
  59. package/.medusa/server/src/core/version.d.ts +4 -4
  60. package/.medusa/server/src/core/version.js +3 -3
  61. package/.medusa/server/src/lib/modules/arukereso/config.js +2 -2
  62. package/.medusa/server/src/lib/modules/google-merchant/config.d.ts +2 -0
  63. package/.medusa/server/src/lib/modules/google-merchant/config.js +9 -2
  64. package/.medusa/server/src/lib/modules/google-merchant/feed.d.ts +1 -0
  65. package/.medusa/server/src/lib/modules/google-merchant/feed.js +4 -2
  66. package/.medusa/server/src/localized-config.d.ts +9 -0
  67. package/.medusa/server/src/localized-config.js +14 -0
  68. package/.medusa/server/src/modules/cms/config.d.ts +10 -0
  69. package/.medusa/server/src/modules/cms/config.js +50 -0
  70. package/.medusa/server/src/modules/cms/index.d.ts +8 -0
  71. package/.medusa/server/src/modules/cms/index.js +28 -0
  72. package/.medusa/server/src/modules/cms/migrations/Migration20261029170000.d.ts +5 -0
  73. package/.medusa/server/src/modules/cms/migrations/Migration20261029170000.js +27 -0
  74. package/.medusa/server/src/modules/cms/migrations/Migration20261029190000.d.ts +5 -0
  75. package/.medusa/server/src/modules/cms/migrations/Migration20261029190000.js +52 -0
  76. package/.medusa/server/src/modules/cms/models/cms.d.ts +67 -0
  77. package/.medusa/server/src/modules/cms/models/cms.js +64 -0
  78. package/.medusa/server/src/modules/cms/service.d.ts +82 -0
  79. package/.medusa/server/src/modules/cms/service.js +9 -0
  80. package/.medusa/server/src/modules/cms/utils.d.ts +67 -0
  81. package/.medusa/server/src/modules/cms/utils.js +190 -0
  82. package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +2 -2
  83. package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +6 -2
  84. package/.medusa/server/src/modules/lead/config.d.ts +37 -0
  85. package/.medusa/server/src/modules/lead/config.js +147 -0
  86. package/.medusa/server/src/modules/lead/email.d.ts +17 -0
  87. package/.medusa/server/src/modules/lead/email.js +68 -0
  88. package/.medusa/server/src/modules/lead/index.d.ts +9 -0
  89. package/.medusa/server/src/modules/lead/index.js +27 -0
  90. package/.medusa/server/src/modules/lead/migrations/Migration20261029163000.d.ts +5 -0
  91. package/.medusa/server/src/modules/lead/migrations/Migration20261029163000.js +19 -0
  92. package/.medusa/server/src/modules/lead/models/lead.d.ts +26 -0
  93. package/.medusa/server/src/modules/lead/models/lead.js +53 -0
  94. package/.medusa/server/src/modules/lead/service.d.ts +29 -0
  95. package/.medusa/server/src/modules/lead/service.js +11 -0
  96. package/.medusa/server/src/modules/lead/spam.d.ts +24 -0
  97. package/.medusa/server/src/modules/lead/spam.js +114 -0
  98. package/.medusa/server/src/modules/quote-request/config.d.ts +14 -0
  99. package/.medusa/server/src/modules/quote-request/config.js +52 -0
  100. package/.medusa/server/src/modules/quote-request/email.d.ts +17 -0
  101. package/.medusa/server/src/modules/quote-request/email.js +133 -0
  102. package/.medusa/server/src/modules/quote-request/index.d.ts +8 -0
  103. package/.medusa/server/src/modules/quote-request/index.js +23 -0
  104. package/.medusa/server/src/modules/quote-request/migrations/Migration20261029160000.d.ts +5 -0
  105. package/.medusa/server/src/modules/quote-request/migrations/Migration20261029160000.js +20 -0
  106. package/.medusa/server/src/modules/quote-request/models/quote-request.d.ts +24 -0
  107. package/.medusa/server/src/modules/quote-request/models/quote-request.js +54 -0
  108. package/.medusa/server/src/modules/quote-request/service.d.ts +32 -0
  109. package/.medusa/server/src/modules/quote-request/service.js +12 -0
  110. package/.medusa/server/src/modules/seo/models/seo-page.js +5 -5
  111. package/.medusa/server/src/modules/seo/sitemap.js +44 -10
  112. package/.medusa/server/src/modules/seo/structured-data.d.ts +1 -1
  113. package/.medusa/server/src/modules/seo/structured-data.js +41 -25
  114. package/.medusa/server/src/modules/seo/technical.d.ts +7 -2
  115. package/.medusa/server/src/modules/seo/technical.js +45 -6
  116. package/.medusa/server/src/modules/seo/types.d.ts +2 -0
  117. package/.medusa/server/src/scripts/ensure-locales.d.ts +2 -0
  118. package/.medusa/server/src/scripts/ensure-locales.js +34 -0
  119. package/.medusa/server/src/scripts/ensure-shipping.d.ts +3 -0
  120. package/.medusa/server/src/scripts/ensure-shipping.js +211 -0
  121. package/.medusa/server/src/scripts/verify-bootstrap.js +19 -2
  122. package/.medusa/server/src/subscribers/quote-request-order-placed.d.ts +7 -0
  123. package/.medusa/server/src/subscribers/quote-request-order-placed.js +27 -0
  124. 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,2 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function GET(_req: MedusaRequest, res: MedusaResponse): void;
@@ -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,7 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ type Body = {
3
+ featured?: unknown;
4
+ order?: unknown;
5
+ };
6
+ export declare function POST(req: MedusaRequest<Body>, res: MedusaResponse): Promise<MedusaResponse>;
7
+ export {};
@@ -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,2 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function GET(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
@@ -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 {};