@tiducto/spider-sdk-typescript 0.7.0 → 1.0.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.
Files changed (86) hide show
  1. package/README.md +1 -1
  2. package/dist/contract/routing/PlanConnectionStreamVariables.d.ts +2 -2
  3. package/dist/contract/routing/PlanConnectionStreamVariables.d.ts.map +1 -1
  4. package/dist/contract/routing/Route.d.ts +3 -0
  5. package/dist/contract/routing/Route.d.ts.map +1 -1
  6. package/dist/contract/routing/Stop.d.ts +2 -0
  7. package/dist/contract/routing/Stop.d.ts.map +1 -1
  8. package/dist/contract/routing/StopDeparturesData.d.ts +3 -3
  9. package/dist/contract/routing/StopDeparturesData.d.ts.map +1 -1
  10. package/dist/contract/routing/StopDeparturesRoute.d.ts +3 -0
  11. package/dist/contract/routing/StopDeparturesRoute.d.ts.map +1 -1
  12. package/dist/contract/routing/StopDeparturesStop.d.ts +1 -5
  13. package/dist/contract/routing/StopDeparturesStop.d.ts.map +1 -1
  14. package/dist/contract/routing/StopDeparturesStop2.d.ts +9 -0
  15. package/dist/contract/routing/StopDeparturesStop2.d.ts.map +1 -0
  16. package/dist/contract/routing/StopDeparturesStop2.js +2 -0
  17. package/dist/contract/routing/StopDeparturesStop2.js.map +1 -0
  18. package/dist/contract/routing/StopDeparturesStoptime.d.ts +14 -0
  19. package/dist/contract/routing/StopDeparturesStoptime.d.ts.map +1 -0
  20. package/dist/contract/routing/StopDeparturesStoptime.js +2 -0
  21. package/dist/contract/routing/StopDeparturesStoptime.js.map +1 -0
  22. package/dist/contract/routing/StopDeparturesTrip.d.ts +2 -0
  23. package/dist/contract/routing/StopDeparturesTrip.d.ts.map +1 -1
  24. package/dist/contract/routing/StopDeparturesVariables.d.ts +2 -2
  25. package/dist/contract/routing/StopDeparturesVariables.d.ts.map +1 -1
  26. package/dist/contract/routing/Stoptime.d.ts +4 -3
  27. package/dist/contract/routing/Stoptime.d.ts.map +1 -1
  28. package/dist/contract/routing/TripRoute.d.ts +3 -0
  29. package/dist/contract/routing/TripRoute.d.ts.map +1 -1
  30. package/dist/contract/routing/TripStop.d.ts +2 -0
  31. package/dist/contract/routing/TripStop.d.ts.map +1 -1
  32. package/dist/contract/routing/TripTrip.d.ts +4 -2
  33. package/dist/contract/routing/TripTrip.d.ts.map +1 -1
  34. package/dist/contract/routing/index.d.ts +2 -1
  35. package/dist/contract/routing/index.d.ts.map +1 -1
  36. package/dist/contract.d.ts +0 -1
  37. package/dist/contract.d.ts.map +1 -1
  38. package/dist/contract.js +0 -12
  39. package/dist/contract.js.map +1 -1
  40. package/dist/contractVersion.d.ts +1 -1
  41. package/dist/contractVersion.js +1 -1
  42. package/dist/enums.d.ts +11 -4
  43. package/dist/enums.d.ts.map +1 -1
  44. package/dist/enums.js +43 -24
  45. package/dist/enums.js.map +1 -1
  46. package/dist/errors.d.ts +30 -10
  47. package/dist/errors.d.ts.map +1 -1
  48. package/dist/errors.js +55 -18
  49. package/dist/errors.js.map +1 -1
  50. package/dist/http.d.ts +14 -0
  51. package/dist/http.d.ts.map +1 -1
  52. package/dist/http.js +18 -30
  53. package/dist/http.js.map +1 -1
  54. package/dist/index.d.ts +2 -3
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +0 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/location.d.ts +4 -0
  59. package/dist/location.d.ts.map +1 -1
  60. package/dist/location.js +4 -0
  61. package/dist/location.js.map +1 -1
  62. package/dist/persistedQueries.js +4 -4
  63. package/dist/realtime.d.ts +6 -2
  64. package/dist/realtime.d.ts.map +1 -1
  65. package/dist/realtime.js +21 -14
  66. package/dist/realtime.js.map +1 -1
  67. package/dist/routing.d.ts +91 -73
  68. package/dist/routing.d.ts.map +1 -1
  69. package/dist/routing.js +149 -145
  70. package/dist/routing.js.map +1 -1
  71. package/dist/sdk.d.ts +1 -1
  72. package/dist/sdkVersion.d.ts +1 -1
  73. package/dist/sdkVersion.js +1 -1
  74. package/dist/serviceDate.d.ts +6 -0
  75. package/dist/serviceDate.d.ts.map +1 -0
  76. package/dist/serviceDate.js +17 -0
  77. package/dist/serviceDate.js.map +1 -0
  78. package/dist/stops.d.ts +12 -1
  79. package/dist/stops.d.ts.map +1 -1
  80. package/dist/stops.js +15 -6
  81. package/dist/stops.js.map +1 -1
  82. package/package.json +1 -1
  83. package/dist/contract/routing/TripStoptime.d.ts +0 -13
  84. package/dist/contract/routing/TripStoptime.d.ts.map +0 -1
  85. package/dist/contract/routing/TripStoptime.js +0 -2
  86. package/dist/contract/routing/TripStoptime.js.map +0 -1
