minotor 5.0.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +8 -3
  2. package/dist/cli.mjs +282 -654
  3. package/dist/cli.mjs.map +1 -1
  4. package/dist/gtfs/parser.d.ts +4 -10
  5. package/dist/gtfs/routes.d.ts +16 -2
  6. package/dist/gtfs/stops.d.ts +3 -13
  7. package/dist/gtfs/transfers.d.ts +2 -2
  8. package/dist/gtfs/trips.d.ts +12 -8
  9. package/dist/parser.cjs.js +257 -644
  10. package/dist/parser.cjs.js.map +1 -1
  11. package/dist/parser.esm.js +257 -644
  12. package/dist/parser.esm.js.map +1 -1
  13. package/dist/router.cjs.js +1 -1
  14. package/dist/router.cjs.js.map +1 -1
  15. package/dist/router.esm.js +1 -1
  16. package/dist/router.esm.js.map +1 -1
  17. package/dist/router.umd.js +1 -1
  18. package/dist/router.umd.js.map +1 -1
  19. package/dist/stops/io.d.ts +3 -3
  20. package/dist/stops/proto/stops.d.ts +1 -8
  21. package/dist/stops/stops.d.ts +0 -4
  22. package/dist/stops/stopsIndex.d.ts +3 -3
  23. package/dist/timetable/io.d.ts +6 -6
  24. package/dist/timetable/proto/timetable.d.ts +5 -27
  25. package/dist/timetable/route.d.ts +2 -11
  26. package/dist/timetable/timetable.d.ts +17 -9
  27. package/package.json +1 -1
  28. package/src/__e2e__/timetable/stops.bin +2 -2
  29. package/src/__e2e__/timetable/timetable.bin +2 -2
  30. package/src/cli/minotor.ts +3 -4
  31. package/src/gtfs/__tests__/parser.test.ts +5 -6
  32. package/src/gtfs/__tests__/routes.test.ts +0 -3
  33. package/src/gtfs/__tests__/stops.test.ts +1 -124
  34. package/src/gtfs/__tests__/transfers.test.ts +7 -7
  35. package/src/gtfs/__tests__/trips.test.ts +74 -45
  36. package/src/gtfs/parser.ts +32 -49
  37. package/src/gtfs/routes.ts +43 -5
  38. package/src/gtfs/stops.ts +2 -44
  39. package/src/gtfs/transfers.ts +2 -2
  40. package/src/gtfs/trips.ts +66 -43
  41. package/src/routing/__tests__/result.test.ts +48 -48
  42. package/src/routing/__tests__/router.test.ts +279 -363
  43. package/src/routing/router.ts +22 -8
  44. package/src/stops/__tests__/io.test.ts +25 -31
  45. package/src/stops/__tests__/stopFinder.test.ts +82 -103
  46. package/src/stops/io.ts +8 -17
  47. package/src/stops/proto/stops.proto +3 -3
  48. package/src/stops/proto/stops.ts +16 -120
  49. package/src/stops/stops.ts +0 -4
  50. package/src/stops/stopsIndex.ts +37 -41
  51. package/src/timetable/__tests__/io.test.ts +44 -54
  52. package/src/timetable/__tests__/route.test.ts +10 -29
  53. package/src/timetable/__tests__/timetable.test.ts +29 -37
  54. package/src/timetable/io.ts +66 -74
  55. package/src/timetable/proto/timetable.proto +7 -14
  56. package/src/timetable/proto/timetable.ts +49 -391
  57. package/src/timetable/route.ts +2 -32
  58. package/src/timetable/timetable.ts +51 -31
@@ -157,7 +157,7 @@ export interface Route {
157
157
  * Format: [stop1, stop2, stop3, etc.]
158
158
  */
159
159
  stops: Uint8Array;
160
- serviceRouteId: string;
160
+ serviceRouteId: number;
161
161
  }
162
162
 
