@hszrdm/core 1.4.0 → 1.6.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 (182) hide show
  1. package/.medusa/server/src/admin/index.js +6361 -3789
  2. package/.medusa/server/src/admin/index.mjs +6361 -3789
  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/core-carts/[id]/items/[itemId]/route.d.ts +3 -0
  6. package/.medusa/server/src/api/admin/core-carts/[id]/items/[itemId]/route.js +64 -0
  7. package/.medusa/server/src/api/admin/core-carts/[id]/items/route.d.ts +2 -0
  8. package/.medusa/server/src/api/admin/core-carts/[id]/items/route.js +40 -0
  9. package/.medusa/server/src/api/admin/core-carts/[id]/promotions/[code]/route.d.ts +2 -0
  10. package/.medusa/server/src/api/admin/core-carts/[id]/promotions/[code]/route.js +40 -0
  11. package/.medusa/server/src/api/admin/core-carts/[id]/promotions/route.d.ts +2 -0
  12. package/.medusa/server/src/api/admin/core-carts/[id]/promotions/route.js +41 -0
  13. package/.medusa/server/src/api/admin/core-carts/[id]/route.d.ts +2 -0
  14. package/.medusa/server/src/api/admin/core-carts/[id]/route.js +28 -0
  15. package/.medusa/server/src/api/admin/core-carts/customer/[id]/route.d.ts +2 -0
  16. package/.medusa/server/src/api/admin/core-carts/customer/[id]/route.js +34 -0
  17. package/.medusa/server/src/api/admin/core-carts/route.d.ts +3 -0
  18. package/.medusa/server/src/api/admin/core-carts/route.js +69 -0
  19. package/.medusa/server/src/api/admin/customer-activation/route.d.ts +2 -0
  20. package/.medusa/server/src/api/admin/customer-activation/route.js +97 -0
  21. package/.medusa/server/src/api/admin/customer-import/route.d.ts +2 -0
  22. package/.medusa/server/src/api/admin/customer-import/route.js +166 -0
  23. package/.medusa/server/src/api/admin/order-export/route.d.ts +2 -0
  24. package/.medusa/server/src/api/admin/order-export/route.js +88 -0
  25. package/.medusa/server/src/api/admin/product-migration/inventory/route.d.ts +3 -0
  26. package/.medusa/server/src/api/admin/product-migration/inventory/route.js +164 -0
  27. package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.d.ts +3 -0
  28. package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.js +204 -0
  29. package/.medusa/server/src/api/admin/product-migration/products/route.d.ts +2 -0
  30. package/.medusa/server/src/api/admin/product-migration/products/route.js +24 -0
  31. package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +36 -4
  32. package/.medusa/server/src/api/admin/product-reviews/settings/route.d.ts +3 -0
  33. package/.medusa/server/src/api/admin/product-reviews/settings/route.js +63 -0
  34. package/.medusa/server/src/api/admin/shared-cart/settings/route.d.ts +5 -0
  35. package/.medusa/server/src/api/admin/shared-cart/settings/route.js +31 -0
  36. package/.medusa/server/src/api/admin/system-runtime/route.d.ts +2 -0
  37. package/.medusa/server/src/api/admin/system-runtime/route.js +18 -0
  38. package/.medusa/server/src/api/hooks/packeta/status/route.d.ts +2 -0
  39. package/.medusa/server/src/api/hooks/packeta/status/route.js +55 -0
  40. package/.medusa/server/src/api/middlewares.js +24 -1
  41. package/.medusa/server/src/api/store/abandoned-cart/recover/route.d.ts +2 -0
  42. package/.medusa/server/src/api/store/abandoned-cart/recover/route.js +37 -0
  43. package/.medusa/server/src/api/store/back-in-stock/route.d.ts +8 -0
  44. package/.medusa/server/src/api/store/back-in-stock/route.js +124 -0
  45. package/.medusa/server/src/api/store/core-carts/me/active/route.d.ts +2 -0
  46. package/.medusa/server/src/api/store/core-carts/me/active/route.js +54 -0
  47. package/.medusa/server/src/api/store/customer-activation/complete/route.d.ts +2 -0
  48. package/.medusa/server/src/api/store/customer-activation/complete/route.js +96 -0
  49. package/.medusa/server/src/api/store/customer-activation/route.d.ts +2 -0
  50. package/.medusa/server/src/api/store/customer-activation/route.js +34 -0
  51. package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +1 -0
  52. package/.medusa/server/src/api/store/products/[id]/reviews/route.js +76 -34
  53. package/.medusa/server/src/api/store/review-request/route.d.ts +2 -0
  54. package/.medusa/server/src/api/store/review-request/route.js +60 -0
  55. package/.medusa/server/src/api/store/shared-carts/[token]/route.d.ts +2 -0
  56. package/.medusa/server/src/api/store/shared-carts/[token]/route.js +52 -0
  57. package/.medusa/server/src/api/store/shared-carts/route.d.ts +13 -0
  58. package/.medusa/server/src/api/store/shared-carts/route.js +78 -0
  59. package/.medusa/server/src/core/abandoned-cart.d.ts +64 -0
  60. package/.medusa/server/src/core/abandoned-cart.js +197 -0
  61. package/.medusa/server/src/core/admin-cart-management.d.ts +18 -0
  62. package/.medusa/server/src/core/admin-cart-management.js +102 -0
  63. package/.medusa/server/src/core/admin-cart-visibility.d.ts +94 -0
  64. package/.medusa/server/src/core/admin-cart-visibility.js +192 -0
  65. package/.medusa/server/src/core/back-in-stock.d.ts +51 -0
  66. package/.medusa/server/src/core/back-in-stock.js +107 -0
  67. package/.medusa/server/src/core/cart-observability.d.ts +23 -0
  68. package/.medusa/server/src/core/cart-observability.js +54 -0
  69. package/.medusa/server/src/core/checkout-contract.d.ts +1 -0
  70. package/.medusa/server/src/core/checkout-contract.js +2 -1
  71. package/.medusa/server/src/core/customer-account-contract.d.ts +3 -0
  72. package/.medusa/server/src/core/customer-account-contract.js +4 -1
  73. package/.medusa/server/src/core/customer-activation.d.ts +120 -0
  74. package/.medusa/server/src/core/customer-activation.js +169 -0
  75. package/.medusa/server/src/core/customer-cart-resume.d.ts +21 -0
  76. package/.medusa/server/src/core/customer-cart-resume.js +72 -0
  77. package/.medusa/server/src/core/customer-email.d.ts +1 -1
  78. package/.medusa/server/src/core/customer-email.js +4 -1
  79. package/.medusa/server/src/core/native-migration-export.d.ts +6 -0
  80. package/.medusa/server/src/core/native-migration-export.js +105 -0
  81. package/.medusa/server/src/core/order-export.d.ts +11 -0
  82. package/.medusa/server/src/core/order-export.js +297 -0
  83. package/.medusa/server/src/core/review-request.d.ts +61 -0
  84. package/.medusa/server/src/core/review-request.js +105 -0
  85. package/.medusa/server/src/core/review-reward.d.ts +94 -0
  86. package/.medusa/server/src/core/review-reward.js +124 -0
  87. package/.medusa/server/src/core/runtime-health.d.ts +39 -0
  88. package/.medusa/server/src/core/runtime-health.js +250 -0
  89. package/.medusa/server/src/core/storefront-core-config.d.ts +10 -0
  90. package/.medusa/server/src/core/storefront-core-config.js +26 -1
  91. package/.medusa/server/src/core/version.d.ts +2 -2
  92. package/.medusa/server/src/core/version.js +2 -2
  93. package/.medusa/server/src/jobs/abandoned-cart-recovery.d.ts +23 -0
  94. package/.medusa/server/src/jobs/abandoned-cart-recovery.js +137 -0
  95. package/.medusa/server/src/jobs/back-in-stock-reconciliation.d.ts +15 -0
  96. package/.medusa/server/src/jobs/back-in-stock-reconciliation.js +90 -0
  97. package/.medusa/server/src/jobs/dpd-statusdata-sync.d.ts +17 -0
  98. package/.medusa/server/src/jobs/dpd-statusdata-sync.js +107 -0
  99. package/.medusa/server/src/jobs/mpl-push-tracking.d.ts +19 -0
  100. package/.medusa/server/src/jobs/mpl-push-tracking.js +183 -0
  101. package/.medusa/server/src/jobs/mpl-status-sync.d.ts +8 -2
  102. package/.medusa/server/src/jobs/mpl-status-sync.js +12 -7
  103. package/.medusa/server/src/jobs/product-review-request-dispatch.d.ts +28 -0
  104. package/.medusa/server/src/jobs/product-review-request-dispatch.js +84 -0
  105. package/.medusa/server/src/jobs/runtime-heartbeat.d.ts +12 -0
  106. package/.medusa/server/src/jobs/runtime-heartbeat.js +13 -0
  107. package/.medusa/server/src/jobs/shipping-status-sync.d.ts +8 -2
  108. package/.medusa/server/src/jobs/shipping-status-sync.js +11 -14
  109. package/.medusa/server/src/lib/modules/shipping/idempotency.js +3 -3
  110. package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
  111. package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
  112. package/.medusa/server/src/lib/modules/shipping/tracking.d.ts +48 -0
  113. package/.medusa/server/src/lib/modules/shipping/tracking.js +368 -0
  114. package/.medusa/server/src/lib/modules/shipping/webhooks.d.ts +6 -9
  115. package/.medusa/server/src/lib/modules/shipping/webhooks.js +24 -137
  116. package/.medusa/server/src/modules/back-in-stock/index.d.ts +23 -0
  117. package/.medusa/server/src/modules/back-in-stock/index.js +16 -0
  118. package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.d.ts +5 -0
  119. package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.js +18 -0
  120. package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.d.ts +13 -0
  121. package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.js +23 -0
  122. package/.medusa/server/src/modules/back-in-stock/service.d.ts +22 -0
  123. package/.medusa/server/src/modules/back-in-stock/service.js +12 -0
  124. package/.medusa/server/src/modules/email-center/abandoned-cart-registration.d.ts +1 -0
  125. package/.medusa/server/src/modules/email-center/abandoned-cart-registration.js +27 -0
  126. package/.medusa/server/src/modules/email-center/back-in-stock-registration.d.ts +1 -0
  127. package/.medusa/server/src/modules/email-center/back-in-stock-registration.js +27 -0
  128. package/.medusa/server/src/modules/email-center/defaults.js +7 -1
  129. package/.medusa/server/src/modules/email-center/index.d.ts +2 -0
  130. package/.medusa/server/src/modules/email-center/index.js +3 -1
  131. package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.d.ts +1 -0
  132. package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.js +30 -0
  133. package/.medusa/server/src/modules/integration-settings/index.d.ts +1 -0
  134. package/.medusa/server/src/modules/integration-settings/index.js +2 -1
  135. package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -1
  136. package/.medusa/server/src/modules/product-review/index.d.ts +14 -0
  137. package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.d.ts +5 -0
  138. package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.js +28 -0
  139. package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.d.ts +5 -0
  140. package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.js +20 -0
  141. package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.d.ts +5 -0
  142. package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.js +18 -0
  143. package/.medusa/server/src/modules/product-review/models/product-review-settings.d.ts +15 -0
  144. package/.medusa/server/src/modules/product-review/models/product-review-settings.js +19 -0
  145. package/.medusa/server/src/modules/product-review/models/product-review.d.ts +6 -2
  146. package/.medusa/server/src/modules/product-review/models/product-review.js +7 -3
  147. package/.medusa/server/src/modules/product-review/service.d.ts +22 -1
  148. package/.medusa/server/src/modules/product-review/service.js +3 -2
  149. package/.medusa/server/src/modules/shared-cart/index.d.ts +21 -0
  150. package/.medusa/server/src/modules/shared-cart/index.js +13 -0
  151. package/.medusa/server/src/modules/shared-cart/migrations/Migration20261102010000.d.ts +5 -0
  152. package/.medusa/server/src/modules/shared-cart/migrations/Migration20261102010000.js +16 -0
  153. package/.medusa/server/src/modules/shared-cart/models/shared-cart.d.ts +10 -0
  154. package/.medusa/server/src/modules/shared-cart/models/shared-cart.js +17 -0
  155. package/.medusa/server/src/modules/shared-cart/service.d.ts +14 -0
  156. package/.medusa/server/src/modules/shared-cart/service.js +11 -0
  157. package/.medusa/server/src/modules/shared-cart/settings.d.ts +7 -0
  158. package/.medusa/server/src/modules/shared-cart/settings.js +64 -0
  159. package/.medusa/server/src/providers/dpd/index.d.ts +2 -0
  160. package/.medusa/server/src/providers/dpd/index.js +3 -1
  161. package/.medusa/server/src/providers/dpd/statusdata-ftp.d.ts +16 -0
  162. package/.medusa/server/src/providers/dpd/statusdata-ftp.js +268 -0
  163. package/.medusa/server/src/providers/dpd/statusdata.d.ts +14 -0
  164. package/.medusa/server/src/providers/dpd/statusdata.js +161 -0
  165. package/.medusa/server/src/providers/mpl/client.d.ts +3 -1
  166. package/.medusa/server/src/providers/mpl/client.js +154 -2
  167. package/.medusa/server/src/providers/mpl/service.js +31 -20
  168. package/.medusa/server/src/providers/mpl/types.d.ts +25 -0
  169. package/.medusa/server/src/providers/mpl/types.js +1 -1
  170. package/.medusa/server/src/providers/packeta/index.d.ts +1 -0
  171. package/.medusa/server/src/providers/packeta/index.js +2 -1
  172. package/.medusa/server/src/providers/packeta/push-tracking.d.ts +8 -0
  173. package/.medusa/server/src/providers/packeta/push-tracking.js +96 -0
  174. package/.medusa/server/src/providers/packeta/service.js +22 -2
  175. package/.medusa/server/src/scripts/core-init.d.ts +1 -1
  176. package/.medusa/server/src/scripts/core-init.js +3 -2
  177. package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.d.ts +7 -0
  178. package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.js +65 -0
  179. package/.medusa/server/src/workflows/link-migrated-customer.d.ts +8 -0
  180. package/.medusa/server/src/workflows/link-migrated-customer.js +17 -0
  181. package/README.md +1 -1
  182. package/package.json +30 -8
