@golemio/pid 3.17.2-dev.1969248519 → 4.0.0-rc.1977811756

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 (124) hide show
  1. package/dist/helpers/GtfsStopParser.d.ts +0 -2
  2. package/dist/helpers/GtfsStopParser.js +8 -11
  3. package/dist/helpers/GtfsStopParser.js.map +1 -1
  4. package/dist/input-gateway/index.d.ts +1 -1
  5. package/dist/input-gateway/index.js +13 -25
  6. package/dist/input-gateway/index.js.map +1 -1
  7. package/dist/input-gateway/jis/{JisInfotextsRouter.d.ts → JISRouter.d.ts} +5 -2
  8. package/dist/input-gateway/jis/{JisInfotextsRouter.js → JISRouter.js} +12 -10
  9. package/dist/input-gateway/jis/JISRouter.js.map +1 -0
  10. package/dist/input-gateway/jis/controllers/{JisEventsController.js → JISEventsController.js} +2 -2
  11. package/dist/input-gateway/jis/controllers/{JisEventsController.js.map → JISEventsController.js.map} +1 -1
  12. package/dist/input-gateway/jis/controllers/{JisInfotextsController.d.ts → JISInfotextsController.d.ts} +1 -1
  13. package/dist/input-gateway/jis/controllers/{JisInfotextsController.js → JISInfotextsController.js} +5 -5
  14. package/dist/input-gateway/jis/controllers/{JisInfotextsController.js.map → JISInfotextsController.js.map} +1 -1
  15. package/dist/input-gateway/ropid-gtfs/RopidGtfsRouter.d.ts +5 -2
  16. package/dist/input-gateway/ropid-gtfs/RopidGtfsRouter.js +6 -2
  17. package/dist/input-gateway/ropid-gtfs/RopidGtfsRouter.js.map +1 -1
  18. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +1 -0
  19. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
  20. package/dist/input-gateway/vehicle-positions/VehiclePositionsRouter.d.ts +4 -3
  21. package/dist/input-gateway/vehicle-positions/VehiclePositionsRouter.js +6 -4
  22. package/dist/input-gateway/vehicle-positions/VehiclePositionsRouter.js.map +1 -1
  23. package/dist/integration-engine/jis/ioc/Di.js +0 -8
  24. package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
  25. package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +0 -3
  26. package/dist/integration-engine/jis/ioc/JISContainerToken.js +0 -4
  27. package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
  28. package/dist/integration-engine/jis/repositories/JISEventsRepository.js +2 -5
  29. package/dist/integration-engine/jis/repositories/JISEventsRepository.js.map +1 -1
  30. package/dist/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.js +2 -5
  31. package/dist/integration-engine/jis/repositories/JISEventsRopidGTFSRoutesRepository.js.map +1 -1
  32. package/dist/integration-engine/jis/repositories/JISInfotextsRepository.d.ts +1 -14
  33. package/dist/integration-engine/jis/repositories/JISInfotextsRepository.js +4 -75
  34. package/dist/integration-engine/jis/repositories/JISInfotextsRepository.js.map +1 -1
  35. package/dist/integration-engine/jis/repositories/JISInfotextsRopidGTFSStopsRepository.js +2 -5
  36. package/dist/integration-engine/jis/repositories/JISInfotextsRopidGTFSStopsRepository.js.map +1 -1
  37. package/dist/integration-engine/jis/workers/JISWorker.js +0 -1
  38. package/dist/integration-engine/jis/workers/JISWorker.js.map +1 -1
  39. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.d.ts +2 -1
  40. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.js +4 -5
  41. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.js.map +1 -1
  42. package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.d.ts +1 -5
  43. package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js +0 -24
  44. package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js.map +1 -1
  45. package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
  46. package/dist/integration-engine/ropid-gtfs/index.d.ts +0 -1
  47. package/dist/integration-engine/ropid-gtfs/index.js +0 -1
  48. package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
  49. package/dist/integration-engine/ropid-gtfs/ioc/Di.js +0 -8
  50. package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
  51. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +0 -3
  52. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +0 -3
  53. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
  54. package/dist/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.js +1 -1
  55. package/dist/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.js.map +1 -1
  56. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js +0 -1
  57. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js.map +1 -1
  58. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +5 -8
  59. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
  60. package/dist/integration-engine/shared/RepositoryUtils.d.ts +3 -0
  61. package/dist/integration-engine/shared/RepositoryUtils.js +19 -0
  62. package/dist/integration-engine/shared/RepositoryUtils.js.map +1 -0
  63. package/dist/integration-engine/shared/index.d.ts +1 -0
  64. package/dist/integration-engine/shared/index.js +1 -0
  65. package/dist/integration-engine/shared/index.js.map +1 -1
  66. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js +1 -2
  67. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js.map +1 -1
  68. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.d.ts +61 -10
  69. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js +280 -67
  70. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js.map +1 -1
  71. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.d.ts +49 -10
  72. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +229 -16
  73. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -1
  74. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
  75. package/dist/output-gateway/jis/controllers/v1/V1EventsController.d.ts +1 -1
  76. package/dist/output-gateway/jis/controllers/v1/V1EventsController.js +1 -1
  77. package/dist/output-gateway/jis/ioc/Di.js +1 -1
  78. package/dist/output-gateway/jis/{transofrmations → transformations}/JISEventsCustomFormatTransformation.js.map +1 -1
  79. package/dist/schema-definitions/jis/redis/const.d.ts +0 -1
  80. package/dist/schema-definitions/jis/redis/const.js +1 -2
  81. package/dist/schema-definitions/jis/redis/const.js.map +1 -1
  82. package/dist/schema-definitions/ropid-departures-presets/index.d.ts +0 -1
  83. package/dist/schema-definitions/ropid-departures-presets/index.js +0 -3
  84. package/dist/schema-definitions/ropid-departures-presets/index.js.map +1 -1
  85. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopDto.d.ts +0 -1
  86. package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +0 -1
  87. package/dist/schema-definitions/ropid-gtfs/redis/const.js +1 -2
  88. package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -1
  89. package/docs/asyncapi.yaml +0 -45
  90. package/docs/cache/types/redis.md +2 -82
  91. package/docs/jis/index.md +5 -15
  92. package/docs/openapi-input.yaml +6 -17
  93. package/package.json +2 -2
  94. package/dist/input-gateway/jis/JisInfotextsRouter.js.map +0 -1
  95. package/dist/input-gateway/vehicle-positions/index.d.ts +0 -2
  96. package/dist/input-gateway/vehicle-positions/index.js +0 -19
  97. package/dist/input-gateway/vehicle-positions/index.js.map +0 -1
  98. package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.d.ts +0 -9
  99. package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.js +0 -78
  100. package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.js.map +0 -1
  101. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.d.ts +0 -11
  102. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.js +0 -42
  103. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.js.map +0 -1
  104. package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.d.ts +0 -18
  105. package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.js +0 -44
  106. package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.js.map +0 -1
  107. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.d.ts +0 -12
  108. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.js +0 -44
  109. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.js.map +0 -1
  110. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.d.ts +0 -12
  111. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.js +0 -87
  112. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.js.map +0 -1
  113. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.d.ts +0 -90
  114. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.js +0 -316
  115. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.js.map +0 -1
  116. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.d.ts +0 -16
  117. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.js +0 -3
  118. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.js.map +0 -1
  119. package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.d.ts +0 -58
  120. package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.js +0 -69
  121. package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.js.map +0 -1
  122. /package/dist/input-gateway/jis/controllers/{JisEventsController.d.ts → JISEventsController.d.ts} +0 -0
  123. /package/dist/output-gateway/jis/{transofrmations → transformations}/JISEventsCustomFormatTransformation.d.ts +0 -0
  124. /package/dist/output-gateway/jis/{transofrmations → transformations}/JISEventsCustomFormatTransformation.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,8CAA4B;AAC5B,oDAAkC"}
