lt-public-transport-sdk 1.0.0 → 1.2.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 (61) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +495 -283
  3. package/dist/config.d.ts +41 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +34 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/errors.d.ts +12 -13
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +1 -1
  10. package/dist/errors.js.map +1 -1
  11. package/dist/gtfs/index.d.ts +2 -2
  12. package/dist/gtfs/index.d.ts.map +1 -1
  13. package/dist/gtfs/index.js +2 -2
  14. package/dist/gtfs/index.js.map +1 -1
  15. package/dist/gtfs/parser.d.ts +49 -2
  16. package/dist/gtfs/parser.d.ts.map +1 -1
  17. package/dist/gtfs/parser.js +328 -2
  18. package/dist/gtfs/parser.js.map +1 -1
  19. package/dist/gtfs/sync.d.ts +26 -2
  20. package/dist/gtfs/sync.d.ts.map +1 -1
  21. package/dist/gtfs/sync.js +205 -12
  22. package/dist/gtfs/sync.js.map +1 -1
  23. package/dist/index.d.ts +151 -18
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +254 -36
  26. package/dist/index.js.map +1 -1
  27. package/dist/parsers/gps-lite.d.ts +34 -36
  28. package/dist/parsers/gps-lite.d.ts.map +1 -1
  29. package/dist/parsers/gps-lite.js +77 -69
  30. package/dist/parsers/gps-lite.js.map +1 -1
  31. package/dist/parsers/index.d.ts +2 -1
  32. package/dist/parsers/index.d.ts.map +1 -1
  33. package/dist/parsers/index.js +4 -1
  34. package/dist/parsers/index.js.map +1 -1
  35. package/dist/schemas.d.ts +242 -13
  36. package/dist/schemas.d.ts.map +1 -1
  37. package/dist/schemas.js +183 -33
  38. package/dist/schemas.js.map +1 -1
  39. package/dist/types.d.ts +106 -0
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/dist/scripts/test-city-specific.d.ts +0 -2
  43. package/dist/scripts/test-city-specific.d.ts.map +0 -1
  44. package/dist/scripts/test-city-specific.js +0 -264
  45. package/dist/scripts/test-city-specific.js.map +0 -1
  46. package/dist/scripts/test-config-options.d.ts +0 -2
  47. package/dist/scripts/test-config-options.d.ts.map +0 -1
  48. package/dist/scripts/test-config-options.js +0 -166
  49. package/dist/scripts/test-config-options.js.map +0 -1
  50. package/dist/scripts/test-data-quality.d.ts +0 -2
  51. package/dist/scripts/test-data-quality.d.ts.map +0 -1
  52. package/dist/scripts/test-data-quality.js +0 -204
  53. package/dist/scripts/test-data-quality.js.map +0 -1
  54. package/dist/scripts/test-error-handling.d.ts +0 -2
  55. package/dist/scripts/test-error-handling.d.ts.map +0 -1
  56. package/dist/scripts/test-error-handling.js +0 -146
  57. package/dist/scripts/test-error-handling.js.map +0 -1
  58. package/dist/scripts/test-live.d.ts +0 -2
  59. package/dist/scripts/test-live.d.ts.map +0 -1
  60. package/dist/scripts/test-live.js +0 -121
  61. package/dist/scripts/test-live.js.map +0 -1
package/dist/gtfs/sync.js CHANGED
@@ -12,7 +12,7 @@ import { join } from 'node:path';
12
12
  import * as yauzl from 'yauzl-promise';
13
13
  import { CITY_CONFIGS } from '../config.js';
14
14
  import { GtfsSyncError } from '../errors.js';
15
- import { parseRoutesContent, parseStopsContent } from './parser.js';
15
+ import { parseRoutesContent, parseStopsContent, parseTripsContent, parseShapesContent, parseCalendarContent, parseCalendarDatesContent, parseAgencyContent, parseStopTimesContent, } from './parser.js';
16
16
  // =============================================================================
17
17
  // Default Values
