@hszrdm/core 1.3.0 → 1.5.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 (166) hide show
  1. package/.medusa/server/src/admin/index.js +5572 -3759
  2. package/.medusa/server/src/admin/index.mjs +5572 -3759
  3. package/.medusa/server/src/api/admin/back-in-stock/route.d.ts +2 -0
  4. package/.medusa/server/src/api/admin/back-in-stock/route.js +70 -0
  5. package/.medusa/server/src/api/admin/customer-activation/route.d.ts +2 -0
  6. package/.medusa/server/src/api/admin/customer-activation/route.js +97 -0
  7. package/.medusa/server/src/api/admin/customer-import/route.d.ts +2 -0
  8. package/.medusa/server/src/api/admin/customer-import/route.js +166 -0
  9. package/.medusa/server/src/api/admin/order-export/route.d.ts +2 -0
  10. package/.medusa/server/src/api/admin/order-export/route.js +88 -0
  11. package/.medusa/server/src/api/admin/product-migration/inventory/route.d.ts +3 -0
  12. package/.medusa/server/src/api/admin/product-migration/inventory/route.js +164 -0
  13. package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.d.ts +3 -0
  14. package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.js +204 -0
  15. package/.medusa/server/src/api/admin/product-migration/products/route.d.ts +2 -0
  16. package/.medusa/server/src/api/admin/product-migration/products/route.js +24 -0
  17. package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +36 -4
  18. package/.medusa/server/src/api/admin/product-reviews/settings/route.d.ts +3 -0
  19. package/.medusa/server/src/api/admin/product-reviews/settings/route.js +63 -0
  20. package/.medusa/server/src/api/admin/system-runtime/route.d.ts +2 -0
  21. package/.medusa/server/src/api/admin/system-runtime/route.js +18 -0
  22. package/.medusa/server/src/api/hooks/packeta/status/route.d.ts +2 -0
  23. package/.medusa/server/src/api/hooks/packeta/status/route.js +55 -0
  24. package/.medusa/server/src/api/mcp/route.d.ts +4 -0
  25. package/.medusa/server/src/api/mcp/route.js +19 -0
  26. package/.medusa/server/src/api/middlewares.js +16 -1
  27. package/.medusa/server/src/api/store/abandoned-cart/recover/route.d.ts +2 -0
  28. package/.medusa/server/src/api/store/abandoned-cart/recover/route.js +37 -0
  29. package/.medusa/server/src/api/store/back-in-stock/route.d.ts +8 -0
  30. package/.medusa/server/src/api/store/back-in-stock/route.js +124 -0
  31. package/.medusa/server/src/api/store/customer-activation/complete/route.d.ts +2 -0
  32. package/.medusa/server/src/api/store/customer-activation/complete/route.js +96 -0
  33. package/.medusa/server/src/api/store/customer-activation/route.d.ts +2 -0
  34. package/.medusa/server/src/api/store/customer-activation/route.js +34 -0
  35. package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +1 -0
  36. package/.medusa/server/src/api/store/products/[id]/reviews/route.js +76 -34
  37. package/.medusa/server/src/api/store/review-request/route.d.ts +2 -0
  38. package/.medusa/server/src/api/store/review-request/route.js +60 -0
  39. package/.medusa/server/src/config.d.ts +1 -1
  40. package/.medusa/server/src/core/abandoned-cart.d.ts +64 -0
  41. package/.medusa/server/src/core/abandoned-cart.js +197 -0
  42. package/.medusa/server/src/core/back-in-stock.d.ts +51 -0
  43. package/.medusa/server/src/core/back-in-stock.js +107 -0
  44. package/.medusa/server/src/core/checkout-contract.d.ts +1 -0
  45. package/.medusa/server/src/core/checkout-contract.js +2 -1
  46. package/.medusa/server/src/core/customer-account-contract.d.ts +3 -0
  47. package/.medusa/server/src/core/customer-account-contract.js +4 -1
  48. package/.medusa/server/src/core/customer-activation.d.ts +120 -0
  49. package/.medusa/server/src/core/customer-activation.js +169 -0
  50. package/.medusa/server/src/core/customer-email.d.ts +1 -1
  51. package/.medusa/server/src/core/customer-email.js +4 -1
  52. package/.medusa/server/src/core/native-migration-export.d.ts +6 -0
  53. package/.medusa/server/src/core/native-migration-export.js +105 -0
  54. package/.medusa/server/src/core/order-export.d.ts +11 -0
  55. package/.medusa/server/src/core/order-export.js +297 -0
  56. package/.medusa/server/src/core/review-request.d.ts +61 -0
  57. package/.medusa/server/src/core/review-request.js +105 -0
  58. package/.medusa/server/src/core/review-reward.d.ts +94 -0
  59. package/.medusa/server/src/core/review-reward.js +124 -0
  60. package/.medusa/server/src/core/runtime-health.d.ts +39 -0
  61. package/.medusa/server/src/core/runtime-health.js +250 -0
  62. package/.medusa/server/src/core/store-mcp.d.ts +19 -0
  63. package/.medusa/server/src/core/store-mcp.js +541 -0
  64. package/.medusa/server/src/core/storefront-core-config.d.ts +10 -0
  65. package/.medusa/server/src/core/storefront-core-config.js +26 -1
  66. package/.medusa/server/src/core/version.d.ts +2 -2
  67. package/.medusa/server/src/core/version.js +2 -2
  68. package/.medusa/server/src/jobs/abandoned-cart-recovery.d.ts +23 -0
  69. package/.medusa/server/src/jobs/abandoned-cart-recovery.js +138 -0
  70. package/.medusa/server/src/jobs/back-in-stock-reconciliation.d.ts +15 -0
  71. package/.medusa/server/src/jobs/back-in-stock-reconciliation.js +90 -0
  72. package/.medusa/server/src/jobs/dpd-statusdata-sync.d.ts +17 -0
  73. package/.medusa/server/src/jobs/dpd-statusdata-sync.js +107 -0
  74. package/.medusa/server/src/jobs/mpl-push-tracking.d.ts +19 -0
  75. package/.medusa/server/src/jobs/mpl-push-tracking.js +183 -0
  76. package/.medusa/server/src/jobs/mpl-status-sync.d.ts +8 -2
  77. package/.medusa/server/src/jobs/mpl-status-sync.js +12 -7
  78. package/.medusa/server/src/jobs/product-review-request-dispatch.d.ts +28 -0
  79. package/.medusa/server/src/jobs/product-review-request-dispatch.js +84 -0
  80. package/.medusa/server/src/jobs/runtime-heartbeat.d.ts +12 -0
  81. package/.medusa/server/src/jobs/runtime-heartbeat.js +13 -0
  82. package/.medusa/server/src/jobs/shipping-status-sync.d.ts +8 -2
  83. package/.medusa/server/src/jobs/shipping-status-sync.js +11 -14
  84. package/.medusa/server/src/lib/modules/shipping/idempotency.js +3 -3
  85. package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
  86. package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
  87. package/.medusa/server/src/lib/modules/shipping/tracking.d.ts +48 -0
  88. package/.medusa/server/src/lib/modules/shipping/tracking.js +368 -0
  89. package/.medusa/server/src/lib/modules/shipping/webhooks.d.ts +6 -9
  90. package/.medusa/server/src/lib/modules/shipping/webhooks.js +24 -137
  91. package/.medusa/server/src/localized-config.d.ts +1 -1
  92. package/.medusa/server/src/modules/back-in-stock/index.d.ts +23 -0
  93. package/.medusa/server/src/modules/back-in-stock/index.js +16 -0
  94. package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.d.ts +5 -0
  95. package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.js +18 -0
  96. package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.d.ts +13 -0
  97. package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.js +23 -0
  98. package/.medusa/server/src/modules/back-in-stock/service.d.ts +22 -0
  99. package/.medusa/server/src/modules/back-in-stock/service.js +12 -0
  100. package/.medusa/server/src/modules/cms/index.d.ts +32 -1
  101. package/.medusa/server/src/modules/core-audit/index.d.ts +18 -1
  102. package/.medusa/server/src/modules/core-audit/writer.d.ts +14 -1
  103. package/.medusa/server/src/modules/email-center/abandoned-cart-registration.d.ts +1 -0
  104. package/.medusa/server/src/modules/email-center/abandoned-cart-registration.js +27 -0
  105. package/.medusa/server/src/modules/email-center/back-in-stock-registration.d.ts +1 -0
  106. package/.medusa/server/src/modules/email-center/back-in-stock-registration.js +27 -0
  107. package/.medusa/server/src/modules/email-center/campaign.d.ts +69 -3
  108. package/.medusa/server/src/modules/email-center/defaults.js +7 -1
  109. package/.medusa/server/src/modules/email-center/index.d.ts +49 -1
  110. package/.medusa/server/src/modules/email-center/index.js +3 -1
  111. package/.medusa/server/src/modules/integration-operation/index.d.ts +18 -1
  112. package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.d.ts +1 -0
  113. package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.js +30 -0
  114. package/.medusa/server/src/modules/integration-settings/index.d.ts +19 -1
  115. package/.medusa/server/src/modules/integration-settings/index.js +2 -1
  116. package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -1
  117. package/.medusa/server/src/modules/lead/index.d.ts +18 -1
  118. package/.medusa/server/src/modules/legal-consent/consent.d.ts +4 -4
  119. package/.medusa/server/src/modules/legal-consent/index.d.ts +46 -1
  120. package/.medusa/server/src/modules/newsletter/index.d.ts +18 -1
  121. package/.medusa/server/src/modules/product-review/index.d.ts +32 -1
  122. package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.d.ts +5 -0
  123. package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.js +28 -0
  124. package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.d.ts +5 -0
  125. package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.js +20 -0
  126. package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.d.ts +5 -0
  127. package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.js +18 -0
  128. package/.medusa/server/src/modules/product-review/models/product-review-settings.d.ts +15 -0
  129. package/.medusa/server/src/modules/product-review/models/product-review-settings.js +19 -0
  130. package/.medusa/server/src/modules/product-review/models/product-review.d.ts +6 -2
  131. package/.medusa/server/src/modules/product-review/models/product-review.js +7 -3
  132. package/.medusa/server/src/modules/product-review/service.d.ts +22 -1
  133. package/.medusa/server/src/modules/product-review/service.js +3 -2
  134. package/.medusa/server/src/modules/quote-request/index.d.ts +18 -1
  135. package/.medusa/server/src/modules/seo/index.d.ts +32 -1
  136. package/.medusa/server/src/modules/webshop-analytics/index.d.ts +18 -1
  137. package/.medusa/server/src/modules/wishlist/index.d.ts +18 -1
  138. package/.medusa/server/src/providers/dpd/index.d.ts +3 -1
  139. package/.medusa/server/src/providers/dpd/index.js +3 -1
  140. package/.medusa/server/src/providers/dpd/statusdata-ftp.d.ts +16 -0
  141. package/.medusa/server/src/providers/dpd/statusdata-ftp.js +268 -0
  142. package/.medusa/server/src/providers/dpd/statusdata.d.ts +14 -0
  143. package/.medusa/server/src/providers/dpd/statusdata.js +161 -0
  144. package/.medusa/server/src/providers/email/index.d.ts +1 -1
  145. package/.medusa/server/src/providers/foxpost/index.d.ts +1 -1
  146. package/.medusa/server/src/providers/gls/index.d.ts +1 -1
  147. package/.medusa/server/src/providers/mpl/client.d.ts +3 -1
  148. package/.medusa/server/src/providers/mpl/client.js +154 -2
  149. package/.medusa/server/src/providers/mpl/index.d.ts +1 -1
  150. package/.medusa/server/src/providers/mpl/service.js +31 -20
  151. package/.medusa/server/src/providers/mpl/types.d.ts +25 -0
  152. package/.medusa/server/src/providers/mpl/types.js +1 -1
  153. package/.medusa/server/src/providers/packeta/index.d.ts +2 -1
  154. package/.medusa/server/src/providers/packeta/index.js +2 -1
  155. package/.medusa/server/src/providers/packeta/push-tracking.d.ts +8 -0
  156. package/.medusa/server/src/providers/packeta/push-tracking.js +96 -0
  157. package/.medusa/server/src/providers/packeta/service.js +22 -2
  158. package/.medusa/server/src/providers/resilient-stripe/index.d.ts +1 -1
  159. package/.medusa/server/src/providers/simplepay/index.d.ts +1 -1
  160. package/.medusa/server/src/scripts/core-init.d.ts +1 -1
  161. package/.medusa/server/src/scripts/core-init.js +3 -2
  162. package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.d.ts +7 -0
  163. package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.js +65 -0
  164. package/.medusa/server/src/workflows/link-migrated-customer.d.ts +8 -0
  165. package/.medusa/server/src/workflows/link-migrated-customer.js +17 -0
  166. package/package.json +2 -1
