lt-public-transport-sdk 1.0.0 → 1.1.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 (47) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +340 -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/index.d.ts +80 -18
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +124 -37
  14. package/dist/index.js.map +1 -1
  15. package/dist/parsers/gps-lite.d.ts +34 -36
  16. package/dist/parsers/gps-lite.d.ts.map +1 -1
  17. package/dist/parsers/gps-lite.js +77 -69
  18. package/dist/parsers/gps-lite.js.map +1 -1
  19. package/dist/parsers/index.d.ts +2 -1
  20. package/dist/parsers/index.d.ts.map +1 -1
  21. package/dist/parsers/index.js +4 -1
  22. package/dist/parsers/index.js.map +1 -1
  23. package/dist/schemas.d.ts +158 -1
  24. package/dist/schemas.d.ts.map +1 -1
  25. package/dist/schemas.js +87 -1
  26. package/dist/schemas.js.map +1 -1
  27. package/package.json +1 -1
  28. package/dist/scripts/test-city-specific.d.ts +0 -2
  29. package/dist/scripts/test-city-specific.d.ts.map +0 -1
  30. package/dist/scripts/test-city-specific.js +0 -264
  31. package/dist/scripts/test-city-specific.js.map +0 -1
  32. package/dist/scripts/test-config-options.d.ts +0 -2
  33. package/dist/scripts/test-config-options.d.ts.map +0 -1
  34. package/dist/scripts/test-config-options.js +0 -166
  35. package/dist/scripts/test-config-options.js.map +0 -1
  36. package/dist/scripts/test-data-quality.d.ts +0 -2
  37. package/dist/scripts/test-data-quality.d.ts.map +0 -1
  38. package/dist/scripts/test-data-quality.js +0 -204
  39. package/dist/scripts/test-data-quality.js.map +0 -1
  40. package/dist/scripts/test-error-handling.d.ts +0 -2
  41. package/dist/scripts/test-error-handling.d.ts.map +0 -1
  42. package/dist/scripts/test-error-handling.js +0 -146
  43. package/dist/scripts/test-error-handling.js.map +0 -1
  44. package/dist/scripts/test-live.d.ts +0 -2
  45. package/dist/scripts/test-live.d.ts.map +0 -1
  46. package/dist/scripts/test-live.js +0 -121
  47. package/dist/scripts/test-live.js.map +0 -1
@@ -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
@@ -77,6 +77,103 @@ export declare const gtfsStopSchema: z.ZodObject<{
77
77
  parent_station: z.ZodOptional<z.ZodString>;
78
78
  }, z.core.$loose>;
79
79
  export type GtfsStop = z.infer<typeof gtfsStopSchema>;