package/dist/routing.js CHANGED
@@ -1,15 +1,17 @@
1
1
  import { failure, success } from "./result.js";
2
- import { DecodingError, SpiderContractMismatchError, TransportError, parseErrorEnvelope, toSpiderError } from "./errors.js";
3
- import { bikesAllowedFromWire, transitModeFromWire, wheelchairFromWire } from "./enums.js";
2
+ import { DecodingError, TransportError, badRequest, httpFailure, toSpiderError } from "./errors.js";
3
+ import { graphqlFailure } from "./http.js";
4
+ import { bikesAllowedFromWire, inputFieldFromWire, realtimeStateFromWire, routingErrorCodeFromWire, transitModeFromWire, wheelchairFromWire, } from "./enums.js";
4
5
  import { decodePolyline } from "./polyline.js";
6
+ import { invalidServiceDate, serviceDateOf } from "./serviceDate.js";
5
7
  import { DEPARTURES, PLAN, PLAN_STREAM, TRIP } from "./persistedQueries.js";
6
8
  const DEFAULT_SEARCH_WINDOW_MINUTES = 60;
7
- const DEFAULT_MAX_TRAVERSAL_MINUTES = 360;
8
- const DEFAULT_TARGET_RESULTS = 10;
9
- const DEFAULT_STREAM_TARGET_RESULTS = 5;
10
- const DEFAULT_MAX_WINDOW_MINUTES = 360;
11
- const DEFAULT_TIME_RANGE_SECONDS = 24 * 60 * 60;
12
- const INT_MAX = 2_147_483_647;
9
+ const DEFAULT_NUMBER_OF_DEPARTURES = 30;
10
+ const MAX_TIME_RANGE_SECONDS = 24 * 60 * 60;
11
+ // Fixed platform limits; the env-set ones (search window, result count, via count) are the server's to check.
12
+ const MIN_STREAM_WINDOW_MINUTES = 120;
13
+ const MAX_VIA_STOP_IDS = 10;
14
+ const MAX_VIA_WAIT_SECONDS = 24 * 60 * 60;
13
15
  // The OTP transit modes valid in a modes filter — the public TransitMode union also carries street/leg
14
16
  // values (WALK, BICYCLE, CAR, TRANSIT, UNKNOWN) that are not transit modes and must not reach the wire.
