@golemio/pid 2.9.1 → 2.9.2-dev.1019504900

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/db/example/10_cancelledTrip_example.sql +1 -1
  2. package/db/migrations/postgresql/20230913112258-departure-boards-optimalization.js +53 -0
  3. package/db/migrations/postgresql/20230918090449-regional-bus-positions.js +53 -0
  4. package/db/migrations/postgresql/sqls/20230913112258-departure-boards-optimalization-down.sql +2 -0
  5. package/db/migrations/postgresql/sqls/20230913112258-departure-boards-optimalization-up.sql +253 -0
  6. package/db/migrations/postgresql/sqls/20230918090449-regional-bus-positions-down.sql +16 -0
  7. package/db/migrations/postgresql/sqls/20230918090449-regional-bus-positions-up.sql +16 -0
  8. package/dist/const.d.ts +3 -0
  9. package/dist/const.js +5 -1
  10. package/dist/const.js.map +1 -1
  11. package/dist/integration-engine/ropid-gtfs/data-access/RouteSubAgencyRepository.d.ts +6 -0
  12. package/dist/integration-engine/ropid-gtfs/data-access/RouteSubAgencyRepository.js +45 -0
  13. package/dist/integration-engine/ropid-gtfs/data-access/RouteSubAgencyRepository.js.map +1 -0
  14. package/dist/integration-engine/ropid-gtfs/data-access/RunNumberRepository.d.ts +4 -0
  15. package/dist/integration-engine/ropid-gtfs/data-access/RunNumberRepository.js +19 -0
  16. package/dist/integration-engine/ropid-gtfs/data-access/RunNumberRepository.js.map +1 -0
  17. package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.d.ts +1 -0
  18. package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js +3 -0
  19. package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js.map +1 -1
  20. package/dist/integration-engine/vehicle-positions/ioc/Di.js +24 -0
  21. package/dist/integration-engine/vehicle-positions/ioc/Di.js.map +1 -1
  22. package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.d.ts +11 -0
  23. package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js +15 -0
  24. package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js.map +1 -1
  25. package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js +6 -4
  26. package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js.map +1 -1
  27. package/dist/integration-engine/vehicle-positions/workers/runs/constants.d.ts +1 -0
  28. package/dist/integration-engine/vehicle-positions/workers/runs/constants.js +5 -0
  29. package/dist/integration-engine/vehicle-positions/workers/runs/constants.js.map +1 -0
  30. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js +1 -1
  31. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js.map +1 -1
  32. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/RegionalBusRunsMessagesRepository.js +16 -3
  33. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/RegionalBusRunsMessagesRepository.js.map +1 -1
  34. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusCisCacheRepository.js +18 -4
  35. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusCisCacheRepository.js.map +1 -1
  36. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusGtfsCacheRepository.d.ts +5 -0
  37. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusGtfsCacheRepository.js +33 -0
  38. package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusGtfsCacheRepository.js.map +1 -0
  39. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/CisLookupManager.d.ts +3 -2
  40. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/CisLookupManager.js +28 -10
  41. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/CisLookupManager.js.map +1 -1
  42. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/GtfsLookupManager.d.ts +10 -0
  43. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/GtfsLookupManager.js +76 -0
  44. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/GtfsLookupManager.js.map +1 -0
  45. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.d.ts +5 -1
  46. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.js +40 -9
  47. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.js.map +1 -1
  48. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusRunsFacade.d.ts +9 -5
  49. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusRunsFacade.js +29 -11
  50. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusRunsFacade.js.map +1 -1
  51. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/TripScheduleManager.d.ts +10 -0
  52. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/TripScheduleManager.js +61 -0
  53. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/TripScheduleManager.js.map +1 -0
  54. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IExtendedSchedule.d.ts +8 -0
  55. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IExtendedSchedule.js +3 -0
  56. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IExtendedSchedule.js.map +1 -0
  57. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IGtfsLookupManager.d.ts +6 -0
  58. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IGtfsLookupManager.js +3 -0
  59. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IGtfsLookupManager.js.map +1 -0
  60. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/ITripScheduleManager.d.ts +7 -0
  61. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/ITripScheduleManager.js +3 -0
  62. package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/ITripScheduleManager.js.map +1 -0
  63. package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessRegionalBusRunMessagesInput.d.ts +9 -0
  64. package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessRegionalBusRunMessagesInput.js +3 -0
  65. package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessRegionalBusRunMessagesInput.js.map +1 -0
  66. package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IRegionalBusRunInputWithMetadata.d.ts +7 -0
  67. package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IRegionalBusRunInputWithMetadata.js +3 -0
  68. package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IRegionalBusRunInputWithMetadata.js.map +1 -0
  69. package/dist/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusTransformedRunsSchema.d.ts +4 -0
  70. package/dist/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusTransformedRunsSchema.js +63 -0
  71. package/dist/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusTransformedRunsSchema.js.map +1 -0
  72. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessRegionalBusRunMessagesTask.d.ts +22 -0
  73. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessRegionalBusRunMessagesTask.js +128 -0
  74. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessRegionalBusRunMessagesTask.js.map +1 -0
  75. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/{SaveArrivaCityRunsToDB.d.ts → SaveArrivaCityRunsToDBTask.d.ts} +4 -3
  76. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDBTask.js +57 -0
  77. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDBTask.js.map +1 -0
  78. package/dist/integration-engine/vehicle-positions/workers/runs/transformations/RegionalBusRunsMessagesTransformation.js +14 -5
  79. package/dist/integration-engine/vehicle-positions/workers/runs/transformations/RegionalBusRunsMessagesTransformation.js.map +1 -1
  80. package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.d.ts +3 -0
  81. package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.js +16 -0
  82. package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.js.map +1 -1
  83. package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/transformations/DescriptorTransformation.js +1 -0
  84. package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/transformations/DescriptorTransformation.js.map +1 -1
  85. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js +2 -0
  86. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js.map +1 -1
  87. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.d.ts +1 -1
  88. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js +2 -2
  89. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js.map +1 -1
  90. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.d.ts +1 -1
  91. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +9 -8
  92. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
  93. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.d.ts +2 -0
  94. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js +15 -0
  95. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js.map +1 -1
  96. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.d.ts +5 -0
  97. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.js +8 -0
  98. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.js.map +1 -1
  99. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.d.ts +3 -1
  100. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.js +3 -0
  101. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.js.map +1 -1
  102. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ProviderSourceTypeEnum.d.ts +2 -1
  103. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ProviderSourceTypeEnum.js +1 -0
  104. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ProviderSourceTypeEnum.js.map +1 -1
  105. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.d.ts +6 -2
  106. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js +16 -1
  107. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js.map +1 -1
  108. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js +2 -3
  109. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js.map +1 -1
  110. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js +2 -3
  111. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js.map +1 -1
  112. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.d.ts +81 -0
  113. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +442 -0
  114. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -0
  115. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.d.ts +14 -0
  116. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.js +26 -0
  117. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.js.map +1 -0
  118. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.d.ts +9 -0
  119. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.js +48 -0
  120. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.js.map +1 -0
  121. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/FactoryDelayAtStop.d.ts +9 -0
  122. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/FactoryDelayAtStop.js +24 -0
  123. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/FactoryDelayAtStop.js.map +1 -0
  124. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/gtfs-trip-run/GtfsTripRegionalBusRunManager.d.ts +12 -0
  125. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/gtfs-trip-run/GtfsTripRegionalBusRunManager.js +90 -0
  126. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/gtfs-trip-run/GtfsTripRegionalBusRunManager.js.map +1 -0
  127. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +4 -3
  128. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.d.ts +17 -0
  129. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js +110 -0
  130. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js.map +1 -0
  131. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.js +2 -2
  132. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.js.map +1 -1
  133. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.d.ts +6 -0
  134. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.js +19 -2
  135. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.js.map +1 -1
  136. package/dist/output-gateway/pid/data-access/DeparturesRepository.d.ts +4 -6
  137. package/dist/output-gateway/pid/data-access/DeparturesRepository.js +46 -216
  138. package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -1
  139. package/dist/output-gateway/pid/index.d.ts +22 -59
  140. package/dist/output-gateway/pid/index.js.map +1 -1
  141. package/dist/schema-definitions/vehicle-descriptors/datasources/SeznamAutobusuJsonSchema.js +1 -0
  142. package/dist/schema-definitions/vehicle-descriptors/datasources/SeznamAutobusuJsonSchema.js.map +1 -1
  143. package/dist/schema-definitions/vehicle-descriptors/datasources/interfaces/IVehicleListInfo.d.ts +1 -0
  144. package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.d.ts +1 -0
  145. package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.js +3 -0
  146. package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.js.map +1 -1
  147. package/dist/schema-definitions/vehicle-descriptors/models/interfaces/IDescriptorOutputDto.d.ts +1 -0
  148. package/dist/schema-definitions/vehicle-positions/models/RegionalBusRunsMessagesModel.d.ts +2 -2
  149. package/dist/schema-definitions/vehicle-positions/models/RegionalBusRunsMessagesModel.js +6 -6
  150. package/dist/schema-definitions/vehicle-positions/models/RegionalBusRunsMessagesModel.js.map +1 -1
  151. package/dist/schema-definitions/vehicle-positions/models/interfaces/IRegionalBusRunsMessagesModel.d.ts +3 -3
  152. package/dist/schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes.d.ts +2 -2
  153. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto.d.ts +3 -0
  154. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusCisCacheDto.d.ts +2 -2
  155. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusGtfsCacheDto.d.ts +7 -0
  156. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusGtfsCacheDto.js +3 -0
  157. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusGtfsCacheDto.js.map +1 -0
  158. package/dist/schema-definitions/vehicle-positions/redis/schemas/GtfsRunTripCacheDtoSchema.js +6 -0
  159. package/dist/schema-definitions/vehicle-positions/redis/schemas/GtfsRunTripCacheDtoSchema.js.map +1 -1
  160. package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusCisCacheDtoSchema.js +4 -4
  161. package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusCisCacheDtoSchema.js.map +1 -1
  162. package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusGtfsCacheDtoSchema.d.ts +4 -0
  163. package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusGtfsCacheDtoSchema.js +36 -0
  164. package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusGtfsCacheDtoSchema.js.map +1 -0
  165. package/docs/implementation_documentation.md +40 -2
  166. package/package.json +2 -2
  167. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDB.js +0 -37
  168. package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GTFSTripMetroRunManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GTFSTripMetroRunManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { IVPTripsLastPositionContext } from "../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
