@freighttech/shipment-tracking 0.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 (456) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +25 -0
  3. package/dist/generated/entities/bic_config/index.js +21 -0
  4. package/dist/generated/entities/bic_config/index.js.map +7 -0
  5. package/dist/generated/entities/carrier_config/index.js +27 -0
  6. package/dist/generated/entities/carrier_config/index.js.map +7 -0
  7. package/dist/generated/entities/location_override/index.js +33 -0
  8. package/dist/generated/entities/location_override/index.js.map +7 -0
  9. package/dist/generated/entities/shipment/index.js +73 -0
  10. package/dist/generated/entities/shipment/index.js.map +7 -0
  11. package/dist/generated/entities/ships_go_config/index.js +31 -0
  12. package/dist/generated/entities/ships_go_config/index.js.map +7 -0
  13. package/dist/generated/entities/tracking_event/index.js +101 -0
  14. package/dist/generated/entities/tracking_event/index.js.map +7 -0
  15. package/dist/generated/entities/tracking_job/index.js +47 -0
  16. package/dist/generated/entities/tracking_job/index.js.map +7 -0
  17. package/dist/generated/entities/webhook/index.js +25 -0
  18. package/dist/generated/entities/webhook/index.js.map +7 -0
  19. package/dist/generated/entities/webhook_delivery/index.js +25 -0
  20. package/dist/generated/entities/webhook_delivery/index.js.map +7 -0
  21. package/dist/generated/entities.ids.generated.js +21 -0
  22. package/dist/generated/entities.ids.generated.js.map +7 -0
  23. package/dist/index.js +41 -0
  24. package/dist/index.js.map +7 -0
  25. package/dist/modules/shipment_tracking/acl.js +22 -0
  26. package/dist/modules/shipment_tracking/acl.js.map +7 -0
  27. package/dist/modules/shipment_tracking/api/bic-configs/route.js +176 -0
  28. package/dist/modules/shipment_tracking/api/bic-configs/route.js.map +7 -0
  29. package/dist/modules/shipment_tracking/api/bic-configs/test/route.js +95 -0
  30. package/dist/modules/shipment_tracking/api/bic-configs/test/route.js.map +7 -0
  31. package/dist/modules/shipment_tracking/api/cargo-events/route.js +93 -0
  32. package/dist/modules/shipment_tracking/api/cargo-events/route.js.map +7 -0
  33. package/dist/modules/shipment_tracking/api/carrier-configs/route.js +139 -0
  34. package/dist/modules/shipment_tracking/api/carrier-configs/route.js.map +7 -0
  35. package/dist/modules/shipment_tracking/api/dashboard/ships-map/route.js +177 -0
  36. package/dist/modules/shipment_tracking/api/dashboard/ships-map/route.js.map +7 -0
  37. package/dist/modules/shipment_tracking/api/location-overrides/route.js +179 -0
  38. package/dist/modules/shipment_tracking/api/location-overrides/route.js.map +7 -0
  39. package/dist/modules/shipment_tracking/api/openapi.js +27 -0
  40. package/dist/modules/shipment_tracking/api/openapi.js.map +7 -0
  41. package/dist/modules/shipment_tracking/api/shipments/route.js +192 -0
  42. package/dist/modules/shipment_tracking/api/shipments/route.js.map +7 -0
  43. package/dist/modules/shipment_tracking/api/shipsgo-configs/route.js +185 -0
  44. package/dist/modules/shipment_tracking/api/shipsgo-configs/route.js.map +7 -0
  45. package/dist/modules/shipment_tracking/api/tracking-jobs/route.js +144 -0
  46. package/dist/modules/shipment_tracking/api/tracking-jobs/route.js.map +7 -0
  47. package/dist/modules/shipment_tracking/api/tracking-jobs/sync/route.js +107 -0
  48. package/dist/modules/shipment_tracking/api/tracking-jobs/sync/route.js.map +7 -0
  49. package/dist/modules/shipment_tracking/api/utils.js +12 -0
  50. package/dist/modules/shipment_tracking/api/utils.js.map +7 -0
  51. package/dist/modules/shipment_tracking/api/webhooks/deliveries/route.js +76 -0
  52. package/dist/modules/shipment_tracking/api/webhooks/deliveries/route.js.map +7 -0
  53. package/dist/modules/shipment_tracking/api/webhooks/route.js +135 -0
  54. package/dist/modules/shipment_tracking/api/webhooks/route.js.map +7 -0
  55. package/dist/modules/shipment_tracking/api/webhooks/test/route.js +71 -0
  56. package/dist/modules/shipment_tracking/api/webhooks/test/route.js.map +7 -0
  57. package/dist/modules/shipment_tracking/assets/carriers/cma_cgm.png +0 -0
  58. package/dist/modules/shipment_tracking/assets/carriers/cosco.png +0 -0
  59. package/dist/modules/shipment_tracking/assets/carriers/evergreen.png +0 -0
  60. package/dist/modules/shipment_tracking/assets/carriers/hapag_lloyd.png +0 -0
  61. package/dist/modules/shipment_tracking/assets/carriers/maersk.png +0 -0
  62. package/dist/modules/shipment_tracking/assets/carriers/msc.png +0 -0
  63. package/dist/modules/shipment_tracking/assets/carriers/one.png +0 -0
  64. package/dist/modules/shipment_tracking/assets/carriers/oocl.png +0 -0
  65. package/dist/modules/shipment_tracking/assets/carriers/yang_ming.png +0 -0
  66. package/dist/modules/shipment_tracking/assets/carriers/zim.png +0 -0
  67. package/dist/modules/shipment_tracking/assets/index.js +52 -0
  68. package/dist/modules/shipment_tracking/assets/index.js.map +7 -0
  69. package/dist/modules/shipment_tracking/backend/carrier-configs/page.js +621 -0
  70. package/dist/modules/shipment_tracking/backend/carrier-configs/page.js.map +7 -0
  71. package/dist/modules/shipment_tracking/backend/carrier-configs/page.meta.js +19 -0
  72. package/dist/modules/shipment_tracking/backend/carrier-configs/page.meta.js.map +7 -0
  73. package/dist/modules/shipment_tracking/backend/location-overrides/page.js +198 -0
  74. package/dist/modules/shipment_tracking/backend/location-overrides/page.js.map +7 -0
  75. package/dist/modules/shipment_tracking/backend/location-overrides/page.meta.js +19 -0
  76. package/dist/modules/shipment_tracking/backend/location-overrides/page.meta.js.map +7 -0
  77. package/dist/modules/shipment_tracking/backend/shipment-tracking/page.js +279 -0
  78. package/dist/modules/shipment_tracking/backend/shipment-tracking/page.js.map +7 -0
  79. package/dist/modules/shipment_tracking/backend/shipment-tracking/page.meta.js +19 -0
  80. package/dist/modules/shipment_tracking/backend/shipment-tracking/page.meta.js.map +7 -0
  81. package/dist/modules/shipment_tracking/backend/tracking-jobs/page.js +10 -0
  82. package/dist/modules/shipment_tracking/backend/tracking-jobs/page.js.map +7 -0
  83. package/dist/modules/shipment_tracking/backend/tracking-jobs/page.meta.js +19 -0
  84. package/dist/modules/shipment_tracking/backend/tracking-jobs/page.meta.js.map +7 -0
  85. package/dist/modules/shipment_tracking/backend/webhooks/page.js +198 -0
  86. package/dist/modules/shipment_tracking/backend/webhooks/page.js.map +7 -0
  87. package/dist/modules/shipment_tracking/backend/webhooks/page.meta.js +19 -0
  88. package/dist/modules/shipment_tracking/backend/webhooks/page.meta.js.map +7 -0
  89. package/dist/modules/shipment_tracking/ce.js +52 -0
  90. package/dist/modules/shipment_tracking/ce.js.map +7 -0
  91. package/dist/modules/shipment_tracking/cli.js +229 -0
  92. package/dist/modules/shipment_tracking/cli.js.map +7 -0
  93. package/dist/modules/shipment_tracking/commands/bic-configs.js +66 -0
  94. package/dist/modules/shipment_tracking/commands/bic-configs.js.map +7 -0
  95. package/dist/modules/shipment_tracking/commands/carrier-configs.js +65 -0
  96. package/dist/modules/shipment_tracking/commands/carrier-configs.js.map +7 -0
  97. package/dist/modules/shipment_tracking/commands/index.js +9 -0
  98. package/dist/modules/shipment_tracking/commands/index.js.map +7 -0
  99. package/dist/modules/shipment_tracking/commands/location-overrides.js +93 -0
  100. package/dist/modules/shipment_tracking/commands/location-overrides.js.map +7 -0
  101. package/dist/modules/shipment_tracking/commands/shipments.js +200 -0
  102. package/dist/modules/shipment_tracking/commands/shipments.js.map +7 -0
  103. package/dist/modules/shipment_tracking/commands/shipsgo-configs.js +75 -0
  104. package/dist/modules/shipment_tracking/commands/shipsgo-configs.js.map +7 -0
  105. package/dist/modules/shipment_tracking/commands/tracking-jobs.js +120 -0
  106. package/dist/modules/shipment_tracking/commands/tracking-jobs.js.map +7 -0
  107. package/dist/modules/shipment_tracking/commands/tracking.js +140 -0
  108. package/dist/modules/shipment_tracking/commands/tracking.js.map +7 -0
  109. package/dist/modules/shipment_tracking/commands/webhooks.js +115 -0
  110. package/dist/modules/shipment_tracking/commands/webhooks.js.map +7 -0
  111. package/dist/modules/shipment_tracking/components/CombinedTimestampCell.js +168 -0
  112. package/dist/modules/shipment_tracking/components/CombinedTimestampCell.js.map +7 -0
  113. package/dist/modules/shipment_tracking/components/FacilityLocationInput.js +202 -0
  114. package/dist/modules/shipment_tracking/components/FacilityLocationInput.js.map +7 -0
  115. package/dist/modules/shipment_tracking/components/LocationOverrideDrawer.js +501 -0
  116. package/dist/modules/shipment_tracking/components/LocationOverrideDrawer.js.map +7 -0
  117. package/dist/modules/shipment_tracking/components/ShipmentDetailsDrawer.js +818 -0
  118. package/dist/modules/shipment_tracking/components/ShipmentDetailsDrawer.js.map +7 -0
  119. package/dist/modules/shipment_tracking/components/ShipmentDrawer.js +404 -0
  120. package/dist/modules/shipment_tracking/components/ShipmentDrawer.js.map +7 -0
  121. package/dist/modules/shipment_tracking/components/ShipsGoConfigSection.js +200 -0
  122. package/dist/modules/shipment_tracking/components/ShipsGoConfigSection.js.map +7 -0
  123. package/dist/modules/shipment_tracking/components/TimestampCell.js +108 -0
  124. package/dist/modules/shipment_tracking/components/TimestampCell.js.map +7 -0
  125. package/dist/modules/shipment_tracking/components/TrackingJobDrawer.js +343 -0
  126. package/dist/modules/shipment_tracking/components/TrackingJobDrawer.js.map +7 -0
  127. package/dist/modules/shipment_tracking/components/VesselTrackingMap.js +496 -0
  128. package/dist/modules/shipment_tracking/components/VesselTrackingMap.js.map +7 -0
  129. package/dist/modules/shipment_tracking/components/WebhookDrawer.js +332 -0
  130. package/dist/modules/shipment_tracking/components/WebhookDrawer.js.map +7 -0
  131. package/dist/modules/shipment_tracking/data/entities.js +686 -0
  132. package/dist/modules/shipment_tracking/data/entities.js.map +7 -0
  133. package/dist/modules/shipment_tracking/data/validators.js +434 -0
  134. package/dist/modules/shipment_tracking/data/validators.js.map +7 -0
  135. package/dist/modules/shipment_tracking/di.js +60 -0
  136. package/dist/modules/shipment_tracking/di.js.map +7 -0
  137. package/dist/modules/shipment_tracking/encryption.js +12 -0
  138. package/dist/modules/shipment_tracking/encryption.js.map +7 -0
  139. package/dist/modules/shipment_tracking/events.js +87 -0
  140. package/dist/modules/shipment_tracking/events.js.map +7 -0
  141. package/dist/modules/shipment_tracking/hooks/useVesselTracking.js +137 -0
  142. package/dist/modules/shipment_tracking/hooks/useVesselTracking.js.map +7 -0
  143. package/dist/modules/shipment_tracking/i18n/de.json +327 -0
  144. package/dist/modules/shipment_tracking/i18n/en.json +327 -0
  145. package/dist/modules/shipment_tracking/i18n/es.json +327 -0
  146. package/dist/modules/shipment_tracking/i18n/pl.json +327 -0
  147. package/dist/modules/shipment_tracking/index.js +15 -0
  148. package/dist/modules/shipment_tracking/index.js.map +7 -0
  149. package/dist/modules/shipment_tracking/lib/adapters/cma-cgm.js +66 -0
  150. package/dist/modules/shipment_tracking/lib/adapters/cma-cgm.js.map +7 -0
  151. package/dist/modules/shipment_tracking/lib/adapters/cosco-types.js +1 -0
  152. package/dist/modules/shipment_tracking/lib/adapters/cosco-types.js.map +7 -0
  153. package/dist/modules/shipment_tracking/lib/adapters/cosco.js +236 -0
  154. package/dist/modules/shipment_tracking/lib/adapters/cosco.js.map +7 -0
  155. package/dist/modules/shipment_tracking/lib/adapters/evergreen.js +87 -0
  156. package/dist/modules/shipment_tracking/lib/adapters/evergreen.js.map +7 -0
  157. package/dist/modules/shipment_tracking/lib/adapters/hapag-lloyd.js +68 -0
  158. package/dist/modules/shipment_tracking/lib/adapters/hapag-lloyd.js.map +7 -0
  159. package/dist/modules/shipment_tracking/lib/adapters/index.js +20 -0
  160. package/dist/modules/shipment_tracking/lib/adapters/index.js.map +7 -0
  161. package/dist/modules/shipment_tracking/lib/adapters/maersk.js +84 -0
  162. package/dist/modules/shipment_tracking/lib/adapters/maersk.js.map +7 -0
  163. package/dist/modules/shipment_tracking/lib/adapters/msc.js +170 -0
  164. package/dist/modules/shipment_tracking/lib/adapters/msc.js.map +7 -0
  165. package/dist/modules/shipment_tracking/lib/adapters/zim.js +85 -0
  166. package/dist/modules/shipment_tracking/lib/adapters/zim.js.map +7 -0
  167. package/dist/modules/shipment_tracking/lib/audit-helpers.js +20 -0
  168. package/dist/modules/shipment_tracking/lib/audit-helpers.js.map +7 -0
  169. package/dist/modules/shipment_tracking/lib/auth/base64url.js +8 -0
  170. package/dist/modules/shipment_tracking/lib/auth/base64url.js.map +7 -0
  171. package/dist/modules/shipment_tracking/lib/auth/oauth-client.js +38 -0
  172. package/dist/modules/shipment_tracking/lib/auth/oauth-client.js.map +7 -0
  173. package/dist/modules/shipment_tracking/lib/background.js +15 -0
  174. package/dist/modules/shipment_tracking/lib/background.js.map +7 -0
  175. package/dist/modules/shipment_tracking/lib/bic-api-client.js +106 -0
  176. package/dist/modules/shipment_tracking/lib/bic-api-client.js.map +7 -0
  177. package/dist/modules/shipment_tracking/lib/carrier-adapter.js +17 -0
  178. package/dist/modules/shipment_tracking/lib/carrier-adapter.js.map +7 -0
  179. package/dist/modules/shipment_tracking/lib/current-vessel.js +149 -0
  180. package/dist/modules/shipment_tracking/lib/current-vessel.js.map +7 -0
  181. package/dist/modules/shipment_tracking/lib/dcsa-event-mapping.js +124 -0
  182. package/dist/modules/shipment_tracking/lib/dcsa-event-mapping.js.map +7 -0
  183. package/dist/modules/shipment_tracking/lib/dcsa-event-parser.js +112 -0
  184. package/dist/modules/shipment_tracking/lib/dcsa-event-parser.js.map +7 -0
  185. package/dist/modules/shipment_tracking/lib/dcsa-params.js +16 -0
  186. package/dist/modules/shipment_tracking/lib/dcsa-params.js.map +7 -0
  187. package/dist/modules/shipment_tracking/lib/empty-return.js +48 -0
  188. package/dist/modules/shipment_tracking/lib/empty-return.js.map +7 -0
  189. package/dist/modules/shipment_tracking/lib/location-overrides.js +85 -0
  190. package/dist/modules/shipment_tracking/lib/location-overrides.js.map +7 -0
  191. package/dist/modules/shipment_tracking/lib/location-types.js +59 -0
  192. package/dist/modules/shipment_tracking/lib/location-types.js.map +7 -0
  193. package/dist/modules/shipment_tracking/lib/logger.js +113 -0
  194. package/dist/modules/shipment_tracking/lib/logger.js.map +7 -0
  195. package/dist/modules/shipment_tracking/lib/poi-event-processor.js +183 -0
  196. package/dist/modules/shipment_tracking/lib/poi-event-processor.js.map +7 -0
  197. package/dist/modules/shipment_tracking/lib/poi-nats-config.js +52 -0
  198. package/dist/modules/shipment_tracking/lib/poi-nats-config.js.map +7 -0
  199. package/dist/modules/shipment_tracking/lib/poi-types.js +43 -0
  200. package/dist/modules/shipment_tracking/lib/poi-types.js.map +7 -0
  201. package/dist/modules/shipment_tracking/lib/rate-limiter.js +31 -0
  202. package/dist/modules/shipment_tracking/lib/rate-limiter.js.map +7 -0
  203. package/dist/modules/shipment_tracking/lib/route-extraction.js +187 -0
  204. package/dist/modules/shipment_tracking/lib/route-extraction.js.map +7 -0
  205. package/dist/modules/shipment_tracking/lib/route-inference.js +106 -0
  206. package/dist/modules/shipment_tracking/lib/route-inference.js.map +7 -0
  207. package/dist/modules/shipment_tracking/lib/schedule-generator.js +63 -0
  208. package/dist/modules/shipment_tracking/lib/schedule-generator.js.map +7 -0
  209. package/dist/modules/shipment_tracking/lib/shipsgo-client.js +143 -0
  210. package/dist/modules/shipment_tracking/lib/shipsgo-client.js.map +7 -0
  211. package/dist/modules/shipment_tracking/lib/shipsgo-mapper.js +204 -0
  212. package/dist/modules/shipment_tracking/lib/shipsgo-mapper.js.map +7 -0
  213. package/dist/modules/shipment_tracking/lib/status-machine.js +131 -0
  214. package/dist/modules/shipment_tracking/lib/status-machine.js.map +7 -0
  215. package/dist/modules/shipment_tracking/lib/time-extraction.js +41 -0
  216. package/dist/modules/shipment_tracking/lib/time-extraction.js.map +7 -0
  217. package/dist/modules/shipment_tracking/lib/timestamp-utils.js +100 -0
  218. package/dist/modules/shipment_tracking/lib/timestamp-utils.js.map +7 -0
  219. package/dist/modules/shipment_tracking/lib/vessel-api.js +111 -0
  220. package/dist/modules/shipment_tracking/lib/vessel-api.js.map +7 -0
  221. package/dist/modules/shipment_tracking/lib/vessel-cache.js +50 -0
  222. package/dist/modules/shipment_tracking/lib/vessel-cache.js.map +7 -0
  223. package/dist/modules/shipment_tracking/lib/vessel-extraction.js +13 -0
  224. package/dist/modules/shipment_tracking/lib/vessel-extraction.js.map +7 -0
  225. package/dist/modules/shipment_tracking/lib/webhook-dispatcher.js +62 -0
  226. package/dist/modules/shipment_tracking/lib/webhook-dispatcher.js.map +7 -0
  227. package/dist/modules/shipment_tracking/migrations/Migration20260422161208_shipment_tracking.js +48 -0
  228. package/dist/modules/shipment_tracking/migrations/Migration20260422161208_shipment_tracking.js.map +7 -0
  229. package/dist/modules/shipment_tracking/migrations/Migration20260529120000_shipment_tracking_poi_region_names.js +15 -0
  230. package/dist/modules/shipment_tracking/migrations/Migration20260529120000_shipment_tracking_poi_region_names.js.map +7 -0
  231. package/dist/modules/shipment_tracking/migrations/Migration20260821120000_shipment_tracking_shipsgo.js +47 -0
  232. package/dist/modules/shipment_tracking/migrations/Migration20260821120000_shipment_tracking_shipsgo.js.map +7 -0
  233. package/dist/modules/shipment_tracking/notifications.js +145 -0
  234. package/dist/modules/shipment_tracking/notifications.js.map +7 -0
  235. package/dist/modules/shipment_tracking/services/carrierRegistry.js +24 -0
  236. package/dist/modules/shipment_tracking/services/carrierRegistry.js.map +7 -0
  237. package/dist/modules/shipment_tracking/services/poiNatsService.js +397 -0
  238. package/dist/modules/shipment_tracking/services/poiNatsService.js.map +7 -0
  239. package/dist/modules/shipment_tracking/services/shipsGoProvider.js +163 -0
  240. package/dist/modules/shipment_tracking/services/shipsGoProvider.js.map +7 -0
  241. package/dist/modules/shipment_tracking/services/trackingService.js +1283 -0
  242. package/dist/modules/shipment_tracking/services/trackingService.js.map +7 -0
  243. package/dist/modules/shipment_tracking/services/webhookService.js +263 -0
  244. package/dist/modules/shipment_tracking/services/webhookService.js.map +7 -0
  245. package/dist/modules/shipment_tracking/setup.js +72 -0
  246. package/dist/modules/shipment_tracking/setup.js.map +7 -0
  247. package/dist/modules/shipment_tracking/subscribers/cargo-event-created.js +60 -0
  248. package/dist/modules/shipment_tracking/subscribers/cargo-event-created.js.map +7 -0
  249. package/dist/modules/shipment_tracking/subscribers/dcsa-event-webhook-dispatch.js +58 -0
  250. package/dist/modules/shipment_tracking/subscribers/dcsa-event-webhook-dispatch.js.map +7 -0
  251. package/dist/modules/shipment_tracking/subscribers/poi-event-notification.js +82 -0
  252. package/dist/modules/shipment_tracking/subscribers/poi-event-notification.js.map +7 -0
  253. package/dist/modules/shipment_tracking/subscribers/poi-event-webhook-dispatch.js +53 -0
  254. package/dist/modules/shipment_tracking/subscribers/poi-event-webhook-dispatch.js.map +7 -0
  255. package/dist/modules/shipment_tracking/subscribers/shipment-status-changed.js +28 -0
  256. package/dist/modules/shipment_tracking/subscribers/shipment-status-changed.js.map +7 -0
  257. package/dist/modules/shipment_tracking/subscribers/terminal-event-ingest.js +67 -0
  258. package/dist/modules/shipment_tracking/subscribers/terminal-event-ingest.js.map +7 -0
  259. package/dist/modules/shipment_tracking/subscribers/tracking-job-initial-poll.js +30 -0
  260. package/dist/modules/shipment_tracking/subscribers/tracking-job-initial-poll.js.map +7 -0
  261. package/dist/modules/shipment_tracking/subscribers/tracking-job-webhook-dispatch.js +19 -0
  262. package/dist/modules/shipment_tracking/subscribers/tracking-job-webhook-dispatch.js.map +7 -0
  263. package/dist/modules/shipment_tracking/tables/index.js +6 -0
  264. package/dist/modules/shipment_tracking/tables/index.js.map +7 -0
  265. package/dist/modules/shipment_tracking/tables/tracking_job/table.client.js +284 -0
  266. package/dist/modules/shipment_tracking/tables/tracking_job/table.client.js.map +7 -0
  267. package/dist/modules/shipment_tracking/tables/tracking_job/table.js +36 -0
  268. package/dist/modules/shipment_tracking/tables/tracking_job/table.js.map +7 -0
  269. package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/config.js +25 -0
  270. package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/config.js.map +7 -0
  271. package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.client.js +355 -0
  272. package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.client.js.map +7 -0
  273. package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.js +26 -0
  274. package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.js.map +7 -0
  275. package/dist/types/assets.d.js +1 -0
  276. package/dist/types/assets.d.js.map +7 -0
  277. package/generated/entities/bic_config/index.ts +20 -0
  278. package/generated/entities/carrier_config/index.ts +23 -0
  279. package/generated/entities/location_override/index.ts +26 -0
  280. package/generated/entities/shipment/index.ts +46 -0
  281. package/generated/entities/ships_go_config/index.ts +25 -0
  282. package/generated/entities/tracking_event/index.ts +60 -0
  283. package/generated/entities/tracking_job/index.ts +33 -0
  284. package/generated/entities/webhook/index.ts +22 -0
  285. package/generated/entities/webhook_delivery/index.ts +22 -0
  286. package/generated/entities.ids.generated.ts +47 -0
  287. package/package.json +81 -0
  288. package/src/index.ts +39 -0
  289. package/src/modules/shipment_tracking/__integration__/TC-TRACK-410-shipsgo-config-api.spec.ts +133 -0
  290. package/src/modules/shipment_tracking/__integration__/meta.ts +4 -0
  291. package/src/modules/shipment_tracking/__tests__/empty-return-stop.test.ts +231 -0
  292. package/src/modules/shipment_tracking/__tests__/fixtures/hapag-lloyd-transship-container.json +702 -0
  293. package/src/modules/shipment_tracking/__tests__/fixtures/index.ts +434 -0
  294. package/src/modules/shipment_tracking/__tests__/fixtures/maersk-multi-transship-completed.json +1518 -0
  295. package/src/modules/shipment_tracking/__tests__/fixtures/maersk-transship-intransit.json +558 -0
  296. package/src/modules/shipment_tracking/__tests__/fixtures/msc-direct.json +222 -0
  297. package/src/modules/shipment_tracking/__tests__/fixtures/msc-multi-transship-completed.json +974 -0
  298. package/src/modules/shipment_tracking/__tests__/fixtures/msc-multi.json +4846 -0
  299. package/src/modules/shipment_tracking/__tests__/fixtures/msc-transship.json +409 -0
  300. package/src/modules/shipment_tracking/__tests__/fixtures/poi-events.json +240 -0
  301. package/src/modules/shipment_tracking/__tests__/fixtures/synthetic/index.ts +138 -0
  302. package/src/modules/shipment_tracking/__tests__/fixtures/synthetic-eta-updates.json +288 -0
  303. package/src/modules/shipment_tracking/__tests__/fixtures/synthetic-route-inference.json +201 -0
  304. package/src/modules/shipment_tracking/__tests__/fixtures/synthetic-voyage-progression.json +410 -0
  305. package/src/modules/shipment_tracking/__tests__/shipsgo-air-mapper.test.ts +157 -0
  306. package/src/modules/shipment_tracking/__tests__/shipsgo-client.test.ts +155 -0
  307. package/src/modules/shipment_tracking/__tests__/shipsgo-mapper.test.ts +201 -0
  308. package/src/modules/shipment_tracking/__tests__/shipsgo-poll.test.ts +357 -0
  309. package/src/modules/shipment_tracking/__tests__/shipsgo-provider.test.ts +364 -0
  310. package/src/modules/shipment_tracking/__tests__/trackingService.integration.test.ts +2248 -0
  311. package/src/modules/shipment_tracking/__tests__/webhookPayload.test.ts +151 -0
  312. package/src/modules/shipment_tracking/acl.ts +18 -0
  313. package/src/modules/shipment_tracking/api/bic-configs/route.ts +206 -0
  314. package/src/modules/shipment_tracking/api/bic-configs/test/route.ts +108 -0
  315. package/src/modules/shipment_tracking/api/cargo-events/route.ts +101 -0
  316. package/src/modules/shipment_tracking/api/carrier-configs/route.ts +142 -0
  317. package/src/modules/shipment_tracking/api/dashboard/ships-map/route.ts +246 -0
  318. package/src/modules/shipment_tracking/api/location-overrides/route.ts +185 -0
  319. package/src/modules/shipment_tracking/api/openapi.ts +28 -0
  320. package/src/modules/shipment_tracking/api/shipments/route.ts +197 -0
  321. package/src/modules/shipment_tracking/api/shipsgo-configs/route.ts +215 -0
  322. package/src/modules/shipment_tracking/api/tracking-jobs/route.ts +149 -0
  323. package/src/modules/shipment_tracking/api/tracking-jobs/sync/route.ts +116 -0
  324. package/src/modules/shipment_tracking/api/utils.ts +10 -0
  325. package/src/modules/shipment_tracking/api/webhooks/deliveries/route.ts +82 -0
  326. package/src/modules/shipment_tracking/api/webhooks/route.ts +138 -0
  327. package/src/modules/shipment_tracking/api/webhooks/test/route.ts +84 -0
  328. package/src/modules/shipment_tracking/assets/carriers/cma_cgm.png +0 -0
  329. package/src/modules/shipment_tracking/assets/carriers/cosco.png +0 -0
  330. package/src/modules/shipment_tracking/assets/carriers/evergreen.png +0 -0
  331. package/src/modules/shipment_tracking/assets/carriers/hapag_lloyd.png +0 -0
  332. package/src/modules/shipment_tracking/assets/carriers/maersk.png +0 -0
  333. package/src/modules/shipment_tracking/assets/carriers/msc.png +0 -0
  334. package/src/modules/shipment_tracking/assets/carriers/one.png +0 -0
  335. package/src/modules/shipment_tracking/assets/carriers/oocl.png +0 -0
  336. package/src/modules/shipment_tracking/assets/carriers/yang_ming.png +0 -0
  337. package/src/modules/shipment_tracking/assets/carriers/zim.png +0 -0
  338. package/src/modules/shipment_tracking/assets/index.ts +66 -0
  339. package/src/modules/shipment_tracking/backend/carrier-configs/page.meta.ts +16 -0
  340. package/src/modules/shipment_tracking/backend/carrier-configs/page.tsx +782 -0
  341. package/src/modules/shipment_tracking/backend/location-overrides/page.meta.ts +16 -0
  342. package/src/modules/shipment_tracking/backend/location-overrides/page.tsx +241 -0
  343. package/src/modules/shipment_tracking/backend/shipment-tracking/page.meta.ts +16 -0
  344. package/src/modules/shipment_tracking/backend/shipment-tracking/page.tsx +340 -0
  345. package/src/modules/shipment_tracking/backend/tracking-jobs/page.meta.ts +16 -0
  346. package/src/modules/shipment_tracking/backend/tracking-jobs/page.tsx +16 -0
  347. package/src/modules/shipment_tracking/backend/webhooks/page.meta.ts +16 -0
  348. package/src/modules/shipment_tracking/backend/webhooks/page.tsx +228 -0
  349. package/src/modules/shipment_tracking/ce.ts +48 -0
  350. package/src/modules/shipment_tracking/cli.ts +321 -0
  351. package/src/modules/shipment_tracking/commands/bic-configs.ts +94 -0
  352. package/src/modules/shipment_tracking/commands/carrier-configs.ts +89 -0
  353. package/src/modules/shipment_tracking/commands/index.ts +8 -0
  354. package/src/modules/shipment_tracking/commands/location-overrides.ts +119 -0
  355. package/src/modules/shipment_tracking/commands/shipments.ts +247 -0
  356. package/src/modules/shipment_tracking/commands/shipsgo-configs.ts +101 -0
  357. package/src/modules/shipment_tracking/commands/tracking-jobs.ts +158 -0
  358. package/src/modules/shipment_tracking/commands/tracking.ts +230 -0
  359. package/src/modules/shipment_tracking/commands/webhooks.ts +159 -0
  360. package/src/modules/shipment_tracking/components/CombinedTimestampCell.tsx +236 -0
  361. package/src/modules/shipment_tracking/components/FacilityLocationInput.tsx +235 -0
  362. package/src/modules/shipment_tracking/components/LocationOverrideDrawer.tsx +586 -0
  363. package/src/modules/shipment_tracking/components/ShipmentDetailsDrawer.tsx +1364 -0
  364. package/src/modules/shipment_tracking/components/ShipmentDrawer.tsx +498 -0
  365. package/src/modules/shipment_tracking/components/ShipsGoConfigSection.tsx +266 -0
  366. package/src/modules/shipment_tracking/components/TimestampCell.tsx +146 -0
  367. package/src/modules/shipment_tracking/components/TrackingJobDrawer.tsx +467 -0
  368. package/src/modules/shipment_tracking/components/VesselTrackingMap.tsx +761 -0
  369. package/src/modules/shipment_tracking/components/WebhookDrawer.tsx +434 -0
  370. package/src/modules/shipment_tracking/data/entities.ts +748 -0
  371. package/src/modules/shipment_tracking/data/validators.ts +523 -0
  372. package/src/modules/shipment_tracking/di.ts +73 -0
  373. package/src/modules/shipment_tracking/encryption.ts +17 -0
  374. package/src/modules/shipment_tracking/events.ts +122 -0
  375. package/src/modules/shipment_tracking/hooks/useVesselTracking.ts +297 -0
  376. package/src/modules/shipment_tracking/i18n/de.json +327 -0
  377. package/src/modules/shipment_tracking/i18n/en.json +327 -0
  378. package/src/modules/shipment_tracking/i18n/es.json +327 -0
  379. package/src/modules/shipment_tracking/i18n/pl.json +327 -0
  380. package/src/modules/shipment_tracking/index.ts +13 -0
  381. package/src/modules/shipment_tracking/lib/__tests__/dcsa-event-mapping.test.ts +385 -0
  382. package/src/modules/shipment_tracking/lib/__tests__/dcsa-event-parser.test.ts +398 -0
  383. package/src/modules/shipment_tracking/lib/__tests__/empty-return.test.ts +174 -0
  384. package/src/modules/shipment_tracking/lib/__tests__/poi-event-processor.test.ts +699 -0
  385. package/src/modules/shipment_tracking/lib/__tests__/route-inference.test.ts +402 -0
  386. package/src/modules/shipment_tracking/lib/__tests__/status-machine.test.ts +447 -0
  387. package/src/modules/shipment_tracking/lib/__tests__/time-extraction.test.ts +331 -0
  388. package/src/modules/shipment_tracking/lib/__tests__/timestamp-utils.test.ts +260 -0
  389. package/src/modules/shipment_tracking/lib/__tests__/vessel-api.test.ts +125 -0
  390. package/src/modules/shipment_tracking/lib/__tests__/vessel-extraction.test.ts +108 -0
  391. package/src/modules/shipment_tracking/lib/adapters/cma-cgm.ts +84 -0
  392. package/src/modules/shipment_tracking/lib/adapters/cosco-types.ts +145 -0
  393. package/src/modules/shipment_tracking/lib/adapters/cosco.ts +314 -0
  394. package/src/modules/shipment_tracking/lib/adapters/evergreen.ts +107 -0
  395. package/src/modules/shipment_tracking/lib/adapters/hapag-lloyd.ts +88 -0
  396. package/src/modules/shipment_tracking/lib/adapters/index.ts +18 -0
  397. package/src/modules/shipment_tracking/lib/adapters/maersk.ts +104 -0
  398. package/src/modules/shipment_tracking/lib/adapters/msc.ts +223 -0
  399. package/src/modules/shipment_tracking/lib/adapters/zim.ts +106 -0
  400. package/src/modules/shipment_tracking/lib/audit-helpers.ts +29 -0
  401. package/src/modules/shipment_tracking/lib/auth/base64url.ts +4 -0
  402. package/src/modules/shipment_tracking/lib/auth/oauth-client.ts +53 -0
  403. package/src/modules/shipment_tracking/lib/background.ts +24 -0
  404. package/src/modules/shipment_tracking/lib/bic-api-client.ts +199 -0
  405. package/src/modules/shipment_tracking/lib/carrier-adapter.ts +136 -0
  406. package/src/modules/shipment_tracking/lib/current-vessel.ts +274 -0
  407. package/src/modules/shipment_tracking/lib/dcsa-event-mapping.ts +202 -0
  408. package/src/modules/shipment_tracking/lib/dcsa-event-parser.ts +163 -0
  409. package/src/modules/shipment_tracking/lib/dcsa-params.ts +14 -0
  410. package/src/modules/shipment_tracking/lib/empty-return.ts +122 -0
  411. package/src/modules/shipment_tracking/lib/location-overrides.ts +150 -0
  412. package/src/modules/shipment_tracking/lib/location-types.ts +154 -0
  413. package/src/modules/shipment_tracking/lib/logger.ts +195 -0
  414. package/src/modules/shipment_tracking/lib/poi-event-processor.ts +302 -0
  415. package/src/modules/shipment_tracking/lib/poi-nats-config.ts +134 -0
  416. package/src/modules/shipment_tracking/lib/poi-types.ts +198 -0
  417. package/src/modules/shipment_tracking/lib/rate-limiter.ts +58 -0
  418. package/src/modules/shipment_tracking/lib/route-extraction.ts +439 -0
  419. package/src/modules/shipment_tracking/lib/route-inference.ts +238 -0
  420. package/src/modules/shipment_tracking/lib/schedule-generator.ts +92 -0
  421. package/src/modules/shipment_tracking/lib/shipsgo-client.ts +350 -0
  422. package/src/modules/shipment_tracking/lib/shipsgo-mapper.ts +296 -0
  423. package/src/modules/shipment_tracking/lib/status-machine.ts +230 -0
  424. package/src/modules/shipment_tracking/lib/time-extraction.ts +85 -0
  425. package/src/modules/shipment_tracking/lib/timestamp-utils.ts +244 -0
  426. package/src/modules/shipment_tracking/lib/vessel-api.ts +299 -0
  427. package/src/modules/shipment_tracking/lib/vessel-cache.ts +102 -0
  428. package/src/modules/shipment_tracking/lib/vessel-extraction.ts +39 -0
  429. package/src/modules/shipment_tracking/lib/webhook-dispatcher.ts +93 -0
  430. package/src/modules/shipment_tracking/migrations/.snapshot-open-mercato.json +2914 -0
  431. package/src/modules/shipment_tracking/migrations/Migration20260422161208_shipment_tracking.ts +60 -0
  432. package/src/modules/shipment_tracking/migrations/Migration20260529120000_shipment_tracking_poi_region_names.ts +22 -0
  433. package/src/modules/shipment_tracking/migrations/Migration20260821120000_shipment_tracking_shipsgo.ts +65 -0
  434. package/src/modules/shipment_tracking/notifications.ts +151 -0
  435. package/src/modules/shipment_tracking/services/carrierRegistry.ts +29 -0
  436. package/src/modules/shipment_tracking/services/poiNatsService.ts +526 -0
  437. package/src/modules/shipment_tracking/services/shipsGoProvider.ts +231 -0
  438. package/src/modules/shipment_tracking/services/trackingService.ts +1777 -0
  439. package/src/modules/shipment_tracking/services/webhookService.ts +347 -0
  440. package/src/modules/shipment_tracking/setup.ts +99 -0
  441. package/src/modules/shipment_tracking/subscribers/__tests__/terminal-event-ingest.test.ts +141 -0
  442. package/src/modules/shipment_tracking/subscribers/cargo-event-created.ts +115 -0
  443. package/src/modules/shipment_tracking/subscribers/dcsa-event-webhook-dispatch.ts +115 -0
  444. package/src/modules/shipment_tracking/subscribers/poi-event-notification.ts +144 -0
  445. package/src/modules/shipment_tracking/subscribers/poi-event-webhook-dispatch.ts +94 -0
  446. package/src/modules/shipment_tracking/subscribers/shipment-status-changed.ts +41 -0
  447. package/src/modules/shipment_tracking/subscribers/terminal-event-ingest.ts +109 -0
  448. package/src/modules/shipment_tracking/subscribers/tracking-job-initial-poll.ts +53 -0
  449. package/src/modules/shipment_tracking/subscribers/tracking-job-webhook-dispatch.ts +50 -0
  450. package/src/modules/shipment_tracking/tables/index.ts +4 -0
  451. package/src/modules/shipment_tracking/tables/tracking_job/table.client.tsx +337 -0
  452. package/src/modules/shipment_tracking/tables/tracking_job/table.ts +34 -0
  453. package/src/modules/shipment_tracking/widgets/dashboard/ships-map/config.ts +32 -0
  454. package/src/modules/shipment_tracking/widgets/dashboard/ships-map/widget.client.tsx +448 -0
  455. package/src/modules/shipment_tracking/widgets/dashboard/ships-map/widget.ts +25 -0
  456. package/src/types/assets.d.ts +5 -0
