@golemio/pid 3.11.1-dev.1762543267 → 3.11.1-dev.1767104246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.d.ts +3 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js +24 -11
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js +0 -1
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js +19 -9
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js +31 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js.map +1 -1
- package/package.json +1 -1
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { IProcessedPositions, ITripPositionsWithGTFS } from "../../../vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces";
|
|
1
|
+
import { IProcessedPositions, IRedisKeyExpiration, ITripPositionsWithGTFS } from "../../../vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces";
|
|
2
2
|
import { RedisModel } from "@golemio/core/dist/integration-engine/models/RedisModel";
|
|
3
3
|
export declare class DelayComputationRedisRepository extends RedisModel {
|
|
4
4
|
static NAMESPACE_PREFIX: string;
|
|
5
5
|
constructor();
|
|
6
6
|
expire(keys: string[], ttlInSeconds: number): Promise<void>;
|
|
7
|
+
expirePxat(tripIdsWithTtl: IRedisKeyExpiration[]): Promise<void>;
|
|
7
8
|
cacheTripDataBatch(trips: ITripPositionsWithGTFS[], positions: IProcessedPositions[]): Promise<void>;
|
|
9
|
+
calculateExpirationTtl(trip: ITripPositionsWithGTFS, lastPositionId: string | null): number;
|
|
8
10
|
}
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js
CHANGED
|
@@ -28,20 +28,25 @@ class DelayComputationRedisRepository extends RedisModel_1.RedisModel {
|
|
|
28
28
|
throw new golemio_errors_1.GeneralError("Error while expiring keys in Redis", this.constructor.name, err);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
|
+
async expirePxat(tripIdsWithTtl) {
|
|
32
|
+
const pipeline = this.connection.pipeline();
|
|
33
|
+
for (const trip of tripIdsWithTtl) {
|
|
34
|
+
const redisKey = `${this.prefix}:${trip.gtfs_trip_id}`;
|
|
35
|
+
pipeline.pexpireat(redisKey, trip.expirationTtl);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
await pipeline.exec();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
throw new golemio_errors_1.GeneralError("Error while expiring keys in Redis", this.constructor.name, err);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
31
44
|
async cacheTripDataBatch(trips, positions) {
|
|
32
45
|
const pipeline = this.connection.pipeline();
|
|
33
|
-
const now = new Date();
|
|
34
|
-
const expirationLimit = new Date(now.getTime() + 30 * 60 * 1000); // 30 minutes
|
|
35
46
|
for (const trip of trips) {
|
|
36
|
-
const tripPositions = positions.find((p) => p.context.tripId === trip.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
const lastPositionId = tripPositions.context.lastPositionId;
|
|
41
|
-
const lastPosition = lastPositionId ? trip.positions.find((p) => p.id === lastPositionId) : null;
|
|
42
|
-
const expirationTtl = lastPosition?.valid_to
|
|
43
|
-
? Math.min(new Date(lastPosition.valid_to).getTime(), expirationLimit.getTime())
|
|
44
|
-
: expirationLimit.getTime();
|
|
47
|
+
const tripPositions = positions.find((p) => p.context.tripId === trip.gtfsData.trip_id);
|
|
48
|
+
const lastPositionId = tripPositions ? tripPositions.context.lastPositionId : null;
|
|
49
|
+
const expirationTtl = this.calculateExpirationTtl(trip, lastPositionId);
|
|
45
50
|
pipeline.set(`${DelayComputationRedisRepository.NAMESPACE_PREFIX}:${trip.gtfs_trip_id}`, JSON.stringify(trip.gtfsData), "PXAT", expirationTtl);
|
|
46
51
|
}
|
|
47
52
|
try {
|
|
@@ -51,6 +56,14 @@ class DelayComputationRedisRepository extends RedisModel_1.RedisModel {
|
|
|
51
56
|
throw new golemio_errors_1.GeneralError("Error while setting caches in Redis with pipeline", this.constructor.name, err);
|
|
52
57
|
}
|
|
53
58
|
}
|
|
59
|
+
calculateExpirationTtl(trip, lastPositionId) {
|
|
60
|
+
const now = new Date();
|
|
61
|
+
const expirationLimit = new Date(now.getTime() + 30 * 60 * 1000); // 30 minutes
|
|
62
|
+
const lastPosition = lastPositionId ? trip.positions.find((p) => p.id === lastPositionId) : null;
|
|
63
|
+
return lastPosition?.valid_to
|
|
64
|
+
? Math.min(new Date(lastPosition.valid_to).getTime(), expirationLimit.getTime())
|
|
65
|
+
: expirationLimit.getTime();
|
|
66
|
+
}
|
|
54
67
|
}
|
|
55
68
|
exports.DelayComputationRedisRepository = DelayComputationRedisRepository;
|
|
56
69
|
DelayComputationRedisRepository.NAMESPACE_PREFIX = const_1.GTFS_DELAY_COMPUTATION_NAMESPACE_PREFIX;
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,6 @@ class DataCacheManager {
|
|
|
25
25
|
await this.staticFileRepository.truncate(true);
|
|
26
26
|
await this.runTripsRepository.truncate(true);
|
|
27
27
|
await this.blockStopsRepository.truncate(true);
|
|
28
|
-
await this.delayComputationRepository.truncate(true);
|
|
29
28
|
await this.regionalBusGtfsLookupCacheRepository.truncate(true);
|
|
30
29
|
}
|
|
31
30
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCacheManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/helpers/DataCacheManager.ts"],"names":[],"mappings":";;;AAAA,0IAAqI;AACrI,6EAAwE;AACxE,gDAK8B;AAC9B,kCAA+C;AAC/C,4EAAyE;AAGzE,MAAa,gBAAgB;IAQlB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,iCAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAuB,EAAE,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,IAAI,uCAA+B,EAAE,CAAC;QACxE,IAAI,CAAC,oCAAoC,GAAG,IAAI,+DAA8B,EAAE,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,IAAI;YACA,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"DataCacheManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/helpers/DataCacheManager.ts"],"names":[],"mappings":";;;AAAA,0IAAqI;AACrI,6EAAwE;AACxE,gDAK8B;AAC9B,kCAA+C;AAC/C,4EAAyE;AAGzE,MAAa,gBAAgB;IAQlB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED;QACI,IAAI,CAAC,oBAAoB,GAAG,IAAI,iCAAyB,EAAE,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,IAAI,+BAAuB,EAAE,CAAC;QACxD,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,IAAI,uCAA+B,EAAE,CAAC;QACxE,IAAI,CAAC,oCAAoC,GAAG,IAAI,+DAA8B,EAAE,CAAC;IACrF,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,IAAI;YACA,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,oCAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAClE;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,6BAAY,CAAC,yCAAyC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SACjG;IACL,CAAC;CACJ;AApCD,4CAoCC"}
|
|
@@ -59,6 +59,10 @@ export interface IComputationTrip {
|
|
|
59
59
|
shapes_anchor_points: IShapeAnchorPoint[];
|
|
60
60
|
shapes: IComputationTripShape[];
|
|
61
61
|
}
|
|
62
|
+
export interface IRedisKeyExpiration {
|
|
63
|
+
gtfs_trip_id: string;
|
|
64
|
+
expirationTtl: number;
|
|
65
|
+
}
|
|
62
66
|
export interface ITripPositionsWithOrWithoutGTFS {
|
|
63
67
|
gtfsData: IComputationTrip | null;
|
|
64
68
|
id: string;
|
|
@@ -12,7 +12,6 @@ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
|
12
12
|
const PositionsRepository_1 = require("../data-access/PositionsRepository");
|
|
13
13
|
const TripsRepository_1 = require("../data-access/TripsRepository");
|
|
14
14
|
const DelayComputationManager_1 = require("../helpers/DelayComputationManager");
|
|
15
|
-
const VPUtils_1 = require("../helpers/VPUtils");
|
|
16
15
|
const UpdateDelaySchema_1 = require("../schema/UpdateDelaySchema");
|
|
17
16
|
const UpdateDelayLimiter_1 = require("./helpers/UpdateDelayLimiter");
|
|
18
17
|
class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
@@ -100,14 +99,18 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
100
99
|
gtfsData,
|
|
101
100
|
});
|
|
102
101
|
}
|
|
103
|
-
const
|
|
102
|
+
const tripsWithNewlyCreatedCache = [];
|
|
103
|
+
const tripsWithExistingCache = [];
|
|
104
104
|
const processedPositions = await Promise.all(tripsPositionsWithGtfsData.map(async (trip) => {
|
|
105
105
|
if (trip.gtfsData === null) {
|
|
106
106
|
trip = await this.enrichTripWithGtfsComputationData(trip);
|
|
107
107
|
if (trip.gtfsData === null) {
|
|
108
108
|
return null;
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
tripsWithNewlyCreatedCache.push(trip);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
tripsWithExistingCache.push(trip);
|
|
111
114
|
}
|
|
112
115
|
const computedPositions = this.regionalBusPositionsManager.computePositions(trip);
|
|
113
116
|
this.propagateKnownPositionProperties(trip, computedPositions);
|
|
@@ -117,7 +120,8 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
117
120
|
await this.updateComputedPositionsAndTrips(validProcessedPositions);
|
|
118
121
|
await Promise.all([
|
|
119
122
|
this.invalidateBacktrackedPositions(validProcessedPositions),
|
|
120
|
-
|
|
123
|
+
this.delayComputationRedisRepository.cacheTripDataBatch(tripsWithNewlyCreatedCache, validProcessedPositions),
|
|
124
|
+
this.expireDelayComputationCache(tripsWithExistingCache, validProcessedPositions),
|
|
121
125
|
]);
|
|
122
126
|
await queueprocessors_1.QueueManager.sendMessageToExchange(this.queuePrefix, "propagateDelay", {
|
|
123
127
|
processedPositions: validProcessedPositions,
|
|
@@ -134,15 +138,21 @@ class ProcessRegionalBusPositionsTask extends workers_1.AbstractTask {
|
|
|
134
138
|
/**
|
|
135
139
|
* Expire delay computation cache for given trips
|
|
136
140
|
*/
|
|
137
|
-
async expireDelayComputationCache(
|
|
138
|
-
const
|
|
139
|
-
for (const trip of
|
|
141
|
+
async expireDelayComputationCache(tripWithExistingCache, positions) {
|
|
142
|
+
const tripIdsWithTtl = [];
|
|
143
|
+
for (const trip of tripWithExistingCache) {
|
|
144
|
+
const tripPositions = positions.find((p) => p.context.tripId === trip.gtfsData.trip_id);
|
|
145
|
+
const lastPositionId = tripPositions ? tripPositions.context.lastPositionId : null;
|
|
146
|
+
const expirationTtl = this.delayComputationRedisRepository.calculateExpirationTtl(trip, lastPositionId);
|
|
140
147
|
if (trip.gtfsData) {
|
|
141
|
-
|
|
148
|
+
tripIdsWithTtl.push({
|
|
149
|
+
gtfs_trip_id: trip.gtfsData.trip_id,
|
|
150
|
+
expirationTtl,
|
|
151
|
+
});
|
|
142
152
|
}
|
|
143
153
|
}
|
|
144
154
|
try {
|
|
145
|
-
await this.delayComputationRedisRepository.
|
|
155
|
+
await this.delayComputationRedisRepository.expirePxat(tripIdsWithTtl);
|
|
146
156
|
}
|
|
147
157
|
catch (err) {
|
|
148
158
|
this.logger.error(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessRegionalBusPositionsTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.ts"],"names":[],"mappings":";;;AAAA,oFAAyE;AACzE,oEAAmF;AACnF,wCAA2D;AAC3D,oEAA8E;AAE9E,wEAAqE;AAErE,2FAAqF;AACrF,2EAA6E;AAC7E,6EAA8F;AAE9F,4EAAyE;AACzE,oEAAiE;AACjE,gFAA6E;
|
|
1
|
+
{"version":3,"file":"ProcessRegionalBusPositionsTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,10 @@ export declare class UpdateDelayTask extends AbstractTask<IUpdateDelayInput> {
|
|
|
32
32
|
* @param processedPositions - Arrays of all newly computed positions
|
|
33
33
|
*/
|
|
34
34
|
private updateComputedPositionsAndTrips;
|
|
35
|
+
/**
|
|
36
|
+
* Expire delay computation cache for given trips
|
|
37
|
+
*/
|
|
38
|
+
private expireDelayComputationCache;
|
|
35
39
|
private savePositions;
|
|
36
40
|
/**
|
|
37
41
|
* Invalidate positions after the last stop sequence of backtracked positions
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js
CHANGED
|
@@ -124,14 +124,18 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
124
124
|
gtfsData,
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
|
-
const
|
|
127
|
+
const tripsWithNewlyCreatedCache = [];
|
|
128
|
+
const tripsWithExistingCache = [];
|
|
128
129
|
const processedPositions = await Promise.all(tripsPositionsWithGtfsData.map(async (trip) => {
|
|
129
130
|
if (trip.gtfsData === null) {
|
|
130
131
|
trip = await this.enrichTripWithGtfsComputationData(trip);
|
|
131
132
|
if (trip.gtfsData === null) {
|
|
132
133
|
return null;
|
|
133
134
|
}
|
|
134
|
-
|
|
135
|
+
tripsWithNewlyCreatedCache.push(trip);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
tripsWithExistingCache.push(trip);
|
|
135
139
|
}
|
|
136
140
|
const computedPositions = this.positionsManager.computePositions(trip, data.schedule);
|
|
137
141
|
this.propagateKnownPositionProperties(trip, computedPositions);
|
|
@@ -141,7 +145,8 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
141
145
|
await this.updateComputedPositionsAndTrips(validProcessedPositions);
|
|
142
146
|
await Promise.all([
|
|
143
147
|
this.invalidateBacktrackedPositions(validProcessedPositions),
|
|
144
|
-
this.delayComputationRedisRepository.cacheTripDataBatch(
|
|
148
|
+
this.delayComputationRedisRepository.cacheTripDataBatch(tripsWithNewlyCreatedCache, validProcessedPositions),
|
|
149
|
+
this.expireDelayComputationCache(tripsWithExistingCache, validProcessedPositions),
|
|
145
150
|
]);
|
|
146
151
|
await queueprocessors_1.QueueManager.sendMessageToExchange(this.queuePrefix, "propagateDelay", {
|
|
147
152
|
processedPositions: validProcessedPositions,
|
|
@@ -155,6 +160,29 @@ class UpdateDelayTask extends workers_1.AbstractTask {
|
|
|
155
160
|
throw new golemio_errors_1.GeneralError(`Error while updating delay. For trip ids:${tripIds.slice(0, 10).join(",")}`, this.constructor.name, err);
|
|
156
161
|
}
|
|
157
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Expire delay computation cache for given trips
|
|
165
|
+
*/
|
|
166
|
+
async expireDelayComputationCache(tripWithExistingCache, positions) {
|
|
167
|
+
const tripIdsWithTtl = [];
|
|
168
|
+
for (const trip of tripWithExistingCache) {
|
|
169
|
+
const tripPositions = positions.find((p) => p.context.tripId === trip.gtfsData.trip_id);
|
|
170
|
+
const lastPositionId = tripPositions ? tripPositions.context.lastPositionId : null;
|
|
171
|
+
const expirationTtl = this.delayComputationRedisRepository.calculateExpirationTtl(trip, lastPositionId);
|
|
172
|
+
if (trip.gtfsData) {
|
|
173
|
+
tripIdsWithTtl.push({
|
|
174
|
+
gtfs_trip_id: trip.gtfsData.trip_id,
|
|
175
|
+
expirationTtl,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
await this.delayComputationRedisRepository.expirePxat(tripIdsWithTtl);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
this.logger.error(err);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
158
186
|
async savePositions(data) {
|
|
159
187
|
// unique ids in input data in key-value (id-positions) structure
|
|
160
188
|
let tripIdToPositionDict = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.ts"],"names":[],"mappings":";;;AAAA,0EAA4D;AAC5D,4FAAiF;AACjF,oFAAyE;AACzE,oEAA8G;AAC9G,sDAA2D;AAC3D,gGAAqF;AACrF,wCAA2D;AAC3D,oEAA8E;AAE9E,wEAAqE;AAErE,2EAAwF;AACxF,2FAAqF;AACrF,2EAA6E;AAC7E,6EAA8F;AAE9F,4EAAyE;AACzE,oEAAiE;AACjE,gFAA6E;AAE7E,kEAA+D;AAC/D,gDAA6C;
|
|
1
|
+
{"version":3,"file":"UpdateDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.ts"],"names":[],"mappings":"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"}
|