80
+ /**
81
+ * Schema for LiteFormatDescriptor - describes how to parse a lite GPS format.
82
+ */
83
+ export declare const liteFormatDescriptorSchema: z.ZodObject<{
84
+ minColumns: z.ZodNumber;
85
+ vehicleIdIndex: z.ZodNumber;
86
+ routeIndex: z.ZodNumber;
87
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
88
+ speedIndex: z.ZodNumber;
89
+ bearingIndex: z.ZodNumber;
90
+ typeIndex: z.ZodOptional<z.ZodNumber>;
91
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
92
+ }, z.core.$strict>;
93
+ /**
94
+ * Schema for GPS configuration.
95
+ */
96
+ export declare const gpsConfigSchema: z.ZodObject<{
97
+ enabled: z.ZodBoolean;
98
+ format: z.ZodNullable<z.ZodEnum<{
99
+ full: "full";
100
+ lite: "lite";
101
+ }>>;
102
+ url: z.ZodNullable<z.ZodString>;
103
+ }, z.core.$strict>;
104
+ /**
105
+ * Schema for GTFS configuration.
106
+ */
107
+ export declare const gtfsConfigSchema: z.ZodObject<{
108
+ enabled: z.ZodBoolean;
109
+ url: z.ZodString;
110
+ }, z.core.$strict>;
111
+ /**
112
+ * Schema for a custom city configuration.
113
+ */
114
+ export declare const cityConfigSchema: z.ZodObject<{
115
+ id: z.ZodString;
116
+ tier: z.ZodEnum<{
117
+ gold: "gold";
118
+ silver: "silver";
119
+ bronze: "bronze";
120
+ }>;
121
+ gps: z.ZodObject<{
122
+ enabled: z.ZodBoolean;
123
+ format: z.ZodNullable<z.ZodEnum<{
124
+ full: "full";
125
+ lite: "lite";
126
+ }>>;
127
+ url: z.ZodNullable<z.ZodString>;
128
+ }, z.core.$strict>;
129
+ gtfs: z.ZodObject<{
130
+ enabled: z.ZodBoolean;
131
+ url: z.ZodString;
132
+ }, z.core.$strict>;
133
+ liteFormat: z.ZodOptional<z.ZodObject<{
134
+ minColumns: z.ZodNumber;
135
+ vehicleIdIndex: z.ZodNumber;
136
+ routeIndex: z.ZodNumber;
137
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
138
+ speedIndex: z.ZodNumber;
139
+ bearingIndex: z.ZodNumber;
140
+ typeIndex: z.ZodOptional<z.ZodNumber>;
141
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
142
+ }, z.core.$strict>>;
143
+ }, z.core.$strict>;
144
+ /**
145
+ * Schema for city override - partial update to existing city config.
146
+ */
147
+ export declare const cityOverrideSchema: z.ZodObject<{
148
+ id: z.ZodOptional<z.ZodString>;
149
+ tier: z.ZodOptional<z.ZodEnum<{
150
+ gold: "gold";
151
+ silver: "silver";
152
+ bronze: "bronze";
153
+ }>>;
154
+ gps: z.ZodOptional<z.ZodObject<{
155
+ enabled: z.ZodOptional<z.ZodBoolean>;
156
+ format: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
157
+ full: "full";
158
+ lite: "lite";
159
+ }>>>;
160
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
161
+ }, z.core.$strict>>;
162
+ gtfs: z.ZodOptional<z.ZodObject<{
163
+ enabled: z.ZodOptional<z.ZodBoolean>;
164
+ url: z.ZodOptional<z.ZodString>;
165
+ }, z.core.$strict>>;
166
+ liteFormat: z.ZodOptional<z.ZodObject<{
167
+ minColumns: z.ZodNumber;
168
+ vehicleIdIndex: z.ZodNumber;
169
+ routeIndex: z.ZodNumber;
170
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
171
+ speedIndex: z.ZodNumber;
172
+ bearingIndex: z.ZodNumber;
173
+ typeIndex: z.ZodOptional<z.ZodNumber>;
174
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
175
+ }, z.core.$strict>>;
176
+ }, z.core.$strict>;
80
177
  /**
81
178
  * Schema for LtTransport client configuration.
82
179
  */
