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
@@ -2,33 +2,57 @@
2
2
  * GPS Lite Format Parser for silver-tier cities
3
3
  * @module parsers/gps-lite
4
4
  *
5
- * Handles the "lite" GPS format used by silver-tier cities (Panevėžys, Tauragė).
6
- * These streams have no header row and fewer columns.
5
+ * Handles the "lite" GPS format used by silver-tier cities.
6
+ * These streams have no header row and use a data-driven format descriptor
7
+ * to parse columns at specified indices.
7
8
  *
8
- * Column counts by city (empirically verified):
9
- * - Panevėžys: 9 columns (no header, route often empty)
10
- * - Tauragė: 8 columns (no header, alphanumeric routes like S11, S19)
9
+ * This design allows users to:
10
+ * - Add new cities without SDK updates
11
+ * - Override formats when cities change their data structure
11
12
  */
13
+ import { LITE_FORMAT_DESCRIPTORS } from '../config.js';
12
14
  import { normalizeCoordinate, isValidLithuaniaCoord, normalizeBearing, normalizeSpeed, } from '../utils/index.js';
13
- import { gpsLitePanevezysSchema, gpsLiteTaurageSchema } from '../schemas.js';
15
+ // =============================================================================
16
+ // Format Detection
17
+ // =============================================================================
14
18
  /**
15
- * Check if a city uses lite GPS format.
19
+ * Get the lite format descriptor for a city.
20
+ * Checks city config first, then falls back to built-in descriptors.
21
+ *
22
+ * @param cityId - The city identifier
23
+ * @param cityConfig - Optional city config with custom liteFormat
24
+ * @returns The format descriptor, or undefined if not found
25
+ */
26
+ export function getLiteFormatDescriptor(cityId, cityConfig) {
27
+ // Priority 1: Explicit liteFormat in city config
28
+ if (cityConfig?.liteFormat) {
29
+ return cityConfig.liteFormat;
30
+ }
31
+ // Priority 2: Built-in descriptor by city ID
32
+ return LITE_FORMAT_DESCRIPTORS[cityId];
33
+ }
34
+ /**
35
+ * Check if a city uses lite GPS format based on its config.
36
+ *
37
+ * @param cityConfig - The city configuration
38
+ * @returns True if the city uses lite format
16
39
  */
