@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.
- package/LICENSE +21 -0
- package/NOTICE +25 -0
- package/dist/generated/entities/bic_config/index.js +21 -0
- package/dist/generated/entities/bic_config/index.js.map +7 -0
- package/dist/generated/entities/carrier_config/index.js +27 -0
- package/dist/generated/entities/carrier_config/index.js.map +7 -0
- package/dist/generated/entities/location_override/index.js +33 -0
- package/dist/generated/entities/location_override/index.js.map +7 -0
- package/dist/generated/entities/shipment/index.js +73 -0
- package/dist/generated/entities/shipment/index.js.map +7 -0
- package/dist/generated/entities/ships_go_config/index.js +31 -0
- package/dist/generated/entities/ships_go_config/index.js.map +7 -0
- package/dist/generated/entities/tracking_event/index.js +101 -0
- package/dist/generated/entities/tracking_event/index.js.map +7 -0
- package/dist/generated/entities/tracking_job/index.js +47 -0
- package/dist/generated/entities/tracking_job/index.js.map +7 -0
- package/dist/generated/entities/webhook/index.js +25 -0
- package/dist/generated/entities/webhook/index.js.map +7 -0
- package/dist/generated/entities/webhook_delivery/index.js +25 -0
- package/dist/generated/entities/webhook_delivery/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +21 -0
- package/dist/generated/entities.ids.generated.js.map +7 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +7 -0
- package/dist/modules/shipment_tracking/acl.js +22 -0
- package/dist/modules/shipment_tracking/acl.js.map +7 -0
- package/dist/modules/shipment_tracking/api/bic-configs/route.js +176 -0
- package/dist/modules/shipment_tracking/api/bic-configs/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/bic-configs/test/route.js +95 -0
- package/dist/modules/shipment_tracking/api/bic-configs/test/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/cargo-events/route.js +93 -0
- package/dist/modules/shipment_tracking/api/cargo-events/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/carrier-configs/route.js +139 -0
- package/dist/modules/shipment_tracking/api/carrier-configs/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/dashboard/ships-map/route.js +177 -0
- package/dist/modules/shipment_tracking/api/dashboard/ships-map/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/location-overrides/route.js +179 -0
- package/dist/modules/shipment_tracking/api/location-overrides/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/openapi.js +27 -0
- package/dist/modules/shipment_tracking/api/openapi.js.map +7 -0
- package/dist/modules/shipment_tracking/api/shipments/route.js +192 -0
- package/dist/modules/shipment_tracking/api/shipments/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/shipsgo-configs/route.js +185 -0
- package/dist/modules/shipment_tracking/api/shipsgo-configs/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/tracking-jobs/route.js +144 -0
- package/dist/modules/shipment_tracking/api/tracking-jobs/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/tracking-jobs/sync/route.js +107 -0
- package/dist/modules/shipment_tracking/api/tracking-jobs/sync/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/utils.js +12 -0
- package/dist/modules/shipment_tracking/api/utils.js.map +7 -0
- package/dist/modules/shipment_tracking/api/webhooks/deliveries/route.js +76 -0
- package/dist/modules/shipment_tracking/api/webhooks/deliveries/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/webhooks/route.js +135 -0
- package/dist/modules/shipment_tracking/api/webhooks/route.js.map +7 -0
- package/dist/modules/shipment_tracking/api/webhooks/test/route.js +71 -0
- package/dist/modules/shipment_tracking/api/webhooks/test/route.js.map +7 -0
- package/dist/modules/shipment_tracking/assets/carriers/cma_cgm.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/cosco.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/evergreen.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/hapag_lloyd.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/maersk.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/msc.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/one.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/oocl.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/yang_ming.png +0 -0
- package/dist/modules/shipment_tracking/assets/carriers/zim.png +0 -0
- package/dist/modules/shipment_tracking/assets/index.js +52 -0
- package/dist/modules/shipment_tracking/assets/index.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/carrier-configs/page.js +621 -0
- package/dist/modules/shipment_tracking/backend/carrier-configs/page.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/carrier-configs/page.meta.js +19 -0
- package/dist/modules/shipment_tracking/backend/carrier-configs/page.meta.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/location-overrides/page.js +198 -0
- package/dist/modules/shipment_tracking/backend/location-overrides/page.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/location-overrides/page.meta.js +19 -0
- package/dist/modules/shipment_tracking/backend/location-overrides/page.meta.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/shipment-tracking/page.js +279 -0
- package/dist/modules/shipment_tracking/backend/shipment-tracking/page.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/shipment-tracking/page.meta.js +19 -0
- package/dist/modules/shipment_tracking/backend/shipment-tracking/page.meta.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/tracking-jobs/page.js +10 -0
- package/dist/modules/shipment_tracking/backend/tracking-jobs/page.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/tracking-jobs/page.meta.js +19 -0
- package/dist/modules/shipment_tracking/backend/tracking-jobs/page.meta.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/webhooks/page.js +198 -0
- package/dist/modules/shipment_tracking/backend/webhooks/page.js.map +7 -0
- package/dist/modules/shipment_tracking/backend/webhooks/page.meta.js +19 -0
- package/dist/modules/shipment_tracking/backend/webhooks/page.meta.js.map +7 -0
- package/dist/modules/shipment_tracking/ce.js +52 -0
- package/dist/modules/shipment_tracking/ce.js.map +7 -0
- package/dist/modules/shipment_tracking/cli.js +229 -0
- package/dist/modules/shipment_tracking/cli.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/bic-configs.js +66 -0
- package/dist/modules/shipment_tracking/commands/bic-configs.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/carrier-configs.js +65 -0
- package/dist/modules/shipment_tracking/commands/carrier-configs.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/index.js +9 -0
- package/dist/modules/shipment_tracking/commands/index.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/location-overrides.js +93 -0
- package/dist/modules/shipment_tracking/commands/location-overrides.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/shipments.js +200 -0
- package/dist/modules/shipment_tracking/commands/shipments.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/shipsgo-configs.js +75 -0
- package/dist/modules/shipment_tracking/commands/shipsgo-configs.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/tracking-jobs.js +120 -0
- package/dist/modules/shipment_tracking/commands/tracking-jobs.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/tracking.js +140 -0
- package/dist/modules/shipment_tracking/commands/tracking.js.map +7 -0
- package/dist/modules/shipment_tracking/commands/webhooks.js +115 -0
- package/dist/modules/shipment_tracking/commands/webhooks.js.map +7 -0
- package/dist/modules/shipment_tracking/components/CombinedTimestampCell.js +168 -0
- package/dist/modules/shipment_tracking/components/CombinedTimestampCell.js.map +7 -0
- package/dist/modules/shipment_tracking/components/FacilityLocationInput.js +202 -0
- package/dist/modules/shipment_tracking/components/FacilityLocationInput.js.map +7 -0
- package/dist/modules/shipment_tracking/components/LocationOverrideDrawer.js +501 -0
- package/dist/modules/shipment_tracking/components/LocationOverrideDrawer.js.map +7 -0
- package/dist/modules/shipment_tracking/components/ShipmentDetailsDrawer.js +818 -0
- package/dist/modules/shipment_tracking/components/ShipmentDetailsDrawer.js.map +7 -0
- package/dist/modules/shipment_tracking/components/ShipmentDrawer.js +404 -0
- package/dist/modules/shipment_tracking/components/ShipmentDrawer.js.map +7 -0
- package/dist/modules/shipment_tracking/components/ShipsGoConfigSection.js +200 -0
- package/dist/modules/shipment_tracking/components/ShipsGoConfigSection.js.map +7 -0
- package/dist/modules/shipment_tracking/components/TimestampCell.js +108 -0
- package/dist/modules/shipment_tracking/components/TimestampCell.js.map +7 -0
- package/dist/modules/shipment_tracking/components/TrackingJobDrawer.js +343 -0
- package/dist/modules/shipment_tracking/components/TrackingJobDrawer.js.map +7 -0
- package/dist/modules/shipment_tracking/components/VesselTrackingMap.js +496 -0
- package/dist/modules/shipment_tracking/components/VesselTrackingMap.js.map +7 -0
- package/dist/modules/shipment_tracking/components/WebhookDrawer.js +332 -0
- package/dist/modules/shipment_tracking/components/WebhookDrawer.js.map +7 -0
- package/dist/modules/shipment_tracking/data/entities.js +686 -0
- package/dist/modules/shipment_tracking/data/entities.js.map +7 -0
- package/dist/modules/shipment_tracking/data/validators.js +434 -0
- package/dist/modules/shipment_tracking/data/validators.js.map +7 -0
- package/dist/modules/shipment_tracking/di.js +60 -0
- package/dist/modules/shipment_tracking/di.js.map +7 -0
- package/dist/modules/shipment_tracking/encryption.js +12 -0
- package/dist/modules/shipment_tracking/encryption.js.map +7 -0
- package/dist/modules/shipment_tracking/events.js +87 -0
- package/dist/modules/shipment_tracking/events.js.map +7 -0
- package/dist/modules/shipment_tracking/hooks/useVesselTracking.js +137 -0
- package/dist/modules/shipment_tracking/hooks/useVesselTracking.js.map +7 -0
- package/dist/modules/shipment_tracking/i18n/de.json +327 -0
- package/dist/modules/shipment_tracking/i18n/en.json +327 -0
- package/dist/modules/shipment_tracking/i18n/es.json +327 -0
- package/dist/modules/shipment_tracking/i18n/pl.json +327 -0
- package/dist/modules/shipment_tracking/index.js +15 -0
- package/dist/modules/shipment_tracking/index.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/cma-cgm.js +66 -0
- package/dist/modules/shipment_tracking/lib/adapters/cma-cgm.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/cosco-types.js +1 -0
- package/dist/modules/shipment_tracking/lib/adapters/cosco-types.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/cosco.js +236 -0
- package/dist/modules/shipment_tracking/lib/adapters/cosco.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/evergreen.js +87 -0
- package/dist/modules/shipment_tracking/lib/adapters/evergreen.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/hapag-lloyd.js +68 -0
- package/dist/modules/shipment_tracking/lib/adapters/hapag-lloyd.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/index.js +20 -0
- package/dist/modules/shipment_tracking/lib/adapters/index.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/maersk.js +84 -0
- package/dist/modules/shipment_tracking/lib/adapters/maersk.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/msc.js +170 -0
- package/dist/modules/shipment_tracking/lib/adapters/msc.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/adapters/zim.js +85 -0
- package/dist/modules/shipment_tracking/lib/adapters/zim.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/audit-helpers.js +20 -0
- package/dist/modules/shipment_tracking/lib/audit-helpers.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/auth/base64url.js +8 -0
- package/dist/modules/shipment_tracking/lib/auth/base64url.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/auth/oauth-client.js +38 -0
- package/dist/modules/shipment_tracking/lib/auth/oauth-client.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/background.js +15 -0
- package/dist/modules/shipment_tracking/lib/background.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/bic-api-client.js +106 -0
- package/dist/modules/shipment_tracking/lib/bic-api-client.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/carrier-adapter.js +17 -0
- package/dist/modules/shipment_tracking/lib/carrier-adapter.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/current-vessel.js +149 -0
- package/dist/modules/shipment_tracking/lib/current-vessel.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/dcsa-event-mapping.js +124 -0
- package/dist/modules/shipment_tracking/lib/dcsa-event-mapping.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/dcsa-event-parser.js +112 -0
- package/dist/modules/shipment_tracking/lib/dcsa-event-parser.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/dcsa-params.js +16 -0
- package/dist/modules/shipment_tracking/lib/dcsa-params.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/empty-return.js +48 -0
- package/dist/modules/shipment_tracking/lib/empty-return.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/location-overrides.js +85 -0
- package/dist/modules/shipment_tracking/lib/location-overrides.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/location-types.js +59 -0
- package/dist/modules/shipment_tracking/lib/location-types.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/logger.js +113 -0
- package/dist/modules/shipment_tracking/lib/logger.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/poi-event-processor.js +183 -0
- package/dist/modules/shipment_tracking/lib/poi-event-processor.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/poi-nats-config.js +52 -0
- package/dist/modules/shipment_tracking/lib/poi-nats-config.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/poi-types.js +43 -0
- package/dist/modules/shipment_tracking/lib/poi-types.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/rate-limiter.js +31 -0
- package/dist/modules/shipment_tracking/lib/rate-limiter.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/route-extraction.js +187 -0
- package/dist/modules/shipment_tracking/lib/route-extraction.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/route-inference.js +106 -0
- package/dist/modules/shipment_tracking/lib/route-inference.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/schedule-generator.js +63 -0
- package/dist/modules/shipment_tracking/lib/schedule-generator.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/shipsgo-client.js +143 -0
- package/dist/modules/shipment_tracking/lib/shipsgo-client.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/shipsgo-mapper.js +204 -0
- package/dist/modules/shipment_tracking/lib/shipsgo-mapper.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/status-machine.js +131 -0
- package/dist/modules/shipment_tracking/lib/status-machine.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/time-extraction.js +41 -0
- package/dist/modules/shipment_tracking/lib/time-extraction.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/timestamp-utils.js +100 -0
- package/dist/modules/shipment_tracking/lib/timestamp-utils.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/vessel-api.js +111 -0
- package/dist/modules/shipment_tracking/lib/vessel-api.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/vessel-cache.js +50 -0
- package/dist/modules/shipment_tracking/lib/vessel-cache.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/vessel-extraction.js +13 -0
- package/dist/modules/shipment_tracking/lib/vessel-extraction.js.map +7 -0
- package/dist/modules/shipment_tracking/lib/webhook-dispatcher.js +62 -0
- package/dist/modules/shipment_tracking/lib/webhook-dispatcher.js.map +7 -0
- package/dist/modules/shipment_tracking/migrations/Migration20260422161208_shipment_tracking.js +48 -0
- package/dist/modules/shipment_tracking/migrations/Migration20260422161208_shipment_tracking.js.map +7 -0
- package/dist/modules/shipment_tracking/migrations/Migration20260529120000_shipment_tracking_poi_region_names.js +15 -0
- package/dist/modules/shipment_tracking/migrations/Migration20260529120000_shipment_tracking_poi_region_names.js.map +7 -0
- package/dist/modules/shipment_tracking/migrations/Migration20260821120000_shipment_tracking_shipsgo.js +47 -0
- package/dist/modules/shipment_tracking/migrations/Migration20260821120000_shipment_tracking_shipsgo.js.map +7 -0
- package/dist/modules/shipment_tracking/notifications.js +145 -0
- package/dist/modules/shipment_tracking/notifications.js.map +7 -0
- package/dist/modules/shipment_tracking/services/carrierRegistry.js +24 -0
- package/dist/modules/shipment_tracking/services/carrierRegistry.js.map +7 -0
- package/dist/modules/shipment_tracking/services/poiNatsService.js +397 -0
- package/dist/modules/shipment_tracking/services/poiNatsService.js.map +7 -0
- package/dist/modules/shipment_tracking/services/shipsGoProvider.js +163 -0
- package/dist/modules/shipment_tracking/services/shipsGoProvider.js.map +7 -0
- package/dist/modules/shipment_tracking/services/trackingService.js +1283 -0
- package/dist/modules/shipment_tracking/services/trackingService.js.map +7 -0
- package/dist/modules/shipment_tracking/services/webhookService.js +263 -0
- package/dist/modules/shipment_tracking/services/webhookService.js.map +7 -0
- package/dist/modules/shipment_tracking/setup.js +72 -0
- package/dist/modules/shipment_tracking/setup.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/cargo-event-created.js +60 -0
- package/dist/modules/shipment_tracking/subscribers/cargo-event-created.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/dcsa-event-webhook-dispatch.js +58 -0
- package/dist/modules/shipment_tracking/subscribers/dcsa-event-webhook-dispatch.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/poi-event-notification.js +82 -0
- package/dist/modules/shipment_tracking/subscribers/poi-event-notification.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/poi-event-webhook-dispatch.js +53 -0
- package/dist/modules/shipment_tracking/subscribers/poi-event-webhook-dispatch.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/shipment-status-changed.js +28 -0
- package/dist/modules/shipment_tracking/subscribers/shipment-status-changed.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/terminal-event-ingest.js +67 -0
- package/dist/modules/shipment_tracking/subscribers/terminal-event-ingest.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/tracking-job-initial-poll.js +30 -0
- package/dist/modules/shipment_tracking/subscribers/tracking-job-initial-poll.js.map +7 -0
- package/dist/modules/shipment_tracking/subscribers/tracking-job-webhook-dispatch.js +19 -0
- package/dist/modules/shipment_tracking/subscribers/tracking-job-webhook-dispatch.js.map +7 -0
- package/dist/modules/shipment_tracking/tables/index.js +6 -0
- package/dist/modules/shipment_tracking/tables/index.js.map +7 -0
- package/dist/modules/shipment_tracking/tables/tracking_job/table.client.js +284 -0
- package/dist/modules/shipment_tracking/tables/tracking_job/table.client.js.map +7 -0
- package/dist/modules/shipment_tracking/tables/tracking_job/table.js +36 -0
- package/dist/modules/shipment_tracking/tables/tracking_job/table.js.map +7 -0
- package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/config.js +25 -0
- package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/config.js.map +7 -0
- package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.client.js +355 -0
- package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.client.js.map +7 -0
- package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.js +26 -0
- package/dist/modules/shipment_tracking/widgets/dashboard/ships-map/widget.js.map +7 -0
- package/dist/types/assets.d.js +1 -0
- package/dist/types/assets.d.js.map +7 -0
- package/generated/entities/bic_config/index.ts +20 -0
- package/generated/entities/carrier_config/index.ts +23 -0
- package/generated/entities/location_override/index.ts +26 -0
- package/generated/entities/shipment/index.ts +46 -0
- package/generated/entities/ships_go_config/index.ts +25 -0
- package/generated/entities/tracking_event/index.ts +60 -0
- package/generated/entities/tracking_job/index.ts +33 -0
- package/generated/entities/webhook/index.ts +22 -0
- package/generated/entities/webhook_delivery/index.ts +22 -0
- package/generated/entities.ids.generated.ts +47 -0
- package/package.json +81 -0
- package/src/index.ts +39 -0
- package/src/modules/shipment_tracking/__integration__/TC-TRACK-410-shipsgo-config-api.spec.ts +133 -0
- package/src/modules/shipment_tracking/__integration__/meta.ts +4 -0
- package/src/modules/shipment_tracking/__tests__/empty-return-stop.test.ts +231 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/hapag-lloyd-transship-container.json +702 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/index.ts +434 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/maersk-multi-transship-completed.json +1518 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/maersk-transship-intransit.json +558 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/msc-direct.json +222 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/msc-multi-transship-completed.json +974 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/msc-multi.json +4846 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/msc-transship.json +409 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/poi-events.json +240 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/synthetic/index.ts +138 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/synthetic-eta-updates.json +288 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/synthetic-route-inference.json +201 -0
- package/src/modules/shipment_tracking/__tests__/fixtures/synthetic-voyage-progression.json +410 -0
- package/src/modules/shipment_tracking/__tests__/shipsgo-air-mapper.test.ts +157 -0
- package/src/modules/shipment_tracking/__tests__/shipsgo-client.test.ts +155 -0
- package/src/modules/shipment_tracking/__tests__/shipsgo-mapper.test.ts +201 -0
- package/src/modules/shipment_tracking/__tests__/shipsgo-poll.test.ts +357 -0
- package/src/modules/shipment_tracking/__tests__/shipsgo-provider.test.ts +364 -0
- package/src/modules/shipment_tracking/__tests__/trackingService.integration.test.ts +2248 -0
- package/src/modules/shipment_tracking/__tests__/webhookPayload.test.ts +151 -0
- package/src/modules/shipment_tracking/acl.ts +18 -0
- package/src/modules/shipment_tracking/api/bic-configs/route.ts +206 -0
- package/src/modules/shipment_tracking/api/bic-configs/test/route.ts +108 -0
- package/src/modules/shipment_tracking/api/cargo-events/route.ts +101 -0
- package/src/modules/shipment_tracking/api/carrier-configs/route.ts +142 -0
- package/src/modules/shipment_tracking/api/dashboard/ships-map/route.ts +246 -0
- package/src/modules/shipment_tracking/api/location-overrides/route.ts +185 -0
- package/src/modules/shipment_tracking/api/openapi.ts +28 -0
- package/src/modules/shipment_tracking/api/shipments/route.ts +197 -0
- package/src/modules/shipment_tracking/api/shipsgo-configs/route.ts +215 -0
- package/src/modules/shipment_tracking/api/tracking-jobs/route.ts +149 -0
- package/src/modules/shipment_tracking/api/tracking-jobs/sync/route.ts +116 -0
- package/src/modules/shipment_tracking/api/utils.ts +10 -0
- package/src/modules/shipment_tracking/api/webhooks/deliveries/route.ts +82 -0
- package/src/modules/shipment_tracking/api/webhooks/route.ts +138 -0
- package/src/modules/shipment_tracking/api/webhooks/test/route.ts +84 -0
- package/src/modules/shipment_tracking/assets/carriers/cma_cgm.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/cosco.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/evergreen.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/hapag_lloyd.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/maersk.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/msc.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/one.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/oocl.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/yang_ming.png +0 -0
- package/src/modules/shipment_tracking/assets/carriers/zim.png +0 -0
- package/src/modules/shipment_tracking/assets/index.ts +66 -0
- package/src/modules/shipment_tracking/backend/carrier-configs/page.meta.ts +16 -0
- package/src/modules/shipment_tracking/backend/carrier-configs/page.tsx +782 -0
- package/src/modules/shipment_tracking/backend/location-overrides/page.meta.ts +16 -0
- package/src/modules/shipment_tracking/backend/location-overrides/page.tsx +241 -0
- package/src/modules/shipment_tracking/backend/shipment-tracking/page.meta.ts +16 -0
- package/src/modules/shipment_tracking/backend/shipment-tracking/page.tsx +340 -0
- package/src/modules/shipment_tracking/backend/tracking-jobs/page.meta.ts +16 -0
- package/src/modules/shipment_tracking/backend/tracking-jobs/page.tsx +16 -0
- package/src/modules/shipment_tracking/backend/webhooks/page.meta.ts +16 -0
- package/src/modules/shipment_tracking/backend/webhooks/page.tsx +228 -0
- package/src/modules/shipment_tracking/ce.ts +48 -0
- package/src/modules/shipment_tracking/cli.ts +321 -0
- package/src/modules/shipment_tracking/commands/bic-configs.ts +94 -0
- package/src/modules/shipment_tracking/commands/carrier-configs.ts +89 -0
- package/src/modules/shipment_tracking/commands/index.ts +8 -0
- package/src/modules/shipment_tracking/commands/location-overrides.ts +119 -0
- package/src/modules/shipment_tracking/commands/shipments.ts +247 -0
- package/src/modules/shipment_tracking/commands/shipsgo-configs.ts +101 -0
- package/src/modules/shipment_tracking/commands/tracking-jobs.ts +158 -0
- package/src/modules/shipment_tracking/commands/tracking.ts +230 -0
- package/src/modules/shipment_tracking/commands/webhooks.ts +159 -0
- package/src/modules/shipment_tracking/components/CombinedTimestampCell.tsx +236 -0
- package/src/modules/shipment_tracking/components/FacilityLocationInput.tsx +235 -0
- package/src/modules/shipment_tracking/components/LocationOverrideDrawer.tsx +586 -0
- package/src/modules/shipment_tracking/components/ShipmentDetailsDrawer.tsx +1364 -0
- package/src/modules/shipment_tracking/components/ShipmentDrawer.tsx +498 -0
- package/src/modules/shipment_tracking/components/ShipsGoConfigSection.tsx +266 -0
- package/src/modules/shipment_tracking/components/TimestampCell.tsx +146 -0
- package/src/modules/shipment_tracking/components/TrackingJobDrawer.tsx +467 -0
- package/src/modules/shipment_tracking/components/VesselTrackingMap.tsx +761 -0
- package/src/modules/shipment_tracking/components/WebhookDrawer.tsx +434 -0
- package/src/modules/shipment_tracking/data/entities.ts +748 -0
- package/src/modules/shipment_tracking/data/validators.ts +523 -0
- package/src/modules/shipment_tracking/di.ts +73 -0
- package/src/modules/shipment_tracking/encryption.ts +17 -0
- package/src/modules/shipment_tracking/events.ts +122 -0
- package/src/modules/shipment_tracking/hooks/useVesselTracking.ts +297 -0
- package/src/modules/shipment_tracking/i18n/de.json +327 -0
- package/src/modules/shipment_tracking/i18n/en.json +327 -0
- package/src/modules/shipment_tracking/i18n/es.json +327 -0
- package/src/modules/shipment_tracking/i18n/pl.json +327 -0
- package/src/modules/shipment_tracking/index.ts +13 -0
- package/src/modules/shipment_tracking/lib/__tests__/dcsa-event-mapping.test.ts +385 -0
- package/src/modules/shipment_tracking/lib/__tests__/dcsa-event-parser.test.ts +398 -0
- package/src/modules/shipment_tracking/lib/__tests__/empty-return.test.ts +174 -0
- package/src/modules/shipment_tracking/lib/__tests__/poi-event-processor.test.ts +699 -0
- package/src/modules/shipment_tracking/lib/__tests__/route-inference.test.ts +402 -0
- package/src/modules/shipment_tracking/lib/__tests__/status-machine.test.ts +447 -0
- package/src/modules/shipment_tracking/lib/__tests__/time-extraction.test.ts +331 -0
- package/src/modules/shipment_tracking/lib/__tests__/timestamp-utils.test.ts +260 -0
- package/src/modules/shipment_tracking/lib/__tests__/vessel-api.test.ts +125 -0
- package/src/modules/shipment_tracking/lib/__tests__/vessel-extraction.test.ts +108 -0
- package/src/modules/shipment_tracking/lib/adapters/cma-cgm.ts +84 -0
- package/src/modules/shipment_tracking/lib/adapters/cosco-types.ts +145 -0
- package/src/modules/shipment_tracking/lib/adapters/cosco.ts +314 -0
- package/src/modules/shipment_tracking/lib/adapters/evergreen.ts +107 -0
- package/src/modules/shipment_tracking/lib/adapters/hapag-lloyd.ts +88 -0
- package/src/modules/shipment_tracking/lib/adapters/index.ts +18 -0
- package/src/modules/shipment_tracking/lib/adapters/maersk.ts +104 -0
- package/src/modules/shipment_tracking/lib/adapters/msc.ts +223 -0
- package/src/modules/shipment_tracking/lib/adapters/zim.ts +106 -0
- package/src/modules/shipment_tracking/lib/audit-helpers.ts +29 -0
- package/src/modules/shipment_tracking/lib/auth/base64url.ts +4 -0
- package/src/modules/shipment_tracking/lib/auth/oauth-client.ts +53 -0
- package/src/modules/shipment_tracking/lib/background.ts +24 -0
- package/src/modules/shipment_tracking/lib/bic-api-client.ts +199 -0
- package/src/modules/shipment_tracking/lib/carrier-adapter.ts +136 -0
- package/src/modules/shipment_tracking/lib/current-vessel.ts +274 -0
- package/src/modules/shipment_tracking/lib/dcsa-event-mapping.ts +202 -0
- package/src/modules/shipment_tracking/lib/dcsa-event-parser.ts +163 -0
- package/src/modules/shipment_tracking/lib/dcsa-params.ts +14 -0
- package/src/modules/shipment_tracking/lib/empty-return.ts +122 -0
- package/src/modules/shipment_tracking/lib/location-overrides.ts +150 -0
- package/src/modules/shipment_tracking/lib/location-types.ts +154 -0
- package/src/modules/shipment_tracking/lib/logger.ts +195 -0
- package/src/modules/shipment_tracking/lib/poi-event-processor.ts +302 -0
- package/src/modules/shipment_tracking/lib/poi-nats-config.ts +134 -0
- package/src/modules/shipment_tracking/lib/poi-types.ts +198 -0
- package/src/modules/shipment_tracking/lib/rate-limiter.ts +58 -0
- package/src/modules/shipment_tracking/lib/route-extraction.ts +439 -0
- package/src/modules/shipment_tracking/lib/route-inference.ts +238 -0
- package/src/modules/shipment_tracking/lib/schedule-generator.ts +92 -0
- package/src/modules/shipment_tracking/lib/shipsgo-client.ts +350 -0
- package/src/modules/shipment_tracking/lib/shipsgo-mapper.ts +296 -0
- package/src/modules/shipment_tracking/lib/status-machine.ts +230 -0
- package/src/modules/shipment_tracking/lib/time-extraction.ts +85 -0
- package/src/modules/shipment_tracking/lib/timestamp-utils.ts +244 -0
- package/src/modules/shipment_tracking/lib/vessel-api.ts +299 -0
- package/src/modules/shipment_tracking/lib/vessel-cache.ts +102 -0
- package/src/modules/shipment_tracking/lib/vessel-extraction.ts +39 -0
- package/src/modules/shipment_tracking/lib/webhook-dispatcher.ts +93 -0
- package/src/modules/shipment_tracking/migrations/.snapshot-open-mercato.json +2914 -0
- package/src/modules/shipment_tracking/migrations/Migration20260422161208_shipment_tracking.ts +60 -0
- package/src/modules/shipment_tracking/migrations/Migration20260529120000_shipment_tracking_poi_region_names.ts +22 -0
- package/src/modules/shipment_tracking/migrations/Migration20260821120000_shipment_tracking_shipsgo.ts +65 -0
- package/src/modules/shipment_tracking/notifications.ts +151 -0
- package/src/modules/shipment_tracking/services/carrierRegistry.ts +29 -0
- package/src/modules/shipment_tracking/services/poiNatsService.ts +526 -0
- package/src/modules/shipment_tracking/services/shipsGoProvider.ts +231 -0
- package/src/modules/shipment_tracking/services/trackingService.ts +1777 -0
- package/src/modules/shipment_tracking/services/webhookService.ts +347 -0
- package/src/modules/shipment_tracking/setup.ts +99 -0
- package/src/modules/shipment_tracking/subscribers/__tests__/terminal-event-ingest.test.ts +141 -0
- package/src/modules/shipment_tracking/subscribers/cargo-event-created.ts +115 -0
- package/src/modules/shipment_tracking/subscribers/dcsa-event-webhook-dispatch.ts +115 -0
- package/src/modules/shipment_tracking/subscribers/poi-event-notification.ts +144 -0
- package/src/modules/shipment_tracking/subscribers/poi-event-webhook-dispatch.ts +94 -0
- package/src/modules/shipment_tracking/subscribers/shipment-status-changed.ts +41 -0
- package/src/modules/shipment_tracking/subscribers/terminal-event-ingest.ts +109 -0
- package/src/modules/shipment_tracking/subscribers/tracking-job-initial-poll.ts +53 -0
- package/src/modules/shipment_tracking/subscribers/tracking-job-webhook-dispatch.ts +50 -0
- package/src/modules/shipment_tracking/tables/index.ts +4 -0
- package/src/modules/shipment_tracking/tables/tracking_job/table.client.tsx +337 -0
- package/src/modules/shipment_tracking/tables/tracking_job/table.ts +34 -0
- package/src/modules/shipment_tracking/widgets/dashboard/ships-map/config.ts +32 -0
- package/src/modules/shipment_tracking/widgets/dashboard/ships-map/widget.client.tsx +448 -0
- package/src/modules/shipment_tracking/widgets/dashboard/ships-map/widget.ts +25 -0
- 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
|
+
}
|