18
18
  // =============================================================================
@@ -120,6 +120,140 @@ async function saveStops(cacheDir, city, stops) {
120
120
  await writeFile(join(cityDir, 'stops.json'), JSON.stringify(stops));
121
121
  }
122
122
  // =============================================================================
123
+ // Trips Cache Functions
124
+ // =============================================================================
125
+ export async function loadCachedTrips(cacheDir, city) {
126
+ const tripsPath = join(cacheDir, city, 'trips.json');
127
+ if (!existsSync(tripsPath)) {
128
+ return null;
129
+ }
130
+ try {
131
+ const content = await readFile(tripsPath, 'utf-8');
132
+ const entries = JSON.parse(content);
133
+ return new Map(entries);
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ }
139
+ async function saveTrips(cacheDir, city, trips) {
140
+ const cityDir = join(cacheDir, city);
141
+ await ensureDir(cityDir);
142
+ const entries = Array.from(trips.entries());
143
+ await writeFile(join(cityDir, 'trips.json'), JSON.stringify(entries));
144
+ }
145
+ // =============================================================================
146
+ // Shapes Cache Functions
147
+ // =============================================================================
148
+ export async function loadCachedShapes(cacheDir, city) {
149
+ const shapesPath = join(cacheDir, city, 'shapes.json');
150
+ if (!existsSync(shapesPath)) {
151
+ return null;
152
+ }
153
+ try {
154
+ const content = await readFile(shapesPath, 'utf-8');
155
+ const entries = JSON.parse(content);
156
+ return new Map(entries);
157
+ }
158
+ catch {
159
+ return null;
160
+ }
161
+ }
162
+ async function saveShapes(cacheDir, city, shapes) {
163
+ const cityDir = join(cacheDir, city);
164
+ await ensureDir(cityDir);
165
+ const entries = Array.from(shapes.entries());
166
+ await writeFile(join(cityDir, 'shapes.json'), JSON.stringify(entries));
167
+ }
168
+ // =============================================================================
169
+ // Calendar Cache Functions
170
+ // =============================================================================
171
+ export async function loadCachedCalendar(cacheDir, city) {
172
+ const calendarPath = join(cacheDir, city, 'calendar.json');
173
+ if (!existsSync(calendarPath)) {
174
+ return null;
175
+ }
176
+ try {
177
+ const content = await readFile(calendarPath, 'utf-8');
178
+ const entries = JSON.parse(content);
179
+ return new Map(entries);
180
+ }
181
+ catch {
182
+ return null;
183
+ }
184
+ }
185
+ async function saveCalendar(cacheDir, city, calendar) {
186
+ const cityDir = join(cacheDir, city);
187
+ await ensureDir(cityDir);
188
+ const entries = Array.from(calendar.entries());
189
+ await writeFile(join(cityDir, 'calendar.json'), JSON.stringify(entries));
190
+ }
191
+ // =============================================================================
192
+ // Calendar Dates Cache Functions
193
+ // =============================================================================
194
+ export async function loadCachedCalendarDates(cacheDir, city) {
195
+ const calendarDatesPath = join(cacheDir, city, 'calendar_dates.json');
196
+ if (!existsSync(calendarDatesPath)) {
197
+ return null;
198
+ }
199
+ try {
200
+ const content = await readFile(calendarDatesPath, 'utf-8');
201
+ return JSON.parse(content);
202
+ }
203
+ catch {
204
+ return null;
205
+ }
206
+ }
207
+ async function saveCalendarDates(cacheDir, city, calendarDates) {
208
+ const cityDir = join(cacheDir, city);
209
+ await ensureDir(cityDir);
210
+ await writeFile(join(cityDir, 'calendar_dates.json'), JSON.stringify(calendarDates));
211
+ }
212
+ // =============================================================================
213
+ // Agencies Cache Functions
214
+ // =============================================================================
215
+ export async function loadCachedAgencies(cacheDir, city) {
216
+ const agenciesPath = join(cacheDir, city, 'agencies.json');
217
+ if (!existsSync(agenciesPath)) {
218
+ return null;
219
+ }
220
+ try {
221
+ const content = await readFile(agenciesPath, 'utf-8');
222
+ return JSON.parse(content);
223
+ }
224
+ catch {
225
+ return null;
226
+ }
227
+ }
228
+ async function saveAgencies(cacheDir, city, agencies) {
229
+ const cityDir = join(cacheDir, city);
230
+ await ensureDir(cityDir);
231
+ await writeFile(join(cityDir, 'agencies.json'), JSON.stringify(agencies));
232
+ }
233
+ // =============================================================================
234
+ // Stop Times Cache Functions
235
+ // =============================================================================
236
+ export async function loadCachedStopTimes(cacheDir, city) {
237
+ const stopTimesPath = join(cacheDir, city, 'stop_times.json');
238
+ if (!existsSync(stopTimesPath)) {
239
+ return null;
240
+ }
241
+ try {
242
+ const content = await readFile(stopTimesPath, 'utf-8');
243
+ const entries = JSON.parse(content);
244
+ return new Map(entries);
245
+ }
246
+ catch {
247
+ return null;
248
+ }
249
+ }
250
+ async function saveStopTimes(cacheDir, city, stopTimes) {
251
+ const cityDir = join(cacheDir, city);
252
+ await ensureDir(cityDir);
253
+ const entries = Array.from(stopTimes.entries());
254
+ await writeFile(join(cityDir, 'stop_times.json'), JSON.stringify(entries));
255
+ }
256
+ // =============================================================================
123
257
  // Main Sync Function
124
258
  // =============================================================================
125
259
  /**
@@ -190,20 +324,44 @@ export async function syncGtfs(city, options = {}) {
190
324
  await writeFile(tempPath, zipBuffer);
191
325
  let routes = new Map();
192
326
  let stops = [];
327
+ let trips = new Map();
328
+ let shapes = new Map();
329
+ let calendar = new Map();
330
+ let calendarDates = [];
331
+ let agencies = [];
332
+ let stopTimes = new Map();
193
333
  try {
194
334
  // Extract with yauzl
195
335
  const zip = await yauzl.open(tempPath);
196
336
  try {
197
337
  for await (const entry of zip) {
198
- if (entry.filename === 'routes.txt') {
199
- const stream = await entry.openReadStream();
200
- const content = await streamToString(stream);
201
- routes = parseRoutesContent(content);
202
- }
203
- else if (entry.filename === 'stops.txt') {
204
- const stream = await entry.openReadStream();
205
- const content = await streamToString(stream);
206
- stops = parseStopsContent(content);
338
+ const stream = await entry.openReadStream();
339
+ const content = await streamToString(stream);
340
+ switch (entry.filename) {
341
+ case 'routes.txt':
342
+ routes = parseRoutesContent(content);
343
+ break;
344
+ case 'stops.txt':
345
+ stops = parseStopsContent(content);
346
+ break;
347
+ case 'trips.txt':
348
+ trips = parseTripsContent(content);
349
+ break;
350
+ case 'shapes.txt':
351
+ shapes = parseShapesContent(content);
352
+ break;
353
+ case 'calendar.txt':
354
+ calendar = parseCalendarContent(content);
355
+ break;
356
+ case 'calendar_dates.txt':
357
+ calendarDates = parseCalendarDatesContent(content);
358
+ break;
359
+ case 'agency.txt':
360
+ agencies = parseAgencyContent(content);
361
+ break;
362
+ case 'stop_times.txt':
363
+ stopTimes = parseStopTimesContent(content);
364
+ break;
207
365
  }
208
366
  }
209
367
  }
@@ -220,6 +378,11 @@ export async function syncGtfs(city, options = {}) {
220
378
  // Ignore cleanup errors
221
379
  }
222
380
  }
381
+ // Count stop times (sum of all arrays)
382
+ let stopTimeCount = 0;
383
+ for (const times of stopTimes.values()) {
384
+ stopTimeCount += times.length;
385
+ }
223
386
  // Save to cache
224
387
  const syncedAt = new Date();
225
388
  const meta = {
@@ -227,10 +390,22 @@ export async function syncGtfs(city, options = {}) {
227
390
  syncedAt: syncedAt.toISOString(),
228
391
  routeCount: routes.size,
229
392
  stopCount: stops.length,
393
+ tripCount: trips.size,
394
+ shapeCount: shapes.size,
395
+ calendarCount: calendar.size,
396
+ calendarDateCount: calendarDates.length,
397
+ agencyCount: agencies.length,
398
+ stopTimeCount,
230
399
  };
231
400
  await saveCacheMeta(cacheDir, city, meta);
232
401
  await saveRoutes(cacheDir, city, routes);
233
402
  await saveStops(cacheDir, city, stops);
403
+ await saveTrips(cacheDir, city, trips);
404
+ await saveShapes(cacheDir, city, shapes);
405
+ await saveCalendar(cacheDir, city, calendar);
406
+ await saveCalendarDates(cacheDir, city, calendarDates);
407
+ await saveAgencies(cacheDir, city, agencies);
408
+ await saveStopTimes(cacheDir, city, stopTimes);
234
409
  return {
235
410
  city,
236
411
  status: 'updated',
@@ -249,7 +424,7 @@ export async function syncGtfs(city, options = {}) {
249
424
  }
250
425
  /**
251
426
  * Load GTFS cache for a city.
252
- * Returns null if not cached.
427
+ * Returns null if cache is not available.
253
428
  *
254
429
  * @param city - City to load
255
430
  * @param cacheDir - Cache directory
@@ -261,11 +436,29 @@ export async function loadGtfsCache(city, cacheDir) {
261
436
  if (!meta) {
262
437
  return null;
263
438
  }
439
+ // Load core data (required)
264
440
  const routes = await loadCachedRoutes(dir, city);
265
441
  const stops = await loadCachedStops(dir, city);
266
442
  if (!routes || !stops) {
267
443
  return null;
268
444
  }
269
- return { meta, routes, stops };
445
+ // Load extended data (optional, default to empty if not present)
446
+ const trips = await loadCachedTrips(dir, city) ?? new Map();
447
+ const shapes = await loadCachedShapes(dir, city) ?? new Map();
448
+ const calendar = await loadCachedCalendar(dir, city) ?? new Map();
449
+ const calendarDates = await loadCachedCalendarDates(dir, city) ?? [];
450
+ const agencies = await loadCachedAgencies(dir, city) ?? [];
451
+ const stopTimes = await loadCachedStopTimes(dir, city) ?? new Map();
452
+ return {
453
+ meta,
454
+ routes,
455
+ stops,
456
+ trips,
457
+ shapes,
458
+ calendar,
459
+ calendarDates,
460
+ agencies,
461
+ stopTimes,
462
+ };
270
463
  }
271
464
  //# sourceMappingURL=sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/gtfs/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/gtfs/sync.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  *
23
23
  * @module
24
24
  */
25
- import type { CityId, Route, Stop, SyncResult, Vehicle } from './types.js';
25
+ import type { CityId, Route, Stop, Trip, ShapePoint, Calendar, CalendarDate, Agency, StopTime, SyncResult, Vehicle } from './types.js';
26
26
  import { type CityConfig } from './config.js';
27
27
  /**
28
28
  * Configuration options for LtTransport client.
@@ -64,6 +64,43 @@ export interface LtTransportConfig {
64
64
  * @default false
65
65
  */
66
66
  filterStale?: boolean;
67
+ /**
68
+ * Add custom cities not yet included in the SDK.
69
+ * Allows using new cities immediately without waiting for SDK updates.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const transport = new LtTransport({
74
+ * customCities: {
75
+ * marijampole: {
76
+ * id: 'marijampole',
77
+ * tier: 'silver',
78
+ * gps: { enabled: true, format: 'lite', url: 'https://www.stops.lt/marijampole/gps.txt' },
79
+ * gtfs: { enabled: true, url: 'https://www.stops.lt/marijampole/marijampole/gtfs.zip' },
80
+ * liteFormat: { minColumns: 9, vehicleIdIndex: 7, routeIndex: 1, coordIndices: [3, 2], speedIndex: 4, bearingIndex: 5 }
81
+ * }
82
+ * }
83
+ * });
84
+ * ```
85
+ */
86
+ customCities?: Record<string, CityConfig>;
87
+ /**
88
+ * Override configuration for existing built-in cities.
89
+ * Useful when a city changes its data format before SDK is updated.
90
+ * Overrides are deeply merged with the built-in configuration.
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * const transport = new LtTransport({
95
+ * cityOverrides: {
96
+ * panevezys: {
97
+ * liteFormat: { minColumns: 10, vehicleIdIndex: 8, ... } // They added a column
98
+ * }
99
+ * }
100
+ * });
101
+ * ```
102
+ */
103
+ cityOverrides?: Partial<Record<CityId, Partial<CityConfig>>>;
67
104
  }