17
- export function isLiteCity(city) {
18
- return city === 'panevezys' || city === 'taurage';
40
+ export function isLiteFormat(cityConfig) {
41
+ return cityConfig.gps.format === 'lite';
19
42
  }
20
43
  // =============================================================================
21
44
  // Main Parser
22
45
  // =============================================================================
23
46
  /**
24
- * Parse GPS lite format stream from a silver-tier city.
47
+ * Parse GPS lite format stream using a format descriptor.
25
48
  *
26
49
  * @param text - Raw text content from gps.txt
27
- * @param city - City identifier (must be 'panevezys' or 'taurage')
50
+ * @param cityId - City identifier for vehicle ID prefixing
51
+ * @param format - Format descriptor defining column indices
28
52
  * @param options - Parse options
29
53
  * @returns Array of normalized Vehicle objects
30
54
  */
31
- export function parseGpsLiteStream(text, city, options = {}) {
55
+ export function parseGpsLiteStream(text, cityId, format, options = {}) {
32
56
  const { filterInvalidCoords = true } = options;
33
57
  const lines = text.split('\n').filter(line => line.trim());
34
58
  if (lines.length === 0) {
@@ -38,9 +62,7 @@ export function parseGpsLiteStream(text, city, options = {}) {
38
62
  for (const line of lines) {
39
63
  const cols = line.split(',');
40
64
  try {
41
- const vehicle = city === 'panevezys'
42
- ? parsePanevezysLine(cols, city)
43
- : parseTaurageLine(cols, city);
65
+ const vehicle = parseLiteLine(cols, cityId, format);
44
66
  if (vehicle) {
45
67
  if (filterInvalidCoords && !isValidLithuaniaCoord(vehicle.latitude, vehicle.longitude)) {
46
68
  continue;
@@ -56,34 +78,52 @@ export function parseGpsLiteStream(text, city, options = {}) {
56
78
  return vehicles;
57
79
  }
58
80
  // =============================================================================
59
- // City-Specific Parsers
81
+ // Generic Line Parser
60
82
  // =============================================================================
61
83
  /**
62
- * Parse a line from Panevėžys GPS lite format (9 columns).
84
+ * Parse a single line using the format descriptor.
85
+ * This is the core data-driven parser that uses column indices
86
+ * from the descriptor instead of hardcoded positions.
87
+ *
88
+ * @param cols - Array of column values from the CSV line
89
+ * @param cityId - City identifier for vehicle ID prefixing
90
+ * @param format - Format descriptor with column indices
91
+ * @returns Parsed Vehicle or null if line is invalid
63
92
  */
64
- function parsePanevezysLine(cols, city) {
65
- // Validate with Zod schema
66
- const parseResult = gpsLitePanevezysSchema.safeParse(cols);
67
- if (!parseResult.success) {
93
+ function parseLiteLine(cols, cityId, format) {
94
+ // Check minimum column count
95
+ if (cols.length < format.minColumns) {
96
+ return null;
97
+ }
98
+ // Extract vehicle ID
99
+ const vehicleNumber = cols[format.vehicleIdIndex]?.trim();
100
+ if (vehicleNumber === undefined || vehicleNumber === '') {
68
101
  return null;
69
102
  }
70
- const row = parseResult.data;
71
- const vehicleNumber = row[7];
72
- // Validate essential fields
73
- if (vehicleNumber === '' || !Number.isFinite(row[2]) || !Number.isFinite(row[3])) {
103
+ // Extract and validate coordinates
104
+ const latRaw = Number(cols[format.coordIndices[0]]);
105
+ const lonRaw = Number(cols[format.coordIndices[1]]);
106
+ if (!Number.isFinite(latRaw) || !Number.isFinite(lonRaw)) {
74
107
  return null;
75
108
  }
76
- const longitude = normalizeCoordinate(row[2]);
77
- const latitude = normalizeCoordinate(row[3]);
78
- const speed = normalizeSpeed(row[4]);
79
- const bearing = normalizeBearing(row[5]);
80
- const route = row[1];
81
- const id = `${city}-${vehicleNumber}`;
109
+ // Extract route (may be empty)
110
+ const route = cols[format.routeIndex]?.trim() ?? '';
111
+ // Extract speed and bearing
112
+ const speedRaw = Number(cols[format.speedIndex]);
113
+ const bearingRaw = Number(cols[format.bearingIndex]);
114
+ // Normalize values
115
+ const latitude = normalizeCoordinate(latRaw);
116
+ const longitude = normalizeCoordinate(lonRaw);
117
+ const speed = normalizeSpeed(Number.isFinite(speedRaw) ? speedRaw : 0);
118
+ const bearing = normalizeBearing(Number.isFinite(bearingRaw) ? bearingRaw : 0);
119
+ // Determine vehicle type (lite format typically doesn't specify, default to bus)
120
+ const type = 'bus';
121
+ const id = `${cityId}-${vehicleNumber}`;
82
122
  return {
83
123
  id,
84
124
  vehicleNumber,
85
125
  route,
86
- type: 'bus', // Lite format doesn't specify type
126
+ type,
87
127
  latitude,
88
128
  longitude,
89
129
  bearing,
@@ -99,43 +139,11 @@ function parsePanevezysLine(cols, city) {
99
139
  };
100
140
  }
101
141
  /**
102
- * Parse a line from Tauragė GPS lite format (8 columns).
142
+ * @deprecated Use isLiteFormat(cityConfig) instead.
143
+ * Check if a city uses lite GPS format.
103
144
  */
104
- function parseTaurageLine(cols, city) {
105
- // Validate with Zod schema
106
- const parseResult = gpsLiteTaurageSchema.safeParse(cols);
107
- if (!parseResult.success) {
108
- return null;
109
- }
110
- const row = parseResult.data;
111
- const vehicleNumber = row[6];
112
- // Validate essential fields
113
- if (vehicleNumber === '' || !Number.isFinite(row[2]) || !Number.isFinite(row[3])) {
114
- return null;
115
- }
116
- const longitude = normalizeCoordinate(row[2]);
117
- const latitude = normalizeCoordinate(row[3]);
118
- const speed = normalizeSpeed(row[4]);
119
- const bearing = normalizeBearing(row[5]);
120
- const route = row[1];
121
- const id = `${city}-${vehicleNumber}`;
122
- return {
123
- id,
124
- vehicleNumber,
125
- route,
126
- type: 'bus', // Lite format doesn't specify type
127
- latitude,
128
- longitude,
129
- bearing,
130
- speed,
131
- destination: null, // Needs GTFS enrichment
132
- delaySeconds: null,
133
- tripId: null,
134
- gtfsTripId: null,
135
- nextStopId: null,
136
- arrivalTimeSeconds: null,
137
- isStale: false, // No timestamp in lite format
138
- measuredAt: new Date(), // Use server receive time
139
- };
145
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
146
+ export function isLiteCity(cityId) {
147
+ return cityId in LITE_FORMAT_DESCRIPTORS;
140
148
  }
141
149
  //# sourceMappingURL=gps-lite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gps-lite.js","sourceRoot":"","sources":["../../src/parsers/gps-lite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gps-lite.js","sourceRoot":"","sources":["../../src/parsers/gps-lite.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@
3
3
  * @module parsers
4
4
  */
5
5
  export { parseGpsFullStream, type GpsFullParseOptions, } from './gps-full.js';
6
- export { parseGpsLiteStream, isLiteCity, type GpsLiteParseOptions, type LiteCityId, } from './gps-lite.js';
6
+ export { parseGpsLiteStream, getLiteFormatDescriptor, isLiteFormat, type GpsLiteParseOptions, } from './gps-lite.js';
7
+ export { isLiteCity, type LiteCityId } from './gps-lite.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAIvB,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -3,5 +3,8 @@
3
3
  * @module parsers
4
4
  */
5
5
  export { parseGpsFullStream, } from './gps-full.js';
6
- export { parseGpsLiteStream, isLiteCity, } from './gps-lite.js';
6
+ export { parseGpsLiteStream, getLiteFormatDescriptor, isLiteFormat, } from './gps-lite.js';
7
+ // Legacy exports (deprecated, kept for backwards compatibility)
8
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
9
+ export { isLiteCity } from './gps-lite.js';
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,UAAU,GAGX,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,YAAY,GAEb,MAAM,eAAe,CAAC;AAEvB,gEAAgE;AAChE,4DAA4D;AAC5D,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC"}
package/dist/schemas.d.ts CHANGED
@@ -36,18 +36,6 @@ export declare const gpsFullRowSchema: z.ZodObject<{
36
36
  IntervalasPaskui: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
37
37
  }, z.core.$loose>;
38
38
  export type GpsFullRow = z.infer<typeof gpsFullRowSchema>;
39
- /**
40
- * Schema for Panevėžys GPS lite format (9 columns, no header).
41
- * Columns: type, route, lon, lat, speed, azimuth, ?, vehicleId, ?
42
- */
43
- export declare const gpsLitePanevezysSchema: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodCoercedNumber<unknown>, z.ZodCoercedNumber<unknown>, z.ZodCoercedNumber<unknown>, z.ZodCoercedNumber<unknown>, z.ZodString, z.ZodString, z.ZodString], null>;
44
- /**
45
- * Schema for Tauragė GPS lite format (8 columns, no header).
46
- * Columns: type, route, lon, lat, speed, azimuth, vehicleId, ?
47
- */
48
- export declare const gpsLiteTaurageSchema: z.ZodTuple<[z.ZodString, z.ZodString, z.ZodCoercedNumber<unknown>, z.ZodCoercedNumber<unknown>, z.ZodCoercedNumber<unknown>, z.ZodCoercedNumber<unknown>, z.ZodString, z.ZodString], null>;
49
- export type GpsLitePanevezysRow = z.infer<typeof gpsLitePanevezysSchema>;
50
- export type GpsLiteTaurageRow = z.infer<typeof gpsLiteTaurageSchema>;
51
39
  /**
52
40
  * Schema for a GTFS routes.txt row.
53
41
  */
@@ -77,6 +65,187 @@ export declare const gtfsStopSchema: z.ZodObject<{
77
65
  parent_station: z.ZodOptional<z.ZodString>;
78
66
  }, z.core.$loose>;
79
67
  export type GtfsStop = z.infer<typeof gtfsStopSchema>;
68
+ /**
69
+ * Schema for a GTFS trips.txt row.
70
+ */
71
+ export declare const gtfsTripSchema: z.ZodObject<{
72
+ route_id: z.ZodString;
73
+ service_id: z.ZodString;
74
+ trip_id: z.ZodString;
75
+ trip_headsign: z.ZodDefault<z.ZodString>;
76
+ trip_short_name: z.ZodOptional<z.ZodString>;
77
+ direction_id: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
78
+ block_id: z.ZodOptional<z.ZodString>;
79
+ shape_id: z.ZodOptional<z.ZodString>;
80
+ wheelchair_accessible: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
81
+ bikes_allowed: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
82
+ }, z.core.$loose>;
83
+ export type GtfsTrip = z.infer<typeof gtfsTripSchema>;
84
+ /**
85
+ * Schema for a GTFS shapes.txt row.
86
+ */
87
+ export declare const gtfsShapeSchema: z.ZodObject<{
88
+ shape_id: z.ZodString;
89
+ shape_pt_lat: z.ZodCoercedNumber<unknown>;
90
+ shape_pt_lon: z.ZodCoercedNumber<unknown>;
91
+ shape_pt_sequence: z.ZodCoercedNumber<unknown>;
92
+ shape_dist_traveled: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
93
+ }, z.core.$loose>;
94
+ export type GtfsShape = z.infer<typeof gtfsShapeSchema>;
95
+ /**
96
+ * Schema for a GTFS calendar.txt row.
97
+ */
98
+ export declare const gtfsCalendarSchema: z.ZodObject<{
99
+ service_id: z.ZodString;
100
+ monday: z.ZodCoercedNumber<unknown>;
101
+ tuesday: z.ZodCoercedNumber<unknown>;
102
+ wednesday: z.ZodCoercedNumber<unknown>;
103
+ thursday: z.ZodCoercedNumber<unknown>;
104
+ friday: z.ZodCoercedNumber<unknown>;
105
+ saturday: z.ZodCoercedNumber<unknown>;
106
+ sunday: z.ZodCoercedNumber<unknown>;
107
+ start_date: z.ZodString;
108
+ end_date: z.ZodString;
109
+ }, z.core.$loose>;
110
+ export type GtfsCalendar = z.infer<typeof gtfsCalendarSchema>;
111
+ /**
112
+ * Schema for a GTFS calendar_dates.txt row.
113
+ * exception_type: 1 = service added, 2 = service removed
114
+ */
115
+ export declare const gtfsCalendarDateSchema: z.ZodObject<{
116
+ service_id: z.ZodString;
117
+ date: z.ZodString;
118
+ exception_type: z.ZodCoercedNumber<unknown>;
119
+ }, z.core.$loose>;
120
+ export type GtfsCalendarDate = z.infer<typeof gtfsCalendarDateSchema>;
121
+ /**
122
+ * Schema for a GTFS agency.txt row.
123
+ */
124
+ export declare const gtfsAgencySchema: z.ZodObject<{
125
+ agency_id: z.ZodOptional<z.ZodString>;
126
+ agency_name: z.ZodString;
127
+ agency_url: z.ZodURL;
128
+ agency_timezone: z.ZodString;
129
+ agency_lang: z.ZodOptional<z.ZodString>;
130
+ agency_phone: z.ZodOptional<z.ZodString>;
131
+ agency_fare_url: z.ZodOptional<z.ZodString>;
132
+ agency_email: z.ZodOptional<z.ZodString>;
133
+ }, z.core.$loose>;
134
+ export type GtfsAgency = z.infer<typeof gtfsAgencySchema>;
135
+ /**
136
+ * Schema for a GTFS stop_times.txt row.
137
+ * Times are in HH:MM:SS format, can exceed 24:00:00 for overnight trips.
138
+ */
139
+ export declare const gtfsStopTimeSchema: z.ZodObject<{
140
+ trip_id: z.ZodString;
141
+ arrival_time: z.ZodString;
142
+ departure_time: z.ZodString;
143
+ stop_id: z.ZodString;
144
+ stop_sequence: z.ZodCoercedNumber<unknown>;
145
+ stop_headsign: z.ZodOptional<z.ZodString>;
146
+ pickup_type: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
147
+ drop_off_type: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
148
+ shape_dist_traveled: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
149
+ timepoint: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
150
+ }, z.core.$loose>;
151
+ export type GtfsStopTime = z.infer<typeof gtfsStopTimeSchema>;
152
+ /**
153
+ * Schema for LiteFormatDescriptor - describes how to parse a lite GPS format.
154
+ */
155
+ export declare const liteFormatDescriptorSchema: z.ZodObject<{
156
+ minColumns: z.ZodNumber;
157
+ vehicleIdIndex: z.ZodNumber;
158
+ routeIndex: z.ZodNumber;
159
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
160
+ speedIndex: z.ZodNumber;
161
+ bearingIndex: z.ZodNumber;
162
+ typeIndex: z.ZodOptional<z.ZodNumber>;
163
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
164
+ }, z.core.$strict>;
165
+ /**
166
+ * Schema for GPS configuration.
167
+ */
168
+ export declare const gpsConfigSchema: z.ZodObject<{
169
+ enabled: z.ZodBoolean;
170
+ format: z.ZodNullable<z.ZodEnum<{
171
+ full: "full";
172
+ lite: "lite";
173
+ }>>;
174
+ url: z.ZodNullable<z.ZodString>;
175
+ }, z.core.$strict>;
176
+ /**
177
+ * Schema for GTFS configuration.
178
+ */
179
+ export declare const gtfsConfigSchema: z.ZodObject<{
180
+ enabled: z.ZodBoolean;
181
+ url: z.ZodString;
182
+ }, z.core.$strict>;
183
+ /**
184
+ * Schema for a custom city configuration.
185
+ */
186
+ export declare const cityConfigSchema: z.ZodObject<{
187
+ id: z.ZodString;
188
+ tier: z.ZodEnum<{
189
+ gold: "gold";
190
+ silver: "silver";
191
+ bronze: "bronze";
192
+ }>;
193
+ gps: z.ZodObject<{
194
+ enabled: z.ZodBoolean;
195
+ format: z.ZodNullable<z.ZodEnum<{
196
+ full: "full";
197
+ lite: "lite";
198
+ }>>;
199
+ url: z.ZodNullable<z.ZodString>;
200
+ }, z.core.$strict>;
201
+ gtfs: z.ZodObject<{
202
+ enabled: z.ZodBoolean;
203
+ url: z.ZodString;
204
+ }, z.core.$strict>;
205
+ liteFormat: z.ZodOptional<z.ZodObject<{
206
+ minColumns: z.ZodNumber;
207
+ vehicleIdIndex: z.ZodNumber;
208
+ routeIndex: z.ZodNumber;
209
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
210
+ speedIndex: z.ZodNumber;
211
+ bearingIndex: z.ZodNumber;
212
+ typeIndex: z.ZodOptional<z.ZodNumber>;
213
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
214
+ }, z.core.$strict>>;
215
+ }, z.core.$strict>;
216
+ /**
217
+ * Schema for city override - partial update to existing city config.
218
+ */
219
+ export declare const cityOverrideSchema: z.ZodObject<{
220
+ id: z.ZodOptional<z.ZodString>;
221
+ tier: z.ZodOptional<z.ZodEnum<{
222
+ gold: "gold";
223
+ silver: "silver";
224
+ bronze: "bronze";
225
+ }>>;
226
+ gps: z.ZodOptional<z.ZodObject<{
227
+ enabled: z.ZodOptional<z.ZodBoolean>;
228
+ format: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
229
+ full: "full";
230
+ lite: "lite";
231
+ }>>>;
232
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
233
+ }, z.core.$strict>>;
234
+ gtfs: z.ZodOptional<z.ZodObject<{
235
+ enabled: z.ZodOptional<z.ZodBoolean>;
236
+ url: z.ZodOptional<z.ZodString>;
237
+ }, z.core.$strict>>;
238
+ liteFormat: z.ZodOptional<z.ZodObject<{
239
+ minColumns: z.ZodNumber;
240
+ vehicleIdIndex: z.ZodNumber;
241
+ routeIndex: z.ZodNumber;
242
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
243
+ speedIndex: z.ZodNumber;
244
+ bearingIndex: z.ZodNumber;
245
+ typeIndex: z.ZodOptional<z.ZodNumber>;
246
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
247
+ }, z.core.$strict>>;
248
+ }, z.core.$strict>;
80
249
  /**
81
250
  * Schema for LtTransport client configuration.
82
251
  */
@@ -88,7 +257,67 @@ export declare const clientConfigSchema: z.ZodObject<{
88
257
  autoEnrich: z.ZodDefault<z.ZodBoolean>;
89
258
  filterInvalidCoords: z.ZodDefault<z.ZodBoolean>;
90
259
  filterStale: z.ZodDefault<z.ZodBoolean>;
91
- }, z.core.$strict>;
260
+ customCities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
261
+ id: z.ZodString;
262
+ tier: z.ZodEnum<{
263
+ gold: "gold";
264
+ silver: "silver";
265
+ bronze: "bronze";
266
+ }>;
267
+ gps: z.ZodObject<{
268
+ enabled: z.ZodBoolean;
269
+ format: z.ZodNullable<z.ZodEnum<{
270
+ full: "full";
271
+ lite: "lite";
272
+ }>>;
273
+ url: z.ZodNullable<z.ZodString>;
274
+ }, z.core.$strict>;
275
+ gtfs: z.ZodObject<{
276
+ enabled: z.ZodBoolean;
277
+ url: z.ZodString;
278
+ }, z.core.$strict>;
279
+ liteFormat: z.ZodOptional<z.ZodObject<{
280
+ minColumns: z.ZodNumber;
281
+ vehicleIdIndex: z.ZodNumber;
282
+ routeIndex: z.ZodNumber;
283
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
284
+ speedIndex: z.ZodNumber;
285
+ bearingIndex: z.ZodNumber;
286
+ typeIndex: z.ZodOptional<z.ZodNumber>;
287
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
288
+ }, z.core.$strict>>;
289
+ }, z.core.$strict>>>;
290
+ cityOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
291
+ id: z.ZodOptional<z.ZodString>;
292
+ tier: z.ZodOptional<z.ZodEnum<{
293
+ gold: "gold";
294
+ silver: "silver";
295
+ bronze: "bronze";
296
+ }>>;
297
+ gps: z.ZodOptional<z.ZodObject<{
298
+ enabled: z.ZodOptional<z.ZodBoolean>;
299
+ format: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
300
+ full: "full";
301
+ lite: "lite";
302
+ }>>>;
303
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
304
+ }, z.core.$strict>>;
305
+ gtfs: z.ZodOptional<z.ZodObject<{
306
+ enabled: z.ZodOptional<z.ZodBoolean>;
307
+ url: z.ZodOptional<z.ZodString>;
308
+ }, z.core.$strict>>;
309
+ liteFormat: z.ZodOptional<z.ZodObject<{
310
+ minColumns: z.ZodNumber;
311
+ vehicleIdIndex: z.ZodNumber;
312
+ routeIndex: z.ZodNumber;
313
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
314
+ speedIndex: z.ZodNumber;
315
+ bearingIndex: z.ZodNumber;
316
+ typeIndex: z.ZodOptional<z.ZodNumber>;
317
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
318
+ }, z.core.$strict>>;
319
+ }, z.core.$strict>>>;
320
+ }, z.core.$strip>;
92
321
  export type ValidatedClientConfig = z.infer<typeof clientConfigSchema>;
93
322
  /**
94
323
  * Schema for a fully parsed and normalized Vehicle object.
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuCxB;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;iBAwBnB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAM1D;;;GAGG;AACH,eAAO,MAAM,sBAAsB,yMAUjC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,4LAS/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMrE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;iBAWlB,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAMxD;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;iBAUjB,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAMtD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;kBAqBpB,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAMvE;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;iBAiBxB,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAM7D;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,CAG1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAOxF"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}