corequery-gtfs 0.6.0 → 0.7.0
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/corequeryify/service-conversion-iterator.js +3 -1
- package/dist/corequeryify/service-conversion-iterator.js.map +1 -1
- package/dist/data/gtfs-schedule-data.d.ts +9 -1
- package/dist/data/gtfs-schedule-data.js +15 -2
- package/dist/data/gtfs-schedule-data.js.map +1 -1
- package/dist/data/raw/schedule-csvs.d.ts +0 -18
- package/dist/departures/departures-iterator.js +1 -7
- package/dist/departures/departures-iterator.js.map +1 -1
- package/dist/departures/realtime-departures-block-iterator.js +2 -0
- package/dist/departures/realtime-departures-block-iterator.js.map +1 -1
- package/dist/parser/realtime/gtfs-trip-update-trip-identifier.js +7 -5
- package/dist/parser/realtime/gtfs-trip-update-trip-identifier.js.map +1 -1
- package/dist/parser/schedule/gtfs-schedule-data-parser.js +2 -2
- package/dist/parser/schedule/gtfs-schedule-data-parser.js.map +1 -1
- package/dist/parser/schedule/gtfs-trip-parser.d.ts +4 -1
- package/dist/parser/schedule/gtfs-trip-parser.js +6 -2
- package/dist/parser/schedule/gtfs-trip-parser.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,7 +5,9 @@ export class ServiceConversionIterator {
|
|
|
5
5
|
_convertedNextDeparture;
|
|
6
6
|
constructor(
|
|
7
7
|
// TODO: There's two things called DeparturesIterator in this repo, which
|
|
8
|
-
// isn't ideal.
|
|
8
|
+
// isn't ideal. Maybe this one could be prefixed with Gtfs, but it raises
|
|
9
|
+
// the larger question of whether anything in this repo need be prefixed
|
|
10
|
+
// with Gtfs given the package name.
|
|
9
11
|
_iterator, _converter,
|
|
10
12
|
// TODO: The need to pass around timezone here (and everywhere), I think
|
|
11
13
|
// hints at that it should be a property of the DeparturesIteratorResult.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-conversion-iterator.js","sourceRoot":"","sources":["../../src/corequeryify/service-conversion-iterator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,yBAAyB;
|
|
1
|
+
{"version":3,"file":"service-conversion-iterator.js","sourceRoot":"","sources":["../../src/corequeryify/service-conversion-iterator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,yBAAyB;IAiBjB;IAEA;IAaA;IAtBX,uBAAuB,CAAiC;IAEhE;IACE,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,oCAAoC;IACnB,SAA6B,EAE7B,UAShB;IAED,wEAAwE;IACxE,yEAAyE;IACxD,SAAiB;QAfjB,cAAS,GAAT,SAAS,CAAoB;QAE7B,eAAU,GAAV,UAAU,CAS1B;QAIgB,cAAS,GAAT,SAAS,CAAQ;QAElC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEpC,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,cAAc,GAClB,IAAI,CAAC,uBAAuB,IAAI,IAAI;YAClC,CAAC,CAAC,IAAI,CAAC,uBAAuB;YAC9B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9D,2EAA2E;QAC3E,0DAA0D;QAC1D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEpC,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -4,11 +4,19 @@ export declare class GtfsScheduleData {
|
|
|
4
4
|
private readonly _trips;
|
|
5
5
|
private readonly _tripsById;
|
|
6
6
|
private readonly _calendarsById;
|
|
7
|
+
/**
|
|
8
|
+
* Trip IDs we saw during parsing, but intentionally ignored (e.g. because
|
|
9
|
+
* they were replacement buses). We store them so that if we see them in a
|
|
10
|
+
* realtime trip update, we don't classify it as a trip we failed to match.
|
|
11
|
+
) */
|
|
12
|
+
private readonly _ignoredTripIds;
|
|
7
13
|
static readonly empty: GtfsScheduleData;
|
|
8
|
-
constructor(_trips: readonly GtfsScheduledTrip[], calendars: readonly GtfsCalendar[]);
|
|
14
|
+
constructor(_trips: readonly GtfsScheduledTrip[], calendars: readonly GtfsCalendar[], ignoredTripIds: readonly string[]);
|
|
9
15
|
allTrips(): readonly GtfsScheduledTrip[];
|
|
10
16
|
getTrip(gtfsTripId: string): GtfsScheduledTrip | null;
|
|
11
17
|
getCalendar(gtfsCalendarId: string): GtfsCalendar | null;
|
|
18
|
+
isTripIgnored(gtfsTripId: string): boolean;
|
|
12
19
|
requireCalendar(gtfsCalendarId: string): GtfsCalendar;
|
|
20
|
+
withIgnoredTripIds(newIgnoredTripIds: readonly string[]): GtfsScheduleData;
|
|
13
21
|
static fromTrips(trips: readonly GtfsScheduledTrip[]): GtfsScheduleData;
|
|
14
22
|
}
|
|
@@ -2,8 +2,14 @@ export class GtfsScheduleData {
|
|
|
2
2
|
_trips;
|
|
3
3
|
_tripsById;
|
|
4
4
|
_calendarsById;
|
|
5
|
+
/**
|
|
6
|
+
* Trip IDs we saw during parsing, but intentionally ignored (e.g. because
|
|
7
|
+
* they were replacement buses). We store them so that if we see them in a
|
|
8
|
+
* realtime trip update, we don't classify it as a trip we failed to match.
|
|
9
|
+
) */
|
|
10
|
+
_ignoredTripIds;
|
|
5
11
|
static empty = GtfsScheduleData.fromTrips([]);
|
|
6
|
-
constructor(_trips, calendars) {
|
|
12
|
+
constructor(_trips, calendars, ignoredTripIds) {
|
|
7
13
|
// Arguably we should be taking the map as the constructor argument because
|
|
8
14
|
// the GtfsTransferConnector operates on a map, that it converts back to an
|
|
9
15
|
// array, only to have it immediately passed on to this constructor where
|
|
@@ -11,6 +17,7 @@ export class GtfsScheduleData {
|
|
|
11
17
|
this._trips = _trips;
|
|
12
18
|
this._tripsById = new Map(_trips.map((trip) => [trip.gtfsTripId, trip]));
|
|
13
19
|
this._calendarsById = new Map(calendars.map((calendar) => [calendar.gtfsCalendarId, calendar]));
|
|
20
|
+
this._ignoredTripIds = new Set(ignoredTripIds);
|
|
14
21
|
}
|
|
15
22
|
allTrips() {
|
|
16
23
|
return this._trips;
|
|
@@ -21,6 +28,9 @@ export class GtfsScheduleData {
|
|
|
21
28
|
getCalendar(gtfsCalendarId) {
|
|
22
29
|
return this._calendarsById.get(gtfsCalendarId) ?? null;
|
|
23
30
|
}
|
|
31
|
+
isTripIgnored(gtfsTripId) {
|
|
32
|
+
return this._ignoredTripIds.has(gtfsTripId);
|
|
33
|
+
}
|
|
24
34
|
requireCalendar(gtfsCalendarId) {
|
|
25
35
|
const calendar = this.getCalendar(gtfsCalendarId);
|
|
26
36
|
if (calendar == null) {
|
|
@@ -28,6 +38,9 @@ export class GtfsScheduleData {
|
|
|
28
38
|
}
|
|
29
39
|
return calendar;
|
|
30
40
|
}
|
|
41
|
+
withIgnoredTripIds(newIgnoredTripIds) {
|
|
42
|
+
return new GtfsScheduleData(this._trips, [...this._calendarsById.values()], newIgnoredTripIds);
|
|
43
|
+
}
|
|
31
44
|
static fromTrips(trips) {
|
|
32
45
|
const calendars = new Map();
|
|
33
46
|
for (const trip of trips) {
|
|
@@ -35,7 +48,7 @@ export class GtfsScheduleData {
|
|
|
35
48
|
calendars.set(trip.calendar.gtfsCalendarId, trip.calendar);
|
|
36
49
|
}
|
|
37
50
|
}
|
|
38
|
-
return new GtfsScheduleData(trips, [...calendars.values()]);
|
|
51
|
+
return new GtfsScheduleData(trips, [...calendars.values()], []);
|
|
39
52
|
}
|
|
40
53
|
}
|
|
41
54
|
//# sourceMappingURL=gtfs-schedule-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtfs-schedule-data.js","sourceRoot":"","sources":["../../src/data/gtfs-schedule-data.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"gtfs-schedule-data.js","sourceRoot":"","sources":["../../src/data/gtfs-schedule-data.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IAcR;IAbF,UAAU,CAAiC;IAC3C,cAAc,CAA4B;IAE3D;;;;QAII;IACa,eAAe,CAAc;IAE9C,MAAM,CAAU,KAAK,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEvD,YACmB,MAAoC,EACrD,SAAkC,EAClC,cAAiC;QAEjC,2EAA2E;QAC3E,2EAA2E;QAC3E,yEAAyE;QACzE,8BAA8B;QAPb,WAAM,GAAN,MAAM,CAA8B;QASrD,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,CACvB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAC9C,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAC3B,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CACjE,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,CAAS,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,UAAkB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,cAAsB;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IACzD,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,cAAsB;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,uBAAuB,cAAc,+BAA+B,CACrE,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB,CAAC,iBAAoC;QACrD,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,MAAM,EACX,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EACjC,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAmC;QAClD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC"}
|
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
import type { GtfsStopTime } from "../gtfs-stop-time.js";
|
|
2
|
-
export type StopsCsvRow = {
|
|
3
|
-
readonly stop_id: string;
|
|
4
|
-
readonly stop_name: string;
|
|
5
|
-
readonly stop_lat: number;
|
|
6
|
-
readonly stop_lon: number;
|
|
7
|
-
readonly stop_url: string;
|
|
8
|
-
readonly parent_station: string;
|
|
9
|
-
readonly platform_code?: string;
|
|
10
|
-
};
|
|
11
|
-
type StopsCsv = readonly StopsCsvRow[];
|
|
12
|
-
export type RoutesCsvRow = {
|
|
13
|
-
readonly route_id: string;
|
|
14
|
-
readonly route_long_name: string;
|
|
15
|
-
};
|
|
16
|
-
type RoutesCsv = readonly RoutesCsvRow[];
|
|
17
2
|
export type TripsCsvRow = {
|
|
18
3
|
readonly route_id: string;
|
|
19
4
|
readonly service_id: string;
|
|
@@ -58,12 +43,9 @@ export type TransfersCsvRow = {
|
|
|
58
43
|
};
|
|
59
44
|
export type TransfersCsv = readonly TransfersCsvRow[];
|
|
60
45
|
export type GtfsFeedCsv = {
|
|
61
|
-
readonly stops: StopsCsv;
|
|
62
|
-
readonly routes: RoutesCsv;
|
|
63
46
|
readonly trips: TripsCsv;
|
|
64
47
|
readonly stopTimes: StopTimesCsv;
|
|
65
48
|
readonly calendar: CalendarCsv;
|
|
66
49
|
readonly calendarDates: CalendarDatesCsv;
|
|
67
50
|
readonly transfers: TransfersCsv;
|
|
68
51
|
};
|
|
69
|
-
export {};
|
|
@@ -4,13 +4,7 @@ export class DeparturesIteratorResult {
|
|
|
4
4
|
instant;
|
|
5
5
|
movement;
|
|
6
6
|
movementIndex;
|
|
7
|
-
constructor(
|
|
8
|
-
// TODO: Revisit which of these are actually being used. Consider that
|
|
9
|
-
// additional `peek` methods, e.g. `peekPositionId`, might be added in
|
|
10
|
-
// future for performance optimisation (just fetch the next service's
|
|
11
|
-
// platform number without building a full corequery service object), so
|
|
12
|
-
// removing things like `movement` is not necessarily a good idea.
|
|
13
|
-
trip, serviceDay, instant, movement, movementIndex) {
|
|
7
|
+
constructor(trip, serviceDay, instant, movement, movementIndex) {
|
|
14
8
|
this.trip = trip;
|
|
15
9
|
this.serviceDay = serviceDay;
|
|
16
10
|
this.instant = instant;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"departures-iterator.js","sourceRoot":"","sources":["../../src/departures/departures-iterator.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,wBAAwB;
|
|
1
|
+
{"version":3,"file":"departures-iterator.js","sourceRoot":"","sources":["../../src/departures/departures-iterator.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,wBAAwB;IAExB;IACA;IACA;IACA;IACA;IALX,YACW,IAAyC,EACzC,UAA8B,EAC9B,OAAyB,EACzB,QAAmC,EACnC,aAAqB;QAJrB,SAAI,GAAJ,IAAI,CAAqC;QACzC,eAAU,GAAV,UAAU,CAAoB;QAC9B,YAAO,GAAP,OAAO,CAAkB;QACzB,aAAQ,GAAR,QAAQ,CAA2B;QACnC,kBAAa,GAAb,aAAa,CAAQ;IAC7B,CAAC;CACL;AAED,MAAM,OAAgB,kBAAkB;CASvC"}
|
|
@@ -22,6 +22,8 @@ export class RealtimeDeparturesBlockIterator extends DeparturesBlockIterator {
|
|
|
22
22
|
// trip listed twice at stations like Flinders Street or Town Hall, once for
|
|
23
23
|
// the arrival and then again for the departure of the continuing trip. We
|
|
24
24
|
// just need to be sure the continuing trip is actually running!
|
|
25
|
+
//
|
|
26
|
+
// TODO: This needs to change too.
|
|
25
27
|
const isArrivalWhichContinues = movement.type === "terminating" &&
|
|
26
28
|
trip.scheduledTrip.nextTrip != null &&
|
|
27
29
|
trip.scheduledTrip.nextTrip.calendar.occursOn(trip.serviceDay) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtime-departures-block-iterator.js","sourceRoot":"","sources":["../../src/departures/realtime-departures-block-iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,uBAAuB,GAExB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,MAAM,OAAO,+BAAgC,SAAQ,uBAGpD;IAGoB;IAFnB,YACE,KAA8B,EACb,aAA+B;QAEhD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAFX,kBAAa,GAAb,aAAa,CAAkB;IAGlD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,YAA8B;QAC5D,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAE/B,OAAO,IAAI,+BAA+B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAEkB,qBAAqB,CACtC,KAAmC;QAEnC,OAAO,IAAI,wBAAwB,CACjC,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,CAAC,UAAU,EACrB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,CACpB,CAAC;IACJ,CAAC;IAEkB,gBAAgB,CACjC,KAAmC;QAEnC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEjC,wEAAwE;QACxE,4EAA4E;QAC5E,0EAA0E;QAC1E,gEAAgE;QAChE,MAAM,uBAAuB,GAC3B,QAAQ,CAAC,IAAI,KAAK,aAAa;YAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI;YACnC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9D,CAAC,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EACtC,KAAK,CAAC,IAAI,CAAC,UAAU,CACtB,CAAC;QACJ,IAAI,uBAAuB;YAAE,OAAO,IAAI,CAAC;QAEzC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CACtB,MAAc,EACd,UAA8B;QAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACzD,MAAM,EACN,UAAU,CACX,CAAC;QACF,OAAO,YAAY,EAAE,WAAW,IAAI,KAAK,CAAC;IAC5C,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"realtime-departures-block-iterator.js","sourceRoot":"","sources":["../../src/departures/realtime-departures-block-iterator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACL,uBAAuB,GAExB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,MAAM,OAAO,+BAAgC,SAAQ,uBAGpD;IAGoB;IAFnB,YACE,KAA8B,EACb,aAA+B;QAEhD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAFX,kBAAa,GAAb,aAAa,CAAkB;IAGlD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,YAA8B;QAC5D,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAE/B,OAAO,IAAI,+BAA+B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAEkB,qBAAqB,CACtC,KAAmC;QAEnC,OAAO,IAAI,wBAAwB,CACjC,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,CAAC,UAAU,EACrB,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,CACpB,CAAC;IACJ,CAAC;IAEkB,gBAAgB,CACjC,KAAmC;QAEnC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEjC,wEAAwE;QACxE,4EAA4E;QAC5E,0EAA0E;QAC1E,gEAAgE;QAChE,EAAE;QACF,kCAAkC;QAClC,MAAM,uBAAuB,GAC3B,QAAQ,CAAC,IAAI,KAAK,aAAa;YAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI;YACnC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9D,CAAC,IAAI,CAAC,gBAAgB,CACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,EACtC,KAAK,CAAC,IAAI,CAAC,UAAU,CACtB,CAAC;QACJ,IAAI,uBAAuB;YAAE,OAAO,IAAI,CAAC;QAEzC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CACtB,MAAc,EACd,UAA8B;QAE9B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CACzD,MAAM,EACN,UAAU,CACX,CAAC;QACF,OAAO,YAAY,EAAE,WAAW,IAAI,KAAK,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -19,12 +19,14 @@ export class GtfsTripUpdateTripIdentifier {
|
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
21
|
const trip = scheduleData.getTrip(tripDescriptor.tripId);
|
|
22
|
-
// TODO: We filter out trips from replacement bus services, so if we ever
|
|
23
|
-
// got a trip update for a replacement bus it would trigger this error, but
|
|
24
|
-
// we should probably ignore that case.
|
|
25
22
|
if (trip == null) {
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
// We might have intentionally ignored some trips when parsing the
|
|
24
|
+
// schedule, e.g. replacement buses, so if a trip update is for one of
|
|
25
|
+
// those it's not really an error. We should ignore it here too.
|
|
26
|
+
if (!scheduleData.isTripIgnored(tripDescriptor.tripId)) {
|
|
27
|
+
const Err = TripDescriptorReferencesNonExistentTripIdError;
|
|
28
|
+
this._onError(new Err(tripDescriptor));
|
|
29
|
+
}
|
|
28
30
|
return null;
|
|
29
31
|
}
|
|
30
32
|
// It's unclear to me whether the startDate in GTFS-RT is meant to be the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtfs-trip-update-trip-identifier.js","sourceRoot":"","sources":["../../../src/parser/realtime/gtfs-trip-update-trip-identifier.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,4BAA4B;IAEpB;IADnB,YACmB,QAER;QAFQ,aAAQ,GAAR,QAAQ,CAEhB;IACR,CAAC;IAEJ,QAAQ,CAAC,cAAkC,EAAE,YAA8B;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,yEAAyE;QACzE,sBAAsB;QACtB,IAAI,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,sCAAsC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,cAAc,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,sCAAsC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzD,
|
|
1
|
+
{"version":3,"file":"gtfs-trip-update-trip-identifier.js","sourceRoot":"","sources":["../../../src/parser/realtime/gtfs-trip-update-trip-identifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@ export class GtfsScheduleDataParser {
|
|
|
11
11
|
parse(csvs, lineGtfsIdMapping, stopGtfsIdMapping) {
|
|
12
12
|
const { calendar, calendarDates, trips, stopTimes, transfers } = csvs;
|
|
13
13
|
const parsedCalendars = this._calendarParser.parse(calendar, calendarDates);
|
|
14
|
-
const parsedTrips = this._tripParser.parse(trips, stopTimes, transfers, parsedCalendars, lineGtfsIdMapping, stopGtfsIdMapping);
|
|
15
|
-
return new GtfsScheduleData(parsedTrips, parsedCalendars);
|
|
14
|
+
const { parsedTrips, ignoredTripIds } = this._tripParser.parse(trips, stopTimes, transfers, parsedCalendars, lineGtfsIdMapping, stopGtfsIdMapping);
|
|
15
|
+
return new GtfsScheduleData(parsedTrips, parsedCalendars, ignoredTripIds);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=gtfs-schedule-data-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtfs-schedule-data-parser.js","sourceRoot":"","sources":["../../../src/parser/schedule/gtfs-schedule-data-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EACL,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAO/B,MAAM,OAAO,sBAAsB;IAChB,eAAe,CAAqB;IACpC,WAAW,CAAiB;IAE7C,YACE,iBAAoC,EACpC,iBAAoC,EACpC,OAAkD;QAElD,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CACnC,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CACH,IAAiB,EACjB,iBAAoC,EACpC,iBAAoC;QAEpC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEtE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE5E,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"gtfs-schedule-data-parser.js","sourceRoot":"","sources":["../../../src/parser/schedule/gtfs-schedule-data-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EACL,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,GAEf,MAAM,uBAAuB,CAAC;AAO/B,MAAM,OAAO,sBAAsB;IAChB,eAAe,CAAqB;IACpC,WAAW,CAAiB;IAE7C,YACE,iBAAoC,EACpC,iBAAoC,EACpC,OAAkD;QAElD,IAAI,CAAC,eAAe,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CACnC,iBAAiB,EACjB,iBAAiB,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CACH,IAAiB,EACjB,iBAAoC,EACpC,iBAAoC;QAEpC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEtE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAE5E,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAC5D,KAAK,EACL,SAAS,EACT,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,iBAAiB,CAClB,CAAC;QAEF,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC;CACF"}
|
|
@@ -17,7 +17,10 @@ export declare class GtfsTripParser {
|
|
|
17
17
|
private readonly _bonusRouteMatcher;
|
|
18
18
|
private readonly _transferConnector;
|
|
19
19
|
constructor(_lineRoutesMapping: LineRoutesMapping, _bonusLinesMapping: BonusLinesMapping, _onError: (error: GtfsTripParsingError) => void);
|
|
20
|
-
parse(trips: TripsCsv, stopTimes: StopTimesCsv, transfers: TransfersCsv, calendars: readonly GtfsCalendar[], lineGtfsIdMapping: LineGtfsIdMapping, stopGtfsIdMapping: StopGtfsIdMapping):
|
|
20
|
+
parse(trips: TripsCsv, stopTimes: StopTimesCsv, transfers: TransfersCsv, calendars: readonly GtfsCalendar[], lineGtfsIdMapping: LineGtfsIdMapping, stopGtfsIdMapping: StopGtfsIdMapping): {
|
|
21
|
+
parsedTrips: readonly GtfsScheduledTrip[];
|
|
22
|
+
ignoredTripIds: string[];
|
|
23
|
+
};
|
|
21
24
|
private _organiseStopTimesIntoTrips;
|
|
22
25
|
private _applyBonusLines;
|
|
23
26
|
private _buildCalendarMap;
|
|
@@ -27,6 +27,7 @@ export class GtfsTripParser {
|
|
|
27
27
|
const calendarMap = this._buildCalendarMap(calendars);
|
|
28
28
|
const rowsByTrip = this._organiseStopTimesIntoTrips(trips, stopTimes);
|
|
29
29
|
const unconnectedTrips = [];
|
|
30
|
+
const ignoredTripIds = [];
|
|
30
31
|
for (const { trip, stopTimes } of rowsByTrip) {
|
|
31
32
|
const calendar = calendarMap.get(trip.service_id);
|
|
32
33
|
if (calendar == null) {
|
|
@@ -38,8 +39,10 @@ export class GtfsTripParser {
|
|
|
38
39
|
this._onError(new TripReferencesUnmappedRouteIdError(trip));
|
|
39
40
|
continue;
|
|
40
41
|
}
|
|
41
|
-
if (lineIdMatch.type === "replacement-bus")
|
|
42
|
+
if (lineIdMatch.type === "replacement-bus") {
|
|
43
|
+
ignoredTripIds.push(trip.trip_id);
|
|
42
44
|
continue;
|
|
45
|
+
}
|
|
43
46
|
const normalizedStopTimes = this._stopTimeNormaliser.normalise(stopTimes);
|
|
44
47
|
// Stop time normaliser reports its own errors.
|
|
45
48
|
if (normalizedStopTimes == null)
|
|
@@ -62,7 +65,8 @@ export class GtfsTripParser {
|
|
|
62
65
|
nextTrip: null,
|
|
63
66
|
}));
|
|
64
67
|
}
|
|
65
|
-
|
|
68
|
+
const parsedTrips = this._transferConnector.connect(unconnectedTrips, transfers);
|
|
69
|
+
return { parsedTrips, ignoredTripIds };
|
|
66
70
|
}
|
|
67
71
|
_organiseStopTimesIntoTrips(trips, stopTimes) {
|
|
68
72
|
const result = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtfs-trip-parser.js","sourceRoot":"","sources":["../../../src/parser/schedule/gtfs-trip-parser.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EACL,sBAAsB,GAEvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,gBAAgB,GAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAItC,MAAM,OAAO,cAAc;IASN;IACA;IAEA;IAXF,mBAAmB,CAAyB;IAC5C,oBAAoB,CAAmB;IACvC,kBAAkB,CAAmB;IACrC,kBAAkB,CAAwB;IAE3D;IACE,uEAAuE;IACvE,kEAAkE;IACjD,kBAAqC,EACrC,kBAAqC,EAErC,QAA+C;QAH/C,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,uBAAkB,GAAlB,kBAAkB,CAAmB;QAErC,aAAQ,GAAR,QAAQ,CAAuC;QAEhE,IAAI,CAAC,mBAAmB,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,oBAAoB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnE,4EAA4E;QAC5E,IAAI,CAAC,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CACH,KAAe,EACf,SAAuB,EACvB,SAAuB,EACvB,SAAkC,EAClC,iBAAoC,EACpC,iBAAoC;QAEpC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEtE,MAAM,gBAAgB,GAAwB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"gtfs-trip-parser.js","sourceRoot":"","sources":["../../../src/parser/schedule/gtfs-trip-parser.ts"],"names":[],"mappings":"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"}
|