68
105
  /**
69
106
  * Lithuanian Public Transport SDK client.
@@ -91,6 +128,13 @@ export declare class LtTransport {
91
128
  private readonly autoEnrich;
92
129
  private readonly filterInvalidCoords;
93
130
  private readonly filterStale;
131
+ /**
132
+ * Effective city configurations (built-in + custom + overrides merged).
133
+ * This is the source of truth for city configs in this instance.
134
+ */
135
+ private readonly effectiveCityConfigs;
136
+ /** Sorted list of all effective city IDs */
137
+ private readonly effectiveCityIds;
94
138
  /** In-memory route cache for fast enrichment */
95
139
  private readonly routeCaches;
96
140
  /** Last sync timestamps for throttling */
@@ -99,18 +143,33 @@ export declare class LtTransport {
99
143
  * Create a new LtTransport client.
100
144
  *
101
145
  * @param config - Client configuration options
146
+ * @throws {ZodError} If config validation fails (includes helpful error messages)
102
147
  */
103
148
  constructor(config?: LtTransportConfig);
149
+ /**
150
+ * Build effective city configurations by merging built-in, custom, and overrides.
151
+ */
152
+ private buildEffectiveCityConfigs;
153
+ /**
154
+ * Deep merge a city config with partial overrides.
155
+ */
156
+ private mergeCityConfig;
157
+ /**
158
+ * Get effective city config for a city ID.
159
+ * Checks the merged config map which includes built-in, custom, and overridden configs.
160
+ */
161
+ private getEffectiveCityConfig;
104
162
  /**
105
163
  * Get real-time vehicle positions for a city.
106
164
  *
107
- * For silver-tier cities (Panevėžys, Tauragė), vehicles will be enriched
108
- * with GTFS data if `sync()` has been called and `autoEnrich` is enabled.
165
+ * For silver-tier cities, vehicles will be enriched with GTFS data
166
+ * if `sync()` has been called and `autoEnrich` is enabled.
109
167
  *
110
- * @param city - City identifier
168
+ * @param city - City identifier (built-in or custom)
111
169
  * @returns Array of vehicle positions
112
- * @throws {GpsNotAvailableError} If city is bronze tier (no GPS data)
170
+ * @throws {GpsNotAvailableError} If city has no GPS data (bronze tier)
113
171
  * @throws {TransportNetworkError} If network request fails
172
+ * @throws {InvalidCityError} If city is not recognized
114
173
  *
115
174
  * @example
116
175
  * ```typescript
@@ -118,7 +177,7 @@ export declare class LtTransport {
118
177
  * console.log(`Found ${vehicles.length} vehicles`);
119
178
  * ```
120
179
  */
121
- getVehicles(city: CityId): Promise<Vehicle[]>;
180
+ getVehicles(city: string): Promise<Vehicle[]>;
122
181
  /**
123
182
  * Sync GTFS static data for a city.
124
183
  *
@@ -127,10 +186,11 @@ export declare class LtTransport {
127
186
  *
128
187
  * Throttled to minimum 60 seconds between calls for same city.
129
188
  *
130
- * @param city - City to sync
189
+ * @param city - City to sync (built-in or custom)
131
190
  * @param force - Force re-download even if cache is current
132
191
  * @returns Sync result with counts and status
133
192
  * @throws {GtfsSyncError} If sync fails
193
+ * @throws {InvalidCityError} If city is not recognized
134
194
  *
135
195
  * @example
136
196
  * ```typescript
@@ -138,7 +198,7 @@ export declare class LtTransport {
138
198
  * console.log(`Synced ${result.routeCount} routes`);
139
199
  * ```
140
200
  */
141
- sync(city: CityId, force?: boolean): Promise<SyncResult>;
201
+ sync(city: string, force?: boolean): Promise<SyncResult>;
142
202
  /**
143
203
  * Get static stop data for a city.
144
204
  *
@@ -147,6 +207,7 @@ export declare class LtTransport {
147
207
  * @param city - City to get stops for
148
208
  * @returns Array of stops
149
209
  * @throws {SyncRequiredError} If GTFS data not synced
210
+ * @throws {InvalidCityError} If city is not recognized
150
211
  *
151
212
  * @example
152
213
  * ```typescript
@@ -155,7 +216,7 @@ export declare class LtTransport {
155
216
  * console.log(`Found ${stops.length} stops`);
156
217
  * ```
157
218
  */
158
- getStops(city: CityId): Promise<Stop[]>;
219
+ getStops(city: string): Promise<Stop[]>;
159
220
  /**
160
221
  * Get route information for a city.
161
222
  *
@@ -164,6 +225,7 @@ export declare class LtTransport {
164
225
  * @param city - City to get routes for
165
226
  * @returns Array of routes
166
227
  * @throws {SyncRequiredError} If GTFS data not synced
228
+ * @throws {InvalidCityError} If city is not recognized
167
229
  *
168
230
  * @example
169
231
  * ```typescript
@@ -172,19 +234,90 @@ export declare class LtTransport {
172
234
  * console.log(`Found ${routes.length} routes`);
173
235
  * ```
174
236
  */
175
- getRoutes(city: CityId): Promise<Route[]>;
237
+ getRoutes(city: string): Promise<Route[]>;
176
238
  /**
177
- * Get list of all supported city IDs.
239
+ * Get list of all available city IDs.
240
+ * Includes built-in cities and any custom cities added via config.
178
241
  */
179
- getCities(): readonly CityId[];
242
+ getCities(): readonly string[];
180
243
  /**
181
244
  * Get configuration for a specific city.
245
+ * Returns effective config (with any overrides applied).
246
+ *
247
+ * @throws {InvalidCityError} If city is not found
248
+ */
249
+ getCityConfig(city: string): CityConfig;
250
+ /**
251
+ * Get trip data for a city.
252
+ *
253
+ * Requires prior `sync()` call to download GTFS data.
254
+ *
255
+ * @param city - City to get trips for
256
+ * @returns Array of trips
257
+ * @throws {SyncRequiredError} If GTFS data not synced
258
+ * @throws {InvalidCityError} If city is not recognized
259
+ */
260
+ getTrips(city: string): Promise<Trip[]>;
261
+ /**
262
+ * Get shape data for a city (geographic paths for routes).
263
+ *
264
+ * Requires prior `sync()` call to download GTFS data.
265
+ * Returns a Map where keys are shape IDs and values are arrays of points.
266
+ *
267
+ * @param city - City to get shapes for
268
+ * @returns Map from shape ID to array of ShapePoint
269
+ * @throws {SyncRequiredError} If GTFS data not synced
270
+ * @throws {InvalidCityError} If city is not recognized
271
+ */
272
+ getShapes(city: string): Promise<Map<string, ShapePoint[]>>;
273
+ /**
274
+ * Get service calendar data for a city.
275
+ *
276
+ * Requires prior `sync()` call to download GTFS data.
277
+ *
278
+ * @param city - City to get calendar for
279
+ * @returns Array of Calendar entries
280
+ * @throws {SyncRequiredError} If GTFS data not synced
281
+ * @throws {InvalidCityError} If city is not recognized
282
+ */
283
+ getCalendar(city: string): Promise<Calendar[]>;
284
+ /**
285
+ * Get calendar date exceptions for a city.
286
+ *
287
+ * Requires prior `sync()` call to download GTFS data.
288
+ *
289
+ * @param city - City to get calendar dates for
290
+ * @returns Array of CalendarDate exceptions
291
+ * @throws {SyncRequiredError} If GTFS data not synced
292
+ * @throws {InvalidCityError} If city is not recognized
293
+ */
294
+ getCalendarDates(city: string): Promise<CalendarDate[]>;
295
+ /**
296
+ * Get agency information for a city.
297
+ *
298
+ * Requires prior `sync()` call to download GTFS data.
299
+ *
300
+ * @param city - City to get agencies for
301
+ * @returns Array of Agency objects
302
+ * @throws {SyncRequiredError} If GTFS data not synced
303
+ * @throws {InvalidCityError} If city is not recognized
182
304
  */
183
- getCityConfig(city: CityId): CityConfig;
305
+ getAgencies(city: string): Promise<Agency[]>;
184
306
  /**
185
- * Validate that city ID is valid.
307
+ * Get stop times (schedule) data for a city.
308
+ *
309
+ * **Warning**: This dataset is large (~25MB for Vilnius) and will consume
310
+ * significant memory (~150-200MB) when loaded.
311
+ *
312
+ * Requires prior `sync()` call to download GTFS data.
313
+ * Returns a Map where keys are trip IDs and values are arrays of stop times.
314
+ *
315
+ * @param city - City to get schedule for
316
+ * @returns Map from trip ID to array of StopTime
317
+ * @throws {SyncRequiredError} If GTFS data not synced
318
+ * @throws {InvalidCityError} If city is not recognized
186
319
  */
187
- private validateCity;
320
+ getSchedule(city: string): Promise<Map<string, StopTime[]>>;
188
321
  /**
189
322
  * Fetch text content from URL.
190
323
  */
@@ -194,10 +327,10 @@ export declare class LtTransport {
194
327
  */
195
328
  private getRouteCache;
196
329
  }
197
- export type { CityId, CityTier, VehicleType, Vehicle, Stop, Route, SyncResult, } from './types.js';
330
+ export type { CityId, CityTier, VehicleType, Vehicle, Stop, Route, Trip, ShapePoint, Calendar, CalendarDate, Agency, StopTime, SyncResult, } from './types.js';
198
331
  export { GTFS_ROUTE_TYPE_MAP, LT_TRANSPORT_TYPE_MAP } from './types.js';
199
- export { CITY_CONFIGS, ALL_CITY_IDS, getCityConfig, getCitiesByTier, hasGpsData, hasGtfsData } from './config.js';
200
- export type { CityConfig, GpsConfig, GtfsConfig } from './config.js';
332
+ export { CITY_CONFIGS, ALL_CITY_IDS, getCityConfig, getCitiesByTier, hasGpsData, hasGtfsData, LITE_FORMAT_DESCRIPTORS } from './config.js';
333
+ export type { CityConfig, GpsConfig, GtfsConfig, LiteFormatDescriptor } from './config.js';
201
334
  export { TransportError, TransportNetworkError, GpsNotAvailableError, SyncRequiredError, GtfsSyncError, ParseError, InvalidCityError, isTransportError, isNetworkError, } from './errors.js';
202
335
  export { normalizeCoordinate, isValidLithuaniaCoord, LITHUANIA_BOUNDS, repairMojibake, secondsFromMidnightToDate, isDataStale, } from './utils/index.js';
203
336
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}