@@ -15,6 +15,19 @@ function publicValue(item, name) {
15
15
  const raw = item.values?.[name];
16
16
  return typeof raw === "string" && raw.trim() ? raw.trim() : null;
17
17
  }
18
+ function publicBoolean(item, name) {
19
+ if (!item || !isAvailable(item))
20
+ return false;
21
+ const raw = item.values?.[name];
22
+ return raw === "true";
23
+ }
24
+ function googleAdsSendTo(item) {
25
+ const id = publicValue(item, "GOOGLE_ADS_CONVERSION_ID");
26
+ const label = publicValue(item, "GOOGLE_ADS_PURCHASE_CONVERSION_LABEL");
27
+ if (!id || !label)
28
+ return null;
29
+ return `${id}/${label}`;
30
+ }
18
31
  function buildStorefrontCoreConfig(input) {
19
32
  const stripe = integration(input.integrations, "stripe");
20
33
  const simplepay = integration(input.integrations, "simplepay");
@@ -27,11 +40,13 @@ function buildStorefrontCoreConfig(input) {
27
40
  const fogyasztobarat = integration(input.integrations, "fogyasztobarat");
28
41
  const googleAnalytics = integration(input.integrations, "google-analytics");
29
42
  const googleTagManager = integration(input.integrations, "google-tag-manager");
43
+ const googleAds = integration(input.integrations, "google-ads");
30
44
  const googleSearchConsole = integration(input.integrations, "google-search-console");
31
45
  const googleMerchant = integration(input.integrations, "google-merchant");
32
46
  const afterSalesEnabled = Boolean(input.afterSales.enabled);
33
47
  const analyticsEnabled = isAvailable(googleAnalytics) || isAvailable(googleTagManager);
34
48
  const merchantFeedEnabled = isAvailable(googleMerchant);
49
+ const googleAdsEnabled = isAvailable(googleAds);
35
50
  return {
36
51
  schema_version: 1,
37
52
  store: {
@@ -51,6 +66,7 @@ function buildStorefrontCoreConfig(input) {
51
66
  seo: true,
52
67
  analytics: analyticsEnabled,
53
68
  merchant_feed: merchantFeedEnabled,
69
+ google_ads: googleAdsEnabled,
54
70
  },
55
71
  account: {
56
72
  enabled: true,
@@ -153,6 +169,15 @@ function buildStorefrontCoreConfig(input) {
153
169
  enabled: merchantFeedEnabled,
154
170
  feed_endpoint: "/store/feeds/google-merchant.xml",
155
171
  },
172
+ google_ads: {
173
+ enabled: googleAdsEnabled,
174
+ consent_required: true,
175
+ conversion_id: publicValue(googleAds, "GOOGLE_ADS_CONVERSION_ID"),
176
+ purchase_conversion_label: publicValue(googleAds, "GOOGLE_ADS_PURCHASE_CONVERSION_LABEL"),
177
+ purchase_send_to: googleAdsSendTo(googleAds),
178
+ remarketing_enabled: publicBoolean(googleAds, "GOOGLE_ADS_REMARKETING_ENABLED"),
179
+ google_tag_manager_enabled: isAvailable(googleTagManager),
180
+ },
156
181
  },
157
182
  checkout: {
158
183
  payment_availability: checkout_contract_1.CHECKOUT_BEHAVIOR.payment_availability,
@@ -170,4 +195,4 @@ function buildStorefrontCoreConfig(input) {
170
195
  },
171
196
  };
172
197
  }
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVmcm9udC1jb3JlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3N0b3JlZnJvbnQtY29yZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE2TEEsOERBaUtDO0FBN1ZELDJFQUtvQztBQUNwQywyREFNNEI7QUE0SjVCLFNBQVMsV0FBVyxDQUNsQixZQUE2QyxFQUM3QyxHQUFXO0lBRVgsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0FBQ3RELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUErQztJQUNsRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLElBQStDLEVBQy9DLElBQVk7SUFFWixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ2xFLENBQUM7QUFFRCxTQUFnQix5QkFBeUIsQ0FBQyxLQUt6QztJQUNDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3hELE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzlELE1BQU0s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
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVmcm9udC1jb3JlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3N0b3JlZnJvbnQtY29yZS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1TkEsOERBbUxDO0FBellELDJFQUtvQztBQUNwQywyREFNNEI7QUFzSzVCLFNBQVMsV0FBVyxDQUNsQixZQUE2QyxFQUM3QyxHQUFXO0lBRVgsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFBO0FBQ3RELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUErQztJQUNsRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLElBQStDLEVBQy9DLElBQVk7SUFFWixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQzVDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ2xFLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FDcEIsSUFBK0MsRUFDL0MsSUFBWTtJQUVaLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDN0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0lB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
@@ -1,4 +1,4 @@
1
- export declare const CORE_VERSION = "1.3.0";
1
+ export declare const CORE_VERSION = "1.5.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 = 5;
4
+ export declare const CORE_DB_SCHEMA_VERSION = 6;
@@ -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.3.0";
4
+ exports.CORE_VERSION = "1.5.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 = 5;
7
+ exports.CORE_DB_SCHEMA_VERSION = 6;
8
8
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxZQUFZLEdBQUcsT0FBTyxDQUFBO0FBQ3RCLFFBQUEseUJBQXlCLEdBQUcsS0FBSyxDQUFBO0FBQ2pDLFFBQUEscUNBQXFDLEdBQUcsQ0FBQyxDQUFBO0FBQ3pDLFFBQUEsc0JBQXNCLEdBQUcsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,23 @@
1
+ import type { MedusaContainer } from "@medusajs/framework/types";
2
+ export default function abandonedCartRecovery(container: MedusaContainer): Promise<{
3
+ scanned: number;
4
+ sent: number;
5
+ delayHours?: undefined;
6
+ } | {
7
+ scanned: number;
8
+ sent: number;
9
+ delayHours: number;
10
+ } | undefined>;
11
+ export declare function runBatch(container: MedusaContainer): Promise<{
12
+ scanned: number;
13
+ sent: number;
14
+ delayHours?: undefined;
15
+ } | {
16
+ scanned: number;
17
+ sent: number;
18
+ delayHours: number;
19
+ }>;
20
+ export declare const config: {
21
+ name: string;
22
+ schedule: string;
23
+ };
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = abandonedCartRecovery;
5
+ exports.runBatch = runBatch;
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const integration_settings_1 = require("../modules/integration-settings");
8
+ const abandoned_cart_1 = require("../core/abandoned-cart");
9
+ const PAGE_SIZE = 100;
10
+ async function abandonedCartRecovery(container) {
11
+ const locking = container.resolve("locking");
12
+ try {
13
+ return await locking.execute("job:abandoned-cart-recovery", () => runBatch(container), { timeout: 1, expire: 3300 });
14
+ }
15
+ catch (error) {
16
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
17
+ logger.info(JSON.stringify({
18
+ event: "scheduled_job_skipped_locked",
19
+ job: "abandoned-cart-recovery",
20
+ message: error instanceof Error ? error.message : String(error),
21
+ }));
22
+ }
23
+ }
24
+ async function runBatch(container) {
25
+ const settingsStore = container.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
26
+ const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(settingsStore, "abandoned-cart");
27
+ const settings = (0, abandoned_cart_1.normalizeAbandonedCartConfig)(resolved.env);
28
+ if (!resolved.enabled || !settings.enabled)
29
+ return { scanned: 0, sent: 0 };
30
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
31
+ const cartService = container.resolve(utils_1.Modules.CART);
32
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
33
+ const cutoff = new Date(Date.now() - settings.delayHours * 60 * 60 * 1000);
34
+ let cursor = null;
35
+ let scanned = 0;
36
+ let sent = 0;
37
+ while (true) {
38
+ const { data: carts } = await query.graph({
39
+ entity: "cart",
40
+ fields: [
41
+ "id",
42
+ "email",
43
+ "locale",
44
+ "currency_code",
45
+ "updated_at",
46
+ "completed_at",
47
+ "metadata",
48
+ "items.quantity",
49
+ ],
50
+ filters: {
51
+ updated_at: { $lte: cutoff },
52
+ email: { $ne: null },
53
+ completed_at: null,
54
+ ...(cursor ? { id: { $gt: cursor } } : {}),
55
+ },
56
+ pagination: {
57
+ take: PAGE_SIZE,
58
+ order: { id: "ASC" },
59
+ },
60
+ });
61
+ if (!carts.length)
62
+ break;
63
+ for (const cart of carts) {
64
+ cursor = cart.id;
65
+ scanned += 1;
66
+ if (!cart.email)
67
+ continue;
68
+ if (cart.completed_at)
69
+ continue;
70
+ if (!Array.isArray(cart.items) || !cart.items.some((item) => Number(item?.quantity) > 0))
71
+ continue;
72
+ if (cart.metadata?.abandoned_cart_recovery_sent_at)
73
+ continue;
74
+ try {
75
+ // Newsletter is the existing marketing-consent source of truth. Do not
76
+ // create a coupon or send a recovery message to unsubscribed addresses.
77
+ const subscriber = await (0, abandoned_cart_1.subscribedNewsletterRecipient)(container, cart.email);
78
+ if (!subscriber)
79
+ continue;
80
+ const existingCoupon = settings.couponEnabled
81
+ ? String(cart.metadata?.abandoned_cart_recovery_coupon_code || "").trim() || null
82
+ : null;
83
+ const coupon = settings.couponEnabled && !existingCoupon
84
+ ? await (0, abandoned_cart_1.issueAbandonedCartCoupon)({ container: container, cartId: cart.id, config: settings })
85
+ : existingCoupon
86
+ ? {
87
+ id: cart.metadata?.abandoned_cart_recovery_promotion_id || null,
88
+ code: existingCoupon,
89
+ existing: true,
90
+ }
91
+ : null;
92
+ if (coupon?.code && !existingCoupon) {
93
+ await cartService.updateCarts({
94
+ id: cart.id,
95
+ metadata: {
96
+ abandoned_cart_recovery_coupon_code: coupon.code,
97
+ abandoned_cart_recovery_promotion_id: coupon.id || null,
98
+ },
99
+ });
100
+ cart.metadata = {
101
+ ...(cart.metadata || {}),
102
+ abandoned_cart_recovery_coupon_code: coupon.code,
103
+ abandoned_cart_recovery_promotion_id: coupon.id || null,
104
+ };
105
+ }
106
+ const result = await (0, abandoned_cart_1.sendAbandonedCartRecoveryEmail)({
107
+ container: container,
108
+ cart,
109
+ config: settings,
110
+ couponCode: coupon?.code || null,
111
+ });
112
+ if (result?.skipped && "reason" in result && result.reason === "not-subscribed")
113
+ continue;
114
+ await cartService.updateCarts({
115
+ id: cart.id,
116
+ metadata: {
117
+ abandoned_cart_recovery_sent_at: new Date().toISOString(),
118
+ abandoned_cart_recovery_delay_hours: settings.delayHours,
119
+ ...(coupon?.code ? {
120
+ abandoned_cart_recovery_coupon_code: coupon.code,
121
+ abandoned_cart_recovery_promotion_id: coupon.id || null,
122
+ } : {}),
123
+ },
124
+ });
125
+ if (!result?.skipped)
126
+ sent += 1;
127
+ }
128
+ catch (error) {
129
+ logger.warn(`[abandoned-cart-recovery] ${cart.id}: ${error instanceof Error ? error.message : String(error)}`);
130
+ }
131
+ }
132
+ if (carts.length < PAGE_SIZE)
133
+ break;
134
+ }
135
+ return { scanned, sent, delayHours: settings.delayHours };
136
+ }
137
+ exports.config = { name: "abandoned-cart-recovery", schedule: "30 * * * *" };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJhbmRvbmVkLWNhcnQtcmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9hYmFuZG9uZWQtY2FydC1yZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQkEsd0NBbUJDO0FBRUQsNEJBa0hDO0FBcktELHFEQUE4RTtBQUM5RSwwRUFJd0M7QUFDeEMsMkRBSytCO0FBRS9CLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQTtBQWlCTixLQUFLLFVBQVUscUJBQXFCLENBQUMsU0FBMEI7SUFDNUUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBRTFDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDMUIsNkJBQTZCLEVBQzdCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDekIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDN0IsQ0FBQTtJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDekIsS0FBSyxFQUFFLDhCQUE4QjtZQUNyQyxHQUFHLEVBQUUseUJBQXlCO1lBQzlCLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2hFLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsUUFBUSxDQUFDLFNBQTBCO0lBQ3ZELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENB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
@@ -0,0 +1,15 @@
1
+ import type { MedusaContainer } from "@medusajs/framework/types";
2
+ export default function backInStockReconciliation(container: MedusaContainer): Promise<{
3
+ scanned: number;
4
+ variants: number;
5
+ sent: number;
6
+ } | undefined>;
7
+ export declare function runBatch(container: MedusaContainer): Promise<{
8
+ scanned: number;
9
+ variants: number;
10
+ sent: number;
11
+ }>;
12
+ export declare const config: {
13
+ name: string;
14
+ schedule: string;
15
+ };
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = backInStockReconciliation;
5
+ exports.runBatch = runBatch;
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const back_in_stock_1 = require("../core/back-in-stock");
8
+ const back_in_stock_2 = require("../modules/back-in-stock");
9
+ const SUBSCRIPTION_PAGE_SIZE = 1_000;
10
+ const VARIANT_BATCH_SIZE = 250;
11
+ async function backInStockReconciliation(container) {
12
+ const locking = container.resolve("locking");
13
+ try {
14
+ return await locking.execute("job:back-in-stock-reconciliation", () => runBatch(container), { timeout: 1, expire: 840 });
15
+ }
16
+ catch (error) {
17
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
18
+ logger.info(JSON.stringify({
19
+ event: "scheduled_job_skipped_locked",
20
+ job: "back-in-stock-reconciliation",
21
+ message: error instanceof Error ? error.message : String(error),
22
+ }));
23
+ }
24
+ }
25
+ async function runBatch(container) {
26
+ const service = container.resolve(back_in_stock_2.BACK_IN_STOCK_MODULE);
27
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
28
+ const locking = container.resolve("locking");
29
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
30
+ // Build the active waiting-list snapshot before changing any subscription
31
+ // statuses. This avoids offset pagination skipping rows as notifications turn
32
+ // active records into notified records during the dispatch phase.
33
+ const variantIds = new Set();
34
+ let scanned = 0;
35
+ for (let skip = 0;; skip += SUBSCRIPTION_PAGE_SIZE) {
36
+ const subscriptions = await service.listBackInStockSubscriptions({ status: "active" }, { take: SUBSCRIPTION_PAGE_SIZE, skip, order: { created_at: "ASC" } });
37
+ scanned += subscriptions.length;
38
+ for (const subscription of subscriptions) {
39
+ const variantId = String(subscription.variant_id || "").trim();
40
+ if (variantId)
41
+ variantIds.add(variantId);
42
+ }
43
+ if (subscriptions.length < SUBSCRIPTION_PAGE_SIZE)
44
+ break;
45
+ }
46
+ const ids = [...variantIds];
47
+ let sent = 0;
48
+ for (let offset = 0; offset < ids.length; offset += VARIANT_BATCH_SIZE) {
49
+ const batchIds = ids.slice(offset, offset + VARIANT_BATCH_SIZE);
50
+ const { data: variants } = await query.graph({
51
+ entity: "product_variant",
52
+ fields: [
53
+ "id",
54
+ "title",
55
+ "sku",
56
+ "manage_inventory",
57
+ "allow_backorder",
58
+ "metadata",
59
+ "product.id",
60
+ "product.title",
61
+ "product.handle",
62
+ "product.metadata",
63
+ ],
64
+ filters: { id: batchIds },
65
+ });
66
+ for (const variant of variants) {
67
+ try {
68
+ const result = await locking.execute(`back-in-stock:variant:${variant.id}`, () => (0, back_in_stock_1.dispatchBackInStockVariant)({
69
+ container: container,
70
+ query,
71
+ variant,
72
+ }), { timeout: 1, expire: 300 });
73
+ sent += result.sent;
74
+ }
75
+ catch (error) {
76
+ logger.info(JSON.stringify({
77
+ event: "back_in_stock_variant_skipped_or_failed",
78
+ variant_id: variant.id,
79
+ message: error instanceof Error ? error.message : String(error),
80
+ }));
81
+ }
82
+ }
83
+ }
84
+ return { scanned, variants: ids.length, sent };
85
+ }
86
+ exports.config = {
87
+ name: "back-in-stock-reconciliation",
88
+ schedule: "*/15 * * * *",
89
+ };
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFjay1pbi1zdG9jay1yZWNvbmNpbGlhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9qb2JzL2JhY2staW4tc3RvY2stcmVjb25jaWxpYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBWUEsNENBZ0JDO0FBRUQsNEJBdUVDO0FBcEdELHFEQUFxRTtBQUNyRSx5REFBMkY7QUFDM0YsNERBQXdGO0FBRXhGLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFBO0FBQ3BDLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFBO0FBTWYsS0FBSyxVQUFVLHlCQUF5QixDQUFDLFNBQTBCO0lBQ2hGLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFZLENBQUE7SUFDdkQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLGtDQUFrQyxFQUNsQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLEtBQUssRUFBRSw4QkFBOEI7WUFDckMsR0FBRyxFQUFFLDhCQUE4QjtZQUNuQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNoRSxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FBQyxT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
@@ -0,0 +1,17 @@
1
+ import type { MedusaContainer } from "@medusajs/framework/types";
2
+ export default function dpdStatusdataSync(container: MedusaContainer): Promise<{
3
+ files: number;
4
+ processedFiles: number;
5
+ records: number;
6
+ matched: number;
7
+ } | undefined>;
8
+ export declare function runBatch(container: MedusaContainer): Promise<{
9
+ files: number;
10
+ processedFiles: number;
11
+ records: number;
12
+ matched: number;
13
+ }>;
14
+ export declare const config: {
15
+ name: string;
16
+ schedule: string;
17
+ };
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = dpdStatusdataSync;
5
+ exports.runBatch = runBatch;
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const dpd_1 = require("../providers/dpd");
8
+ const integration_operation_1 = require("../modules/integration-operation");
9
+ const state_1 = require("../modules/integration-operation/state");
10
+ const shipping_1 = require("../lib/modules/shipping");
11
+ async function dpdStatusdataSync(container) {
12
+ if (process.env.DPD_STATUSDATA_ENABLED !== "true")
13
+ return;
14
+ const locking = container.resolve("locking");
15
+ try {
16
+ return await locking.execute("job:dpd-statusdata-sync", () => runBatch(container), { timeout: 1, expire: 14 * 60 });
17
+ }
18
+ catch (error) {
19
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
20
+ logger.info(JSON.stringify({
21
+ event: "scheduled_job_skipped_locked",
22
+ job: "dpd-statusdata-sync",
23
+ message: error instanceof Error ? error.message : String(error),
24
+ }));
25
+ }
26
+ }
27
+ async function runBatch(container) {
28
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
29
+ const orderService = container.resolve("order");
30
+ const operationStore = container.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
31
+ const client = new dpd_1.DpdStatusdataFtpClient((0, dpd_1.dpdStatusdataFtpConfigFromEnv)());
32
+ const files = (await client.listFiles()).sort();
33
+ let processedFiles = 0;
34
+ let records = 0;
35
+ let matched = 0;
36
+ for (const filename of files) {
37
+ const acquired = await (0, state_1.acquireOperation)(operationStore, {
38
+ provider: "dpd",
39
+ operation_type: "statusdata.file",
40
+ entity_type: "statusdata_file",
41
+ entity_id: filename,
42
+ idempotency_key: `dpd:statusdata:file:${filename}`,
43
+ reference_data: {
44
+ replay_safe: true,
45
+ filename,
46
+ },
47
+ });
48
+ if (!acquired.acquired) {
49
+ if (acquired.operation.status === "succeeded")
50
+ continue;
51
+ logger.info(`[dpd-statusdata-sync] ${filename}: a fájl már feldolgozás alatt áll.`);
52
+ continue;
53
+ }
54
+ try {
55
+ const content = await client.readFile(filename);
56
+ const parsed = (0, dpd_1.parseDpdStatusdata)(content);
57
+ let fileMatched = 0;
58
+ let fileUnmatched = 0;
59
+ for (const record of parsed) {
60
+ const result = await (0, shipping_1.applyNormalizedTrackingEvent)({
61
+ orderService,
62
+ operationStore,
63
+ event: (0, dpd_1.dpdStatusdataEvent)(record),
64
+ });
65
+ if (result)
66
+ fileMatched += 1;
67
+ else
68
+ fileUnmatched += 1;
69
+ }
70
+ if (fileUnmatched > 0) {
71
+ // Keep the file replayable. Rows already applied above are independently
72
+ // idempotent, so a later retry only has to match the previously missing rows.
73
+ throw new Error(`${fileUnmatched} DPD Statusdata eseményhez még nem található rendelés.`);
74
+ }
75
+ await (0, state_1.operationSucceeded)(operationStore, acquired.operation, filename, {
76
+ replay_safe: true,
77
+ filename,
78
+ record_count: parsed.length,
79
+ matched_count: fileMatched,
80
+ processed_at: new Date().toISOString(),
81
+ });
82
+ processedFiles += 1;
83
+ records += parsed.length;
84
+ matched += fileMatched;
85
+ }
86
+ catch (error) {
87
+ await (0, state_1.operationFailed)(operationStore, acquired.operation, error, false, filename, {
88
+ replay_safe: true,
89
+ filename,
90
+ });
91
+ logger.warn(`[dpd-statusdata-sync] ${filename}: ${error instanceof Error ? error.message : String(error)}`);
92
+ }
93
+ }
94
+ return {
95
+ files: files.length,
96
+ processedFiles,
97
+ records,
98
+ matched,
99
+ };
100
+ }
101
+ // DPD Hungary generates Statusdata when statuses changed (hourly). Poll the
102
+ // dedicated FTP every 15 minutes so a newly generated file is picked up quickly.
103
+ exports.config = {
104
+ name: "dpd-statusdata-sync",
105
+ schedule: "*/15 * * * *",
106
+ };
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHBkLXN0YXR1c2RhdGEtc3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9qb2JzL2RwZC1zdGF0dXNkYXRhLXN5bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JBLG9DQXlCQztBQUVELDRCQStGQztBQS9JRCxxREFBcUU7QUFDckUsMENBS3lCO0FBQ3pCLDRFQUd5QztBQUN6QyxrRUFJK0M7QUFDL0Msc0RBR2dDO0FBRWpCLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxTQUEwQjtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEtBQUssTUFBTTtRQUFFLE9BQU07SUFFekQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBTTFDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDMUIseUJBQXlCLEVBQ3pCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDekIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQ2hDLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLEtBQUssRUFBRSw4QkFBOEI7WUFDckMsR0FBRyxFQUFFLHFCQUFxQjtZQUMxQixPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNoRSxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFV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
@@ -0,0 +1,19 @@
1
+ import type { MedusaContainer } from "@medusajs/framework/types";
2
+ export default function mplPushTracking(container: MedusaContainer): Promise<{
3
+ records: number;
4
+ applied: number;
5
+ malformed: number;
6
+ unmatched: number;
7
+ lastRead: string | null;
8
+ } | undefined>;
9
+ export declare function runBatch(container: MedusaContainer): Promise<{
10
+ records: number;
11
+ applied: number;
12
+ malformed: number;
13
+ unmatched: number;
14
+ lastRead: string | null;
15
+ }>;
16
+ export declare const config: {
17
+ name: string;
18
+ schedule: string;
19
+ };