@golemio/pid 3.17.2-dev.1964072627 → 3.17.2-dev.1969248519

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.
@@ -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
- return results.reduce((p, c) => {
166
+ const positionsToReturn = 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,6 +209,7 @@ class PositionsRepository extends models_2.PostgresModel {
209
209
  });
210
210
  return p;
211
211
  }, []);
212
+ return positionsToReturn;
212
213
  }
213
214
  catch (err) {
214
215
  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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mEAAuC;AACvC,2FAA0D;AAC1D,uFAA6D;AAC7D,wGAAwE;AAIxE,iFAAqF;AACrF,yEAAqF;AACrF,6EAAwE;AACxE,mFAAkF;AAClF,iFAAkF;AAClF,gDAAgE;AAGhE,gFAAwD;AAGxD,MAAa,mBAAoB,SAAQ,sBAAa;IAGlD;QACI,KAAK,CACD,uBAAuB,EACvB;YACI,yBAAyB,EAAE,yBAAW,CAAC,cAAc;YACrD,WAAW,EAAE,oCAAgB,CAAC,SAAS,CAAC,WAAW;YACnD,QAAQ,EAAE,iBAAS;YACnB,UAAU,EAAE,gBAAgB;YAC5B,2BAA2B,EAAE;gBACzB,OAAO,EAAE;oBACL;wBACI,MAAM,EAAE,CAAC,UAAU,CAAC;wBACpB,IAAI,EAAE,qCAAqC;qBAC9C;oBACD;wBACI,MAAM,EAAE,CAAC,aAAa,CAAC;wBACvB,IAAI,EAAE,wCAAwC;qBACjD;iBACJ;aACJ;SACJ,EACD,IAAI,uCAAmB,CAAC,oCAAgB,CAAC,SAAS,CAAC,IAAI,GAAG,gBAAgB,EAAE,yBAAW,CAAC,UAAU,CAAC,CACtG,CAAC;QAON;;;;;;;;;;;;;;WAcG;QACI,+BAA0B,GAAG,KAAK,EAAE,OAAiB,EAA6B,EAAE;YACvF,oEAAoE;YACpE,yEAAyE;YAEzE,wCAAwC;YACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB,OAAO,EAAsB,CAAC;aACjC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC1C,UAAU,EAAE;oBACR,8EAA8E;oBAC9E,IAAI;oBACJ,cAAc;oBACd,iBAAiB;oBACjB,iBAAiB;oBACjB,eAAe;oBACf,uBAAuB;oBACvB,mBAAmB;oBACnB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE;oBACL;wBACI,UAAU,EAAE;4BACR,SAAS;4BACT,KAAK;4BACL,KAAK;4BACL,aAAa;4BACb,kBAAkB;4BAClB,qBAAqB;4BACrB,OAAO;4BACP,YAAY;4BACZ,IAAI;4BACJ,qBAAqB;4BACrB,aAAa;4BACb,gBAAgB;4BAChB,eAAe;4BACf,WAAW;4BACX,oBAAoB;4BACpB,cAAc;4BACd,oBAAoB;4BACpB,cAAc;4BACd,wBAAwB;4BACxB,0BAA0B;4BAC1B,oBAAoB;4BACpB,wBAAwB;4BACxB,0BAA0B;4BAC1B,cAAc;4BACd,oBAAoB;4BACpB,gBAAgB;yBACnB;wBACD,KAAK,EAAE,IAAI,CAAC,cAAc;wBAC1B,KAAK,EAAE;4BACH,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gCACf;oCACI,GAAG,EAAE,EAAE,CAAC,mBAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;oCACjC,GAAG,EAAE,EAAE,CAAC,mBAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;oCACjC,aAAa,EAAE;wCACX,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;4CACf,wBAAgB,CAAC,KAAK;4CACtB,wBAAgB,CAAC,SAAS;4CAC1B,wBAAgB,CAAC,SAAS;yCAC7B;qCACJ;iCACJ;gCACD;oCACI,WAAW,EAAE,IAAI;oCACjB,aAAa,EAAE;wCACX,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;4CACf,wBAAgB,CAAC,KAAK;4CACtB,wBAAgB,CAAC,SAAS;4CAC1B,wBAAgB,CAAC,SAAS;yCAC7B;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;gBACD,KAAK,EAAE;oBACH,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC;oBACrE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC;iBACzE;gBACD,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE;oBACH,YAAY,EAAE,EAAE,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;oBACzC,EAAE,EAAE,EAAE,CAAC,mBAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE;iBACtC;aACJ,CAAC,CAAC;YAEH,6GAA6G;YAC7G,qDAAqD;YACrD,IAAI;gBACA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC3B,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC/D,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE;wBACf,CAAC,CAAC,IAAI,CAAC;4BACH,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;4BAC9C,YAAY,EAAE,CAAC,CAAC,YAAY;4BAC5B,eAAe,EAAE,CAAC,CAAC,eAAoC;4BACvD,SAAS,EAAE,EAAkC;4BAC7C,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;4BAC9C,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;4BACtC,eAAe,EAAE,CAAC,CAAC,eAAe;4BAClC,aAAa,EAAE,CAAC,CAAC,aAAa;4BAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;yBACQ,CAAC,CAAC;wBACtB,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;qBAC9D;oBACD,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;wBACrB,OAAO,EAAE,CAAC,CAAC,oCAAoC,CAAC;wBAChD,KAAK,EAAE,CAAC,CAAC,kCAAkC,CAAC;wBAC5C,EAAE,EAAE,CAAC,CAAC,+BAA+B,CAAC;wBACtC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,IAAI,IAAI;wBAC5D,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,IAAI,IAAI;wBAC5D,WAAW,EAAE,CAAC,CAAC,wCAAwC,CAAC;wBACxD,gBAAgB,EAAE,CAAC,CAAC,6CAA6C,CAAC;wBAClE,mBAAmB,EAAE,CAAC,CAAC,gDAAgD,CAAC,IAAI,IAAI;wBAChF,mBAAmB,EAAE,UAAU,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,IAAI,IAAI;wBAC5F,UAAU,EAAE,CAAC,CAAC,uCAAuC,CAAC;wBACtD,WAAW,EAAE,CAAC,CAAC,wCAAwC,CAAC;wBACxD,cAAc,EAAE,CAAC,CAAC,2CAA2C,CAAsB;wBACnF,aAAa,EAAE,CAAC,CAAC,0CAA0C,CAAqB;wBAChF,SAAS,EAAE,CAAC,CAAC,sCAAsC,CAAC;wBACpD,kBAAkB,EAAE,CAAC,CAAC,+CAA+C,CAAC;wBACtE,YAAY,EAAE,CAAC,CAAC,yCAAyC,CAAC;wBAC1D,kBAAkB,EAAE,CAAC,CAAC,+CAA+C,CAAC;wBACtE,YAAY,EAAE,CAAC,CAAC,yCAAyC,CAAC;wBAC1D,sBAAsB,EAAE,CAAC,CAAC,mDAAmD,CAAC;wBAC9E,wBAAwB,EAAE,CAAC,CAAC,qDAAqD,CAAC;wBAClF,kBAAkB,EAAE,CAAC,CAAC,+CAA+C,CAAC;wBACtE,sBAAsB,EAAE,CAAC,CAAC,mDAAmD,CAAC;wBAC9E,wBAAwB,EAAE,CAAC,CAAC,qDAAqD,CAAC;wBAClF,YAAY,EAAE,CAAC,CAAC,yCAAyC,CAAC;wBAC1D,kBAAkB,EAAE,CAAC,CAAC,+CAA+C,CAAC;wBACtE,cAAc,EAAE,CAAC,CAAC,2CAA2C,CAAC;qBACnC,CAAC,CAAC;oBACjC,OAAO,CAAC,CAAC;gBACb,CAAC,EAAE,EAAsB,CAAC,CAAC;aAC9B;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAClB,+DAA+D,OAAO,CAAC,MAAM,GAAG,EAChF,IAAI,CAAC,IAAI,EACT,GAAG,CACN,CAAC;aACL;QACL,CAAC,CAAC;QAEK,4BAAuB,GAAG,KAAK,EAClC,EAAE,GAAG,EAAE,WAAW,EAA4B,EAC9C,QAAsB,EACtB,SAAS,GAAG,IAAI,EACK,EAAE;YACvB,IAAI;gBACA,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAC7C,yBAAe,CAAC,iBAAiB,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,EACxE;oBACI,SAAS,EAAE,IAAI;iBAClB,CACJ,CAAC;gBAEF,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,0DAA0D,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACtG;QACL,CAAC,CAAC;QAEK,2BAAsB,GAAG,KAAK,EACjC,QAAqC,EACrC,QAAsB,EACtB,SAAS,GAAG,IAAI,EACK,EAAE;YACvB,IAAI;gBACA,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,yBAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBAC/G,SAAS,EAAE,IAAI;iBAClB,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,yDAAyD,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACrG;QACL,CAAC,CAAC;QAEK,wBAAmB,GAAG,KAAK,EAAE,KAAa,EAAmB,EAAE;YAClE,IAAI;gBACA,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;oBACrC,KAAK,EAAE;wBACH,UAAU,EAAE;4BACR,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,mBAAS,CAAC,OAAO,CAAC,qBAAqB,KAAK,SAAS,CAAC;yBAClE;qBACJ;iBACJ,CAAC,CAAC;aACN;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,8BAA8B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACtF;QACL,CAAC,CAAC;QAEK,iBAAY,GAAG,KAAK,EAAE,WAAkC,EAAwB,EAAE;YACrF,IAAI;gBACA,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE;oBACjD,SAAS,EAAE,IAAI;iBAClB,CAAC,CAAC;aACN;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,uCAAuC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACnF;QACL,CAAC,CAAC;QAEF;;;;;WAKG;QACI,yCAAoC,GAAG,KAAK,EAC/C,0BAAmD,EACpC,EAAE;YACjB,IAAI,0BAA0B,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzC,OAAO,CAAC,CAAC;aACZ;YAED,MAAM,YAAY,GAAiB;gBAC/B,aAAa,EAAE,wBAAgB,CAAC,SAAS;gBACzC,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;oBACjE,QAAQ,EAAE,MAAM;oBAChB,kBAAkB,EAAE;wBAChB,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,YAAY;qBACxB;iBACJ,CAAC,CAAC;aACN,CAAC;YAEF,IAAI;gBACA,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAC5C;oBACI,aAAa,EAAE,wBAAgB,CAAC,WAAW;oBAC3C,cAAc,EAAE,yBAAiB,CAAC,OAAO;iBAC5C,EACD;oBACI,KAAK,EAAE,YAAY;iBACtB,CACJ,CAAC;gBAEF,OAAO,KAAK,CAAC;aAChB;YAAC,OAAO,GAAG,EAAE;gBACV,MAAM,IAAI,6BAAY,CAAC,gDAAgD,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aAC5F;QACL,CAAC,CAAC;QAzQE,IAAI,CAAC,UAAU,GAAG,8BAAiB,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,qBAAY,CAAC,UAAU,EAAE,qBAAY,CAAC,cAAc,EAAE;YAC7G,MAAM,EAAE,iBAAS;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9F,CAAC;CAsQJ;AApSD,kDAoSC"}
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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"}
@@ -0,0 +1,90 @@
1
+ import { IVPTripsPositionAttributes } from "../../../../../schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes";
2
+ import { IVPTripsLastPositionContext } from "../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
3
+ import { IScheduleDto } from "../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
4
+ import { Feature, Point } from "@turf/turf";
5
+ import { StatePositionEnum } from "../../../../../const";
6
+ import { GTFSRouteTypeEnum } from "../../../../../helpers/RouteTypeEnums";
7
+ import { IComputationTrip, ICurrentPositionProperties, IPositionToUpdate, IProcessedPositions, IShapeAnchorPoint, ITripPositionsWithGTFS, IUpdatePositionsIteratorOptions } from "../interfaces/VPInterfaces";
8
+ import { PositionHandlerEnum } from "./PositionHandlerEnum";
9
+ import { ValidToCalculator } from "./ValidToCalculator";
10
+ import { IStopTime } from "../../../../ropid-gtfs/interfaces/TripModelInterfaces";
11
+ export declare abstract class BasePositionsManager {
12
+ protected readonly useEndTimestamp: boolean;
13
+ protected readonly allowCancelState: boolean;
14
+ protected static sortByOriginTimestamp: (a: IVPTripsPositionAttributes, b: IVPTripsPositionAttributes) => 1 | 0 | -1;
15
+ protected abstract validToCalculator: ValidToCalculator;
16
+ constructor({ useEndTimestamp, allowCancelState }: {
17
+ useEndTimestamp?: boolean | undefined;
18
+ allowCancelState?: boolean | undefined;
19
+ });
20
+ abstract updatePositions(options: IUpdatePositionsIteratorOptions, schedule: IScheduleDto[] | undefined): IProcessedPositions;
21
+ protected abstract getClosestPoint(currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, thisClosestPoint: IShapeAnchorPoint, tripGtfsData: IComputationTrip, gtfsRouteType?: GTFSRouteTypeEnum): IPositionToUpdate;
22
+ private getCurrentContext;
23
+ /**
24
+ * Compute positions and return computed positions
25
+ *
26
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
27
+ * @returns {IProcessedPositions} - Returns computed/updated positions
28
+ */
29
+ computePositions: (tripPositions: ITripPositionsWithGTFS, schedule?: IScheduleDto[] | undefined) => IProcessedPositions;
30
+ /**
31
+ * Decide how to process input position data
32
+ *
33
+ * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
34
+ * @returns {PositionHandlerEnum} - Returns action handler enum
35
+ */
36
+ protected setPositionUpdateHandler: (position: IVPTripsPositionAttributes) => PositionHandlerEnum;
37
+ /**
38
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
39
+ *
40
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
41
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
42
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
43
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
44
+ * @returns {IPositionToUpdate} - Position object to update
45
+ */
46
+ protected getEstimatedPoint: (tripGtfsData: IComputationTrip, currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, gtfsRouteType?: GTFSRouteTypeEnum) => IPositionToUpdate;
47
+ /**
48
+ * Corrects time delay at stop with dwelling time
49
+ *
50
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
51
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
52
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
53
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
54
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
55
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
56
+ */
57
+ protected getCorrectedTimeDelay: (timeDelay: number, context: IVPTripsLastPositionContext | null, currentPosition: Feature<Point, ICurrentPositionProperties>, thisStopSequence: number, stopTimes: {
58
+ departureTime: number;
59
+ arrivalTime: number;
60
+ }) => number;
61
+ /**
62
+ * Compute UTC timestamp of start of day when trip starts
63
+ *
64
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
65
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
66
+ * @returns {number} - Returns unix timestamp in milliseconds.
67
+ */
68
+ protected getStartDayTimestamp: (startTimestamp: number, firstStopTimeScheduledSeconds: number) => number;
69
+ protected disruptAtStopStreak(position: IVPTripsPositionAttributes, positionToUpdate?: IPositionToUpdate | null): boolean;
70
+ protected setFirstUniqueStopSequence(positionToUpdate: IPositionToUpdate | null, context: IVPTripsLastPositionContext, position: IVPTripsPositionAttributes): void;
71
+ protected defaultNonTrackingPositionToUpdate(position: IVPTripsPositionAttributes, firstStopTime: IStopTime, startDayTimestamp: number, setAsInvisible: boolean, lastPositionDelayed: 0 | {
72
+ delay: number | null;
73
+ origin_timestamp: Date;
74
+ } | null): IPositionToUpdate;
75
+ /**
76
+ * Get delay in seconds for positions before track to ensure correct delay propagation
77
+ *
78
+ * @param lastPositionDelay The last position delay in seconds
79
+ * @param firstStopDepartureTime The first stop departure time in seconds. The time is measured from "noon minus 12h" of the
80
+ * service day (effectively midnight except for days on which daylight savings time changes occur). For times occurring after
81
+ * midnight on the service day, enter the time as a value greater than 24:00:00 in seconds. See also
82
+ * <https://gtfs.org/schedule/reference/#:~:text=A%20phone%20number.-,Time,-%2D%20Time%20in%20the>.
83
+ * @param positionOriginUnixTimestamp The Unix Epoch timestamp of the current position, in milliseconds
84
+ * @param startDayUnixTimestamp The Unix Epoch timestamp of the start of the service day, in milliseconds
85
+ */
86
+ private getDelayBeforeTrack;
87
+ protected isFreshNewVehicleInSystem(context: IVPTripsLastPositionContext, position: IVPTripsPositionAttributes, endTimestamp: Date | null): boolean;
88
+ protected setLastPositionTracking(position: IVPTripsPositionAttributes, context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null): void;
89
+ protected detectDuplicatePosition(position: IVPTripsPositionAttributes, lastPositionOriginTimestamp: number | null, positionsSource: IVPTripsPositionAttributes[]): StatePositionEnum.AFTER_TRACK | StatePositionEnum.DUPLICATE;
90
+ }
@@ -0,0 +1,316 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.BasePositionsManager = void 0;
30
+ const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
31
+ const turf = __importStar(require("@turf/turf"));
32
+ const const_1 = require("../../../../../const");
33
+ const PositionHandlerEnum_1 = require("./PositionHandlerEnum");
34
+ const AnchorPointSegmenter_1 = require("./anchor-points/AnchorPointSegmenter");
35
+ const DateTimeUtils_1 = require("../../../../../helpers/DateTimeUtils");
36
+ const ONE_DAY_IN_SECONDS = 24 * 60 * 60;
37
+ const ONE_SECOND_IN_MILLIS = 1000;
38
+ class BasePositionsManager {
39
+ constructor({ useEndTimestamp = false, allowCancelState = false }) {
40
+ this.getCurrentContext = (tripPositions) => {
41
+ const context = tripPositions.last_position_context ?? {
42
+ atStopStreak: {
43
+ stop_sequence: null,
44
+ firstPositionTimestamp: null,
45
+ firstPositionDelay: null,
46
+ },
47
+ lastPositionLastStop: {
48
+ id: null,
49
+ sequence: null,
50
+ arrival_time: null,
51
+ arrival_delay: null,
52
+ departure_time: null,
53
+ departure_delay: null,
54
+ },
55
+ lastPositionDelay: null,
56
+ lastPositionId: null,
57
+ lastPositionLat: null,
58
+ lastPositionLng: null,
59
+ lastPositionOriginTimestamp: null,
60
+ lastPositionTracking: null,
61
+ lastPositionCanceled: null,
62
+ lastPositionBeforeTrackDelayed: null,
63
+ lastPositionState: null,
64
+ lastStopSequence: null,
65
+ lastPositionStateChange: null,
66
+ tripId: tripPositions.id,
67
+ };
68
+ return context;
69
+ };
70
+ /**
71
+ * Compute positions and return computed positions
72
+ *
73
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
74
+ * @returns {IProcessedPositions} - Returns computed/updated positions
75
+ */
76
+ this.computePositions = (tripPositions, schedule) => {
77
+ const startTimestamp = tripPositions.start_timestamp.getTime();
78
+ const startDayTimestamp = this.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
79
+ const gtfsRouteType = tripPositions.gtfs_route_type;
80
+ const context = this.getCurrentContext(tripPositions);
81
+ const computedPositions = [];
82
+ const endTimestamp = this.useEndTimestamp ? tripPositions.end_timestamp : null;
83
+ return this.updatePositions({
84
+ tripPositions,
85
+ startTimestamp,
86
+ startDayTimestamp,
87
+ endTimestamp,
88
+ context,
89
+ computedPositions,
90
+ gtfsRouteType,
91
+ }, schedule);
92
+ };
93
+ /**
94
+ * Decide how to process input position data
95
+ *
96
+ * @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
97
+ * @returns {PositionHandlerEnum} - Returns action handler enum
98
+ */
99
+ this.setPositionUpdateHandler = (position) => {
100
+ if (position.state_process === const_1.StateProcessEnum.PROCESSED || position.state_process === const_1.StateProcessEnum.INVALIDATED)
101
+ return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
102
+ else if (this.allowCancelState && position.is_canceled)
103
+ return PositionHandlerEnum_1.PositionHandlerEnum.CANCELED;
104
+ else if (position.is_tracked)
105
+ return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
106
+ else
107
+ return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
108
+ };
109
+ /**
110
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
111
+ *
112
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
113
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
114
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
115
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
116
+ * @returns {IPositionToUpdate} - Position object to update
117
+ */
118
+ this.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp, gtfsRouteType) => {
119
+ const anchorPointSegmenter = new AnchorPointSegmenter_1.AnchorPointSegmenter(tripGtfsData.shapes_anchor_points, currentPosition);
120
+ const defaultStatePosition = const_1.StatePositionEnum.OFF_TRACK;
121
+ // Initial value
122
+ let estimatedPoint = {
123
+ id: currentPosition.properties.id,
124
+ state_position: defaultStatePosition,
125
+ state_process: const_1.StateProcessEnum.PROCESSED,
126
+ // origin_timestamp: currentPosition.properties.origin_timestamp,
127
+ tcp_event: currentPosition.properties.tcp_event,
128
+ valid_to: this.validToCalculator.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
129
+ ...(context?.lastPositionTracking?.properties.last_stop_sequence && {
130
+ shape_dist_traveled: context.lastPositionTracking?.properties.shape_dist_traveled,
131
+ last_stop_arrival_time: context.lastPositionTracking?.properties.last_stop_arrival_time
132
+ ? new Date(context.lastPositionTracking?.properties.last_stop_arrival_time)
133
+ : undefined,
134
+ last_stop_departure_time: context.lastPositionTracking?.properties.last_stop_departure_time
135
+ ? new Date(context.lastPositionTracking?.properties.last_stop_departure_time)
136
+ : undefined,
137
+ last_stop_sequence: context.lastPositionTracking?.properties.last_stop_sequence,
138
+ last_stop_id: context.lastPositionTracking?.properties.last_stop_id,
139
+ }),
140
+ };
141
+ let lastStopSequence = null;
142
+ if (context?.lastPositionState === const_1.StatePositionEnum.BEFORE_TRACK) {
143
+ lastStopSequence = 1;
144
+ }
145
+ else if (context?.lastPositionTracking) {
146
+ lastStopSequence = context.lastPositionTracking.properties.last_stop_sequence;
147
+ }
148
+ const closestPoint = anchorPointSegmenter.getClosesPoint(lastStopSequence);
149
+ if (!closestPoint) {
150
+ return estimatedPoint;
151
+ }
152
+ return this.getClosestPoint(currentPosition, context, startDayTimestamp, closestPoint, tripGtfsData, gtfsRouteType);
153
+ };
154
+ /**
155
+ * Corrects time delay at stop with dwelling time
156
+ *
157
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
158
+ * @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
159
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
160
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
161
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
162
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
163
+ */
164
+ this.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisStopSequence, stopTimes) => {
165
+ // compute dwell time in stop, most common is zero
166
+ const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
167
+ // if dwell time is sheduled as zero, return initial computed delay
168
+ if (stopDwellTimeSeconds <= 0) {
169
+ return timeDelay;
170
+ }
171
+ // if last position was not in this same stop or there is no last position at all
172
+ if (!context || context.atStopStreak.stop_sequence !== thisStopSequence) {
173
+ // timeDelay >= 0 trip is DELAYED
174
+ // we presume it will lower delay by shortening its scheduled dwell time,
175
+ // cant go under zero of course, trip should not go ahead
176
+ // else trip is AHeAD
177
+ // left computed delay as it was
178
+ return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
179
+ }
180
+ // we presume that first position at same stop is real arrival time
181
+ if (context.atStopStreak.firstPositionDelay >= 0) {
182
+ // trip was DELAYED before
183
+ // we presume it will lower delay by shortening its scheduled dwell time,
184
+ // cant go under zero of course, trip should not go ahead
185
+ return Math.max(timeDelay - stopDwellTimeSeconds, 0);
186
+ }
187
+ // trip was AHEAD before
188
+ // real dwell time so far
189
+ const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - context.atStopStreak.firstPositionTimestamp) / 1000);
190
+ // if real dwell is longer than scheduled, then add to negative delay time
191
+ return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
192
+ };
193
+ /**
194
+ * Compute UTC timestamp of start of day when trip starts
195
+ *
196
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
197
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
198
+ * @returns {number} - Returns unix timestamp in milliseconds.
199
+ */
200
+ this.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
201
+ let startDayTimestamp = moment_timezone_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
202
+ const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / ONE_DAY_IN_SECONDS);
203
+ // if trip has 24+ stop times set real startDay to yesterday
204
+ if (stopTimeDayOverflow > 0) {
205
+ startDayTimestamp.subtract(1, "day");
206
+ }
207
+ return startDayTimestamp.valueOf();
208
+ };
209
+ this.useEndTimestamp = useEndTimestamp;
210
+ this.allowCancelState = allowCancelState;
211
+ }
212
+ disruptAtStopStreak(position, positionToUpdate) {
213
+ if (!positionToUpdate && !position.this_stop_sequence) {
214
+ return true;
215
+ }
216
+ return !!(positionToUpdate &&
217
+ positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED &&
218
+ !positionToUpdate.this_stop_sequence);
219
+ }
220
+ setFirstUniqueStopSequence(positionToUpdate, context, position) {
221
+ if (positionToUpdate
222
+ ? positionToUpdate.this_stop_sequence &&
223
+ context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
224
+ : position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
225
+ context.atStopStreak.stop_sequence = positionToUpdate
226
+ ? positionToUpdate.this_stop_sequence
227
+ : position.this_stop_sequence;
228
+ context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
229
+ context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
230
+ }
231
+ }
232
+ defaultNonTrackingPositionToUpdate(position, firstStopTime, startDayTimestamp, setAsInvisible, lastPositionDelayed) {
233
+ const positionToUpdate = {
234
+ id: position.id,
235
+ next_stop_arrival_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.arrival_time_seconds, startDayTimestamp),
236
+ next_stop_departure_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.departure_time_seconds, startDayTimestamp),
237
+ next_stop_id: firstStopTime.stop_id,
238
+ next_stop_sequence: firstStopTime.stop_sequence,
239
+ next_stop_name: firstStopTime.stop.stop_name,
240
+ shape_dist_traveled: firstStopTime.shape_dist_traveled,
241
+ state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK,
242
+ state_process: const_1.StateProcessEnum.PROCESSED,
243
+ ...(firstStopTime.stop_headsign && {
244
+ last_stop_headsign: firstStopTime.stop_headsign,
245
+ }),
246
+ };
247
+ if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
248
+ if (lastPositionDelayed === 0) {
249
+ positionToUpdate.delay = 0;
250
+ }
251
+ else {
252
+ positionToUpdate.delay = this.getDelayBeforeTrack(lastPositionDelayed?.delay ?? position.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
253
+ }
254
+ }
255
+ return positionToUpdate;
256
+ }
257
+ /**
258
+ * Get delay in seconds for positions before track to ensure correct delay propagation
259
+ *
260
+ * @param lastPositionDelay The last position delay in seconds
261
+ * @param firstStopDepartureTime The first stop departure time in seconds. The time is measured from "noon minus 12h" of the
262
+ * service day (effectively midnight except for days on which daylight savings time changes occur). For times occurring after
263
+ * midnight on the service day, enter the time as a value greater than 24:00:00 in seconds. See also
264
+ * <https://gtfs.org/schedule/reference/#:~:text=A%20phone%20number.-,Time,-%2D%20Time%20in%20the>.
265
+ * @param positionOriginUnixTimestamp The Unix Epoch timestamp of the current position, in milliseconds
266
+ * @param startDayUnixTimestamp The Unix Epoch timestamp of the start of the service day, in milliseconds
267
+ */
268
+ getDelayBeforeTrack(lastPositionDelay, firstStopDepartureTime, positionOriginUnixTimestamp, startDayUnixTimestamp) {
269
+ if (typeof lastPositionDelay !== "number") {
270
+ return null;
271
+ }
272
+ const startDayMoment = moment_timezone_1.default.utc(startDayUnixTimestamp).tz(DateTimeUtils_1.DateTimeUtils.TIMEZONE);
273
+ startDayMoment.hours(12).minutes(0).seconds(0).milliseconds(0);
274
+ startDayMoment.subtract(12, "hours");
275
+ startDayMoment.add(firstStopDepartureTime, "seconds");
276
+ const departureTimeInSeconds = Math.floor(startDayMoment.toDate().valueOf() / ONE_SECOND_IN_MILLIS);
277
+ const positionOriginTimeInSeconds = Math.floor(positionOriginUnixTimestamp / ONE_SECOND_IN_MILLIS);
278
+ return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
279
+ }
280
+ isFreshNewVehicleInSystem(context, position, endTimestamp) {
281
+ const noPreviousTrackingEver = context.lastPositionTracking === null;
282
+ const endTimestampAfterScheduled = endTimestamp === null || position.scheduled_timestamp === null || endTimestamp > position.scheduled_timestamp;
283
+ return noPreviousTrackingEver && endTimestampAfterScheduled;
284
+ }
285
+ setLastPositionTracking(position, context, positionToUpdate) {
286
+ if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
287
+ context.lastPositionBeforeTrackDelayed = {
288
+ delay: positionToUpdate?.delay ?? position.delay,
289
+ origin_timestamp: positionToUpdate?.origin_timestamp ?? position.origin_timestamp,
290
+ };
291
+ }
292
+ if (positionToUpdate?.state_position === const_1.StatePositionEnum.AT_STOP ||
293
+ positionToUpdate?.state_position === const_1.StatePositionEnum.ON_TRACK ||
294
+ position.state_position === const_1.StatePositionEnum.AT_STOP ||
295
+ position.state_position === const_1.StatePositionEnum.ON_TRACK) {
296
+ context.lastPositionTracking = turf.point([position.lng, position.lat], {
297
+ ...position,
298
+ ...positionToUpdate,
299
+ });
300
+ }
301
+ }
302
+ detectDuplicatePosition(position, lastPositionOriginTimestamp, positionsSource) {
303
+ return position.origin_timestamp.getTime() === lastPositionOriginTimestamp ||
304
+ positionsSource.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() && positionItem.is_tracked) >= 0
305
+ ? const_1.StatePositionEnum.DUPLICATE
306
+ : const_1.StatePositionEnum.AFTER_TRACK;
307
+ }
308
+ }
309
+ exports.BasePositionsManager = BasePositionsManager;
310
+ BasePositionsManager.sortByOriginTimestamp = function (a, b) {
311
+ if (!a.origin_timestamp || !b.origin_timestamp || a.origin_timestamp === b.origin_timestamp) {
312
+ return 0;
313
+ }
314
+ return a.origin_timestamp < b.origin_timestamp ? -1 : 1;
315
+ };
316
+ //# sourceMappingURL=BasePositionsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasePositionsManager.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,21 @@
1
+ import { IVPTripsLastPositionContext } from "../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
1
2
  import { IScheduleDto } from "../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
