@golemio/pid 5.9.1-dev.2470905594 → 5.9.1-rc.2470956325

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.
@@ -2,28 +2,8 @@ import { JISInfotextsModel } from "../../../schema-definitions/jis/models/JISInf
2
2
  import { IJISInfotextDto } from "../../../schema-definitions/jis/redis/interfaces/IJISInfotextDto";
3
3
  type InfotextUnion = JISInfotextsModel | IJISInfotextDto;
4
4
  export declare class JISInfotextStopSuppressionFilter {
5
- filterInfotexts<T extends InfotextUnion>(infotexts: T[], { includeFuture }: {
6
- includeFuture: boolean;
7
- }): T[];
8
- private filterInfotextsExcludingFuture;
9
- private getStopId;
10
- private mapTopInfotextSeverityLevelByStopId;
11
- private filterInfotextsIncludingFuture;
12
- private createInfotextIntermediaries;
13
- private mapInfotextsByStopId;
14
- private filterStopInfotexts;
15
- private segmentInfotexts;
16
- private findSegmentationThreshold;
17
- private addDay;
18
- private segmentRepeatedInfotext;
19
- private getMaxSegmentationDayForInfotext;
20
- private getDatetimeFromRepeatTime;
21
- private fitFiniteSegmentToInfotextTimeBounds;
22
- private sortAndFilterSegments;
23
- private isSegmentBLesserThanA;
24
- private findUniqueInfotextsFromSegments;
25
- private mapInfotextIdsByStopId;
26
- private filterAllInfotexts;
27
- private createInfotextsFromIntermediaries;
5
+ filterBySeverityLevel<T extends InfotextUnion>(list: T[]): T[];
6
+ private isStopPresentInHigherSeverityLevels;
7
+ private mapSeverityLevelToNumber;
28
8
  }
29
9
  export {};
@@ -7,250 +7,66 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.JISInfotextStopSuppressionFilter = void 0;
10
- const JISInfotextSeverityLevelPriority_1 = require("../../../helpers/jis/JISInfotextSeverityLevelPriority");
11
10
  const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