@@ -88,7 +185,67 @@ export declare const clientConfigSchema: z.ZodObject<{
88
185
  autoEnrich: z.ZodDefault<z.ZodBoolean>;
89
186
  filterInvalidCoords: z.ZodDefault<z.ZodBoolean>;
90
187
  filterStale: z.ZodDefault<z.ZodBoolean>;
91
- }, z.core.$strict>;
188
+ customCities: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
189
+ id: z.ZodString;
190
+ tier: z.ZodEnum<{
191
+ gold: "gold";
192
+ silver: "silver";
193
+ bronze: "bronze";
194
+ }>;
195
+ gps: z.ZodObject<{
196
+ enabled: z.ZodBoolean;
197
+ format: z.ZodNullable<z.ZodEnum<{
198
+ full: "full";
199
+ lite: "lite";
200
+ }>>;
201
+ url: z.ZodNullable<z.ZodString>;
202
+ }, z.core.$strict>;
203
+ gtfs: z.ZodObject<{
204
+ enabled: z.ZodBoolean;
205
+ url: z.ZodString;
206
+ }, z.core.$strict>;
207
+ liteFormat: z.ZodOptional<z.ZodObject<{
208
+ minColumns: z.ZodNumber;
209
+ vehicleIdIndex: z.ZodNumber;
210
+ routeIndex: z.ZodNumber;
211
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
212
+ speedIndex: z.ZodNumber;
213
+ bearingIndex: z.ZodNumber;
214
+ typeIndex: z.ZodOptional<z.ZodNumber>;
215
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
216
+ }, z.core.$strict>>;
217
+ }, z.core.$strict>>>;
218
+ cityOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
219
+ id: z.ZodOptional<z.ZodString>;
220
+ tier: z.ZodOptional<z.ZodEnum<{
221
+ gold: "gold";
222
+ silver: "silver";
223
+ bronze: "bronze";
224
+ }>>;
225
+ gps: z.ZodOptional<z.ZodObject<{
226
+ enabled: z.ZodOptional<z.ZodBoolean>;
227
+ format: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
228
+ full: "full";
229
+ lite: "lite";
230
+ }>>>;
231
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
232
+ }, z.core.$strict>>;
233
+ gtfs: z.ZodOptional<z.ZodObject<{
234
+ enabled: z.ZodOptional<z.ZodBoolean>;
235
+ url: z.ZodOptional<z.ZodString>;
236
+ }, z.core.$strict>>;
237
+ liteFormat: z.ZodOptional<z.ZodObject<{
238
+ minColumns: z.ZodNumber;
239
+ vehicleIdIndex: z.ZodNumber;
240
+ routeIndex: z.ZodNumber;
241
+ coordIndices: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
242
+ speedIndex: z.ZodNumber;
243
+ bearingIndex: z.ZodNumber;
244
+ typeIndex: z.ZodOptional<z.ZodNumber>;
245
+ timestampIndex: z.ZodOptional<z.ZodNumber>;
246
+ }, z.core.$strict>>;
247
+ }, z.core.$strict>>>;
248
+ }, z.core.$strip>;
92
249
  export type ValidatedClientConfig = z.infer<typeof clientConfigSchema>;