2
- import { IProcessedPositions, ITripPositionsWithGTFS, IUpdatePositionsIteratorOptions } from "../interfaces/VPInterfaces";
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";
3
7
  import { ValidToCalculator } from "./ValidToCalculator";
4
- export declare class PositionsManager {
5
- private validToCalculator;
8
+ export declare class PositionsManager extends BasePositionsManager {
9
+ protected validToCalculator: ValidToCalculator;
6
10
  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;
14
11
  /**
15
12
  * Takes position one by one, set proper handler for type of position, and do the process of position
16
13
  *
17
- * @param {number} i - Iteration
18
14
  * @param {IUpdatePositionsIteratorOptions} options - Initial options
19
15
  * @param {number} cb - Callback function of iterator
20
16
  * @returns {IProcessedPositions} - Returns computed/updated positions
21
17
  */
22
18
  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;
41
19
  /**
42
20
  * Picks only one closest point for multiple possible points based on delay of last position and stop times
43
21
  *
@@ -48,38 +26,9 @@ export declare class PositionsManager {
48
26
  * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
49
27
  * @returns {IPositionToUpdate} - Result point as position to update in DB
50
28
  */
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;
29
+ protected getClosestPoint: (currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, thisClosestPoint: IShapeAnchorPoint, tripGtfsData: IComputationTrip, gtfsRouteType: GTFSRouteTypeEnum) => IPositionToUpdate;
30
+ private detectBacktracking;
83
31
  private getStateAndStopSequences;
32
+ private hasTcpEventOrCancel;
84
33
  private isAfterTrack;
85
34
  }