onebusaway-mcp-server 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CLAUDE.md +367 -0
  2. package/Dockerfile +99 -0
  3. package/LICENSE +201 -0
  4. package/README.md +322 -0
  5. package/changelog/0.1.x/0.1.0.md +15 -0
  6. package/changelog/0.1.x/0.1.1.md +17 -0
  7. package/changelog/template.md +119 -0
  8. package/dist/config/server-config.d.ts +13 -0
  9. package/dist/config/server-config.d.ts.map +1 -0
  10. package/dist/config/server-config.js +26 -0
  11. package/dist/config/server-config.js.map +1 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +53 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/mcp-server/resources/definitions/route.resource.d.ts +9 -0
  17. package/dist/mcp-server/resources/definitions/route.resource.d.ts.map +1 -0
  18. package/dist/mcp-server/resources/definitions/route.resource.js +33 -0
  19. package/dist/mcp-server/resources/definitions/route.resource.js.map +1 -0
  20. package/dist/mcp-server/resources/definitions/stop.resource.d.ts +9 -0
  21. package/dist/mcp-server/resources/definitions/stop.resource.d.ts.map +1 -0
  22. package/dist/mcp-server/resources/definitions/stop.resource.js +33 -0
  23. package/dist/mcp-server/resources/definitions/stop.resource.js.map +1 -0
  24. package/dist/mcp-server/tools/definitions/find-routes.tool.d.ts +24 -0
  25. package/dist/mcp-server/tools/definitions/find-routes.tool.d.ts.map +1 -0
  26. package/dist/mcp-server/tools/definitions/find-routes.tool.js +72 -0
  27. package/dist/mcp-server/tools/definitions/find-routes.tool.js.map +1 -0
  28. package/dist/mcp-server/tools/definitions/find-stops.tool.d.ts +28 -0
  29. package/dist/mcp-server/tools/definitions/find-stops.tool.d.ts.map +1 -0
  30. package/dist/mcp-server/tools/definitions/find-stops.tool.js +76 -0
  31. package/dist/mcp-server/tools/definitions/find-stops.tool.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/get-arrivals.tool.d.ts +49 -0
  33. package/dist/mcp-server/tools/definitions/get-arrivals.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/get-arrivals.tool.js +176 -0
  35. package/dist/mcp-server/tools/definitions/get-arrivals.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/get-route.tool.d.ts +25 -0
  37. package/dist/mcp-server/tools/definitions/get-route.tool.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/get-route.tool.js +60 -0
  39. package/dist/mcp-server/tools/definitions/get-route.tool.js.map +1 -0
  40. package/dist/mcp-server/tools/definitions/get-schedule-for-route.tool.d.ts +31 -0
  41. package/dist/mcp-server/tools/definitions/get-schedule-for-route.tool.d.ts.map +1 -0
  42. package/dist/mcp-server/tools/definitions/get-schedule-for-route.tool.js +107 -0
  43. package/dist/mcp-server/tools/definitions/get-schedule-for-route.tool.js.map +1 -0
  44. package/dist/mcp-server/tools/definitions/get-schedule-for-stop.tool.d.ts +31 -0
  45. package/dist/mcp-server/tools/definitions/get-schedule-for-stop.tool.d.ts.map +1 -0
  46. package/dist/mcp-server/tools/definitions/get-schedule-for-stop.tool.js +105 -0
  47. package/dist/mcp-server/tools/definitions/get-schedule-for-stop.tool.js.map +1 -0
  48. package/dist/mcp-server/tools/definitions/get-stop.tool.d.ts +28 -0
  49. package/dist/mcp-server/tools/definitions/get-stop.tool.d.ts.map +1 -0
  50. package/dist/mcp-server/tools/definitions/get-stop.tool.js +57 -0
  51. package/dist/mcp-server/tools/definitions/get-stop.tool.js.map +1 -0
  52. package/dist/mcp-server/tools/definitions/get-trip.tool.d.ts +42 -0
  53. package/dist/mcp-server/tools/definitions/get-trip.tool.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/definitions/get-trip.tool.js +143 -0
  55. package/dist/mcp-server/tools/definitions/get-trip.tool.js.map +1 -0
  56. package/dist/mcp-server/tools/definitions/get-vehicles.tool.d.ts +34 -0
  57. package/dist/mcp-server/tools/definitions/get-vehicles.tool.d.ts.map +1 -0
  58. package/dist/mcp-server/tools/definitions/get-vehicles.tool.js +117 -0
  59. package/dist/mcp-server/tools/definitions/get-vehicles.tool.js.map +1 -0
  60. package/dist/mcp-server/tools/definitions/list-agencies.tool.d.ts +23 -0
  61. package/dist/mcp-server/tools/definitions/list-agencies.tool.d.ts.map +1 -0
  62. package/dist/mcp-server/tools/definitions/list-agencies.tool.js +58 -0
  63. package/dist/mcp-server/tools/definitions/list-agencies.tool.js.map +1 -0
  64. package/dist/mcp-server/tools/definitions/list-routes-for-agency.tool.d.ts +25 -0
  65. package/dist/mcp-server/tools/definitions/list-routes-for-agency.tool.d.ts.map +1 -0
  66. package/dist/mcp-server/tools/definitions/list-routes-for-agency.tool.js +71 -0
  67. package/dist/mcp-server/tools/definitions/list-routes-for-agency.tool.js.map +1 -0
  68. package/dist/mcp-server/tools/definitions/search-routes.tool.d.ts +26 -0
  69. package/dist/mcp-server/tools/definitions/search-routes.tool.d.ts.map +1 -0
  70. package/dist/mcp-server/tools/definitions/search-routes.tool.js +68 -0
  71. package/dist/mcp-server/tools/definitions/search-routes.tool.js.map +1 -0
  72. package/dist/mcp-server/tools/definitions/search-stops.tool.d.ts +25 -0
  73. package/dist/mcp-server/tools/definitions/search-stops.tool.d.ts.map +1 -0
  74. package/dist/mcp-server/tools/definitions/search-stops.tool.js +61 -0
  75. package/dist/mcp-server/tools/definitions/search-stops.tool.js.map +1 -0
  76. package/dist/services/onebusaway/onebusaway-service.d.ts +64 -0
  77. package/dist/services/onebusaway/onebusaway-service.d.ts.map +1 -0
  78. package/dist/services/onebusaway/onebusaway-service.js +441 -0
  79. package/dist/services/onebusaway/onebusaway-service.js.map +1 -0
  80. package/dist/services/onebusaway/types.d.ts +147 -0
  81. package/dist/services/onebusaway/types.d.ts.map +1 -0
  82. package/dist/services/onebusaway/types.js +6 -0
  83. package/dist/services/onebusaway/types.js.map +1 -0
  84. package/package.json +90 -0
  85. package/server.json +127 -0