163
163
  export interface Transfer {
@@ -166,40 +166,22 @@ export interface Transfer {
166
166
  minTransferTime?: number | undefined;
167
167
  }
168
168
 
169
- export interface StopsAdjacency {
170
- stops: { [key: number]: StopsAdjacency_StopAdjacency };
171
- }
172
-
173
- export interface StopsAdjacency_StopAdjacency {
169
+ export interface StopAdjacency {
174
170
  transfers: Transfer[];
175
171
  routes: number[];
176
172
  }
177
173
 
178
- export interface StopsAdjacency_StopsEntry {
179
- key: number;
180
- value: StopsAdjacency_StopAdjacency | undefined;
181
- }
182
-
183
174
  export interface ServiceRoute {
184
175
  type: RouteType;
185
176
  name: string;
186
177
  routes: number[];
187
178
  }
188
179
 
189
- export interface ServiceRoutesMap {
190
- routes: { [key: string]: ServiceRoute };
191
- }
192
-
193
- export interface ServiceRoutesMap_RoutesEntry {
194
- key: string;
195
- value: ServiceRoute | undefined;
196
- }
197
-
198
180
  export interface Timetable {
199
181
  version: string;
200
- stopsAdjacency: StopsAdjacency | undefined;
182
+ stopsAdjacency: StopAdjacency[];
201
183
  routesAdjacency: Route[];
202
- routes: ServiceRoutesMap | undefined;
184
+ serviceRoutes: ServiceRoute[];
203
185
  }
204
186
 
205
187
  function createBaseRoute(): Route {
@@ -207,7 +189,7 @@ function createBaseRoute(): Route {
207
189
  stopTimes: new Uint8Array(0),
208
190
  pickUpDropOffTypes: new Uint8Array(0),
209
191
  stops: new Uint8Array(0),
210
- serviceRouteId: "",
192
+ serviceRouteId: 0,
211
193
  };
212
194
  }
213
195
 
@@ -222,8 +204,8 @@ export const Route: MessageFns<Route> = {
222
204
  if (message.stops.length !== 0) {
223
205
  writer.uint32(26).bytes(message.stops);
224
206
  }
225
- if (message.serviceRouteId !== "") {
226
- writer.uint32(34).string(message.serviceRouteId);
207
+ if (message.serviceRouteId !== 0) {
208
+ writer.uint32(32).uint32(message.serviceRouteId);
227
209
  }
228
210
  return writer;
229
211
  },
@@ -260,11 +242,11 @@ export const Route: MessageFns<Route> = {
260
242
  continue;
261
243
  }
262
244
  case 4: {
263
- if (tag !== 34) {
245
+ if (tag !== 32) {
264
246
  break;
265
247
  }
266
248
 
267
- message.serviceRouteId = reader.string();
249
+ message.serviceRouteId = reader.uint32();
268
250
  continue;
269
251
  }
270
252
  }
@@ -283,7 +265,7 @@ export const Route: MessageFns<Route> = {
283
265
  ? bytesFromBase64(object.pickUpDropOffTypes)
284
266
  : new Uint8Array(0),
285
267
  stops: isSet(object.stops) ? bytesFromBase64(object.stops) : new Uint8Array(0),
286
- serviceRouteId: isSet(object.serviceRouteId) ? globalThis.String(object.serviceRouteId) : "",
268
+ serviceRouteId: isSet(object.serviceRouteId) ? globalThis.Number(object.serviceRouteId) : 0,
287
269
  };
288
270
  },
289
271
 
@@ -298,8 +280,8 @@ export const Route: MessageFns<Route> = {
298
280
  if (message.stops.length !== 0) {
299
281
  obj.stops = base64FromBytes(message.stops);
300
282
  }
301
- if (message.serviceRouteId !== "") {
302
- obj.serviceRouteId = message.serviceRouteId;
283
+ if (message.serviceRouteId !== 0) {
284
+ obj.serviceRouteId = Math.round(message.serviceRouteId);
303
285
  }
304
286
  return obj;
305
287
  },
@@ -312,7 +294,7 @@ export const Route: MessageFns<Route> = {
312
294
  message.stopTimes = object.stopTimes ?? new Uint8Array(0);
313
295
  message.pickUpDropOffTypes = object.pickUpDropOffTypes ?? new Uint8Array(0);
314
296
  message.stops = object.stops ?? new Uint8Array(0);
315
- message.serviceRouteId = object.serviceRouteId ?? "";
297
+ message.serviceRouteId = object.serviceRouteId ?? 0;
316
298
  return message;
317
299
  },
318
300
  };
@@ -409,109 +391,27 @@ export const Transfer: MessageFns<Transfer> = {
409
391
  },
410
392
  };
411
393
 
412
- function createBaseStopsAdjacency(): StopsAdjacency {
413
- return { stops: {} };
414
- }
415
-
416
- export const StopsAdjacency: MessageFns<StopsAdjacency> = {
417
- encode(message: StopsAdjacency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
418
- Object.entries(message.stops).forEach(([key, value]) => {
419
- StopsAdjacency_StopsEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
420
- });
421
- return writer;
422
- },
423
-
424
- decode(input: BinaryReader | Uint8Array, length?: number): StopsAdjacency {
425
- const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
426
- const end = length === undefined ? reader.len : reader.pos + length;
427
- const message = createBaseStopsAdjacency();
428
- while (reader.pos < end) {
429
- const tag = reader.uint32();
430
- switch (tag >>> 3) {
431
- case 1: {
432
- if (tag !== 10) {
433
- break;
434
- }
435
-
436
- const entry1 = StopsAdjacency_StopsEntry.decode(reader, reader.uint32());
437
- if (entry1.value !== undefined) {
438
- message.stops[entry1.key] = entry1.value;
439
- }
440
- continue;
441
- }
442
- }
443
- if ((tag & 7) === 4 || tag === 0) {
444
- break;
445
- }
446
- reader.skip(tag & 7);
447
- }
448
- return message;
449
- },
450
-
451
- fromJSON(object: any): StopsAdjacency {
452
- return {
453
- stops: isObject(object.stops)
454
- ? Object.entries(object.stops).reduce<{ [key: number]: StopsAdjacency_StopAdjacency }>((acc, [key, value]) => {
455
- acc[globalThis.Number(key)] = StopsAdjacency_StopAdjacency.fromJSON(value);
456
- return acc;
457
- }, {})
458
- : {},
459
- };
460
- },
461
-
462
- toJSON(message: StopsAdjacency): unknown {
463
- const obj: any = {};
464
- if (message.stops) {
465
- const entries = Object.entries(message.stops);
466
- if (entries.length > 0) {
467
- obj.stops = {};
468
- entries.forEach(([k, v]) => {
469
- obj.stops[k] = StopsAdjacency_StopAdjacency.toJSON(v);
470
- });
471
- }
472
- }
473
- return obj;
474
- },
475
-
476
- create<I extends Exact<DeepPartial<StopsAdjacency>, I>>(base?: I): StopsAdjacency {
477
- return StopsAdjacency.fromPartial(base ?? ({} as any));
478
- },
479
- fromPartial<I extends Exact<DeepPartial<StopsAdjacency>, I>>(object: I): StopsAdjacency {
480
- const message = createBaseStopsAdjacency();
481
- message.stops = Object.entries(object.stops ?? {}).reduce<{ [key: number]: StopsAdjacency_StopAdjacency }>(
482
- (acc, [key, value]) => {
483
- if (value !== undefined) {
484
- acc[globalThis.Number(key)] = StopsAdjacency_StopAdjacency.fromPartial(value);
485
- }
486
- return acc;
487
- },
488
- {},
489
- );
490
- return message;
491
- },
492
- };
493
-
494
- function createBaseStopsAdjacency_StopAdjacency(): StopsAdjacency_StopAdjacency {
394
+ function createBaseStopAdjacency(): StopAdjacency {
495
395
  return { transfers: [], routes: [] };
496
396
  }
497
397
 
498
- export const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacency> = {
499
- encode(message: StopsAdjacency_StopAdjacency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
398
+ export const StopAdjacency: MessageFns<StopAdjacency> = {
399
+ encode(message: StopAdjacency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
500
400
  for (const v of message.transfers) {
501
401
  Transfer.encode(v!, writer.uint32(10).fork()).join();
502
402
  }
503
403
  writer.uint32(18).fork();
504
404
  for (const v of message.routes) {
505
- writer.int32(v);
405
+ writer.uint32(v);
506
406
  }
507
407
  writer.join();
508
408
  return writer;
509
409
  },
510
410
 
511
- decode(input: BinaryReader | Uint8Array, length?: number): StopsAdjacency_StopAdjacency {
411
+ decode(input: BinaryReader | Uint8Array, length?: number): StopAdjacency {
512
412
  const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
513
413
  const end = length === undefined ? reader.len : reader.pos + length;
514
- const message = createBaseStopsAdjacency_StopAdjacency();
414
+ const message = createBaseStopAdjacency();
515
415
  while (reader.pos < end) {
516
416
  const tag = reader.uint32();
517
417
  switch (tag >>> 3) {
@@ -525,7 +425,7 @@ export const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacen
525
425
  }
526
426
  case 2: {
527
427
  if (tag === 16) {
528
- message.routes.push(reader.int32());
428
+ message.routes.push(reader.uint32());
529
429
 
530
430
  continue;
531
431
  }
@@ -533,7 +433,7 @@ export const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacen
533
433
  if (tag === 18) {
534
434
  const end2 = reader.uint32() + reader.pos;
535
435
  while (reader.pos < end2) {
536
- message.routes.push(reader.int32());
436
+ message.routes.push(reader.uint32());
537
437
  }
538
438
 
539
439
  continue;
@@ -550,7 +450,7 @@ export const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacen
550
450
  return message;
551
451
  },
552
452
 
553
- fromJSON(object: any): StopsAdjacency_StopAdjacency {
453
+ fromJSON(object: any): StopAdjacency {
554
454
  return {
555
455
  transfers: globalThis.Array.isArray(object?.transfers)
556
456
  ? object.transfers.map((e: any) => Transfer.fromJSON(e))
@@ -559,7 +459,7 @@ export const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacen
559
459
  };
560
460
  },
561
461
 
562
- toJSON(message: StopsAdjacency_StopAdjacency): unknown {
462
+ toJSON(message: StopAdjacency): unknown {
563
463
  const obj: any = {};
564
464
  if (message.transfers?.length) {
565
465
  obj.transfers = message.transfers.map((e) => Transfer.toJSON(e));
@@ -570,95 +470,17 @@ export const StopsAdjacency_StopAdjacency: MessageFns<StopsAdjacency_StopAdjacen
570
470
  return obj;
571
471
  },
572
472
 
573
- create<I extends Exact<DeepPartial<StopsAdjacency_StopAdjacency>, I>>(base?: I): StopsAdjacency_StopAdjacency {
574
- return StopsAdjacency_StopAdjacency.fromPartial(base ?? ({} as any));
473
+ create<I extends Exact<DeepPartial<StopAdjacency>, I>>(base?: I): StopAdjacency {
474
+ return StopAdjacency.fromPartial(base ?? ({} as any));
575
475
  },
576
- fromPartial<I extends Exact<DeepPartial<StopsAdjacency_StopAdjacency>, I>>(object: I): StopsAdjacency_StopAdjacency {
577
- const message = createBaseStopsAdjacency_StopAdjacency();
476
+ fromPartial<I extends Exact<DeepPartial<StopAdjacency>, I>>(object: I): StopAdjacency {
477
+ const message = createBaseStopAdjacency();
578
478
  message.transfers = object.transfers?.map((e) => Transfer.fromPartial(e)) || [];
579
479
  message.routes = object.routes?.map((e) => e) || [];
580
480
  return message;
581
481
  },
582
482
  };
583
483
 
584
- function createBaseStopsAdjacency_StopsEntry(): StopsAdjacency_StopsEntry {
585
- return { key: 0, value: undefined };
586
- }
587
-
588
- export const StopsAdjacency_StopsEntry: MessageFns<StopsAdjacency_StopsEntry> = {
589
- encode(message: StopsAdjacency_StopsEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
590
- if (message.key !== 0) {
591
- writer.uint32(8).uint32(message.key);
592
- }
593
- if (message.value !== undefined) {
594
- StopsAdjacency_StopAdjacency.encode(message.value, writer.uint32(18).fork()).join();
595
- }
596
- return writer;
597
- },
598
-
599
- decode(input: BinaryReader | Uint8Array, length?: number): StopsAdjacency_StopsEntry {
600
- const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
601
- const end = length === undefined ? reader.len : reader.pos + length;
602
- const message = createBaseStopsAdjacency_StopsEntry();
603
- while (reader.pos < end) {
604
- const tag = reader.uint32();
605
- switch (tag >>> 3) {
606
- case 1: {
607
- if (tag !== 8) {
608
- break;
609
- }
610
-
611
- message.key = reader.uint32();
612
- continue;
613
- }
614
- case 2: {
615
- if (tag !== 18) {
616
- break;
617
- }
618
-
619
- message.value = StopsAdjacency_StopAdjacency.decode(reader, reader.uint32());
620
- continue;
621
- }
622
- }
623
- if ((tag & 7) === 4 || tag === 0) {
624
- break;
625
- }
626
- reader.skip(tag & 7);
627
- }
628
- return message;
629
- },
630
-
631
- fromJSON(object: any): StopsAdjacency_StopsEntry {
632
- return {
633
- key: isSet(object.key) ? globalThis.Number(object.key) : 0,
634
- value: isSet(object.value) ? StopsAdjacency_StopAdjacency.fromJSON(object.value) : undefined,
635
- };
636
- },
637
-
638
- toJSON(message: StopsAdjacency_StopsEntry): unknown {
639
- const obj: any = {};
640
- if (message.key !== 0) {
641
- obj.key = Math.round(message.key);
642
- }
643
- if (message.value !== undefined) {
644
- obj.value = StopsAdjacency_StopAdjacency.toJSON(message.value);
645
- }
646
- return obj;
647
- },
648
-
649
- create<I extends Exact<DeepPartial<StopsAdjacency_StopsEntry>, I>>(base?: I): StopsAdjacency_StopsEntry {
650
- return StopsAdjacency_StopsEntry.fromPartial(base ?? ({} as any));
651
- },
652
- fromPartial<I extends Exact<DeepPartial<StopsAdjacency_StopsEntry>, I>>(object: I): StopsAdjacency_StopsEntry {
653
- const message = createBaseStopsAdjacency_StopsEntry();
654
- message.key = object.key ?? 0;
655
- message.value = (object.value !== undefined && object.value !== null)
656
- ? StopsAdjacency_StopAdjacency.fromPartial(object.value)
657
- : undefined;
658
- return message;
659
- },
660
- };
661
-
662
484
  function createBaseServiceRoute(): ServiceRoute {
663
485
  return { type: 0, name: "", routes: [] };
664
486
  }
@@ -673,7 +495,7 @@ export const ServiceRoute: MessageFns<ServiceRoute> = {
673
495
  }
674
496
  writer.uint32(26).fork();
675
497
  for (const v of message.routes) {
676
- writer.int32(v);
498
+ writer.uint32(v);
677
499
  }
678
500
  writer.join();
679
501
  return writer;
@@ -704,7 +526,7 @@ export const ServiceRoute: MessageFns<ServiceRoute> = {
704
526
  }
705
527
  case 3: {
706
528
  if (tag === 24) {
707
- message.routes.push(reader.int32());
529
+ message.routes.push(reader.uint32());
708
530
 
709
531
  continue;
710
532
  }
@@ -712,7 +534,7 @@ export const ServiceRoute: MessageFns<ServiceRoute> = {
712
534
  if (tag === 26) {
713
535
  const end2 = reader.uint32() + reader.pos;
714
536
  while (reader.pos < end2) {
715
- message.routes.push(reader.int32());
537
+ message.routes.push(reader.uint32());
716
538
  }
717
539
 
718
540
  continue;
@@ -763,168 +585,8 @@ export const ServiceRoute: MessageFns<ServiceRoute> = {
763
585
  },
764
586
  };
765
587
 
766
- function createBaseServiceRoutesMap(): ServiceRoutesMap {
767
- return { routes: {} };
768
- }
769
-
770
- export const ServiceRoutesMap: MessageFns<ServiceRoutesMap> = {
771
- encode(message: ServiceRoutesMap, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
772
- Object.entries(message.routes).forEach(([key, value]) => {
773
- ServiceRoutesMap_RoutesEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();
774
- });
775
- return writer;
776
- },
777
-
778
- decode(input: BinaryReader | Uint8Array, length?: number): ServiceRoutesMap {
779
- const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
780
- const end = length === undefined ? reader.len : reader.pos + length;
781
- const message = createBaseServiceRoutesMap();
782
- while (reader.pos < end) {
783
- const tag = reader.uint32();
784
- switch (tag >>> 3) {
785
- case 1: {
786
- if (tag !== 10) {
787
- break;
788
- }
789
-
790
- const entry1 = ServiceRoutesMap_RoutesEntry.decode(reader, reader.uint32());
791
- if (entry1.value !== undefined) {
792
- message.routes[entry1.key] = entry1.value;
793
- }
794
- continue;
795
- }
796
- }
797
- if ((tag & 7) === 4 || tag === 0) {
798
- break;
799
- }
800
- reader.skip(tag & 7);
801
- }
802
- return message;
803
- },
804
-
805
- fromJSON(object: any): ServiceRoutesMap {
806
- return {
807
- routes: isObject(object.routes)
808
- ? Object.entries(object.routes).reduce<{ [key: string]: ServiceRoute }>((acc, [key, value]) => {
809
- acc[key] = ServiceRoute.fromJSON(value);
810
- return acc;
811
- }, {})
812
- : {},
813
- };
814
- },
815
-
816
- toJSON(message: ServiceRoutesMap): unknown {
817
- const obj: any = {};
818
- if (message.routes) {
819
- const entries = Object.entries(message.routes);
820
- if (entries.length > 0) {
821
- obj.routes = {};
822
- entries.forEach(([k, v]) => {
823
- obj.routes[k] = ServiceRoute.toJSON(v);
824
- });
825
- }
826
- }
827
- return obj;
828
- },
829
-
830
- create<I extends Exact<DeepPartial<ServiceRoutesMap>, I>>(base?: I): ServiceRoutesMap {
831
- return ServiceRoutesMap.fromPartial(base ?? ({} as any));
832
- },
833
- fromPartial<I extends Exact<DeepPartial<ServiceRoutesMap>, I>>(object: I): ServiceRoutesMap {
834
- const message = createBaseServiceRoutesMap();
835
- message.routes = Object.entries(object.routes ?? {}).reduce<{ [key: string]: ServiceRoute }>(
836
- (acc, [key, value]) => {
837
- if (value !== undefined) {
838
- acc[key] = ServiceRoute.fromPartial(value);
839
- }
840
- return acc;
841
- },
842
- {},
843
- );
844
- return message;
845
- },
846
- };
847
-
848
- function createBaseServiceRoutesMap_RoutesEntry(): ServiceRoutesMap_RoutesEntry {
849
- return { key: "", value: undefined };
850
- }
851
-
852
- export const ServiceRoutesMap_RoutesEntry: MessageFns<ServiceRoutesMap_RoutesEntry> = {
853
- encode(message: ServiceRoutesMap_RoutesEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
854
- if (message.key !== "") {
855
- writer.uint32(10).string(message.key);
856
- }
857
- if (message.value !== undefined) {
858
- ServiceRoute.encode(message.value, writer.uint32(18).fork()).join();
859
- }
860
- return writer;
861
- },
862
-
863
- decode(input: BinaryReader | Uint8Array, length?: number): ServiceRoutesMap_RoutesEntry {
864
- const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
865
- const end = length === undefined ? reader.len : reader.pos + length;
866
- const message = createBaseServiceRoutesMap_RoutesEntry();
867
- while (reader.pos < end) {
868
- const tag = reader.uint32();
869
- switch (tag >>> 3) {
870
- case 1: {
871
- if (tag !== 10) {
872
- break;
873
- }
874
-
875
- message.key = reader.string();
876
- continue;
877
- }
878
- case 2: {
879
- if (tag !== 18) {
880
- break;
881
- }
882
-
883
- message.value = ServiceRoute.decode(reader, reader.uint32());
884
- continue;
885
- }
886
- }
887
- if ((tag & 7) === 4 || tag === 0) {
888
- break;
889
- }
890
- reader.skip(tag & 7);
891
- }
892
- return message;
893
- },
894
-
895
- fromJSON(object: any): ServiceRoutesMap_RoutesEntry {
896
- return {
897
- key: isSet(object.key) ? globalThis.String(object.key) : "",
898
- value: isSet(object.value) ? ServiceRoute.fromJSON(object.value) : undefined,
899
- };
900
- },
901
-
902
- toJSON(message: ServiceRoutesMap_RoutesEntry): unknown {
903
- const obj: any = {};
904
- if (message.key !== "") {
905
- obj.key = message.key;
906
- }
907
- if (message.value !== undefined) {
908
- obj.value = ServiceRoute.toJSON(message.value);
909
- }
910
- return obj;
911
- },
912
-
913
- create<I extends Exact<DeepPartial<ServiceRoutesMap_RoutesEntry>, I>>(base?: I): ServiceRoutesMap_RoutesEntry {
914
- return ServiceRoutesMap_RoutesEntry.fromPartial(base ?? ({} as any));
915
- },
916
- fromPartial<I extends Exact<DeepPartial<ServiceRoutesMap_RoutesEntry>, I>>(object: I): ServiceRoutesMap_RoutesEntry {
917
- const message = createBaseServiceRoutesMap_RoutesEntry();
918
- message.key = object.key ?? "";
919
- message.value = (object.value !== undefined && object.value !== null)
920
- ? ServiceRoute.fromPartial(object.value)
921
- : undefined;
922
- return message;
923
- },
924
- };
925
-
926
588
  function createBaseTimetable(): Timetable {
927
- return { version: "", stopsAdjacency: undefined, routesAdjacency: [], routes: undefined };
589
+ return { version: "", stopsAdjacency: [], routesAdjacency: [], serviceRoutes: [] };
928
590
  }
929
591
 
930
592
  export const Timetable: MessageFns<Timetable> = {
@@ -932,14 +594,14 @@ export const Timetable: MessageFns<Timetable> = {
932
594
  if (message.version !== "") {
933
595
  writer.uint32(10).string(message.version);
934
596
  }
935
- if (message.stopsAdjacency !== undefined) {
936
- StopsAdjacency.encode(message.stopsAdjacency, writer.uint32(18).fork()).join();
597
+ for (const v of message.stopsAdjacency) {
598
+ StopAdjacency.encode(v!, writer.uint32(18).fork()).join();
937
599
  }
938
600
  for (const v of message.routesAdjacency) {
939
601
  Route.encode(v!, writer.uint32(26).fork()).join();
940
602
  }
941
- if (message.routes !== undefined) {
942
- ServiceRoutesMap.encode(message.routes, writer.uint32(34).fork()).join();
603
+ for (const v of message.serviceRoutes) {
604
+ ServiceRoute.encode(v!, writer.uint32(34).fork()).join();
943
605
  }
944
606
  return writer;
945
607
  },
@@ -964,7 +626,7 @@ export const Timetable: MessageFns<Timetable> = {
964
626
  break;
965
627
  }
966
628
 
967
- message.stopsAdjacency = StopsAdjacency.decode(reader, reader.uint32());
629
+ message.stopsAdjacency.push(StopAdjacency.decode(reader, reader.uint32()));
968
630
  continue;
969
631
  }
970
632
  case 3: {
@@ -980,7 +642,7 @@ export const Timetable: MessageFns<Timetable> = {
980
642
  break;
981
643
  }
982
644
 
983
- message.routes = ServiceRoutesMap.decode(reader, reader.uint32());
645
+ message.serviceRoutes.push(ServiceRoute.decode(reader, reader.uint32()));
984
646
  continue;
985
647
  }
986
648
  }
@@ -995,11 +657,15 @@ export const Timetable: MessageFns<Timetable> = {
995
657
  fromJSON(object: any): Timetable {
996
658
  return {
997
659
  version: isSet(object.version) ? globalThis.String(object.version) : "",
998
- stopsAdjacency: isSet(object.stopsAdjacency) ? StopsAdjacency.fromJSON(object.stopsAdjacency) : undefined,
660
+ stopsAdjacency: globalThis.Array.isArray(object?.stopsAdjacency)
661
+ ? object.stopsAdjacency.map((e: any) => StopAdjacency.fromJSON(e))
662
+ : [],
999
663
  routesAdjacency: globalThis.Array.isArray(object?.routesAdjacency)
1000
664
  ? object.routesAdjacency.map((e: any) => Route.fromJSON(e))
1001
665
  : [],
1002
- routes: isSet(object.routes) ? ServiceRoutesMap.fromJSON(object.routes) : undefined,
666
+ serviceRoutes: globalThis.Array.isArray(object?.serviceRoutes)
667
+ ? object.serviceRoutes.map((e: any) => ServiceRoute.fromJSON(e))
668
+ : [],
1003
669
  };
1004
670
  },
1005
671
 
@@ -1008,14 +674,14 @@ export const Timetable: MessageFns<Timetable> = {
1008
674
  if (message.version !== "") {
1009
675
  obj.version = message.version;
1010
676
  }
1011
- if (message.stopsAdjacency !== undefined) {
1012
- obj.stopsAdjacency = StopsAdjacency.toJSON(message.stopsAdjacency);
677
+ if (message.stopsAdjacency?.length) {
678
+ obj.stopsAdjacency = message.stopsAdjacency.map((e) => StopAdjacency.toJSON(e));
1013
679
  }
1014
680
  if (message.routesAdjacency?.length) {
1015
681
  obj.routesAdjacency = message.routesAdjacency.map((e) => Route.toJSON(e));
1016
682
  }
1017
- if (message.routes !== undefined) {
1018
- obj.routes = ServiceRoutesMap.toJSON(message.routes);
683
+ if (message.serviceRoutes?.length) {
684
+ obj.serviceRoutes = message.serviceRoutes.map((e) => ServiceRoute.toJSON(e));
1019
685
  }
1020
686
  return obj;
1021
687
  },
@@ -1026,13 +692,9 @@ export const Timetable: MessageFns<Timetable> = {
1026
692
  fromPartial<I extends Exact<DeepPartial<Timetable>, I>>(object: I): Timetable {
1027
693
  const message = createBaseTimetable();
1028
694
  message.version = object.version ?? "";
1029
- message.stopsAdjacency = (object.stopsAdjacency !== undefined && object.stopsAdjacency !== null)
1030
- ? StopsAdjacency.fromPartial(object.stopsAdjacency)
1031
- : undefined;
695
+ message.stopsAdjacency = object.stopsAdjacency?.map((e) => StopAdjacency.fromPartial(e)) || [];
1032
696
  message.routesAdjacency = object.routesAdjacency?.map((e) => Route.fromPartial(e)) || [];
1033
- message.routes = (object.routes !== undefined && object.routes !== null)
1034
- ? ServiceRoutesMap.fromPartial(object.routes)
1035
- : undefined;
697
+ message.serviceRoutes = object.serviceRoutes?.map((e) => ServiceRoute.fromPartial(e)) || [];
1036
698
  return message;
1037
699
  },
1038
700
  };
@@ -1074,10 +736,6 @@ type KeysOfUnion<T> = T extends T ? keyof T : never;
1074
736
  export type Exact<P, I extends P> = P extends Builtin ? P
1075
737
  : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
1076
738
 
1077
- function isObject(value: any): boolean {
1078
- return typeof value === "object" && value !== null;
1079
- }
1080
-
1081
739
  function isSet(value: any): boolean {
1082
740
  return value !== null && value !== undefined;
1083
741
  }