@@ -163,7 +163,7 @@ class PositionsRepository extends models_2.PostgresModel {
163
163
  // Sequlize return with raw==true flatten array of results, nest==true is available for Sequelize ver >5 only
164
164
  // We return objects of positions grouped by trips_id
165
165
  try {
166
- const positionsToReturn = results.reduce((p, c) => {
166
+ return results.reduce((p, c) => {
167
167
  let pIndex = p.findIndex((e) => e.id === c.id);
168
168
  if (pIndex === -1) {
169
169
  p.push({
@@ -209,7 +209,6 @@ class PositionsRepository extends models_2.PostgresModel {
209
209
  });
210
210
  return p;
211
211
  }, []);
212
- return positionsToReturn;
213
212
  }
214
213
  catch (err) {
215
214
  throw new golemio_errors_1.GeneralError(`Error while transforming data from db for batch. Trip count ${results.length}.`, this.name, err);
@@ -1 +1 @@
1
- {"version":3,"file":"PositionsRepository.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PositionsRepository.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,43 @@
1
- import { IVPTripsLastPositionContext } from "../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
2
1
  import { IScheduleDto } from "../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
3
- import { Feature, Point } from "@turf/turf";
4
- import { GTFSRouteTypeEnum } from "../../../../../helpers/RouteTypeEnums";
5
- import { IComputationTrip, ICurrentPositionProperties, IPositionToUpdate, IProcessedPositions, IShapeAnchorPoint, IUpdatePositionsIteratorOptions } from "../interfaces/VPInterfaces";
6
- import { BasePositionsManager } from "./BasePositionsManager";
2
+ import { IProcessedPositions, ITripPositionsWithGTFS, IUpdatePositionsIteratorOptions } from "../interfaces/VPInterfaces";
7
3
  import { ValidToCalculator } from "./ValidToCalculator";
8
- export declare class PositionsManager extends BasePositionsManager {
9
- protected validToCalculator: ValidToCalculator;
4
+ export declare class PositionsManager {
5
+ private validToCalculator;
10
6
  constructor(validToCalculator: ValidToCalculator);
7
+ /**
8
+ * Compute positions and return computed positions
9
+ *
10
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
11
+ * @returns {IProcessedPositions} - Returns computed/updated positions
12
+ */
13
+ computePositions: (tripPositions: ITripPositionsWithGTFS, schedule: IScheduleDto[] | undefined) => IProcessedPositions;
11
14
  /**
12
15
  * Takes position one by one, set proper handler for type of position, and do the process of position
13
16
  *
17
+ * @param {number} i - Iteration
14
18
  * @param {IUpdatePositionsIteratorOptions} options - Initial options
15
19
  * @param {number} cb - Callback function of iterator
16
20
  * @returns {IProcessedPositions} - Returns computed/updated positions
17
21
  */
18
22
  updatePositions: (options: IUpdatePositionsIteratorOptions, schedule: IScheduleDto[] | undefined) => IProcessedPositions;
23
+ private getCurrentContext;
24
+ /**
25
+ * Decide how to process input position data
26
+ *
27
+ * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
28
+ * @returns {PositionHandlerEnum} - Returns action handler enum
29
+ */
30
+ private setPositionUpdateHandler;
31
+ /**
32
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
33
+ *
34
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
35
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
36
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
37
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
38
+ * @returns {IPositionToUpdate} - Position object to update
39
+ */
40
+ private getEstimatedPoint;
19
41
  /**
20
42
  * Picks only one closest point for multiple possible points based on delay of last position and stop times
21
43
  *
@@ -26,9 +48,38 @@ export declare class PositionsManager extends BasePositionsManager {
26
48
  * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
27
49
  * @returns {IPositionToUpdate} - Result point as position to update in DB
28
50
  */
29
- protected getClosestPoint: (currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, thisClosestPoint: IShapeAnchorPoint, tripGtfsData: IComputationTrip, gtfsRouteType: GTFSRouteTypeEnum) => IPositionToUpdate;
30
- private detectBacktracking;
51
+ private getClosestPoint;
52
+ /**
53
+ * Corrects time delay at stop with dwelling time
54
+ *
55
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
56
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
57
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
58
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
59
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
60
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
61
+ */
62
+ private getCorrectedTimeDelay;
63
+ /**
64
+ * Get delay in seconds for positions before track to ensure correct delay propagation
65
+ *
66
+ * @param lastPositionDelay The last position delay in seconds
67
+ * @param firstStopDepartureTime The first stop departure time in seconds. The time is measured from "noon minus 12h" of the
68
+ * service day (effectively midnight except for days on which daylight savings time changes occur). For times occurring after
69
+ * midnight on the service day, enter the time as a value greater than 24:00:00 in seconds. See also
70
+ * <https://gtfs.org/schedule/reference/#:~:text=A%20phone%20number.-,Time,-%2D%20Time%20in%20the>.
71
+ * @param positionOriginUnixTimestamp The Unix Epoch timestamp of the current position, in milliseconds
72
+ * @param startDayUnixTimestamp The Unix Epoch timestamp of the start of the service day, in milliseconds
73
+ */
74
+ private getDelayBeforeTrack;
75
+ /**
76
+ * Compute UTC timestamp of start of day when trip starts
77
+ *
78
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
79
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
80
+ * @returns {number} - Returns unix timestamp in milliseconds.
81
+ */
82
+ private getStartDayTimestamp;
31
83
  private getStateAndStopSequences;
32
- private hasTcpEventOrCancel;
33
84
  private isAfterTrack;
34
85
  }
@@ -37,28 +37,45 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
37
37
  var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  return (mod && mod.__esModule) ? mod : { "default": mod };
39
39
  };
40
- var PositionsManager_1;
41
40
  Object.defineProperty(exports, "__esModule", { value: true });
42
41
  exports.PositionsManager = void 0;
43
42
  const DateTimeUtils_1 = require("../../../../../helpers/DateTimeUtils");
44
43
  const VPContainerToken_1 = require("../../../ioc/VPContainerToken");
44
+ const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
45
45
  const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
46
46
  const turf = __importStar(require("@turf/turf"));
47
47
  const const_1 = require("../../../../../const");
48
48
  const RouteTypeEnums_1 = require("../../../../../helpers/RouteTypeEnums");
49
- const BasePositionsManager_1 = require("./BasePositionsManager");
50
49
  const DPPUtils_1 = __importDefault(require("./DPPUtils"));
51
50
  const PositionHandlerEnum_1 = require("./PositionHandlerEnum");
52
51
  const ValidToCalculator_1 = require("./ValidToCalculator");
52
+ const AnchorPointSegmenter_1 = require("./anchor-points/AnchorPointSegmenter");
53
53
  const ComputeDelayHelper_1 = __importDefault(require("./compute-positions/ComputeDelayHelper"));
54
- const PositionStateDelayManager = __importStar(require("./state-position/PositionStateDelayManager"));
55
- let PositionsManager = exports.PositionsManager = PositionsManager_1 = class PositionsManager extends BasePositionsManager_1.BasePositionsManager {
54
+ const PositionStateDelayManager_1 = require("./state-position/PositionStateDelayManager");
55
+ const ONE_DAY_IN_SECONDS = 24 * 60 * 60;
56
+ const ONE_SECOND_IN_MILLIS = 1000;
57
+ let PositionsManager = exports.PositionsManager = class PositionsManager {
56
58
  constructor(validToCalculator) {
57
- super({ useEndTimestamp: true, allowCancelState: true });
58
59
  this.validToCalculator = validToCalculator;
60
+ /**
61
+ * Compute positions and return computed positions
62
+ *
63
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
64
+ * @returns {IProcessedPositions} - Returns computed/updated positions
65
+ */
66
+ this.computePositions = (tripPositions, schedule) => {
67
+ const startTimestamp = tripPositions.start_timestamp.getTime();
68
+ const startDayTimestamp = this.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
69
+ const gtfsRouteType = tripPositions.gtfs_route_type;
70
+ const context = this.getCurrentContext(tripPositions);
71
+ const computedPositions = [];
72
+ const endTimestamp = tripPositions.end_timestamp;
73
+ return this.updatePositions({ tripPositions, startTimestamp, endTimestamp, startDayTimestamp, context, computedPositions, gtfsRouteType }, schedule);
74
+ };
59
75
  /**
60
76
  * Takes position one by one, set proper handler for type of position, and do the process of position
61
77
  *
78
+ * @param {number} i - Iteration
62
79
  * @param {IUpdatePositionsIteratorOptions} options - Initial options
63
80
  * @param {number} cb - Callback function of iterator
64
81
  * @returns {IProcessedPositions} - Returns computed/updated positions
@@ -66,14 +83,12 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
66
83
  this.updatePositions = (options, schedule) => {
67
84
  const { tripPositions, startDayTimestamp, startTimestamp, endTimestamp, context, computedPositions, gtfsRouteType } = options;
68
85
  let isBacktrackingDetected = false;
69
- let lastPositionStaysCanceled = false;
70
- const positionsSource = tripPositions.positions;
71
- positionsSource.sort(PositionsManager_1.sortByOriginTimestamp);
72
- for (const position of positionsSource) {
86
+ for (let i = 0; i < tripPositions.positions.length; i++) {
87
+ const position = tripPositions.positions[i];
73
88
  let positionToUpdate = null;
74
89
  // situations
75
90
  switch (this.setPositionUpdateHandler(position)) {
76
- case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING: {
91
+ case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
77
92
  const currentPosition = turf.point([position.lng, position.lat], {
78
93
  id: position.id,
79
94
  origin_time: position.origin_time,
@@ -88,26 +103,48 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
88
103
  }
89
104
  positionToUpdate.bearing = position.bearing ?? positionToUpdate.bearing;
90
105
  break;
91
- }
92
- case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING: {
106
+ case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
93
107
  // if there is no previous positions with tracking status, set position as before_track
94
108
  const firstShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[0];
95
- const invisibleByDpp = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked);
96
- if (this.isFreshNewVehicleInSystem(context, position, endTimestamp)) {
109
+ if (context.lastPositionTracking === null &&
110
+ (endTimestamp === null ||
111
+ position.scheduled_timestamp === null ||
112
+ endTimestamp > position.scheduled_timestamp)) {
97
113
  const firstStopTime = tripPositions.gtfsData.stop_times[0];
98
114
  // if there is propagated delay we can use it for new position
99
115
  const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
100
116
  // if there is no delay to duplicate and DPP trip is far from start then invisible
101
- const setAsInvisible = !lastPositionDelayed && invisibleByDpp;
102
- positionToUpdate = this.defaultNonTrackingPositionToUpdate(position, firstStopTime, startDayTimestamp, setAsInvisible, lastPositionDelayed);
117
+ const setAsInvisible = !lastPositionDelayed &&
118
+ DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked);
119
+ positionToUpdate = {
120
+ id: position.id,
121
+ next_stop_arrival_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.arrival_time_seconds, startDayTimestamp),
122
+ next_stop_departure_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.departure_time_seconds, startDayTimestamp),
123
+ next_stop_id: firstStopTime.stop_id,
124
+ next_stop_sequence: firstStopTime.stop_sequence,
125
+ next_stop_name: firstStopTime.stop.stop_name,
126
+ shape_dist_traveled: firstStopTime.shape_dist_traveled,
127
+ state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK,
128
+ state_process: const_1.StateProcessEnum.PROCESSED,
129
+ ...(firstStopTime.stop_headsign && {
130
+ last_stop_headsign: firstStopTime.stop_headsign,
131
+ }),
132
+ };
133
+ if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
134
+ positionToUpdate.delay = this.getDelayBeforeTrack(lastPositionDelayed?.delay ?? position.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
135
+ }
103
136
  }
104
137
  else {
105
138
  // if there is tracking 2 position with same origin_timestamp then this position is duplicate
106
- const statePosition = this.detectDuplicatePosition(position, context.lastPositionOriginTimestamp, positionsSource);
139
+ const statePosition = position.origin_timestamp.getTime() === context.lastPositionOriginTimestamp ||
140
+ tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
141
+ positionItem.is_tracked) >= 0
142
+ ? const_1.StatePositionEnum.DUPLICATE
143
+ : const_1.StatePositionEnum.AFTER_TRACK;
107
144
  const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
108
145
  const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
109
146
  // set as invisible if there are some AFTER_TRACK before
110
- const setAsInvisible = invisibleByDpp && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
147
+ const setAsInvisible = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked) && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
111
148
  const lastShapesAnchorPointTimeScheduled = DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(lastShapesAnchorPoint.time_scheduled_seconds, startDayTimestamp);
112
149
  positionToUpdate = {
113
150
  id: position.id,
@@ -126,7 +163,7 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
126
163
  // if state was changed in last 30 seconds, then it is AFTER_TRACK_DELAYED
127
164
  // with delay computation (copied from delay at stop)
128
165
  if (positionToUpdate.state_position === const_1.StatePositionEnum.AFTER_TRACK &&
129
- PositionStateDelayManager.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
166
+ PositionStateDelayManager_1.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
130
167
  positionToUpdate.state_position = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
131
168
  }
132
169
  positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
@@ -135,8 +172,7 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
135
172
  }
136
173
  }
137
174
  break;
138
- }
139
- case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED: {
175
+ case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED:
140
176
  positionToUpdate = {
141
177
  id: position.id,
142
178
  lat: position.lat ?? context.lastPositionLat ?? null,
@@ -144,35 +180,70 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
144
180
  state_position: const_1.StatePositionEnum.CANCELED,
145
181
  state_process: const_1.StateProcessEnum.PROCESSED,
146
182
  };
147
- positionToUpdate.lat = positionToUpdate.lat || 0;
148
- positionToUpdate.lng = positionToUpdate.lng || 0;
183
+ if (positionToUpdate.lat === null || positionToUpdate.lng === null) {
184
+ // Null island, to be filtered out on all APIs except for departure boards
185
+ // where it is used to indicate a canceled trip
186
+ positionToUpdate.lat = 0;
187
+ positionToUpdate.lng = 0;
188
+ }
149
189
  break;
150
- }
151
- case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING: {
190
+ case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
152
191
  break;
153
- }
154
- default: {
192
+ default:
155
193
  break;
194
+ }
195
+ // if not null push to update
196
+ if (positionToUpdate) {
197
+ positionToUpdate.is_tracked ??= position.is_tracked;
198
+ positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
199
+ // backtracking detection so we can later invalidate old positions
200
+ if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
201
+ isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
156
202
  }
203
+ computedPositions.push(positionToUpdate);
204
+ }
205
+ else {
206
+ computedPositions.push(null);
207
+ }
208
+ // set last known BEFORE_TRACK_DELAYED position
209
+ if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
210
+ context.lastPositionBeforeTrackDelayed = {
211
+ delay: positionToUpdate?.delay ?? position.delay,
212
+ origin_timestamp: positionToUpdate?.origin_timestamp ?? position.origin_timestamp,
213
+ };
214
+ }
215
+ // set last position tracking (only for at_stop and on_track)
216
+ if (positionToUpdate?.state_position === const_1.StatePositionEnum.AT_STOP ||
217
+ positionToUpdate?.state_position === const_1.StatePositionEnum.ON_TRACK ||
218
+ position.state_position === const_1.StatePositionEnum.AT_STOP ||
219
+ position.state_position === const_1.StatePositionEnum.ON_TRACK) {
220
+ context.lastPositionTracking = turf.point([position.lng, position.lat], {
221
+ ...position,
222
+ ...positionToUpdate,
223
+ });
157
224
  }
158
- const detection = this.detectBacktracking(position, context, positionToUpdate, gtfsRouteType, tripPositions, startTimestamp, isBacktrackingDetected);
159
- positionToUpdate = detection.positionToUpdate;
160
- isBacktrackingDetected = detection.isBacktrackingDetected;
161
- computedPositions.push(positionToUpdate);
162
- // sets last known BEFORE_TRACK_DELAYED position
163
- // sets last position tracking (only for at_stop and on_track)
164
- this.setLastPositionTracking(position, context, positionToUpdate);
165
225
  // set new first position at stop streak if this stop seqence is set and it is not same as before
166
- this.setFirstUniqueStopSequence(positionToUpdate, context, position);
226
+ if (positionToUpdate
227
+ ? positionToUpdate.this_stop_sequence &&
228
+ context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
229
+ : position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
230
+ context.atStopStreak.stop_sequence = positionToUpdate
231
+ ? positionToUpdate.this_stop_sequence
232
+ : position.this_stop_sequence;
233
+ context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
234
+ context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
235
+ }
167
236
  // IF currently valid updated position / position was processed before
168
237
  // and it is NOT AT_STOP
169
238
  // then disrupt atStopStreak
170
- if (this.disruptAtStopStreak(position, positionToUpdate)) {
239
+ if (positionToUpdate &&
240
+ positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED &&
241
+ !positionToUpdate.this_stop_sequence) {
242
+ context.atStopStreak.stop_sequence = null;
243
+ }
244
+ else if (!positionToUpdate && !position.this_stop_sequence) {
171
245
  context.atStopStreak.stop_sequence = null;
172
246
  }
173
- // based on the fact that current position has some tcp_event
174
- // allows the canceled boolean to be changed, otherwise use the prev.value
175
- lastPositionStaysCanceled = this.hasTcpEventOrCancel(position) ?? lastPositionStaysCanceled;
176
247
  // duplicated or mismatched position should not be considered at all
177
248
  if (positionToUpdate &&
178
249
  positionToUpdate.state_position !== const_1.StatePositionEnum.DUPLICATE &&
@@ -181,7 +252,7 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
181
252
  context.lastPositionId = position.id;
182
253
  context.lastPositionLat = position.lat;
183
254
  context.lastPositionLng = position.lng;
184
- context.lastPositionCanceled = lastPositionStaysCanceled || position.is_canceled;
255
+ context.lastPositionCanceled = position.is_canceled;
185
256
  context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
186
257
  context.lastStopSequence = positionToUpdate.last_stop_sequence ?? context.lastStopSequence ?? null;
187
258
  if (context.lastPositionState !== positionToUpdate.state_position) {
@@ -197,6 +268,97 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
197
268
  isBacktrackingDetected: isBacktrackingDetected,
198
269
  };
199
270
  };
271
+ this.getCurrentContext = (tripPositions) => {
272
+ const context = tripPositions.last_position_context ?? {
273
+ atStopStreak: {
274
+ stop_sequence: null,
275
+ firstPositionTimestamp: null,
276
+ firstPositionDelay: null,
277
+ },
278
+ lastPositionLastStop: {
279
+ id: null,
280
+ sequence: null,
281
+ arrival_time: null,
282
+ arrival_delay: null,
283
+ departure_time: null,
284
+ departure_delay: null,
285
+ },
286
+ lastPositionDelay: null,
287
+ lastPositionId: null,
288
+ lastPositionLat: null,
289
+ lastPositionLng: null,
290
+ lastPositionOriginTimestamp: null,
291
+ lastPositionTracking: null,
292
+ lastPositionCanceled: null,
293
+ lastPositionBeforeTrackDelayed: null,
294
+ lastPositionState: null,
295
+ lastStopSequence: null,
296
+ lastPositionStateChange: null,
297
+ tripId: tripPositions.id,
298
+ };
299
+ return context;
300
+ };
301
+ /**
302
+ * Decide how to process input position data
303
+ *
304
+ * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
305
+ * @returns {PositionHandlerEnum} - Returns action handler enum
306
+ */
307
+ this.setPositionUpdateHandler = (position) => {
308
+ if (position.state_process === const_1.StateProcessEnum.PROCESSED || position.state_process === const_1.StateProcessEnum.INVALIDATED)
309
+ return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
310
+ else if (position.is_canceled)
311
+ return PositionHandlerEnum_1.PositionHandlerEnum.CANCELED;
312
+ else if (position.is_tracked)
313
+ return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
314
+ else
315
+ return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
316
+ };
317
+ /**
318
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
319
+ *
320
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
321
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
322
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
323
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
324
+ * @returns {IPositionToUpdate} - Position object to update
325
+ */
326
+ this.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp, gtfsRouteType) => {
327
+ const anchorPointSegmenter = new AnchorPointSegmenter_1.AnchorPointSegmenter(tripGtfsData.shapes_anchor_points, currentPosition);
328
+ const defaultStatePosition = const_1.StatePositionEnum.OFF_TRACK;
329
+ // Initial value
330
+ let estimatedPoint = {
331
+ id: currentPosition.properties.id,
332
+ state_position: defaultStatePosition,
333
+ state_process: const_1.StateProcessEnum.PROCESSED,
334
+ tcp_event: currentPosition.properties.tcp_event,
335
+ valid_to: this.validToCalculator.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
336
+ ...(context &&
337
+ context.lastPositionTracking?.properties.last_stop_sequence && {
338
+ shape_dist_traveled: context.lastPositionTracking?.properties.shape_dist_traveled,
339
+ last_stop_arrival_time: context.lastPositionTracking?.properties.last_stop_arrival_time
340
+ ? new Date(context.lastPositionTracking?.properties.last_stop_arrival_time)
341
+ : undefined,
342
+ last_stop_departure_time: context.lastPositionTracking?.properties.last_stop_departure_time
343
+ ? new Date(context.lastPositionTracking?.properties.last_stop_departure_time)
344
+ : undefined,
345
+ last_stop_sequence: context.lastPositionTracking?.properties.last_stop_sequence,
346
+ last_stop_id: context.lastPositionTracking?.properties.last_stop_id,
347
+ }),
348
+ };
349
+ let lastStopSequence = null;
350
+ if (context?.lastPositionState === const_1.StatePositionEnum.BEFORE_TRACK) {
351
+ lastStopSequence = 1;
352
+ }
353
+ else if (context?.lastPositionTracking) {
354
+ lastStopSequence = context.lastPositionTracking.properties.last_stop_sequence;
355
+ }
356
+ const closesPoint = anchorPointSegmenter.getClosesPoint(lastStopSequence);
357
+ if (!closesPoint) {
358
+ return estimatedPoint;
359
+ }
360
+ return this.getClosestPoint(currentPosition, context, startDayTimestamp, closesPoint, tripGtfsData, gtfsRouteType);
361
+ };
200
362
  /**
201
363
  * Picks only one closest point for multiple possible points based on delay of last position and stop times
202
364
  *
@@ -259,7 +421,7 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
259
421
  }
260
422
  if (isBusOrTram && this.isAfterTrack(lastStopSequence, lastTripShapePoint)) {
261
423
  statePosition = const_1.StatePositionEnum.AFTER_TRACK;
262
- if (PositionStateDelayManager.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
424
+ if (PositionStateDelayManager_1.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
263
425
  statePosition = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
264
426
  }
265
427
  else {
@@ -310,20 +472,84 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
310
472
  };
311
473
  return estimatedPoint;
312
474
  };
313
- }
314
- detectBacktracking(position, context, positionToUpdate, gtfsRouteType, tripPositions, startTimestamp, isBacktrackingDetected) {
315
- if (positionToUpdate) {
316
- positionToUpdate.is_tracked ??= position.is_tracked;
317
- positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
318
- // backtracking detection so we can later invalidate old positions
319
- if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
320
- isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
475
+ /**
476
+ * Corrects time delay at stop with dwelling time
477
+ *
478
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
479
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
480
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
481
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
482
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
483
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
484
+ */
485
+ this.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisStopSequence, stopTimes) => {
486
+ // compute dwell time in stop, most common is zero
487
+ const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
488
+ // if dwell time is sheduled as zero, return initial computed delay
489
+ if (stopDwellTimeSeconds <= 0) {
490
+ return timeDelay;
321
491
  }
322
- return { positionToUpdate, isBacktrackingDetected };
323
- }
324
- else {
325
- return { positionToUpdate: null, isBacktrackingDetected };
492
+ // if last position was not in this same stop or there is no last position at all
493
+ if (!context || context.atStopStreak.stop_sequence !== thisStopSequence) {
494
+ // timeDelay >= 0 trip is DELAYED
495
+ // we presume it will lower delay by shortening its scheduled dwell time,
496
+ // cant go under zero of course, trip should not go ahead
497
+ // else trip is AHeAD
498
+ // left computed delay as it was
499
+ return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
500
+ }
501
+ // we presume that first position at same stop is real arrival time
502
+ if (context.atStopStreak.firstPositionDelay >= 0) {
503
+ // trip was DELAYED before
504
+ // we presume it will lower delay by shortening its scheduled dwell time,
505
+ // cant go under zero of course, trip should not go ahead
506
+ return Math.max(timeDelay - stopDwellTimeSeconds, 0);
507
+ }
508
+ // trip was AHEAD before
509
+ // real dwell time so far
510
+ const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - context.atStopStreak.firstPositionTimestamp) / 1000);
511
+ // if real dwell is longer than scheduled, then add to negative delay time
512
+ return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
513
+ };
514
+ /**
515
+ * Compute UTC timestamp of start of day when trip starts
516
+ *
517
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
518
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
519
+ * @returns {number} - Returns unix timestamp in milliseconds.
520
+ */
521
+ this.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
522
+ let startDayTimestamp = moment_timezone_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
523
+ const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / ONE_DAY_IN_SECONDS);
524
+ // if trip has 24+ stop times set real startDay to yesterday
525
+ if (stopTimeDayOverflow > 0) {
526
+ startDayTimestamp.subtract(1, "day");
527
+ }
528
+ return startDayTimestamp.valueOf();
529
+ };
530
+ }
531
+ /**
532
+ * Get delay in seconds for positions before track to ensure correct delay propagation
533
+ *
534
+ * @param lastPositionDelay The last position delay in seconds
535
+ * @param firstStopDepartureTime The first stop departure time in seconds. The time is measured from "noon minus 12h" of the
536
+ * service day (effectively midnight except for days on which daylight savings time changes occur). For times occurring after
537
+ * midnight on the service day, enter the time as a value greater than 24:00:00 in seconds. See also
538
+ * <https://gtfs.org/schedule/reference/#:~:text=A%20phone%20number.-,Time,-%2D%20Time%20in%20the>.
539
+ * @param positionOriginUnixTimestamp The Unix Epoch timestamp of the current position, in milliseconds
540
+ * @param startDayUnixTimestamp The Unix Epoch timestamp of the start of the service day, in milliseconds
541
+ */
542
+ getDelayBeforeTrack(lastPositionDelay, firstStopDepartureTime, positionOriginUnixTimestamp, startDayUnixTimestamp) {
543
+ if (typeof lastPositionDelay !== "number") {
544
+ return null;
326
545
  }
546
+ const startDayMoment = moment_timezone_1.default.utc(startDayUnixTimestamp).tz(DateTimeUtils_1.DateTimeUtils.TIMEZONE);
547
+ startDayMoment.hours(12).minutes(0).seconds(0).milliseconds(0);
548
+ startDayMoment.subtract(12, "hours");
549
+ startDayMoment.add(firstStopDepartureTime, "seconds");
550
+ const departureTimeInSeconds = Math.floor(startDayMoment.toDate().valueOf() / ONE_SECOND_IN_MILLIS);
551
+ const positionOriginTimeInSeconds = Math.floor(positionOriginUnixTimestamp / ONE_SECOND_IN_MILLIS);
552
+ return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
327
553
  }
328
554
  getStateAndStopSequences(gtfsRouteType, thisClosestPoint, positionProperties, context) {
329
555
  let statePosition = thisClosestPoint.this_stop_sequence ? const_1.StatePositionEnum.AT_STOP : const_1.StatePositionEnum.ON_TRACK;
@@ -365,25 +591,12 @@ let PositionsManager = exports.PositionsManager = PositionsManager_1 = class Pos
365
591
  nextStopSequence,
366
592
  };
367
593
  }
368
- hasTcpEventOrCancel(position) {
369
- const tcpEvent = position.tcp_event;
370
- if (tcpEvent === const_1.TCPEventEnum.TERMINATED) {
371
- return true;
372
- }
373
- else if (tcpEvent === const_1.TCPEventEnum.ARRIVAL_ANNOUNCED || tcpEvent === const_1.TCPEventEnum.DEPARTURED) {
374
- return false;
375
- }
376
- else if (tcpEvent === const_1.RegionalBusEventEnum.DEPARTURED) {
377
- return false;
378
- }
379
- return null;
380
- }
381
594
  isAfterTrack(lastStopSequence, lastTripShapePoint) {
382
595
  // Trip is terminated OR the vehicle is close to/in the terminus
383
596
  return lastStopSequence >= lastTripShapePoint.last_stop_sequence;
384
597
  }
385
598
  };
386
- exports.PositionsManager = PositionsManager = PositionsManager_1 = __decorate([
599
+ exports.PositionsManager = PositionsManager = __decorate([
387
600
  (0, tsyringe_1.injectable)(),
388
601
  __param(0, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.ValidToCalculator)),
389
602
  __metadata("design:paramtypes", [ValidToCalculator_1.ValidToCalculator])