11
+ const MAX_SEVERITY_LEVEL = 2;
12
12
  let JISInfotextStopSuppressionFilter = class JISInfotextStopSuppressionFilter {
13
- filterInfotexts(infotexts, { includeFuture }) {
14
- if (!includeFuture) {
15
- return this.filterInfotextsExcludingFuture(infotexts);
16
- }
17
- else {
18
- return this.filterInfotextsIncludingFuture(infotexts);
19
- }
20
- }
21
- filterInfotextsExcludingFuture(infotexts) {
22
- const topInfotextSeverityLevelByStopId = this.mapTopInfotextSeverityLevelByStopId(infotexts);
23
- const filteredInfotexts = [];
24
- for (const infotext of infotexts) {
13
+ filterBySeverityLevel(list) {
14
+ const stopsBySeverity = new Map([
15
+ [MAX_SEVERITY_LEVEL, new Set()], // SEVERE
16
+ [1, new Set()], // WARNING
17
+ [0, new Set()], // INFO
18
+ ]);
19
+ let filteredList = [];
20
+ for (const infotext of list) {
25
21
  if (!infotext.stops) {
26
22
  continue;
27
23
  }
28
- const infotextPrio = JISInfotextSeverityLevelPriority_1.JISInfotextSeverityLevelPriority[infotext.severity_level];
29
- // Assign directly to the original object not a spread copy. For Sequelize model
30
- // instances, `stops` is a prototype getter (not an own property), so a spread copy
31
- // would not include it, causing a TypeError on the filter call.
32
- infotext.stops = infotext.stops.filter((stop) => topInfotextSeverityLevelByStopId.get(this.getStopId(stop)) === infotextPrio);
33
- if (infotext.stops.length > 0) {
34
- filteredInfotexts.push(infotext);
35
- }
36
- }
37
- return filteredInfotexts;
38
- }
39
- getStopId(stop) {
40
- if ("getDataValue" in stop && typeof stop.getDataValue === "function") {
41
- return stop.getDataValue("stop_id");
42
- }
43
- else {
44
- return stop.stop_id;
45
- }
46
- }
47
- mapTopInfotextSeverityLevelByStopId(infotexts) {
48
- const topInfotextSeverityLevelByStopId = new Map();
49
- for (const infotext of infotexts) {
50
- const infotextPrio = JISInfotextSeverityLevelPriority_1.JISInfotextSeverityLevelPriority[infotext.severity_level];
51
- for (const stop of infotext.stops ?? []) {
52
- const currentValue = topInfotextSeverityLevelByStopId.get(this.getStopId(stop)) ?? -Infinity;
53
- if (infotextPrio > currentValue) {
54
- topInfotextSeverityLevelByStopId.set(this.getStopId(stop), infotextPrio);
24
+ const severity = this.mapSeverityLevelToNumber(infotext.severity_level);
25
+ for (let i = infotext.stops.length - 1; i >= 0; i--) {
26
+ const stop = infotext.stops[i];
27
+ let stopId;
28
+ if ("getDataValue" in stop && typeof stop.getDataValue === "function") {
29
+ stopId = stop.getDataValue("stop_id");
55
30
  }
56
- }
57
- }
58
- return topInfotextSeverityLevelByStopId;
59
- }
60
- filterInfotextsIncludingFuture(infotexts) {
61
- const infotextIntermediaries = this.createInfotextIntermediaries(infotexts);
62
- const infotextsByStopId = this.mapInfotextsByStopId(infotextIntermediaries);
63
- const filteredInfotextsByStopId = new Map();
64
- for (const [stopId, infotextsForStop] of infotextsByStopId.entries()) {
65
- const filteredInfotextsForStop = this.filterStopInfotexts(infotextsForStop);
66
- filteredInfotextsByStopId.set(stopId, filteredInfotextsForStop);
67
- }
68
- const filteredInfotextsIdsByStopId = this.mapInfotextIdsByStopId(filteredInfotextsByStopId);
69
- const filteredInfotexts = this.filterAllInfotexts(infotextIntermediaries, filteredInfotextsIdsByStopId);
70
- return this.createInfotextsFromIntermediaries(filteredInfotexts);
71
- }
72
- createInfotextIntermediaries(infotexts) {
73
- return infotexts.map((infotext) => ({
74
- data: infotext,
75
- active_period_start: new Date(infotext.active_period_start),
76
- active_period_end: infotext.active_period_end ? new Date(infotext.active_period_end) : null,
77
- }));
78
- }
79
- mapInfotextsByStopId(infotexts) {
80
- const infotextsByStopId = new Map();
81
- for (const infotext of infotexts) {
82
- for (const stop of infotext.data.stops ?? []) {
83
- const stopId = this.getStopId(stop);
84
- if (!infotextsByStopId.has(stopId)) {
85
- infotextsByStopId.set(stopId, []);
31
+ else {
32
+ stopId = stop.stop_id;
33
+ }
34
+ if (severity === MAX_SEVERITY_LEVEL) {
35
+ stopsBySeverity.get(severity).add(stopId);
36
+ continue;
37
+ }
38
+ let isStopPresent = this.isStopPresentInHigherSeverityLevels(severity, stopId, stopsBySeverity);
39
+ if (isStopPresent) {
40
+ infotext.stops.splice(i, 1);
41
+ }
42
+ else {
43
+ stopsBySeverity.get(severity).add(stopId);
86
44
  }
87
- const infotextsForStop = infotextsByStopId.get(stopId);
88
- infotextsForStop.push(infotext);
89
- }
90
- }
91
- return infotextsByStopId;
92
- }
93
- filterStopInfotexts(infotexts) {
94
- const segments = this.segmentInfotexts(infotexts);
95
- const filteredSegments = this.sortAndFilterSegments(segments);
96
- return this.findUniqueInfotextsFromSegments(filteredSegments);
97
- }
98
- segmentInfotexts(infotexts) {
99
- const maxSegmentationDate = this.findSegmentationThreshold(infotexts);
100
- const segments = [];
101
- for (const infotext of infotexts) {
102
- if (infotext.data.repeat_enabled) {
103
- segments.push(...this.segmentRepeatedInfotext(infotext, maxSegmentationDate));
104
- }
105
- else {
106
- const start = infotext.active_period_start;
107
- const end = infotext.active_period_end;
108
- segments.push({ infotext, start, end });
109
- }
110
- }
111
- return segments;
112
- }
113
- findSegmentationThreshold(infotexts) {
114
- let maxEndDate = new Date(0);
115
- let maxStartDate = new Date(0);
116
- for (const infotext of infotexts) {
117
- if (infotext.active_period_end && infotext.active_period_end > maxEndDate) {
118
- maxEndDate = infotext.active_period_end;
119
45
  }
120
- if (infotext.active_period_start > maxStartDate) {
121
- maxStartDate = infotext.active_period_start;
46
+ if (infotext.stops.length > 0) {
47
+ filteredList.push(infotext);
122
48
  }
123
49
  }
124
- return this.addDay(maxEndDate > maxStartDate ? maxEndDate : maxStartDate);
50
+ return filteredList;
125
51
  }
126
- addDay(date, multiplier = 1) {
127
- const newDate = new Date(date);
128
- newDate.setDate(date.getDate() + multiplier);
129
- return newDate;
130
- }
131
- *segmentRepeatedInfotext(infotext, segmentationThreshold) {
132
- // Repeat time windows going through or ending at midnight (e.g. 23:00-01:00, 23:00-00:00)
133
- const isInfotextActiveUntilOrOverMidnight = infotext.data.repeat_time_end < infotext.data.repeat_time_start;
134
- const minSegmentationDay = isInfotextActiveUntilOrOverMidnight
135
- ? this.addDay(infotext.active_period_start, -1)
136
- : infotext.active_period_start;
137
- const maxSegmentationDay = this.getMaxSegmentationDayForInfotext(infotext, segmentationThreshold);
138
- for (let day = minSegmentationDay; day <= maxSegmentationDay; day = this.addDay(day)) {
139
- const start = this.getDatetimeFromRepeatTime(infotext.data.repeat_time_start, day);
140
- let end = this.getDatetimeFromRepeatTime(infotext.data.repeat_time_end, day);
141
- if (isInfotextActiveUntilOrOverMidnight) {
142
- end = this.addDay(end);
143
- }
144
- const boundedSegment = this.fitFiniteSegmentToInfotextTimeBounds({ infotext, start, end });
145
- if (!boundedSegment) {
146
- continue;
52
+ isStopPresentInHigherSeverityLevels(currentSeverity, stopId, stopsBySeverity) {
53
+ for (let i = currentSeverity + 1; i <= MAX_SEVERITY_LEVEL; i++) {
54
+ if (stopsBySeverity.get(i).has(stopId)) {
55
+ return true;
147
56
  }
148
- yield boundedSegment;
149
- }
150
- if (!infotext.active_period_end) {
151
- const start = this.getDatetimeFromRepeatTime(infotext.data.repeat_time_start, this.addDay(maxSegmentationDay));
152
- yield { infotext, start, end: null };
153
- }
154
- }
155
- getMaxSegmentationDayForInfotext(infotext, segmentationThreshold) {
156
- return infotext.active_period_end && infotext.active_period_end <= segmentationThreshold
157
- ? infotext.active_period_end
158
- : segmentationThreshold;
159
- }
160
- getDatetimeFromRepeatTime(repeatTime, day) {
161
- const [hours, minutes, seconds] = repeatTime.split(":").map((fragment) => parseInt(fragment, 10));
162
- const datetime = new Date(day);
163
- datetime.setHours(hours, minutes, seconds ?? 0, 0);
164
- return datetime;
165
- }
166
- fitFiniteSegmentToInfotextTimeBounds(segment) {
167
- let { infotext, start, end } = segment;
168
- if (start < infotext.active_period_start) {
169
- start = infotext.active_period_start;
170
- }
171
- if (infotext.active_period_end && end > infotext.active_period_end) {
172
- end = infotext.active_period_end;
173
57
  }
174
- if (start > end) {
175
- return null;
176
- }
177
- return { infotext, start, end };
58
+ return false;
178
59
  }
179
- sortAndFilterSegments(segments) {
180
- segments.sort((a, b) => {
181
- const startTimeComparisonResult = a.start.getTime() - b.start.getTime();
182
- if (startTimeComparisonResult !== 0) {
183
- return startTimeComparisonResult;
184
- }
185
- else if (this.isSegmentBLesserThanA(a, b)) {
186
- return -1;
187
- }
188
- else if (this.isSegmentBLesserThanA(b, a)) {
60
+ mapSeverityLevelToNumber(severityLevel) {
61
+ switch (severityLevel) {
62
+ case "SEVERE":
63
+ return MAX_SEVERITY_LEVEL;
64
+ case "WARNING":
189
65
  return 1;
190
- }
191
- else {
66
+ case "INFO":
67
+ default:
192
68
  return 0;
193
- }
194
- });
195
- const filteredSegments = [];
196
- let prevSegment = segments.at(0);
197
- for (let i = 1; i < segments.length; i++) {
198
- const currentSegment = segments[i];
199
- if (this.isSegmentBLesserThanA(prevSegment, currentSegment)) {
200
- continue;
201
- }
202
- filteredSegments.push(prevSegment);
203
- prevSegment = currentSegment;
204
- }
205
- if (prevSegment) {
206
- filteredSegments.push(prevSegment);
207
- }
208
- return filteredSegments;
209
- }
210
- isSegmentBLesserThanA(a, b) {
211
- const aIsMoreSevere = JISInfotextSeverityLevelPriority_1.JISInfotextSeverityLevelPriority[b.infotext.data.severity_level] <
212
- JISInfotextSeverityLevelPriority_1.JISInfotextSeverityLevelPriority[a.infotext.data.severity_level];
213
- const aDoesNotStartLater = b.start >= a.start;
214
- const aDoesNotEndSooner = !a.end || (b.end && b.end <= a.end) || false;
215
- const bIsWithinTimeBoundsOfA = aDoesNotStartLater && aDoesNotEndSooner;
216
- return aIsMoreSevere && bIsWithinTimeBoundsOfA;
217
- }
218
- findUniqueInfotextsFromSegments(segments) {
219
- const infotexts = new Map();
220
- for (const segment of segments) {
221
- infotexts.set(segment.infotext.data.id, segment.infotext);
222
- }
223
- return [...infotexts.values()];
224
- }
225
- mapInfotextIdsByStopId(infotextsByStopId) {
226
- const infotextsIdsByStopId = new Map();
227
- for (const [stopId, infotextsForStop] of infotextsByStopId.entries()) {
228
- const infotextIdsForStop = infotextsForStop.map((infotext) => infotext.data.id);
229
- infotextsIdsByStopId.set(stopId, new Set(infotextIdsForStop));
230
69
  }
231
- return infotextsIdsByStopId;
232
- }
233
- filterAllInfotexts(infotexts, filteredInfotextsIdsByStopId) {
234
- const filteredInfotexts = [];
235
- for (const infotext of infotexts) {
236
- if (!infotext.data.stops) {
237
- continue;
238
- }
239
- const filteredStops = infotext.data.stops.filter((stop) => filteredInfotextsIdsByStopId.get(this.getStopId(stop))?.has(infotext.data.id) ?? false);
240
- if (filteredStops.length > 0) {
241
- // Same as filterInfotextsExcludingFuture: mutate in-place rather than spreading,
242
- // because spreading a Sequelize model loses its prototype-getter-backed properties.
243
- // `infotext.data` is a concrete union type; direct assignment hits TypeScript's
244
- // union-write restriction (requires intersection of member types). Object.assign
245
- // sidesteps that while still invoking the Sequelize setter at runtime.
246
- Object.assign(infotext.data, { stops: filteredStops });
247
- filteredInfotexts.push(infotext);
248
- }
249
- }
250
- return filteredInfotexts;
251
- }
252
- createInfotextsFromIntermediaries(infotextIntermediaries) {
253
- return infotextIntermediaries.map((intermediary) => intermediary.data);
254
70
  }
255
71
  };
256
72
  exports.JISInfotextStopSuppressionFilter = JISInfotextStopSuppressionFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"JISInfotextStopSuppressionFilter.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JISInfotextStopSuppressionFilter.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.ts"],"names":[],"mappings":";;;;;;;;;AAEA,iEAAgE;AAEhE,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAKtB,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAClC,qBAAqB,CAA0B,IAAS;QAC3D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAsB;YACjD,CAAC,kBAAkB,EAAE,IAAI,GAAG,EAAU,CAAC,EAAE,SAAS;YAClD,CAAC,CAAC,EAAE,IAAI,GAAG,EAAU,CAAC,EAAE,UAAU;YAClC,CAAC,CAAC,EAAE,IAAI,GAAG,EAAU,CAAC,EAAE,OAAO;SAClC,CAAC,CAAC;QAEH,IAAI,YAAY,GAAQ,EAAE,CAAC;QAE3B,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAClB,SAAS;YACb,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAExE,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAE/B,IAAI,MAAc,CAAC;gBACnB,IAAI,cAAc,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;oBACpE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACJ,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC1B,CAAC;gBACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;oBAClC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC3C,SAAS;gBACb,CAAC;gBAED,IAAI,aAAa,GAAG,IAAI,CAAC,mCAAmC,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;gBAEhG,IAAI,aAAa,EAAE,CAAC;oBAChB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,mCAAmC,CACvC,eAAuB,EACvB,MAAc,EACd,eAAyC;QAEzC,KAAK,IAAI,CAAC,GAAG,eAAe,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7D,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,wBAAwB,CAAC,aAAqB;QAClD,QAAQ,aAAa,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACT,OAAO,kBAAkB,CAAC;YAC9B,KAAK,SAAS;gBACV,OAAO,CAAC,CAAC;YACb,KAAK,MAAM,CAAC;YACZ;gBACI,OAAO,CAAC,CAAC;QACjB,CAAC;IACL,CAAC;CACJ,CAAA;AAzEY,4EAAgC;2CAAhC,gCAAgC;IAD5C,IAAA,qBAAU,GAAE;GACA,gCAAgC,CAyE5C"}
@@ -4,10 +4,10 @@ import { IInfotextDepartureOutputDto, IInfotextOverviewOutputDto, IInfotextTrans
4
4
  import { JISInfotextStopSuppressionFilter } from "../../helpers/JISInfotextStopSuppressionFilter";
5
5
  import { IGetDeparturesOptions } from "../../models/interfaces/IGetDeparturesOptions";
6
6
  import { Moment } from "@golemio/core/dist/shared/moment-timezone";
7
- import { JISInfotextCacheTransferTransformation } from "../transformations/JISInfotextCacheTransferTransformation";
8
7
  import { JISInfotextDepartureTransformation } from "../transformations/JISInfotextDepartureTransformation";
9
8
  import { JISInfotextOverviewTransformation } from "../transformations/JISInfotextOverviewTransformation";
10
9
  import { JISInfotextTransferTransformation } from "../transformations/JISInfotextTransferTransformation";
10
+ import { JISInfotextCacheTransferTransformation } from "../transformations/JISInfotextCacheTransferTransformation";
11
11
  export declare class InfotextFacade {
12
12
  private infotextRepository;
13
13
  private infotextDepartureTransformation;
@@ -13,17 +13,17 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.InfotextFacade = void 0;
16
- const DateTimeUtils_1 = require("../../../../helpers/DateTimeUtils");
17
16
  const JISInfotextsRedisRepository_1 = require("../../../jis/data-access/cache/JISInfotextsRedisRepository");
18
17
  const JISInfotextRepository_1 = require("../../data-access/JISInfotextRepository");
19
18
  const JISInfotextStopSuppressionFilter_1 = require("../../helpers/JISInfotextStopSuppressionFilter");
20
19
  const OgPidToken_1 = require("../../ioc/OgPidToken");
20
+ const DateTimeUtils_1 = require("../../../../helpers/DateTimeUtils");
21
21
  const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
22
22
  const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
23
- const JISInfotextCacheTransferTransformation_1 = require("../transformations/JISInfotextCacheTransferTransformation");
24
23
  const JISInfotextDepartureTransformation_1 = require("../transformations/JISInfotextDepartureTransformation");
25
24
  const JISInfotextOverviewTransformation_1 = require("../transformations/JISInfotextOverviewTransformation");
26
25
  const JISInfotextTransferTransformation_1 = require("../transformations/JISInfotextTransferTransformation");
26
+ const JISInfotextCacheTransferTransformation_1 = require("../transformations/JISInfotextCacheTransferTransformation");
27
27
  let InfotextFacade = class InfotextFacade {
28
28
  constructor(infotextRepository, infotextDepartureTransformation, infotextTransferTransformation, infotextOverviewTransformation, infotextStopFilter, infotextsRedisRepository, cacheTransferTransformation) {
29
29
  this.infotextRepository = infotextRepository;
@@ -131,7 +131,7 @@ let InfotextFacade = class InfotextFacade {
131
131
  }
132
132
  return DateTimeUtils_1.DateTimeUtils.isInRepeatTimeWindow(infotext.repeat_time_start, infotext.repeat_time_end, currentTime);
133
133
  });
134
- return this.infotextStopFilter.filterInfotexts(repeatFiltered, { includeFuture });
134
+ return this.infotextStopFilter.filterBySeverityLevel(repeatFiltered);
135
135
  }
136
136
  };
137
137
  exports.InfotextFacade = InfotextFacade;
@@ -1 +1 @@
1
- {"version":3,"file":"InfotextFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/service/facade/InfotextFacade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InfotextFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/service/facade/InfotextFacade.ts"],"names":[],"mappings":"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"}
@@ -1522,6 +1522,44 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1522
1522
  - zdrojové tabulky
1523
1523
  - `jis_infotexts`, `jis_infotexts_ropidgtfs_stops`, `ropidgtfs_stops`
1524
1524
 
1525
+ ### PID Departure Boards v4
1526
+
1527
+ #### _/v4/pid/transferboards_
1528
+
1529
+ - načte odjezdy pro přestupní tabule ve vozidlech na základě aktuální polohy vozidla a aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
1530
+ - parametry
1531
+ - `aswId` + `vehicleRegistrationNumber` + `routeType` – identifikace zastávky a vozidla přes ASW číselník (vzájemně se vylučuje s `cisId`+`tripNumber`)
1532
+ - `cisId` + `tripNumber` – identifikace zastávky a spoje přes CIS číselník (zatím neimplementováno, vrací 501)
1533
+ - `timeFrom` – volitelný ISO8601 čas příjezdu (pokud není zadán, použije se reálný čas příjezdu z RT dat)
1534
+ - `limit` – volitelný počet odjezdů (výchozí 8, max 30)
1535
+ - cachováno na 5 sekund (stale-while-revalidate 5 sekund)
1536
+ - zdrojové cache záznamy
1537
+ - `gtfsStopsCache:*` – převod ASW node ID na GTFS stop_id
1538
+ - `gtfsDelayComputation:*` – zjištění zastávek spoje a predikovaného času příjezdu
1539
+ - `vpPublicCache:*` – aktuální poloha a zpoždění vozidla
1540
+ - `gtfsPublicDepartureCache:*` – statické odjezdy ze zastávek (vč. `connections` a `wheelchair_accessible`)
1541
+ - `vpPublicStopTimeCache:*` – live zastávkové časy pro spoje se známou polohou
1542
+ - `jisCache:*` – aktivní infotexty pro dané zastávky
1543
+ - načítání odjezdů z cache (`gtfsPublicDepartureCache`)
1544
+ - z každé zastávky se načte `max(80, min(120, limit × 10))` položek v časovém okně `[plannedTimeFrom − 61 min, plannedTimeFrom + 60 min + delay]`; lookback 61 minut zajišťuje, že se zachytí i navazující spoj, jehož plánovaný odjezd je v minulosti, ale díky vlastnímu zpoždění (až 60 minut) dorazí na zastávku až po příjezdu aktuálního vozidla
1545
+ - ihned po načtení se aplikuje pre-filter: odjezdy autobusů, tramvají a trolejbusů ze zastávek s jiným názvem než aktuální zastávka jsou zahozeny; metro/vlak/přívoz/lanovka procházejí vždy; odjezdy s neprázdným polem `connections[]` jsou zachovány bez ohledu na název zastávky (potenciální garantovaný přestup)
1546
+ - garantované přestupy (`is_guaranteed_transfer`)
1547
+ - označují odjezdy, které na příjezd aktuálního spoje čekají – detekováno z pole `connections` v `gtfsPublicDepartureCache`, kde `from_trip_id` odpovídá aktuálnímu spoji a `arrivalTime < departure_datetime + max_wait_sec`
1548
+ - zobrazované minuty u garantovaného přestupu jsou nastaveny na čas příjezdu aktuálního spoje (ne na plánovaný odjezd navazujícího spoje)
1549
+ - garantované přestupy jsou vyjmuty z filtru opačného směru a filtru podskupiny linky – jsou přidány do `tripIdsToKeep` před spuštěním `findRelevantTripIdsFromLines`, takže projdou bez ohledu na zastávkovou sekvenci
1550
+ - typy "vždy zobrazit" (metro, vlak, přívoz, lanovka) filtr `findRelevantTripIdsFromLines` zcela přeskakují
1551
+ - dostupnost pro vozíčkáře (`is_wheelchair_accessible`)
1552
+ - **metro**: určeno výhradně podle `wheelchair_boarding` zastávky (hodnota `1` = přístupná)
1553
+ - **ostatní typy dopravy**: primárně z RT dat vozidla (`detailed_info.is_wheelchair_accessible`); pokud RT data nejsou k dispozici, použije se GTFS příznak `wheelchair_accessible` z `trips.txt` (`1` = přístupné vozidlo)
1554
+ - odfiltrování odjezdů stejné linky v opačném směru (`TransferFacade.isDifferentLine`) — odjezdy se shodným `route_short_name` + `route_type`, ale odlišným `direction_id` oproti aktuálnímu vozidlu jsou odstraněny; odjezdy s neznámým `direction_id` (null) jsou ponechány
1555
+ - seskupování a omezení výstupu (`TransferDepartureCacheTransformation`)
1556
+ - **metro**: seskupuje se podle `route_short_name + route_type + direction_id`; na jeden záznam výstupu připadají až 2 hodnoty v poli `departure_timestamp.minutes[]`
1557
+ - **ostatní typy**: seskupuje se podle `route_short_name + route_type + direction_id`; na skupinu připadají nejvýše 2 samostatné záznamy odjezdů
1558
+ - `direction_id` se řeší s fallback řetězcem: `departure.direction_id` (z cache odjezdů) → `position.detailed_info.direction_id` (z RT poloh vozidel) → in-memory cache (klíč `route_short_name + trip_headsign`) → `0`
1559
+ - konfigurace filtrování opačného směru (backtracking)
1560
+ - `module.pid.vehicle-positions.transferboards.isOppositeDirectionFilterStopNameStrict` (boolean, výchozí `true`) – pokud `true`, zastávka je považována za "zpětnou" pouze pokud se shoduje `stop_id` i `stop_name`; pokud `false`, stačí shoda `stop_id`
1561
+ - `module.pid.vehicle-positions.transferboards.countPreviousStopsToAllow` (integer, výchozí `0`) – kolik předchozích zastávek aktuálního spoje smí kandidátní spoj sdílet ve svých nadcházejících zastávkách, než je považován za zpětný směr a odfiltrován; `0` znamená žádná shoda není povolena
1562
+
1525
1563
  ### Public v2
1526
1564
 
1527
1565
  #### _/v2/public/gtfs/trips/{gtfsTripId}_
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "5.9.1-dev.2470905594",
3
+ "version": "5.9.1-rc.2470956325",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "url": "https://gitlab.com/operator-ict/golemio/code/modules/pid"
34
34
  },
35
35
  "engines": {
36
- "node": ">=22.0.0",
36
+ "node": ">=20.0.0",
37
37
  "npm": ">=8.0.0"
38
38
  },
39
39
  "devDependencies": {
@@ -48,7 +48,7 @@
48
48
  "@types/chai": "4.2.3",
49
49
  "@types/chai-as-promised": "7.1.2",
50
50
  "@types/mocha": "^10.0.10",
51
- "@types/node": "^22.19.17",
51
+ "@types/node": "^20.12.7",
52
52
  "@types/pg-copy-streams": "^1.2.5",
53
53
  "@types/sinon": "^9.0.10",
54
54
  "@types/supertest": "^2.0.10",
@@ -61,7 +61,7 @@
61
61
  "dotenv": "^8.2.0",
62
62
  "eslint": "^8.1.1",
63
63
  "husky": "^4.3.7",
64
- "mocha": "^11.7.5",
64
+ "mocha": "^10.0.0",
65
65
  "npm-run-all": "^4.1.5",
66
66
  "nyc": "^17.1.0",
67
67
  "prettier": "^2.5.1",
@@ -73,12 +73,12 @@
73
73
  "ts-node": "^10.9.2",
74
74
  "ts-patch": "^3.3.0",
75
75
  "tsconfig-paths": "^4.2.0",
76
- "typedoc": "0.28.19",
76
+ "typedoc": "^0.28.14",
77
77
  "typescript": "^5.9.3",
78
78
  "typescript-transform-paths": "^3.5.5"
79
79
  },
80
80
  "peerDependencies": {
81
- "@golemio/core": "^3.0.7-dev.2 || ^3.0.0"
81
+ "@golemio/core": "^3.0.1-dev.2 || ^3.0.0 || ^2.0.1"
82
82
  },
83
83
  "overrides": {
84
84
  "@google-cloud/storage": {