93
250
  /**
94
251
  * 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":"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,0BAA0B;;;;;;;;;kBAqC5B,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;kBAIjB,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;kBAGlB,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA0B5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMpB,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2B7B,CAAC;AAEH,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"}
package/dist/schemas.js CHANGED
@@ -132,6 +132,88 @@ export const gtfsStopSchema = z.object({
132
132
  // =============================================================================
133
133
  // Client Config Schema
134
134
  // =============================================================================
135
+ /**
136
+ * Schema for LiteFormatDescriptor - describes how to parse a lite GPS format.
137
+ */
138
+ export const liteFormatDescriptorSchema = z.object({
139
+ /** Minimum number of columns expected in each row */
140
+ minColumns: z.number().int().positive({
141
+ message: 'minColumns must be a positive integer',
142
+ }),
143
+ /** Column index (0-based) for vehicle ID */
144
+ vehicleIdIndex: z.number().int().nonnegative({
145
+ message: 'vehicleIdIndex must be a non-negative integer',
146
+ }),
147
+ /** Column index (0-based) for route name */
148
+ routeIndex: z.number().int().nonnegative({
149
+ message: 'routeIndex must be a non-negative integer',
150
+ }),
151
+ /** Column indices for coordinates [latitude, longitude] */
152
+ coordIndices: z.tuple([
153
+ z.number().int().nonnegative({ message: 'latitude index must be a non-negative integer' }),
154
+ z.number().int().nonnegative({ message: 'longitude index must be a non-negative integer' }),
155
+ ]),
156
+ /** Column index (0-based) for speed */
157
+ speedIndex: z.number().int().nonnegative({
158
+ message: 'speedIndex must be a non-negative integer',
159
+ }),
160
+ /** Column index (0-based) for bearing/azimuth */
161
+ bearingIndex: z.number().int().nonnegative({
162
+ message: 'bearingIndex must be a non-negative integer',
163
+ }),
164
+ /** Optional: Column index for vehicle type */
165
+ typeIndex: z.number().int().nonnegative().optional(),
166
+ /** Optional: Column index for timestamp */
167
+ timestampIndex: z.number().int().nonnegative().optional(),
168
+ }).strict();
169
+ /**
170
+ * Schema for GPS configuration.
171
+ */
172
+ export const gpsConfigSchema = z.object({
173
+ enabled: z.boolean(),
174
+ format: z.enum(['full', 'lite']).nullable(),
175
+ url: z.string().regex(/^https?:\/\/.+/, { message: 'GPS URL must be a valid URL' }).nullable(),
176
+ }).strict();
177
+ /**
178
+ * Schema for GTFS configuration.
179
+ */
180
+ export const gtfsConfigSchema = z.object({
181
+ enabled: z.boolean(),
182
+ url: z.string().regex(/^https?:\/\/.+/, { message: 'GTFS URL must be a valid URL' }),
183
+ }).strict();
184
+ /**
185
+ * Schema for a custom city configuration.
186
+ */
187
+ export const cityConfigSchema = z.object({
188
+ /** City identifier */
189
+ id: z.string().min(1, 'City id is required'),
190
+ /** Data quality tier */
191
+ tier: z.enum(['gold', 'silver', 'bronze']),
192
+ /** GPS stream configuration */
193
+ gps: gpsConfigSchema,
194
+ /** GTFS static data configuration */
195
+ gtfs: gtfsConfigSchema,
196
+ /** Lite format descriptor (required for silver tier with format: 'lite') */
197
+ liteFormat: liteFormatDescriptorSchema.optional(),
198
+ }).strict().refine((config) => {
199
+ // If format is 'lite', liteFormat should be provided
200
+ if (config.gps.format === 'lite' && config.liteFormat === undefined) {
201
+ return false;
202
+ }
203
+ return true;
204
+ }, {
205
+ message: "liteFormat is required when gps.format is 'lite'. Provide column indices for parsing.",
206
+ });
207
+ /**
208
+ * Schema for city override - partial update to existing city config.
209
+ */
210
+ export const cityOverrideSchema = z.object({
211
+ id: z.string().min(1).optional(),
212
+ tier: z.enum(['gold', 'silver', 'bronze']).optional(),
213
+ gps: gpsConfigSchema.partial().optional(),
214
+ gtfs: gtfsConfigSchema.partial().optional(),
215
+ liteFormat: liteFormatDescriptorSchema.optional(),
216
+ }).strict();
135
217
  /**
136
218
  * Schema for LtTransport client configuration.
137
219
  */
@@ -150,7 +232,11 @@ export const clientConfigSchema = z.object({
150
232
  filterInvalidCoords: z.boolean().default(true),
151
233
  /** Whether to filter out stale data */
152
234
  filterStale: z.boolean().default(false),
153
- }).strict();
235
+ /** Custom cities to add to the SDK */
236
+ customCities: z.record(z.string(), cityConfigSchema).optional(),
237
+ /** Overrides for existing built-in cities */
238
+ cityOverrides: z.record(z.string(), cityOverrideSchema).optional(),
239
+ });
154
240
  // =============================================================================
155
241
  // Parsed Vehicle Schema