@@ -0,0 +1,12 @@
1
+ import type { MedusaContainer } from "@medusajs/framework/types";
2
+ export default function runtimeHeartbeat(_container: MedusaContainer): Promise<{
3
+ schema_version?: number;
4
+ job?: string;
5
+ schedule?: string;
6
+ last_seen_at?: string;
7
+ pid?: number;
8
+ }>;
9
+ export declare const config: {
10
+ name: string;
11
+ schedule: string;
12
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = runtimeHeartbeat;
5
+ const runtime_health_1 = require("../core/runtime-health");
6
+ async function runtimeHeartbeat(_container) {
7
+ return (0, runtime_health_1.writeRuntimeHeartbeat)();
8
+ }
9
+ exports.config = {
10
+ name: "runtime-heartbeat",
11
+ schedule: "*/5 * * * *",
12
+ };
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1oZWFydGJlYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9ydW50aW1lLWhlYXJ0YmVhdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxtQ0FFQztBQUpELDJEQUE4RDtBQUUvQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsVUFBMkI7SUFDeEUsT0FBTyxJQUFBLHNDQUFxQixHQUFFLENBQUE7QUFDaEMsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsUUFBUSxFQUFFLGFBQWE7Q0FDeEIsQ0FBQSJ9
@@ -1,6 +1,12 @@
1
1
  import type { MedusaContainer } from "@medusajs/framework/types";
2
- export default function shippingStatusSync(container: MedusaContainer): Promise<void>;
3
- export declare function runBatch(container: MedusaContainer): Promise<void>;
2
+ export default function shippingStatusSync(container: MedusaContainer): Promise<{
3
+ scanned: number;
4
+ refreshed: number;
5
+ } | undefined>;
6
+ export declare function runBatch(container: MedusaContainer): Promise<{
7
+ scanned: number;
8
+ refreshed: number;
9
+ }>;
4
10
  export declare const config: {
5
11
  name: string;
6
12
  schedule: string;
@@ -7,7 +7,6 @@ const utils_1 = require("@medusajs/framework/utils");
7
7
  const shipping_1 = require("../lib/modules/shipping");
8
8
  const TERMINAL = new Set(["DELIVERED", "RETURNED", "CANCELLED"]);
9
9
  const PAGE_SIZE = 200;
10
- const MAX_ORDERS_SCANNED = 2000;
11
10
  async function shippingStatusSync(container) {
12
11
  const locking = container.resolve("locking");
13
12
  try {
@@ -24,31 +23,27 @@ async function shippingStatusSync(container) {
24
23
  }
25
24
  async function runBatch(container) {
26
25
  const orderService = container.resolve("order");
27
- for (let skip = 0; skip < MAX_ORDERS_SCANNED; skip += PAGE_SIZE) {
26
+ let scanned = 0;
27
+ let refreshed = 0;
28
+ for (let skip = 0;; skip += PAGE_SIZE) {
28
29
  const orders = await orderService.listOrders({}, { take: PAGE_SIZE, skip, order: { created_at: "DESC" } });
29
30
  for (const order of orders) {
31
+ scanned += 1;
30
32
  const carrier = (0, shipping_1.carrierForOrder)(order);
31
33
  if (!carrier)
32
34
  continue;
33
- // MPL has a dedicated slower tracking job. Magyar Posta asks clients not to
34
- // repeatedly query the same tracking ID at short intervals.
35
- if (carrier === "mpl")
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")
36
38
  continue;
37
39
  const shipment = order.metadata?.[carrier];
38
40
  const hasParcel = carrier === "foxpost"
39
41
  ? Boolean(shipment?.packageId)
40
42
  : carrier === "packeta"
41
43
  ? Boolean(shipment?.packetId)
42
- : carrier === "dpd"
43
- ? Boolean(shipment?.shipmentId)
44
- : Boolean(shipment?.parcelNumber);
44
+ : Boolean(shipment?.parcelNumber);
45
45
  if (!hasParcel || TERMINAL.has(String(shipment?.status ?? "").toUpperCase()))
46
46
  continue;
47
- // DPD Shipping's shipment status is the shipping-order state, not parcel transit tracking.
48
- // Once a label is printed, repeated polling cannot produce DELIVERED/RETURNED states;
49
- // those require DPD Statusdata, which is a separate optional integration.
50
- if (carrier === "dpd" && String(shipment?.status ?? "").toUpperCase() === "PRINTED")
51
- continue;
52
47
  try {
53
48
  await (0, shipping_1.executeShippingAction)({
54
49
  orderService,
@@ -56,6 +51,7 @@ async function runBatch(container) {
56
51
  action: "status",
57
52
  actorId: "scheduled-status-sync",
58
53
  });
54
+ refreshed += 1;
59
55
  }
60
56
  catch (error) {
61
57
  console.error(`[shipping-status-sync] ${carrier} ${order.id}:`, error instanceof Error ? error.message : error);
@@ -64,6 +60,7 @@ async function runBatch(container) {
64
60
  if (orders.length < PAGE_SIZE)
65
61
  break;
66
62
  }
63
+ return { scanned, refreshed };
67
64
  }
68
65
  exports.config = { name: "shipping-status-sync", schedule: "*/15 * * * *" };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctc3RhdHVzLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9zaGlwcGluZy1zdGF0dXMtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFZQSxxQ0F5QkM7QUFFRCw0QkFrREM7QUF4RkQscURBQXFFO0FBQ3JFLHNEQUlnQztBQUVoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFDckIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUE7QUFFaEIsS0FBSyxVQUFVLGtCQUFrQixDQUFDLFNBQTBCO0lBQ3pFLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQU0xQyxDQUFBO0lBRUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLDBCQUEwQixFQUMxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEUsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsS0FBSyxFQUFFLDhCQUE4QjtZQUNyQyxHQUFHLEVBQUUsc0JBQXNCO1lBQzNCLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ2hFLENBQUMsQ0FDSCxD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
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctc3RhdHVzLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9zaGlwcGluZy1zdGF0dXMtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxxQ0F5QkM7QUFFRCw0QkFpREM7QUF0RkQscURBQXFFO0FBQ3JFLHNEQUlnQztBQUVoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFFTixLQUFLLFVBQVUsa0JBQWtCLENBQUMsU0FBMEI7SUFDekUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBTTFDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDMUIsMEJBQTBCLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDekIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDNUIsQ0FBQTtJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUNULElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDaEUsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxRQUFRLENBQUMsU0FBMEI7SUFDdkQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQW9DLENBQUE7SUFDbEYsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0lBQ2YsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFBO0lBRWpCLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFJLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUN2QyxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxVQUFVLENBQzFDLEVBQUUsRUFDRixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUN6RCxDQUFBO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixPQUFPLElBQUksQ0FBQyxDQUFBO1lBQ1osTUFBTSxPQUFPLEdBQUcsSUFBQSwwQkFBZSxFQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxPQUFPO2dCQUFFLFNBQVE7WUFFdEIsa0VBQWtFO1lBQ2xFLHdFQUF3RTtZQUN4RSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUs7Z0JBQUUsU0FBUTtZQUVwRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUF3QyxDQUFBO1lBQ2pGLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyxTQUFTO2dCQUNyQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUztvQkFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO29CQUM3QixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQTtZQUVyQyxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQUUsU0FBUTtZQUV0RixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxJQUFBLGdDQUFxQixFQUFDO29CQUMxQixZQUFZO29CQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDakIsTUFBTSxFQUFFLFFBQVE7b0JBQ2hCLE9BQU8sRUFBRSx1QkFBdUI7aUJBQ2pDLENBQUMsQ0FBQTtnQkFDRixTQUFTLElBQUksQ0FBQyxDQUFBO1lBQ2hCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQ1gsMEJBQTBCLE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQ2hELEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDL0MsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVM7WUFBRSxNQUFLO0lBQ3RDLENBQUM7SUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQy9CLENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUEifQ==
@@ -7,11 +7,11 @@ function shipmentExternalId(carrier, shipment) {
7
7
  const value = carrier === "foxpost"
8
8
  ? shipment.packageId ?? shipment.trackingNumber
9
9
  : carrier === "gls"
10
- ? shipment.parcelId ?? shipment.parcelNumber
10
+ ? shipment.parcelNumber ?? shipment.parcelId
11
11
  : carrier === "packeta"
12
12
  ? shipment.packetId ?? shipment.trackingNumber
13
13
  : carrier === "dpd"
14
- ? shipment.shipmentId ?? shipment.parcelNumber
14
+ ? shipment.parcelNumber ?? shipment.shipmentId
15
15
  : shipment.trackingNumber;
16
16
  return value == null ? null : String(value);
17
17
  }
@@ -25,4 +25,4 @@ function shipmentCreateIdempotencyKey(carrier, orderId, cancelledExternalId) {
25
25
  const base = `${carrier}:shipment:create:${orderId}`;
26
26
  return cancelledExternalId ? `${base}:after:${cancelledExternalId}` : base;
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbXBvdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvaWRlbXBvdGVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxnREFlQztBQUVELGtFQVFDO0FBRUQsb0VBT0M7QUFsQ0QsU0FBZ0Isa0JBQWtCLENBQ2hDLE9BQXdCLEVBQ3hCLFFBQWlDO0lBRWpDLE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxTQUFTO1FBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxjQUFjO1FBQy9DLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSztZQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsWUFBWTtZQUM1QyxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVM7Z0JBQ3JCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxjQUFjO2dCQUM5QyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUs7b0JBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxZQUFZO29CQUM5QyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQTtJQUVqQyxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLENBQUM7QUFFRCxTQUFnQiwyQkFBMkIsQ0FDekMsT0FBd0IsRUFDeEIsUUFBb0Q7SUFFcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUM3RSxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFBO0FBQzNELENBQUM7QUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsT0FBd0IsRUFDeEIsT0FBZSxFQUNmLG1CQUFtQztJQUVuQyxNQUFNLElBQUksR0FBRyxHQUFHLE9BQU8sb0JBQW9CLE9BQU8sRUFBRSxDQUFBO0lBQ3BELE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxVQUFVLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUM1RSxDQUFDIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbXBvdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvaWRlbXBvdGVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxnREFlQztBQUVELGtFQVFDO0FBRUQsb0VBT0M7QUFsQ0QsU0FBZ0Isa0JBQWtCLENBQ2hDLE9BQXdCLEVBQ3hCLFFBQWlDO0lBRWpDLE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxTQUFTO1FBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxjQUFjO1FBQy9DLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSztZQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsUUFBUTtZQUM1QyxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVM7Z0JBQ3JCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxjQUFjO2dCQUM5QyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUs7b0JBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxVQUFVO29CQUM5QyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQTtJQUVqQyxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLENBQUM7QUFFRCxTQUFnQiwyQkFBMkIsQ0FDekMsT0FBd0IsRUFDeEIsUUFBb0Q7SUFFcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUM3RSxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFBO0FBQzNELENBQUM7QUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsT0FBd0IsRUFDeEIsT0FBZSxFQUNmLG1CQUFtQztJQUVuQyxNQUFNLElBQUksR0FBRyxHQUFHLE9BQU8sb0JBQW9CLE9BQU8sRUFBRSxDQUFBO0lBQ3BELE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxVQUFVLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUM1RSxDQUFDIn0=
@@ -5,3 +5,4 @@ export * from "./idempotency";
5
5
  export * from "./durable-create";
6
6
  export * from "./actions";
7
7
  export * from "./webhooks";
8
+ export * from "./tracking";
@@ -21,4 +21,5 @@ __exportStar(require("./idempotency"), exports);
21
21
  __exportStar(require("./durable-create"), exports);
22
22
  __exportStar(require("./actions"), exports);
23
23
  __exportStar(require("./webhooks"), exports);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF1QjtBQUN2QiwrQ0FBNEI7QUFDNUIsd0NBQXFCO0FBQ3JCLGdEQUE2QjtBQUM3QixtREFBZ0M7QUFDaEMsNENBQXlCO0FBQ3pCLDZDQUEwQiJ9
24
+ __exportStar(require("./tracking"), exports);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF1QjtBQUN2QiwrQ0FBNEI7QUFDNUIsd0NBQXFCO0FBQ3JCLGdEQUE2QjtBQUM3QixtREFBZ0M7QUFDaEMsNENBQXlCO0FBQ3pCLDZDQUEwQjtBQUMxQiw2Q0FBMEIifQ==
@@ -0,0 +1,48 @@
1
+ import type { ShippingCarrier, ShippingOrder, ShippingOrderService } from "./types";
2
+ import type { IntegrationOperationStore } from "../../../modules/integration-operation/types";
3
+ export type CanonicalShippingStatus = "CREATED" | "LABEL_CREATED" | "ACCEPTED" | "PROCESSING" | "IN_TRANSIT" | "AT_PICKUP_POINT" | "OUT_FOR_DELIVERY" | "DELIVERED" | "RETURNING" | "RETURNED" | "CANCELLED" | "ERROR" | "UNKNOWN";
4
+ export type NormalizedTrackingEvent = {
5
+ carrier: ShippingCarrier;
6
+ shipmentIdentifiers: string[];
7
+ status?: CanonicalShippingStatus | null;
8
+ rawStatus?: string | null;
9
+ statusText?: string | null;
10
+ occurredAt?: string | null;
11
+ eventId?: string | null;
12
+ source: string;
13
+ trackingNumber?: string | null;
14
+ trackingUrl?: string | null;
15
+ extra?: Record<string, unknown>;
16
+ };
17
+ export declare function isTerminalShippingStatus(value: unknown): boolean;
18
+ export declare function mapPacketaStatus(input: {
19
+ statusId?: unknown;
20
+ statusCode?: unknown;
21
+ isReturning?: unknown;
22
+ }): CanonicalShippingStatus | null;
23
+ export declare function mapMplPullStatus(input: {
24
+ categoryCode?: unknown;
25
+ category?: unknown;
26
+ description?: unknown;
27
+ }): CanonicalShippingStatus | null;
28
+ export declare function mapMplPushStatus(status: unknown, statusText?: unknown): CanonicalShippingStatus | null;
29
+ export declare function mapDpdStatusdataScanCode(scanCode: unknown, serviceCode?: unknown): CanonicalShippingStatus | null;
30
+ export declare function applyNormalizedTrackingEvent(input: {
31
+ orderService: ShippingOrderService;
32
+ event: NormalizedTrackingEvent;
33
+ operationStore?: IntegrationOperationStore;
34
+ }): Promise<{
35
+ duplicate: boolean;
36
+ orderId: {} | null;
37
+ status: {} | null;
38
+ stale?: undefined;
39
+ terminalRegression?: undefined;
40
+ } | {
41
+ orderId: string;
42
+ status: {} | null;
43
+ stale: boolean;
44
+ terminalRegression: boolean;
45
+ duplicate?: undefined;
46
+ } | null>;
47
+ export declare function findOrderByShipmentIdentifiers(orderService: ShippingOrderService, carrier: ShippingCarrier, identifiers: string[], operationStore?: IntegrationOperationStore): Promise<ShippingOrder | undefined>;
48
+ export declare function shipmentMatches(order: ShippingOrder, carrier: ShippingCarrier, identifiers: Set<string>): boolean;
@@ -0,0 +1,368 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isTerminalShippingStatus = isTerminalShippingStatus;
4
+ exports.mapPacketaStatus = mapPacketaStatus;
5
+ exports.mapMplPullStatus = mapMplPullStatus;
6
+ exports.mapMplPushStatus = mapMplPushStatus;
7
+ exports.mapDpdStatusdataScanCode = mapDpdStatusdataScanCode;
8
+ exports.applyNormalizedTrackingEvent = applyNormalizedTrackingEvent;
9
+ exports.findOrderByShipmentIdentifiers = findOrderByShipmentIdentifiers;
10
+ exports.shipmentMatches = shipmentMatches;
11
+ const node_crypto_1 = require("node:crypto");
12
+ const operations_1 = require("./operations");
13
+ const state_1 = require("../../../modules/integration-operation/state");
14
+ const TERMINAL = new Set([
15
+ "DELIVERED",
16
+ "RETURNED",
17
+ "CANCELLED",
18
+ ]);
19
+ function isTerminalShippingStatus(value) {
20
+ return TERMINAL.has(String(value || "").toUpperCase());
21
+ }
22
+ function mapPacketaStatus(input) {
23
+ const id = Number(input.statusId);
24
+ const code = String(input.statusCode || "").trim().toLowerCase();
25
+ const returning = input.isReturning === true || input.isReturning === 1 || input.isReturning === "1";
26
+ if (returning && (id === 7 || code.includes("delivered") || code.includes("returned"))) {
27
+ return "RETURNED";
28
+ }
29
+ if (returning)
30
+ return "RETURNING";
31
+ if (code.includes("cancel"))
32
+ return "CANCELLED";
33
+ if (code.includes("returned"))
34
+ return "RETURNED";
35
+ if (code.includes("return"))
36
+ return "RETURNING";
37
+ if (code.includes("delivered"))
38
+ return "DELIVERED";
39
+ if (code.includes("ready for pickup") || code.includes("ready for pick-up"))
40
+ return "AT_PICKUP_POINT";
41
+ if (code.includes("out for delivery"))
42
+ return "OUT_FOR_DELIVERY";
43
+ if (code.includes("received data"))
44
+ return "CREATED";
45
+ if (code.includes("arrived") || code.includes("departed") || code.includes("handed to carrier") || code.includes("prepared for departure")) {
46
+ return "IN_TRANSIT";
47
+ }
48
+ if (id === 1)
49
+ return "CREATED";
50
+ if ([2, 3, 4, 6].includes(id))
51
+ return "IN_TRANSIT";
52
+ if (id === 5)
53
+ return "AT_PICKUP_POINT";
54
+ if (id === 7)
55
+ return "DELIVERED";
56
+ if (id === 25)
57
+ return "IN_TRANSIT";
58
+ return null;
59
+ }
60
+ function mapMplPullStatus(input) {
61
+ const categoryCode = Number(input.categoryCode);
62
+ const category = normalizeText(input.category);
63
+ const description = normalizeText(input.description);
64
+ if (containsAny(description, [
65
+ "feladónak visszakézbesítve",
66
+ "returned to sender",
67
+ "returned to the sender",
68
+ ]))
69
+ return "RETURNED";
70
+ if (containsAny(description, [
71
+ "visszaküldés alatt",
72
+ "return to sender",
73
+ "returning to sender",
74
+ ]))
75
+ return "RETURNING";
76
+ if (containsAny(description, [
77
+ "sikeresen kézbesítve",
78
+ "sikeres kézbesítés",
79
+ "successfully delivered",
80
+ ]))
81
+ return "DELIVERED";
82
+ if (categoryCode === 5 || category.includes("kézbesített") || category.includes("delivered")) {
83
+ // MPL category 5 also contains non-delivery accounting events and
84
+ // return-to-sender events, so never infer DELIVERED from the category alone.
85
+ return null;
86
+ }
87
+ if (categoryCode === 4 || category.includes("kézbesítés") || category.includes("delivery")) {
88
+ if (containsAny(description, [
89
+ "postán átvehető",
90
+ "postaponton",
91
+ "csomagautomatából átvehető",
92
+ "ready for pickup",
93
+ "ready for pick-up",
94
+ ]))
95
+ return "AT_PICKUP_POINT";
96
+ if (containsAny(description, [
97
+ "kézbesítőnél van",
98
+ "handed over to delivery man",
99
+ "out for delivery",
100
+ ]))
101
+ return "OUT_FOR_DELIVERY";
102
+ return "IN_TRANSIT";
103
+ }
104
+ if (categoryCode === 3 || category.includes("szállítás") || category.includes("transport")) {
105
+ if (containsAny(description, ["nem kézbesíthető", "undeliverable"]))
106
+ return "RETURNING";
107
+ return "IN_TRANSIT";
108
+ }
109
+ if (categoryCode === 2 || category.includes("feldolgozás") || category.includes("processing"))
110
+ return "PROCESSING";
111
+ if (categoryCode === 1 || category.includes("felvétel") || category.includes("acceptance"))
112
+ return "ACCEPTED";
113
+ return null;
114
+ }
115
+ function mapMplPushStatus(status, statusText) {
116
+ const value = normalizeText(status);
117
+ const text = normalizeText(statusText);
118
+ if (containsAny(text, ["returned to sender", "feladónak visszakézbesítve"]))
119
+ return "RETURNED";
120
+ if (containsAny(value, ["returned", "return delivered"]))
121
+ return "RETURNED";
122
+ if (containsAny(value, ["return", "returning"]))
123
+ return "RETURNING";
124
+ if (containsAny(value, ["delivered"]))
125
+ return "DELIVERED";
126
+ if (containsAny(value, ["delivery"])) {
127
+ if (containsAny(text, ["ready for pickup", "ready for pick-up", "átvehető"]))
128
+ return "AT_PICKUP_POINT";
129
+ return "OUT_FOR_DELIVERY";
130
+ }
131
+ if (containsAny(value, ["transport", "transit"]))
132
+ return "IN_TRANSIT";
133
+ if (containsAny(value, ["processing"]))
134
+ return "PROCESSING";
135
+ if (containsAny(value, ["acceptance", "accepted"]))
136
+ return "ACCEPTED";
137
+ return null;
138
+ }
139
+ function mapDpdStatusdataScanCode(scanCode, serviceCode) {
140
+ const code = String(scanCode ?? "").trim().padStart(2, "0");
141
+ const service = String(serviceCode ?? "").trim();
142
+ if (code === "13") {
143
+ return ["298", "299", "300", "301"].includes(service)
144
+ ? "RETURNED"
145
+ : "DELIVERED";
146
+ }
147
+ if (code === "23")
148
+ return "AT_PICKUP_POINT";
149
+ if (code === "03")
150
+ return "OUT_FOR_DELIVERY";
151
+ if (code === "14")
152
+ return "ERROR";
153
+ if (code === "05" || code === "15")
154
+ return "ACCEPTED";
155
+ if (["02", "04", "06", "08", "09", "10", "20"].includes(code)) {
156
+ return "IN_TRANSIT";
157
+ }
158
+ // DPD 18 is explicitly an information scan that can represent different
159
+ // states, including calculated delivery/release, so it must not be guessed.
160
+ return null;
161
+ }
162
+ async function applyNormalizedTrackingEvent(input) {
163
+ const identifiers = uniqueStrings(input.event.shipmentIdentifiers);
164
+ if (!identifiers.length)
165
+ throw new Error("Hiányzó tracking/csomagazonosító.");
166
+ const fingerprint = input.event.eventId || (0, node_crypto_1.createHash)("sha256")
167
+ .update([
168
+ input.event.carrier,
169
+ input.event.source,
170
+ identifiers.join(","),
171
+ input.event.rawStatus || input.event.status || "",
172
+ input.event.occurredAt || "",
173
+ ].join("|"))
174
+ .digest("hex");
175
+ const acquired = input.operationStore
176
+ ? await (0, state_1.acquireOperation)(input.operationStore, {
177
+ provider: input.event.carrier,
178
+ operation_type: `status.${input.event.source}`,
179
+ entity_type: "shipment",
180
+ entity_id: identifiers[0],
181
+ external_id: identifiers[0],
182
+ idempotency_key: `${input.event.carrier}:status:${input.event.source}:${fingerprint}`,
183
+ reference_data: {
184
+ replay_safe: true,
185
+ identifiers,
186
+ status: input.event.status ?? null,
187
+ raw_status: input.event.rawStatus ?? null,
188
+ occurred_at: input.event.occurredAt ?? null,
189
+ },
190
+ })
191
+ : null;
192
+ if (acquired && !acquired.acquired) {
193
+ if (acquired.operation.status !== "succeeded") {
194
+ // A concurrent/stale worker may still own this event. Returning null keeps
195
+ // stream cursors and Statusdata files retryable until the operation either
196
+ // succeeds or the existing reconciliation logic moves it to failed.
197
+ return null;
198
+ }
199
+ return {
200
+ duplicate: true,
201
+ orderId: acquired.operation.reference_data?.order_id ?? null,
202
+ status: acquired.operation.reference_data?.status ?? input.event.status ?? null,
203
+ };
204
+ }
205
+ try {
206
+ const order = await findOrderByShipmentIdentifiers(input.orderService, input.event.carrier, identifiers, input.operationStore);
207
+ if (!order) {
208
+ if (acquired && input.operationStore) {
209
+ await (0, state_1.operationFailed)(input.operationStore, acquired.operation, new Error("Tracking eseményhez nem található rendelés."), false, identifiers[0], {
210
+ ...(acquired.operation.reference_data ?? {}),
211
+ replay_safe: true,
212
+ identifiers,
213
+ retry_reason: "order_not_found",
214
+ });
215
+ }
216
+ return null;
217
+ }
218
+ const rawCurrent = order.metadata?.[input.event.carrier];
219
+ const current = rawCurrent && typeof rawCurrent === "object"
220
+ ? rawCurrent
221
+ : {};
222
+ const hasCanonicalStatus = Boolean(input.event.status);
223
+ const incomingTime = hasCanonicalStatus ? parseTime(input.event.occurredAt) : null;
224
+ const currentTime = parseTime(current.statusUpdatedAt ?? current.status_updated_at);
225
+ const currentStatus = String(current.status || "").toUpperCase();
226
+ const nextStatus = input.event.status || currentStatus || "UNKNOWN";
227
+ const stale = hasCanonicalStatus && incomingTime != null && currentTime != null && incomingTime < currentTime;
228
+ const terminalRegression = hasCanonicalStatus && isTerminalShippingStatus(currentStatus) && !isTerminalShippingStatus(nextStatus);
229
+ if (stale || terminalRegression) {
230
+ if (acquired && input.operationStore) {
231
+ await (0, state_1.operationSucceeded)(input.operationStore, acquired.operation, identifiers[0], {
232
+ ...(acquired.operation.reference_data ?? {}),
233
+ replay_safe: true,
234
+ order_id: order.id,
235
+ status: current.status ?? null,
236
+ stale,
237
+ terminal_regression: terminalRegression,
238
+ });
239
+ }
240
+ return {
241
+ orderId: order.id,
242
+ status: current.status ?? null,
243
+ stale,
244
+ terminalRegression,
245
+ };
246
+ }
247
+ const eventAt = input.event.occurredAt || new Date().toISOString();
248
+ const statusUpdatedAt = hasCanonicalStatus
249
+ ? eventAt
250
+ : String(current.statusUpdatedAt ?? current.status_updated_at ?? "") || undefined;
251
+ const shipment = {
252
+ ...current,
253
+ ...(input.event.extra ?? {}),
254
+ status: nextStatus,
255
+ ...(statusUpdatedAt ? { statusUpdatedAt } : {}),
256
+ trackingSource: input.event.source,
257
+ trackingEventId: input.event.eventId || fingerprint,
258
+ lastTrackingEventAt: eventAt,
259
+ ...(hasCanonicalStatus && input.event.rawStatus != null ? { rawStatus: input.event.rawStatus } : {}),
260
+ ...(hasCanonicalStatus && input.event.statusText != null ? { statusDescription: input.event.statusText } : {}),
261
+ ...(input.event.trackingNumber ? { trackingNumber: input.event.trackingNumber } : {}),
262
+ ...(input.event.trackingUrl ? { trackingUrl: input.event.trackingUrl } : {}),
263
+ ...(hasCanonicalStatus && nextStatus === "DELIVERED" ? { deliveredAt: eventAt } : {}),
264
+ ...(hasCanonicalStatus && nextStatus === "RETURNED" ? { returnedAt: eventAt } : {}),
265
+ };
266
+ const next = (0, operations_1.appendShippingOperation)({ ...(order.metadata ?? {}), [input.event.carrier]: shipment }, {
267
+ carrier: input.event.carrier,
268
+ action: "status",
269
+ status: "success",
270
+ actorId: `${input.event.carrier}-${input.event.source}`,
271
+ durationMs: 0,
272
+ message: `${carrierName(input.event.carrier)}: tracking státusz frissítve (${input.event.source}).`,
273
+ response: {
274
+ status: nextStatus,
275
+ rawStatus: input.event.rawStatus ?? null,
276
+ source: input.event.source,
277
+ identifiers,
278
+ },
279
+ });
280
+ await input.orderService.updateOrders([{ id: order.id, metadata: next.metadata }]);
281
+ if (acquired && input.operationStore) {
282
+ await (0, state_1.operationSucceeded)(input.operationStore, acquired.operation, identifiers[0], {
283
+ ...(acquired.operation.reference_data ?? {}),
284
+ replay_safe: true,
285
+ order_id: order.id,
286
+ status: nextStatus,
287
+ identifiers,
288
+ });
289
+ }
290
+ return { orderId: order.id, status: nextStatus, duplicate: false };
291
+ }
292
+ catch (error) {
293
+ if (acquired && input.operationStore) {
294
+ await (0, state_1.operationFailed)(input.operationStore, acquired.operation, error, false, identifiers[0], acquired.operation.reference_data ?? undefined);
295
+ }
296
+ throw error;
297
+ }
298
+ }
299
+ async function findOrderByShipmentIdentifiers(orderService, carrier, identifiers, operationStore) {
300
+ const ids = new Set(uniqueStrings(identifiers));
301
+ if (operationStore) {
302
+ for (const identifier of ids) {
303
+ const operations = await operationStore.listIntegrationOperations({
304
+ provider: carrier,
305
+ operation_type: "shipment.create",
306
+ entity_type: "order",
307
+ status: "succeeded",
308
+ external_id: identifier,
309
+ }, { take: 5, order: { updated_at: "DESC" } });
310
+ const entityId = operations.find((item) => item.entity_id)?.entity_id;
311
+ if (entityId)
312
+ return orderService.retrieveOrder(entityId);
313
+ }
314
+ }
315
+ const pageSize = 200;
316
+ for (let skip = 0;; skip += pageSize) {
317
+ const orders = await orderService.listOrders({}, { take: pageSize, skip, order: { created_at: "DESC" } });
318
+ const match = orders.find((order) => shipmentMatches(order, carrier, ids));
319
+ if (match)
320
+ return match;
321
+ if (orders.length < pageSize)
322
+ break;
323
+ }
324
+ return undefined;
325
+ }
326
+ function shipmentMatches(order, carrier, identifiers) {
327
+ const raw = order.metadata?.[carrier];
328
+ if (!raw || typeof raw !== "object")
329
+ return false;
330
+ const shipment = raw;
331
+ const candidates = carrier === "foxpost"
332
+ ? [shipment.packageId, shipment.trackingNumber]
333
+ : carrier === "gls"
334
+ ? [shipment.parcelNumber, shipment.parcelId, shipment.trackingNumber]
335
+ : carrier === "packeta"
336
+ ? [shipment.packetId, shipment.barcode, shipment.trackingNumber, shipment.courierNumber]
337
+ : carrier === "dpd"
338
+ ? [shipment.parcelNumber, shipment.trackingNumber, shipment.shipmentId]
339
+ : [shipment.trackingNumber, ...(Array.isArray(shipment.packageTrackingNumbers) ? shipment.packageTrackingNumbers : [])];
340
+ return candidates.some((candidate) => identifiers.has(String(candidate ?? "").trim()));
341
+ }
342
+ function carrierName(carrier) {
343
+ if (carrier === "foxpost")
344
+ return "FOXPOST";
345
+ if (carrier === "gls")
346
+ return "GLS";
347
+ if (carrier === "packeta")
348
+ return "Packeta";
349
+ if (carrier === "dpd")
350
+ return "DPD";
351
+ return "MPL";
352
+ }
353
+ function uniqueStrings(values) {
354
+ return [...new Set(values.map((value) => String(value ?? "").trim()).filter(Boolean))];
355
+ }
356
+ function parseTime(value) {
357
+ if (!value)
358
+ return null;
359
+ const time = Date.parse(String(value));
360
+ return Number.isFinite(time) ? time : null;
361
+ }
362
+ function normalizeText(value) {
363
+ return String(value ?? "").trim().toLowerCase();
364
+ }
365
+ function containsAny(value, needles) {
366
+ return needles.some((needle) => value.includes(needle));
367
+ }
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvdHJhY2tpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpREEsNERBRUM7QUFFRCw0Q0ErQkM7QUFFRCw0Q0F3REM7QUFFRCw0Q0FnQkM7QUFFRCw0REF1QkM7QUFFRCxvRUF3TEM7QUFFRCx3RUFxQ0M7QUFFRCwwQ0FlQztBQTNhRCw2Q0FBd0M7QUFDeEMsNkNBQXNEO0FBTXRELHdFQUlxRDtBQWdDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQTBCO0lBQ2hELFdBQVc7SUFDWCxVQUFVO0lBQ1YsV0FBVztDQUNaLENBQUMsQ0FBQTtBQUVGLFNBQWdCLHdCQUF3QixDQUFDLEtBQWM7SUFDckQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUE2QixDQUFDLENBQUE7QUFDbkYsQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEtBSWhDO0lBQ0MsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNoRSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLEdBQUcsQ0FBQTtJQUVwRyxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RixPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQUUsT0FBTyxXQUFXLENBQUE7SUFFakMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBQy9DLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPLFVBQVUsQ0FBQTtJQUNoRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUE7SUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBQ2xELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUM7UUFBRSxPQUFPLGlCQUFpQixDQUFBO0lBQ3JHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQztRQUFFLE9BQU8sa0JBQWtCLENBQUE7SUFDaEUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQ3BELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztRQUMzSSxPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0lBRUQsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQzlCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQUUsT0FBTyxZQUFZLENBQUE7SUFDbEQsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUFFLE9BQU8saUJBQWlCLENBQUE7SUFDdEMsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBQ2hDLElBQUksRUFBRSxLQUFLLEVBQUU7UUFBRSxPQUFPLFlBQVksQ0FBQTtJQUNsQyxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUloQztJQUNDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDL0MsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRXBELElBQUksV0FBVyxDQUFDLFdBQVcsRUFBRTtRQUMzQiw0QkFBNEI7UUFDNUIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtLQUN6QixDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFFckIsSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFO1FBQzNCLG9CQUFvQjtRQUNwQixrQkFBa0I7UUFDbEIscUJBQXFCO0tBQ3RCLENBQUM7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUV0QixJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUU7UUFDM0Isc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix3QkFBd0I7S0FDekIsQ0FBQztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBRXRCLElBQUksWUFBWSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUM3RixrRUFBa0U7UUFDbEUsNkVBQTZFO1FBQzdFLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksWUFBWSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUMzRixJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDM0IsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYiw0QkFBNEI7WUFDNUIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtTQUNwQixDQUFDO1lBQUUsT0FBTyxpQkFBaUIsQ0FBQTtRQUM1QixJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUU7WUFDM0Isa0JBQWtCO1lBQ2xCLDZCQUE2QjtZQUM3QixrQkFBa0I7U0FDbkIsQ0FBQztZQUFFLE9BQU8sa0JBQWtCLENBQUE7UUFDN0IsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztJQUVELElBQUksWUFBWSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMzRixJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUFFLE9BQU8sV0FBVyxDQUFBO1FBQ3ZGLE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7SUFDRCxJQUFJLFlBQVksS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUFFLE9BQU8sWUFBWSxDQUFBO0lBQ2xILElBQUksWUFBWSxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDN0csT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBZSxFQUFFLFVBQW9CO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFdEMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsb0JBQW9CLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUFFLE9BQU8sVUFBVSxDQUFBO0lBQzlGLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDM0UsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUE7SUFDbkUsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUN6RCxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFBRSxPQUFPLGlCQUFpQixDQUFBO1FBQ3RHLE9BQU8sa0JBQWtCLENBQUE7SUFDM0IsQ0FBQztJQUNELElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUFFLE9BQU8sWUFBWSxDQUFBO0lBQ3JFLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQUUsT0FBTyxZQUFZLENBQUE7SUFDM0QsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQUUsT0FBTyxVQUFVLENBQUE7SUFDckUsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQ3RDLFFBQWlCLEVBQ2pCLFdBQXFCO0lBRXJCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMzRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBRWhELElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxVQUFVO1lBQ1osQ0FBQyxDQUFDLFdBQVcsQ0FBQTtJQUNqQixDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssSUFBSTtRQUFFLE9BQU8saUJBQWlCLENBQUE7SUFDM0MsSUFBSSxJQUFJLEtBQUssSUFBSTtRQUFFLE9BQU8sa0JBQWtCLENBQUE7SUFDNUMsSUFBSSxJQUFJLEtBQUssSUFBSTtRQUFFLE9BQU8sT0FBTyxDQUFBO0lBQ2pDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSTtRQUFFLE9BQU8sVUFBVSxDQUFBO0lBQ3JELElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLDRFQUE0RTtJQUM1RSxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFTSxLQUFLLFVBQVUsNEJBQTRCLENBQUMsS0FJbEQ7SUFDQyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtJQUU3RSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDO1NBQzVELE1BQU0sQ0FBQztRQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTztRQUNuQixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU07UUFDbEIsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDckIsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRTtRQUNqRCxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFO0tBQzdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjO1FBQ25DLENBQUMsQ0FBQyxNQUFNLElBQUEsd0JBQWdCLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUMzQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQzdCLGNBQWMsRUFBRSxVQUFVLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQzlDLFdBQVcsRUFBRSxVQUFVO1lBQ3ZCLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzNCLGVBQWUsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxXQUFXLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLFdBQVcsRUFBRTtZQUNyRixjQUFjLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFdBQVc7Z0JBQ1gsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQ2xDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJO2dCQUN6QyxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSTthQUM1QztTQUNGLENBQUM7UUFDSixDQUFDLENBQUMsSUFBSSxDQUFBO0lBRVIsSUFBSSxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkMsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM5QywyRUFBMkU7WUFDM0UsMkVBQTJFO1lBQzNFLG9FQUFvRTtZQUNwRSxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsUUFBUSxJQUFJLElBQUk7WUFDNUQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJO1NBQ2hGLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsTUFBTSw4QkFBOEIsQ0FDaEQsS0FBSyxDQUFDLFlBQVksRUFDbEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQ25CLFdBQVcsRUFDWCxLQUFLLENBQUMsY0FBYyxDQUNyQixDQUFBO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUEsdUJBQWUsRUFDbkIsS0FBSyxDQUFDLGNBQWMsRUFDcEIsUUFBUSxDQUFDLFNBQVMsRUFDbEIsSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsRUFDeEQsS0FBSyxFQUNMLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZDtvQkFDRSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO29CQUM1QyxXQUFXLEVBQUUsSUFBSTtvQkFDakIsV0FBVztvQkFDWCxZQUFZLEVBQUUsaUJBQWlCO2lCQUNoQyxDQUNGLENBQUE7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVE7WUFDMUQsQ0FBQyxDQUFDLFVBQXFDO1lBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDTixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3RELE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ2xGLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ25GLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBNkIsQ0FBQTtRQUMzRixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxhQUFhLElBQUksU0FBUyxDQUFBO1FBRW5FLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxZQUFZLEdBQUcsV0FBVyxDQUFBO1FBQzdHLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLElBQUksd0JBQXdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUVqSSxJQUFJLEtBQUssSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFBLDBCQUFrQixFQUN0QixLQUFLLENBQUMsY0FBYyxFQUNwQixRQUFRLENBQUMsU0FBUyxFQUNsQixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Q7b0JBQ0UsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztvQkFDNUMsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDbEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSTtvQkFDOUIsS0FBSztvQkFDTCxtQkFBbUIsRUFBRSxrQkFBa0I7aUJBQ3hDLENBQ0YsQ0FBQTtZQUNILENBQUM7WUFDRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDakIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSTtnQkFDOUIsS0FBSztnQkFDTCxrQkFBa0I7YUFDbkIsQ0FBQTtRQUNILENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xFLE1BQU0sZUFBZSxHQUFHLGtCQUFrQjtZQUN4QyxDQUFDLENBQUMsT0FBTztZQUNULENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDLElBQUksU0FBUyxDQUFBO1FBQ25GLE1BQU0sUUFBUSxHQUE0QjtZQUN4QyxHQUFHLE9BQU87WUFDVixHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQ2xDLGVBQWUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxXQUFXO1lBQ25ELG1CQUFtQixFQUFFLE9BQU87WUFDNUIsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BHLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JGLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVFLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxVQUFVLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JGLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ3BGLENBQUE7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFBLG9DQUF1QixFQUNsQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFDOUQ7WUFDRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQzVCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLE9BQU8sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3ZELFVBQVUsRUFBRSxDQUFDO1lBQ2IsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSTtZQUNuRyxRQUFRLEVBQUU7Z0JBQ1IsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJO2dCQUN4QyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUMxQixXQUFXO2FBQ1o7U0FDRixDQUNGLENBQUE7UUFFRCxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUVsRixJQUFJLFFBQVEsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFBLDBCQUFrQixFQUN0QixLQUFLLENBQUMsY0FBYyxFQUNwQixRQUFRLENBQUMsU0FBUyxFQUNsQixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Q7Z0JBQ0UsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztnQkFDNUMsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDbEIsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLFdBQVc7YUFDWixDQUNGLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFBO0lBQ3BFLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxRQUFRLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBQSx1QkFBZSxFQUNuQixLQUFLLENBQUMsY0FBYyxFQUNwQixRQUFRLENBQUMsU0FBUyxFQUNsQixLQUFLLEVBQ0wsS0FBSyxFQUNMLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxRQUFRLENBQUMsU0FBUyxDQUFDLGNBQWMsSUFBSSxTQUFTLENBQy9DLENBQUE7UUFDSCxDQUFDO1FBQ0QsTUFBTSxLQUFLLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSw4QkFBOEIsQ0FDbEQsWUFBa0MsRUFDbEMsT0FBd0IsRUFDeEIsV0FBcUIsRUFDckIsY0FBMEM7SUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7SUFFL0MsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNuQixLQUFLLE1BQU0sVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzdCLE1BQU0sVUFBVSxHQUFHLE1BQU0sY0FBYyxDQUFDLHlCQUF5QixDQUMvRDtnQkFDRSxRQUFRLEVBQUUsT0FBTztnQkFDakIsY0FBYyxFQUFFLGlCQUFpQjtnQkFDakMsV0FBVyxFQUFFLE9BQU87Z0JBQ3BCLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixXQUFXLEVBQUUsVUFBVTthQUN4QixFQUNELEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDM0MsQ0FBQTtZQUNELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUE7WUFDckUsSUFBSSxRQUFRO2dCQUFFLE9BQU8sWUFBWSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMzRCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQTtJQUNwQixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsR0FBSSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUMxQyxFQUFFLEVBQ0YsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDeEQsQ0FBQTtRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDMUUsSUFBSSxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDdkIsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVE7WUFBRSxNQUFLO0lBQ3JDLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEtBQW9CLEVBQUUsT0FBd0IsRUFBRSxXQUF3QjtJQUN0RyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckMsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDakQsTUFBTSxRQUFRLEdBQUcsR0FBOEIsQ0FBQTtJQUMvQyxNQUFNLFVBQVUsR0FBYyxPQUFPLEtBQUssU0FBUztRQUNqRCxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFDL0MsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLO1lBQ2pCLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDckIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFDeEYsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLO29CQUNqQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQztvQkFDdkUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBRS9ILE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUN4RixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsT0FBd0I7SUFDM0MsSUFBSSxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFBO0lBQzNDLElBQUksT0FBTyxLQUFLLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNuQyxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFDM0MsSUFBSSxPQUFPLEtBQUssS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQ25DLE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE1BQWlCO0lBQ3RDLE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3hGLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFjO0lBQy9CLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQzVDLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtBQUNqRCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYSxFQUFFLE9BQWlCO0lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0FBQ3pELENBQUMifQ==
@@ -1,21 +1,18 @@
1
- import type { ShippingOrderService } from "./types";
2
1
  import type { IntegrationOperationStore } from "../../../modules/integration-operation/types";
2
+ import type { ShippingOrderService } from "./types";
3
3
  type ShippingWebhookCarrier = "foxpost" | "gls";
4
4
  export declare function verifyShippingWebhook(provided: unknown): boolean;
5
5
  export declare function applyCarrierWebhook(orderService: ShippingOrderService, carrier: ShippingWebhookCarrier, body: unknown, operationStore?: IntegrationOperationStore): Promise<{
6
6
  duplicate: boolean;
7
- status: {};
8
- orderId?: undefined;
7
+ orderId: {} | null;
8
+ status: {} | null;
9
9
  stale?: undefined;
10
+ terminalRegression?: undefined;
10
11
  } | {
11
12
  orderId: string;
12
- status: unknown;
13
+ status: {} | null;
13
14
  stale: boolean;
15
+ terminalRegression: boolean;
14
16
  duplicate?: undefined;
15
- } | {
16
- orderId: string;
17
- status: "CANCELLED" | "CREATED" | "LABEL_CREATED" | "HANDED_OVER" | "IN_TRANSIT" | "AT_LOCKER" | "OUT_FOR_DELIVERY" | "DELIVERED" | "RETURNING" | "RETURNED" | "ERROR" | "UNKNOWN";
18
- duplicate?: undefined;
19
- stale?: undefined;
20
17
  } | null>;
21
18
  export {};