@@ -0,0 +1,434 @@
1
+ /**
2
+ * Test Fixtures for Shipment Tracking
3
+ *
4
+ * Contains anonymized DCSA carrier API responses (MSC, Maersk, Hapag-Lloyd)
5
+ * and AIS POI proximity events. All container/booking/BOL/vessel/IMO/MMSI
6
+ * identifiers have been replaced with format-preserving fake values; the
7
+ * payload shapes mirror the real carrier and AIS responses.
8
+ */
9
+
10
+ import mscDirectRaw from './msc-direct.json'
11
+ import mscTransshipRaw from './msc-transship.json'
12
+ import mscMultiRaw from './msc-multi.json'
13
+ import mscMultiTransshipCompletedRaw from './msc-multi-transship-completed.json'
14
+ import maerskMultiTransshipCompletedRaw from './maersk-multi-transship-completed.json'
15
+ import maerskTransshipInTransitRaw from './maersk-transship-intransit.json'
16
+ import hapagLloydTransshipContainerRaw from './hapag-lloyd-transship-container.json'
17
+ import poiEventsRaw from './poi-events.json'
18
+ import type { PoiProximityEvent } from '../../lib/poi-types'
19
+
20
+ // Type for raw DCSA event from carrier APIs (MSC, Maersk, etc.)
21
+ // Note: Field names may vary slightly between carriers (e.g., eventId vs eventID)
22
+ export type RawDcsaEvent = {
23
+ eventType: 'TRANSPORT' | 'EQUIPMENT' | 'SHIPMENT'
24
+ transportEventTypeCode?: string
25
+ equipmentEventTypeCode?: string
26
+ shipmentEventTypeCode?: string
27
+ eventId?: string // MSC uses eventId
28
+ eventID?: string // Maersk uses eventID
29
+ eventDateTime: string
30
+ eventClassifierCode: 'ACT' | 'PLN' | 'EST'
31
+ eventCreatedDateTime?: string
32
+ description?: string
33
+ equipmentReference?: string
34
+ ISOEquipmentCode?: string
35
+ emptyIndicatorCode?: 'EMPTY' | 'LADEN'
36
+ transportCall?: {
37
+ transportCallID?: string
38
+ unLocationCode?: string // MSC format
39
+ UNLocationCode?: string // Maersk format
40
+ facilityCode?: string
41
+ facilityCodeListProvider?: 'SMDG' | 'BIC'
42
+ facilityTypeCode?: string
43
+ modeOfTransport?: 'VESSEL' | 'RAIL' | 'TRUCK' | 'BARGE'
44
+ vessel?: {
45
+ vesselIMONumber?: string
46
+ vesselName?: string
47
+ vesselFlag?: string
48
+ vesselCallSignNumber?: string
49
+ } | null
50
+ exportVoyageNumber?: string | null
51
+ importVoyageNumber?: string | null
52
+ location?: {
53
+ locationName?: string
54
+ latitude?: string
55
+ longitude?: string
56
+ }
57
+ }
58
+ eventLocation?: {
59
+ locationName?: string
60
+ unLocationCode?: string
61
+ facilityCode?: string
62
+ facilityCodeListProvider?: 'SMDG' | 'BIC'
63
+ }
64
+ documentReferences?: Array<{
65
+ documentReferenceType: string
66
+ documentReferenceValue: string
67
+ }>
68
+ seals?: Array<{
69
+ sealNumber: string
70
+ sealSource?: string
71
+ }>
72
+ references?: unknown[]
73
+ }
74
+
75
+ // Fixture metadata
76
+ export const fixtures = {
77
+ /**
78
+ * Single container, direct connection (no transshipment)
79
+ * Booking: 100AA00A0000001S1
80
+ * Container: MSCU1000001
81
+ * Route: CNYTN (Yantian) -> PLGDN (Gdansk)
82
+ * Vessel: EXAMPLE VESSEL 01
83
+ */
84
+ direct: {
85
+ name: 'msc-direct',
86
+ carrier: 'msc',
87
+ booking: '100AA00A0000001S1',
88
+ container: 'MSCU1000001',
89
+ origin: 'CNYTN',
90
+ destination: 'PLGDN',
91
+ vessel: 'EXAMPLE VESSEL 01',
92
+ events: mscDirectRaw as RawDcsaEvent[],
93
+ },
94
+
95
+ /**
96
+ * Single container, transshipment scenario
97
+ * Booking: 100AAAAAA0002V
98
+ * Container: MSCU1000036
99
+ * Route: CNTAO (Qingdao) -> CNNGB (Ningbo) -> PLGDN (Gdansk)
100
+ * Vessels: EXAMPLE VESSEL 03 (1st leg), EXAMPLE VESSEL 04 (2nd leg)
101
+ */
102
+ transshipment: {
103
+ name: 'msc-transship',
104
+ carrier: 'msc',
105
+ booking: '100AAAAAA0002V',
106
+ container: 'MSCU1000036', // Note: MEDUAA000001 is the document reference, not container
107
+ origin: 'CNTAO',
108
+ transshipPort: 'CNNGB',
109
+ destination: 'PLGDN',
110
+ vessels: ['EXAMPLE VESSEL 03', 'EXAMPLE VESSEL 04'],
111
+ events: mscTransshipRaw as RawDcsaEvent[],
112
+ },
113
+
114
+ /**
115
+ * Multiple containers (32)
116
+ * Booking: 100AAAAAA00003
117
+ * Route: CNYTN (Yantian) -> PLGDN (Gdansk)
118
+ */
119
+ multiContainer: {
120
+ name: 'msc-multi',
121
+ carrier: 'msc',
122
+ booking: '100AAAAAA00003',
123
+ origin: 'CNYTN',
124
+ destination: 'PLGDN',
125
+ containerCount: 32,
126
+ events: mscMultiRaw as RawDcsaEvent[],
127
+ get containers(): string[] {
128
+ const set = new Set<string>()
129
+ for (const event of this.events) {
130
+ if (event.equipmentReference) {
131
+ set.add(event.equipmentReference)
132
+ }
133
+ }
134
+ return [...set].sort()
135
+ },
136
+ },
137
+
138
+ /**
139
+ * Multiple containers with transshipment, completed voyage
140
+ * Booking: ABCD00000001
141
+ * Containers: MSCU1000034, MSCU1000035
142
+ * Route: CRCAR (Costa Rica) -> CRMOB (Moín) -> BEANR (Antwerp, transship) -> PLGDY (Gdynia)
143
+ * Status: DELIVERED (all containers have final GTIN at destination)
144
+ */
145
+ multiTransshipCompleted: {
146
+ name: 'msc-multi-transship-completed',
147
+ carrier: 'msc',
148
+ booking: 'ABCD00000001',
149
+ containers: ['MSCU1000034', 'MSCU1000035'],
150
+ containerCount: 2,
151
+ origin: 'CRMOB', // Moín, Costa Rica (port of loading)
152
+ transshipPort: 'BEANR', // Antwerp, Belgium
153
+ destination: 'PLGDY', // Gdynia, Poland
154
+ events: mscMultiTransshipCompletedRaw as RawDcsaEvent[],
155
+ eventCount: 20,
156
+ // Journey stages:
157
+ // 1. CRCAR: GTOT (gate out from inland depot)
158
+ // 2. CRMOB: GTIN, LOAD (port of origin)
159
+ // 3. Leg 1: DEPA -> ARRI (to Antwerp)
160
+ // 4. BEANR: DISC, LOAD (transshipment)
161
+ // 5. Leg 2: DEPA -> ARRI (to Gdynia)
162
+ // 6. PLGDY: DISC, GTOT, GTIN (delivery complete)
163
+ },
164
+
165
+ // ─────────────────────────────────────────────────────────────────────────────
166
+ // Maersk Fixtures (real DCSA API responses)
167
+ // ─────────────────────────────────────────────────────────────────────────────
168
+
169
+ /**
170
+ * Maersk: Multiple containers with multi-transshipment, completed voyage
171
+ * BOL: 900000002
172
+ * Containers: MAEU1000002, MAEU1000001
173
+ * Route: TRKMX (Ambarli, Istanbul area) -> TRYAR (Yarimca, port of loading) -> GBFXT (Felixstowe, transship 1)
174
+ * -> DEBRV (Bremerhaven, transship 2) -> PLGDN (Gdansk, destination)
175
+ * Status: DELIVERED (completed voyage with all equipment events)
176
+ * Vessels: EXAMPLE VESSEL 07 (leg 1), EXAMPLE VESSEL 08 (leg 2), EXAMPLE VESSEL 06 (leg 3)
177
+ */
178
+ maerskMultiTransshipCompleted: {
179
+ name: 'maersk-multi-transship-completed',
180
+ carrier: 'maersk',
181
+ bol: '900000002',
182
+ containers: ['MAEU1000002', 'MAEU1000001'],
183
+ containerCount: 2,
184
+ inlandDepot: 'TRKMX', // Ambarli (Kumport Terminal), Istanbul area
185
+ origin: 'TRYAR', // Yarimca, Turkey (DP World Terminal - port of loading)
186
+ transshipPorts: ['GBFXT', 'DEBRV'], // Felixstowe + Bremerhaven
187
+ destination: 'PLGDN', // Gdansk, Poland
188
+ vessels: ['EXAMPLE VESSEL 07', 'EXAMPLE VESSEL 08', 'EXAMPLE VESSEL 06'],
189
+ events: maerskMultiTransshipCompletedRaw as RawDcsaEvent[],
190
+ eventCount: 37,
191
+ // Journey stages:
192
+ // 1. TRKMX: GTOT (gate out from inland depot - Kumport Terminal Ambarli)
193
+ // 2. TRYAR: GTIN, LOAD (port of loading - DP World Yarimca)
194
+ // 3. Leg 1: DEPA TRYAR -> ARRI GBFXT (EXAMPLE VESSEL 07)
195
+ // 4. GBFXT: DISC, LOAD (transshipment 1 - Felixstowe Trinity Terminal)
196
+ // 5. Leg 2: DEPA GBFXT -> ARRI DEBRV (EXAMPLE VESSEL 08)
197
+ // 6. DEBRV: DISC, LOAD (transshipment 2 - Bremerhaven)
198
+ // 7. Leg 3: DEPA DEBRV -> ARRI PLGDN (EXAMPLE VESSEL 06)
199
+ // 8. PLGDN: DISC, GTOT (delivery - DCT Gdansk)
200
+ },
201
+
202
+ /**
203
+ * Maersk: Single container with multi-transshipment, in-transit
204
+ * Container: MAEU1000003
205
+ * Route: CNTXG (Tianjin/Xingang) -> MYTPP (Tanjung Pelepas, transship 1)
206
+ * -> DEWVN (Wilhelmshaven, EST) -> PLGDN (Gdansk, EST destination)
207
+ * Status: IN_TRANSIT (last 3 events are EST - not yet arrived at Wilhelmshaven)
208
+ * Vessels: EXAMPLE VESSEL 10 (leg 1), EXAMPLE VESSEL 09 (leg 2), EXAMPLE VESSEL 11 (leg 3)
209
+ */
210
+ maerskTransshipInTransit: {
211
+ name: 'maersk-transship-intransit',
212
+ carrier: 'maersk',
213
+ container: 'MAEU1000003',
214
+ origin: 'CNTXG', // Tianjin/Xingang, China (Tianjin PAC Intl Container Terminal)
215
+ transshipPorts: ['MYTPP', 'DEWVN'], // Tanjung Pelepas + Wilhelmshaven
216
+ destination: 'PLGDN', // Gdansk, Poland
217
+ vessels: ['EXAMPLE VESSEL 10', 'EXAMPLE VESSEL 09', 'EXAMPLE VESSEL 11'],
218
+ events: maerskTransshipInTransitRaw as RawDcsaEvent[],
219
+ eventCount: 14,
220
+ // Journey stages:
221
+ // 1. CNTXG: Equipment events at origin (Tianjin PAC Terminal)
222
+ // 2. Leg 1: ACT DEPA CNTXG -> ACT ARRI MYTPP (EXAMPLE VESSEL 10)
223
+ // 3. MYTPP: Equipment events at transshipment 1 (Pelabuhan Tanjung Pelepas)
224
+ // 4. Leg 2: ACT DEPA MYTPP -> EST ARRI DEWVN (EXAMPLE VESSEL 09) - currently in transit
225
+ // 5. DEWVN: (future) transshipment 2 - Wilhelmshaven
226
+ // 6. Leg 3: EST DEPA DEWVN -> EST ARRI PLGDN (EXAMPLE VESSEL 11) - planned
227
+ },
228
+
229
+ // ─────────────────────────────────────────────────────────────────────────────
230
+ // Hapag-Lloyd Fixtures (real DCSA API responses)
231
+ // ─────────────────────────────────────────────────────────────────────────────
232
+
233
+ /**
234
+ * Hapag-Lloyd: Single container with transshipment
235
+ * BOL: 90000001
236
+ * Container: HLCU1000001
237
+ * Route: PLGDY (Gdynia, Poland) -> DEWVN (Wilhelmshaven, transship) -> USORF (Norfolk, VA) -> USCHI (Chicago, destination)
238
+ * Status: IN_TRANSIT (rail leg to Chicago - last events show LOAD at Chicago rail terminal)
239
+ * Vessels: EXAMPLE VESSEL 12 (leg 1: Gdynia -> Wilhelmshaven), EXAMPLE VESSEL 13 (leg 2: Wilhelmshaven -> Norfolk)
240
+ * Note: This is an export shipment from Poland to USA with inland rail delivery to Chicago
241
+ */
242
+ hapagLloydTransshipContainer: {
243
+ name: 'hapag-lloyd-transship-container',
244
+ carrier: 'hapag-lloyd',
245
+ bol: '90000001',
246
+ container: 'HLCU1000001',
247
+ origin: 'PLGDY', // Gdynia, Poland (Gdynia Container Terminal)
248
+ transshipPorts: ['DEWVN'], // Wilhelmshaven, Germany (Eurogate Container Terminal)
249
+ portOfDischarge: 'USORF', // Norfolk, VA (Norfolk Intl Terminal)
250
+ destination: 'USCHI', // Chicago, IL (final inland destination via rail)
251
+ vessels: ['EXAMPLE VESSEL 12', 'EXAMPLE VESSEL 13'],
252
+ events: hapagLloydTransshipContainerRaw as RawDcsaEvent[],
253
+ eventCount: 20,
254
+ // Journey stages (chronological):
255
+ // 1. PLGDY: GTIN (truck), LOAD (vessel) - origin gate-in and loading
256
+ // 2. Leg 1: DEPA PLGDY -> ARRI DEWVN (EXAMPLE VESSEL 12, voyage 2601W)
257
+ // 3. DEWVN: DISC, LOAD - transshipment at Wilhelmshaven
258
+ // 4. Leg 2: DEPA DEWVN -> ARRI USORF (EXAMPLE VESSEL 13, voyage 601W)
259
+ // 5. USORF: DISC (vessel), LOAD (rail), GTOT (rail) - port discharge and rail handoff
260
+ // 6. USCHI: GTIN (rail), GTOT (truck), GTIN (truck), LOAD (rail) - inland delivery via Norfolk Southern
261
+ // Note: Events include both ACT (actual) and PLN (planned) events
262
+ },
263
+ } as const
264
+
265
+ /**
266
+ * Helper to extract unique containers from events
267
+ */
268
+ export function extractContainers(events: RawDcsaEvent[]): string[] {
269
+ const set = new Set<string>()
270
+ for (const event of events) {
271
+ if (event.equipmentReference) {
272
+ set.add(event.equipmentReference)
273
+ }
274
+ }
275
+ return [...set].sort()
276
+ }
277
+
278
+ /**
279
+ * Helper to filter events by container
280
+ */
281
+ export function filterEventsByContainer(events: RawDcsaEvent[], container: string): RawDcsaEvent[] {
282
+ return events.filter((event) => {
283
+ // TRANSPORT events apply to all containers
284
+ if (event.eventType === 'TRANSPORT') return true
285
+ // EQUIPMENT events are container-specific
286
+ return event.equipmentReference === container
287
+ })
288
+ }
289
+
290
+ /**
291
+ * Helper to get events in chronological order
292
+ */
293
+ export function sortEventsByTime(events: RawDcsaEvent[]): RawDcsaEvent[] {
294
+ return [...events].sort((a, b) => {
295
+ return new Date(a.eventDateTime).getTime() - new Date(b.eventDateTime).getTime()
296
+ })
297
+ }
298
+
299
+ /**
300
+ * Helper to create a subset of events for incremental testing
301
+ * Useful for simulating multiple poll cycles
302
+ */
303
+ export function sliceEvents(events: RawDcsaEvent[], count: number): RawDcsaEvent[] {
304
+ const sorted = sortEventsByTime(events)
305
+ return sorted.slice(0, count)
306
+ }
307
+
308
+ /**
309
+ * Helper to create test scope
310
+ */
311
+ export function createTestScope() {
312
+ return {
313
+ tenantId: '00000000-0000-0000-0000-000000000001',
314
+ organizationId: '00000000-0000-0000-0000-000000000002',
315
+ }
316
+ }
317
+
318
+ /**
319
+ * Helper to create mock carrier fetch result from fixture events
320
+ */
321
+ export function createMockFetchResult(events: RawDcsaEvent[]) {
322
+ // Extract booking number from first event with document references
323
+ let bookingNumber: string | null = null
324
+ let vesselName: string | null = null
325
+ let vesselImo: string | null = null
326
+
327
+ for (const event of events) {
328
+ if (!bookingNumber && event.documentReferences) {
329
+ const bkg = event.documentReferences.find((ref) => ref.documentReferenceType === 'BKG')
330
+ if (bkg) bookingNumber = bkg.documentReferenceValue
331
+ }
332
+ if (!vesselName && event.transportCall?.vessel) {
333
+ vesselName = event.transportCall.vessel.vesselName ?? null
334
+ vesselImo = event.transportCall.vessel.vesselIMONumber ?? null
335
+ }
336
+ if (bookingNumber && vesselName) break
337
+ }
338
+
339
+ return {
340
+ events,
341
+ bookingNumber,
342
+ vesselName,
343
+ vesselImo,
344
+ }
345
+ }
346
+
347
+ // ─────────────────────────────────────────────────────────────────────────────
348
+ // POI Proximity Event Fixtures (real NATS messages from AIS system)
349
+ // ─────────────────────────────────────────────────────────────────────────────
350
+
351
+ /**
352
+ * POI proximity events representative of the AIS NATS stream.
353
+ * These mirror the shape of messages emitted by the poi-proximity-detector
354
+ * service (JetStream stream `AIS_STREAM`, subject `ais.ship.proximity.events`).
355
+ * The connection URL is deployment-specific (configure via `NATS_URL`).
356
+ */
357
+ export const poiFixtures = {
358
+ /**
359
+ * WAYPOINT_REACHED events - vessel passed through a navigation waypoint
360
+ */
361
+ waypointReached: poiEventsRaw.waypointReached as PoiProximityEvent[],
362
+
363
+ /**
364
+ * PORT_ARRIVAL events - vessel arrived at a port (actual arrival)
365
+ */
366
+ portArrival: poiEventsRaw.portArrival as PoiProximityEvent[],
367
+
368
+ /**
369
+ * TERMINAL_ARRIVAL events - vessel arrived at a terminal within a port
370
+ */
371
+ terminalArrival: poiEventsRaw.terminalArrival as PoiProximityEvent[],
372
+
373
+ /**
374
+ * PORT_PROXIMITY_ARRIVAL events - vessel approaching a port
375
+ */
376
+ portProximityArrival: poiEventsRaw.portProximityArrival as PoiProximityEvent[],
377
+
378
+ /**
379
+ * TERMINAL_PROXIMITY_ARRIVAL events - vessel approaching a terminal
380
+ */
381
+ terminalProximityArrival: poiEventsRaw.terminalProximityArrival as PoiProximityEvent[],
382
+
383
+ /**
384
+ * PORT_PROXIMITY_DEPARTURE events - vessel departing from a port area
385
+ */
386
+ portProximityDeparture: poiEventsRaw.portProximityDeparture as PoiProximityEvent[],
387
+
388
+ /**
389
+ * TERMINAL_PROXIMITY_DEPARTURE events - vessel departing from a terminal area
390
+ */
391
+ terminalProximityDeparture: poiEventsRaw.terminalProximityDeparture as PoiProximityEvent[],
392
+
393
+ /**
394
+ * Invalid/malformed messages for testing validation
395
+ */
396
+ invalidMessages: poiEventsRaw.invalidMessages as unknown[],
397
+
398
+ /**
399
+ * Get all valid POI events (all types combined)
400
+ */
401
+ get allValidEvents(): PoiProximityEvent[] {
402
+ return [
403
+ ...this.waypointReached,
404
+ ...this.portArrival,
405
+ ...this.terminalArrival,
406
+ ...this.portProximityArrival,
407
+ ...this.terminalProximityArrival,
408
+ ...this.portProximityDeparture,
409
+ ...this.terminalProximityDeparture,
410
+ ]
411
+ },
412
+
413
+ /**
414
+ * Get all arrival events (PORT_ARRIVAL, TERMINAL_ARRIVAL, proximity arrivals)
415
+ */
416
+ get allArrivalEvents(): PoiProximityEvent[] {
417
+ return [
418
+ ...this.portArrival,
419
+ ...this.terminalArrival,
420
+ ...this.portProximityArrival,
421
+ ...this.terminalProximityArrival,
422
+ ]
423
+ },
424
+
425
+ /**
426
+ * Get all departure events (proximity departures)
427
+ */
428
+ get allDepartureEvents(): PoiProximityEvent[] {
429
+ return [
430
+ ...this.portProximityDeparture,
431
+ ...this.terminalProximityDeparture,
432
+ ]
433
+ },
434
+ }