@hszrdm/core 1.7.0 → 1.8.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 (183) hide show
  1. package/.medusa/server/src/admin/index.js +6223 -4784
  2. package/.medusa/server/src/admin/index.mjs +6224 -4785
  3. package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.d.ts +2 -0
  4. package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.js +26 -0
  5. package/.medusa/server/src/api/admin/billingo/advance/route.d.ts +8 -0
  6. package/.medusa/server/src/api/admin/billingo/advance/route.js +55 -0
  7. package/.medusa/server/src/api/admin/billingo/partial-credit/route.d.ts +8 -0
  8. package/.medusa/server/src/api/admin/billingo/partial-credit/route.js +69 -0
  9. package/.medusa/server/src/api/admin/documents/[id]/route.d.ts +22 -0
  10. package/.medusa/server/src/api/admin/documents/[id]/route.js +107 -0
  11. package/.medusa/server/src/api/admin/documents/route.d.ts +21 -0
  12. package/.medusa/server/src/api/admin/documents/route.js +117 -0
  13. package/.medusa/server/src/api/admin/google-ads/diagnostics/route.d.ts +2 -0
  14. package/.medusa/server/src/api/admin/google-ads/diagnostics/route.js +26 -0
  15. package/.medusa/server/src/api/admin/google-ads/oauth/start/route.d.ts +2 -0
  16. package/.medusa/server/src/api/admin/google-ads/oauth/start/route.js +27 -0
  17. package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.d.ts +2 -0
  18. package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.js +69 -0
  19. package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.d.ts +2 -0
  20. package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.js +26 -0
  21. package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.d.ts +2 -0
  22. package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.js +25 -0
  23. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.js +28 -28
  24. package/.medusa/server/src/api/admin/shipping/mpl/close/route.d.ts +1 -1
  25. package/.medusa/server/src/api/admin/shipping/mpl/close/route.js +48 -70
  26. package/.medusa/server/src/api/auth/google-ads/callback/route.d.ts +2 -0
  27. package/.medusa/server/src/api/auth/google-ads/callback/route.js +58 -0
  28. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.d.ts +2 -0
  29. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.js +33 -0
  30. package/.medusa/server/src/api/feeds/google-merchant.xml/route.js +5 -3
  31. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.d.ts +2 -0
  32. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.js +211 -0
  33. package/.medusa/server/src/api/hooks/simplepay/ipn/route.js +113 -23
  34. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.d.ts +2 -0
  35. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.js +113 -0
  36. package/.medusa/server/src/api/store/arukereso/backlink/route.d.ts +2 -0
  37. package/.medusa/server/src/api/store/arukereso/backlink/route.js +73 -0
  38. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.d.ts +2 -0
  39. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.js +84 -0
  40. package/.medusa/server/src/api/store/arukereso/widget/route.d.ts +2 -0
  41. package/.medusa/server/src/api/store/arukereso/widget/route.js +64 -0
  42. package/.medusa/server/src/api/store/documents/route.d.ts +2 -0
  43. package/.medusa/server/src/api/store/documents/route.js +84 -0
  44. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.d.ts +2 -0
  45. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.js +50 -0
  46. package/.medusa/server/src/config.d.ts +3 -3
  47. package/.medusa/server/src/config.js +64 -87
  48. package/.medusa/server/src/core/documents.d.ts +31 -0
  49. package/.medusa/server/src/core/documents.js +47 -0
  50. package/.medusa/server/src/core/version.d.ts +2 -2
  51. package/.medusa/server/src/core/version.js +2 -2
  52. package/.medusa/server/src/lib/modules/arukereso/index.d.ts +1 -0
  53. package/.medusa/server/src/lib/modules/arukereso/index.js +2 -1
  54. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.d.ts +19 -0
  55. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.js +100 -0
  56. package/.medusa/server/src/lib/modules/billingo/actions.js +42 -12
  57. package/.medusa/server/src/lib/modules/billingo/advance.d.ts +68 -0
  58. package/.medusa/server/src/lib/modules/billingo/advance.js +309 -0
  59. package/.medusa/server/src/lib/modules/billingo/automation.js +49 -9
  60. package/.medusa/server/src/lib/modules/billingo/client.d.ts +5 -1
  61. package/.medusa/server/src/lib/modules/billingo/client.js +12 -6
  62. package/.medusa/server/src/lib/modules/billingo/index.d.ts +2 -0
  63. package/.medusa/server/src/lib/modules/billingo/index.js +3 -1
  64. package/.medusa/server/src/lib/modules/billingo/mapper.d.ts +38 -1
  65. package/.medusa/server/src/lib/modules/billingo/mapper.js +32 -1
  66. package/.medusa/server/src/lib/modules/billingo/partial-credit.d.ts +55 -0
  67. package/.medusa/server/src/lib/modules/billingo/partial-credit.js +338 -0
  68. package/.medusa/server/src/lib/modules/billingo/types.d.ts +7 -2
  69. package/.medusa/server/src/lib/modules/google-ads/adjustments.d.ts +21 -0
  70. package/.medusa/server/src/lib/modules/google-ads/adjustments.js +146 -0
  71. package/.medusa/server/src/lib/modules/google-ads/api.d.ts +23 -0
  72. package/.medusa/server/src/lib/modules/google-ads/api.js +171 -0
  73. package/.medusa/server/src/lib/modules/google-ads/diagnostics.d.ts +47 -0
  74. package/.medusa/server/src/lib/modules/google-ads/diagnostics.js +164 -0
  75. package/.medusa/server/src/lib/modules/google-merchant/category-fields.d.ts +7 -0
  76. package/.medusa/server/src/lib/modules/google-merchant/category-fields.js +210 -0
  77. package/.medusa/server/src/lib/modules/google-merchant/data-source.d.ts +17 -0
  78. package/.medusa/server/src/lib/modules/google-merchant/data-source.js +132 -0
  79. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.d.ts +33 -0
  80. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.js +113 -0
  81. package/.medusa/server/src/lib/modules/google-merchant/index.d.ts +5 -0
  82. package/.medusa/server/src/lib/modules/google-merchant/index.js +6 -1
  83. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.d.ts +18 -0
  84. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.js +120 -0
  85. package/.medusa/server/src/lib/modules/google-merchant/shipping.d.ts +13 -0
  86. package/.medusa/server/src/lib/modules/google-merchant/shipping.js +97 -0
  87. package/.medusa/server/src/lib/modules/google-tag-manager/api.d.ts +1 -0
  88. package/.medusa/server/src/lib/modules/google-tag-manager/api.js +3 -0
  89. package/.medusa/server/src/lib/modules/google-tag-manager/index.d.ts +1 -0
  90. package/.medusa/server/src/lib/modules/google-tag-manager/index.js +3 -0
  91. package/.medusa/server/src/lib/modules/google-tag-manager/sync.d.ts +1 -0
  92. package/.medusa/server/src/lib/modules/google-tag-manager/sync.js +3 -0
  93. package/.medusa/server/src/lib/modules/shipping/actions.js +163 -352
  94. package/.medusa/server/src/lib/modules/shipping/durable-create.d.ts +2 -1
  95. package/.medusa/server/src/lib/modules/shipping/durable-create.js +33 -5
  96. package/.medusa/server/src/lib/modules/shipping/idempotency.js +4 -2
  97. package/.medusa/server/src/lib/modules/shipping/types.d.ts +1 -1
  98. package/.medusa/server/src/modules/core-documents/index.d.ts +38 -0
  99. package/.medusa/server/src/modules/core-documents/index.js +18 -0
  100. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.d.ts +5 -0
  101. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.js +22 -0
  102. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.d.ts +9 -0
  103. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.js +18 -0
  104. package/.medusa/server/src/modules/core-documents/models/core-document.d.ts +18 -0
  105. package/.medusa/server/src/modules/core-documents/models/core-document.js +27 -0
  106. package/.medusa/server/src/modules/core-documents/service.d.ts +38 -0
  107. package/.medusa/server/src/modules/core-documents/service.js +13 -0
  108. package/.medusa/server/src/modules/integration-operation/state.d.ts +1 -0
  109. package/.medusa/server/src/modules/integration-operation/state.js +11 -50
  110. package/.medusa/server/src/modules/integration-operation/types.d.ts +1 -1
  111. package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +19 -2
  112. package/.medusa/server/src/modules/integration-settings/connection-test.js +14 -1
  113. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.d.ts +2 -0
  114. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.js +49 -0
  115. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.d.ts +1 -0
  116. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.js +35 -0
  117. package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +23 -2
  118. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.d.ts +1 -0
  119. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.js +23 -0
  120. package/.medusa/server/src/modules/integration-settings/index.d.ts +4 -0
  121. package/.medusa/server/src/modules/integration-settings/index.js +5 -1
  122. package/.medusa/server/src/modules/integration-settings/manager.js +38 -4
  123. package/.medusa/server/src/modules/integration-settings/reloadable.d.ts +10 -0
  124. package/.medusa/server/src/modules/integration-settings/reloadable.js +58 -0
  125. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.d.ts +9 -0
  126. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.js +48 -3
  127. package/.medusa/server/src/modules/integration-settings/simplepay-registration.d.ts +1 -0
  128. package/.medusa/server/src/modules/integration-settings/simplepay-registration.js +18 -0
  129. package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -5
  130. package/.medusa/server/src/providers/csomagpiac/client.d.ts +25 -0
  131. package/.medusa/server/src/providers/csomagpiac/client.js +144 -0
  132. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.d.ts +45 -0
  133. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.js +221 -0
  134. package/.medusa/server/src/providers/csomagpiac/index.d.ts +7 -0
  135. package/.medusa/server/src/providers/csomagpiac/index.js +30 -0
  136. package/.medusa/server/src/providers/csomagpiac/service.d.ts +46 -0
  137. package/.medusa/server/src/providers/csomagpiac/service.js +226 -0
  138. package/.medusa/server/src/providers/csomagpiac/types.d.ts +65 -0
  139. package/.medusa/server/src/providers/csomagpiac/types.js +27 -0
  140. package/.medusa/server/src/providers/dpd/fulfillment-provider.d.ts +2 -1
  141. package/.medusa/server/src/providers/dpd/fulfillment-provider.js +83 -25
  142. package/.medusa/server/src/providers/dpd/service.js +5 -3
  143. package/.medusa/server/src/providers/email/service.d.ts +7 -6
  144. package/.medusa/server/src/providers/email/service.js +51 -25
  145. package/.medusa/server/src/providers/foxpost/foxpost-service.js +5 -9
  146. package/.medusa/server/src/providers/foxpost/fulfillment-provider.d.ts +1 -0
  147. package/.medusa/server/src/providers/foxpost/fulfillment-provider.js +76 -66
  148. package/.medusa/server/src/providers/gls/fulfillment-provider.d.ts +1 -0
  149. package/.medusa/server/src/providers/gls/fulfillment-provider.js +76 -13
  150. package/.medusa/server/src/providers/gls/gls-service.d.ts +16 -0
  151. package/.medusa/server/src/providers/gls/gls-service.js +26 -65
  152. package/.medusa/server/src/providers/gls/types.d.ts +15 -0
  153. package/.medusa/server/src/providers/mpl/fulfillment-provider.d.ts +1 -0
  154. package/.medusa/server/src/providers/mpl/fulfillment-provider.js +61 -186
  155. package/.medusa/server/src/providers/mpl/index.d.ts +2 -0
  156. package/.medusa/server/src/providers/mpl/index.js +7 -2
  157. package/.medusa/server/src/providers/mpl/service.d.ts +35 -1
  158. package/.medusa/server/src/providers/mpl/service.js +82 -370
  159. package/.medusa/server/src/providers/mpl/types.d.ts +18 -0
  160. package/.medusa/server/src/providers/mpl/types.js +1 -1
  161. package/.medusa/server/src/providers/packeta/client.d.ts +2 -1
  162. package/.medusa/server/src/providers/packeta/client.js +24 -2
  163. package/.medusa/server/src/providers/packeta/fulfillment-provider.d.ts +1 -0
  164. package/.medusa/server/src/providers/packeta/fulfillment-provider.js +73 -5
  165. package/.medusa/server/src/providers/packeta/service.d.ts +1 -0
  166. package/.medusa/server/src/providers/packeta/service.js +85 -22
  167. package/.medusa/server/src/providers/packeta/types.d.ts +26 -0
  168. package/.medusa/server/src/providers/packeta/types.js +1 -1
  169. package/.medusa/server/src/providers/resilient-stripe/index.d.ts +19 -1
  170. package/.medusa/server/src/providers/resilient-stripe/index.js +55 -3
  171. package/.medusa/server/src/providers/simplepay/config.js +11 -1
  172. package/.medusa/server/src/providers/simplepay/index.d.ts +2 -0
  173. package/.medusa/server/src/providers/simplepay/index.js +5 -3
  174. package/.medusa/server/src/providers/simplepay/runtime-service.d.ts +13 -0
  175. package/.medusa/server/src/providers/simplepay/runtime-service.js +55 -0
  176. package/.medusa/server/src/providers/simplepay/service.d.ts +2 -0
  177. package/.medusa/server/src/providers/simplepay/service.js +40 -5
  178. package/.medusa/server/src/subscribers/google-ads-order-canceled.d.ts +7 -0
  179. package/.medusa/server/src/subscribers/google-ads-order-canceled.js +50 -0
  180. package/.medusa/server/src/subscribers/google-ads-payment-refunded.d.ts +7 -0
  181. package/.medusa/server/src/subscribers/google-ads-payment-refunded.js +181 -0
  182. package/.medusa/server/src/subscribers/simplepay-paid-order-recovery.js +14 -1
  183. package/package.json +6 -2
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const integration_settings_1 = require("../../../../../modules/integration-settings");
5
+ const google_merchant_1 = require("../../../../../lib/modules/google-merchant");
6
+ async function POST(req, res) {
7
+ const actorId = req.auth_context?.actor_id;
8
+ try {
9
+ const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
10
+ const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
11
+ const env = resolved.env;
12
+ if (!resolved.enabled)
13
+ throw new Error("A Google Merchant integráció nincs bekapcsolva.");
14
+ if (env.GOOGLE_MERCHANT_API_ENABLED !== "true") {
15
+ throw new Error("A Merchant API v1 nincs bekapcsolva.");
16
+ }
17
+ if (env.GOOGLE_MERCHANT_DATA_SOURCE_ENABLED !== "true") {
18
+ throw new Error("Az automatikus Merchant data source nincs bekapcsolva.");
19
+ }
20
+ const feedUrl = String(env.GOOGLE_MERCHANT_DATA_SOURCE_FEED_URL || "").trim();
21
+ if (!feedUrl)
22
+ throw new Error("A Merchant data source publikus feed URL-je hiányzik.");
23
+ const countryCode = String(env.GOOGLE_MERCHANT_COUNTRY_CODE || "HU").trim().toUpperCase();
24
+ const contentLanguage = String(env.GOOGLE_MERCHANT_LOCALE || "hu-HU")
25
+ .trim()
26
+ .slice(0, 2)
27
+ .toLowerCase();
28
+ const displayName = String(env.GOOGLE_MERCHANT_DATA_SOURCE_NAME || "HSZRDM Commerce – Product Feed").trim();
29
+ const fetchHourRaw = String(env.GOOGLE_MERCHANT_DATA_SOURCE_FETCH_HOUR || "3").trim();
30
+ const fetchHour = Number(fetchHourRaw);
31
+ const timeZone = String(env.GOOGLE_MERCHANT_DATA_SOURCE_TIME_ZONE || "Europe/Budapest").trim();
32
+ const result = await (0, google_merchant_1.syncGoogleMerchantDataSource)({
33
+ env,
34
+ feedUrl,
35
+ displayName,
36
+ countryCode,
37
+ contentLanguage,
38
+ fetchHour,
39
+ timeZone,
40
+ });
41
+ const integration = await (0, integration_settings_1.saveIntegrationSettings)({
42
+ store,
43
+ key: "google-merchant",
44
+ enabled: resolved.enabled,
45
+ values: {
46
+ GOOGLE_MERCHANT_DATA_SOURCE_ID: result.dataSourceId,
47
+ },
48
+ actorId,
49
+ });
50
+ return res.json({
51
+ ok: true,
52
+ action: result.action,
53
+ data_source: result,
54
+ integration,
55
+ message: result.action === "created"
56
+ ? "Merchant data source létrehozva, mentve és azonnali feed lekérés elindítva."
57
+ : "Merchant data source frissítve és azonnali feed lekérés elindítva.",
58
+ });
59
+ }
60
+ catch (error) {
61
+ return res.status(400).json({
62
+ ok: false,
63
+ message: error instanceof Error
64
+ ? error.message
65
+ : "A Merchant data source szinkron nem sikerült.",
66
+ });
67
+ }
68
+ }
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2dvb2dsZS1tZXJjaGFudC9kYXRhLXNvdXJjZS9zeW5jL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esb0JBeUVDO0FBakZELHNGQUtvRDtBQUNwRCxnRkFBeUY7QUFFbEYsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sT0FBTyxHQUFJLEdBQTJELENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQTtJQUNuRyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0Isa0RBQTJCLENBQ1csQ0FBQTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDL0UsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQTtRQUV4QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUE7UUFDekYsSUFBSSxHQUFHLENBQUMsMkJBQTJCLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFBO1FBQ3pELENBQUM7UUFDRCxJQUFJLEdBQUcsQ0FBQyxtQ0FBbUMsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUE7UUFDM0UsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDN0UsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUE7UUFFdEYsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6RixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLE9BQU8sQ0FBQzthQUNsRSxJQUFJLEVBQUU7YUFDTixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNYLFdBQVcsRUFBRSxDQUFBO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FDeEIsR0FBRyxDQUFDLGdDQUFnQyxJQUFJLGdDQUFnQyxDQUN6RSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ1IsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQ0FBc0MsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNyRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUNyQixHQUFHLENBQUMscUNBQXFDLElBQUksaUJBQWlCLENBQy9ELENBQUMsSUFBSSxFQUFFLENBQUE7UUFFUixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsOENBQTRCLEVBQUM7WUFDaEQsR0FBRztZQUNILE9BQU87WUFDUCxXQUFXO1lBQ1gsV0FBVztZQUNYLGVBQWU7WUFDZixTQUFTO1lBQ1QsUUFBUTtTQUNULENBQUMsQ0FBQTtRQUVGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSw4Q0FBdUIsRUFBQztZQUNoRCxLQUFLO1lBQ0wsR0FBRyxFQUFFLGlCQUFpQjtZQUN0QixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87WUFDekIsTUFBTSxFQUFFO2dCQUNOLDhCQUE4QixFQUFFLE1BQU0sQ0FBQyxZQUFZO2FBQ3BEO1lBQ0QsT0FBTztTQUNSLENBQUMsQ0FBQTtRQUVGLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQztZQUNkLEVBQUUsRUFBRSxJQUFJO1lBQ1IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVc7WUFDWCxPQUFPLEVBQ0wsTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTO2dCQUN6QixDQUFDLENBQUMsNkVBQTZFO2dCQUMvRSxDQUFDLENBQUMsb0VBQW9FO1NBQzNFLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixFQUFFLEVBQUUsS0FBSztZQUNULE9BQU8sRUFDTCxLQUFLLFlBQVksS0FBSztnQkFDcEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUNmLENBQUMsQ0FBQywrQ0FBK0M7U0FDdEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
@@ -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 integration_settings_1 = require("../../../../modules/integration-settings");
5
+ const google_merchant_1 = require("../../../../lib/modules/google-merchant");
6
+ async function GET(req, res) {
7
+ try {
8
+ const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
9
+ const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
10
+ if (resolved.env.GOOGLE_MERCHANT_API_ENABLED !== "true") {
11
+ return res.status(409).json({
12
+ message: "A Google Merchant API kapcsolat nincs bekapcsolva.",
13
+ });
14
+ }
15
+ const diagnostics = await (0, google_merchant_1.getGoogleMerchantDiagnostics)(resolved.env);
16
+ return res.json({ diagnostics });
17
+ }
18
+ catch (error) {
19
+ return res.status(502).json({
20
+ message: error instanceof Error
21
+ ? error.message
22
+ : "A Google Merchant diagnosztika nem kérhető le.",
23
+ });
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2dvb2dsZS1tZXJjaGFudC9kaWFnbm9zdGljcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFBLGtCQXVCQztBQTlCRCxtRkFJaUQ7QUFDakQsNkVBQXNGO0FBRS9FLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0Isa0RBQTJCLENBQ1csQ0FBQTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFFL0UsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLDJCQUEyQixLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3hELE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxvREFBb0Q7YUFDOUQsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSw4Q0FBNEIsRUFBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDcEUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUNMLEtBQUssWUFBWSxLQUFLO2dCQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ2YsQ0FBQyxDQUFDLGdEQUFnRDtTQUN2RCxDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const integration_settings_1 = require("../../../../../modules/integration-settings");
5
+ const google_merchant_1 = require("../../../../../lib/modules/google-merchant");
6
+ async function POST(req, res) {
7
+ try {
8
+ const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
9
+ const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
10
+ if (!resolved.enabled || resolved.env.GOOGLE_MERCHANT_API_ENABLED !== "true") {
11
+ return res.status(400).json({ message: "A Google Merchant API nincs bekapcsolva." });
12
+ }
13
+ const actorId = req
14
+ .auth_context?.actor_id;
15
+ const state = (0, google_merchant_1.createGoogleMerchantOAuthState)({ actorId });
16
+ const authUrl = (0, google_merchant_1.buildGoogleMerchantAuthorizationUrl)(resolved.env, state);
17
+ return res.json({ auth_url: authUrl });
18
+ }
19
+ catch (error) {
20
+ return res.status(400).json({
21
+ message: error instanceof Error ? error.message : "A Google OAuth nem indítható el.",
22
+ });
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2dvb2dsZS1tZXJjaGFudC9vYXV0aC9zdGFydC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVdBLG9CQW9CQztBQTlCRCxzRkFJb0Q7QUFDcEQsZ0ZBR21EO0FBRTVDLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDN0Isa0RBQTJCLENBQ1csQ0FBQTtRQUN4QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM3RSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLENBQUMsQ0FBQTtRQUN0RixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUksR0FBMkQ7YUFDekUsWUFBWSxFQUFFLFFBQVEsQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFBLGdEQUE4QixFQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFBLHFEQUFtQyxFQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDeEUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7U0FDckYsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
@@ -4,36 +4,36 @@ exports.GET = GET;
4
4
  exports.POST = POST;
5
5
  const shipping_1 = require("../../../../../lib/modules/shipping");
6
6
  const integration_operation_1 = require("../../../../../modules/integration-operation");
7
- async function GET(req, res) {
7
+ async function GET(req, res) { const orderService = req.scope.resolve("order"); const order = await orderService.retrieveOrder(req.params.id); res.json({ operations: (0, shipping_1.shippingOperations)(order.metadata) }); }
8
+ async function POST(req, res) { try {
9
+ const action = req.body?.action;
10
+ if (!action)
11
+ return res.status(400).json({ message: "Hiányzó szállítási művelet." });
12
+ const actorId = req.auth_context?.actor_id;
8
13
  const orderService = req.scope.resolve("order");
9
- const order = await orderService.retrieveOrder(req.params.id);
10
- res.json({ operations: (0, shipping_1.shippingOperations)(order.metadata) });
11
- }
12
- async function POST(req, res) {
13
- try {
14
- const action = req.body?.action;
15
- if (!action)
16
- return res.status(400).json({ message: "Hiányzó szállítási művelet." });
17
- const actorId = req.auth_context?.actor_id;
18
- const orderService = req.scope.resolve("order");
19
- const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
20
- const result = await (0, shipping_1.executeShippingAction)({ orderService, operationStore, orderId: req.params.id, action, packageSize: req.body?.packageSize, actorId });
21
- let emailSent = false;
22
- if (action === "return" && result.returnEmail && process.env.SENDGRID_API_KEY && process.env.SENDGRID_FROM_EMAIL) {
23
- try {
24
- const notificationService = req.scope.resolve("notification");
25
- await notificationService.createNotifications({ to: result.returnEmail.to, channel: "email", content: { subject: result.returnEmail.subject, text: result.returnEmail.text, html: result.returnEmail.html }, trigger_type: "shipping.return-created", resource_id: req.params.id, resource_type: "order", idempotency_key: `shipping-return-${result.carrier}-${req.params.id}` });
26
- emailSent = true;
27
- }
28
- catch {
29
- emailSent = false;
30
- }
14
+ const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
15
+ const result = await (0, shipping_1.executeShippingAction)({ orderService, operationStore, orderId: req.params.id, action, packageSize: req.body?.packageSize, actorId });
16
+ let emailSent = false;
17
+ if (action === "return" && result.returnEmail && process.env.SENDGRID_API_KEY && process.env.SENDGRID_FROM_EMAIL) {
18
+ try {
19
+ const notificationService = req.scope.resolve("notification");
20
+ const attachment = returnAttachment(result.carrier, result.shipment, req.params.id);
21
+ await notificationService.createNotifications({ to: result.returnEmail.to, channel: "email", content: { subject: result.returnEmail.subject, text: result.returnEmail.text, html: result.returnEmail.html }, ...(attachment ? { attachments: [attachment] } : {}), trigger_type: "shipping.return-created", resource_id: req.params.id, resource_type: "order", idempotency_key: `shipping-return-${result.carrier}-${req.params.id}-${returnGeneration(result.shipment)}` });
22
+ emailSent = true;
23
+ }
24
+ catch {
25
+ emailSent = false;
31
26
  }
32
- res.json({ ...result, emailSent });
33
- }
34
- catch (error) {
35
- res.status(statusOf(error)).json({ message: error instanceof Error ? error.message : "A szállítási művelet nem sikerült." });
36
27
  }
28
+ res.json({ ...result, emailSent });
37
29
  }
30
+ catch (error) {
31
+ res.status(statusOf(error)).json({ message: error instanceof Error ? error.message : "A szállítási művelet nem sikerült." });
32
+ } }
33
+ function returnAttachment(carrier, shipment, orderId) { if (carrier !== "mpl")
34
+ return null; const raw = String(shipment.returnLabelBase64 ?? "").trim(); if (!raw)
35
+ return null; const encoded = raw.includes("base64,") ? raw.slice(raw.indexOf("base64,") + 7) : raw; const buffer = Buffer.from(encoded.replace(/\s+/g, ""), "base64"); if (buffer.length < 4 || buffer.subarray(0, 4).toString("ascii") !== "%PDF")
36
+ return null; return { content: buffer.toString("binary"), filename: `mpl-visszaru-${orderId}.pdf`, content_type: "application/pdf", disposition: "attachment" }; }
37
+ function returnGeneration(shipment) { const value = shipment.returnPacketId ?? shipment.returnPassword ?? shipment.returnParcelNumber ?? shipment.returnTrackingNumber ?? shipment.returnCode ?? shipment.packetId ?? shipment.parcelNumber ?? shipment.packageId ?? shipment.trackingNumber ?? "unassigned"; return String(value).replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 120); }
38
38
  function statusOf(error) { const status = Number(error?.status); return Number.isInteger(status) && status >= 400 && status < 600 ? status : 500; }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL3NoaXBwaW5nL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esa0JBSUM7QUFFRCxvQkFvQkM7QUFoQ0Qsa0VBQTBIO0FBQzFILHdGQUE2SDtBQUt0SCxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFvQyxDQUFBO0lBQ2xGLE1BQU0sS0FBSyxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBQSw2QkFBa0IsRUFBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQzlELENBQUM7QUFFTSxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQXdCLEVBQUUsR0FBbUI7SUFDdEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUE7UUFDL0IsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLENBQUMsQ0FBQTtRQUNwRixNQUFNLE9BQU8sR0FBSSxHQUEyRCxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUE7UUFDbkcsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFvQyxDQUFBO1FBQ2xGLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9EQUE0QixDQUFnQyxDQUFBO1FBQ3JHLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxnQ0FBcUIsRUFBQyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6SixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUE7UUFDckIsSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDakgsSUFBSSxDQUFDO2dCQUNILE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFtQyxDQUFBO2dCQUMvRixNQUFNLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixNQUFNLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2dCQUNsWCxTQUFTLEdBQUcsSUFBSSxDQUFBO1lBQ2xCLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQTtZQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxDQUFBO0lBQzlILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYyxJQUFJLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBRSxLQUE4QixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFDIn0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9baWRdL3NoaXBwaW5nL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsa0JBQXVRO0FBQ3ZRLG9CQUFpZ0Q7QUFOamdELGtFQUEwSDtBQUMxSCx3RkFBNkg7QUFJdEgsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFpQixFQUFDLEdBQWtCLElBQUUsTUFBTSxZQUFZLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFvQyxDQUFDLENBQUEsTUFBTSxLQUFLLEdBQUMsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsVUFBVSxFQUFDLElBQUEsNkJBQWtCLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUMsQ0FBQSxDQUFBLENBQUM7QUFDaFEsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUF1QixFQUFDLEdBQWtCLElBQUUsSUFBRyxDQUFDO0lBQUEsTUFBTSxNQUFNLEdBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFBQSxJQUFHLENBQUMsTUFBTTtRQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUMsNkJBQTZCLEVBQUMsQ0FBQyxDQUFDO0lBQUEsTUFBTSxPQUFPLEdBQUUsR0FBb0QsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDO0lBQUEsTUFBTSxZQUFZLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFvQyxDQUFDO0lBQUEsTUFBTSxjQUFjLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsb0RBQTRCLENBQWdDLENBQUM7SUFBQSxNQUFNLE1BQU0sR0FBQyxNQUFNLElBQUEsZ0NBQXFCLEVBQUMsRUFBQyxZQUFZLEVBQUMsY0FBYyxFQUFDLE9BQU8sRUFBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFBQSxJQUFJLFNBQVMsR0FBQyxLQUFLLENBQUM7SUFBQSxJQUFHLE1BQU0sS0FBRyxRQUFRLElBQUUsTUFBTSxDQUFDLFdBQVcsSUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUMsQ0FBQztRQUFBLElBQUcsQ0FBQztZQUFBLE1BQU0sbUJBQW1CLEdBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFtQyxDQUFDO1lBQUEsTUFBTSxVQUFVLEdBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBQyxNQUFNLENBQUMsUUFBUSxFQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFBQSxNQUFNLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLEVBQUMsRUFBRSxFQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxPQUFPLEVBQUMsT0FBTyxFQUFDLEVBQUMsT0FBTyxFQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUMsRUFBQyxHQUFHLENBQUMsVUFBVSxDQUFBLENBQUMsQ0FBQSxFQUFDLFdBQVcsRUFBQyxDQUFDLFVBQVUsQ0FBQyxFQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQyxFQUFDLFlBQVksRUFBQyx5QkFBeUIsRUFBQyxXQUFXLEVBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsYUFBYSxFQUFDLE9BQU8sRUFBQyxlQUFlLEVBQUMsbUJBQW1CLE1BQU0sQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO1lBQUEsU0FBUyxHQUFDLElBQUksQ0FBQTtRQUFBLENBQUM7UUFBQSxNQUFLLENBQUM7WUFBQSxTQUFTLEdBQUMsS0FBSyxDQUFBO1FBQUEsQ0FBQztJQUFBLENBQUM7SUFBQSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxNQUFNLEVBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQTtBQUFBLENBQUM7QUFBQSxPQUFNLEtBQUssRUFBQyxDQUFDO0lBQUEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQSxDQUFDLENBQUEsb0NBQW9DLEVBQUMsQ0FBQyxDQUFBO0FBQUEsQ0FBQyxDQUFBLENBQUM7QUFDamdELFNBQVMsZ0JBQWdCLENBQUMsT0FBYyxFQUFDLFFBQStCLEVBQUMsT0FBYyxJQUFFLElBQUcsT0FBTyxLQUFHLEtBQUs7SUFBQyxPQUFPLElBQUksQ0FBQyxDQUFBLE1BQU0sR0FBRyxHQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsaUJBQWlCLElBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQSxJQUFHLENBQUMsR0FBRztJQUFDLE9BQU8sSUFBSSxDQUFDLENBQUEsTUFBTSxPQUFPLEdBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUMsQ0FBQSxNQUFNLE1BQU0sR0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFDLEVBQUUsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUEsSUFBRyxNQUFNLENBQUMsTUFBTSxHQUFDLENBQUMsSUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUcsTUFBTTtJQUFDLE9BQU8sSUFBSSxDQUFDLENBQUEsT0FBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFDLFFBQVEsRUFBQyxnQkFBZ0IsT0FBTyxNQUFNLEVBQUMsWUFBWSxFQUFDLGlCQUFpQixFQUFDLFdBQVcsRUFBQyxZQUFZLEVBQUMsQ0FBQSxDQUFBLENBQUM7QUFDemlCLFNBQVMsZ0JBQWdCLENBQUMsUUFBK0IsSUFBRSxNQUFNLEtBQUssR0FBQyxRQUFRLENBQUMsY0FBYyxJQUFFLFFBQVEsQ0FBQyxjQUFjLElBQUUsUUFBUSxDQUFDLGtCQUFrQixJQUFFLFFBQVEsQ0FBQyxvQkFBb0IsSUFBRSxRQUFRLENBQUMsVUFBVSxJQUFFLFFBQVEsQ0FBQyxRQUFRLElBQUUsUUFBUSxDQUFDLFlBQVksSUFBRSxRQUFRLENBQUMsU0FBUyxJQUFFLFFBQVEsQ0FBQyxjQUFjLElBQUUsWUFBWSxDQUFDLENBQUEsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQSxDQUFDO0FBQ2hYLFNBQVMsUUFBUSxDQUFDLEtBQWEsSUFBRSxNQUFNLE1BQU0sR0FBQyxNQUFNLENBQUUsS0FBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBRSxNQUFNLElBQUUsR0FBRyxJQUFFLE1BQU0sR0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFBLE1BQU0sQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFBLENBQUEsQ0FBQyJ9
@@ -1,2 +1,2 @@
1
1
  import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
- export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;
@@ -1,99 +1,77 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = POST;
4
+ const node_crypto_1 = require("node:crypto");
4
5
  const utils_1 = require("@medusajs/framework/utils");
5
6
  const core_audit_1 = require("../../../../../modules/core-audit");
6
7
  const mpl_1 = require("../../../../../providers/mpl");
8
+ const durable_create_1 = require("../../../../../lib/modules/shipping/durable-create");
9
+ const integration_operation_1 = require("../../../../../modules/integration-operation");
10
+ const state_1 = require("../../../../../modules/integration-operation/state");
7
11
  async function POST(req, res) {
8
12
  const logger = req.scope.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
9
13
  const actorId = req.auth_context?.actor_id;
14
+ let durable;
15
+ let remoteResult;
10
16
  try {
11
17
  const body = (req.body ?? {});
12
18
  const orderIds = normalizeList(body.orderIds);
13
19
  const explicitTrackingNumbers = normalizeList(body.trackingNumbers);
14
20
  const tag = String(body.tag ?? "").trim() || undefined;
15
- const orderService = orderIds.length
16
- ? req.scope.resolve("order")
17
- : undefined;
18
- const orders = orderService
19
- ? await Promise.all(orderIds.map((id) => orderService.retrieveOrder(id)))
20
- : [];
21
- const closableOrders = orders.filter((order) => {
22
- const shipment = mpl_1.mplService.extractShipment(order);
23
- return Boolean(shipment?.trackingNumber && !shipment.closedAt);
24
- });
25
- const orderTrackingNumbers = closableOrders
26
- .map((order) => mpl_1.mplService.extractShipment(order)?.trackingNumber?.trim())
27
- .filter((value) => Boolean(value));
28
- const trackingNumbers = Array.from(new Set([...explicitTrackingNumbers, ...orderTrackingNumbers]));
29
- if (!trackingNumbers.length && !tag) {
30
- res.status(409).json({
31
- message: "Nincs lezárható MPL küldemény a kijelölésben.",
32
- });
33
- return;
21
+ const orderService = orderIds.length ? req.scope.resolve("order") : undefined;
22
+ const orders = orderService ? await Promise.all(orderIds.map((id) => orderService.retrieveOrder(id))) : [];
23
+ const closableOrders = orders.filter((order) => { const shipment = mpl_1.mplService.extractShipment(order); return Boolean(shipment?.trackingNumber && !shipment.closedAt); });
24
+ const orderTrackingNumbers = closableOrders.map((order) => mpl_1.mplService.extractShipment(order)?.trackingNumber?.trim()).filter((value) => Boolean(value));
25
+ const trackingNumbers = Array.from(new Set([...explicitTrackingNumbers, ...orderTrackingNumbers])).sort();
26
+ if (!trackingNumbers.length && !tag)
27
+ return res.status(409).json({ message: "Nincs lezárható MPL küldemény a kijelölésben." });
28
+ const closeKey = (0, node_crypto_1.createHash)("sha256").update(JSON.stringify({ trackingNumbers, tag: tag ?? null, checkList: body.checkList ?? true })).digest("hex");
29
+ const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
30
+ durable = await (0, state_1.acquireOperation)(operationStore, { provider: "mpl", operation_type: "shipment.close", entity_type: "shipping_batch", entity_id: closeKey, external_id: closeKey, idempotency_key: `mpl:shipment:close:${closeKey}`, reference_data: { carrier: "mpl", action: "close", tracking_numbers: trackingNumbers, tag: tag ?? null } });
31
+ if (!durable.acquired) {
32
+ if (durable.operation.status === "succeeded") {
33
+ const saved = durable.operation.reference_data?.response;
34
+ return res.json(saved && typeof saved === "object" ? saved : { alreadyExisted: true, trackingNumbers });
35
+ }
36
+ throw new Error(durable.operation.status === "needs_reconciliation" ? "A korábbi MPL jegyzékzárás szolgáltatói egyeztetést igényel; nem ismételhető biztonságosan." : "Az MPL jegyzékzárás már folyamatban van.");
34
37
  }
35
- const result = await mpl_1.mplService.closeShipments({
36
- trackingNumbers: trackingNumbers.length ? trackingNumbers : undefined,
37
- tag,
38
- checkList: body.checkList ?? true,
39
- });
38
+ const result = await mpl_1.mplService.closeShipments({ trackingNumbers: trackingNumbers.length ? trackingNumbers : undefined, tag, checkList: body.checkList ?? true });
39
+ remoteResult = { result, trackingNumbers };
40
40
  const closedAt = new Date().toISOString();
41
41
  if (orderService) {
42
42
  for (const order of closableOrders) {
43
43
  const shipment = mpl_1.mplService.extractShipment(order);
44
44
  if (!shipment?.trackingNumber)
45
45
  continue;
46
- await orderService.updateOrders([
47
- {
48
- id: order.id,
49
- metadata: {
50
- ...(order.metadata ?? {}),
51
- mpl: {
52
- ...shipment,
53
- closedAt,
54
- },
55
- },
56
- },
57
- ]);
46
+ await orderService.updateOrders([{ id: order.id, metadata: { ...(order.metadata ?? {}), mpl: { ...shipment, closedAt } } }]);
58
47
  }
59
48
  }
60
- await (0, core_audit_1.writeCoreAudit)(req.scope, {
61
- action: "shipping.mpl.close",
62
- resourceType: "shipping_batch",
63
- integration: "mpl",
64
- actorId,
65
- summary: `${trackingNumbers.length} MPL küldemény jegyzékzárása sikeres.`,
66
- details: {
67
- shipmentCount: trackingNumbers.length,
68
- orderCount: orderIds.length,
69
- skippedAlreadyClosed: orders.length - closableOrders.length,
70
- tag: tag || null,
71
- },
72
- });
73
- res.json({
74
- result,
75
- trackingNumbers,
76
- closedAt,
77
- skippedAlreadyClosed: orders.length - closableOrders.length,
78
- });
49
+ const response = { result, trackingNumbers, closedAt, skippedAlreadyClosed: orders.length - closableOrders.length };
50
+ await (0, state_1.operationSucceeded)(operationStore, durable.operation, closeKey, { carrier: "mpl", action: "close", response });
51
+ try {
52
+ await (0, core_audit_1.writeCoreAudit)(req.scope, { action: "shipping.mpl.close", resourceType: "shipping_batch", integration: "mpl", actorId, summary: `${trackingNumbers.length} MPL küldemény jegyzékzárása sikeres.`, details: { shipmentCount: trackingNumbers.length, orderCount: orderIds.length, skippedAlreadyClosed: orders.length - closableOrders.length, tag: tag || null } });
53
+ }
54
+ catch (auditError) {
55
+ logger.error(`MPL close audit logging failed after successful close: ${auditError instanceof Error ? auditError.message : String(auditError)}`);
56
+ }
57
+ return res.json(response);
79
58
  }
80
59
  catch (error) {
60
+ if (durable?.acquired) {
61
+ try {
62
+ const operationStore = req.scope.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
63
+ await (0, state_1.operationFailed)(operationStore, durable.operation, error, Boolean(remoteResult) || (0, durable_create_1.isUncertainRemoteFailure)(error), undefined, remoteResult ? { carrier: "mpl", action: "close", response: remoteResult } : undefined);
64
+ }
65
+ catch { }
66
+ }
81
67
  const message = error instanceof Error ? error.message : "Az MPL jegyzékzárás nem sikerült.";
82
68
  logger.error(`MPL shipment close failed: ${message}`);
83
- await (0, core_audit_1.writeCoreAudit)(req.scope, {
84
- action: "shipping.mpl.close",
85
- resourceType: "shipping_batch",
86
- integration: "mpl",
87
- actorId,
88
- status: "error",
89
- summary: message,
90
- });
91
- res.status(502).json({ message });
69
+ try {
70
+ await (0, core_audit_1.writeCoreAudit)(req.scope, { action: "shipping.mpl.close", resourceType: "shipping_batch", integration: "mpl", actorId, status: "error", summary: message });
71
+ }
72
+ catch { }
73
+ return res.status(502).json({ message });
92
74
  }
93
75
  }
94
- function normalizeList(value) {
95
- return Array.isArray(value)
96
- ? value.map((item) => String(item).trim()).filter(Boolean)
97
- : [];
98
- }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nL21wbC9jbG9zZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQWdHQztBQTVHRCxxREFBcUU7QUFDckUsa0VBQWtFO0FBQ2xFLHNEQUF5RDtBQVVsRCxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDaEUsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEUsTUFBTSxPQUFPLEdBQUksR0FBMkQsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFBO0lBRW5HLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQWMsQ0FBQTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sdUJBQXVCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNuRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxTQUFTLENBQUE7UUFDdEQsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU07WUFDbEMsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBcUM7WUFDakUsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUViLE1BQU0sTUFBTSxHQUFHLFlBQVk7WUFDekIsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFB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
76
+ function normalizeList(value) { return Array.isArray(value) ? value.map((item) => String(item).trim()).filter(Boolean) : []; }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3NoaXBwaW5nL21wbC9jbG9zZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLG9CQUNrM0Q7QUFibDNELDZDQUF3QztBQUV4QyxxREFBcUU7QUFDckUsa0VBQWtFO0FBQ2xFLHNEQUF5RDtBQUV6RCx1RkFBNkY7QUFDN0Ysd0ZBQTZIO0FBQzdILDhFQUEwSDtBQUluSCxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQWlCLEVBQUMsR0FBa0I7SUFBRSxNQUFNLE1BQU0sR0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFBLE1BQU0sT0FBTyxHQUFFLEdBQW9ELENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQztJQUFBLElBQUksT0FBOEQsQ0FBQztJQUFBLElBQUksWUFBNkMsQ0FBQztJQUFBLElBQUcsQ0FBQztRQUFBLE1BQU0sSUFBSSxHQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBRSxFQUFFLENBQWMsQ0FBQztRQUFBLE1BQU0sUUFBUSxHQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFBQSxNQUFNLHVCQUF1QixHQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFBQSxNQUFNLEdBQUcsR0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBRSxTQUFTLENBQUM7UUFBQSxNQUFNLFlBQVksR0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQW9DLENBQUEsQ0FBQyxDQUFBLFNBQVMsQ0FBQztRQUFBLE1BQU0sTUFBTSxHQUFDLFlBQVksQ0FBQSxDQUFDLENB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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<void>;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const integration_settings_1 = require("../../../../modules/integration-settings");
5
+ const api_1 = require("../../../../lib/modules/google-ads/api");
6
+ async function GET(req, res) {
7
+ try {
8
+ const code = String(req.query.code || "").trim();
9
+ const state = String(req.query.state || "").trim();
10
+ const oauthError = String(req.query.error || "").trim();
11
+ if (oauthError)
12
+ throw new Error(`Google OAuth hiba: ${oauthError}`);
13
+ if (!code || !state)
14
+ throw new Error("Hiányzó Google Ads OAuth code vagy state.");
15
+ const verifiedState = (0, api_1.verifyGoogleAdsOAuthState)(state);
16
+ const store = req.scope.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
17
+ const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-ads");
18
+ if (!resolved.enabled || resolved.env.GOOGLE_ADS_API_ENABLED !== "true") {
19
+ throw new Error("A Google Ads API kapcsolat nincs bekapcsolva.");
20
+ }
21
+ const token = await (0, api_1.exchangeGoogleAdsAuthorizationCode)(resolved.env, code);
22
+ await (0, integration_settings_1.saveIntegrationSettings)({
23
+ store,
24
+ key: "google-ads",
25
+ enabled: true,
26
+ values: { GOOGLE_ADS_OAUTH_REFRESH_TOKEN: token.refreshToken },
27
+ actorId: verifiedState.actorId || null,
28
+ });
29
+ const refreshed = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-ads");
30
+ try {
31
+ const account = await (0, api_1.testGoogleAdsApiConnection)(refreshed.env);
32
+ await (0, integration_settings_1.saveIntegrationTestResult)({
33
+ store,
34
+ key: "google-ads",
35
+ ok: true,
36
+ message: `Google Ads API kapcsolat rendben (${account.customer_id}${account.descriptive_name ? ` – ${account.descriptive_name}` : ""}).`,
37
+ actorId: verifiedState.actorId || null,
38
+ });
39
+ return res.redirect(302, "/app/marketing/google-ads?oauth=connected");
40
+ }
41
+ catch (error) {
42
+ const message = error instanceof Error ? error.message : "A Google Ads API teszt sikertelen.";
43
+ await (0, integration_settings_1.saveIntegrationTestResult)({
44
+ store,
45
+ key: "google-ads",
46
+ ok: false,
47
+ message,
48
+ actorId: verifiedState.actorId || null,
49
+ });
50
+ return res.redirect(302, "/app/marketing/google-ads?oauth=connected_test_failed");
51
+ }
52
+ }
53
+ catch (error) {
54
+ const message = encodeURIComponent(error instanceof Error ? error.message : "A Google Ads OAuth sikertelen.");
55
+ return res.redirect(302, `/app/marketing/google-ads?oauth=error&message=${message}`);
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2F1dGgvZ29vZ2xlLWFkcy9jYWxsYmFjay9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLGtCQW9EQztBQWpFRCxtRkFNaUQ7QUFDakQsZ0VBSStDO0FBRXhDLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDaEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2xELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN2RCxJQUFJLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFBO1FBRWpGLE1BQU0sYUFBYSxHQUFHLElBQUEsK0JBQXlCLEVBQUMsS0FBSyxDQUFDLENBQUE7UUFDdEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzdCLGtEQUEyQixDQUNXLENBQUE7UUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHFEQUE4QixFQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQTtRQUNsRSxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFBLHdDQUFrQyxFQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDMUUsTUFBTSxJQUFBLDhDQUF1QixFQUFDO1lBQzVCLEtBQUs7WUFDTCxHQUFHLEVBQUUsWUFBWTtZQUNqQixPQUFPLEVBQUUsSUFBSTtZQUNiLE1BQU0sRUFBRSxFQUFFLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDOUQsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksSUFBSTtTQUN2QyxDQUFDLENBQUE7UUFFRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEscURBQThCLEVBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQzNFLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxnQ0FBMEIsRUFBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDL0QsTUFBTSxJQUFBLGdEQUF5QixFQUFDO2dCQUM5QixLQUFLO2dCQUNMLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixFQUFFLEVBQUUsSUFBSTtnQkFDUixPQUFPLEVBQUUscUNBQXFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUk7Z0JBQ3hJLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUk7YUFDdkMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSwyQ0FBMkMsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxPQUFPLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUE7WUFDN0YsTUFBTSxJQUFBLGdEQUF5QixFQUFDO2dCQUM5QixLQUFLO2dCQUNMLEdBQUcsRUFBRSxZQUFZO2dCQUNqQixFQUFFLEVBQUUsS0FBSztnQkFDVCxPQUFPO2dCQUNQLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxJQUFJLElBQUk7YUFDdkMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSx1REFBdUQsQ0FBQyxDQUFBO1FBQ25GLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDN0csT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxpREFBaUQsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUN0RixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -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,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const arukereso_1 = require("../../../lib/modules/arukereso");
6
+ async function GET(req, res) {
7
+ try {
8
+ const result = await (0, arukereso_1.generateArukeresoMarketplaceFeed)(req.scope);
9
+ const etag = `"${(0, node_crypto_1.createHash)("sha256").update(result.xml).digest("hex")}"`;
10
+ if (req.headers["if-none-match"] === etag) {
11
+ res.status(304);
12
+ res.setHeader("ETag", etag);
13
+ res.setHeader("Cache-Control", "public, max-age=300, stale-while-revalidate=300");
14
+ return res.end();
15
+ }
16
+ res.setHeader("Content-Type", "application/xml; charset=utf-8");
17
+ res.setHeader("Cache-Control", "public, max-age=300, stale-while-revalidate=300");
18
+ res.setHeader("ETag", etag);
19
+ return res.send(result.xml);
20
+ }
21
+ catch (error) {
22
+ if (error instanceof arukereso_1.ArukeresoDisabledError ||
23
+ error instanceof arukereso_1.ArukeresoMarketplaceExportDisabledError) {
24
+ return res.status(404).json({ message: error.message });
25
+ }
26
+ return res.status(503).json({
27
+ message: error instanceof Error
28
+ ? error.message
29
+ : "Az Árukereső Marketplace feed jelenleg nem generálható.",
30
+ });
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZlZWRzL2FydWtlcmVzby1tYXJrZXRwbGFjZS54bWwvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFRQSxrQkE4QkM7QUF0Q0QsNkNBQXdDO0FBRXhDLDhEQUl1QztBQUVoQyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRDQUFnQyxFQUFDLEdBQUcsQ0FBQyxLQUFjLENBQUMsQ0FBQTtRQUN6RSxNQUFNLElBQUksR0FBRyxJQUFJLElBQUEsd0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFBO1FBRXpFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2YsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDM0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsaURBQWlELENBQUMsQ0FBQTtZQUNqRixPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUNsQixDQUFDO1FBRUQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQTtRQUMvRCxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxpREFBaUQsQ0FBQyxDQUFBO1FBQ2pGLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzNCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUNFLEtBQUssWUFBWSxrQ0FBc0I7WUFDdkMsS0FBSyxZQUFZLG1EQUF1QyxFQUN4RCxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6RCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQ0wsS0FBSyxZQUFZLEtBQUs7Z0JBQ3BCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztnQkFDZixDQUFDLENBQUMseURBQXlEO1NBQ2hFLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDIn0=
@@ -6,7 +6,9 @@ const google_merchant_1 = require("../../../lib/modules/google-merchant");
6
6
  async function GET(req, res) {
7
7
  try {
8
8
  const result = await (0, google_merchant_1.generateGoogleMerchantFeed)(req.scope);
9
- const etag = `\"${(0, node_crypto_1.createHash)("sha256").update(result.xml).digest("hex")}\"`;
9
+ const withCategoryFields = await (0, google_merchant_1.applyGoogleMerchantCategoryFields)(req.scope, result.xml, result.items);
10
+ const xml = await (0, google_merchant_1.applyGoogleMerchantShipping)(req.scope, withCategoryFields);
11
+ const etag = `\"${(0, node_crypto_1.createHash)("sha256").update(xml).digest("hex")}\"`;
10
12
  if (req.headers["if-none-match"] === etag) {
11
13
  return res.status(304).end();
12
14
  }
@@ -15,7 +17,7 @@ async function GET(req, res) {
15
17
  res.setHeader("ETag", etag);
16
18
  res.setHeader("X-Google-Merchant-Items", String(result.diagnostics.itemsEmitted));
17
19
  res.setHeader("X-Google-Merchant-Skipped", String(result.diagnostics.variantsScanned - result.diagnostics.itemsEmitted));
18
- return res.status(200).send(result.xml);
20
+ return res.status(200).send(xml);
19
21
  }
20
22
  catch (error) {
21
23
  if (error instanceof google_merchant_1.GoogleMerchantDisabledError) {
@@ -32,4 +34,4 @@ async function GET(req, res) {
32
34
  });
33
35
  }
34
36
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZlZWRzL2dvb2dsZS1tZXJjaGFudC54bWwvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxrQkFrQ0M7QUF6Q0QsNkNBQXdDO0FBRXhDLDBFQUc2QztBQUV0QyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRDQUEwQixFQUFDLEdBQUcsQ0FBQyxLQUFjLENBQUMsQ0FBQTtRQUNuRSxNQUFNLElBQUksR0FBRyxLQUFLLElBQUEsd0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBRTNFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUE7UUFDOUIsQ0FBQztRQUVELEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLG9DQUFvQyxDQUFDLENBQUE7UUFDbkUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsaURBQWlELENBQUMsQ0FBQTtRQUNqRixHQUFHLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUMzQixHQUFHLENBQUMsU0FBUyxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7UUFDakYsR0FBRyxDQUFDLFNBQVMsQ0FDWCwyQkFBMkIsRUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQzdFLENBQUE7UUFDRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLDZDQUEyQixFQUFFLENBQUM7WUFDakQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDMUIsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksRUFBRSxrQ0FBa0M7WUFDeEMsT0FBTyxFQUNMLEtBQUssWUFBWSxLQUFLO2dCQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ2YsQ0FBQyxDQUFDLGtEQUFrRDtTQUN6RCxDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2ZlZWRzL2dvb2dsZS1tZXJjaGFudC54bWwvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSxrQkF3Q0M7QUFqREQsNkNBQXdDO0FBRXhDLDBFQUs2QztBQUV0QyxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRDQUEwQixFQUFDLEdBQUcsQ0FBQyxLQUFjLENBQUMsQ0FBQTtRQUNuRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBQSxtREFBaUMsRUFDaEUsR0FBRyxDQUFDLEtBQWMsRUFDbEIsTUFBTSxDQUFDLEdBQUcsRUFDVixNQUFNLENBQUMsS0FBSyxDQUNiLENBQUE7UUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUEsNkNBQTJCLEVBQUMsR0FBRyxDQUFDLEtBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO1FBQ3JGLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBQSx3QkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUVwRSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzlCLENBQUM7UUFFRCxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFBO1FBQ25FLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGlEQUFpRCxDQUFDLENBQUE7UUFDakYsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDM0IsR0FBRyxDQUFDLFNBQVMsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1FBQ2pGLEdBQUcsQ0FBQyxTQUFTLENBQ1gsMkJBQTJCLEVBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUM3RSxDQUFBO1FBQ0QsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLDZDQUEyQixFQUFFLENBQUM7WUFDakQsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDMUIsSUFBSSxFQUFFLDBCQUEwQjtnQkFDaEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLElBQUksRUFBRSxrQ0FBa0M7WUFDeEMsT0FBTyxFQUNMLEtBQUssWUFBWSxLQUFLO2dCQUNwQixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ2YsQ0FBQyxDQUFDLGtEQUFrRDtTQUN6RCxDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<MedusaResponse>;