@hszrdm/core 1.7.0 → 1.9.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 (233) hide show
  1. package/.medusa/server/src/admin/index.js +6832 -5418
  2. package/.medusa/server/src/admin/index.mjs +6834 -5420
  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/integrations/[key]/verify/route.d.ts +2 -0
  24. package/.medusa/server/src/api/admin/integrations/[key]/verify/route.js +79 -0
  25. package/.medusa/server/src/api/admin/orders/[id]/billingo/route.js +10 -1
  26. package/.medusa/server/src/api/admin/orders/[id]/foxpost/create/route.d.ts +3 -5
  27. package/.medusa/server/src/api/admin/orders/[id]/foxpost/create/route.js +7 -14
  28. package/.medusa/server/src/api/admin/orders/[id]/foxpost/label/route.js +12 -6
  29. package/.medusa/server/src/api/admin/orders/[id]/gls/create/route.d.ts +2 -1
  30. package/.medusa/server/src/api/admin/orders/[id]/gls/create/route.js +6 -14
  31. package/.medusa/server/src/api/admin/orders/[id]/gls/label/route.js +9 -4
  32. package/.medusa/server/src/api/admin/orders/[id]/shipping/label/route.js +4 -2
  33. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.d.ts +1 -2
  34. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.js +46 -8
  35. package/.medusa/server/src/api/admin/shipping/bulk/create/route.d.ts +3 -6
  36. package/.medusa/server/src/api/admin/shipping/bulk/create/route.js +6 -57
  37. package/.medusa/server/src/api/admin/shipping/bulk/labels/route.js +4 -2
  38. package/.medusa/server/src/api/admin/shipping/mpl/close/route.d.ts +1 -1
  39. package/.medusa/server/src/api/admin/shipping/mpl/close/route.js +48 -70
  40. package/.medusa/server/src/api/admin/shipping/orders/route.js +19 -4
  41. package/.medusa/server/src/api/auth/google-ads/callback/route.d.ts +2 -0
  42. package/.medusa/server/src/api/auth/google-ads/callback/route.js +58 -0
  43. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.d.ts +2 -0
  44. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.js +33 -0
  45. package/.medusa/server/src/api/feeds/google-merchant.xml/route.js +5 -3
  46. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.d.ts +2 -0
  47. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.js +211 -0
  48. package/.medusa/server/src/api/hooks/simplepay/ipn/route.js +113 -23
  49. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.d.ts +2 -0
  50. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.js +113 -0
  51. package/.medusa/server/src/api/store/arukereso/backlink/route.d.ts +2 -0
  52. package/.medusa/server/src/api/store/arukereso/backlink/route.js +73 -0
  53. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.d.ts +2 -0
  54. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.js +84 -0
  55. package/.medusa/server/src/api/store/arukereso/widget/route.d.ts +2 -0
  56. package/.medusa/server/src/api/store/arukereso/widget/route.js +64 -0
  57. package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +3 -2
  58. package/.medusa/server/src/api/store/cms/entries/route.js +3 -2
  59. package/.medusa/server/src/api/store/documents/route.d.ts +2 -0
  60. package/.medusa/server/src/api/store/documents/route.js +84 -0
  61. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.d.ts +2 -0
  62. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.js +50 -0
  63. package/.medusa/server/src/config.d.ts +3 -3
  64. package/.medusa/server/src/config.js +70 -87
  65. package/.medusa/server/src/core/documents.d.ts +31 -0
  66. package/.medusa/server/src/core/documents.js +47 -0
  67. package/.medusa/server/src/core/version.d.ts +2 -2
  68. package/.medusa/server/src/core/version.js +2 -2
  69. package/.medusa/server/src/jobs/mpl-status-sync.js +10 -6
  70. package/.medusa/server/src/jobs/shipping-status-sync-eligibility.d.ts +5 -0
  71. package/.medusa/server/src/jobs/shipping-status-sync-eligibility.js +26 -0
  72. package/.medusa/server/src/jobs/shipping-status-sync.d.ts +6 -0
  73. package/.medusa/server/src/jobs/shipping-status-sync.js +63 -28
  74. package/.medusa/server/src/lib/modules/arukereso/index.d.ts +1 -0
  75. package/.medusa/server/src/lib/modules/arukereso/index.js +2 -1
  76. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.d.ts +19 -0
  77. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.js +100 -0
  78. package/.medusa/server/src/lib/modules/billingo/actions.js +42 -12
  79. package/.medusa/server/src/lib/modules/billingo/advance.d.ts +68 -0
  80. package/.medusa/server/src/lib/modules/billingo/advance.js +309 -0
  81. package/.medusa/server/src/lib/modules/billingo/automation.js +49 -9
  82. package/.medusa/server/src/lib/modules/billingo/client.d.ts +5 -2
  83. package/.medusa/server/src/lib/modules/billingo/client.js +17 -8
  84. package/.medusa/server/src/lib/modules/billingo/index.d.ts +2 -0
  85. package/.medusa/server/src/lib/modules/billingo/index.js +3 -1
  86. package/.medusa/server/src/lib/modules/billingo/mapper.d.ts +42 -2
  87. package/.medusa/server/src/lib/modules/billingo/mapper.js +77 -4
  88. package/.medusa/server/src/lib/modules/billingo/partial-credit.d.ts +55 -0
  89. package/.medusa/server/src/lib/modules/billingo/partial-credit.js +338 -0
  90. package/.medusa/server/src/lib/modules/billingo/types.d.ts +21 -2
  91. package/.medusa/server/src/lib/modules/google-ads/adjustments.d.ts +21 -0
  92. package/.medusa/server/src/lib/modules/google-ads/adjustments.js +146 -0
  93. package/.medusa/server/src/lib/modules/google-ads/api.d.ts +23 -0
  94. package/.medusa/server/src/lib/modules/google-ads/api.js +171 -0
  95. package/.medusa/server/src/lib/modules/google-ads/diagnostics.d.ts +47 -0
  96. package/.medusa/server/src/lib/modules/google-ads/diagnostics.js +164 -0
  97. package/.medusa/server/src/lib/modules/google-merchant/category-fields.d.ts +7 -0
  98. package/.medusa/server/src/lib/modules/google-merchant/category-fields.js +210 -0
  99. package/.medusa/server/src/lib/modules/google-merchant/data-source.d.ts +17 -0
  100. package/.medusa/server/src/lib/modules/google-merchant/data-source.js +132 -0
  101. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.d.ts +33 -0
  102. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.js +113 -0
  103. package/.medusa/server/src/lib/modules/google-merchant/index.d.ts +5 -0
  104. package/.medusa/server/src/lib/modules/google-merchant/index.js +6 -1
  105. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.d.ts +18 -0
  106. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.js +120 -0
  107. package/.medusa/server/src/lib/modules/google-merchant/shipping.d.ts +13 -0
  108. package/.medusa/server/src/lib/modules/google-merchant/shipping.js +97 -0
  109. package/.medusa/server/src/lib/modules/google-tag-manager/api.d.ts +1 -0
  110. package/.medusa/server/src/lib/modules/google-tag-manager/api.js +3 -0
  111. package/.medusa/server/src/lib/modules/google-tag-manager/index.d.ts +1 -0
  112. package/.medusa/server/src/lib/modules/google-tag-manager/index.js +3 -0
  113. package/.medusa/server/src/lib/modules/google-tag-manager/sync.d.ts +1 -0
  114. package/.medusa/server/src/lib/modules/google-tag-manager/sync.js +3 -0
  115. package/.medusa/server/src/lib/modules/shipping/actions.d.ts +2 -2
  116. package/.medusa/server/src/lib/modules/shipping/actions.js +171 -352
  117. package/.medusa/server/src/lib/modules/shipping/durable-create.d.ts +2 -1
  118. package/.medusa/server/src/lib/modules/shipping/durable-create.js +33 -5
  119. package/.medusa/server/src/lib/modules/shipping/idempotency.js +4 -2
  120. package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
  121. package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
  122. package/.medusa/server/src/lib/modules/shipping/native-fulfillment.d.ts +73 -0
  123. package/.medusa/server/src/lib/modules/shipping/native-fulfillment.js +191 -0
  124. package/.medusa/server/src/lib/modules/shipping/operations.d.ts +28 -0
  125. package/.medusa/server/src/lib/modules/shipping/operations.js +9 -1
  126. package/.medusa/server/src/lib/modules/shipping/print-eligibility.d.ts +12 -0
  127. package/.medusa/server/src/lib/modules/shipping/print-eligibility.js +34 -0
  128. package/.medusa/server/src/lib/modules/shipping/recipient-email.d.ts +18 -0
  129. package/.medusa/server/src/lib/modules/shipping/recipient-email.js +29 -0
  130. package/.medusa/server/src/lib/modules/shipping/resolve.d.ts +9 -0
  131. package/.medusa/server/src/lib/modules/shipping/resolve.js +65 -0
  132. package/.medusa/server/src/lib/modules/shipping/types.d.ts +1 -1
  133. package/.medusa/server/src/modules/core-documents/index.d.ts +38 -0
  134. package/.medusa/server/src/modules/core-documents/index.js +18 -0
  135. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.d.ts +5 -0
  136. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.js +22 -0
  137. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.d.ts +9 -0
  138. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.js +18 -0
  139. package/.medusa/server/src/modules/core-documents/models/core-document.d.ts +18 -0
  140. package/.medusa/server/src/modules/core-documents/models/core-document.js +27 -0
  141. package/.medusa/server/src/modules/core-documents/service.d.ts +38 -0
  142. package/.medusa/server/src/modules/core-documents/service.js +13 -0
  143. package/.medusa/server/src/modules/integration-operation/migrations/Migration20261104010000.d.ts +5 -0
  144. package/.medusa/server/src/modules/integration-operation/migrations/Migration20261104010000.js +34 -0
  145. package/.medusa/server/src/modules/integration-operation/models/integration-operation.d.ts +1 -1
  146. package/.medusa/server/src/modules/integration-operation/models/integration-operation.js +2 -2
  147. package/.medusa/server/src/modules/integration-operation/service.d.ts +1 -1
  148. package/.medusa/server/src/modules/integration-operation/state.d.ts +1 -0
  149. package/.medusa/server/src/modules/integration-operation/state.js +11 -50
  150. package/.medusa/server/src/modules/integration-operation/types.d.ts +1 -1
  151. package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +19 -2
  152. package/.medusa/server/src/modules/integration-settings/connection-test.js +20 -4
  153. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.d.ts +2 -0
  154. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.js +49 -0
  155. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.d.ts +1 -0
  156. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.js +35 -0
  157. package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +23 -2
  158. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.d.ts +1 -0
  159. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.js +23 -0
  160. package/.medusa/server/src/modules/integration-settings/index.d.ts +4 -0
  161. package/.medusa/server/src/modules/integration-settings/index.js +5 -1
  162. package/.medusa/server/src/modules/integration-settings/manager.js +38 -4
  163. package/.medusa/server/src/modules/integration-settings/registry.js +1 -14
  164. package/.medusa/server/src/modules/integration-settings/reloadable.d.ts +10 -0
  165. package/.medusa/server/src/modules/integration-settings/reloadable.js +58 -0
  166. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.d.ts +9 -0
  167. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.js +48 -3
  168. package/.medusa/server/src/modules/integration-settings/simplepay-registration.d.ts +1 -0
  169. package/.medusa/server/src/modules/integration-settings/simplepay-registration.js +18 -0
  170. package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -5
  171. package/.medusa/server/src/providers/csomagpiac/client.d.ts +25 -0
  172. package/.medusa/server/src/providers/csomagpiac/client.js +144 -0
  173. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.d.ts +50 -0
  174. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.js +248 -0
  175. package/.medusa/server/src/providers/csomagpiac/index.d.ts +7 -0
  176. package/.medusa/server/src/providers/csomagpiac/index.js +30 -0
  177. package/.medusa/server/src/providers/csomagpiac/service.d.ts +60 -0
  178. package/.medusa/server/src/providers/csomagpiac/service.js +296 -0
  179. package/.medusa/server/src/providers/csomagpiac/types.d.ts +66 -0
  180. package/.medusa/server/src/providers/csomagpiac/types.js +27 -0
  181. package/.medusa/server/src/providers/dpd/fulfillment-provider.d.ts +5 -1
  182. package/.medusa/server/src/providers/dpd/fulfillment-provider.js +94 -27
  183. package/.medusa/server/src/providers/dpd/service.d.ts +2 -0
  184. package/.medusa/server/src/providers/dpd/service.js +32 -4
  185. package/.medusa/server/src/providers/dpd/types.d.ts +1 -0
  186. package/.medusa/server/src/providers/dpd/types.js +1 -1
  187. package/.medusa/server/src/providers/email/service.d.ts +7 -6
  188. package/.medusa/server/src/providers/email/service.js +51 -25
  189. package/.medusa/server/src/providers/foxpost/foxpost-service.d.ts +3 -1
  190. package/.medusa/server/src/providers/foxpost/foxpost-service.js +19 -17
  191. package/.medusa/server/src/providers/foxpost/fulfillment-provider.d.ts +10 -3
  192. package/.medusa/server/src/providers/foxpost/fulfillment-provider.js +99 -69
  193. package/.medusa/server/src/providers/foxpost/types.d.ts +1 -0
  194. package/.medusa/server/src/providers/gls/fulfillment-provider.d.ts +4 -0
  195. package/.medusa/server/src/providers/gls/fulfillment-provider.js +87 -17
  196. package/.medusa/server/src/providers/gls/gls-service.d.ts +19 -1
  197. package/.medusa/server/src/providers/gls/gls-service.js +32 -64
  198. package/.medusa/server/src/providers/gls/types.d.ts +16 -0
  199. package/.medusa/server/src/providers/mpl/fulfillment-provider.d.ts +4 -0
  200. package/.medusa/server/src/providers/mpl/fulfillment-provider.js +67 -176
  201. package/.medusa/server/src/providers/mpl/index.d.ts +2 -0
  202. package/.medusa/server/src/providers/mpl/index.js +7 -2
  203. package/.medusa/server/src/providers/mpl/service.d.ts +37 -1
  204. package/.medusa/server/src/providers/mpl/service.js +113 -366
  205. package/.medusa/server/src/providers/mpl/types.d.ts +19 -0
  206. package/.medusa/server/src/providers/mpl/types.js +1 -1
  207. package/.medusa/server/src/providers/packeta/client.d.ts +2 -1
  208. package/.medusa/server/src/providers/packeta/client.js +24 -2
  209. package/.medusa/server/src/providers/packeta/fulfillment-provider.d.ts +4 -0
  210. package/.medusa/server/src/providers/packeta/fulfillment-provider.js +84 -9
  211. package/.medusa/server/src/providers/packeta/point-validation.d.ts +2 -0
  212. package/.medusa/server/src/providers/packeta/point-validation.js +99 -0
  213. package/.medusa/server/src/providers/packeta/service.d.ts +1 -0
  214. package/.medusa/server/src/providers/packeta/service.js +91 -23
  215. package/.medusa/server/src/providers/packeta/types.d.ts +27 -0
  216. package/.medusa/server/src/providers/packeta/types.js +1 -1
  217. package/.medusa/server/src/providers/resilient-stripe/index.d.ts +19 -1
  218. package/.medusa/server/src/providers/resilient-stripe/index.js +59 -12
  219. package/.medusa/server/src/providers/simplepay/config.js +11 -1
  220. package/.medusa/server/src/providers/simplepay/index.d.ts +2 -0
  221. package/.medusa/server/src/providers/simplepay/index.js +5 -3
  222. package/.medusa/server/src/providers/simplepay/runtime-service.d.ts +13 -0
  223. package/.medusa/server/src/providers/simplepay/runtime-service.js +55 -0
  224. package/.medusa/server/src/providers/simplepay/service.d.ts +2 -0
  225. package/.medusa/server/src/providers/simplepay/service.js +40 -5
  226. package/.medusa/server/src/scripts/verify-runtime-modules.d.ts +7 -0
  227. package/.medusa/server/src/scripts/verify-runtime-modules.js +46 -0
  228. package/.medusa/server/src/subscribers/google-ads-order-canceled.d.ts +7 -0
  229. package/.medusa/server/src/subscribers/google-ads-order-canceled.js +50 -0
  230. package/.medusa/server/src/subscribers/google-ads-payment-refunded.d.ts +7 -0
  231. package/.medusa/server/src/subscribers/google-ads-payment-refunded.js +181 -0
  232. package/.medusa/server/src/subscribers/simplepay-paid-order-recovery.js +14 -1
  233. package/package.json +23 -18
