@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
@@ -8,9 +8,9 @@ const runtime_snapshot_1 = require("./modules/integration-settings/runtime-snaps
8
8
  /**
9
9
  * Build the Medusa application config for an HSZRDM Commerce backend.
10
10
  *
11
- * The generated application only needs to load its .env file and call this
12
- * helper. Shared modules, providers and Core plugin resources remain owned by
13
- * @hszrdm/core; project-specific customizations stay in the host application.
11
+ * Runtime-configurable providers are registered even when they are not yet
12
+ * configured. Admin -> Integrációk can therefore enable/rotate them without
13
+ * rebuilding the Medusa module graph or restarting the backend.
14
14
  */
15
15
  function createHszrdmCommerceConfig(options = {}) {
16
16
  (0, runtime_snapshot_1.applyIntegrationRuntimeSnapshot)(process.env);
@@ -73,14 +73,8 @@ function createHszrdmCommerceConfig(options = {}) {
73
73
  ],
74
74
  },
75
75
  };
76
- // Module providers are not auto-registered by Medusa plugins. Keeping this
77
- // registration in one builder means generated apps do not need to know Core
78
- // internals or provider paths.
79
76
  const fulfillmentProviders = [
80
- {
81
- resolve: "@medusajs/medusa/fulfillment-manual",
82
- id: "manual",
83
- },
77
+ { resolve: "@medusajs/medusa/fulfillment-manual", id: "manual" },
84
78
  {
85
79
  resolve: "@hszrdm/core/providers/foxpost",
86
80
  id: "foxpost",
@@ -90,9 +84,7 @@ function createHszrdmCommerceConfig(options = {}) {
90
84
  api_password: process.env.FOXPOST_API_PASSWORD,
91
85
  api_key: process.env.FOXPOST_API_KEY,
92
86
  locker_feed_url: process.env.FOXPOST_LOCKER_FEED_URL,
93
- sandbox: process.env.FOXPOST_SANDBOX == null
94
- ? undefined
95
- : process.env.FOXPOST_SANDBOX === "true",
87
+ sandbox: process.env.FOXPOST_SANDBOX == null ? undefined : process.env.FOXPOST_SANDBOX === "true",
96
88
  locker_price_huf: numberOrUndefined(process.env.FOXPOST_LOCKER_PRICE_HUF),
97
89
  home_delivery_price_huf: numberOrUndefined(process.env.FOXPOST_HOME_DELIVERY_PRICE_HUF),
98
90
  free_shipping_threshold_huf: numberOrUndefined(process.env.FOXPOST_FREE_SHIPPING_THRESHOLD_HUF),
@@ -201,52 +193,51 @@ function createHszrdmCommerceConfig(options = {}) {
201
193
  tracking_language: process.env.MPL_TRACKING_LANGUAGE,
202
194
  },
203
195
  },
196
+ {
197
+ resolve: "@hszrdm/core/providers/csomagpiac",
198
+ id: "csomagpiac",
199
+ options: {
200
+ api_url: process.env.CSOMAGPIAC_API_URL,
201
+ token: process.env.CSOMAGPIAC_TOKEN,
202
+ username: process.env.CSOMAGPIAC_USERNAME,
203
+ password: process.env.CSOMAGPIAC_PASSWORD,
204
+ live: process.env.CSOMAGPIAC_LIVE === "true",
205
+ pickup_point_id: numberOrUndefined(process.env.CSOMAGPIAC_PICKUP_POINT_ID),
206
+ price_huf: numberOrUndefined(process.env.CSOMAGPIAC_PRICE_HUF),
207
+ free_shipping_threshold_huf: numberOrUndefined(process.env.CSOMAGPIAC_FREE_SHIPPING_THRESHOLD_HUF),
208
+ timeout_ms: numberOrUndefined(process.env.CSOMAGPIAC_TIMEOUT_MS),
209
+ default_weight_kg: numberOrUndefined(process.env.CSOMAGPIAC_DEFAULT_WEIGHT_KG),
210
+ label_format: process.env.CSOMAGPIAC_LABEL_FORMAT,
211
+ },
212
+ },
204
213
  ];
214
+ // Payment providers stay registered even before credentials exist. Their
215
+ // runtime services resolve the current Admin integration settings per call.
205
216
  const paymentProviders = [
206
- ...(env.providers.stripe
207
- ? [
208
- {
209
- resolve: "@hszrdm/core/providers/resilient-stripe",
210
- id: "stripe",
211
- options: {
212
- apiKey: env.stripeApiKey,
213
- webhookSecret: env.stripeWebhookSecret,
214
- capture: true,
215
- automaticPaymentMethods: true,
216
- },
217
- },
218
- ]
219
- : []),
220
- ...(env.providers.simplepay
221
- ? [
222
- {
223
- resolve: "@hszrdm/core/providers/simplepay",
224
- id: "simplepay",
225
- options: (0, config_1.simplePayOptionsFromEnv)(),
226
- },
227
- ]
228
- : []),
229
- ];
230
- const emailProvider = emailProviderFromEnv(env.providers.sendgrid);
231
- return (0, utils_1.defineConfig)({
232
- featureFlags: {
233
- translation: true,
217
+ {
218
+ resolve: "@hszrdm/core/providers/resilient-stripe",
219
+ id: "stripe",
220
+ options: {
221
+ apiKey: env.stripeApiKey || "",
222
+ webhookSecret: env.stripeWebhookSecret || undefined,
223
+ capture: true,
224
+ automaticPaymentMethods: true,
225
+ },
234
226
  },
235
- admin: {
236
- path: adminPath,
237
- backendUrl,
227
+ {
228
+ resolve: "@hszrdm/core/providers/simplepay",
229
+ id: "simplepay",
230
+ options: (0, config_1.simplePayOptionsFromEnv)(),
238
231
  },
239
- plugins: [
240
- {
241
- resolve: "@hszrdm/core",
242
- options: {},
243
- },
244
- ],
232
+ ];
233
+ const emailProvider = emailProviderBootstrapOptions(env.providers.sendgrid);
234
+ return (0, utils_1.defineConfig)({
235
+ featureFlags: { translation: true },
236
+ admin: { path: adminPath, backendUrl },
237
+ plugins: [{ resolve: "@hszrdm/core", options: {} }],
245
238
  modules: [
246
239
  ...redisModules,
247
- {
248
- resolve: "@medusajs/medusa/translation",
249
- },
240
+ { resolve: "@medusajs/medusa/translation" },
250
241
  fileModule,
251
242
  {
252
243
  resolve: "@medusajs/medusa/notification",
@@ -255,32 +246,27 @@ function createHszrdmCommerceConfig(options = {}) {
255
246
  {
256
247
  resolve: "@medusajs/medusa/notification-local",
257
248
  id: "local",
258
- options: {
259
- name: "Local Notification Provider",
260
- channels: emailProvider ? ["feed"] : ["feed", "email"],
261
- },
249
+ options: { name: "Local Notification Provider", channels: ["feed"] },
262
250
  },
263
- ...(emailProvider ? [emailProvider] : []),
251
+ emailProvider,
264
252
  ],
265
253
  },
266
254
  },
267
255
  {
268
256
  resolve: "@medusajs/medusa/fulfillment",
257
+ // Order service lets carrier providers resolve recipient contact details
258
+ // missing from Medusa native fulfillment DTOs (including older orders).
259
+ dependencies: ["integrationOperation", "order"],
260
+ options: { providers: fulfillmentProviders },
261
+ },
262
+ {
263
+ resolve: "@medusajs/medusa/payment",
264
+ // Stripe's webhook provider reads the durable operation store from its
265
+ // injected module container; without this dependency Awilix throws
266
+ // "Could not resolve 'integrationOperation'" during webhook processing.
269
267
  dependencies: ["integrationOperation"],
270
- options: {
271
- providers: fulfillmentProviders,
272
- },
268
+ options: { providers: paymentProviders },
273
269
  },
274
- ...(paymentProviders.length
275
- ? [
276
- {
277
- resolve: "@medusajs/medusa/payment",
278
- options: {
279
- providers: paymentProviders,
280
- },
281
- },
282
- ]
283
- : []),
284
270
  ],
285
271
  projectConfig: {
286
272
  databaseUrl: env.databaseUrl,
@@ -295,28 +281,25 @@ function createHszrdmCommerceConfig(options = {}) {
295
281
  },
296
282
  });
297
283
  }
298
- function emailProviderFromEnv(legacySendGridEnabled) {
284
+ function emailProviderBootstrapOptions(legacySendGridEnabled) {
299
285
  const requested = process.env.EMAIL_PROVIDER?.trim().toLowerCase();
300
- const driver = requested || (legacySendGridEnabled ? "sendgrid" : "");
301
- if (!driver)
302
- return null;
303
- if (driver !== "sendgrid" && driver !== "resend") {
304
- throw new Error("[env] EMAIL_PROVIDER must be sendgrid or resend");
305
- }
286
+ const driver = requested === "sendgrid" || requested === "resend"
287
+ ? requested
288
+ : legacySendGridEnabled
289
+ ? "sendgrid"
290
+ : undefined;
306
291
  const apiKey = process.env.EMAIL_API_KEY?.trim() ||
307
292
  (driver === "sendgrid"
308
293
  ? process.env.SENDGRID_API_KEY?.trim()
309
- : process.env.RESEND_API_KEY?.trim());
294
+ : driver === "resend"
295
+ ? process.env.RESEND_API_KEY?.trim()
296
+ : undefined);
310
297
  const from = process.env.EMAIL_FROM?.trim() ||
311
298
  (driver === "sendgrid"
312
299
  ? process.env.SENDGRID_FROM_EMAIL?.trim()
313
- : process.env.RESEND_FROM_EMAIL?.trim());
314
- if (!apiKey) {
315
- throw new Error(`[env] EMAIL_PROVIDER=${driver} requires EMAIL_API_KEY${driver === "sendgrid" ? " or SENDGRID_API_KEY" : " or RESEND_API_KEY"}`);
316
- }
317
- if (!from) {
318
- throw new Error(`[env] EMAIL_PROVIDER=${driver} requires EMAIL_FROM${driver === "sendgrid" ? " or SENDGRID_FROM_EMAIL" : " or RESEND_FROM_EMAIL"}`);
319
- }
300
+ : driver === "resend"
301
+ ? process.env.RESEND_FROM_EMAIL?.trim()
302
+ : undefined);
320
303
  return {
321
304
  resolve: "@hszrdm/core/providers/email",
322
305
  id: "hszrdm-email",
@@ -335,4 +318,4 @@ function numberOrUndefined(value) {
335
318
  const number = Number(value);
336
319
  return Number.isFinite(number) ? number : undefined;
337
320
  }
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSxnRUEyVEM7QUE3VUQscURBQXdEO0FBRXhELCtCQUEwQztBQUMxQyx5REFBc0U7QUFDdEUsc0ZBQWlHO0FBT2pHOzs7Ozs7R0FNRztBQUNILFNBQWdCLDBCQUEwQixDQUN4QyxVQUF1QyxFQUFFO0lBRXpDLElBQUEsa0RBQStCLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUEsd0JBQWtCLEdBQUUsQ0FBQTtJQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUztRQUNoQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFrQixDQUFBO0lBQzdELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQTtJQUV2RSxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUTtRQUMvQixDQUFDLENBQUM7WUFDRTtnQkFDRSxPQUFPLEVBQUUsa0NBQWtDO2dCQUMzQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRTthQUNwQztZQUNEO2dCQUNFLE9BQU8sRUFBRSx3Q0FBd0M7Z0JBQ2pELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7YUFDL0M7WUFDRDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLEVBQUUsRUFBRSxlQUFlOzRCQUNuQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcs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
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSxnRUF3UkM7QUExU0QscURBQXdEO0FBRXhELCtCQUEwQztBQUMxQyx5REFBc0U7QUFDdEUsc0ZBQWlHO0FBT2pHOzs7Ozs7R0FNRztBQUNILFNBQWdCLDBCQUEwQixDQUN4QyxVQUF1QyxFQUFFO0lBRXpDLElBQUEsa0RBQStCLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRTVDLE1BQU0sR0FBRyxHQUFHLElBQUEsd0JBQWtCLEdBQUUsQ0FBQTtJQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUztRQUNoQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksTUFBTSxDQUFrQixDQUFBO0lBQzdELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQTtJQUV2RSxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUTtRQUMvQixDQUFDLENBQUM7WUFDRTtnQkFDRSxPQUFPLEVBQUUsa0NBQWtDO2dCQUMzQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRTthQUNwQztZQUNEO2dCQUNFLE9BQU8sRUFBRSx3Q0FBd0M7Z0JBQ2pELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUU7YUFDL0M7WUFDRDtnQkFDRSxPQUFPLEVBQUUsMEJBQTBCO2dCQUNuQyxPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLEVBQUUsRUFBRSxlQUFlOzRCQUNuQixVQUFVLEVBQUUsSUFBSTs0QkFDaEIsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEdBQUcs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
@@ -0,0 +1,31 @@
1
+ export type CoreDocumentStatus = "draft" | "published" | "archived";
2
+ export type CoreDocumentRecord = {
3
+ id: string;
4
+ title: string;
5
+ description?: string | null;
6
+ document_type: string;
7
+ file_id: string;
8
+ file_url: string;
9
+ file_name: string;
10
+ mime_type?: string | null;
11
+ file_size?: number | null;
12
+ locale?: string | null;
13
+ version?: string | null;
14
+ status: CoreDocumentStatus;
15
+ valid_from?: Date | string | null;
16
+ valid_until?: Date | string | null;
17
+ created_at?: Date | string | null;
18
+ updated_at?: Date | string | null;
19
+ };
20
+ export type CoreDocumentAssignmentRecord = {
21
+ id: string;
22
+ document_id: string;
23
+ target_type: "product" | "category";
24
+ target_id: string;
25
+ display_order?: number | null;
26
+ };
27
+ export declare function isCoreDocumentPublic(document: Pick<CoreDocumentRecord, "status" | "valid_from" | "valid_until">, now?: Date): boolean;
28
+ export declare function normalizeCoreDocumentIds(value: unknown): string[];
29
+ export declare function normalizeCoreDocumentType(value: unknown): string;
30
+ export declare function normalizeCoreDocumentStatus(value: unknown): CoreDocumentStatus;
31
+ export declare function nullableDate(value: unknown): Date | null;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCoreDocumentPublic = isCoreDocumentPublic;
4
+ exports.normalizeCoreDocumentIds = normalizeCoreDocumentIds;
5
+ exports.normalizeCoreDocumentType = normalizeCoreDocumentType;
6
+ exports.normalizeCoreDocumentStatus = normalizeCoreDocumentStatus;
7
+ exports.nullableDate = nullableDate;
8
+ function isCoreDocumentPublic(document, now = new Date()) {
9
+ if (document.status !== "published")
10
+ return false;
11
+ const from = asDate(document.valid_from);
12
+ const until = asDate(document.valid_until);
13
+ if (from && from.getTime() > now.getTime())
14
+ return false;
15
+ if (until && until.getTime() < now.getTime())
16
+ return false;
17
+ return true;
18
+ }
19
+ function normalizeCoreDocumentIds(value) {
20
+ if (!Array.isArray(value))
21
+ return [];
22
+ return [...new Set(value.map((item) => String(item || "").trim()).filter(Boolean))];
23
+ }
24
+ function normalizeCoreDocumentType(value) {
25
+ return String(value || "general").trim().slice(0, 120) || "general";
26
+ }
27
+ function normalizeCoreDocumentStatus(value) {
28
+ const status = String(value || "draft").trim();
29
+ if (status === "draft" || status === "published" || status === "archived")
30
+ return status;
31
+ throw new Error("Érvénytelen dokumentum státusz.");
32
+ }
33
+ function nullableDate(value) {
34
+ if (value == null || value === "")
35
+ return null;
36
+ const date = new Date(String(value));
37
+ if (Number.isNaN(date.getTime()))
38
+ throw new Error("Érvénytelen dátum.");
39
+ return date;
40
+ }
41
+ function asDate(value) {
42
+ if (!value)
43
+ return null;
44
+ const date = value instanceof Date ? value : new Date(value);
45
+ return Number.isNaN(date.getTime()) ? null : date;
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvcmUvZG9jdW1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNkJBLG9EQVVDO0FBRUQsNERBR0M7QUFFRCw4REFFQztBQUVELGtFQUlDO0FBRUQsb0NBS0M7QUFoQ0QsU0FBZ0Isb0JBQW9CLENBQ2xDLFFBQTJFLEVBQzNFLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRTtJQUVoQixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ2pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMxQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ3hELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDMUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsS0FBYztJQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUNwQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNyRixDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsS0FBYztJQUN0RCxPQUFPLE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUE7QUFDckUsQ0FBQztBQUVELFNBQWdCLDJCQUEyQixDQUFDLEtBQWM7SUFDeEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM5QyxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLEtBQUssVUFBVTtRQUFFLE9BQU8sTUFBTSxDQUFBO0lBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtBQUNwRCxDQUFDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLEtBQWM7SUFDekMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDcEMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUN2RSxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxLQUF1QztJQUNyRCxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3ZCLE1BQU0sSUFBSSxHQUFHLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUNuRCxDQUFDIn0=
@@ -1,4 +1,4 @@
1
- export declare const CORE_VERSION = "1.7.0";
1
+ export declare const CORE_VERSION = "1.9.0";
2
2
  export declare const CORE_API_CONTRACT_VERSION = "1.0";
3
3
  export declare const STOREFRONT_CORE_CONFIG_SCHEMA_VERSION = 1;
4
- export declare const CORE_DB_SCHEMA_VERSION = 7;
4
+ export declare const CORE_DB_SCHEMA_VERSION = 9;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CORE_DB_SCHEMA_VERSION = exports.STOREFRONT_CORE_CONFIG_SCHEMA_VERSION = exports.CORE_API_CONTRACT_VERSION = exports.CORE_VERSION = void 0;
4
- exports.CORE_VERSION = "1.7.0";
4
+ exports.CORE_VERSION = "1.9.0";
5
5
  exports.CORE_API_CONTRACT_VERSION = "1.0";
6
6
  exports.STOREFRONT_CORE_CONFIG_SCHEMA_VERSION = 1;
7
- exports.CORE_DB_SCHEMA_VERSION = 7;
7
+ exports.CORE_DB_SCHEMA_VERSION = 9;
8
8
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxZQUFZLEdBQUcsT0FBTyxDQUFBO0FBQ3RCLFFBQUEseUJBQXlCLEdBQUcsS0FBSyxDQUFBO0FBQ2pDLFFBQUEscUNBQXFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3pDLFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFBIn0=
@@ -4,6 +4,7 @@ exports.config = void 0;
4
4
  exports.default = mplStatusSync;
5
5
  exports.runBatch = runBatch;
6
6
  const utils_1 = require("@medusajs/framework/utils");
7
+ const integration_operation_1 = require("../modules/integration-operation");
7
8
  const shipping_1 = require("../lib/modules/shipping");
8
9
  const TERMINAL = new Set(["DELIVERED", "RETURNED", "CANCELLED"]);
9
10
  const PAGE_SIZE = 200;
@@ -26,6 +27,7 @@ async function mplStatusSync(container) {
26
27
  }
27
28
  async function runBatch(container) {
28
29
  const orderService = container.resolve("order");
30
+ const operationStore = container.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
29
31
  let scanned = 0;
30
32
  let refreshed = 0;
31
33
  for (let skip = 0;; skip += PAGE_SIZE) {
@@ -34,17 +36,19 @@ async function runBatch(container) {
34
36
  scanned += 1;
35
37
  if ((0, shipping_1.carrierForOrder)(order) !== "mpl")
36
38
  continue;
37
- const shipment = order.metadata?.mpl;
38
- if (!shipment?.trackingNumber ||
39
- TERMINAL.has(String(shipment.status ?? "").toUpperCase())) {
40
- continue;
41
- }
42
39
  try {
40
+ const hydrated = await (0, shipping_1.resolveShippingOrder)(order, operationStore);
41
+ const shipment = hydrated.metadata?.mpl;
42
+ if (!shipment?.trackingNumber ||
43
+ TERMINAL.has(String(shipment.status ?? "").toUpperCase())) {
44
+ continue;
45
+ }
43
46
  await (0, shipping_1.executeShippingAction)({
44
47
  orderService,
45
48
  orderId: order.id,
46
49
  action: "status",
47
50
  actorId: "mpl-hourly-status-sync",
51
+ operationStore,
48
52
  });
49
53
  refreshed += 1;
50
54
  }
@@ -60,4 +64,4 @@ async function runBatch(container) {
60
64
  // Magyar Posta PULL guidance says the same tracking ID must not be queried more
61
65
  // often than once per hour. PUSH is the primary path; this hourly job is fallback.
62
66
  exports.config = { name: "mpl-status-sync", schedule: "15 * * * *" };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBsLXN0YXR1cy1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvbXBsLXN0YXR1cy1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLGdDQTZCQztBQUVELDRCQTJDQztBQXBGRCxxREFBcUU7QUFDckUsc0RBSWdDO0FBRWhDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0FBQ2hFLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQTtBQUVOLEtBQUssVUFBVSxhQUFhLENBQUMsU0FBMEI7SUFDcEUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN0RixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQU0xQyxDQUFBO0lBRUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLHFCQUFxQixFQUNyQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUNoQyxDQUFBO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLEtBQUssRUFBRSw4QkFBOEI7WUFDckMsR0FBRyxFQUFFLGlCQUFpQjtZQUN0QixPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNoRSxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FBQyxTQUEwQjtJQUN2RCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBb0MsQ0FBQTtJQUNsRixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDZixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUE7SUFFakIsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUksSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FDMUMsRUFBRSxFQUNGLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3pELENBQUE7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLENBQUE7WUFDWixJQUFJLElBQUEsMEJBQWUsRUFBQyxLQUFLLENBQUMsS0FBSyxLQUFLO2dCQUFFLFNBQVE7WUFFOUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUEwQyxDQUFBO1lBQzNFLElBQ0UsQ0FBQyxRQUFRLEVBQUUsY0FBYztnQkFDekIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUN6RCxDQUFDO2dCQUNELFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBQSxnQ0FBcUIsRUFBQztvQkFDMUIsWUFBWTtvQkFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2pCLE1BQU0sRUFBRSxRQUFRO29CQUNoQixPQUFPLEVBQUUsd0JBQXdCO2lCQUNsQyxDQUFDLENBQUE7Z0JBQ0YsU0FBUyxJQUFJLENBQUMsQ0FBQTtZQUNoQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUNYLHFCQUFxQixLQUFLLENBQUMsRUFBRSxHQUFHLEVBQ2hDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDL0MsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVM7WUFBRSxNQUFLO0lBQ3RDLENBQUM7SUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQy9CLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsbUZBQW1GO0FBQ3RFLFFBQUEsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQSJ9
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBsLXN0YXR1cy1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvbXBsLXN0YXR1cy1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBLGdDQTZCQztBQUVELDRCQThDQztBQXpGRCxxREFBcUU7QUFDckUsNEVBQWlIO0FBQ2pILHNEQUtnQztBQUVoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFFTixLQUFLLFVBQVUsYUFBYSxDQUFDLFNBQTBCO0lBQ3BFLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDdEYsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FNMUMsQ0FBQTtJQUVELElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxPQUFPLENBQUMsT0FBTyxDQUMxQixxQkFBcUIsRUFDckIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FDaEMsQ0FBQTtJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUNULElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLEdBQUcsRUFBRSxpQkFBaUI7WUFDdEIsT0FBTyxFQUFFLEtB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
@@ -0,0 +1,5 @@
1
+ import type { ShippingCarrier } from "../lib/modules/shipping/types";
2
+ /** Only valid, nonterminal physical parcels should be polled.
3
+ * MPL and DPD use their dedicated carrier-compliant sync jobs.
4
+ */
5
+ export declare function shouldRefreshShippingStatus(carrier: ShippingCarrier, value: unknown): boolean;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shouldRefreshShippingStatus = shouldRefreshShippingStatus;
4
+ const TERMINAL = new Set([
5
+ "DELIVERED", "RETURNED", "CANCELLED", "CANCELED", "DELETED",
6
+ "VOID", "VOIDED", "DESTROYED", "LOST", "FAILED", "REJECTED",
7
+ ]);
8
+ /** Only valid, nonterminal physical parcels should be polled.
9
+ * MPL and DPD use their dedicated carrier-compliant sync jobs.
10
+ */
11
+ function shouldRefreshShippingStatus(carrier, value) {
12
+ if (carrier === "mpl" || carrier === "dpd")
13
+ return false;
14
+ if (!value || typeof value !== "object" || Array.isArray(value))
15
+ return false;
16
+ const shipment = value;
17
+ const status = String(shipment.status ?? "").trim().toUpperCase();
18
+ if (TERMINAL.has(status))
19
+ return false;
20
+ const identifier = carrier === "foxpost" ? shipment.packageId ?? shipment.trackingNumber
21
+ : carrier === "gls" ? shipment.parcelId ?? shipment.parcelNumber
22
+ : carrier === "packeta" ? shipment.packetId
23
+ : shipment.identifier;
24
+ return identifier !== null && identifier !== undefined && String(identifier).trim().length > 0;
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctc3RhdHVzLXN5bmMtZWxpZ2liaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9zaGlwcGluZy1zdGF0dXMtc3luYy1lbGlnaWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBLGtFQWNDO0FBdEJELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3ZCLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTO0lBQzNELE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVTtDQUM1RCxDQUFDLENBQUE7QUFFRjs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUN6QyxPQUF3QixFQUN4QixLQUFjO0lBRWQsSUFBSSxPQUFPLEtBQUssS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDeEQsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUM3RSxNQUFNLFFBQVEsR0FBRyxLQUFnQyxDQUFBO0lBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ2pFLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN0QyxNQUFNLFVBQVUsR0FBRyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxjQUFjO1FBQ3RGLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxZQUFZO1lBQ2hFLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUTtnQkFDM0MsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUE7SUFDdkIsT0FBTyxVQUFVLEtBQUssSUFBSSxJQUFJLFVBQVUsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7QUFDaEcsQ0FBQyJ9
@@ -1,11 +1,17 @@
1
1
  import type { MedusaContainer } from "@medusajs/framework/types";
2
2
  export default function shippingStatusSync(container: MedusaContainer): Promise<{
3
3
  scanned: number;
4
+ eligible: number;
5
+ pending: number;
4
6
  refreshed: number;
7
+ failed: number;
5
8
  } | undefined>;
6
9
  export declare function runBatch(container: MedusaContainer): Promise<{
7
10
  scanned: number;
11
+ eligible: number;
12
+ pending: number;
8
13
  refreshed: number;
14
+ failed: number;
9
15
  }>;
10
16
  export declare const config: {
11
17
  name: string;
@@ -4,13 +4,16 @@ exports.config = void 0;
4
4
  exports.default = shippingStatusSync;
5
5
  exports.runBatch = runBatch;
6
6
  const utils_1 = require("@medusajs/framework/utils");
7
+ const integration_operation_1 = require("../modules/integration-operation");
7
8
  const shipping_1 = require("../lib/modules/shipping");
8
- const TERMINAL = new Set(["DELIVERED", "RETURNED", "CANCELLED"]);
9
+ const shipping_status_sync_eligibility_1 = require("./shipping-status-sync-eligibility");
9
10
  const PAGE_SIZE = 200;
10
11
  async function shippingStatusSync(container) {
12
+ if (process.env.SHIPPING_STATUS_SYNC_ENABLED === "false")
13
+ return;
11
14
  const locking = container.resolve("locking");
12
15
  try {
13
- return await locking.execute("job:shipping-status-sync", () => runBatch(container), { timeout: 1, expire: 840 });
16
+ return await locking.execute("job:shipping-status-sync", () => runBatch(container), { timeout: 1, expire: 29 * 60 });
14
17
  }
15
18
  catch (error) {
16
19
  const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
@@ -23,44 +26,76 @@ async function shippingStatusSync(container) {
23
26
  }
24
27
  async function runBatch(container) {
25
28
  const orderService = container.resolve("order");
29
+ const operationStore = container.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
30
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
31
+ const limitRaw = Number(process.env.SHIPPING_STATUS_SYNC_BATCH_SIZE || 100);
32
+ const batchLimit = Number.isInteger(limitRaw) && limitRaw > 0
33
+ ? Math.min(limitRaw, 500) : 100;
26
34
  let scanned = 0;
35
+ let eligible = 0;
27
36
  let refreshed = 0;
37
+ let failed = 0;
38
+ // Select the least recently refreshed parcels first. A fixed cap on the
39
+ // newest orders would otherwise starve older parcels indefinitely.
40
+ const candidates = [];
28
41
  for (let skip = 0;; skip += PAGE_SIZE) {
29
42
  const orders = await orderService.listOrders({}, { take: PAGE_SIZE, skip, order: { created_at: "DESC" } });
30
- for (const order of orders) {
43
+ for (const original of orders) {
31
44
  scanned += 1;
32
- const carrier = (0, shipping_1.carrierForOrder)(order);
33
- if (!carrier)
34
- continue;
35
- // MPL uses the official PUSH stream with an hourly PULL fallback.
36
- // DPD physical transit is supplied by Statusdata, not the Shipping API.
37
- if (carrier === "mpl" || carrier === "dpd")
38
- continue;
39
- const shipment = order.metadata?.[carrier];
40
- const hasParcel = carrier === "foxpost"
41
- ? Boolean(shipment?.packageId)
42
- : carrier === "packeta"
43
- ? Boolean(shipment?.packetId)
44
- : Boolean(shipment?.parcelNumber);
45
- if (!hasParcel || TERMINAL.has(String(shipment?.status ?? "").toUpperCase()))
45
+ const carrier = (0, shipping_1.carrierForOrder)(original);
46
+ if (!carrier || carrier === "mpl" || carrier === "dpd")
46
47
  continue;
48
+ let order;
47
49
  try {
48
- await (0, shipping_1.executeShippingAction)({
49
- orderService,
50
- orderId: order.id,
51
- action: "status",
52
- actorId: "scheduled-status-sync",
53
- });
54
- refreshed += 1;
50
+ order = await (0, shipping_1.resolveShippingOrder)(original, operationStore);
55
51
  }
56
52
  catch (error) {
57
- console.error(`[shipping-status-sync] ${carrier} ${order.id}:`, error instanceof Error ? error.message : error);
53
+ failed += 1;
54
+ logger.warn(`[shipping-status-sync] hydrate ${original.id}: ${error instanceof Error ? error.message : String(error)}`);
55
+ continue;
58
56
  }
57
+ const shipment = order.metadata?.[carrier];
58
+ if (!(0, shipping_status_sync_eligibility_1.shouldRefreshShippingStatus)(carrier, shipment))
59
+ continue;
60
+ const fields = shipment;
61
+ const time = Date.parse(String(fields.statusUpdatedAt ?? ""));
62
+ candidates.push({
63
+ orderId: order.id,
64
+ carrier,
65
+ checkedAt: Number.isFinite(time) ? time : 0,
66
+ });
59
67
  }
60
68
  if (orders.length < PAGE_SIZE)
61
69
  break;
62
70
  }
63
- return { scanned, refreshed };
71
+ candidates.sort((a, b) => a.checkedAt - b.checkedAt);
72
+ // When the configured batch limit is reached, remaining orders will receive
73
+ // their turn on the next execution instead of always refreshing newest first.
74
+ for (const candidate of candidates.slice(0, batchLimit)) {
75
+ eligible += 1;
76
+ try {
77
+ await (0, shipping_1.executeShippingAction)({
78
+ orderService,
79
+ orderId: candidate.orderId,
80
+ action: "status",
81
+ actorId: "scheduled-status-sync",
82
+ operationStore,
83
+ });
84
+ refreshed += 1;
85
+ }
86
+ catch (error) {
87
+ failed += 1;
88
+ logger.warn(`[shipping-status-sync] ${candidate.carrier} ${candidate.orderId}: ${error instanceof Error ? error.message : String(error)}`);
89
+ }
90
+ }
91
+ logger.info(JSON.stringify({
92
+ event: "shipping_status_sync_complete",
93
+ scanned, eligible, pending: candidates.length - eligible, refreshed, failed, batchLimit,
94
+ }));
95
+ return { scanned, eligible, pending: candidates.length - eligible, refreshed, failed };
64
96
  }
65
- exports.config = { name: "shipping-status-sync", schedule: "*/15 * * * *" };
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctc3RhdHVzLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9zaGlwcGluZy1zdGF0dXMtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxxQ0F5QkM7QUFFRCw0QkFpREM7QUF0RkQscURBQXFFO0FBQ3JFLHNEQUlnQztBQUVoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFFTixLQUFLLFVBQVUsa0JBQWtCLENBQUMsU0FBMEI7SUFDekUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBTTFDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDMUIsMEJBQTBCLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDekIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDNUIsQ0FBQTtJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUNULElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDaEUsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUss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
97
+ // MPL tracking is PULL at most once/hour with PUSH as primary.
98
+ // DPD Hungary physical tracking comes from hourly Statusdata FTP feeds.
99
+ // FOXPOST, GLS, Packeta and Csomagpiac are polled at 30-minute intervals.
100
+ exports.config = { name: "shipping-status-sync", schedule: "*/30 * * * *" };
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctc3RhdHVzLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9zaGlwcGluZy1zdGF0dXMtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQkEscUNBeUJDO0FBRUQsNEJBd0VDO0FBbkhELHFEQUFxRTtBQUNyRSw0RUFHeUM7QUFDekMsc0RBTWdDO0FBQ2hDLHlGQUFnRjtBQUVoRixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFFTixLQUFLLFVBQVUsa0JBQWtCLENBQUMsU0FBMEI7SUFDekUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixLQUFLLE9BQU87UUFBRSxPQUFNO0lBRWhFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQU0xQyxDQUFBO0lBRUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLDBCQUEwQixFQUMxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUNoQyxDQUFBO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN6QixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDaEUsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0FBQ0gs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