@golemio/pid 2.4.1 → 2.4.2-dev.761535455
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/db/example/13_http-propagate-delay.sql +218 -0
- package/db/example/99_precomputed_tables.sql +65 -44
- package/db/migrations/postgresql/20230104135230-add-first-last-stop-to-scheduled-trips.js +53 -0
- package/db/migrations/postgresql/sqls/20230104135230-add-first-last-stop-to-scheduled-trips-down.sql +3 -0
- package/db/migrations/postgresql/sqls/20230104135230-add-first-last-stop-to-scheduled-trips-up.sql +3 -0
- package/dist/integration-engine/index.d.ts +1 -1
- package/dist/integration-engine/index.js +14 -11
- package/dist/integration-engine/index.js.map +1 -1
- package/dist/integration-engine/queueDefinitions.js +0 -99
- package/dist/integration-engine/queueDefinitions.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.d.ts +3 -3
- package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.js +68 -47
- package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/DelayComputationRedisRepository.d.ts +4 -0
- package/dist/integration-engine/ropid-gtfs/data-access/DelayComputationRedisRepository.js +18 -0
- package/dist/integration-engine/ropid-gtfs/data-access/DelayComputationRedisRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/helpers/RouteTypeEnums.d.ts +29 -0
- package/dist/integration-engine/ropid-gtfs/helpers/RouteTypeEnums.js +35 -0
- package/dist/integration-engine/ropid-gtfs/helpers/RouteTypeEnums.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/interfaces/IGtfsRunTripCache.d.ts +28 -0
- package/dist/integration-engine/{vehicle-positions/VehiclePositionsInterfaces.js → ropid-gtfs/interfaces/IGtfsRunTripCache.js} +1 -1
- package/dist/integration-engine/ropid-gtfs/interfaces/IGtfsRunTripCache.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/index.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/index.js +3 -3
- package/dist/integration-engine/vehicle-positions/index.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/GtfsRealTimeWorker.d.ts +5 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/GtfsRealTimeWorker.js +16 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/GtfsRealTimeWorker.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/data-access/GtfsRtRedisRepository.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/data-access/GtfsRtRedisRepository.js +14 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/data-access/GtfsRtRedisRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertCauseMapper.d.ts +2 -0
- package/dist/integration-engine/{gtfsrt-alerts/transformations/GtfsAlertCauseMapper.js → vehicle-positions/workers/gtfs-rt/helpers/AlertCauseMapper.js} +12 -12
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertCauseMapper.js.map +1 -0
- package/dist/integration-engine/{gtfsrt-alerts/transformations/GtfsEffectMapper.d.ts → vehicle-positions/workers/gtfs-rt/helpers/AlertEffectMapper.d.ts} +2 -2
- package/dist/integration-engine/{gtfsrt-alerts/transformations/GtfsEffectMapper.js → vehicle-positions/workers/gtfs-rt/helpers/AlertEffectMapper.js} +9 -9
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertEffectMapper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.d.ts +9 -0
- package/dist/integration-engine/{gtfsrt-alerts/GtfsRtAlertsController.js → vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.js} +19 -15
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/enums/AlertCauseEnum.d.ts +14 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/enums/AlertCauseEnum.js +19 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/enums/AlertCauseEnum.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/enums/AlertEffectEnum.d.ts +11 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/enums/AlertEffectEnum.js +16 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/enums/AlertEffectEnum.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/AlertsInterfaces.d.ts +31 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/AlertsInterfaces.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/AlertsInterfaces.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/IGtfsRtFeedEntity.d.ts +26 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/IGtfsRtFeedEntity.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/interfaces/IGtfsRtFeedEntity.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +130 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -0
- package/dist/integration-engine/{gtfsrt-alerts/transformations/GtfsRtAlertTransformation.d.ts → vehicle-positions/workers/gtfs-rt/transformations/AlertsTransformation.d.ts} +6 -6
- package/dist/integration-engine/{gtfsrt-alerts/transformations/GtfsRtAlertTransformation.js → vehicle-positions/workers/gtfs-rt/transformations/AlertsTransformation.js} +9 -9
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/transformations/AlertsTransformation.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js +7 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsRunsMessagesModel.d.ts → workers/runs/data-access/CommonRunsMessagesRepository.d.ts} +3 -3
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsRunsMessagesModel.js → workers/runs/data-access/CommonRunsMessagesRepository.js} +12 -11
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsMessagesRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.d.ts +32 -0
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsRunsModel.js → workers/runs/data-access/CommonRunsRepository.js} +24 -20
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/data-access → data-access}/MetroRunsMessagesRepository.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/data-access → data-access}/MetroRunsMessagesRepository.js +10 -10
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/MetroRunsMessagesRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/data-access → data-access}/RunTripsRedisRepository.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/data-access → data-access}/RunTripsRedisRepository.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/RunTripsRedisRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.js +42 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/CommonMessageProcessor.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/helpers → helpers}/MetroMessageFilter.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/helpers → helpers}/MetroMessageFilter.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroMessageFilter.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/helpers → helpers}/MetroRouteHelper.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/helpers → helpers}/MetroRouteHelper.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/CommonRunsMessageInterfaces.d.ts +33 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/CommonRunsMessageInterfaces.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/CommonRunsMessageInterfaces.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/ICommonRunWithMessage.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/ICommonRunWithMessage.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/ICommonRunWithMessage.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/IDataDeletionParams.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/IDataDeletionParams.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IDataDeletionParams.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/IMetroRunInputForProcessing.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/IMetroRunInputForProcessing.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IMetroRunInputForProcessing.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessMetroRunsMessagesInput.d.ts +5 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/IProcessMetroRunsMessagesInput.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessMetroRunsMessagesInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/MetroRunsMessageInterfaces.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/interfaces → interfaces}/MetroRunsMessageInterfaces.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/MetroRunsMessageInterfaces.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/CommonRunsSchema.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/CommonRunsSchema.js +99 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/CommonRunsSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/schema → schema}/DataDeletionSchema.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/schema → schema}/DataDeletionSchema.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/DataDeletionSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/schema → schema}/MetroRunsSchema.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/schema → schema}/MetroRunsSchema.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/MetroRunsSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/schema → schema}/MetroTransformedRunsSchema.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/schema → schema}/MetroTransformedRunsSchema.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/MetroTransformedRunsSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/DeleteDataTask.d.ts +4 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/DeleteDataTask.js +7 -4
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/DeleteDataTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessMetroRunsMessagesTask.d.ts +2 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessMetroRunsMessagesTask.js +13 -12
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessMetroRunsMessagesTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveBusRunsToDBTask.d.ts +14 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveBusRunsToDBTask.js +48 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveBusRunsToDBTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveMetroRunsToDBTask.d.ts +2 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveMetroRunsToDBTask.js +4 -4
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveMetroRunsToDBTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveTramRunsToDBTask.d.ts +14 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveTramRunsToDBTask.js +43 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveTramRunsToDBTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/CommonRunsMessagesTransformation.d.ts +11 -0
- package/dist/integration-engine/vehicle-positions/{transformations/VehiclePositionsRunsTransformation.js → workers/runs/transformations/CommonRunsMessagesTransformation.js} +7 -8
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/CommonRunsMessagesTransformation.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/transformations → transformations}/MetroRunsMessageProcessingTransformation.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/transformations → transformations}/MetroRunsMessageProcessingTransformation.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/MetroRunsMessageProcessingTransformation.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/transformations → transformations}/MetroRunsMessagesTransformation.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/{tasks/transformations → transformations}/MetroRunsMessagesTransformation.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/MetroRunsMessagesTransformation.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/{VPWorker.d.ts → vehicle-positions/VPWorker.d.ts} +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js +28 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsTripsHistoryModel.d.ts → workers/vehicle-positions/data-access/PositionsHistoryRepository.d.ts} +1 -1
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsPositionsHistoryModel.js → workers/vehicle-positions/data-access/PositionsHistoryRepository.js} +6 -6
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsHistoryRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsPositionsModel.d.ts → workers/vehicle-positions/data-access/PositionsRepository.d.ts} +8 -8
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsPositionsModel.js → workers/vehicle-positions/data-access/PositionsRepository.js} +11 -11
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripStopsRedisRepository.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripStopsRedisRepository.js +18 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripStopsRedisRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsPositionsHistoryModel.d.ts → workers/vehicle-positions/data-access/TripsHistoryRepository.d.ts} +1 -1
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsTripsHistoryModel.js → workers/vehicle-positions/data-access/TripsHistoryRepository.js} +6 -6
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsHistoryRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsTripsModel.d.ts → workers/vehicle-positions/data-access/TripsRepository.d.ts} +38 -67
- package/dist/integration-engine/vehicle-positions/{models/VehiclePositionsTripsModel.js → workers/vehicle-positions/data-access/TripsRepository.js} +82 -57
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/{models/helpers/VPPositionsMapper.js → workers/vehicle-positions/data-access/helpers/PositionsMapper.js} +8 -8
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.d.ts +13 -0
- package/dist/integration-engine/vehicle-positions/{models/helpers/VPTripsIdGenerator.js → workers/vehicle-positions/data-access/helpers/TripsIdGenerator.js} +3 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.js +85 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/DPPUtils.d.ts +2 -2
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/DPPUtils.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/DPPUtils.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/DateTimeUtils.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/DateTimeUtils.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/DateTimeUtils.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/DelayComputationManager.d.ts +32 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/DelayComputationManager.js +271 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/DelayComputationManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/PositionCalculator.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/PositionCalculator.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionCalculator.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/PositionHandlerEnum.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/PositionHandlerEnum.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionHandlerEnum.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/PositionsManager.d.ts +4 -3
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/PositionsManager.js +8 -4
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/TripStopsManager.d.ts +15 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/TripStopsManager.js +47 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/TripStopsManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{VehiclePositionsUtils.d.ts → workers/vehicle-positions/helpers/VPUtils.d.ts} +5 -15
- package/dist/integration-engine/vehicle-positions/{VehiclePositionsUtils.js → workers/vehicle-positions/helpers/VPUtils.js} +12 -32
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/VPUtils.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/ValidToCalculator.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/ValidToCalculator.js +3 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ValidToCalculator.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/ComputeDelayHelper.d.ts +4 -4
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/ComputeDelayHelper.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/ComputeDelayHelper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/AbstractDelayAtStop.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/AbstractDelayAtStop.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/AbstractDelayAtStop.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/BusDelayAtStop.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/BusDelayAtStop.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/BusDelayAtStop.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/FactoryDelayAtStop.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/FactoryDelayAtStop.js +2 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/FactoryDelayAtStop.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/TramDelayAtStop.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/compute-positions/strategy/TramDelayAtStop.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/TramDelayAtStop.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.d.ts +29 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/AbstractGTFSTripRunManager.js +14 -4
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/GTFSTripCommonRunManager.d.ts +4 -4
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/GTFSTripCommonRunManager.js +5 -5
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/GTFSTripMetroRunManager.d.ts +3 -3
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/GTFSTripMetroRunManager.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/GTFSTripRunManagerFactory.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/GTFSTripRunManagerFactory.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/{helpers → workers/vehicle-positions/helpers}/gtfs-trip-run/interfaces/IDelayMessage.js +0 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IDataDeletionParams.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IDataDeletionParams.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IDataDeletionParams.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IPropagateDelayInput.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IPropagateDelayInput.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IPropagateDelayInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IUpdateDelayInput.d.ts +8 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IUpdateDelayInput.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IUpdateDelayInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IUpdateGtfsTripIdInput.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IUpdateGtfsTripIdInput.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IUpdateGtfsTripIdInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/MpvMessageInterfaces.d.ts +49 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/MpvMessageInterfaces.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/MpvMessageInterfaces.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/TransformationInterfaces.d.ts +53 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/TransformationInterfaces.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/TransformationInterfaces.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/{VehiclePositionsInterfaces.d.ts → workers/vehicle-positions/interfaces/VPInterfaces.d.ts} +10 -7
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/DataDeletionSchema.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/DataDeletionSchema.js +22 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/DataDeletionSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/PropagateDelaySchema.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/PropagateDelaySchema.js +27 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/PropagateDelaySchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/SaveDataToDBSchema.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/SaveDataToDBSchema.js +218 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/SaveDataToDBSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateDelaySchema.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateDelaySchema.js +33 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateDelaySchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateGtfsTripIdSchema.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateGtfsTripIdSchema.js +27 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateGtfsTripIdSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateRunsGtfsTripIdSchema.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateRunsGtfsTripIdSchema.js +25 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateRunsGtfsTripIdSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/{tasks → vehicle-positions/tasks}/DataRetentionTask.d.ts +0 -0
- package/dist/integration-engine/vehicle-positions/workers/{tasks → vehicle-positions/tasks}/DataRetentionTask.js +2 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/DataRetentionTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/DeleteDataTask.d.ts +14 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/DeleteDataTask.js +39 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/DeleteDataTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.d.ts +19 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.js +125 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/SaveDataToDBTask.d.ts +12 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/SaveDataToDBTask.js +77 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/SaveDataToDBTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.d.ts +22 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js +176 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateGtfsTripIdTask.d.ts +18 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateGtfsTripIdTask.js +143 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateGtfsTripIdTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.d.ts +22 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.js +73 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.d.ts +58 -0
- package/dist/integration-engine/vehicle-positions/{transformations/VehiclePositionsTransformation.js → workers/vehicle-positions/transformations/PositionsTransformation.js} +23 -24
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.js.map +1 -0
- package/dist/output-gateway/shared/data-access/FeatureFlagDictionary.d.ts +3 -0
- package/dist/output-gateway/shared/data-access/FeatureFlagDictionary.js +7 -0
- package/dist/output-gateway/shared/data-access/FeatureFlagDictionary.js.map +1 -0
- package/dist/output-gateway/shared/data-access/index.d.ts +1 -0
- package/dist/{integration-engine/vehicle-positions/transformations → output-gateway/shared/data-access}/index.js +1 -2
- package/dist/output-gateway/shared/data-access/index.js.map +1 -0
- package/dist/output-gateway/vehicle-positions/models/VehiclePositionsTripsModel.d.ts +1 -0
- package/dist/output-gateway/vehicle-positions/models/VehiclePositionsTripsModel.js +7 -0
- package/dist/output-gateway/vehicle-positions/models/VehiclePositionsTripsModel.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.d.ts +6 -0
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js +8 -0
- package/dist/schema-definitions/ropid-gtfs/RopidGTFSPrecomputed.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/index.d.ts +0 -16
- package/dist/schema-definitions/vehicle-positions/index.js +0 -130
- package/dist/schema-definitions/vehicle-positions/index.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/CommonRunsMessagesModel.d.ts +20 -0
- package/dist/schema-definitions/vehicle-positions/models/CommonRunsMessagesModel.js +73 -0
- package/dist/schema-definitions/vehicle-positions/models/CommonRunsMessagesModel.js.map +1 -0
- package/dist/schema-definitions/vehicle-positions/models/CommonRunsModel.d.ts +16 -0
- package/dist/schema-definitions/vehicle-positions/models/CommonRunsModel.js +61 -0
- package/dist/schema-definitions/vehicle-positions/models/CommonRunsModel.js.map +1 -0
- package/dist/schema-definitions/vehicle-positions/models/index.d.ts +2 -0
- package/dist/schema-definitions/vehicle-positions/models/index.js +2 -0
- package/dist/schema-definitions/vehicle-positions/models/index.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/interfaces/ICommonRunsMessagesModel.d.ts +14 -0
- package/dist/schema-definitions/vehicle-positions/models/interfaces/ICommonRunsMessagesModel.js +3 -0
- package/dist/schema-definitions/vehicle-positions/models/interfaces/ICommonRunsMessagesModel.js.map +1 -0
- package/dist/schema-definitions/vehicle-positions/models/interfaces/ICommonRunsModel.d.ts +10 -0
- package/dist/schema-definitions/vehicle-positions/models/interfaces/ICommonRunsModel.js +3 -0
- package/dist/schema-definitions/vehicle-positions/models/interfaces/ICommonRunsModel.js.map +1 -0
- package/docs/implementation_documentation.md +125 -119
- package/package.json +6 -6
- package/dist/integration-engine/gtfsrt-alerts/GtfsRtAlertsController.d.ts +0 -10
- package/dist/integration-engine/gtfsrt-alerts/GtfsRtAlertsController.js.map +0 -1
- package/dist/integration-engine/gtfsrt-alerts/transformations/GtfsAlertCauseMapper.d.ts +0 -2
- package/dist/integration-engine/gtfsrt-alerts/transformations/GtfsAlertCauseMapper.js.map +0 -1
- package/dist/integration-engine/gtfsrt-alerts/transformations/GtfsEffectMapper.js.map +0 -1
- package/dist/integration-engine/gtfsrt-alerts/transformations/GtfsRtAlertTransformation.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/VehiclePositionsInterfaces.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/VehiclePositionsUtils.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/VehiclePositionsWorker.d.ts +0 -105
- package/dist/integration-engine/vehicle-positions/VehiclePositionsWorker.js +0 -887
- package/dist/integration-engine/vehicle-positions/VehiclePositionsWorker.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/DPPUtils.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/DateTimeUtils.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/PositionCalculator.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/PositionHandlerEnum.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/PositionsManager.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/ValidToCalculator.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/compute-positions/ComputeDelayHelper.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/compute-positions/strategy/AbstractDelayAtStop.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/compute-positions/strategy/BusDelayAtStop.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/compute-positions/strategy/FactoryDelayAtStop.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/compute-positions/strategy/TramDelayAtStop.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.d.ts +0 -24
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/GTFSTripRunManagerFactory.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.d.ts +0 -6
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/interfaces/IDelayMessage.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsHistoryModel.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsRunsMessagesModel.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsRunsModel.d.ts +0 -55
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsRunsModel.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsHistoryModel.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/helpers/VPPositionsMapper.d.ts +0 -8
- package/dist/integration-engine/vehicle-positions/models/helpers/VPPositionsMapper.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsIdGenerator.d.ts +0 -13
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsIdGenerator.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsMapper.d.ts +0 -10
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsMapper.js +0 -85
- package/dist/integration-engine/vehicle-positions/models/helpers/VPTripsMapper.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/models/index.d.ts +0 -4
- package/dist/integration-engine/vehicle-positions/models/index.js +0 -21
- package/dist/integration-engine/vehicle-positions/models/index.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.d.ts +0 -69
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsTransformation.d.ts +0 -108
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsTransformation.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/transformations/index.d.ts +0 -2
- package/dist/integration-engine/vehicle-positions/transformations/index.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/VPWorker.js +0 -16
- package/dist/integration-engine/vehicle-positions/workers/VPWorker.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/data-access/MetroRunsMessagesRepository.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/data-access/RunTripsRedisRepository.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/helpers/MetroMessageFilter.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/helpers/MetroRouteHelper.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IDataDeletionParams.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IMetroRunInputForProcessing.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IProcessMetroRunsMessagesInput.d.ts +0 -5
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/IProcessMetroRunsMessagesInput.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/interfaces/MetroRunsMessageInterfaces.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/schema/DataDeletionSchema.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/schema/MetroRunsSchema.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/schema/MetroTransformedRunsSchema.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessageProcessingTransformation.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessagesTransformation.js.map +0 -1
- package/dist/integration-engine/vehicle-positions/workers/tasks/DataRetentionTask.js.map +0 -1
- package/dist/schema-definitions/gtfsrt-alerts/GtfsRtAlert.d.ts +0 -56
- package/dist/schema-definitions/gtfsrt-alerts/GtfsRtAlert.js +0 -29
- package/dist/schema-definitions/gtfsrt-alerts/GtfsRtAlert.js.map +0 -1
|
@@ -1,887 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.VehiclePositionsWorker = void 0;
|
|
39
|
-
const GtfsRtAlertsController_1 = require("../gtfsrt-alerts/GtfsRtAlertsController");
|
|
40
|
-
const GtfsRtAlertTransformation_1 = require("../gtfsrt-alerts/transformations/GtfsRtAlertTransformation");
|
|
41
|
-
const RopidGTFSStopTimesModel_1 = require("../ropid-gtfs/RopidGTFSStopTimesModel");
|
|
42
|
-
const RopidGTFSTripsModel_1 = require("../ropid-gtfs/RopidGTFSTripsModel");
|
|
43
|
-
const ropid_vymi_1 = require("../ropid-vymi");
|
|
44
|
-
const ropid_gtfs_1 = require("../../schema-definitions/ropid-gtfs");
|
|
45
|
-
const vehicle_positions_1 = require("../../schema-definitions/vehicle-positions");
|
|
46
|
-
const config_1 = require("@golemio/core/dist/integration-engine/config");
|
|
47
|
-
const helpers_1 = require("@golemio/core/dist/integration-engine/helpers");
|
|
48
|
-
const models_1 = require("@golemio/core/dist/integration-engine/models");
|
|
49
|
-
const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
50
|
-
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
51
|
-
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
52
|
-
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
53
|
-
const turf = __importStar(require("@turf/turf"));
|
|
54
|
-
const const_1 = require("../../const");
|
|
55
|
-
const GTFSTripRunManagerFactory_1 = require("./helpers/gtfs-trip-run/GTFSTripRunManagerFactory");
|
|
56
|
-
const PositionsManager_1 = __importDefault(require("./helpers/PositionsManager"));
|
|
57
|
-
const models_2 = require("./models");
|
|
58
|
-
const VehiclePositionsPositionsHistoryModel_1 = require("./models/VehiclePositionsPositionsHistoryModel");
|
|
59
|
-
const VehiclePositionsTripsHistoryModel_1 = require("./models/VehiclePositionsTripsHistoryModel");
|
|
60
|
-
const transformations_1 = require("./transformations");
|
|
61
|
-
const VehiclePositionsUtils_1 = require("./VehiclePositionsUtils");
|
|
62
|
-
const RunTripsRedisRepository_1 = require("./workers/runs/tasks/data-access/RunTripsRedisRepository");
|
|
63
|
-
const GtfsOvapi = require("@golemio/ovapi-gtfs-realtime-bindings/dist/gtfs-realtime");
|
|
64
|
-
const gtfsRealtime = GtfsOvapi.transit_realtime;
|
|
65
|
-
class VehiclePositionsWorker extends workers_1.BaseWorker {
|
|
66
|
-
constructor() {
|
|
67
|
-
super();
|
|
68
|
-
this.saveDataToDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
const inputData = JSON.parse(msg.content.toString()).m.spoj;
|
|
70
|
-
const transformedData = yield this.transformation.transform(inputData);
|
|
71
|
-
const rows = yield this.modelTrips.bulkUpsert(transformedData.trips);
|
|
72
|
-
// send message for update GTFSTripIds
|
|
73
|
-
for (let i = 0, chunkSize = 50; i < rows.inserted.length; i += chunkSize) {
|
|
74
|
-
const inserted = rows.inserted.slice(i, i + chunkSize);
|
|
75
|
-
const insertedIds = inserted.map((ins) => {
|
|
76
|
-
return ins.id;
|
|
77
|
-
});
|
|
78
|
-
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".updateGTFSTripId", JSON.stringify({
|
|
79
|
-
trips: inserted,
|
|
80
|
-
positions: transformedData.positions.filter((position) => insertedIds.includes(position.trips_id)),
|
|
81
|
-
}));
|
|
82
|
-
}
|
|
83
|
-
// send message for update delay
|
|
84
|
-
// aggregate runs by origin_route_name & sequence_id to keep related messages in same bulk
|
|
85
|
-
const runTripMap = rows.updated.length ? { unknown: [] } : {};
|
|
86
|
-
for (const trip of rows.updated) {
|
|
87
|
-
if (!trip.origin_route_name || !trip.sequence_id) {
|
|
88
|
-
runTripMap.unknown.push(trip.id);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
const key = `${trip.origin_route_name}_${trip.sequence_id}`;
|
|
92
|
-
runTripMap[key] ? runTripMap[key].push(trip.id) : (runTripMap[key] = [trip.id]);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const chunks = [];
|
|
96
|
-
let idx = 0;
|
|
97
|
-
for (const key in runTripMap) {
|
|
98
|
-
if (!chunks[idx]) {
|
|
99
|
-
chunks[idx] = [];
|
|
100
|
-
}
|
|
101
|
-
chunks[idx] = chunks[idx].concat(runTripMap[key]);
|
|
102
|
-
if (chunks[idx].length > 200) {
|
|
103
|
-
idx++;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
for (const key in chunks) {
|
|
107
|
-
const positions = transformedData.positions.filter((position) => chunks[key].includes(position.trips_id));
|
|
108
|
-
const updatedTrips = yield this.modelTrips.findAllAssocTripIds(chunks[key]);
|
|
109
|
-
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".updateDelay", JSON.stringify({
|
|
110
|
-
positions,
|
|
111
|
-
updatedTrips,
|
|
112
|
-
}));
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
this.updateGTFSTripId = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
-
const inputData = JSON.parse(msg.content.toString());
|
|
117
|
-
// unique ids in input data in key-value (id-positions) structure
|
|
118
|
-
let positionsByIds = {};
|
|
119
|
-
for (const position of inputData.positions) {
|
|
120
|
-
positionsByIds[position.trips_id] = position;
|
|
121
|
-
}
|
|
122
|
-
// find and set schedules for trips
|
|
123
|
-
yield Promise.all(inputData.trips.map((trip) => {
|
|
124
|
-
if (!trip.origin_route_name || !trip.sequence_id || !positionsByIds[trip.id].origin_timestamp)
|
|
125
|
-
return;
|
|
126
|
-
const timestampLast = new Date(positionsByIds[trip.id].origin_timestamp).toISOString();
|
|
127
|
-
return this.gtfsTripRunManager.setAndReturnScheduledTrips({
|
|
128
|
-
route_id: trip.origin_route_name,
|
|
129
|
-
run_number: trip.sequence_id,
|
|
130
|
-
msg_last_timestamp: timestampLast,
|
|
131
|
-
});
|
|
132
|
-
}));
|
|
133
|
-
// find gtfs data for each trip
|
|
134
|
-
const promiseValues = yield Promise.all(inputData.trips.map((trip) => __awaiter(this, void 0, void 0, function* () {
|
|
135
|
-
try {
|
|
136
|
-
return yield this.modelTrips.findGTFSTripId(trip);
|
|
137
|
-
}
|
|
138
|
-
catch (err) {
|
|
139
|
-
helpers_1.log.error(err);
|
|
140
|
-
return err;
|
|
141
|
-
}
|
|
142
|
-
})));
|
|
143
|
-
let existingTripsPromiseValues = [], existingTripsPromiseErrors = [];
|
|
144
|
-
// filter only trips with found gtfs data
|
|
145
|
-
for (const trip of promiseValues) {
|
|
146
|
-
if (trip instanceof golemio_errors_1.CustomError) {
|
|
147
|
-
existingTripsPromiseErrors.push(trip);
|
|
148
|
-
}
|
|
149
|
-
else if (trip instanceof Array) {
|
|
150
|
-
existingTripsPromiseValues.push(...trip);
|
|
151
|
-
}
|
|
152
|
-
else if ((trip === null || trip === void 0 ? void 0 : trip.constructor) === Object) {
|
|
153
|
-
existingTripsPromiseValues.push(trip);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
let tripsByBlockId = {};
|
|
157
|
-
for (const trip of existingTripsPromiseValues) {
|
|
158
|
-
if (!trip.gtfs_block_id || !trip.gtfs_trip_id)
|
|
159
|
-
continue;
|
|
160
|
-
if (!tripsByBlockId[trip.gtfs_block_id]) {
|
|
161
|
-
tripsByBlockId[trip.gtfs_block_id] = new Set();
|
|
162
|
-
}
|
|
163
|
-
tripsByBlockId[trip.gtfs_block_id].add(trip.gtfs_trip_id);
|
|
164
|
-
}
|
|
165
|
-
// create cache for trip stops (grouped by block id)
|
|
166
|
-
const tripStopsSchedulesByBlockIds = yield Object.entries(tripsByBlockId).reduce((acc, [blockId, gtfsTripIds]) => __awaiter(this, void 0, void 0, function* () {
|
|
167
|
-
const tripStops = yield acc;
|
|
168
|
-
try {
|
|
169
|
-
tripStops[blockId] = yield this.setAndReturnTripStopsSchedule(blockId, [...gtfsTripIds]);
|
|
170
|
-
}
|
|
171
|
-
catch (err) {
|
|
172
|
-
helpers_1.IntegrationErrorHandler.handle(err);
|
|
173
|
-
}
|
|
174
|
-
return acc;
|
|
175
|
-
}), Promise.resolve({}));
|
|
176
|
-
let currentPosition;
|
|
177
|
-
for (const trip of existingTripsPromiseValues) {
|
|
178
|
-
if (positionsByIds[trip.id]) {
|
|
179
|
-
currentPosition = positionsByIds[trip.id];
|
|
180
|
-
if (trip.gtfs_block_id) {
|
|
181
|
-
// Determine current position tracking status
|
|
182
|
-
currentPosition.tracking = VehiclePositionsUtils_1.VehiclePositionsUtils.determineTrackingStatus(trip.gtfs_trip_id, tripStopsSchedulesByBlockIds[trip.gtfs_block_id], currentPosition);
|
|
183
|
-
}
|
|
184
|
-
continue;
|
|
185
|
-
}
|
|
186
|
-
if (!currentPosition) {
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
// Determine new position tracking status
|
|
190
|
-
const newPositionTrackingStatus = VehiclePositionsUtils_1.VehiclePositionsUtils.determineNewPositionTracking(tripStopsSchedulesByBlockIds[trip.gtfs_block_id], trip, currentPosition);
|
|
191
|
-
// duplicate position with new created trip for second trip
|
|
192
|
-
const newPosition = Object.assign({}, currentPosition);
|
|
193
|
-
newPosition.trips_id = trip.id;
|
|
194
|
-
newPosition.tracking = newPositionTrackingStatus;
|
|
195
|
-
inputData.positions.push(newPosition);
|
|
196
|
-
}
|
|
197
|
-
yield this.modelPositions.save(inputData.positions);
|
|
198
|
-
// successfully updated gtfs ids
|
|
199
|
-
for (let i = 0, chunkSize = 100, imax = existingTripsPromiseValues.length; i < imax; i += chunkSize) {
|
|
200
|
-
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".updateDelay", JSON.stringify({
|
|
201
|
-
positions: [],
|
|
202
|
-
updatedTrips: existingTripsPromiseValues.slice(i, i + chunkSize),
|
|
203
|
-
}));
|
|
204
|
-
}
|
|
205
|
-
// gtfsId updating errors
|
|
206
|
-
for (let i = 0, imax = existingTripsPromiseErrors.length; i < imax; i++) {
|
|
207
|
-
helpers_1.IntegrationErrorHandler.handle(existingTripsPromiseErrors[i]);
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
this.generateGtfsRt = () => __awaiter(this, void 0, void 0, function* () {
|
|
211
|
-
const currentDate = new Date();
|
|
212
|
-
const results = yield this.modelTrips.findAllForGTFSRt();
|
|
213
|
-
const updatesMessage = gtfsRealtime.FeedMessage.create();
|
|
214
|
-
const positionsMessage = gtfsRealtime.FeedMessage.create();
|
|
215
|
-
const header = {
|
|
216
|
-
gtfsRealtimeVersion: "2.0",
|
|
217
|
-
incrementality: "FULL_DATASET",
|
|
218
|
-
timestamp: Math.round(currentDate.valueOf() / 1000),
|
|
219
|
-
};
|
|
220
|
-
updatesMessage.header = gtfsRealtime.FeedHeader.fromObject(header);
|
|
221
|
-
positionsMessage.header = gtfsRealtime.FeedHeader.fromObject(header);
|
|
222
|
-
results.forEach((r) => {
|
|
223
|
-
const tripDescriptor = {
|
|
224
|
-
scheduleRelationship: r.last_position.is_canceled ? "CANCELED" : "SCHEDULED",
|
|
225
|
-
startDate: (0, moment_timezone_1.default)(+r.start_timestamp).utc().format("YYYYMMDD"),
|
|
226
|
-
startTime: r.start_time,
|
|
227
|
-
tripId: r.gtfs_trip_id,
|
|
228
|
-
routeId: r.gtfs_route_id,
|
|
229
|
-
};
|
|
230
|
-
const vehicleDescriptor = Object.assign(Object.assign({ id: r.gtfs_route_type === models_2.GTFSRouteTypeEnum.TRAIN
|
|
231
|
-
? "train-" + r.cis_trip_number
|
|
232
|
-
: "service-" + r.gtfs_route_type + "-" + r.vehicle_registration_number }, (r.vehicle_registration_number && {
|
|
233
|
-
label: r.vehicle_registration_number,
|
|
234
|
-
})), { ".transit_realtime.ovapiVehicleDescriptor": {
|
|
235
|
-
wheelchairAccessible: r.wheelchair_accessible,
|
|
236
|
-
} });
|
|
237
|
-
const entityTimestamp = Math.round(+r.last_position.origin_timestamp / 1000).toString();
|
|
238
|
-
const stopTimeUpdates = [];
|
|
239
|
-
// if last_stop_esquence is null, set default to 1 to include all stops (works for before track trips)
|
|
240
|
-
const startingStopSequence = r.last_position.last_stop_sequence || 1;
|
|
241
|
-
if (startingStopSequence) {
|
|
242
|
-
for (let i = startingStopSequence; i <= r.stop_times.length; i++) {
|
|
243
|
-
const delayObject = r.last_position.delay === null
|
|
244
|
-
? null
|
|
245
|
-
: {
|
|
246
|
-
delay: r.last_position.delay,
|
|
247
|
-
};
|
|
248
|
-
if (typeof r.stop_times[i - 1] !== undefined) {
|
|
249
|
-
stopTimeUpdates.push({
|
|
250
|
-
arrival: delayObject,
|
|
251
|
-
departure: delayObject,
|
|
252
|
-
stopSequence: i,
|
|
253
|
-
stopId: r.stop_times[i - 1].stop_id,
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
const updateEntity = {
|
|
259
|
-
id: r.id,
|
|
260
|
-
tripUpdate: {
|
|
261
|
-
stopTimeUpdate: stopTimeUpdates,
|
|
262
|
-
timestamp: entityTimestamp,
|
|
263
|
-
trip: tripDescriptor,
|
|
264
|
-
vehicle: vehicleDescriptor,
|
|
265
|
-
},
|
|
266
|
-
};
|
|
267
|
-
const positionEntity = {
|
|
268
|
-
id: r.gtfs_trip_id,
|
|
269
|
-
vehicle: {
|
|
270
|
-
currentStopSequence: r.last_position.last_stop_sequence,
|
|
271
|
-
position: Object.assign({ bearing: r.last_position.bearing, latitude: r.last_position.lat, longitude: r.last_position.lng }, (r.last_position.speed && {
|
|
272
|
-
speed: (r.last_position.speed / 3.6).toFixed(2),
|
|
273
|
-
})),
|
|
274
|
-
timestamp: entityTimestamp,
|
|
275
|
-
trip: tripDescriptor,
|
|
276
|
-
vehicle: vehicleDescriptor,
|
|
277
|
-
},
|
|
278
|
-
};
|
|
279
|
-
const updatesMessageEntity = gtfsRealtime.FeedEntity.fromObject(updateEntity);
|
|
280
|
-
updatesMessage.entity.push(updatesMessageEntity);
|
|
281
|
-
const positionsMessageEntity = gtfsRealtime.FeedEntity.fromObject(positionEntity);
|
|
282
|
-
positionsMessage.entity.push(positionsMessageEntity);
|
|
283
|
-
});
|
|
284
|
-
if (gtfsRealtime.FeedMessage.verify(updatesMessage) === null) {
|
|
285
|
-
const buffer = gtfsRealtime.FeedMessage.encode(updatesMessage).finish();
|
|
286
|
-
// save to Redis
|
|
287
|
-
yield this.gtfsRtModel.hset("trip_updates.pb", buffer.toString("binary"));
|
|
288
|
-
// await fs.writeFile("trip_updates.pb", buffer); // debug
|
|
289
|
-
yield this.gtfsRtModel.hset("trip_updates.json", JSON.stringify(updatesMessage));
|
|
290
|
-
}
|
|
291
|
-
if (gtfsRealtime.FeedMessage.verify(positionsMessage) === null) {
|
|
292
|
-
const buffer = gtfsRealtime.FeedMessage.encode(positionsMessage).finish();
|
|
293
|
-
// save to Redis
|
|
294
|
-
yield this.gtfsRtModel.hset("vehicle_positions.pb", buffer.toString("binary"));
|
|
295
|
-
// await fs.writeFile("vehicle_positions.pb", buffer); // debug
|
|
296
|
-
yield this.gtfsRtModel.hset("vehicle_positions.json", JSON.stringify(positionsMessage));
|
|
297
|
-
}
|
|
298
|
-
yield this.gtfsRtAlertsController.generateGtfsRtAlerts(currentDate);
|
|
299
|
-
});
|
|
300
|
-
this.isUpdateDelayRunTripsIdsData = (data) => {
|
|
301
|
-
const { origin_route_name, sequence_id, gtfs_trip_id } = data;
|
|
302
|
-
return !!(origin_route_name && sequence_id && gtfs_trip_id);
|
|
303
|
-
};
|
|
304
|
-
this.mapDelayedPositionsToRunTrips = (processedPositions, updatedTrips) => {
|
|
305
|
-
const tripPositionMap = [];
|
|
306
|
-
for (const batch of processedPositions) {
|
|
307
|
-
if (batch.context.lastPositionTracking === null) {
|
|
308
|
-
continue;
|
|
309
|
-
}
|
|
310
|
-
const { properties: { state_position }, } = batch.context.lastPositionTracking;
|
|
311
|
-
if (state_position !== const_1.StatePositionEnum.ON_TRACK && state_position !== const_1.StatePositionEnum.AT_STOP) {
|
|
312
|
-
continue;
|
|
313
|
-
}
|
|
314
|
-
const trip = updatedTrips.find((el) => el.id === batch.context.tripId);
|
|
315
|
-
if (trip && this.isUpdateDelayRunTripsIdsData(trip)) {
|
|
316
|
-
tripPositionMap.push({
|
|
317
|
-
position: batch.context.lastPositionTracking,
|
|
318
|
-
trip: trip,
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
return tripPositionMap;
|
|
323
|
-
};
|
|
324
|
-
this.propagateDelayForGtfsTrip = (data) => __awaiter(this, void 0, void 0, function* () {
|
|
325
|
-
const results = yield this.modelTrips.getPropagateDelayTripsWithPositions(data);
|
|
326
|
-
if (!results.length)
|
|
327
|
-
return;
|
|
328
|
-
let turnTimeAcc = (+results[0].start_timestamp - moment_timezone_1.default.utc(data.currentEndTime).valueOf()) / 1000;
|
|
329
|
-
const positionsToUpdate = results.map((item, i) => {
|
|
330
|
-
turnTimeAcc += i > 0 ? (results[i].start_timestamp - results[i - 1].end_timestamp) / 1000 : 0;
|
|
331
|
-
return {
|
|
332
|
-
id: item.last_position_id,
|
|
333
|
-
delay: Math.max(0, data.currentDelay - turnTimeAcc),
|
|
334
|
-
state_position: const_1.StatePositionEnum.BEFORE_TRACK_DELAYED,
|
|
335
|
-
};
|
|
336
|
-
});
|
|
337
|
-
yield this.modelPositions.bulkUpdate(positionsToUpdate);
|
|
338
|
-
});
|
|
339
|
-
this.propagateDelay = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
340
|
-
var _a;
|
|
341
|
-
const inputData = JSON.parse(msg.content.toString());
|
|
342
|
-
const delayedPositionsWithRunTrips = this.mapDelayedPositionsToRunTrips(inputData.processedPositions, inputData.trips);
|
|
343
|
-
for (const delayedPositions of delayedPositionsWithRunTrips) {
|
|
344
|
-
const { origin_route_name, sequence_id, gtfs_trip_id, vehicle_registration_number, start_timestamp } = delayedPositions.trip;
|
|
345
|
-
const scheduledTrips = yield this.runTripsModel.get(`${origin_route_name}_${sequence_id}`);
|
|
346
|
-
if ((_a = scheduledTrips === null || scheduledTrips === void 0 ? void 0 : scheduledTrips.schedule) === null || _a === void 0 ? void 0 : _a.length) {
|
|
347
|
-
const gtfsCurrentTrip = scheduledTrips.schedule.find((trip) => trip.trip_id === gtfs_trip_id && (0, moment_timezone_1.default)(trip.start_timestamp).isSame((0, moment_timezone_1.default)(+start_timestamp), "seconds"));
|
|
348
|
-
const gtfsNextTrips = scheduledTrips.schedule.filter((trip) => {
|
|
349
|
-
return ((0, moment_timezone_1.default)(gtfsCurrentTrip.end_timestamp).clone().add(60, "minutes") >= (0, moment_timezone_1.default)(trip.start_timestamp) &&
|
|
350
|
-
(0, moment_timezone_1.default)(gtfsCurrentTrip.end_timestamp) <= (0, moment_timezone_1.default)(trip.start_timestamp));
|
|
351
|
-
});
|
|
352
|
-
yield this.propagateDelayForGtfsTrip({
|
|
353
|
-
currentGtfsTripId: gtfs_trip_id,
|
|
354
|
-
currentOriginTimestamp: delayedPositions.position.properties.origin_timestamp,
|
|
355
|
-
currentDelay: delayedPositions.position.properties.delay,
|
|
356
|
-
currentRegistrationNumber: vehicle_registration_number,
|
|
357
|
-
currentStartTime: gtfsCurrentTrip.start_timestamp,
|
|
358
|
-
currentEndTime: gtfsCurrentTrip.end_timestamp,
|
|
359
|
-
nextGtfsTrips: gtfsNextTrips.map((trip) => trip.trip_id),
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
});
|
|
364
|
-
this.updateDelay = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
365
|
-
var _b, _c;
|
|
366
|
-
const inputData = JSON.parse(msg.content.toString());
|
|
367
|
-
const tripIds = inputData.updatedTrips.map((trip) => trip.id);
|
|
368
|
-
if (((_b = inputData.positions) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
369
|
-
// unique ids in input data in key-value (id-positions) structure
|
|
370
|
-
let positionsByIds = {};
|
|
371
|
-
for (const position of inputData.positions) {
|
|
372
|
-
positionsByIds[position.trips_id] = position;
|
|
373
|
-
}
|
|
374
|
-
// unique block_ids and its parent input trips_id in key-value structure
|
|
375
|
-
let tripsIdsByBlockIds = {};
|
|
376
|
-
// unique block_ids and its parent gtfs_trip_id in key-value structure
|
|
377
|
-
let gtfsTripIdsByBlockIds = {};
|
|
378
|
-
for (const trip of inputData.updatedTrips) {
|
|
379
|
-
if (!trip.gtfs_block_id) {
|
|
380
|
-
continue;
|
|
381
|
-
}
|
|
382
|
-
if (!tripsIdsByBlockIds[trip.gtfs_block_id]) {
|
|
383
|
-
tripsIdsByBlockIds[trip.gtfs_block_id] = trip.id;
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
// save only the shorter trip_id (it is the raw input id with no suffixes)
|
|
387
|
-
tripsIdsByBlockIds[trip.gtfs_block_id] =
|
|
388
|
-
tripsIdsByBlockIds[trip.gtfs_block_id] > trip.id ? trip.id : tripsIdsByBlockIds[trip.gtfs_block_id];
|
|
389
|
-
}
|
|
390
|
-
if (!gtfsTripIdsByBlockIds[trip.gtfs_block_id]) {
|
|
391
|
-
gtfsTripIdsByBlockIds[trip.gtfs_block_id] = new Set();
|
|
392
|
-
}
|
|
393
|
-
if (trip.gtfs_trip_id) {
|
|
394
|
-
gtfsTripIdsByBlockIds[trip.gtfs_block_id].add(trip.gtfs_trip_id);
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
// Get cached schedule for each unique block_id
|
|
398
|
-
const tripStopsSchedulesByBlockIds = yield Object.entries(gtfsTripIdsByBlockIds).reduce((acc, [blockId, gtfsTripIds]) => __awaiter(this, void 0, void 0, function* () {
|
|
399
|
-
const tripStops = yield acc;
|
|
400
|
-
try {
|
|
401
|
-
const schedule = yield this.setAndReturnTripStopsSchedule(blockId, [...gtfsTripIds]);
|
|
402
|
-
tripStops[blockId] = schedule;
|
|
403
|
-
}
|
|
404
|
-
catch (err) {
|
|
405
|
-
helpers_1.IntegrationErrorHandler.handle(err);
|
|
406
|
-
}
|
|
407
|
-
return acc;
|
|
408
|
-
}), Promise.resolve({}));
|
|
409
|
-
// duplicate positions for trips with block_ids
|
|
410
|
-
for (const trip of inputData.updatedTrips) {
|
|
411
|
-
if (positionsByIds[trip.id]) {
|
|
412
|
-
if (trip.gtfs_block_id) {
|
|
413
|
-
// Determine current position tracking status
|
|
414
|
-
positionsByIds[trip.id].tracking = VehiclePositionsUtils_1.VehiclePositionsUtils.determineTrackingStatus(trip.gtfs_trip_id, tripStopsSchedulesByBlockIds[trip.gtfs_block_id], positionsByIds[trip.id]);
|
|
415
|
-
}
|
|
416
|
-
continue;
|
|
417
|
-
}
|
|
418
|
-
const currentPosition = inputData.positions.find((position) => {
|
|
419
|
-
return position.trips_id === tripsIdsByBlockIds[trip.gtfs_block_id];
|
|
420
|
-
});
|
|
421
|
-
if (!currentPosition) {
|
|
422
|
-
continue;
|
|
423
|
-
}
|
|
424
|
-
// Determine position duplication and new position tracking status
|
|
425
|
-
const newPositionTrackingStatus = VehiclePositionsUtils_1.VehiclePositionsUtils.determineNewPositionTracking(tripStopsSchedulesByBlockIds[trip.gtfs_block_id], trip, currentPosition);
|
|
426
|
-
// duplicate position with new created trip for second trip
|
|
427
|
-
const newPosition = Object.assign({}, currentPosition);
|
|
428
|
-
newPosition.trips_id = trip.id;
|
|
429
|
-
newPosition.tracking = newPositionTrackingStatus;
|
|
430
|
-
inputData.positions.push(newPosition);
|
|
431
|
-
}
|
|
432
|
-
// save all new positions
|
|
433
|
-
yield this.modelPositions.save(inputData.positions);
|
|
434
|
-
}
|
|
435
|
-
if (((_c = inputData.updatedTrips) === null || _c === void 0 ? void 0 : _c.length) > 0) {
|
|
436
|
-
try {
|
|
437
|
-
// Get all positions for each trip
|
|
438
|
-
const tripsPositionsToUpdate = yield this.modelPositions.getPositionsForUpdateDelay(tripIds);
|
|
439
|
-
// Append gtfs data to each trip
|
|
440
|
-
const tripsPositionsWithOrWithoutGTFSDataToUpdate = yield Promise.all(tripsPositionsToUpdate.map((trip) => __awaiter(this, void 0, void 0, function* () {
|
|
441
|
-
const gtfsData = (yield this.delayComputationTripsModel.get(trip.gtfs_trip_id));
|
|
442
|
-
return Object.assign(Object.assign({}, trip), { gtfsData });
|
|
443
|
-
})));
|
|
444
|
-
// Process every position
|
|
445
|
-
const processedPositions = yield Promise.all(tripsPositionsWithOrWithoutGTFSDataToUpdate.map((trip) => __awaiter(this, void 0, void 0, function* () {
|
|
446
|
-
// if gtfs shape points and schedules data is not ready, calculate it first
|
|
447
|
-
if (trip.gtfsData === null) {
|
|
448
|
-
helpers_1.log.debug("Delay Computation data (Redis) was not found. (gtfsTripId = " + trip.gtfs_trip_id + ")");
|
|
449
|
-
try {
|
|
450
|
-
const gtfs = yield this.getResultObjectForDelayCalculation(trip.gtfs_trip_id);
|
|
451
|
-
yield this.delayComputationTripsModel.set("trip_id", gtfs, VehiclePositionsUtils_1.VehiclePositionsUtils.DELAY_COMPUTATION_CACHE_TTL);
|
|
452
|
-
trip.gtfsData = gtfs;
|
|
453
|
-
}
|
|
454
|
-
catch (err) {
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
return PositionsManager_1.default.computePositions(trip, inputData.schedule);
|
|
459
|
-
})));
|
|
460
|
-
const validProcessedPositions = processedPositions.filter((e) => !!e);
|
|
461
|
-
yield this.updateComputedPositionsAndTrips(validProcessedPositions);
|
|
462
|
-
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".propagateDelay", JSON.stringify({
|
|
463
|
-
processedPositions: validProcessedPositions,
|
|
464
|
-
trips: inputData.updatedTrips,
|
|
465
|
-
}));
|
|
466
|
-
}
|
|
467
|
-
catch (err) {
|
|
468
|
-
throw new golemio_errors_1.CustomError(`Error while updating delay. For trip ids:${tripIds.slice(0, 10).join(",")}`, true, this.constructor.name, 5001, err);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
});
|
|
472
|
-
/**
|
|
473
|
-
* Queue listener method - triggers processing of TCP tram runs data
|
|
474
|
-
*
|
|
475
|
-
* @todo Move to RunsWorker after refactoring VehiclePositionsWorker
|
|
476
|
-
*/
|
|
477
|
-
this.saveTramRunsToDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
478
|
-
const { data, timestamp } = VehiclePositionsUtils_1.VehiclePositionsUtils.parseRunsMessageData(msg);
|
|
479
|
-
const transformedData = yield this.transformationRuns.transform({ data: data.M.V, timestamp }, true);
|
|
480
|
-
for (const element of transformedData) {
|
|
481
|
-
yield this.processTransformedRun(element);
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
/**
|
|
485
|
-
* Queue listener method - triggers processing of TCP bus runs data
|
|
486
|
-
*
|
|
487
|
-
* @todo Move to RunsWorker after refactoring VehiclePositionsWorker
|
|
488
|
-
*/
|
|
489
|
-
this.saveBusRunsToDB = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
490
|
-
var _d;
|
|
491
|
-
const { data, timestamp } = VehiclePositionsUtils_1.VehiclePositionsUtils.parseRunsMessageData(msg);
|
|
492
|
-
const transformedData = yield this.transformationRuns.transform({ data: data.M.V, timestamp });
|
|
493
|
-
for (const element of transformedData) {
|
|
494
|
-
// Internal bus lines should not interfere with tram runs
|
|
495
|
-
if (((_d = element.run.route_id) === null || _d === void 0 ? void 0 : _d.length) < 3) {
|
|
496
|
-
continue;
|
|
497
|
-
}
|
|
498
|
-
yield this.processTransformedRun(element);
|
|
499
|
-
}
|
|
500
|
-
});
|
|
501
|
-
/**
|
|
502
|
-
* Process not public trips from runs data
|
|
503
|
-
*
|
|
504
|
-
* @param {object} input
|
|
505
|
-
* @returns {void}
|
|
506
|
-
*/
|
|
507
|
-
this.updateNotPublicRunTrip = (input) => __awaiter(this, void 0, void 0, function* () {
|
|
508
|
-
const id = `NOT_PUBLIC_${input.run.route_id}_${input.run.run_number}_` +
|
|
509
|
-
`${input.run.msg_start_timestamp}_${input.run.registration_number}`;
|
|
510
|
-
const createdPosition = yield this.modelPositions.createNotPublic(input, id);
|
|
511
|
-
yield this.modelTrips.upsertNotPublic(input, id, createdPosition.toJSON().id);
|
|
512
|
-
return;
|
|
513
|
-
});
|
|
514
|
-
/**
|
|
515
|
-
* Queue listener method - processing trips from runs data
|
|
516
|
-
*
|
|
517
|
-
* @param {AMQPMessage} msg
|
|
518
|
-
* @returns {void}
|
|
519
|
-
*/
|
|
520
|
-
this.updateRunsGTFSTripId = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
521
|
-
const input = JSON.parse(msg.content.toString());
|
|
522
|
-
const schedule = yield this.gtfsTripRunManager.setAndReturnScheduledTrips(input.run);
|
|
523
|
-
if (schedule.length === 0) {
|
|
524
|
-
if (const_1.ArrayNotPublicRegistrationNumbers.includes(input.run.registration_number)) {
|
|
525
|
-
yield this.updateNotPublicRunTrip(input);
|
|
526
|
-
}
|
|
527
|
-
else {
|
|
528
|
-
helpers_1.log.verbose(`updateRunsGTFSTripId: no schedule for run: ${JSON.stringify(input.run)}`);
|
|
529
|
-
}
|
|
530
|
-
return;
|
|
531
|
-
}
|
|
532
|
-
if (!input.run_message.actual_stop_timestamp_scheduled) {
|
|
533
|
-
helpers_1.log.warn(`updateRunsGTFSTripId: actualStopTimestampScheduled is not provided for current run: ${JSON.stringify(input.run)}`);
|
|
534
|
-
return;
|
|
535
|
-
}
|
|
536
|
-
const delayMsg = yield this.gtfsTripRunManager.generateDelayMsg(schedule, input);
|
|
537
|
-
// send to updateDelay only if there are some trips updated
|
|
538
|
-
if (delayMsg.updatedTrips.length > 0) {
|
|
539
|
-
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".updateDelay", JSON.stringify(delayMsg));
|
|
540
|
-
}
|
|
541
|
-
});
|
|
542
|
-
/**
|
|
543
|
-
* Queue listener method - delete old data
|
|
544
|
-
*/
|
|
545
|
-
this.deleteOldVehiclePositionsData = (msg) => __awaiter(this, void 0, void 0, function* () {
|
|
546
|
-
let targetHours;
|
|
547
|
-
try {
|
|
548
|
-
targetHours = +JSON.parse(msg.content.toString()).targetHours;
|
|
549
|
-
// Target hours should be an integer
|
|
550
|
-
// Also disallow deletion of new data
|
|
551
|
-
if (!Number.isInteger(targetHours) || targetHours < 8) {
|
|
552
|
-
helpers_1.log.warn("New data cannot be deleted. Fallbacking to 8 hours");
|
|
553
|
-
targetHours = 8;
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
catch (err) {
|
|
557
|
-
throw new golemio_errors_1.CustomError("Error while parsing cron message", true, this.constructor.name, 5050, err);
|
|
558
|
-
}
|
|
559
|
-
// TODO Move model runs deletion to RunsWorker's DeleteDataTask after refactoring VehiclePositionsWorker
|
|
560
|
-
yield this.modelRuns.deleteNHoursOldData(targetHours);
|
|
561
|
-
yield this.modelTrips.deleteNHoursOldData(targetHours);
|
|
562
|
-
yield this.modelPositions.deleteNHoursOldData(targetHours);
|
|
563
|
-
yield this.modelTripsHistory.deleteNHoursOldData(targetHours);
|
|
564
|
-
yield this.modelPositionsHistory.deleteNHoursOldData(targetHours);
|
|
565
|
-
});
|
|
566
|
-
/**
|
|
567
|
-
* Create/update and process transformed run
|
|
568
|
-
*/
|
|
569
|
-
this.processTransformedRun = (element) => __awaiter(this, void 0, void 0, function* () {
|
|
570
|
-
const record = yield this.modelRuns.getRunRecordForUpdate(element.run);
|
|
571
|
-
let outputMsg;
|
|
572
|
-
if (record) {
|
|
573
|
-
if (!element.run_message.actual_stop_timestamp_scheduled) {
|
|
574
|
-
const lastRecordMessage = yield this.modelRuns["runsMessagesModel"].getLastMessage(record.id);
|
|
575
|
-
if (!lastRecordMessage || !lastRecordMessage.actual_stop_timestamp_scheduled)
|
|
576
|
-
return;
|
|
577
|
-
element.run_message.actual_stop_timestamp_scheduled = lastRecordMessage.actual_stop_timestamp_scheduled;
|
|
578
|
-
}
|
|
579
|
-
outputMsg = yield this.modelRuns.updateAndAssociate(element, record.id);
|
|
580
|
-
}
|
|
581
|
-
else {
|
|
582
|
-
outputMsg = yield this.modelRuns.createAndAssociate(element);
|
|
583
|
-
}
|
|
584
|
-
yield this.sendMessageToExchange("workers." + this.queuePrefix + ".updateRunsGTFSTripId", JSON.stringify(outputMsg));
|
|
585
|
-
});
|
|
586
|
-
/**
|
|
587
|
-
* Get trip stops schedule by block id
|
|
588
|
-
*
|
|
589
|
-
* @param {string} blockId - Target gtfs block id
|
|
590
|
-
* @param {string} tripIds - List of inserted gtfs trip ids
|
|
591
|
-
*/
|
|
592
|
-
this.setAndReturnTripStopsSchedule = (blockId, tripIds) => __awaiter(this, void 0, void 0, function* () {
|
|
593
|
-
const schedule = yield this.tripStopsModel.get(blockId);
|
|
594
|
-
if (schedule) {
|
|
595
|
-
return schedule;
|
|
596
|
-
}
|
|
597
|
-
try {
|
|
598
|
-
const tripStops = yield this.modelGTFSStopTimes.findTripStops(tripIds);
|
|
599
|
-
const tripStopsSchedule = tripStops.reduce((acc, curr) => {
|
|
600
|
-
acc[curr.trip_id] = { trip_stops: curr.trip_stops };
|
|
601
|
-
return acc;
|
|
602
|
-
}, {});
|
|
603
|
-
yield this.tripStopsModel.set(blockId, tripStopsSchedule, undefined, VehiclePositionsUtils_1.VehiclePositionsUtils.getNextExpireTimestamp());
|
|
604
|
-
return tripStopsSchedule;
|
|
605
|
-
}
|
|
606
|
-
catch (err) {
|
|
607
|
-
helpers_1.log.warn("Unable to retrieve trip stops", err);
|
|
608
|
-
return {};
|
|
609
|
-
}
|
|
610
|
-
});
|
|
611
|
-
/**
|
|
612
|
-
* Takes all newly computed positions and saves it, then save the last ones to the trips
|
|
613
|
-
*
|
|
614
|
-
* @param {IProcessedPositions[]} computedResult - Arrays of all newly computed positions
|
|
615
|
-
* @returns {Object[]} - Arrays of inserted/updated positions and array of (inserted)/updated trips
|
|
616
|
-
*/
|
|
617
|
-
this.updateComputedPositionsAndTrips = (computedResult) => __awaiter(this, void 0, void 0, function* () {
|
|
618
|
-
const positionsUpdated = yield this.modelPositions.bulkUpdate(computedResult.flatMap((e) => e.positions));
|
|
619
|
-
const tripsUpdated = yield this.modelTrips.bulkUpdate(computedResult.map((e) => ({
|
|
620
|
-
id: e.context.tripId,
|
|
621
|
-
last_position_id: e.context.lastPositionId,
|
|
622
|
-
last_position_context: e.context,
|
|
623
|
-
is_canceled: e.context.lastPositionCanceled,
|
|
624
|
-
})));
|
|
625
|
-
return {
|
|
626
|
-
positionsUpdated,
|
|
627
|
-
tripsUpdated,
|
|
628
|
-
};
|
|
629
|
-
});
|
|
630
|
-
/**
|
|
631
|
-
* Returns shape anchor points along trip track shape with stop times parameters
|
|
632
|
-
*
|
|
633
|
-
* @param {string} tripId - Internal DB trip id
|
|
634
|
-
* @returns {IComputationTrip} - Result with shape anchor points
|
|
635
|
-
*/
|
|
636
|
-
this.getResultObjectForDelayCalculation = (tripId) => __awaiter(this, void 0, void 0, function* () {
|
|
637
|
-
try {
|
|
638
|
-
const stopTimes = yield this.modelGTFSTrips.findByIdWithStopTimes(tripId);
|
|
639
|
-
const shapes = yield this.modelGTFSTrips.findByIdWithShapes(tripId);
|
|
640
|
-
if (!shapes || !shapes.shape_id || !shapes.shapes || shapes.shapes.length === 0) {
|
|
641
|
-
throw new Error(`"trip.shape_id" or "trip.shapes" was not found for id ${tripId}.`);
|
|
642
|
-
}
|
|
643
|
-
if (!stopTimes || !stopTimes.stop_times || stopTimes.stop_times.length === 0) {
|
|
644
|
-
throw new Error(`"trip.stop_times" was not found for id ${tripId}.`);
|
|
645
|
-
}
|
|
646
|
-
const shapesGeometryAnchorPoints = this.getShapesGeometryAnchorPoints(stopTimes.shape_id, shapes.shapes, stopTimes.stop_times);
|
|
647
|
-
// MAKING COPY
|
|
648
|
-
const shapePoints = [];
|
|
649
|
-
// const to determine shape points of stops (in meters)
|
|
650
|
-
const distanceBefore = 0.1;
|
|
651
|
-
const distanceAfter = 0.05;
|
|
652
|
-
for (let i = 0; i < shapesGeometryAnchorPoints.length; i++) {
|
|
653
|
-
let bearing = 0;
|
|
654
|
-
// add bearing from shape computed for previous shapePoint
|
|
655
|
-
if (i > 0) {
|
|
656
|
-
// compute bearing from two shape points
|
|
657
|
-
let shapePointBearing = Math.round(turf.bearing(turf.point(shapesGeometryAnchorPoints[i - 1].coordinates), turf.point(shapesGeometryAnchorPoints[i].coordinates)));
|
|
658
|
-
// turf.bearing returns -180 to 180, when 0 is north
|
|
659
|
-
// we need 0 to 359, for negative value we substract from 360
|
|
660
|
-
if (shapePointBearing < 0) {
|
|
661
|
-
shapePointBearing = 360 - Math.abs(shapePointBearing);
|
|
662
|
-
}
|
|
663
|
-
// save bearing
|
|
664
|
-
shapePoints[i - 1].bearing = shapePointBearing;
|
|
665
|
-
// for the last shapePoint copy the bearing from last one
|
|
666
|
-
if (shapesGeometryAnchorPoints.length - 1 === i) {
|
|
667
|
-
bearing = shapePoints[i - 1].bearing;
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
// init values
|
|
671
|
-
let thisStopSequence = null;
|
|
672
|
-
let lastStopSequence = shapesGeometryAnchorPoints[i].last_stop_sequence;
|
|
673
|
-
let nextStopSequence = shapesGeometryAnchorPoints[i].next_stop_sequence;
|
|
674
|
-
// these are origin stop_times shape point fron shapes table, clearly at stops points
|
|
675
|
-
if (shapesGeometryAnchorPoints[i].this_stop_sequence) {
|
|
676
|
-
thisStopSequence = shapesGeometryAnchorPoints[i].this_stop_sequence;
|
|
677
|
-
}
|
|
678
|
-
// if is shape anchor point in close distance AFTER LAST stop, then set it also AT STOP
|
|
679
|
-
else if (i > 0 &&
|
|
680
|
-
shapesGeometryAnchorPoints[i].shape_dist_traveled -
|
|
681
|
-
stopTimes.stop_times[shapesGeometryAnchorPoints[i].last_stop_sequence - 1].shape_dist_traveled <=
|
|
682
|
-
distanceAfter) {
|
|
683
|
-
thisStopSequence = shapesGeometryAnchorPoints[i].last_stop_sequence;
|
|
684
|
-
}
|
|
685
|
-
// if is shape anchor point in close distance BEFORE NEXT stop, then set it also AT STOP
|
|
686
|
-
else if (i < shapesGeometryAnchorPoints.length - 1 &&
|
|
687
|
-
stopTimes.stop_times[shapesGeometryAnchorPoints[i].next_stop_sequence - 1].shape_dist_traveled -
|
|
688
|
-
shapesGeometryAnchorPoints[i].shape_dist_traveled <=
|
|
689
|
-
distanceBefore) {
|
|
690
|
-
thisStopSequence = shapesGeometryAnchorPoints[i].next_stop_sequence;
|
|
691
|
-
lastStopSequence = shapesGeometryAnchorPoints[i].next_stop_sequence;
|
|
692
|
-
nextStopSequence = Math.min(shapesGeometryAnchorPoints[i].next_stop_sequence + 1, stopTimes.stop_times.length);
|
|
693
|
-
}
|
|
694
|
-
const distanceFromLastStop = Math.round((shapesGeometryAnchorPoints[i].shape_dist_traveled -
|
|
695
|
-
stopTimes.stop_times[lastStopSequence - 1].shape_dist_traveled) *
|
|
696
|
-
1000) / 1000;
|
|
697
|
-
// if is trip at stop than set departure by this stop
|
|
698
|
-
// between stops do linear interpolation from departure from last stop and arrival of next stop
|
|
699
|
-
const timeScheduledSeconds = thisStopSequence !== null
|
|
700
|
-
? stopTimes.stop_times[lastStopSequence - 1].arrival_time_seconds
|
|
701
|
-
: stopTimes.stop_times[lastStopSequence - 1].departure_time_seconds +
|
|
702
|
-
Math.round(((stopTimes.stop_times[nextStopSequence - 1].arrival_time_seconds -
|
|
703
|
-
stopTimes.stop_times[lastStopSequence - 1].departure_time_seconds) *
|
|
704
|
-
distanceFromLastStop) /
|
|
705
|
-
(stopTimes.stop_times[nextStopSequence - 1].shape_dist_traveled -
|
|
706
|
-
stopTimes.stop_times[lastStopSequence - 1].shape_dist_traveled));
|
|
707
|
-
shapePoints.push({
|
|
708
|
-
index: i,
|
|
709
|
-
at_stop: thisStopSequence !== null,
|
|
710
|
-
bearing,
|
|
711
|
-
coordinates: shapesGeometryAnchorPoints[i].coordinates,
|
|
712
|
-
distance_from_last_stop: distanceFromLastStop,
|
|
713
|
-
last_stop_sequence: lastStopSequence,
|
|
714
|
-
next_stop_sequence: nextStopSequence,
|
|
715
|
-
shape_dist_traveled: Math.round(shapesGeometryAnchorPoints[i].shape_dist_traveled * 100000) / 100000,
|
|
716
|
-
this_stop_sequence: thisStopSequence,
|
|
717
|
-
time_scheduled_seconds: timeScheduledSeconds,
|
|
718
|
-
});
|
|
719
|
-
}
|
|
720
|
-
return {
|
|
721
|
-
trip_id: tripId,
|
|
722
|
-
stop_times: stopTimes.stop_times,
|
|
723
|
-
shapes_anchor_points: shapePoints,
|
|
724
|
-
};
|
|
725
|
-
}
|
|
726
|
-
catch (err) {
|
|
727
|
-
helpers_1.log.error(err);
|
|
728
|
-
throw new golemio_errors_1.CustomError("Error while getting object for delay calculation (trip_id=" + tripId + ").", true, undefined, undefined, err);
|
|
729
|
-
}
|
|
730
|
-
});
|
|
731
|
-
/**
|
|
732
|
-
* Returns geometry of anchor points with distance from start along trip track shape
|
|
733
|
-
*
|
|
734
|
-
* @param {string} shapeId - GTFS shape id
|
|
735
|
-
* @param {ITransformedTripShape[]} shapes - GTFS shape points
|
|
736
|
-
* @param {IStopTime[]} stops
|
|
737
|
-
* @returns {IShapeGeometryAnchorPoint[]} - Result array of geometry points along trip track shape
|
|
738
|
-
*/
|
|
739
|
-
this.getShapesGeometryAnchorPoints = (shapeId, shapes, stops) => {
|
|
740
|
-
try {
|
|
741
|
-
let segmentShapes = [];
|
|
742
|
-
// Splits shapes array to multiple arrays "delimited" by stops
|
|
743
|
-
for (let st = 0; st < stops.length; st++) {
|
|
744
|
-
let currentSegment = [];
|
|
745
|
-
for (let sh = 0; sh < shapes.length; sh++) {
|
|
746
|
-
let shapePoint = Object.assign(Object.assign({}, shapes[sh]), { shape_at_stop: false });
|
|
747
|
-
if (stops[st].shape_dist_traveled === shapes[sh].shape_dist_traveled) {
|
|
748
|
-
shapePoint.shape_at_stop = true;
|
|
749
|
-
}
|
|
750
|
-
if (st < stops.length - 1 &&
|
|
751
|
-
shapePoint.shape_dist_traveled >= stops[st].shape_dist_traveled &&
|
|
752
|
-
shapePoint.shape_dist_traveled <= stops[st + 1].shape_dist_traveled) {
|
|
753
|
-
currentSegment.push(shapePoint);
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
if (currentSegment.length) {
|
|
757
|
-
segmentShapes.push(currentSegment);
|
|
758
|
-
}
|
|
759
|
-
}
|
|
760
|
-
let segmentArr = [];
|
|
761
|
-
// concat arrays of stop divided segments with distributed shape points
|
|
762
|
-
for (const segment of segmentShapes) {
|
|
763
|
-
segmentArr = [...segmentArr, ...this.divideSegmentLine(segment)];
|
|
764
|
-
}
|
|
765
|
-
// Make initial shapesGeometryAnchorPoints
|
|
766
|
-
let stopCounter = 0;
|
|
767
|
-
const resultArr = segmentArr.map((segment, index) => {
|
|
768
|
-
let this_stop_sequence;
|
|
769
|
-
let last_stop_sequence;
|
|
770
|
-
let next_stop_sequence;
|
|
771
|
-
if (segment.shape_at_stop) {
|
|
772
|
-
stopCounter++;
|
|
773
|
-
this_stop_sequence = stopCounter;
|
|
774
|
-
}
|
|
775
|
-
else {
|
|
776
|
-
this_stop_sequence = null;
|
|
777
|
-
}
|
|
778
|
-
last_stop_sequence = stopCounter;
|
|
779
|
-
next_stop_sequence = stopCounter + 1;
|
|
780
|
-
return {
|
|
781
|
-
index,
|
|
782
|
-
coordinates: [
|
|
783
|
-
Math.round(segment.shape_pt_lon * 100000) / 100000,
|
|
784
|
-
Math.round(segment.shape_pt_lat * 100000) / 100000,
|
|
785
|
-
],
|
|
786
|
-
last_stop_sequence,
|
|
787
|
-
next_stop_sequence,
|
|
788
|
-
shape_dist_traveled: Math.round(segment.shape_dist_traveled * 1000) / 1000,
|
|
789
|
-
this_stop_sequence,
|
|
790
|
-
};
|
|
791
|
-
});
|
|
792
|
-
stopCounter++;
|
|
793
|
-
// and lastly shape point for last stop as there is no segment for last stop
|
|
794
|
-
resultArr.push({
|
|
795
|
-
index: resultArr.length,
|
|
796
|
-
coordinates: [
|
|
797
|
-
Math.round(shapes[shapes.length - 1].shape_pt_lon * 100000) / 100000,
|
|
798
|
-
Math.round(shapes[shapes.length - 1].shape_pt_lat * 100000) / 100000,
|
|
799
|
-
],
|
|
800
|
-
last_stop_sequence: stopCounter,
|
|
801
|
-
next_stop_sequence: stopCounter,
|
|
802
|
-
shape_dist_traveled: Math.round(shapes[shapes.length - 1].shape_dist_traveled * 1000) / 1000,
|
|
803
|
-
this_stop_sequence: stopCounter,
|
|
804
|
-
});
|
|
805
|
-
return resultArr;
|
|
806
|
-
}
|
|
807
|
-
catch (err) {
|
|
808
|
-
helpers_1.log.error(err);
|
|
809
|
-
helpers_1.log.error(shapeId);
|
|
810
|
-
return [];
|
|
811
|
-
}
|
|
812
|
-
};
|
|
813
|
-
/**
|
|
814
|
-
* Generates new shape points from segment of trip shape along original one
|
|
815
|
-
* - preserving start and end shape points belonging to stops
|
|
816
|
-
* - creates new set of shape points between stops to get same point distance along original shape
|
|
817
|
-
*
|
|
818
|
-
* @param {ISegmentShape[]} segmentsArr - Original shape points segment between two stops
|
|
819
|
-
* @param {number} distance - Minimal distance for two consequent shape points
|
|
820
|
-
* @returns {ISegmentShape[]} - Result array of new shape points
|
|
821
|
-
*/
|
|
822
|
-
this.divideSegmentLine = (segmentArr, distance = config_1.config.vehiclePositions.stepBetweenPoints) => {
|
|
823
|
-
const shapeId = segmentArr[0].shape_id;
|
|
824
|
-
const shapeCount = segmentArr.length;
|
|
825
|
-
const startShapeDistTraveled = segmentArr[0].shape_dist_traveled;
|
|
826
|
-
const endShapeDistTraveled = segmentArr[shapeCount - 1].shape_dist_traveled;
|
|
827
|
-
const shapeDistLength = endShapeDistTraveled - startShapeDistTraveled;
|
|
828
|
-
const segmentLine = turf.lineString(segmentArr.map((s) => {
|
|
829
|
-
return [s.shape_pt_lon, s.shape_pt_lat];
|
|
830
|
-
}));
|
|
831
|
-
// because we dont believe source shape distances, rather compute length with turf.js
|
|
832
|
-
const segmentLength = turf.length(segmentLine);
|
|
833
|
-
const middlePointsCount = Math.floor(segmentLength / distance);
|
|
834
|
-
const distanceOffset = (segmentLength - distance * middlePointsCount) / 2;
|
|
835
|
-
// put first shape point
|
|
836
|
-
const resultSegmentPoints = [
|
|
837
|
-
Object.assign(Object.assign({}, segmentArr[0]), { shape_pt_sequence: 1 }),
|
|
838
|
-
];
|
|
839
|
-
// for each middle point create acording shape point with interpolated origin shape dist traveled
|
|
840
|
-
for (let i = 0; i < middlePointsCount; i++) {
|
|
841
|
-
const currentDistance = i * distance + distanceOffset;
|
|
842
|
-
const currentDistDistance = (shapeDistLength / segmentLength) * currentDistance;
|
|
843
|
-
const newPoint = turf.along(segmentLine, i * distance + distanceOffset);
|
|
844
|
-
resultSegmentPoints.push({
|
|
845
|
-
shape_id: shapeId,
|
|
846
|
-
shape_at_stop: false,
|
|
847
|
-
shape_pt_sequence: resultSegmentPoints.length + 1,
|
|
848
|
-
shape_pt_lat: newPoint.geometry.coordinates[1],
|
|
849
|
-
shape_pt_lon: newPoint.geometry.coordinates[0],
|
|
850
|
-
shape_dist_traveled: startShapeDistTraveled + currentDistDistance,
|
|
851
|
-
});
|
|
852
|
-
}
|
|
853
|
-
return resultSegmentPoints;
|
|
854
|
-
};
|
|
855
|
-
this.modelPositions = new models_2.VehiclePositionsPositionsModel();
|
|
856
|
-
this.modelPositionsHistory = new VehiclePositionsPositionsHistoryModel_1.VehiclePositionsPositionsHistoryModel();
|
|
857
|
-
this.modelRuns = new models_2.VehiclePositionsRunsModel();
|
|
858
|
-
this.transformationRuns = new transformations_1.VehiclePositionsRunsTransformation();
|
|
859
|
-
this.modelTrips = new models_2.VehiclePositionsTripsModel();
|
|
860
|
-
this.modelTripsHistory = new VehiclePositionsTripsHistoryModel_1.VehiclePositionsTripsHistoryModel();
|
|
861
|
-
this.transformation = new transformations_1.VehiclePositionsTransformation();
|
|
862
|
-
this.delayComputationTripsModel = new models_1.RedisModel(ropid_gtfs_1.RopidGTFS.delayComputationTrips.name + "Model", {
|
|
863
|
-
decodeDataAfterGet: JSON.parse,
|
|
864
|
-
encodeDataBeforeSave: JSON.stringify,
|
|
865
|
-
isKeyConstructedFromData: true,
|
|
866
|
-
prefix: ropid_gtfs_1.RopidGTFS.delayComputationTrips.mongoCollectionName,
|
|
867
|
-
}, new golemio_validator_1.Validator(ropid_gtfs_1.RopidGTFS.delayComputationTrips.name + "ModelValidator", ropid_gtfs_1.RopidGTFS.delayComputationTrips.outputMongooseSchemaObject));
|
|
868
|
-
this.runTripsModel = new RunTripsRedisRepository_1.RunTripsRedisRepository();
|
|
869
|
-
this.queuePrefix = config_1.config.RABBIT_EXCHANGE_NAME + "." + vehicle_positions_1.VehiclePositions.name.toLowerCase();
|
|
870
|
-
this.gtfsRtModel = new models_1.RedisModel("GTFSRealTimeModel", {
|
|
871
|
-
isKeyConstructedFromData: false,
|
|
872
|
-
prefix: "files:gtfsRt",
|
|
873
|
-
});
|
|
874
|
-
this.tripStopsModel = new models_1.RedisModel(vehicle_positions_1.VehiclePositions.tripStops.name + "Model", {
|
|
875
|
-
decodeDataAfterGet: JSON.parse,
|
|
876
|
-
encodeDataBeforeSave: JSON.stringify,
|
|
877
|
-
isKeyConstructedFromData: false,
|
|
878
|
-
prefix: vehicle_positions_1.VehiclePositions.tripStops.namespacePrefix,
|
|
879
|
-
}, new golemio_validator_1.Validator(vehicle_positions_1.VehiclePositions.tripStops.name + "ModelValidator", vehicle_positions_1.VehiclePositions.tripStops.outputMongooseSchemaObject));
|
|
880
|
-
this.modelGTFSTrips = new RopidGTFSTripsModel_1.RopidGTFSTripsModel();
|
|
881
|
-
this.modelGTFSStopTimes = new RopidGTFSStopTimesModel_1.RopidGTFSStopTimesModel();
|
|
882
|
-
this.gtfsRtAlertsController = new GtfsRtAlertsController_1.GtfsRtAlertsController(this.gtfsRtModel, new ropid_vymi_1.RopidVYMIEventsModel(), new GtfsRtAlertTransformation_1.GtfsRtAlertTransformation(new ropid_vymi_1.RopidVYMIEventsRoutesModel()));
|
|
883
|
-
this.gtfsTripRunManager = GTFSTripRunManagerFactory_1.GTFSTripRunManagerFactory.create(GTFSTripRunManagerFactory_1.GTFSTripRunType.Common, this.modelPositions, this.modelTrips, this.modelRuns, this.runTripsModel);
|
|
884
|
-
}
|
|
885
|
-
}
|
|
886
|
-
exports.VehiclePositionsWorker = VehiclePositionsWorker;
|
|
887
|
-
//# sourceMappingURL=VehiclePositionsWorker.js.map
|