15
17
  const WIRE_TRANSIT_MODES = new Set([
@@ -36,28 +38,51 @@ export class SpiderRouting {
36
38
  searchWindowMinutes: options.searchWindowMinutes ?? DEFAULT_SEARCH_WINDOW_MINUTES,
37
39
  wheelchairAccessible: options.wheelchairAccessible ?? false,
38
40
  };
41
+ const invalid = invalidVia(request.via);
42
+ if (invalid != null)
43
+ return failure(invalid);
39
44
  return this.page(request);
40
45
  }
41
46
  /**
42
47
  * Streams itineraries over Server-Sent Events as the router sweeps the search window forward, emitting them
43
48
  * as they finalize instead of one batched page. Lazy and cancellable: iteration opens the request, and
44
- * `break`ing out of the `for await` cancels the underlying stream. Each `chunk` event carries itineraries
45
- * with realtime delays already on their legs; a `page` event then carries the continuation cursors and a
46
- * `done` event closes the stream (or a terminal `failure`). Never throws for transport/HTTP/server errors —
47
- * they surface as a `failure` event — except a contract-version mismatch, which throws like the batch calls.
49
+ * `break`ing out of the `for await` cancels the underlying stream. Each `result` event carries itineraries
50
+ * with realtime delays already on their legs; a terminal `done` event then carries the continuation
51
+ * {@link RoutePageInfo} and any `routingErrors` (or a terminal `failure`). Never throws — transport, HTTP and
52
+ * request errors surface as a `failure` event.
48
53
  *
49
- * `targetResults` is a soft floor the sweep aims to reach; `maxWindowMinutes` caps how far forward it
50
- * searches. To continue, re-call with the same inputs plus `after` = the last `page` event's `endCursor`
51
- * (or `before` = `startCursor` to walk earlier). For a single batched page instead, use {@link plan}.
54
+ * `targetResults` (a soft floor the sweep aims to reach) and `maxWindowMinutes` (how far it may search, at
55
+ * least 2 h) are required. This opens a fresh stream; to continue, call {@link planStreamNext} with
56
+ * `done.pageInfo.endCursor` (when `hasNextPage`) or {@link planStreamPrevious} with `done.pageInfo.startCursor`
57
+ * (when `hasPreviousPage`). For a single batched page instead, use {@link plan}.
52
58
  */
53
59
  async *planStream(options) {
60
+ yield* this.openPlanStream(options);
61
+ }
62
+ /**
63
+ * Continues a stream forward from a prior `done` event's `endCursor`. Takes the same options as
64
+ * {@link planStream} (so `targetResults` / `maxWindowMinutes` can vary per continuation) plus the raw cursor.
65
+ * Call only when the prior `done.pageInfo.hasNextPage` was true.
66
+ */
67
+ async *planStreamNext(options, after) {
68
+ yield* this.openPlanStream(options, { after });
69
+ }
70
+ /**
71
+ * Continues a stream backward from a prior `done` event's `startCursor`. Takes the same options as
72
+ * {@link planStream} plus the raw cursor. Call only when the prior `done.pageInfo.hasPreviousPage` was true.
73
+ */
74
+ async *planStreamPrevious(options, before) {
75
+ yield* this.openPlanStream(options, { before });
76
+ }
77
+ // Builds the SSE request variables from the public options plus an optional raw continuation cursor. Forward
78
+ // paging sets `after`, backward sets `before`; an initial stream sets neither.
79
+ streamVariables(options, cursor) {
54
80
  const time = options.arriveBy != null
55
81
  ? { kind: 'arriveBy', epochMs: toEpochMs(options.arriveBy) }
56
82
  : { kind: 'departAt', epochMs: toEpochMs(options.departAt ?? Date.now()) };
57
83
  const iso = new Date(time.epochMs).toISOString();
58
84
  const via = options.via ?? [];
59
- const maxWindowMinutes = Math.max(1, Math.floor(options.maxWindowMinutes ?? DEFAULT_MAX_WINDOW_MINUTES));
60
- const variables = {
85
+ return {
61
86
  dateTime: time.kind === 'departAt' ? { earliestDeparture: iso } : { latestArrival: iso },
62
87
  origin: locationToInput(options.origin),
63
88
  destination: locationToInput(options.destination),
@@ -67,50 +92,58 @@ export class SpiderRouting {
67
92
  maxTransfers: options.maxTransfers,
68
93
  wheelchairAccessible: options.wheelchairAccessible ?? false,
69
94
  }),
70
- targetResults: options.targetResults ?? DEFAULT_STREAM_TARGET_RESULTS,
71
- maxWindow: `PT${maxWindowMinutes}M`,
72
- before: options.before,
73
- after: options.after,
95
+ targetResults: options.targetResults,
96
+ maxWindow: `PT${Math.floor(options.maxWindowMinutes)}M`,
97
+ before: cursor?.before,
98
+ after: cursor?.after,
74
99
  };
75
- yield* this.openPlanStream(variables);
76
100
  }
77
101
  // Opens the SSE `plan-stream` request and turns its `chunk`/`pageInfo`/`done`/`error` records into a
78
- // PlanStreamEvent stream. A non-2xx response, a transport error, or a decoding slip becomes a terminal
79
- // `failure` event rather than a throw (a contract mismatch still throws). Reading stops when the server
80
- // closes the stream or the consumer stops iterating (which cancels the reader → aborts the request).
81
- async *openPlanStream(variables) {
102
+ // PlanStreamEvent stream. Invalid options, a non-2xx response, a transport error, or a decoding slip becomes a
103
+ // terminal `failure` event rather than a throw. Reading stops when the server closes the stream or the
104
+ // consumer stops iterating (which cancels the reader → aborts the request).
105
+ async *openPlanStream(options, cursor) {
106
+ const invalid = invalidStreamOptions(options);
107
+ if (invalid != null) {
108
+ yield { type: 'failure', error: invalid };
109
+ return;
110
+ }
82
111
  let response;
83
112
  try {
84
- response = await this.transport.stream(PLAN_STREAM, variables);
113
+ response = await this.transport.stream(PLAN_STREAM, this.streamVariables(options, cursor));
85
114
  }
86
115
  catch (e) {
87
- if (e instanceof SpiderContractMismatchError)
88
- throw e;
89
- yield { kind: 'failure', error: toSpiderError(e) };
116
+ yield { type: 'failure', error: toSpiderError(e) };
90
117
  return;
91
118
  }
92
119
  if (!response.ok) {
93
- const text = await drainText(response);
94
- const env = parseErrorEnvelope(text);
95
- const detail = env.message ?? text.slice(0, 300);
96
- const err = new TransportError('http', `routing plan-stream -> ${response.status}: ${detail}`, response.status, env.code);
97
- yield { kind: 'failure', error: toSpiderError(err) };
120
+ yield { type: 'failure', error: toSpiderError(httpFailure('routing plan-stream', response.status, await drainText(response))) };
98
121
  return;
99
122
  }
100
123
  const body = response.body;
101
124
  if (body == null) {
102
- yield { kind: 'failure', error: toSpiderError(new TransportError('no_data', 'routing plan-stream returned no body')) };
125
+ yield { type: 'failure', error: toSpiderError(new TransportError('no_data', 'routing plan-stream returned no body')) };
103
126
  return;
104
127
  }
105
128
  const reader = body.getReader();
106
129
  const decoder = new TextDecoder();
107
130
  let buffer = '';
131
+ // The gateway answers some rejections (e.g. a missing required variable) with a 2xx GraphQL JSON body
132
+ // before any event, so a body that opens with `{` is read whole and mapped like a batch response.
133
+ let json = (response.headers.get('content-type') ?? '').includes('json') ? true : undefined;
108
134
  try {
109
135
  for (;;) {
110
136
  const { value, done } = await reader.read();
111
137
  if (done)
112
138
  break;
113
139
  buffer = (buffer + decoder.decode(value, { stream: true })).replace(/\r\n/g, '\n');
140
+ if (json === undefined) {
141
+ const head = buffer.trimStart();
142
+ if (head !== '')
143
+ json = head.startsWith('{');
144
+ }
145
+ if (json !== false)
146
+ continue;
114
147
  // SSE records are separated by a blank line; parse every complete one and keep the remainder buffered.
115
148
  let boundary;
116
149
  while ((boundary = buffer.indexOf('\n\n')) !== -1) {
@@ -121,6 +154,10 @@ export class SpiderRouting {
121
154
  yield event;
122
155
  }
123
156
  }
157
+ if (json === true) {
158
+ yield { type: 'failure', error: streamErrorToSpiderError(buffer) };
159
+ return;
160
+ }
124
161
  // A trailing record the server didn't terminate with a blank line before closing.
125
162
  const record = parseSseFrame(buffer);
126
163
  const event = parsePlanStreamRecord(record.event, record.data);
@@ -128,7 +165,7 @@ export class SpiderRouting {
128
165
  yield event;
129
166
  }
130
167
  catch (e) {
131
- yield { kind: 'failure', error: toSpiderError(e) };
168
+ yield { type: 'failure', error: toSpiderError(e) };
132
169
  }
133
170
  finally {
134
171
  await reader.cancel().catch(() => { });
@@ -147,66 +184,19 @@ export class SpiderRouting {
147
184
  return this.page(requestOf(route), route.pageInfo.startCursor ?? undefined, undefined);
148
185
  }
149
186
  /**
150
- * Streams itineraries by stepping the search forward one search window at a time, until `targetResults`
151
- * itineraries have been collected or `maxTraversalMinutes` of time has been traversed. Each step pulls a
152
- * whole window in one search, so a busy window yields more — `targetResults` is a soft floor, the window
153
- * that reaches it is yielded whole. Lazy: `for await ... break` stops stepping and skips the remaining OTP
154
- * searches. Each yield is one step's `SpiderResult` (a terminal error ends the stream), matching the
155
- * non-throwing poll helpers.
156
- *
157
- * The step is `searchWindowMinutes` and it is fixed for the whole walk — OTP locks the window into the
158
- * paging cursor after the first search and ignores it thereafter, so a wider step means a wider
159
- * `searchWindowMinutes` here, not on a continuation.
187
+ * Upcoming departures from a stop or station: `numberOfDepartures` (default 30, up to the environment's
188
+ * limit) within `options.timeRangeSeconds` (default 24 h) from `options.startTime` (default now).
160
189
  */
161
- async *planUntil(options) {
162
- const { targetResults, maxTraversalMinutes, ...planOptions } = options;
163
- const target = targetResults ?? DEFAULT_TARGET_RESULTS;
164
- const steps = stepCount(maxTraversalMinutes ?? DEFAULT_MAX_TRAVERSAL_MINUTES, options.searchWindowMinutes ?? DEFAULT_SEARCH_WINDOW_MINUTES);
165
- const first = await this.plan(planOptions);
166
- yield first;
167
- if (!first.isSuccess)
168
- return;
169
- yield* this.stepFrom(first.data, 'forward', steps - 1, target, first.data.edges.length);
170
- }
171
- /** Streaming form of `planNext`: steps forward from `prev`, one (fixed) search window per step. */
172
- async *planNextUntil(prev, options) {
173
- const steps = stepCount(options?.maxTraversalMinutes ?? DEFAULT_MAX_TRAVERSAL_MINUTES, requestOf(prev).searchWindowMinutes);
174
- yield* this.stepFrom(prev, 'forward', steps, options?.targetResults ?? DEFAULT_TARGET_RESULTS, 0);
175
- }
176
- /** Streaming form of `planPrevious`: steps backward from `prev`, one (fixed) search window per step. */
177
- async *planPreviousUntil(prev, options) {
178
- const steps = stepCount(options?.maxTraversalMinutes ?? DEFAULT_MAX_TRAVERSAL_MINUTES, requestOf(prev).searchWindowMinutes);
179
- yield* this.stepFrom(prev, 'backward', steps, options?.targetResults ?? DEFAULT_TARGET_RESULTS, 0);
180
- }
181
- // Step from `start` one search window at a time, accumulating itinerary count. Stop at `targetResults`, when a
182
- // step has no next page, or on an error. `collectedSoFar` seeds the count (planUntil already yielded step 1).
183
- async *stepFrom(start, direction, remainingSteps, targetResults, collectedSoFar) {
184
- if (collectedSoFar >= targetResults)
185
- return;
186
- let prev = start;
187
- let collected = collectedSoFar;
188
- for (let i = 0; i < Math.max(0, remainingSteps); i++) {
189
- const res = direction === 'forward'
190
- ? await this.planNext(prev)
191
- : await this.planPrevious(prev);
192
- if (res === null)
193
- return;
194
- yield res;
195
- if (!res.isSuccess)
196
- return;
197
- collected += res.data.edges.length;
198
- if (collected >= targetResults)
199
- return;
200
- prev = res.data;
201
- }
202
- }
203
- async departures(stopId, numberOfDepartures = 30, options) {
190
+ async departures(stopId, numberOfDepartures = DEFAULT_NUMBER_OF_DEPARTURES, options) {
191
+ const timeRange = Math.floor(options?.timeRangeSeconds ?? MAX_TIME_RANGE_SECONDS);
192
+ if (!(timeRange > 0 && timeRange <= MAX_TIME_RANGE_SECONDS))
193
+ return failure(badRequest('timeRange'));
204
194
  try {
205
195
  const variables = {
206
196
  id: stopId,
207
197
  numberOfDepartures,
208
198
  startTime: options?.startTime != null ? Math.floor(toEpochMs(options.startTime) / 1000) : undefined,
209
- timeRange: clampSeconds(options?.timeRangeSeconds ?? DEFAULT_TIME_RANGE_SECONDS),
199
+ timeRange,
210
200
  };
211
201
  const data = await this.transport.graphql(DEPARTURES, variables);
212
202
  const stop = data.asStop ?? data.asStation;
@@ -216,12 +206,14 @@ export class SpiderRouting {
216
206
  return success(mapDepartures(stop));
217
207
  }
218
208
  catch (e) {
219
- if (e instanceof SpiderContractMismatchError)
220
- throw e;
221
209
  return failure(toSpiderError(e));
222
210
  }
223
211
  }
212
+ /** One trip on one service date (ISO `YYYY-MM-DD`, e.g. a {@link Departure.serviceDate}); undefined = today. */
224
213
  async trip(tripId, serviceDate) {
214
+ const invalid = serviceDate != null ? invalidServiceDate(serviceDate) : null;
215
+ if (invalid != null)
216
+ return failure(invalid);
225
217
  try {
226
218
  const variables = { id: tripId, serviceDate };
227
219
  const data = await this.transport.graphql(TRIP, variables);
@@ -232,8 +224,6 @@ export class SpiderRouting {
232
224
  return success(mapTrip(trip));
233
225
  }
234
226
  catch (e) {
235
- if (e instanceof SpiderContractMismatchError)
236
- throw e;
237
227
  return failure(toSpiderError(e));
238
228
  }
239
229
  }
@@ -242,8 +232,6 @@ export class SpiderRouting {
242
232
  return success(await this.fetchPlan(request, before, after));
243
233
  }
244
234
  catch (e) {
245
- if (e instanceof SpiderContractMismatchError)
246
- throw e;
247
235
  return failure(toSpiderError(e));
248
236
  }
249
237
  }
@@ -259,8 +247,7 @@ export class SpiderRouting {
259
247
  via: request.via.length > 0 ? request.via.map(viaToInput) : undefined,
260
248
  modes: modesInput(request.allowedTransitModes),
261
249
  preferences: preferencesInput(request),
262
- // Floor to a whole minute, min 1 — a sub-minute window returns almost nothing on OTP.
263
- searchWindow: `PT${Math.max(1, Math.floor(request.searchWindowMinutes))}M`,
250
+ searchWindow: `PT${Math.floor(request.searchWindowMinutes)}M`,
264
251
  before,
265
252
  after,
266
253
  };
@@ -278,11 +265,7 @@ export class SpiderRouting {
278
265
  hasPreviousPage: plan.pageInfo.hasPreviousPage,
279
266
  searchWindowUsed: plan.pageInfo.searchWindowUsed ?? null,
280
267
  },
281
- routingErrors: plan.routingErrors.map((re) => ({
282
- code: re.code,
283
- description: re.description,
284
- inputField: re.inputField ?? null,
285
- })),
268
+ routingErrors: plan.routingErrors.map(mapRoutingError),
286
269
  searchDateTime: plan.searchDateTime ?? null,
287
270
  };
288
271
  return Object.assign({}, route, { [ROUTE_REQUEST]: request });
@@ -294,13 +277,23 @@ function requestOf(route) {
294
277
  function toEpochMs(value) {
295
278
  return typeof value === 'number' ? value : value.getTime();
296
279
  }
297
- function clampSeconds(seconds) {
298
- return Math.max(0, Math.min(Math.floor(seconds), INT_MAX));
280
+ function invalidStreamOptions(options) {
281
+ // Required by the type; a plain-JS caller can still omit it, and `PTNaNM` must never reach the wire.
282
+ if (options.maxWindowMinutes == null)
283
+ return badRequest('maxWindow', 'is required');
284
+ if (!(Math.floor(options.maxWindowMinutes) >= MIN_STREAM_WINDOW_MINUTES))
285
+ return badRequest('maxWindow');
286
+ return invalidVia(options.via ?? []);
299
287
  }
300
- // Each cursor step advances a full (fixed) search window, so the number of steps to traverse the total time
301
- // is a plain division by the step — no searchWindowUsed math.
302
- function stepCount(maxTraversalMinutes, stepMinutes) {
303
- return Math.max(1, Math.floor(maxTraversalMinutes / Math.max(1, stepMinutes)));
288
+ function invalidVia(via) {
289
+ for (const v of via) {
290
+ const valid = v.kind === 'passThrough'
291
+ ? v.stopIds.length >= 1 && v.stopIds.length <= MAX_VIA_STOP_IDS
292
+ : v.minimumWaitSeconds >= 0 && v.minimumWaitSeconds <= MAX_VIA_WAIT_SECONDS;
293
+ if (!valid)
294
+ return badRequest('via');
295
+ }
296
+ return null;
304
297
  }
305
298
  function locationToInput(location) {
306
299
  if (location.kind === 'stop') {
@@ -328,7 +321,7 @@ function viaToInput(via) {
328
321
  function modesInput(modes) {
329
322
  const transit = modes
330
323
  .filter((m) => WIRE_TRANSIT_MODES.has(m))
331
- .map((mode) => ({ mode }));
324
+ .map((mode) => ({ mode: mode }));
332
325
  return transit.length > 0 ? { transit: { transit } } : undefined;
333
326
  }
334
327
  function preferencesInput(request) {
@@ -358,23 +351,22 @@ function durationSecondsFromWire(raw) {
358
351
  }
359
352
  const SSE_DEFAULT_EVENT = 'message';
360
353
  // Parses one finished SSE record (its event name + accumulated data) into a PlanStreamEvent; returns null for
361
- // records the SDK doesn't surface (heartbeats, unknown events). A malformed payload becomes a terminal
362
- // `failure` rather than throwing. Exported so the wire-contract test exercises it directly.
354
+ // records the SDK doesn't surface (heartbeats, unknown events, the terminal `done` telemetry frame). A
355
+ // malformed payload becomes a terminal `failure` rather than throwing. Exported so the wire-contract test
356
+ // exercises it directly. A `chunk` frame → `result`; the `pageInfo` frame → terminal `done` (carrying the
357
+ // RoutePageInfo and routingErrors); the wire `done` telemetry frame just ends the stream and is dropped.
363
358
  export function parsePlanStreamRecord(event, data) {
364
359
  if (data.trim() === '')
365
360
  return null;
366
361
  switch (event) {
367
362
  case 'chunk':
368
363
  return decodeStreamRecord('chunk', data, (chunk) => ({
369
- kind: 'chunk',
370
- frontierSeconds: chunk.frontier ?? 0,
371
- found: chunk.found ?? 0,
372
- finalized: chunk.finalized ?? 0,
364
+ type: 'result',
373
365
  itineraries: (chunk.results ?? []).map(mapItinerary),
374
366
  }));
375
367
  case 'pageInfo':
376
368
  return decodeStreamRecord('pageInfo', data, (page) => ({
377
- kind: 'page',
369
+ type: 'done',
378
370
  pageInfo: {
379
371
  startCursor: page.startCursor ?? null,
380
372
  endCursor: page.endCursor ?? null,
@@ -382,27 +374,20 @@ export function parsePlanStreamRecord(event, data) {
382
374
  hasPreviousPage: page.hasPreviousPage ?? false,
383
375
  searchWindowUsed: page.searchWindowUsed ?? null,
384
376
  },
385
- }));
386
- case 'done':
387
- return decodeStreamRecord('done', data, (done) => ({
388
- kind: 'done',
389
- iterations: done.iterations ?? 0,
390
- windowSeconds: done.windowSeconds ?? 0,
391
- resultCount: done.resultCount ?? 0,
392
- stoppedBy: done.stoppedBy ?? 'unknown',
377
+ routingErrors: (page.routingErrors ?? []).map(mapRoutingError),
393
378
  }));
394
379
  case 'error':
395
- return { kind: 'failure', error: streamErrorToSpiderError(data) };
380
+ return { type: 'failure', error: streamErrorToSpiderError(data) };
396
381
  default:
397
382
  return null;
398
383
  }
399
384
  }
400
- function decodeStreamRecord(kind, data, map) {
385
+ function decodeStreamRecord(frame, data, map) {
401
386
  try {
402
387
  return map(JSON.parse(data));
403
388
  }
404
389
  catch (e) {
405
- return { kind: 'failure', error: toSpiderError(new DecodingError(`failed to decode plan-stream ${kind}`, e)) };
390
+ return { type: 'failure', error: toSpiderError(new DecodingError(`failed to decode plan-stream ${frame}`, e)) };
406
391
  }
407
392
  }
408
393
  // Splits one raw SSE record into its event name (default "message") and data (multiple `data:` lines joined
@@ -426,25 +411,20 @@ function parseSseFrame(record) {
426
411
  }
427
412
  return { event, data: data.join('\n') };
428
413
  }
429
- // A stream `error` record is the same GraphQL error envelope the batch path returns, so it maps through the
430
- // same taxonomy — a top-level BAD_REQUEST becomes a typed bad_request (with its field), anything else server.
414
+ // A stream `error` record (or a 2xx JSON body in place of the stream) is the same GraphQL error envelope the
415
+ // batch path returns, so it maps through the same taxonomy: a BAD_REQUEST becomes bad_request with its field.
431
416
  function streamErrorToSpiderError(data) {
432
417
  let env;
433
418
  try {
434
419
  env = JSON.parse(data);
435
420
  }
436
421
  catch {
437
- return toSpiderError(new TransportError('upstream', `plan-stream error: ${data.slice(0, 300)}`));
422
+ return toSpiderError(new TransportError('upstream', `routing plan-stream error: ${data.slice(0, 300)}`));
438
423
  }
439
- const errors = env.errors;
440
- if (errors != null && errors.length > 0) {
441
- const bad = errors.find((e) => e.extensions?.code === 'BAD_REQUEST');
442
- if (bad != null) {
443
- return toSpiderError(new TransportError('bad_request', bad.message, undefined, undefined, bad.extensions?.field));
444
- }
445
- return toSpiderError(new TransportError('upstream', `plan-stream errors: ${errors.map((e) => e.message).join(', ')}`));
424
+ if (env.errors != null && env.errors.length > 0) {
425
+ return toSpiderError(graphqlFailure('routing plan-stream', env.errors));
446
426
  }
447
- return toSpiderError(new TransportError('upstream', `plan-stream error: ${env.message ?? data.slice(0, 300)}`));
427
+ return toSpiderError(new TransportError('upstream', `routing plan-stream error: ${env.message ?? data.slice(0, 300)}`));
448
428
  }
449
429
  async function drainText(response) {
450
430
  try {
@@ -454,6 +434,9 @@ async function drainText(response) {
454
434
  return '';
455
435
  }
456
436
  }
437
+ function mapRoutingError(re) {
438
+ return { code: routingErrorCodeFromWire(re.code), description: re.description, inputField: inputFieldFromWire(re.inputField) };
439
+ }
457
440
  function mapItinerary(node) {
458
441
  return {
459
442
  start: node.start ?? null,
@@ -475,12 +458,21 @@ function mapLeg(leg) {
475
458
  startDelaySeconds: durationSecondsFromWire(leg.start.estimated?.delay),
476
459
  endDelaySeconds: durationSecondsFromWire(leg.end.estimated?.delay),
477
460
  isRealtime: leg.realTime ?? false,
478
- realtimeState: leg.realtimeState ?? null,
461
+ realtimeState: realtimeStateFromWire(leg.realtimeState),
479
462
  serviceDate: leg.serviceDate ?? null,
480
463
  fromName: leg.from.name ?? null,
481
464
  toName: leg.to.name ?? null,
465
+ fromGtfsId: leg.from.stop?.gtfsId ?? null,
466
+ toGtfsId: leg.to.stop?.gtfsId ?? null,
467
+ fromPlatformCode: leg.from.stop?.platformCode ?? null,
468
+ toPlatformCode: leg.to.stop?.platformCode ?? null,
469
+ fromZoneId: leg.from.stop?.zoneId ?? null,
470
+ toZoneId: leg.to.stop?.zoneId ?? null,
471
+ routeGtfsId: leg.route?.gtfsId ?? null,
482
472
  routeShortName: leg.route?.shortName ?? null,
483
473
  routeLongName: leg.route?.longName ?? null,
474
+ routeColor: leg.route?.color ?? null,
475
+ routeTextColor: leg.route?.textColor ?? null,
484
476
  headsign: leg.headsign ?? null,
485
477
  distanceMeters: leg.distance ?? null,
486
478
  durationSeconds: leg.duration ?? null,
@@ -493,31 +485,36 @@ function mapLeg(leg) {
493
485
  };
494
486
  }
495
487
  function mapDepartures(stop) {
496
- const stopName = stop.name.trim().toLowerCase();
497
488
  const out = [];
498
489
  for (const st of stop.stoptimesWithoutPatterns ?? []) {
499
490
  const serviceDay = st.serviceDay;
500
491
  const scheduledOffset = st.scheduledDeparture;
501
492
  if (serviceDay == null || scheduledOffset == null)
502
493
  continue;
503
- if (st.headsign != null && st.headsign.trim().toLowerCase() === stopName)
504
- continue;
505
494
  const route = st.trip?.route;
506
495
  out.push({
507
496
  scheduledTimeEpochMs: (serviceDay + scheduledOffset) * 1000,
508
497
  realtimeTimeEpochMs: st.realtimeDeparture != null ? (serviceDay + st.realtimeDeparture) * 1000 : null,
509
498
  isRealtime: st.realtime ?? false,
510
- realtimeState: st.realtimeState ?? null,
499
+ realtimeState: realtimeStateFromWire(st.realtimeState),
511
500
  headsign: st.headsign ?? null,
512
501
  tripGtfsId: st.trip?.gtfsId ?? null,
502
+ serviceDate: serviceDateOf(serviceDay),
503
+ routeGtfsId: route?.gtfsId ?? null,
513
504
  routeShortName: route?.shortName ?? null,
514
505
  routeLongName: route?.longName ?? null,
506
+ routeColor: route?.color ?? null,
507
+ routeTextColor: route?.textColor ?? null,
515
508
  mode: transitModeFromWire(route?.mode),
509
+ stopGtfsId: st.stop?.gtfsId ?? null,
510
+ platformCode: st.stop?.platformCode ?? null,
511
+ wheelchairAccessible: wheelchairFromWire(st.trip?.wheelchairAccessible),
516
512
  });
517
513
  }
518
514
  return out;
519
515
  }
520
516
  function mapTrip(trip) {
517
+ const serviceDay = trip.stoptimesForDate?.find((st) => st.serviceDay != null)?.serviceDay;
521
518
  const stops = [];
522
519
  for (const st of trip.stoptimesForDate ?? []) {
523
520
  const s = st.stop;
@@ -536,16 +533,23 @@ function mapTrip(trip) {
536
533
  realtimeDepartureEpochMs: at(st.realtimeDeparture),
537
534
  isRealtime: st.realtime ?? false,
538
535
  wheelchairBoarding: wheelchairFromWire(s.wheelchairBoarding),
536
+ platformCode: s.platformCode ?? null,
537
+ zoneId: s.zoneId ?? null,
539
538
  });
540
539
  }
541
540
  return {
542
541
  gtfsId: trip.gtfsId,
542
+ serviceDate: serviceDay != null ? serviceDateOf(serviceDay) : null,
543
+ routeGtfsId: trip.route.gtfsId ?? null,
543
544
  routeShortName: trip.route.shortName ?? null,
544
545
  routeLongName: trip.route.longName ?? null,
546
+ routeColor: trip.route.color ?? null,
547
+ routeTextColor: trip.route.textColor ?? null,
545
548
  mode: transitModeFromWire(trip.route.mode),
546
549
  headsign: trip.tripHeadsign ?? null,
547
550
  directionId: trip.directionId ?? null,
548
551
  bikesAllowed: bikesAllowedFromWire(trip.bikesAllowed),
552
+ wheelchairAccessible: wheelchairFromWire(trip.wheelchairAccessible),
549
553
  stops,
550
554
  geometry: trip.tripGeometry?.points ? decodePolyline(trip.tripGeometry.points) : [],
551
555
  };
@@ -1 +1 @@
1
- {"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}