@@ -0,0 +1,441 @@
1
+ /**
2
+ * @fileoverview OneBusAway SDK wrapper service. Initializes the SDK client and exposes
3
+ * typed methods for all API operations used by the tool handlers.
4
+ * @module services/onebusaway/onebusaway-service
5
+ */
6
+ import { notFound, rateLimited, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
7
+ import OnebusawaySDK from 'onebusaway-sdk';
8
+ /** Maps wheelchair_boarding string/number to the canonical enum value. */
9
+ function normalizeWheelchair(raw) {
10
+ if (raw === '1' || raw === 'ACCESSIBLE')
11
+ return 'ACCESSIBLE';
12
+ if (raw === '2' || raw === 'NOT_ACCESSIBLE')
13
+ return 'NOT_ACCESSIBLE';
14
+ return 'UNKNOWN';
15
+ }
16
+ /** Builds a Stop domain object from a raw API stop shape. */
17
+ function normalizeStop(raw) {
18
+ return {
19
+ id: raw.id,
20
+ code: raw.code ?? '',
21
+ name: raw.name,
22
+ lat: raw.lat,
23
+ lon: raw.lon,
24
+ direction: raw.direction ?? '',
25
+ routeIds: raw.routeIds,
26
+ wheelchairBoarding: normalizeWheelchair(raw.wheelchairBoarding),
27
+ };
28
+ }
29
+ /** Builds a Route domain object from raw References.Route + optional agency name. */
30
+ function normalizeRoute(raw, agencyName) {
31
+ return {
32
+ id: raw.id,
33
+ shortName: raw.shortName ?? raw.nullSafeShortName ?? '',
34
+ longName: raw.longName ?? '',
35
+ description: raw.description ?? '',
36
+ agencyId: raw.agencyId,
37
+ agencyName,
38
+ type: raw.type,
39
+ color: raw.color ?? null,
40
+ url: raw.url ?? null,
41
+ };
42
+ }
43
+ /** Classifies SDK errors to McpError subclasses. */
44
+ function classifyError(err, entityType, entityId) {
45
+ if (err instanceof OnebusawaySDK.NotFoundError) {
46
+ throw notFound(`${entityType} "${entityId}" not found.`, { id: entityId });
47
+ }
48
+ if (err instanceof OnebusawaySDK.RateLimitError) {
49
+ throw rateLimited('OneBusAway rate limit reached. The Puget Sound instance enforces ~20 req/min per IP.', { reason: 'rate_limited' });
50
+ }
51
+ if (err instanceof OnebusawaySDK.APIConnectionError) {
52
+ throw serviceUnavailable('Cannot connect to OneBusAway API.', {}, { cause: err });
53
+ }
54
+ throw serviceUnavailable(`OneBusAway API error: ${err instanceof Error ? err.message : String(err)}`, {}, { cause: err instanceof Error ? err : undefined });
55
+ }
56
+ export class OneBusAwayService {
57
+ client;
58
+ constructor(config) {
59
+ this.client = new OnebusawaySDK({
60
+ apiKey: config.apiKey,
61
+ baseURL: config.baseUrl,
62
+ maxRetries: 0, // framework withRetry handles retries
63
+ });
64
+ }
65
+ // ----- Agencies -----
66
+ async listAgencies(ctx) {
67
+ ctx.log.debug('listAgencies');
68
+ try {
69
+ const resp = await this.client.agenciesWithCoverage.list();
70
+ const refs = resp.data.references;
71
+ const agencyMap = new Map(refs.agencies.map((a) => [a.id, a]));
72
+ return resp.data.list.map((item) => {
73
+ const agencyRef = agencyMap.get(item.agencyId);
74
+ return {
75
+ id: item.agencyId,
76
+ name: agencyRef?.name ?? item.agencyId,
77
+ url: agencyRef?.url ?? '',
78
+ phone: agencyRef?.phone ?? null,
79
+ timezone: agencyRef?.timezone ?? '',
80
+ coverageCenter: { lat: item.lat, lon: item.lon },
81
+ coverageSpan: { latSpan: item.latSpan, lonSpan: item.lonSpan },
82
+ };
83
+ });
84
+ }
85
+ catch (err) {
86
+ classifyError(err, 'agencies', 'list');
87
+ }
88
+ }
89
+ // ----- Stops -----
90
+ async findStops(params, ctx) {
91
+ ctx.log.debug('findStops', { lat: params.lat, lon: params.lon });
92
+ try {
93
+ const resp = await this.client.stopsForLocation.list({
94
+ lat: params.lat,
95
+ lon: params.lon,
96
+ ...(params.radius != null && { radius: params.radius }),
97
+ ...(params.query && { query: params.query }),
98
+ });
99
+ return {
100
+ stops: resp.data.list.map(normalizeStop),
101
+ limitExceeded: resp.data.limitExceeded,
102
+ };
103
+ }
104
+ catch (err) {
105
+ classifyError(err, 'stops-for-location', 'query');
106
+ }
107
+ }
108
+ async getStop(stopId, ctx) {
109
+ ctx.log.debug('getStop', { stopId });
110
+ try {
111
+ const resp = await this.client.stop.retrieve(stopId);
112
+ if (!resp.data)
113
+ throw notFound(`stop "${stopId}" not found.`, { id: stopId });
114
+ return normalizeStop(resp.data.entry);
115
+ }
116
+ catch (err) {
117
+ classifyError(err, 'stop', stopId);
118
+ }
119
+ }
120
+ async searchStops(params, ctx) {
121
+ ctx.log.debug('searchStops', { query: params.query });
122
+ try {
123
+ const resp = await this.client.searchForStop.list({
124
+ input: params.query,
125
+ ...(params.maxCount != null && { maxCount: params.maxCount }),
126
+ });
127
+ if (!resp.data)
128
+ return [];
129
+ return resp.data.list.map(normalizeStop);
130
+ }
131
+ catch (err) {
132
+ // OBA returns 404 when no stops match — not a real error, just an empty result.
133
+ if (err instanceof OnebusawaySDK.NotFoundError)
134
+ return [];
135
+ classifyError(err, 'search/stop', params.query);
136
+ }
137
+ }
138
+ // ----- Routes -----
139
+ async findRoutes(params, ctx) {
140
+ ctx.log.debug('findRoutes', { lat: params.lat, lon: params.lon });
141
+ try {
142
+ const resp = await this.client.routesForLocation.list({
143
+ lat: params.lat,
144
+ lon: params.lon,
145
+ ...(params.radius != null && { radius: params.radius }),
146
+ ...(params.query && { query: params.query }),
147
+ });
148
+ const agencyMap = new Map(resp.data.references.agencies.map((a) => [a.id, a]));
149
+ return resp.data.list.map((r) => normalizeRoute(r, agencyMap.get(r.agencyId)?.name ?? r.agencyId));
150
+ }
151
+ catch (err) {
152
+ classifyError(err, 'routes-for-location', 'query');
153
+ }
154
+ }
155
+ async getRoute(routeId, ctx) {
156
+ ctx.log.debug('getRoute', { routeId });
157
+ try {
158
+ const resp = await this.client.route.retrieve(routeId);
159
+ const refs = resp.data.references;
160
+ const agencyMap = new Map(refs.agencies.map((a) => [a.id, a]));
161
+ const r = resp.data.entry;
162
+ return normalizeRoute(r, agencyMap.get(r.agencyId)?.name ?? r.agencyId);
163
+ }
164
+ catch (err) {
165
+ classifyError(err, 'route', routeId);
166
+ }
167
+ }
168
+ async listRoutesForAgency(agencyId, ctx) {
169
+ ctx.log.debug('listRoutesForAgency', { agencyId });
170
+ try {
171
+ const resp = await this.client.routesForAgency.list(agencyId);
172
+ if (!resp.data)
173
+ throw notFound(`agency "${agencyId}" not found.`, { id: agencyId });
174
+ // routes-for-agency references block may not include the agency itself
175
+ const agencyName = resp.data.references.agencies.find((a) => a.id === agencyId)?.name ?? agencyId;
176
+ return resp.data.list.map((r) => normalizeRoute(r, agencyName));
177
+ }
178
+ catch (err) {
179
+ classifyError(err, 'agency', agencyId);
180
+ }
181
+ }
182
+ async searchRoutes(params, ctx) {
183
+ ctx.log.debug('searchRoutes', { query: params.query });
184
+ try {
185
+ const resp = await this.client.searchForRoute.list({
186
+ input: params.query,
187
+ ...(params.maxCount != null && { maxCount: params.maxCount }),
188
+ });
189
+ if (!resp.data)
190
+ return [];
191
+ const agencyMap = new Map(resp.data.references.agencies.map((a) => [a.id, a]));
192
+ return resp.data.list.map((r) => normalizeRoute(r, agencyMap.get(r.agencyId)?.name ?? r.agencyId));
193
+ }
194
+ catch (err) {
195
+ classifyError(err, 'search/route', params.query);
196
+ }
197
+ }
198
+ // ----- Arrivals -----
199
+ async getArrivals(params, ctx) {
200
+ ctx.log.debug('getArrivals', { stopId: params.stopId });
201
+ try {
202
+ const resp = await this.client.arrivalAndDeparture.list(params.stopId, {
203
+ ...(params.minutesBefore != null && { minutesBefore: params.minutesBefore }),
204
+ ...(params.minutesAfter != null && { minutesAfter: params.minutesAfter }),
205
+ });
206
+ const refs = resp.data.references;
207
+ const routeMap = new Map(refs.routes.map((r) => [r.id, r]));
208
+ const stopMap = new Map(refs.stops.map((s) => [s.id, s]));
209
+ const situationMap = new Map(refs.situations.map((s) => [s.id, s]));
210
+ const stopRef = stopMap.get(params.stopId);
211
+ const stopName = stopRef?.name ?? params.stopId;
212
+ const arrivals = resp.data.entry.arrivalsAndDepartures.map((ad) => {
213
+ const routeRef = routeMap.get(ad.routeId);
214
+ const status = ad.tripStatus;
215
+ const predicted = ad.predicted ?? false;
216
+ return {
217
+ routeShortName: ad.routeShortName ?? routeRef?.shortName ?? routeRef?.nullSafeShortName ?? ad.routeId,
218
+ tripHeadsign: ad.tripHeadsign,
219
+ predicted,
220
+ predictedArrivalTime: predicted && ad.predictedArrivalTime > 0 ? ad.predictedArrivalTime : null,
221
+ scheduledArrivalTime: ad.scheduledArrivalTime,
222
+ scheduleDeviation: status?.scheduleDeviation ?? 0,
223
+ vehicleId: status?.vehicleId ?? null,
224
+ vehiclePosition: status?.position?.lat != null && status?.position?.lon != null
225
+ ? { lat: status.position.lat, lon: status.position.lon }
226
+ : null,
227
+ stopsAway: ad.numberOfStopsAway,
228
+ tripId: ad.tripId,
229
+ routeId: ad.routeId,
230
+ situationIds: ad.situationIds ?? [],
231
+ };
232
+ });
233
+ // Collect unique situation IDs referenced by arrivals
234
+ const allSituationIds = new Set(arrivals.flatMap((a) => a.situationIds));
235
+ const situations = [...allSituationIds]
236
+ .map((id) => situationMap.get(id))
237
+ .filter((s) => s != null)
238
+ .map((s) => ({
239
+ id: s.id,
240
+ summary: s.summary?.value ?? '',
241
+ description: s.description?.value ?? null,
242
+ }));
243
+ return {
244
+ stopId: params.stopId,
245
+ stopName,
246
+ currentTime: resp.currentTime,
247
+ arrivals,
248
+ situations,
249
+ };
250
+ }
251
+ catch (err) {
252
+ classifyError(err, 'stop', params.stopId);
253
+ }
254
+ }
255
+ // ----- Trip -----
256
+ async getTrip(params, ctx) {
257
+ ctx.log.debug('getTrip', { tripId: params.tripId });
258
+ try {
259
+ const resp = await this.client.tripDetails.retrieve(params.tripId, {
260
+ ...(params.serviceDate != null && { serviceDate: params.serviceDate }),
261
+ includeSchedule: params.includeSchedule ?? true,
262
+ });
263
+ const refs = resp.data.references;
264
+ const entry = resp.data.entry;
265
+ const tripRef = refs.trips.find((t) => t.id === params.tripId);
266
+ const routeRef = refs.routes.find((r) => r.id === tripRef?.routeId);
267
+ const stopMap = new Map(refs.stops.map((s) => [s.id, s]));
268
+ const status = entry.status;
269
+ const schedule = entry.schedule?.stopTimes
270
+ ? entry.schedule.stopTimes.map((st) => {
271
+ const stop = stopMap.get(st.stopId ?? '');
272
+ return {
273
+ stopId: st.stopId ?? '',
274
+ stopName: stop?.name ?? st.stopId ?? '',
275
+ arrivalTime: st.arrivalTime ?? 0,
276
+ departureTime: st.departureTime ?? 0,
277
+ distanceAlongTripMeters: st.distanceAlongTrip ?? 0,
278
+ };
279
+ })
280
+ : null;
281
+ return {
282
+ tripId: params.tripId,
283
+ routeShortName: tripRef?.routeShortName ?? routeRef?.shortName ?? routeRef?.nullSafeShortName ?? '',
284
+ tripHeadsign: tripRef?.tripHeadsign ?? '',
285
+ status: {
286
+ phase: status?.phase ?? 'unknown',
287
+ predicted: status?.predicted ?? false,
288
+ position: status?.position?.lat != null && status?.position?.lon != null
289
+ ? { lat: status.position.lat, lon: status.position.lon }
290
+ : null,
291
+ scheduleDeviation: status?.scheduleDeviation ?? 0,
292
+ nextStop: status?.nextStop ?? null,
293
+ closestStop: status?.closestStop ?? null,
294
+ vehicleId: status?.vehicleId ?? null,
295
+ lastUpdateTime: status?.lastUpdateTime ?? 0,
296
+ },
297
+ schedule,
298
+ situations: entry.situationIds ?? [],
299
+ };
300
+ }
301
+ catch (err) {
302
+ classifyError(err, 'trip', params.tripId);
303
+ }
304
+ }
305
+ // ----- Vehicles -----
306
+ async getVehicles(params, ctx) {
307
+ ctx.log.debug('getVehicles', { agencyId: params.agencyId });
308
+ try {
309
+ const resp = await this.client.vehiclesForAgency.list(params.agencyId);
310
+ const refs = resp.data.references;
311
+ const tripMap = new Map(refs.trips.map((t) => [t.id, t]));
312
+ const routeMap = new Map(refs.routes.map((r) => [r.id, r]));
313
+ let vehicles = resp.data.list
314
+ .filter((v) => v.location != null)
315
+ .map((v) => {
316
+ const tripRef = tripMap.get(v.tripId);
317
+ const routeId = v.tripStatus?.activeTripId
318
+ ? (tripMap.get(v.tripStatus.activeTripId)?.routeId ?? tripRef?.routeId ?? null)
319
+ : (tripRef?.routeId ?? null);
320
+ const routeRef = routeId ? routeMap.get(routeId) : null;
321
+ return {
322
+ vehicleId: v.vehicleId,
323
+ tripId: v.tripId || null,
324
+ routeId,
325
+ routeShortName: routeRef?.shortName ?? routeRef?.nullSafeShortName ?? null,
326
+ tripHeadsign: tripRef?.tripHeadsign ?? null,
327
+ position: { lat: v.location.lat ?? 0, lon: v.location.lon ?? 0 },
328
+ lastUpdateTime: v.lastUpdateTime,
329
+ phase: v.tripStatus?.phase ?? 'unknown',
330
+ scheduleDeviation: v.tripStatus?.scheduleDeviation ?? null,
331
+ orientation: v.tripStatus?.orientation ?? null,
332
+ nextStop: v.tripStatus?.nextStop ?? null,
333
+ predicted: v.tripStatus?.predicted ?? false,
334
+ };
335
+ });
336
+ // Client-side route filter
337
+ if (params.routeId) {
338
+ vehicles = vehicles.filter((v) => v.routeId === params.routeId);
339
+ }
340
+ return vehicles;
341
+ }
342
+ catch (err) {
343
+ classifyError(err, 'agency', params.agencyId);
344
+ }
345
+ }
346
+ // ----- Schedules -----
347
+ async getScheduleForStop(params, ctx) {
348
+ ctx.log.debug('getScheduleForStop', { stopId: params.stopId });
349
+ try {
350
+ const resp = await this.client.scheduleForStop.retrieve(params.stopId, {
351
+ ...(params.date && { date: params.date }),
352
+ });
353
+ const refs = resp.data.references;
354
+ const routeMap = new Map(refs.routes.map((r) => [r.id, r]));
355
+ const entry = resp.data.entry;
356
+ const stopRef = refs.stops.find((s) => s.id === params.stopId);
357
+ const routes = entry.stopRouteSchedules.map((srs) => {
358
+ const routeRef = routeMap.get(srs.routeId);
359
+ return {
360
+ routeId: srs.routeId,
361
+ routeShortName: routeRef?.shortName ?? routeRef?.nullSafeShortName ?? srs.routeId,
362
+ directions: srs.stopRouteDirectionSchedules.map((srds) => ({
363
+ tripHeadsign: srds.tripHeadsign,
364
+ departures: srds.scheduleStopTimes.map((sst) => ({
365
+ scheduledDepartureTime: sst.departureTime,
366
+ tripId: sst.tripId,
367
+ })),
368
+ })),
369
+ };
370
+ });
371
+ return {
372
+ stopId: params.stopId,
373
+ stopName: stopRef?.name ?? params.stopId,
374
+ serviceDateMs: entry.date,
375
+ routes,
376
+ };
377
+ }
378
+ catch (err) {
379
+ classifyError(err, 'stop', params.stopId);
380
+ }
381
+ }
382
+ async getScheduleForRoute(params, ctx) {
383
+ ctx.log.debug('getScheduleForRoute', { routeId: params.routeId });
384
+ try {
385
+ const resp = await this.client.scheduleForRoute.retrieve(params.routeId, {
386
+ ...(params.date && { date: params.date }),
387
+ });
388
+ const entry = resp.data.entry;
389
+ const stopMap = new Map((entry.stops ?? []).map((s) => [s.id, s]));
390
+ // Build a map from tripId → stop times from stopTripGroupings
391
+ const tripStopTimesMap = new Map();
392
+ for (const grouping of entry.stopTripGroupings) {
393
+ for (const twst of grouping.tripsWithStopTimes ?? []) {
394
+ tripStopTimesMap.set(twst.tripId, twst.stopTimes.map((st) => ({
395
+ stopId: st.stopId,
396
+ arrivalTime: st.arrivalTime,
397
+ departureTime: st.departureTime,
398
+ })));
399
+ }
400
+ }
401
+ // Get route short name from the first trip or references
402
+ const firstTrip = entry.trips[0];
403
+ const routeShortName = firstTrip?.routeShortName ?? entry.routeId;
404
+ const trips = entry.trips.map((t) => {
405
+ const stopTimes = tripStopTimesMap.get(t.id) ?? [];
406
+ return {
407
+ tripId: t.id,
408
+ tripHeadsign: t.tripHeadsign ?? '',
409
+ serviceId: t.serviceId,
410
+ stops: stopTimes.map((st) => ({
411
+ stopId: st.stopId,
412
+ stopName: stopMap.get(st.stopId)?.name ?? st.stopId,
413
+ arrivalTime: st.arrivalTime,
414
+ departureTime: st.departureTime,
415
+ })),
416
+ };
417
+ });
418
+ return {
419
+ routeId: entry.routeId,
420
+ routeShortName,
421
+ serviceDateMs: entry.scheduleDate,
422
+ trips,
423
+ };
424
+ }
425
+ catch (err) {
426
+ classifyError(err, 'route', params.routeId);
427
+ }
428
+ }
429
+ }
430
+ // --- Init / accessor pattern ---
431
+ let _service;
432
+ export function initOneBusAwayService(config) {
433
+ _service = new OneBusAwayService(config);
434
+ }
435
+ export function getOneBusAwayService() {
436
+ if (!_service) {
437
+ throw new Error('OneBusAwayService not initialized — call initOneBusAwayService() in setup()');
438
+ }
439
+ return _service;
440
+ }
441
+ //# sourceMappingURL=onebusaway-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onebusaway-service.js","sourceRoot":"","sources":["../../../src/services/onebusaway/onebusaway-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAiB3C,0EAA0E;AAC1E,SAAS,mBAAmB,CAAC,GAAuB;IAClD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC7D,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IACrE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6DAA6D;AAC7D,SAAS,aAAa,CAAC,GAStB;IACC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;QACpB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;QAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,kBAAkB,EAAE,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,SAAS,cAAc,CACrB,GAUC,EACD,UAAkB;IAElB,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,iBAAiB,IAAI,EAAE;QACvD,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;QAC5B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU;QACV,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI;QACxB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;KACrB,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,SAAS,aAAa,CAAC,GAAY,EAAE,UAAkB,EAAE,QAAgB;IACvE,IAAI,GAAG,YAAY,aAAa,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,QAAQ,CAAC,GAAG,UAAU,KAAK,QAAQ,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,YAAY,aAAa,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,WAAW,CACf,sFAAsF,EACtF,EAAE,MAAM,EAAE,cAAc,EAAE,CAC3B,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,YAAY,aAAa,CAAC,kBAAkB,EAAE,CAAC;QACpD,MAAM,kBAAkB,CAAC,mCAAmC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,kBAAkB,CACtB,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC3E,EAAE,EACF,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,iBAAiB;IACX,MAAM,CAAgB;IAEvC,YAAY,MAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,UAAU,EAAE,CAAC,EAAE,sCAAsC;SACtD,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IAEvB,KAAK,CAAC,YAAY,CAAC,GAAY;QAC7B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC/C,OAAO;oBACL,EAAE,EAAE,IAAI,CAAC,QAAQ;oBACjB,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ;oBACtC,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE;oBACzB,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,IAAI;oBAC/B,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE;oBACnC,cAAc,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;oBAChD,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;iBAC/D,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,oBAAoB;IAEpB,KAAK,CAAC,SAAS,CACb,MAAqE,EACrE,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACnD,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvD,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;aAC7C,CAAC,CAAC;YACH,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;gBACxC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;aACvC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,GAAY;QACxC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,MAAM,QAAQ,CAAC,SAAS,MAAM,cAAc,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA4C,EAAE,GAAY;QAC1E,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBAChD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;aAC9D,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,gFAAgF;YAChF,IAAI,GAAG,YAAY,aAAa,CAAC,aAAa;gBAAE,OAAO,EAAE,CAAC;YAC1D,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,qBAAqB;IAErB,KAAK,CAAC,UAAU,CACd,MAAqE,EACrE,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACpD,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvD,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;aAC7C,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CACjE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,GAAY;QAC1C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,OAAO,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAgB,EAAE,GAAY;QACtD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,MAAM,QAAQ,CAAC,WAAW,QAAQ,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACpF,uEAAuE;YACvE,MAAM,UAAU,GACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,IAAI,QAAQ,CAAC;YACjF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAA4C,EAAE,GAAY;QAC3E,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC;gBACjD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;aAC9D,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9B,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CACjE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,uBAAuB;IAEvB,KAAK,CAAC,WAAW,CACf,MAAyE,EACzE,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBACrE,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;gBAC5E,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;aAC1E,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;YAEhD,MAAM,QAAQ,GAAmB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC;gBAC7B,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC;gBAExC,OAAO;oBACL,cAAc,EACZ,EAAE,CAAC,cAAc,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,iBAAiB,IAAI,EAAE,CAAC,OAAO;oBACvF,YAAY,EAAE,EAAE,CAAC,YAAY;oBAC7B,SAAS;oBACT,oBAAoB,EAClB,SAAS,IAAI,EAAE,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI;oBAC3E,oBAAoB,EAAE,EAAE,CAAC,oBAAoB;oBAC7C,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,CAAC;oBACjD,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI;oBACpC,eAAe,EACb,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI;wBAC5D,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;wBACxD,CAAC,CAAC,IAAI;oBACV,SAAS,EAAE,EAAE,CAAC,iBAAiB;oBAC/B,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,YAAY,EAAE,EAAE,CAAC,YAAY,IAAI,EAAE;iBACpC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,sDAAsD;YACtD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACzE,MAAM,UAAU,GAAgB,CAAC,GAAG,eAAe,CAAC;iBACjD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACjC,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;iBACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBAC/B,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI;aAC1C,CAAC,CAAC,CAAC;YAEN,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ;gBACR,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ;gBACR,UAAU;aACX,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,mBAAmB;IAEnB,KAAK,CAAC,OAAO,CACX,MAA2E,EAC3E,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;gBACjE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;gBACtE,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;aAChD,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,OAAO,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS;gBACxC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;oBAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;oBAC1C,OAAO;wBACL,MAAM,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE;wBACvB,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE;wBACvC,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC;wBAChC,aAAa,EAAE,EAAE,CAAC,aAAa,IAAI,CAAC;wBACpC,uBAAuB,EAAE,EAAE,CAAC,iBAAiB,IAAI,CAAC;qBACnD,CAAC;gBACJ,CAAC,CAAC;gBACJ,CAAC,CAAC,IAAI,CAAC;YAET,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EACZ,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,iBAAiB,IAAI,EAAE;gBACrF,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE;gBACzC,MAAM,EAAE;oBACN,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,SAAS;oBACjC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,KAAK;oBACrC,QAAQ,EACN,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI;wBAC5D,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;wBACxD,CAAC,CAAC,IAAI;oBACV,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,CAAC;oBACjD,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI;oBAClC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,IAAI;oBACxC,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,IAAI;oBACpC,cAAc,EAAE,MAAM,EAAE,cAAc,IAAI,CAAC;iBAC5C;gBACD,QAAQ;gBACR,UAAU,EAAE,KAAK,CAAC,YAAY,IAAI,EAAE;aACrC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,uBAAuB;IAEvB,KAAK,CAAC,WAAW,CACf,MAA8C,EAC9C,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5D,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;iBACjC,GAAG,CAAC,CAAC,CAAC,EAAgB,EAAE;gBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,EAAE,YAAY;oBACxC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;oBAC/E,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;gBAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAExD,OAAO;oBACL,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;oBACxB,OAAO;oBACP,cAAc,EAAE,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,iBAAiB,IAAI,IAAI;oBAC1E,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI;oBAC3C,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE;oBAChE,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,KAAK,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,IAAI,SAAS;oBACvC,iBAAiB,EAAE,CAAC,CAAC,UAAU,EAAE,iBAAiB,IAAI,IAAI;oBAC1D,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,IAAI,IAAI;oBAC9C,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI;oBACxC,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK;iBAC5C,CAAC;YACJ,CAAC,CAAC,CAAC;YAEL,2BAA2B;YAC3B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;YAClE,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,wBAAwB;IAExB,KAAK,CAAC,kBAAkB,CACtB,MAAyC,EACzC,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;gBACrE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;aAC1C,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAwB,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,cAAc,EAAE,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,iBAAiB,IAAI,GAAG,CAAC,OAAO;oBACjF,UAAU,EAAE,GAAG,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACzD,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC/C,sBAAsB,EAAE,GAAG,CAAC,aAAa;4BACzC,MAAM,EAAE,GAAG,CAAC,MAAM;yBACnB,CAAC,CAAC;qBACJ,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM;gBACxC,aAAa,EAAE,KAAK,CAAC,IAAI;gBACzB,MAAM;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,MAA0C,EAC1C,GAAY;QAEZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;aAC1C,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnE,8DAA8D;YAC9D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAG7B,CAAC;YACJ,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC/C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;oBACrD,gBAAgB,CAAC,GAAG,CAClB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC1B,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,WAAW,EAAE,EAAE,CAAC,WAAW;wBAC3B,aAAa,EAAE,EAAE,CAAC,aAAa;qBAChC,CAAC,CAAC,CACJ,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,yDAAyD;YACzD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,cAAc,GAAG,SAAS,EAAE,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC;YAElE,MAAM,KAAK,GAAwB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvD,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBACnD,OAAO;oBACL,MAAM,EAAE,CAAC,CAAC,EAAE;oBACZ,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;oBAClC,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC5B,MAAM,EAAE,EAAE,CAAC,MAAM;wBACjB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,MAAM;wBACnD,WAAW,EAAE,EAAE,CAAC,WAAW;wBAC3B,aAAa,EAAE,EAAE,CAAC,aAAa;qBAChC,CAAC,CAAC;iBACJ,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,cAAc;gBACd,aAAa,EAAE,KAAK,CAAC,YAAY;gBACjC,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF;AAED,kCAAkC;AAElC,IAAI,QAAuC,CAAC;AAE5C,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,QAAQ,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * @fileoverview Domain types for the OneBusAway service layer.
3
+ * @module services/onebusaway/types
4
+ */
5
+ export interface Position {
6
+ lat: number;
7
+ lon: number;
8
+ }
9
+ export interface WheelchairBoarding {
10
+ value: 'ACCESSIBLE' | 'NOT_ACCESSIBLE' | 'UNKNOWN';
11
+ }
12
+ export interface Agency {
13
+ coverageCenter: Position;
14
+ coverageSpan: {
15
+ latSpan: number;
16
+ lonSpan: number;
17
+ };
18
+ id: string;
19
+ name: string;
20
+ phone: string | null;
21
+ timezone: string;
22
+ url: string;
23
+ }
24
+ export interface Stop {
25
+ code: string;
26
+ direction: string;
27
+ id: string;
28
+ lat: number;
29
+ lon: number;
30
+ name: string;
31
+ routeIds: string[];
32
+ wheelchairBoarding: 'ACCESSIBLE' | 'NOT_ACCESSIBLE' | 'UNKNOWN';
33
+ }
34
+ export interface Route {
35
+ agencyId: string;
36
+ agencyName: string;
37
+ color: string | null;
38
+ description: string;
39
+ id: string;
40
+ longName: string;
41
+ shortName: string;
42
+ type: number;
43
+ url: string | null;
44
+ }
45
+ export interface Situation {
46
+ description: string | null;
47
+ id: string;
48
+ summary: string;
49
+ }
50
+ export interface ArrivalEntry {
51
+ predicted: boolean;
52
+ predictedArrivalTime: number | null;
53
+ routeId: string;
54
+ routeShortName: string;
55
+ scheduleDeviation: number;
56
+ scheduledArrivalTime: number;
57
+ situationIds: string[];
58
+ stopsAway: number | null;
59
+ tripHeadsign: string;
60
+ tripId: string;
61
+ vehicleId: string | null;
62
+ vehiclePosition: Position | null;
63
+ }
64
+ export interface ArrivalsResult {
65
+ arrivals: ArrivalEntry[];
66
+ currentTime: number;
67
+ situations: Situation[];
68
+ stopId: string;
69
+ stopName: string;
70
+ }
71
+ export interface TripScheduleStop {
72
+ arrivalTime: number;
73
+ departureTime: number;
74
+ distanceAlongTripMeters: number;
75
+ stopId: string;
76
+ stopName: string;
77
+ }
78
+ export interface TripStatus {
79
+ closestStop: string | null;
80
+ lastUpdateTime: number;
81
+ nextStop: string | null;
82
+ phase: string;
83
+ position: Position | null;
84
+ predicted: boolean;
85
+ scheduleDeviation: number;
86
+ vehicleId: string | null;
87
+ }
88
+ export interface TripResult {
89
+ routeShortName: string;
90
+ schedule: TripScheduleStop[] | null;
91
+ situations: string[];
92
+ status: TripStatus;
93
+ tripHeadsign: string;
94
+ tripId: string;
95
+ }
96
+ export interface VehicleEntry {
97
+ lastUpdateTime: number;
98
+ nextStop: string | null;
99
+ orientation: number | null;
100
+ phase: string;
101
+ position: Position;
102
+ predicted: boolean;
103
+ routeId: string | null;
104
+ routeShortName: string | null;
105
+ scheduleDeviation: number | null;
106
+ tripHeadsign: string | null;
107
+ tripId: string | null;
108
+ vehicleId: string;
109
+ }
110
+ export interface StopScheduleDeparture {
111
+ scheduledDepartureTime: number;
112
+ tripId: string;
113
+ }
114
+ export interface StopScheduleDirection {
115
+ departures: StopScheduleDeparture[];
116
+ tripHeadsign: string;
117
+ }
118
+ export interface StopScheduleRoute {
119
+ directions: StopScheduleDirection[];
120
+ routeId: string;
121
+ routeShortName: string;
122
+ }
123
+ export interface StopScheduleResult {
124
+ routes: StopScheduleRoute[];
125
+ serviceDateMs: number;
126
+ stopId: string;
127
+ stopName: string;
128
+ }
129
+ export interface RouteScheduleStopTime {
130
+ arrivalTime: number;
131
+ departureTime: number;
132
+ stopId: string;
133
+ stopName: string;
134
+ }
135
+ export interface RouteScheduleTrip {
136
+ serviceId: string;
137
+ stops: RouteScheduleStopTime[];
138
+ tripHeadsign: string;
139
+ tripId: string;
140
+ }
141
+ export interface RouteScheduleResult {
142
+ routeId: string;
143
+ routeShortName: string;
144
+ serviceDateMs: number;
145
+ trips: RouteScheduleTrip[];
146
+ }
147
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/onebusaway/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Domain types for the OneBusAway service layer.
3
+ * @module services/onebusaway/types
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/onebusaway/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}