@@ -71,17 +71,9 @@ exports.INTEGRATION_DEFINITIONS = [
71
71
  enabledEnv: "BILLINGO_ENABLED",
72
72
  restartRequired: true,
73
73
  fields: [
74
- text("BILLINGO_API_URL", "API URL"),
75
74
  secret("BILLINGO_API_KEY", "API kulcs", true),
76
75
  number("BILLINGO_DOCUMENT_BLOCK_ID", "Számlatömb azonosító", true),
77
76
  number("BILLINGO_BANK_ACCOUNT_ID", "Bankszámla azonosító", true),
78
- select("BILLINGO_PAYMENT_METHOD", "Alap fizetési mód", [
79
- { label: "Stripe", value: "stripe" },
80
- { label: "Online bankkártya", value: "online_bankcard" },
81
- { label: "Átutalás", value: "wire_transfer" },
82
- { label: "Utánvét", value: "cash_on_delivery" },
83
- { label: "Egyéb", value: "other" },
84
- ]),
85
77
  select("BILLINGO_LANGUAGE", "Nyelv", [
86
78
  { label: "Magyar", value: "hu" },
87
79
  { label: "Angol", value: "en" },
@@ -97,8 +89,6 @@ exports.INTEGRATION_DEFINITIONS = [
97
89
  { label: "Fulfillment létrejötte", value: "fulfillment_created" },
98
90
  { label: "Csak manuálisan", value: "manual" },
99
91
  ]),
100
- text("BILLINGO_UNIT", "Mértékegység"),
101
- number("BILLINGO_TIMEOUT_MS", "Timeout (ms)"),
102
92
  ],
103
93
  },
104
94
  {
@@ -109,16 +99,13 @@ exports.INTEGRATION_DEFINITIONS = [
109
99
  enabledEnv: "FOXPOST_ENABLED",
110
100
  restartRequired: true,
111
101
  fields: [
112
- text("FOXPOST_API_URL", "API URL", true),
113
102
  text("FOXPOST_API_USERNAME", "API felhasználónév", true),
114
103
  secret("FOXPOST_API_PASSWORD", "API jelszó", true),
115
104
  secret("FOXPOST_API_KEY", "API kulcs", true),
116
- text("FOXPOST_LOCKER_FEED_URL", "Automata feed URL", true),
117
105
  bool("FOXPOST_SANDBOX", "Sandbox"),
118
106
  number("FOXPOST_LOCKER_PRICE_HUF", "Automata díj (HUF)"),
119
107
  number("FOXPOST_HOME_DELIVERY_PRICE_HUF", "Házhozszállítás díj (HUF)"),
120
108
  number("FOXPOST_FREE_SHIPPING_THRESHOLD_HUF", "Ingyenes szállítás határ (HUF)"),
121
- number("FOXPOST_TIMEOUT_MS", "Timeout (ms)"),
122
109
  ],
123
110
  },
124
111
  {
@@ -342,4 +329,4 @@ function integrationDefinition(key) {
342
329
  function secretFieldNames(definition) {
343
330
  return new Set(definition.fields.filter((field) => field.type === "secret").map((field) => field.name));
344
331
  }
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi1zZXR0aW5ncy9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0WEEsc0RBRUM7QUFFRCw0Q0FFQztBQTNXRCxNQUFNLElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBYSxFQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZILE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxRQUFRLEdBQUcsS0FBSyxFQUFFLElBQWEsRUFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEosTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsSUFBYSxFQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUNwSixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxJQUFhLEVBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3BKLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxPQUFnRCxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQW9CLEVBQUUsQ0FBQyxD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
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9pbnRlZ3JhdGlvbi1zZXR0aW5ncy9yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErV0Esc0RBRUM7QUFFRCw0Q0FFQztBQTlWRCxNQUFNLElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBYSxFQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZILE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxRQUFRLEdBQUcsS0FBSyxFQUFFLElBQWEsRUFBb0IsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEosTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQUUsSUFBYSxFQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUNwSixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxJQUFhLEVBQW9CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3BKLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxPQUFnRCxFQUFFLFFBQVEsR0FBRyxLQUFLLEVBQW9CLEVBQUUsQ0FBQyxD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
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Stable proxy for integration clients/services whose credentials can change
3
+ * while the Medusa process is running.
4
+ *
5
+ * Consumers keep the same object reference (important for Medusa providers and
6
+ * tests), while the underlying target is recreated after an Admin integration
7
+ * settings save increments the runtime revision. Sibling processes sharing the
8
+ * same runtime snapshot also refresh lazily on their next provider call.
9
+ */
10
+ export declare function createReloadableIntegrationService<T extends object>(factory: () => T): T;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createReloadableIntegrationService = createReloadableIntegrationService;
4
+ const runtime_snapshot_1 = require("./runtime-snapshot");
5
+ /**
6
+ * Stable proxy for integration clients/services whose credentials can change
7
+ * while the Medusa process is running.
8
+ *
9
+ * Consumers keep the same object reference (important for Medusa providers and
10
+ * tests), while the underlying target is recreated after an Admin integration
11
+ * settings save increments the runtime revision. Sibling processes sharing the
12
+ * same runtime snapshot also refresh lazily on their next provider call.
13
+ */
14
+ function createReloadableIntegrationService(factory) {
15
+ let target = null;
16
+ let revision = -1;
17
+ const current = () => {
18
+ (0, runtime_snapshot_1.refreshIntegrationRuntimeSnapshotIfChanged)();
19
+ const nextRevision = (0, runtime_snapshot_1.integrationRuntimeRevision)();
20
+ if (!target || revision !== nextRevision) {
21
+ target = factory();
22
+ revision = nextRevision;
23
+ }
24
+ return target;
25
+ };
26
+ return new Proxy({}, {
27
+ get(_proxyTarget, property) {
28
+ const instance = current();
29
+ const value = instance[property];
30
+ return typeof value === "function" && !("_isMockFunction" in value)
31
+ ? value.bind(instance)
32
+ : value;
33
+ },
34
+ set(_proxyTarget, property, value) {
35
+ ;
36
+ current()[property] = value;
37
+ return true;
38
+ },
39
+ has(_proxyTarget, property) {
40
+ return property in current();
41
+ },
42
+ ownKeys() {
43
+ return Reflect.ownKeys(current());
44
+ },
45
+ getOwnPropertyDescriptor(_proxyTarget, property) {
46
+ const descriptor = Object.getOwnPropertyDescriptor(current(), property);
47
+ return descriptor ? { ...descriptor, configurable: true } : undefined;
48
+ },
49
+ defineProperty(_proxyTarget, property, descriptor) {
50
+ Object.defineProperty(current(), property, descriptor);
51
+ return true;
52
+ },
53
+ deleteProperty(_proxyTarget, property) {
54
+ return delete current()[property];
55
+ },
56
+ });
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsb2FkYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uLXNldHRpbmdzL3JlbG9hZGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFjQSxnRkE0Q0M7QUExREQseURBRzJCO0FBRTNCOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isa0NBQWtDLENBQW1CLE9BQWdCO0lBQ25GLElBQUksTUFBTSxHQUFhLElBQUksQ0FBQTtJQUMzQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUVqQixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUU7UUFDbkIsSUFBQSw2REFBMEMsR0FBRSxDQUFBO1FBQzVDLE1BQU0sWUFBWSxHQUFHLElBQUEsNkNBQTBCLEdBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsTUFBTSxJQUFJLFFBQVEsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUE7WUFDbEIsUUFBUSxHQUFHLFlBQVksQ0FBQTtRQUN6QixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLENBQUE7SUFFRCxPQUFPLElBQUksS0FBSyxDQUFDLEVBQU8sRUFBRTtRQUN4QixHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVE7WUFDeEIsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFrQyxDQUFBO1lBQzFELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUNoQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDO2dCQUNqRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDWCxDQUFDO1FBQ0QsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSztZQUMvQixDQUFDO1lBQUMsT0FBTyxFQUFtQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUM5RCxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxHQUFHLENBQUMsWUFBWSxFQUFFLFFBQVE7WUFDeEIsT0FBTyxRQUFRLElBQUksT0FBTyxFQUFFLENBQUE7UUFDOUIsQ0FBQztRQUNELE9BQU87WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNuQyxDQUFDO1FBQ0Qsd0JBQXdCLENBQUMsWUFBWSxFQUFFLFFBQVE7WUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQ3ZFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBQ3ZFLENBQUM7UUFDRCxjQUFjLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxVQUFVO1lBQy9DLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3RELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELGNBQWMsQ0FBQyxZQUFZLEVBQUUsUUFBUTtZQUNuQyxPQUFPLE9BQVEsT0FBTyxFQUFtQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3JFLENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDIn0=
@@ -1,3 +1,12 @@
1
+ export declare function applyIntegrationRuntimeValues(values: Record<string, string>, env?: NodeJS.ProcessEnv): number;
2
+ export declare function integrationRuntimeRevision(): number;
1
3
  export declare function applyIntegrationRuntimeSnapshot(env?: NodeJS.ProcessEnv): boolean;
4
+ /**
5
+ * Refresh another backend worker/process from the shared encrypted snapshot.
6
+ * This is intentionally cheap: only the file mtime is checked until another
7
+ * process writes a newer snapshot. It lets PM2 cluster workers sharing the same
8
+ * filesystem pick up Admin integration changes on their next provider call.
9
+ */
10
+ export declare function refreshIntegrationRuntimeSnapshotIfChanged(env?: NodeJS.ProcessEnv): boolean;
2
11
  export declare function writeIntegrationRuntimeSnapshot(values: Record<string, string>, env?: NodeJS.ProcessEnv): string;
3
12
  export declare function integrationRuntimeSnapshotPath(env?: NodeJS.ProcessEnv): string;
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyIntegrationRuntimeValues = applyIntegrationRuntimeValues;
4
+ exports.integrationRuntimeRevision = integrationRuntimeRevision;
3
5
  exports.applyIntegrationRuntimeSnapshot = applyIntegrationRuntimeSnapshot;
6
+ exports.refreshIntegrationRuntimeSnapshotIfChanged = refreshIntegrationRuntimeSnapshotIfChanged;
4
7
  exports.writeIntegrationRuntimeSnapshot = writeIntegrationRuntimeSnapshot;
5
8
  exports.integrationRuntimeSnapshotPath = integrationRuntimeSnapshotPath;
6
9
  const node_fs_1 = require("node:fs");
7
10
  const node_path_1 = require("node:path");
8
11
  const crypto_1 = require("./crypto");
12
+ let runtimeRevision = 0;
13
+ let lastSnapshotMtimeMs = 0;
9
14
  function snapshotPath(env = process.env) {
10
15
  const configured = env.INTEGRATION_SETTINGS_FILE?.trim();
11
16
  if (configured)
@@ -16,11 +21,22 @@ function snapshotPath(env = process.env) {
16
21
  }
17
22
  return (0, node_path_1.join)(process.cwd(), ".core", "integration-settings.enc");
18
23
  }
24
+ function applyIntegrationRuntimeValues(values, env = process.env) {
25
+ for (const [name, value] of Object.entries(values)) {
26
+ env[name] = value;
27
+ }
28
+ runtimeRevision += 1;
29
+ return runtimeRevision;
30
+ }
31
+ function integrationRuntimeRevision() {
32
+ return runtimeRevision;
33
+ }
19
34
  function applyIntegrationRuntimeSnapshot(env = process.env) {
20
35
  const path = snapshotPath(env);
21
36
  let payload;
22
37
  try {
23
38
  payload = (0, node_fs_1.readFileSync)(path, "utf8").trim();
39
+ lastSnapshotMtimeMs = (0, node_fs_1.statSync)(path).mtimeMs;
24
40
  }
25
41
  catch (error) {
26
42
  if (error?.code === "ENOENT")
@@ -30,9 +46,34 @@ function applyIntegrationRuntimeSnapshot(env = process.env) {
30
46
  if (!payload)
31
47
  return false;
32
48
  const values = (0, crypto_1.decryptIntegrationSecrets)(payload, env);
33
- for (const [name, value] of Object.entries(values)) {
34
- env[name] = value;
49
+ applyIntegrationRuntimeValues(values, env);
50
+ return true;
51
+ }
52
+ /**
53
+ * Refresh another backend worker/process from the shared encrypted snapshot.
54
+ * This is intentionally cheap: only the file mtime is checked until another
55
+ * process writes a newer snapshot. It lets PM2 cluster workers sharing the same
56
+ * filesystem pick up Admin integration changes on their next provider call.
57
+ */
58
+ function refreshIntegrationRuntimeSnapshotIfChanged(env = process.env) {
59
+ const path = snapshotPath(env);
60
+ let mtimeMs;
61
+ try {
62
+ mtimeMs = (0, node_fs_1.statSync)(path).mtimeMs;
63
+ }
64
+ catch (error) {
65
+ if (error?.code === "ENOENT")
66
+ return false;
67
+ throw error;
35
68
  }
69
+ if (mtimeMs <= lastSnapshotMtimeMs)
70
+ return false;
71
+ const payload = (0, node_fs_1.readFileSync)(path, "utf8").trim();
72
+ if (!payload)
73
+ return false;
74
+ const values = (0, crypto_1.decryptIntegrationSecrets)(payload, env);
75
+ lastSnapshotMtimeMs = mtimeMs;
76
+ applyIntegrationRuntimeValues(values, env);
36
77
  return true;
37
78
  }
38
79
  function writeIntegrationRuntimeSnapshot(values, env = process.env) {
@@ -44,9 +85,13 @@ function writeIntegrationRuntimeSnapshot(values, env = process.env) {
44
85
  const temporary = `${path}.${process.pid}.tmp`;
45
86
  (0, node_fs_1.writeFileSync)(temporary, `${encrypted}\n`, { encoding: "utf8", mode: 0o600 });
46
87
  (0, node_fs_1.renameSync)(temporary, path);
88
+ lastSnapshotMtimeMs = (0, node_fs_1.statSync)(path).mtimeMs;
89
+ // The process handling the Admin save switches immediately; sibling PM2
90
+ // workers pick up the same snapshot through refreshIntegrationRuntimeSnapshotIfChanged.
91
+ applyIntegrationRuntimeValues(values, env);
47
92
  return path;
48
93
  }
49
94
  function integrationRuntimeSnapshotPath(env = process.env) {
50
95
  return snapshotPath(env);
51
96
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1zbmFwc2hvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uLXNldHRpbmdzL3J1bnRpbWUtc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsMEVBZUM7QUFFRCwwRUFZQztBQUVELHdFQUVDO0FBakRELHFDQUE0RTtBQUM1RSx5Q0FBcUQ7QUFDckQscUNBQStFO0FBRS9FLFNBQVMsWUFBWSxDQUFDLE1BQXlCLE9BQU8sQ0FBQyxHQUFHO0lBQ3hELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUN4RCxJQUFJLFVBQVU7UUFBRSxPQUFPLElBQUEsc0JBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFBLGdCQUFJLEVBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRTVGLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNwRCxJQUFJLGdCQUFnQixJQUFJLElBQUEsc0JBQVUsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDckQsT0FBTyxJQUFBLGdCQUFJLEVBQUMsSUFBQSxtQkFBTyxFQUFDLGdCQUFnQixDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsT0FBTyxJQUFBLGdCQUFJLEVBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pFLENBQUM7QUFFRCxTQUFnQiwrQkFBK0IsQ0FBQyxNQUF5QixPQUFPLENBQUMsR0FBRztJQUNsRixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDOUIsSUFBSSxPQUFlLENBQUE7SUFDbkIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxHQUFHLElBQUEsc0JBQVksRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDN0MsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFLLEtBQStCLEVBQUUsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUNyRSxNQUFNLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUEsa0NBQXlCLEVBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ3RELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBZ0IsK0JBQStCLENBQzdDLE1BQThCLEVBQzlCLE1BQXlCLE9BQU8sQ0FBQyxHQUFHO0lBRXBDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM5QixJQUFBLG1CQUFTLEVBQUMsSUFBQSxtQkFBTyxFQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBQSxrQ0FBeUIsRUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDeEQsSUFBSSxDQUFDLFNBQVM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUE7SUFDbEYsTUFBTSxTQUFTLEdBQUcsR0FBRyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFBO0lBQzlDLElBQUEsdUJBQWEsRUFBQyxTQUFTLEVBQUUsR0FBRyxTQUFTLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDN0UsSUFBQSxvQkFBVSxFQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMzQixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFnQiw4QkFBOEIsQ0FBQyxNQUF5QixPQUFPLENBQUMsR0FBRztJQUNqRixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUMxQixDQUFDIn0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1zbmFwc2hvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uLXNldHRpbmdzL3J1bnRpbWUtc25hcHNob3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsc0VBU0M7QUFFRCxnRUFFQztBQUVELDBFQWNDO0FBUUQsZ0dBbUJDO0FBRUQsMEVBaUJDO0FBRUQsd0VBRUM7QUFsR0QscUNBQXNGO0FBQ3RGLHlDQUFxRDtBQUNyRCxxQ0FBK0U7QUFFL0UsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFBO0FBQ3ZCLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO0FBRTNCLFNBQVMsWUFBWSxDQUFDLE1BQXlCLE9BQU8sQ0FBQyxHQUFHO0lBQ3hELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUN4RCxJQUFJLFVBQVU7UUFBRSxPQUFPLElBQUEsc0JBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFBLGdCQUFJLEVBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBRTVGLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNwRCxJQUFJLGdCQUFnQixJQUFJLElBQUEsc0JBQVUsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDckQsT0FBTyxJQUFBLGdCQUFJLEVBQUMsSUFBQSxtQkFBTyxFQUFDLGdCQUFnQixDQUFDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsT0FBTyxJQUFBLGdCQUFJLEVBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsQ0FBQyxDQUFBO0FBQ2pFLENBQUM7QUFFRCxTQUFnQiw2QkFBNkIsQ0FDM0Ms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
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const registry_1 = require("./registry");
4
+ const simplepay = registry_1.INTEGRATION_DEFINITIONS.find((definition) => definition.key === "simplepay");
5
+ if (simplepay && !simplepay.fields.some((field) => field.name === "SIMPLEPAY_PAYMENT_TIMEOUT_MINUTES")) {
6
+ const field = {
7
+ name: "SIMPLEPAY_PAYMENT_TIMEOUT_MINUTES",
8
+ label: "Fizetési ablak (perc)",
9
+ type: "number",
10
+ help: "A SimplePay fizetési tranzakció érvényessége. Alapérték: 30 perc; engedélyezett tartomány: 1–1440 perc.",
11
+ };
12
+ const timeoutIndex = simplepay.fields.findIndex((item) => item.name === "SIMPLEPAY_TIMEOUT_MS");
13
+ if (timeoutIndex >= 0)
14
+ simplepay.fields.splice(timeoutIndex, 0, field);
15
+ else
16
+ simplepay.fields.push(field);
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlcGF5LXJlZ2lzdHJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2ludGVncmF0aW9uLXNldHRpbmdzL3NpbXBsZXBheS1yZWdpc3RyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBMkU7QUFFM0UsTUFBTSxTQUFTLEdBQUcsa0NBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFBO0FBRTlGLElBQUksU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUNBQW1DLENBQUMsRUFBRSxDQUFDO0lBQ3ZHLE1BQU0sS0FBSyxHQUFxQjtRQUM5QixJQUFJLEVBQUUsbUNBQW1DO1FBQ3pDLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUseUdBQXlHO0tBQ2hILENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxzQkFBc0IsQ0FBQyxDQUFBO0lBQy9GLElBQUksWUFBWSxJQUFJLENBQUM7UUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBOztRQUNqRSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNuQyxDQUFDIn0=
@@ -22,24 +22,34 @@ const definitions = [
22
22
  key: "google-tag-manager",
23
23
  label: "Google Tag Manager",
24
24
  category: "marketing",
25
- description: "Publikus GTM container azonosító. Ha aktív, a starter a GTM-et tekinti egyetlen Google tag loadernek, és nem tölt külön közvetlen GA4 scriptet.",
25
+ description: "Publikus GTM container azonosító. Ha aktív, a starter a GTM-et tekinti egyetlen Google tag loadernek, és nem tölt külön közvetlen GA4 vagy Google Ads scriptet.",
26
26
  enabledEnv: "GTM_ENABLED",
27
27
  restartRequired: false,
28
28
  fields: [
29
- text("GTM_CONTAINER_ID", "Container ID", true, "Publikus Google Tag Manager container azonosító, például GTM-XXXXXXX. A container tagekhez állíts be megfelelő consent checkeket."),
29
+ text("GTM_CONTAINER_ID", "Container ID", true, "Publikus Google Tag Manager container azonosító, például GTM-XXXXXXX. Google Ads purchase méréshez a containerben hozz létre google_ads_purchase Custom Event triggert és hozzá Google Ads Conversion Tracking taget; a tagekhez állíts be megfelelő consent checkeket."),
30
30
  ],
31
31
  },
32
32
  {
33
33
  key: "google-ads",
34
34
  label: "Google Ads",
35
35
  category: "marketing",
36
- description: "Google Ads vásárlási konverzióméréshez szükséges publikus tag ID és conversion label. A storefront a sikeres rendeléskor transaction ID-val, rendelési értékkel és devizával küldi a conversion eseményt.",
36
+ description: "Google Ads vásárlási konverziómérés, remarketing és opcionális szerveroldali API kapcsolat refund/cancel korrekciókhoz és diagnosztikához.",
37
37
  enabledEnv: "GOOGLE_ADS_ENABLED",
38
38
  restartRequired: false,
39
39
  fields: [
40
40
  text("GOOGLE_ADS_CONVERSION_ID", "Conversion ID / Google tag ID", true, "Google Ads tag ID, például AW-123456789. A Google Ads konverziós művelet Tag setup részéből másolható."),
41
41
  text("GOOGLE_ADS_PURCHASE_CONVERSION_LABEL", "Purchase conversion label", true, "A vásárlás konverziós művelet Conversion Label értéke. A storefront ebből állítja össze az AW-ID/LABEL send_to értéket."),
42
- bool("GOOGLE_ADS_REMARKETING_ENABLED", "Remarketing engedélyezése", "Bekapcsolva a storefront a Google Ads taget remarketing célra is betöltheti, kizárólag megfelelő marketing consent után."),
42
+ bool("GOOGLE_ADS_REMARKETING_ENABLED", "Remarketing engedélyezése", "Bekapcsolva a storefront Google Ads dinamikus remarketing ecommerce eseményeket is küld marketing consent után."),
43
+ bool("GOOGLE_ADS_API_ENABLED", "Google Ads API kapcsolat", "Bekapcsolva a Core szerveroldali Google Ads API kapcsolatot használhat. Az OAuth összekapcsolás az adwords scope-pal történik."),
44
+ bool("GOOGLE_ADS_ADJUSTMENTS_ENABLED", "Refund/cancel konverzió-korrekció", "Bekapcsolva a Core order.canceled esetén RETRACTION, payment.refunded esetén RESTATEMENT korrekciót küld a Google Ads API felé."),
45
+ text("GOOGLE_ADS_CUSTOMER_ID", "Google Ads customer ID", false, "A cél Google Ads ügyfélazonosító kötőjelek nélkül."),
46
+ text("GOOGLE_ADS_LOGIN_CUSTOMER_ID", "Manager / login customer ID", false, "Csak manager account használatakor szükséges; kötőjelek nélkül."),
47
+ text("GOOGLE_ADS_CONVERSION_ACTION_ID", "Purchase conversion action ID", false, "A vásárlási konverziós művelet numerikus ID-ja. A refund/cancel korrekció ugyanazt a conversion actiont módosítja."),
48
+ secret("GOOGLE_ADS_DEVELOPER_TOKEN", "Google Ads developer token", false, "Google Ads API developer token. Titkosítva tárolódik."),
49
+ text("GOOGLE_ADS_OAUTH_CLIENT_ID", "OAuth Client ID", false, "Google Cloud OAuth 2.0 kliensazonosító a Google Ads API hozzáféréshez."),
50
+ secret("GOOGLE_ADS_OAUTH_CLIENT_SECRET", "OAuth Client Secret", false, "Google Cloud OAuth 2.0 kliens secret. Titkosítva tárolódik."),
51
+ text("GOOGLE_ADS_OAUTH_REDIRECT_URI", "OAuth Redirect URI", false, "A Google Cloud OAuth kliensben engedélyezett callback URL, például https://backend.example.com/auth/google-ads/callback."),
52
+ secret("GOOGLE_ADS_OAUTH_REFRESH_TOKEN", "OAuth Refresh Token", false, "Az OAuth összekapcsolás után automatikusan mentett hosszú életű refresh token. Titkosítva tárolódik."),
43
53
  ],
44
54
  },
45
55
  {
@@ -59,4 +69,4 @@ for (const definition of definitions) {
59
69
  registry_1.INTEGRATION_DEFINITIONS.push(definition);
60
70
  }
61
71
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVmcm9udC1wdWJsaWMtcmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24tc2V0dGluZ3Mvc3RvcmVmcm9udC1wdWJsaWMtcmVnaXN0cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBSW1CO0FBRW5CLE1BQU0sSUFBSSxHQUFHLENBQ1gsSUFBWSxFQUNaLEtBQWEsRUFDYixRQUFRLEdBQUcsS0FBSyxFQUNoQixJQUFhLEVBQ0ssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFdEUsTUFBTSxJQUFJLEdBQUcsQ0FDWCxJQUFZLEVBQ1osS0FBYSxFQUNiLElBQWEsRUFDSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBRS9ELE1BQU0sTUFBTSxHQUFHLENBQ2IsSUFBWSxFQUNaLEtBQWEsRUFDYixRQUFRLEdBQUcsS0FBSyxFQUNoQixJQUFhLEVBQ0ssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFeEUsTUFBTSxXQUFXLEdBQTRCO0lBQzNDO1FBQ0UsR0FBRyxFQUFFLGtCQUFrQjtRQUN2QixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFdBQVcsRUFDVCxtTEFBbUw7UUFDckwsVUFBVSxFQUFFLGFBQWE7UUFDekIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsTUFBTSxFQUFFO1lBQ04sSUFBSSxDQUNGLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLHdGQUF3RixDQUN6RjtZQUNELElBQUksQ0FDRixpQkFBaUIsRUFDakIsaUNBQWlDLEVBQ2pDLEtBQUssRUFDTCxxSEFBcUgsQ0FDdEg7WUFDRCxNQUFNLENBQ0osMEJBQTBCLEVBQzFCLDBDQUEwQyxFQUMxQyxLQUFLLEVBQ0wsbU5BQW1OLENBQ3BOO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsR0FBRyxFQUFFLG9CQUFvQjtRQUN6QixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFdBQVcsRUFDVCxpSkFBaUo7UUFDbkosVUFBVSxFQUFFLGFBQWE7UUFDekIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsTUFBTSxFQUFFO1lBQ04sSUFBSSxDQUNGLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsSUFBSSxFQUNKLG1JQUFtSSxDQUNwSTtTQUNGO0tBQ0Y7SUFDRDtRQUNFLEdBQUcsRUFBRSxZQUFZO1FBQ2pCLEtBQUssRUFBRSxZQUFZO1FBQ25CLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFdBQVcsRUFDVCwyTUFBMk07UUFDN00sVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxlQUFlLEVBQUUsS0FBSztRQUN0QixNQUFNLEVBQUU7WUFDTixJQUFJLENBQ0YsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQixJQUFJLEVBQ0osd0dBQXdHLENBQ3pHO1lBQ0QsSUFBSSxDQUNGLHNDQUFzQyxFQUN0QywyQkFBMkIsRUFDM0IsSUFBSSxFQUNKLHlIQUF5SCxDQUMxSDtZQUNELElBQUksQ0FDRixnQ0FBZ0MsRUFDaEMsMkJBQTJCLEVBQzNCLDBIQUEwSCxDQUMzSDtTQUNGO0tBQ0Y7SUFDRDtRQUNFLEdBQUcsRUFBRSx1QkFBdUI7UUFDNUIsS0FBSyxFQUFFLHVCQUF1QjtRQUM5QixRQUFRLEVBQUUsV0FBVztRQUNyQixXQUFXLEVBQ1QsbUZBQW1GO1FBQ3JGLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLE1BQU0sRUFBRTtZQUNOLElBQUksQ0FDRix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLElBQUksRUFDSixpRUFBaUUsQ0FDbEU7U0FDRjtLQUNGO0NBQ0YsQ0FBQTtBQUVELEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7SUFDckMsSUFBSSxDQUFDLGtDQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6RSxrQ0FBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDMUMsQ0FBQztBQUNILENBQUMifQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVmcm9udC1wdWJsaWMtcmVnaXN0cmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvaW50ZWdyYXRpb24tc2V0dGluZ3Mvc3RvcmVmcm9udC1wdWJsaWMtcmVnaXN0cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEseUNBSW1CO0FBRW5CLE1BQU0sSUFBSSxHQUFHLENBQ1gsSUFBWSxFQUNaLEtBQWEsRUFDYixRQUFRLEdBQUcsS0FBSyxFQUNoQixJQUFhLEVBQ0ssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFdEUsTUFBTSxJQUFJLEdBQUcsQ0FDWCxJQUFZLEVBQ1osS0FBYSxFQUNiLElBQWEsRUFDSyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBRS9ELE1BQU0sTUFBTSxHQUFHLENBQ2IsSUFBWSxFQUNaLEtBQWEsRUFDYixRQUFRLEdBQUcsS0FBSyxFQUNoQixJQUFhLEVBQ0ssRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFeEUsTUFBTSxXQUFXLEdBQTRCO0lBQzNDO1FBQ0UsR0FBRyxFQUFFLGtCQUFrQjtRQUN2QixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFdBQVcsRUFDVCxtTEFBbUw7UUFDckwsVUFBVSxFQUFFLGFBQWE7UUFDekIsZUFBZSxFQUFFLEtBQUs7UUFDdEIsTUFBTSxFQUFFO1lBQ04sSUFBSSxDQUNGLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNK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
@@ -0,0 +1,25 @@
1
+ import { type CsomagpiacConfig, type CsomagpiacCreateRequest } from "./types";
2
+ export declare class CsomagpiacClient {
3
+ readonly config: CsomagpiacConfig;
4
+ private cachedToken?;
5
+ constructor(config: CsomagpiacConfig);
6
+ isConfigured(): boolean;
7
+ authenticate(): Promise<string>;
8
+ createShipment(data: CsomagpiacCreateRequest): Promise<Record<string, unknown>>;
9
+ deleteShipment(identifier: string): Promise<Record<string, unknown>>;
10
+ getShipmentStatus(identifier: string): Promise<Record<string, unknown>>;
11
+ getShipmentHistory(identifier: string): Promise<Record<string, unknown>>;
12
+ listStatuses(): Promise<Record<string, unknown>>;
13
+ listPickupPoints(): Promise<Record<string, unknown>>;
14
+ listLocations(): Promise<Record<string, unknown>>;
15
+ listServices(): Promise<Record<string, unknown>>;
16
+ listLocationTypes(): Promise<Record<string, unknown>>;
17
+ listHandlers(): Promise<Record<string, unknown>>;
18
+ downloadShipmentLabel(identifier: string, format?: "A4" | "A6"): Promise<Buffer<ArrayBuffer>>;
19
+ private requestJson;
20
+ private rawRequest;
21
+ private fetchWithTimeout;
22
+ private throwResponseError;
23
+ private headers;
24
+ private url;
25
+ }
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CsomagpiacClient = void 0;
4
+ const types_1 = require("./types");
5
+ class CsomagpiacClient {
6
+ constructor(config) {
7
+ this.config = config;
8
+ }
9
+ isConfigured() {
10
+ return Boolean(this.config.token || (this.config.username && this.config.password));
11
+ }
12
+ async authenticate() {
13
+ if (this.config.token)
14
+ return this.config.token;
15
+ if (this.cachedToken)
16
+ return this.cachedToken;
17
+ if (!this.config.username || !this.config.password)
18
+ throw new types_1.CsomagpiacConfigError();
19
+ const response = await this.rawRequest("authenticate", {
20
+ method: "POST",
21
+ authenticated: false,
22
+ body: {
23
+ username: this.config.username,
24
+ password: this.config.password,
25
+ },
26
+ });
27
+ const token = asString(response?.token);
28
+ if (!token)
29
+ throw new types_1.CsomagpiacError("A Csomagpiac autentikáció nem adott vissza tokent.");
30
+ this.cachedToken = token;
31
+ return token;
32
+ }
33
+ async createShipment(data) {
34
+ return this.requestJson("shipment/new", { method: "POST", body: data });
35
+ }
36
+ async deleteShipment(identifier) {
37
+ return this.requestJson(`shipment/delete/${encodeURIComponent(identifier)}`, { method: "DELETE" });
38
+ }
39
+ async getShipmentStatus(identifier) {
40
+ return this.requestJson(`shipment/status/${encodeURIComponent(identifier)}`);
41
+ }
42
+ async getShipmentHistory(identifier) {
43
+ return this.requestJson(`shipment/history/${encodeURIComponent(identifier)}`);
44
+ }
45
+ async listStatuses() {
46
+ return this.requestJson("shipment/statuses");
47
+ }
48
+ async listPickupPoints() {
49
+ return this.requestJson("pickuppoints");
50
+ }
51
+ async listLocations() {
52
+ return this.requestJson("locations/list");
53
+ }
54
+ async listServices() {
55
+ return this.requestJson("client/services");
56
+ }
57
+ async listLocationTypes() {
58
+ return this.requestJson("locations/types");
59
+ }
60
+ async listHandlers() {
61
+ return this.requestJson("handlers");
62
+ }
63
+ async downloadShipmentLabel(identifier, format = this.config.labelFormat) {
64
+ const token = await this.authenticate();
65
+ const response = await this.fetchWithTimeout(this.url(`shipment/download/${encodeURIComponent(identifier)}/${format}`), {
66
+ method: "GET",
67
+ headers: this.headers(token),
68
+ });
69
+ if (!response.ok)
70
+ await this.throwResponseError(response);
71
+ return Buffer.from(await response.arrayBuffer());
72
+ }
73
+ async requestJson(path, options = {}) {
74
+ const token = await this.authenticate();
75
+ return this.rawRequest(path, { ...options, authenticated: true, token });
76
+ }
77
+ async rawRequest(path, options = {}) {
78
+ const method = options.method ?? "GET";
79
+ const response = await this.fetchWithTimeout(this.url(path), {
80
+ method,
81
+ headers: options.authenticated === false ? this.headers() : this.headers(options.token),
82
+ ...(options.body == null ? {} : { body: JSON.stringify(options.body) }),
83
+ });
84
+ if (!response.ok) {
85
+ if (response.status === 401)
86
+ this.cachedToken = undefined;
87
+ await this.throwResponseError(response);
88
+ }
89
+ const text = await response.text();
90
+ if (!text.trim())
91
+ return {};
92
+ try {
93
+ return JSON.parse(text);
94
+ }
95
+ catch {
96
+ throw new types_1.CsomagpiacError("A Csomagpiac API nem érvényes JSON választ adott.", {
97
+ remoteOutcomeUncertain: method === "POST",
98
+ });
99
+ }
100
+ }
101
+ async fetchWithTimeout(url, init) {
102
+ const controller = new AbortController();
103
+ const timer = setTimeout(() => controller.abort(), this.config.timeoutMs);
104
+ try {
105
+ return await fetch(url, { ...init, signal: controller.signal });
106
+ }
107
+ catch (error) {
108
+ const message = error instanceof Error ? error.message : String(error);
109
+ throw new types_1.CsomagpiacError(`A Csomagpiac API kérés sikertelen: ${message}`, {
110
+ remoteOutcomeUncertain: init.method === "POST" || init.method === "DELETE",
111
+ });
112
+ }
113
+ finally {
114
+ clearTimeout(timer);
115
+ }
116
+ }
117
+ async throwResponseError(response) {
118
+ const text = await response.text().catch(() => "");
119
+ let message = text || `HTTP ${response.status}`;
120
+ try {
121
+ const payload = JSON.parse(text);
122
+ message = asString(payload.message) || asString(payload.error) || message;
123
+ }
124
+ catch { }
125
+ throw new types_1.CsomagpiacError(`Csomagpiac API hiba (${response.status}): ${message}`, {
126
+ status: response.status,
127
+ });
128
+ }
129
+ headers(token) {
130
+ return {
131
+ "Content-Type": "application/vnd.api+json",
132
+ Accept: "application/vnd.api+json",
133
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
134
+ };
135
+ }
136
+ url(path) {
137
+ return `${this.config.apiUrl.replace(/\/+$/, "")}/${path.replace(/^\/+/, "")}`;
138
+ }
139
+ }
140
+ exports.CsomagpiacClient = CsomagpiacClient;
141
+ function asString(value) {
142
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
143
+ }
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9jc29tYWdwaWFjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBcUg7QUFFckgsTUFBYSxnQkFBZ0I7SUFHM0IsWUFBcUIsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFBRyxDQUFDO0lBRWpELFlBQVk7UUFDVixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUNyRixDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO1FBQy9DLElBQUksSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLDZCQUFxQixFQUFFLENBQUE7UUFFckYsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRTtZQUNyRCxNQUFNLEVBQUUsTUFBTTtZQUNkLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2FBQy9CO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFFLFFBQW9DLEVBQUUsS0FBSyxDQUFDLENB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
@@ -0,0 +1,50 @@
1
+ import { type RecipientEmailOrderService } from "../../lib/modules/shipping/recipient-email";
2
+ import { AbstractFulfillmentProviderService } from "@medusajs/framework/utils";
3
+ import type { CalculatedShippingOptionPrice, CalculateShippingOptionPriceContext, CreateFulfillmentResult, CreateShippingOptionDTO, FulfillmentDTO, FulfillmentItemDTO, FulfillmentOption, FulfillmentOrderDTO, ValidateFulfillmentDataContext } from "@medusajs/framework/types";
4
+ import { CsomagpiacService } from "./service";
5
+ import { type CsomagpiacServiceSelection } from "./types";
6
+ import type { IntegrationOperationStore } from "../../modules/integration-operation/types";
7
+ type ProviderOptions = Partial<{
8
+ api_url: string;
9
+ token: string;
10
+ username: string;
11
+ password: string;
12
+ live: boolean;
13
+ pickup_point_id: number;
14
+ price_huf: number;
15
+ free_shipping_threshold_huf: number;
16
+ timeout_ms: number;
17
+ default_weight_kg: number;
18
+ label_format: string;
19
+ }>;
20
+ type InjectedDependencies = {
21
+ logger?: {
22
+ warn: (message: string) => void;
23
+ error: (message: string) => void;
24
+ info: (message: string) => void;
25
+ };
26
+ integrationOperation?: IntegrationOperationStore;
27
+ order?: RecipientEmailOrderService;
28
+ };
29
+ export default class CsomagpiacFulfillmentProviderService extends AbstractFulfillmentProviderService {
30
+ static identifier: string;
31
+ protected readonly csomagpiac_: CsomagpiacService;
32
+ protected readonly operationStore_?: IntegrationOperationStore;
33
+ protected readonly orderService_?: RecipientEmailOrderService;
34
+ constructor(container?: InjectedDependencies, options?: ProviderOptions);
35
+ getFulfillmentOptions(): Promise<FulfillmentOption[]>;
36
+ validateFulfillmentData(_optionData: Record<string, unknown>, data: Record<string, unknown>, context: ValidateFulfillmentDataContext): Promise<Record<string, unknown>>;
37
+ validateOption(data: Record<string, unknown>): Promise<boolean>;
38
+ canCalculate(_data: CreateShippingOptionDTO): Promise<boolean>;
39
+ calculatePrice(_optionData: Record<string, unknown>, data: Record<string, unknown>, context: CalculateShippingOptionPriceContext): Promise<CalculatedShippingOptionPrice>;
40
+ createFulfillment(data: Record<string, unknown>, _items: Partial<Omit<FulfillmentItemDTO, "fulfillment">>[], order: Partial<FulfillmentOrderDTO> | undefined, fulfillment: Partial<Omit<FulfillmentDTO, "provider_id" | "data" | "items">>): Promise<CreateFulfillmentResult>;
41
+ cancelFulfillment(data: Record<string, unknown>): Promise<Record<string, unknown>>;
42
+ createReturnFulfillment(_fulfillment: Record<string, unknown>): Promise<CreateFulfillmentResult>;
43
+ getFulfillmentDocuments(_data: Record<string, unknown>): Promise<never[]>;
44
+ retrieveDocuments(_fulfillmentData: Record<string, unknown>, _documentType: string): Promise<void>;
45
+ getReturnDocuments(_data: Record<string, unknown>): Promise<never[]>;
46
+ getShipmentDocuments(_data: Record<string, unknown>): Promise<never[]>;
47
+ private runDurableDelete;
48
+ }
49
+ export declare function normalizeServices(value: unknown): CsomagpiacServiceSelection[];
50
+ export {};