2
+ import { IPositionToUpdate, IProcessedPositions, ITripPositionsWithGTFS, IUpdatePositionsIteratorOptions } from "../../interfaces/VPInterfaces";
3
+ export declare class RegionalBusPositionsManager {
4
+ /**
5
+ * Compute positions and return computed positions
6
+ *
7
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
8
+ * @returns {Promise<IProcessedPositions>} - Returns computed/updated positions
9
+ */
10
+ static computePositions: (tripPositions: ITripPositionsWithGTFS) => Promise<IProcessedPositions>;
11
+ /**
12
+ * Takes position one by one, set proper handler for type of position, and do the process of position
13
+ */
14
+ static updatePositions: (options: IUpdatePositionsIteratorOptions) => Promise<{
15
+ context: IVPTripsLastPositionContext;
16
+ positions: IPositionToUpdate[];
17
+ }>;
18
+ private static getCurrentContext;
19
+ /**
20
+ * Decide how to process input position data
21
+ *
22
+ * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
23
+ * @returns {PositionHandlerEnum} - Returns action handler enum
24
+ */
25
+ private static setPositionUpdateHandler;
26
+ /**
27
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
28
+ *
29
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
30
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
31
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
32
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
33
+ * @returns {IPositionToUpdate} - Position object to update
34
+ */
35
+ private static getEstimatedPoint;
36
+ /**
37
+ * Picks only one closest point for multiple possible points based on delay of last position and stop times
38
+ *
39
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
40
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
41
+ * @param {number} startDayTimestamp - Unix timestamp of start of the day
42
+ * @param {IShapeAnchorPoint[]} closestPts - All closest points of possible segments
43
+ * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
44
+ * @returns {IPositionToUpdate} - Result point as position to update in DB
45
+ */
46
+ private static getClosestPoint;
47
+ /**
48
+ * Returns date object for stop time
49
+ * + given by start of day when trip starts
50
+ * + and GTFS HH:mm:ss format of stop time in seconds
51
+ *
52
+ * @param {number} startDayTimestamp - Unix timestamp of local time midnight before trip starts
53
+ * @param {number} timeSeconds - Number of seconds given by HH:mm:ss format of GTFS stop time
54
+ * @returns {Date} - Returns date object
55
+ */
56
+ private static getLocalTimeToDateObject;
57
+ /**
58
+ * Corrects time delay at stop with dwelling time
59
+ *
60
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
61
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
62
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
63
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
64
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
65
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
66
+ */
67
+ private static getCorrectedTimeDelay;
68
+ /**
69
+ * Get delay in seconds for positions before track to ensure correct delay propagation
70
+ */
71
+ private static getDelayBeforeTrack;
72
+ /**
73
+ * Compute UTC timestamp of start of day when trip starts
74
+ *
75
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
76
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
77
+ * @returns {number} - Returns unix timestamp in milliseconds.
78
+ */
79
+ private static getStartDayTimestamp;
80
+ private static determineStatePosition;
81
+ }
@@ -0,0 +1,442 @@
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
+ var _a;
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.RegionalBusPositionsManager = void 0;
40
+ const turf = __importStar(require("@turf/turf"));
41
+ const moment_timezone_1 = __importDefault(require("moment-timezone"));
42
+ const const_1 = require("../../../../../../const");
43
+ const PositionCalculator_1 = __importDefault(require("../PositionCalculator"));
44
+ const PositionHandlerEnum_1 = require("../PositionHandlerEnum");
45
+ const ValidToCalculator_1 = __importDefault(require("../ValidToCalculator"));
46
+ const RegionalBusComputeDelayHelper_1 = require("./compute-positions/RegionalBusComputeDelayHelper");
47
+ class RegionalBusPositionsManager {
48
+ /**
49
+ * Get delay in seconds for positions before track to ensure correct delay propagation
50
+ */
51
+ static getDelayBeforeTrack(lastPositionDelay, firstStopDepartureTime, positionOriginUnixTimestamp, startDayUnixTimestamp) {
52
+ if (typeof lastPositionDelay !== "number") {
53
+ return null;
54
+ }
55
+ const departureTimeInSeconds = startDayUnixTimestamp / 1000 + firstStopDepartureTime;
56
+ const positionOriginTimeInSeconds = positionOriginUnixTimestamp / 1000;
57
+ return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
58
+ }
59
+ }
60
+ exports.RegionalBusPositionsManager = RegionalBusPositionsManager;
61
+ _a = RegionalBusPositionsManager;
62
+ /**
63
+ * Compute positions and return computed positions
64
+ *
65
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
66
+ * @returns {Promise<IProcessedPositions>} - Returns computed/updated positions
67
+ */
68
+ RegionalBusPositionsManager.computePositions = (tripPositions) => __awaiter(void 0, void 0, void 0, function* () {
69
+ var _b, _c;
70
+ const startTimestamp = tripPositions.start_timestamp.getTime();
71
+ const endTimestamp = (_c = (_b = tripPositions.end_timestamp) === null || _b === void 0 ? void 0 : _b.getTime()) !== null && _c !== void 0 ? _c : 0;
72
+ const startDayTimestamp = _a.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
73
+ const gtfsRouteType = tripPositions.gtfs_route_type;
74
+ const context = RegionalBusPositionsManager.getCurrentContext(tripPositions);
75
+ const computedPositions = [];
76
+ return RegionalBusPositionsManager.updatePositions({
77
+ tripPositions,
78
+ startTimestamp,
79
+ endTimestamp,
80
+ startDayTimestamp,
81
+ context,
82
+ computedPositions,
83
+ gtfsRouteType,
84
+ });
85
+ });
86
+ /**
87
+ * Takes position one by one, set proper handler for type of position, and do the process of position
88
+ */
89
+ RegionalBusPositionsManager.updatePositions = (options) => __awaiter(void 0, void 0, void 0, function* () {
90
+ const { tripPositions, startDayTimestamp, startTimestamp, context, computedPositions, gtfsRouteType } = options;
91
+ for (let i = 0; i < tripPositions.positions.length; i++) {
92
+ const position = tripPositions.positions[i];
93
+ let positionToUpdate = null;
94
+ // situations
95
+ switch (_a.setPositionUpdateHandler(position)) {
96
+ case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
97
+ const currentPosition = turf.point([position.lng, position.lat], {
98
+ id: position.id,
99
+ origin_time: position.origin_time,
100
+ origin_timestamp: position.origin_timestamp,
101
+ scheduled_timestamp: position.scheduled_timestamp,
102
+ this_stop_id: position.this_stop_id,
103
+ tcp_event: position.tcp_event,
104
+ });
105
+ positionToUpdate = yield _a.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp);
106
+ break;
107
+ case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
108
+ // if there is no previous positions with tracking status, set position as before_track
109
+ if (context.lastPositionTracking === null) {
110
+ const firstStopTime = tripPositions.gtfsData.stop_times[0];
111
+ // if there is propagated delay we can use it for new position
112
+ const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
113
+ positionToUpdate = Object.assign({ id: position.id, next_stop_arrival_time: new Date(startDayTimestamp + firstStopTime.arrival_time_seconds * 1000), next_stop_departure_time: new Date(startDayTimestamp + firstStopTime.departure_time_seconds * 1000), next_stop_id: firstStopTime.stop_id, next_stop_sequence: firstStopTime.stop_sequence, next_stop_name: firstStopTime.stop.stop_name, shape_dist_traveled: firstStopTime.shape_dist_traveled, state_position: const_1.StatePositionEnum.BEFORE_TRACK, state_process: const_1.StateProcessEnum.PROCESSED }, (firstStopTime.stop_headsign && {
114
+ last_stop_headsign: firstStopTime.stop_headsign,
115
+ }));
116
+ if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
117
+ positionToUpdate.delay = _a.getDelayBeforeTrack(lastPositionDelayed === null || lastPositionDelayed === void 0 ? void 0 : lastPositionDelayed.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
118
+ }
119
+ }
120
+ else {
121
+ // if there is tracking 2 position with same origin_timestamp then this position is duplicate
122
+ const statePosition = position.origin_timestamp.getTime() === context.lastPositionOriginTimestamp ||
123
+ tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
124
+ positionItem.tracking === const_1.PositionTrackingEnum.TRACKING) >= 0
125
+ ? const_1.StatePositionEnum.DUPLICATE
126
+ : const_1.StatePositionEnum.AFTER_TRACK;
127
+ const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
128
+ const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
129
+ positionToUpdate = Object.assign({ id: position.id, last_stop_arrival_time: new Date(startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000), last_stop_departure_time: new Date(startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000), last_stop_id: lastStopTime.stop_id, last_stop_sequence: lastShapesAnchorPoint.last_stop_sequence, shape_dist_traveled: lastShapesAnchorPoint.shape_dist_traveled, state_position: statePosition, state_process: const_1.StateProcessEnum.PROCESSED }, (lastStopTime.stop_headsign && {
130
+ last_stop_headsign: lastStopTime.stop_headsign,
131
+ }));
132
+ positionToUpdate = RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
133
+ }
134
+ break;
135
+ case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
136
+ default:
137
+ break;
138
+ }
139
+ // if not null push to update
140
+ if (positionToUpdate) {
141
+ positionToUpdate.valid_to = ValidToCalculator_1.default.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp, startDayTimestamp);
142
+ computedPositions.push(positionToUpdate);
143
+ }
144
+ // set if last position is AFTER_TRACK
145
+ context.isLastPositionAfterTrack =
146
+ (positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AFTER_TRACK ||
147
+ position.state_position === const_1.StatePositionEnum.AFTER_TRACK;
148
+ // set last known BEFORE_TRACK_DELAYED position
149
+ if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
150
+ context.lastPositionBeforeTrackDelayed = {
151
+ delay: position.delay,
152
+ origin_timestamp: position.origin_timestamp,
153
+ };
154
+ }
155
+ // set last position tracking (only for at_stop and on_track)
156
+ if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AT_STOP ||
157
+ (positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.ON_TRACK ||
158
+ position.state_position === const_1.StatePositionEnum.AT_STOP ||
159
+ position.state_position === const_1.StatePositionEnum.ON_TRACK) {
160
+ context.lastPositionTracking = turf.point([position.lng, position.lat], Object.assign(Object.assign({}, position), positionToUpdate));
161
+ }
162
+ // set new first position at stop streak if this stop seqence is set and it is not same as before
163
+ if (positionToUpdate
164
+ ? positionToUpdate.this_stop_sequence &&
165
+ context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
166
+ : position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
167
+ context.atStopStreak.stop_sequence = positionToUpdate
168
+ ? positionToUpdate.this_stop_sequence
169
+ : position.this_stop_sequence;
170
+ context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
171
+ context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
172
+ }
173
+ // IF currently valid updated position / position was processed before
174
+ // and it is NOT AT_STOP
175
+ // then disrupt atStopStreak
176
+ if (positionToUpdate && !positionToUpdate.this_stop_sequence) {
177
+ context.atStopStreak.stop_sequence = null;
178
+ }
179
+ else if (!positionToUpdate && !position.this_stop_sequence) {
180
+ context.atStopStreak.stop_sequence = null;
181
+ }
182
+ // duplicated position should not be considered at all
183
+ if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.DUPLICATE) {
184
+ context.lastPositionId = position.id;
185
+ context.lastPositionCanceled = position.is_canceled;
186
+ context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
187
+ RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updateContext(context, positionToUpdate, position, gtfsRouteType);
188
+ }
189
+ }
190
+ return {
191
+ context,
192
+ positions: computedPositions,
193
+ };
194
+ });
195
+ RegionalBusPositionsManager.getCurrentContext = (tripPositions) => {
196
+ var _b;
197
+ const context = (_b = tripPositions.last_position_context) !== null && _b !== void 0 ? _b : {
198
+ atStopStreak: {
199
+ stop_sequence: null,
200
+ firstPositionTimestamp: null,
201
+ firstPositionDelay: null,
202
+ },
203
+ lastPositionLastStop: {
204
+ id: null,
205
+ sequence: null,
206
+ arrival_time: null,
207
+ arrival_delay: null,
208
+ departure_time: null,
209
+ departure_delay: null,
210
+ },
211
+ lastPositionDelay: null,
212
+ lastPositionId: null,
213
+ lastPositionOriginTimestamp: null,
214
+ lastPositionTracking: null,
215
+ lastPositionCanceled: null,
216
+ lastPositionBeforeTrackDelayed: null,
217
+ isLastPositionAfterTrack: false,
218
+ tripId: tripPositions.id,
219
+ };
220
+ return context;
221
+ };
222
+ /**
223
+ * Decide how to process input position data
224
+ *
225
+ * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
226
+ * @returns {PositionHandlerEnum} - Returns action handler enum
227
+ */
228
+ RegionalBusPositionsManager.setPositionUpdateHandler = (position) => {
229
+ if (position.state_process === const_1.StateProcessEnum.PROCESSED)
230
+ return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
231
+ else if (position.tracking === const_1.PositionTrackingEnum.TRACKING)
232
+ return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
233
+ else if (position.tracking !== const_1.PositionTrackingEnum.TRACKING)
234
+ return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
235
+ return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
236
+ };
237
+ /**
238
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
239
+ *
240
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
241
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
242
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
243
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
244
+ * @returns {IPositionToUpdate} - Position object to update
245
+ */
246
+ RegionalBusPositionsManager.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp) => __awaiter(void 0, void 0, void 0, function* () {
247
+ var _d, _e, _f, _g, _h, _j, _k, _l;
248
+ // init radius around GPS position ( 200 meters radius, 16 points polygon aka circle)
249
+ const radius = 0.2;
250
+ const defaultStatePosition = const_1.StatePositionEnum.OFF_TRACK;
251
+ // Initial value
252
+ let estimatedPoint = Object.assign({ id: currentPosition.properties.id, state_position: defaultStatePosition, state_process: const_1.StateProcessEnum.PROCESSED, tcp_event: currentPosition.properties.tcp_event, valid_to: ValidToCalculator_1.default.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp) }, (context &&
253
+ ((_d = context.lastPositionTracking) === null || _d === void 0 ? void 0 : _d.properties.last_stop_sequence) && {
254
+ shape_dist_traveled: (_e = context.lastPositionTracking) === null || _e === void 0 ? void 0 : _e.properties.shape_dist_traveled,
255
+ last_stop_arrival_time: ((_f = context.lastPositionTracking) === null || _f === void 0 ? void 0 : _f.properties.last_stop_arrival_time)
256
+ ? new Date((_g = context.lastPositionTracking) === null || _g === void 0 ? void 0 : _g.properties.last_stop_arrival_time)
257
+ : undefined,
258
+ last_stop_departure_time: ((_h = context.lastPositionTracking) === null || _h === void 0 ? void 0 : _h.properties.last_stop_departure_time)
259
+ ? new Date((_j = context.lastPositionTracking) === null || _j === void 0 ? void 0 : _j.properties.last_stop_departure_time)
260
+ : undefined,
261
+ last_stop_sequence: (_k = context.lastPositionTracking) === null || _k === void 0 ? void 0 : _k.properties.last_stop_sequence,
262
+ last_stop_id: (_l = context.lastPositionTracking) === null || _l === void 0 ? void 0 : _l.properties.last_stop_id,
263
+ }));
264
+ // returns array of segments (row of points) of shape anchor points around gps
265
+ const ptsInRadius = yield PositionCalculator_1.default.getShapePointsAroundPosition(tripGtfsData.shapes_anchor_points, currentPosition, radius, tripGtfsData.trip_id);
266
+ if (ptsInRadius.length < 1) {
267
+ return estimatedPoint;
268
+ }
269
+ // picks only closest point for each segment
270
+ const closestPts = yield PositionCalculator_1.default.getClosestPoints(ptsInRadius, currentPosition);
271
+ if (closestPts.length < 1) {
272
+ return estimatedPoint;
273
+ }
274
+ // DECIDE WHICH POINT IS PROBABLY RIGHT
275
+ return _a.getClosestPoint(currentPosition, context, startDayTimestamp, closestPts, tripGtfsData);
276
+ });
277
+ /**
278
+ * Picks only one closest point for multiple possible points based on delay of last position and stop times
279
+ *
280
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
281
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
282
+ * @param {number} startDayTimestamp - Unix timestamp of start of the day
283
+ * @param {IShapeAnchorPoint[]} closestPts - All closest points of possible segments
284
+ * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
285
+ * @returns {IPositionToUpdate} - Result point as position to update in DB
286
+ */
287
+ RegionalBusPositionsManager.getClosestPoint = (currentPosition, context, startDayTimestamp, closestPts, tripGtfsData) => __awaiter(void 0, void 0, void 0, function* () {
288
+ // want to find minimum difference of our prediction, where the bus should be
289
+ let minTimeRealDiff = Infinity;
290
+ const tripStopTimes = tripGtfsData.stop_times;
291
+ const closestPtsIterator = (i, prevTimeDelay, estimatedPoint, cb) => {
292
+ // end of iteration
293
+ if (closestPts.length === i) {
294
+ return cb(estimatedPoint);
295
+ }
296
+ let thisClosestPoint = closestPts[i];
297
+ const timeScheduledTimestamp = _a.getLocalTimeToDateObject(startDayTimestamp,
298
+ // take stop arrival time if is point at stop
299
+ thisClosestPoint.this_stop_sequence
300
+ ? tripStopTimes[thisClosestPoint.this_stop_sequence - 1].arrival_time_seconds
301
+ : thisClosestPoint.time_scheduled_seconds);
302
+ let timeDelayInSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - timeScheduledTimestamp.getTime()) / 1000);
303
+ // time where the bus should on this point
304
+ const timeProposed = thisClosestPoint.time_scheduled_seconds + prevTimeDelay;
305
+ // difference
306
+ const timeRealDiff = thisClosestPoint.time_scheduled_seconds + timeDelayInSeconds - timeProposed;
307
+ // we look for the best fitting point
308
+ if (Math.abs(timeRealDiff) < Math.abs(minTimeRealDiff)) {
309
+ minTimeRealDiff = timeRealDiff;
310
+ // lets correct delay if it is at stop
311
+ if (thisClosestPoint.this_stop_sequence && timeDelayInSeconds) {
312
+ const thisStopSequence = thisClosestPoint.this_stop_sequence;
313
+ timeDelayInSeconds = _a.getCorrectedTimeDelay(timeDelayInSeconds, context, currentPosition, thisStopSequence, {
314
+ departureTime: tripStopTimes[thisStopSequence - 1].departure_time_seconds,
315
+ arrivalTime: tripStopTimes[thisStopSequence - 1].arrival_time_seconds,
316
+ });
317
+ }
318
+ const statePosition = _a.determineStatePosition(thisClosestPoint, currentPosition.properties);
319
+ const thisStopSequence = thisClosestPoint.this_stop_sequence;
320
+ const lastStopSequence = thisClosestPoint.last_stop_sequence;
321
+ const nextStopSequence = thisClosestPoint.next_stop_sequence;
322
+ // save it for result
323
+ estimatedPoint = {
324
+ id: currentPosition.properties.id,
325
+ bearing: thisClosestPoint.bearing,
326
+ shape_dist_traveled: Math.round(thisClosestPoint.shape_dist_traveled * 1000) / 1000,
327
+ next_stop_id: tripStopTimes[nextStopSequence - 1].stop_id,
328
+ last_stop_id: tripStopTimes[lastStopSequence - 1].stop_id,
329
+ next_stop_name: tripStopTimes[nextStopSequence - 1].stop.stop_name,
330
+ last_stop_name: tripStopTimes[lastStopSequence - 1].stop.stop_name,
331
+ next_stop_sequence: nextStopSequence,
332
+ last_stop_sequence: lastStopSequence,
333
+ next_stop_arrival_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[nextStopSequence - 1].arrival_time_seconds),
334
+ last_stop_arrival_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[lastStopSequence - 1].arrival_time_seconds),
335
+ next_stop_departure_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[nextStopSequence - 1].departure_time_seconds),
336
+ last_stop_departure_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[lastStopSequence - 1].departure_time_seconds),
337
+ delay: timeDelayInSeconds,
338
+ this_stop_id: (statePosition === const_1.StatePositionEnum.AT_STOP &&
339
+ thisStopSequence &&
340
+ tripStopTimes[thisStopSequence - 1].stop_id) ||
341
+ undefined,
342
+ this_stop_name: (statePosition === const_1.StatePositionEnum.AT_STOP &&
343
+ thisStopSequence &&
344
+ tripStopTimes[thisStopSequence - 1].stop.stop_name) ||
345
+ undefined,
346
+ this_stop_sequence: (statePosition === const_1.StatePositionEnum.AT_STOP && thisStopSequence) || undefined,
347
+ last_stop_headsign: tripStopTimes[lastStopSequence - 1].stop_headsign || undefined,
348
+ state_position: statePosition,
349
+ state_process: const_1.StateProcessEnum.PROCESSED,
350
+ valid_to: ValidToCalculator_1.default.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
351
+ };
352
+ }
353
+ // next step
354
+ closestPtsIterator(i + 1, prevTimeDelay, estimatedPoint, cb);
355
+ };
356
+ return new Promise((resolve) => {
357
+ var _b, _c;
358
+ closestPtsIterator(0, (_c = (_b = context === null || context === void 0 ? void 0 : context.lastPositionTracking) === null || _b === void 0 ? void 0 : _b.properties.delay) !== null && _c !== void 0 ? _c : 0, null, (estimatedPoint) => {
359
+ resolve(estimatedPoint);
360
+ });
361
+ });
362
+ });
363
+ /**
364
+ * Returns date object for stop time
365
+ * + given by start of day when trip starts
366
+ * + and GTFS HH:mm:ss format of stop time in seconds
367
+ *
368
+ * @param {number} startDayTimestamp - Unix timestamp of local time midnight before trip starts
369
+ * @param {number} timeSeconds - Number of seconds given by HH:mm:ss format of GTFS stop time
370
+ * @returns {Date} - Returns date object
371
+ */
372
+ RegionalBusPositionsManager.getLocalTimeToDateObject = (startDayTimestamp, timeSeconds) => {
373
+ return (0, moment_timezone_1.default)(startDayTimestamp)
374
+ .tz("Europe/Prague")
375
+ .startOf("day")
376
+ .hours(Math.floor(timeSeconds / 3600))
377
+ .minutes(Math.floor((timeSeconds % 3600) / 60))
378
+ .seconds(timeSeconds % 60)
379
+ .toDate();
380
+ };
381
+ /**
382
+ * Corrects time delay at stop with dwelling time
383
+ *
384
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
385
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
386
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
387
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
388
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
389
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
390
+ */
391
+ RegionalBusPositionsManager.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisStopSequence, stopTimes) => {
392
+ // compute dwell time in stop, most common is zero
393
+ const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
394
+ // if dwell time is sheduled as zero, return initial computed delay
395
+ if (stopDwellTimeSeconds <= 0) {
396
+ return timeDelay;
397
+ }
398
+ // if last position was not in this same stop or there is no last position at all
399
+ if (!context || context.atStopStreak.stop_sequence !== thisStopSequence) {
400
+ // timeDelay >= 0 trip is DELAYED
401
+ // we presume it will lower delay by shortening its scheduled dwell time,
402
+ // cant go under zero of course, trip should not go ahead
403
+ // else trip is AHeAD
404
+ // left computed delay as it was
405
+ return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
406
+ }
407
+ // we presume that first position at same stop is real arrival time
408
+ if (context.atStopStreak.firstPositionDelay >= 0) {
409
+ // trip was DELAYED before
410
+ // we presume it will lower delay by shortening its scheduled dwell time,
411
+ // cant go under zero of course, trip should not go ahead
412
+ return Math.max(timeDelay - stopDwellTimeSeconds, 0);
413
+ }
414
+ // trip was AHEAD before
415
+ // real dwell time so far
416
+ const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - context.atStopStreak.firstPositionTimestamp) / 1000);
417
+ // if real dwell is longer than scheduled, then add to negative delay time
418
+ return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
419
+ };
420
+ /**
421
+ * Compute UTC timestamp of start of day when trip starts
422
+ *
423
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
424
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
425
+ * @returns {number} - Returns unix timestamp in milliseconds.
426
+ */
427
+ RegionalBusPositionsManager.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
428
+ let startDayTimestamp = moment_timezone_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
429
+ const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / (60 * 60 * 24));
430
+ // if trip has 24+ stop times set real startDay to yesterday
431
+ if (stopTimeDayOverflow > 0) {
432
+ startDayTimestamp.subtract(1, "day");
433
+ }
434
+ return startDayTimestamp.valueOf();
435
+ };
436
+ RegionalBusPositionsManager.determineStatePosition = (thisClosestPoint, currentPosition) => {
437
+ const statePosition = thisClosestPoint.this_stop_sequence && currentPosition.tcp_event !== const_1.RegionalBusEventEnum.DEPARTURED
438
+ ? const_1.StatePositionEnum.AT_STOP
439
+ : const_1.StatePositionEnum.ON_TRACK;
440
+ return statePosition;
441
+ };
442
+ //# sourceMappingURL=RegionalBusPositionsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegionalBusPositionsManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { IPositionToUpdate } from "../../../interfaces/VPInterfaces";
2
+ import { IVPTripsPositionAttributes } from "../../../../../../../schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes";
3
+ import { IVPTripsLastPositionContext } from "../../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
4
+ import { GTFSRouteTypeEnum } from "../../../../../../../helpers/RouteTypeEnums";
5
+ export declare class RegionalBusComputeDelayHelper {
6
+ /**
7
+ * Saves relevant information to calculate delays in future vehicle position iterations.
8
+ */
9
+ static updateContext(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes, gtfsRouteType: GTFSRouteTypeEnum): IVPTripsLastPositionContext;
10
+ /**
11
+ * Adds info about delay at stop to positionToUpdate based on current position and context from previous positions.
12
+ */
13
+ static updatePositionToUpdate(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate, position: IVPTripsPositionAttributes, gtfsRouteType: GTFSRouteTypeEnum): IPositionToUpdate;
14
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RegionalBusComputeDelayHelper = void 0;
7
+ const FactoryDelayAtStop_1 = __importDefault(require("./strategy/FactoryDelayAtStop"));
8
+ class RegionalBusComputeDelayHelper {
9
+ /**
10
+ * Saves relevant information to calculate delays in future vehicle position iterations.
11
+ */
12
+ static updateContext(context, positionToUpdate, position, gtfsRouteType) {
13
+ var _a, _b;
14
+ context.lastPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
15
+ return ((_b = (_a = FactoryDelayAtStop_1.default.getInstance().getStrategy(gtfsRouteType)) === null || _a === void 0 ? void 0 : _a.updateContext(context, positionToUpdate, position)) !== null && _b !== void 0 ? _b : context);
16
+ }
17
+ /**
18
+ * Adds info about delay at stop to positionToUpdate based on current position and context from previous positions.
19
+ */
20
+ static updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType) {
21
+ var _a, _b;
22
+ return ((_b = (_a = FactoryDelayAtStop_1.default.getInstance().getStrategy(gtfsRouteType)) === null || _a === void 0 ? void 0 : _a.updatePosition(context, positionToUpdate, position)) !== null && _b !== void 0 ? _b : positionToUpdate);
23
+ }
24
+ }
25
+ exports.RegionalBusComputeDelayHelper = RegionalBusComputeDelayHelper;
26
+ //# sourceMappingURL=RegionalBusComputeDelayHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegionalBusComputeDelayHelper.js","sourceRoot":"","sources":["../../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.ts"],"names":[],"mappings":";;;;;;AAIA,uFAA+D;AAE/D,MAAa,6BAA6B;IACtC;;OAEG;IACI,MAAM,CAAC,aAAa,CACvB,OAAoC,EACpC,gBAA0C,EAC1C,QAAoC,EACpC,aAAgC;;QAEhC,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAExF,OAAO,CACH,MAAA,MAAA,4BAAkB,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,0CAAE,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,mCAC/G,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,sBAAsB,CAChC,OAAoC,EACpC,gBAAmC,EACnC,QAAoC,EACpC,aAAgC;;QAEhC,OAAO,CACH,MAAA,MAAA,4BAAkB,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,0CAAE,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,mCAChH,gBAAgB,CACnB,CAAC;IACN,CAAC;CACJ;AAhCD,sEAgCC"}
@@ -0,0 +1,9 @@
1
+ import { IPositionToUpdate } from "../../../../interfaces/VPInterfaces";
2
+ import { IVPTripsPositionAttributes } from "../../../../../../../../schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes";
3
+ import { IVPTripsLastPositionContext } from "../../../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
4
+ import AbstractDelayAtStop from "../../../compute-positions/strategy/AbstractDelayAtStop";
5
+ export declare class BusDelayAtStop extends AbstractDelayAtStop {
6
+ updateContext(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes): IVPTripsLastPositionContext;
7
+ updatePosition(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate, position: IVPTripsPositionAttributes | undefined): IPositionToUpdate;
8
+ private didVehicleDepart;
9
+ }