156
242
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,uDAAuD;AACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;AAEpD;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;KACrC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,iBAAiB,IAAI,GAAG,IAAI,iBAAiB,EAC7D,EAAE,OAAO,EAAE,mCAAmC,EAAE,CACjD,CAAC;AAEJ;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;KACtC,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,iBAAiB,IAAI,GAAG,IAAI,iBAAiB,EAC7D,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAClD,CAAC;AAEJ,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,+BAA+B;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;IACzD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,iCAAiC;IACxD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;IAC5D,MAAM,EAAE,mBAAmB;IAC3B,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtD,kCAAkC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc;IAC/C,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnD,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjD,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,gCAAgC;IAC9E,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc;IAClE,wBAAwB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,cAAc;IACtE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,eAAe;IACrD,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,eAAe;IACnD,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,eAAe;IAC9D,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,eAAe;CAChE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,8CAA8C;AAI1D,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW;IACvB,CAAC,CAAC,MAAM,EAAE,EAAE,2BAA2B;IACvC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,0BAA0B;IAC7C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,yBAAyB;IAC5C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY;IAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc;IACjC,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;IAC1B,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB;IACnC,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;CAC3B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW;IACvB,CAAC,CAAC,MAAM,EAAE,EAAE,2CAA2C;IACvD,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,0BAA0B;IAC7C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,yBAAyB;IAC5C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY;IAC/B,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc;IACjC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB;IACnC,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;CAC3B,CAAC,CAAC;AAKH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC;IAChD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;IAChE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC9C,kBAAkB;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,KAAK,EAAE,CAAC;AAIX,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC;IAClD,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,eAAe;IACzB,kBAAkB;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC,KAAK,EAAE,CAAC;AAIX,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;QACpC,OAAO,EAAE,uCAAuC;KACjD,CAAC;IAEF,4CAA4C;IAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;QAC3C,OAAO,EAAE,+CAA+C;KACzD,CAAC;IAEF,4CAA4C;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;QACvC,OAAO,EAAE,2CAA2C;KACrD,CAAC;IAEF,2DAA2D;IAC3D,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC;QAC1F,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;KAC5F,CAAC;IAEF,uCAAuC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;QACvC,OAAO,EAAE,2CAA2C;KACrD,CAAC;IAEF,iDAAiD;IACjD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;QACzC,OAAO,EAAE,6CAA6C;KACvD,CAAC;IAEF,8CAA8C;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAEpD,2CAA2C;IAC3C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC/F,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;CACrF,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,sBAAsB;IACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IAE5C,wBAAwB;IACxB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,GAAG,EAAE,eAAe;IAEpB,qCAAqC;IACrC,IAAI,EAAE,gBAAgB;IAEtB,4EAA4E;IAC5E,UAAU,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAChB,CAAC,MAAM,EAAE,EAAE;IACT,qDAAqD;IACrD,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EAAE,uFAAuF;CACjG,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrD,GAAG,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,UAAU,EAAE,0BAA0B,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,sCAAsC;IACtC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE/B,yDAAyD;IACzD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAE1D,0CAA0C;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC;IAE9D,6EAA6E;IAC7E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAE7D,wEAAwE;IACxE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAErC,8DAA8D;IAC9D,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE9C,uCAAuC;IACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAEvC,sCAAsC;IACtC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAE/D,6CAA6C;IAC7C,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAC;AAIH,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvD,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE;CACrB,CAAC,CAAC;AAIH,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,MAAoB,EAAE,IAAa;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAI,MAAoB,EAAE,IAAa,EAAE,OAAgB;IACnF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1G,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,mBAAmB,KAAK,MAAM,EAAE,CAAC,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lt-public-transport-sdk",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript SDK for real-time public transport data in Lithuanian cities. Provides vehicle GPS positions, GTFS routes, and stops from stops.lt.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=test-city-specific.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-city-specific.d.ts","sourceRoot":"","sources":["../../src/scripts/test-city-specific.ts"],"names":[],"mappings":""}
@@ -1,264 +0,0 @@
1
- import { LtTransport } from '../index.js';
2
- const results = [];
3
- function pass(name, message) {
4
- results.push({ name, passed: true, message });
5
- console.log(` ✅ ${name}: ${message}`);
6
- }
7
- function fail(name, message) {
8
- results.push({ name, passed: false, message });
9
- console.log(` ❌ ${name}: ${message}`);
10
- }
11
- function warn(name, message) {
12
- results.push({ name, passed: true, message: `⚠️ ${message}` });
13
- console.log(` ⚠️ ${name}: ${message}`);
14
- }
15
- async function testVilniusFields() {
16
- console.log('\n📍 Testing VILNIUS-specific fields...');
17
- const client = new LtTransport();
18
- const vehicles = await client.getVehicles('vilnius');
19
- if (vehicles.length === 0) {
20
- warn('vilnius-empty', 'No vehicles returned');
21
- return;
22
- }
23
- // Vilnius should have gtfsTripId (ReisoIdGTFS) for most vehicles
24
- const withGtfsTripId = vehicles.filter(v => v.gtfsTripId !== null);
25
- if (withGtfsTripId.length > 0) {
26
- pass('vilnius-gtfs-trip', `${String(withGtfsTripId.length)}/${String(vehicles.length)} have gtfsTripId`);
27
- }
28
- else {
29
- warn('vilnius-gtfs-trip', 'No vehicles have gtfsTripId - field may not be in current data');
30
- }
31
- // Vilnius should have tripId (ReisoID)
32
- const withTripId = vehicles.filter(v => v.tripId !== null && v.tripId !== '');
33
- if (withTripId.length > 0) {
34
- pass('vilnius-trip-id', `${String(withTripId.length)}/${String(vehicles.length)} have tripId`);
35
- }
36
- else {
37
- fail('vilnius-trip-id', 'No vehicles have tripId');
38
- }
39
- // Vilnius should have destinations from GTFS enrichment
40
- const withDestination = vehicles.filter(v => v.destination !== null);
41
- if (withDestination.length > vehicles.length * 0.5) {
42
- pass('vilnius-destination', `${String(withDestination.length)}/${String(vehicles.length)} have destinations`);
43
- }
44
- else {
45
- warn('vilnius-destination', `Only ${String(withDestination.length)}/${String(vehicles.length)} have destinations`);
46
- }
47
- // Check vehicle types - Vilnius has buses and trolleybuses
48
- const buses = vehicles.filter(v => v.type === 'bus');
49
- const trolleys = vehicles.filter(v => v.type === 'trolleybus');
50
- if (buses.length > 0 && trolleys.length > 0) {
51
- pass('vilnius-types', `Has ${String(buses.length)} buses and ${String(trolleys.length)} trolleybuses`);
52
- }
53
- else {
54
- warn('vilnius-types', `Only one type: ${String(buses.length)} buses, ${String(trolleys.length)} trolleys`);
55
- }
56
- }
57
- async function testKaunasFields() {
58
- console.log('\n📍 Testing KAUNAS-specific fields...');
59
- const client = new LtTransport();
60
- const vehicles = await client.getVehicles('kaunas');
61
- if (vehicles.length === 0) {
62
- warn('kaunas-empty', 'No vehicles returned');
63
- return;
64
- }
65
- // Kaunas uses Grafikas instead of ReisoID - should map to tripId
66
- const withTripId = vehicles.filter(v => v.tripId !== null && v.tripId !== '');
67
- if (withTripId.length > 0) {
68
- pass('kaunas-grafikas', `${String(withTripId.length)}/${String(vehicles.length)} have tripId (from Grafikas)`);
69
- }
70
- else {
71
- warn('kaunas-grafikas', 'No vehicles have tripId from Grafikas');
72
- }
73
- // Kaunas should have nextStopId (SekanciosStotelesNum)
74
- const withNextStop = vehicles.filter(v => v.nextStopId !== null);
75
- if (withNextStop.length > 0) {
76
- pass('kaunas-next-stop', `${String(withNextStop.length)}/${String(vehicles.length)} have nextStopId`);
77
- }
78
- else {
79
- warn('kaunas-next-stop', 'No vehicles have nextStopId - field may not be in current data');
80
- }
81
- // Kaunas should have arrivalTimeSeconds (AtvykimoLaikasSekundemis) - this is FUTURE prediction
82
- const withArrival = vehicles.filter(v => v.arrivalTimeSeconds !== null);
83
- if (withArrival.length > 0) {
84
- pass('kaunas-arrival', `${String(withArrival.length)}/${String(vehicles.length)} have arrivalTimeSeconds`);
85
- // Validate that arrival times are reasonable (0-86400+ seconds from midnight)
86
- const firstWithArrival = withArrival[0];
87
- if (firstWithArrival !== undefined) {
88
- const arrTime = firstWithArrival.arrivalTimeSeconds;
89
- if (arrTime !== null && arrTime >= 0 && arrTime < 200000) { // Up to ~55 hours (service day)
90
- pass('kaunas-arrival-range', `Arrival time in valid range: ${String(arrTime)} seconds`);
91
- }
92
- else {
93
- fail('kaunas-arrival-range', `Invalid arrival time: ${String(arrTime)}`);
94
- }
95
- }
96
- }
97
- else {
98
- warn('kaunas-arrival', 'No vehicles have arrivalTimeSeconds');
99
- }
100
- // Kaunas has trolleybuses
101
- const trolleys = vehicles.filter(v => v.type === 'trolleybus');
102
- if (trolleys.length > 0) {
103
- pass('kaunas-trolley', `Has ${String(trolleys.length)} trolleybuses`);
104
- }
105
- else {
106
- warn('kaunas-trolley', 'No trolleybuses found');
107
- }
108
- }
109
- async function testKlaipedaFields() {
110
- console.log('\n📍 Testing KLAIPĖDA-specific fields...');
111
- const client = new LtTransport();
112
- const vehicles = await client.getVehicles('klaipeda');
113
- if (vehicles.length === 0) {
114
- warn('klaipeda-empty', 'No vehicles returned');
115
- return;
116
- }
117
- // Klaipėda uses minimal format - basic fields should exist
118
- const validVehicles = vehicles.filter(v => v.id !== '' &&
119
- v.vehicleNumber !== '' &&
120
- v.latitude !== 0 &&
121
- v.longitude !== 0);
122
- if (validVehicles.length === vehicles.length) {
123
- pass('klaipeda-basic', `All ${String(vehicles.length)} vehicles have valid basic fields`);
124
- }
125
- else {
126
- fail('klaipeda-basic', `${String(vehicles.length - validVehicles.length)} vehicles missing basic fields`);
127
- }
128
- }
129
- async function testPanevezysLiteFormat() {
130
- console.log('\n📍 Testing PANEVĖŽYS (Lite 9-col format)...');
131
- const client = new LtTransport();
132
- await client.sync('panevezys'); // Need GTFS for enrichment
133
- const vehicles = await client.getVehicles('panevezys');
134
- if (vehicles.length === 0) {
135
- warn('panevezys-empty', 'No vehicles returned');
136
- return;
137
- }
138
- // Panevėžys lite format should parse correctly
139
- const validVehicles = vehicles.filter(v => v.id !== '' &&
140
- v.vehicleNumber !== '' &&
141
- v.latitude !== 0 &&
142
- v.longitude !== 0);
143
- if (validVehicles.length === vehicles.length) {
144
- pass('panevezys-parse', `All ${String(vehicles.length)} vehicles parsed correctly`);
145
- }
146
- else {
147
- fail('panevezys-parse', `${String(vehicles.length - validVehicles.length)} vehicles failed parsing`);
148
- }
149
- // All lite format vehicles should be type 'bus' (no type info in stream)
150
- const allBus = vehicles.every(v => v.type === 'bus');
151
- if (allBus) {
152
- pass('panevezys-type', 'All vehicles correctly typed as bus (lite format default)');
153
- }
154
- else {
155
- fail('panevezys-type', 'Some vehicles have incorrect type');
156
- }
157
- // Enrichment should add destinations
158
- const withDestination = vehicles.filter(v => v.destination !== null);
159
- if (withDestination.length > 0) {
160
- pass('panevezys-enrich', `${String(withDestination.length)}/${String(vehicles.length)} enriched with destinations`);
161
- }
162
- else {
163
- warn('panevezys-enrich', 'No enrichment - check GTFS sync');
164
- }
165
- }
166
- async function testTaurageLiteFormat() {
167
- console.log('\n📍 Testing TAURAGĖ (Lite 8-col format)...');
168
- const client = new LtTransport();
169
- await client.sync('taurage');
170
- const vehicles = await client.getVehicles('taurage');
171
- if (vehicles.length === 0) {
172
- warn('taurage-empty', 'No vehicles returned (may be off-hours)');
173
- return;
174
- }
175
- // Tauragė has alphanumeric routes like S11, S19
176
- const alphanumericRoutes = vehicles.filter(v => /^[A-Za-z]/.test(v.route));
177
- if (alphanumericRoutes.length > 0) {
178
- const routes = [...new Set(alphanumericRoutes.map(v => v.route))];
179
- pass('taurage-routes', `Has alphanumeric routes: ${routes.slice(0, 5).join(', ')}`);
180
- }
181
- else {
182
- // Numeric routes are also valid
183
- const numericRoutes = vehicles.filter(v => /^\d+$/.test(v.route));
184
- if (numericRoutes.length > 0) {
185
- pass('taurage-routes', 'Has numeric routes (alphanumeric format may have changed)');
186
- }
187
- else {
188
- warn('taurage-routes', 'No valid routes found');
189
- }
190
- }
191
- // Tauragė lite format - 8 columns, vehicleId at col[6]
192
- const validVehicles = vehicles.filter(v => v.id !== '' &&
193
- v.vehicleNumber !== '');
194
- if (validVehicles.length === vehicles.length) {
195
- pass('taurage-parse', `All ${String(vehicles.length)} vehicles parsed correctly`);
196
- }
197
- else {
198
- fail('taurage-parse', `${String(vehicles.length - validVehicles.length)} vehicles failed parsing`);
199
- }
200
- }
201
- async function testAlytusFields() {
202
- console.log('\n📍 Testing ALYTUS...');
203
- const client = new LtTransport();
204
- const vehicles = await client.getVehicles('alytus');
205
- if (vehicles.length === 0) {
206
- warn('alytus-empty', 'No vehicles returned');
207
- return;
208
- }
209
- pass('alytus-count', `${String(vehicles.length)} vehicles retrieved`);
210
- // Alytus has measuredAt from MatavimoLaikas
211
- const withValidTime = vehicles.filter(v => {
212
- const age = Date.now() - v.measuredAt.getTime();
213
- return age >= 0 && age < 3600000; // Less than 1 hour old
214
- });
215
- if (withValidTime.length > vehicles.length * 0.5) {
216
- pass('alytus-time', `${String(withValidTime.length)}/${String(vehicles.length)} have recent measurement times`);
217
- }
218
- else {
219
- warn('alytus-time', `Only ${String(withValidTime.length)}/${String(vehicles.length)} have recent times`);
220
- }
221
- }
222
- async function testDruskininkaiFields() {
223
- console.log('\n📍 Testing DRUSKININKAI...');
224
- const client = new LtTransport();
225
- const vehicles = await client.getVehicles('druskininkai');
226
- if (vehicles.length === 0) {
227
- warn('druskininkai-empty', 'No vehicles returned (small city, may be off-hours)');
228
- return;
229
- }
230
- pass('druskininkai-count', `${String(vehicles.length)} vehicles retrieved`);
231
- }
232
- async function runAllTests() {
233
- console.log('🏙️ CITY-SPECIFIC FIELD VALIDATION');
234
- console.log('==================================\n');
235
- // Gold tier full format cities
236
- await testVilniusFields();
237
- await testKaunasFields();
238
- await testKlaipedaFields();
239
- await testAlytusFields();
240
- await testDruskininkaiFields();
241
- // Silver tier lite format cities
242
- await testPanevezysLiteFormat();
243
- await testTaurageLiteFormat();
244
- console.log('\n==================================');
245
- console.log('RESULTS SUMMARY');
246
- console.log('==================================');
247
- const passed = results.filter(r => r.passed).length;
248
- const failed = results.filter(r => !r.passed).length;
249
- console.log(`\nPassed: ${String(passed)}/${String(results.length)}`);
250
- console.log(`Failed: ${String(failed)}/${String(results.length)}`);
251
- if (failed > 0) {
252
- console.log('\nFailed tests:');
253
- results.filter(r => !r.passed).forEach(r => { console.log(` - ${r.name}: ${r.message}`); });
254
- process.exit(1);
255
- }
256
- else {
257
- console.log('\n✅ All city-specific tests passed!');
258
- }
259
- }
260
- runAllTests().catch((err) => {
261
- console.error('Test runner failed:', err);
262
- process.exit(1);
263
- });
264
- //# sourceMappingURL=test-city-specific.js.map