minotor 4.0.0 → 5.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.
- package/CHANGELOG.md +4 -3
- package/dist/cli.mjs +122 -212
- package/dist/cli.mjs.map +1 -1
- package/dist/gtfs/trips.d.ts +6 -5
- package/dist/parser.cjs.js +121 -211
- package/dist/parser.cjs.js.map +1 -1
- package/dist/parser.esm.js +121 -211
- package/dist/parser.esm.js.map +1 -1
- package/dist/router.cjs.js +1 -1
- package/dist/router.cjs.js.map +1 -1
- package/dist/router.d.ts +2 -2
- package/dist/router.esm.js +1 -1
- package/dist/router.esm.js.map +1 -1
- package/dist/router.umd.js +1 -1
- package/dist/router.umd.js.map +1 -1
- package/dist/routing/route.d.ts +3 -3
- package/dist/timetable/io.d.ts +5 -4
- package/dist/timetable/proto/timetable.d.ts +5 -15
- package/dist/timetable/route.d.ts +1 -1
- package/dist/timetable/timetable.d.ts +7 -5
- package/package.json +1 -1
- package/src/__e2e__/timetable/timetable.bin +2 -2
- package/src/gtfs/__tests__/parser.test.ts +2 -2
- package/src/gtfs/__tests__/routes.test.ts +3 -0
- package/src/gtfs/__tests__/trips.test.ts +122 -154
- package/src/gtfs/parser.ts +2 -1
- package/src/gtfs/routes.ts +1 -0
- package/src/gtfs/trips.ts +21 -19
- package/src/router.ts +2 -2
- package/src/routing/__tests__/route.test.ts +3 -3
- package/src/routing/__tests__/router.test.ts +186 -203
- package/src/routing/route.ts +3 -3
- package/src/routing/router.ts +1 -1
- package/src/timetable/__tests__/io.test.ts +52 -64
- package/src/timetable/__tests__/timetable.test.ts +9 -13
- package/src/timetable/io.ts +20 -19
- package/src/timetable/proto/timetable.proto +5 -8
- package/src/timetable/proto/timetable.ts +78 -201
- package/src/timetable/route.ts +1 -1
- package/src/timetable/timetable.ts +20 -16
package/dist/parser.cjs.js
CHANGED
|
@@ -24,6 +24,18 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
24
24
|
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
25
25
|
|
|
26
26
|
|
|
27
|
+
function __rest(s, e) {
|
|
28
|
+
var t = {};
|
|
29
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
30
|
+
t[p] = s[p];
|
|
31
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
32
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
33
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
34
|
+
t[p[i]] = s[p[i]];
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
}
|
|
38
|
+
|
|
27
39
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
28
40
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
29
41
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -12311,148 +12323,6 @@ const Route$1 = {
|
|
|
12311
12323
|
return message;
|
|
12312
12324
|
},
|
|
12313
12325
|
};
|
|
12314
|
-
function createBaseRoutesAdjacency() {
|
|
12315
|
-
return { routes: {} };
|
|
12316
|
-
}
|
|
12317
|
-
const RoutesAdjacency = {
|
|
12318
|
-
encode(message, writer = new BinaryWriter()) {
|
|
12319
|
-
Object.entries(message.routes).forEach(([key, value]) => {
|
|
12320
|
-
RoutesAdjacency_RoutesEntry.encode({ key: key, value }, writer.uint32(10).fork()).join();
|
|
12321
|
-
});
|
|
12322
|
-
return writer;
|
|
12323
|
-
},
|
|
12324
|
-
decode(input, length) {
|
|
12325
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
12326
|
-
const end = length === undefined ? reader.len : reader.pos + length;
|
|
12327
|
-
const message = createBaseRoutesAdjacency();
|
|
12328
|
-
while (reader.pos < end) {
|
|
12329
|
-
const tag = reader.uint32();
|
|
12330
|
-
switch (tag >>> 3) {
|
|
12331
|
-
case 1: {
|
|
12332
|
-
if (tag !== 10) {
|
|
12333
|
-
break;
|
|
12334
|
-
}
|
|
12335
|
-
const entry1 = RoutesAdjacency_RoutesEntry.decode(reader, reader.uint32());
|
|
12336
|
-
if (entry1.value !== undefined) {
|
|
12337
|
-
message.routes[entry1.key] = entry1.value;
|
|
12338
|
-
}
|
|
12339
|
-
continue;
|
|
12340
|
-
}
|
|
12341
|
-
}
|
|
12342
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
12343
|
-
break;
|
|
12344
|
-
}
|
|
12345
|
-
reader.skip(tag & 7);
|
|
12346
|
-
}
|
|
12347
|
-
return message;
|
|
12348
|
-
},
|
|
12349
|
-
fromJSON(object) {
|
|
12350
|
-
return {
|
|
12351
|
-
routes: isObject(object.routes)
|
|
12352
|
-
? Object.entries(object.routes).reduce((acc, [key, value]) => {
|
|
12353
|
-
acc[key] = Route$1.fromJSON(value);
|
|
12354
|
-
return acc;
|
|
12355
|
-
}, {})
|
|
12356
|
-
: {},
|
|
12357
|
-
};
|
|
12358
|
-
},
|
|
12359
|
-
toJSON(message) {
|
|
12360
|
-
const obj = {};
|
|
12361
|
-
if (message.routes) {
|
|
12362
|
-
const entries = Object.entries(message.routes);
|
|
12363
|
-
if (entries.length > 0) {
|
|
12364
|
-
obj.routes = {};
|
|
12365
|
-
entries.forEach(([k, v]) => {
|
|
12366
|
-
obj.routes[k] = Route$1.toJSON(v);
|
|
12367
|
-
});
|
|
12368
|
-
}
|
|
12369
|
-
}
|
|
12370
|
-
return obj;
|
|
12371
|
-
},
|
|
12372
|
-
create(base) {
|
|
12373
|
-
return RoutesAdjacency.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
12374
|
-
},
|
|
12375
|
-
fromPartial(object) {
|
|
12376
|
-
var _a;
|
|
12377
|
-
const message = createBaseRoutesAdjacency();
|
|
12378
|
-
message.routes = Object.entries((_a = object.routes) !== null && _a !== void 0 ? _a : {}).reduce((acc, [key, value]) => {
|
|
12379
|
-
if (value !== undefined) {
|
|
12380
|
-
acc[key] = Route$1.fromPartial(value);
|
|
12381
|
-
}
|
|
12382
|
-
return acc;
|
|
12383
|
-
}, {});
|
|
12384
|
-
return message;
|
|
12385
|
-
},
|
|
12386
|
-
};
|
|
12387
|
-
function createBaseRoutesAdjacency_RoutesEntry() {
|
|
12388
|
-
return { key: "", value: undefined };
|
|
12389
|
-
}
|
|
12390
|
-
const RoutesAdjacency_RoutesEntry = {
|
|
12391
|
-
encode(message, writer = new BinaryWriter()) {
|
|
12392
|
-
if (message.key !== "") {
|
|
12393
|
-
writer.uint32(10).string(message.key);
|
|
12394
|
-
}
|
|
12395
|
-
if (message.value !== undefined) {
|
|
12396
|
-
Route$1.encode(message.value, writer.uint32(18).fork()).join();
|
|
12397
|
-
}
|
|
12398
|
-
return writer;
|
|
12399
|
-
},
|
|
12400
|
-
decode(input, length) {
|
|
12401
|
-
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
12402
|
-
const end = length === undefined ? reader.len : reader.pos + length;
|
|
12403
|
-
const message = createBaseRoutesAdjacency_RoutesEntry();
|
|
12404
|
-
while (reader.pos < end) {
|
|
12405
|
-
const tag = reader.uint32();
|
|
12406
|
-
switch (tag >>> 3) {
|
|
12407
|
-
case 1: {
|
|
12408
|
-
if (tag !== 10) {
|
|
12409
|
-
break;
|
|
12410
|
-
}
|
|
12411
|
-
message.key = reader.string();
|
|
12412
|
-
continue;
|
|
12413
|
-
}
|
|
12414
|
-
case 2: {
|
|
12415
|
-
if (tag !== 18) {
|
|
12416
|
-
break;
|
|
12417
|
-
}
|
|
12418
|
-
message.value = Route$1.decode(reader, reader.uint32());
|
|
12419
|
-
continue;
|
|
12420
|
-
}
|
|
12421
|
-
}
|
|
12422
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
12423
|
-
break;
|
|
12424
|
-
}
|
|
12425
|
-
reader.skip(tag & 7);
|
|
12426
|
-
}
|
|
12427
|
-
return message;
|
|
12428
|
-
},
|
|
12429
|
-
fromJSON(object) {
|
|
12430
|
-
return {
|
|
12431
|
-
key: isSet(object.key) ? globalThis.String(object.key) : "",
|
|
12432
|
-
value: isSet(object.value) ? Route$1.fromJSON(object.value) : undefined,
|
|
12433
|
-
};
|
|
12434
|
-
},
|
|
12435
|
-
toJSON(message) {
|
|
12436
|
-
const obj = {};
|
|
12437
|
-
if (message.key !== "") {
|
|
12438
|
-
obj.key = message.key;
|
|
12439
|
-
}
|
|
12440
|
-
if (message.value !== undefined) {
|
|
12441
|
-
obj.value = Route$1.toJSON(message.value);
|
|
12442
|
-
}
|
|
12443
|
-
return obj;
|
|
12444
|
-
},
|
|
12445
|
-
create(base) {
|
|
12446
|
-
return RoutesAdjacency_RoutesEntry.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
12447
|
-
},
|
|
12448
|
-
fromPartial(object) {
|
|
12449
|
-
var _a;
|
|
12450
|
-
const message = createBaseRoutesAdjacency_RoutesEntry();
|
|
12451
|
-
message.key = (_a = object.key) !== null && _a !== void 0 ? _a : "";
|
|
12452
|
-
message.value = (object.value !== undefined && object.value !== null) ? Route$1.fromPartial(object.value) : undefined;
|
|
12453
|
-
return message;
|
|
12454
|
-
},
|
|
12455
|
-
};
|
|
12456
12326
|
function createBaseTransfer() {
|
|
12457
12327
|
return { destination: 0, type: 0, minTransferTime: undefined };
|
|
12458
12328
|
}
|
|
@@ -12465,7 +12335,7 @@ const Transfer = {
|
|
|
12465
12335
|
writer.uint32(16).int32(message.type);
|
|
12466
12336
|
}
|
|
12467
12337
|
if (message.minTransferTime !== undefined) {
|
|
12468
|
-
writer.uint32(24).
|
|
12338
|
+
writer.uint32(24).uint32(message.minTransferTime);
|
|
12469
12339
|
}
|
|
12470
12340
|
return writer;
|
|
12471
12341
|
},
|
|
@@ -12494,7 +12364,7 @@ const Transfer = {
|
|
|
12494
12364
|
if (tag !== 24) {
|
|
12495
12365
|
break;
|
|
12496
12366
|
}
|
|
12497
|
-
message.minTransferTime = reader.
|
|
12367
|
+
message.minTransferTime = reader.uint32();
|
|
12498
12368
|
continue;
|
|
12499
12369
|
}
|
|
12500
12370
|
}
|
|
@@ -12576,7 +12446,7 @@ const StopsAdjacency = {
|
|
|
12576
12446
|
return {
|
|
12577
12447
|
stops: isObject(object.stops)
|
|
12578
12448
|
? Object.entries(object.stops).reduce((acc, [key, value]) => {
|
|
12579
|
-
acc[key] = StopsAdjacency_StopAdjacency.fromJSON(value);
|
|
12449
|
+
acc[globalThis.Number(key)] = StopsAdjacency_StopAdjacency.fromJSON(value);
|
|
12580
12450
|
return acc;
|
|
12581
12451
|
}, {})
|
|
12582
12452
|
: {},
|
|
@@ -12603,7 +12473,7 @@ const StopsAdjacency = {
|
|
|
12603
12473
|
const message = createBaseStopsAdjacency();
|
|
12604
12474
|
message.stops = Object.entries((_a = object.stops) !== null && _a !== void 0 ? _a : {}).reduce((acc, [key, value]) => {
|
|
12605
12475
|
if (value !== undefined) {
|
|
12606
|
-
acc[key] = StopsAdjacency_StopAdjacency.fromPartial(value);
|
|
12476
|
+
acc[globalThis.Number(key)] = StopsAdjacency_StopAdjacency.fromPartial(value);
|
|
12607
12477
|
}
|
|
12608
12478
|
return acc;
|
|
12609
12479
|
}, {});
|
|
@@ -12618,9 +12488,11 @@ const StopsAdjacency_StopAdjacency = {
|
|
|
12618
12488
|
for (const v of message.transfers) {
|
|
12619
12489
|
Transfer.encode(v, writer.uint32(10).fork()).join();
|
|
12620
12490
|
}
|
|
12491
|
+
writer.uint32(18).fork();
|
|
12621
12492
|
for (const v of message.routes) {
|
|
12622
|
-
writer.
|
|
12493
|
+
writer.int32(v);
|
|
12623
12494
|
}
|
|
12495
|
+
writer.join();
|
|
12624
12496
|
return writer;
|
|
12625
12497
|
},
|
|
12626
12498
|
decode(input, length) {
|
|
@@ -12638,11 +12510,18 @@ const StopsAdjacency_StopAdjacency = {
|
|
|
12638
12510
|
continue;
|
|
12639
12511
|
}
|
|
12640
12512
|
case 2: {
|
|
12641
|
-
if (tag
|
|
12642
|
-
|
|
12513
|
+
if (tag === 16) {
|
|
12514
|
+
message.routes.push(reader.int32());
|
|
12515
|
+
continue;
|
|
12643
12516
|
}
|
|
12644
|
-
|
|
12645
|
-
|
|
12517
|
+
if (tag === 18) {
|
|
12518
|
+
const end2 = reader.uint32() + reader.pos;
|
|
12519
|
+
while (reader.pos < end2) {
|
|
12520
|
+
message.routes.push(reader.int32());
|
|
12521
|
+
}
|
|
12522
|
+
continue;
|
|
12523
|
+
}
|
|
12524
|
+
break;
|
|
12646
12525
|
}
|
|
12647
12526
|
}
|
|
12648
12527
|
if ((tag & 7) === 4 || tag === 0) {
|
|
@@ -12657,7 +12536,7 @@ const StopsAdjacency_StopAdjacency = {
|
|
|
12657
12536
|
transfers: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.transfers)
|
|
12658
12537
|
? object.transfers.map((e) => Transfer.fromJSON(e))
|
|
12659
12538
|
: [],
|
|
12660
|
-
routes: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.routes) ? object.routes.map((e) => globalThis.
|
|
12539
|
+
routes: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.routes) ? object.routes.map((e) => globalThis.Number(e)) : [],
|
|
12661
12540
|
};
|
|
12662
12541
|
},
|
|
12663
12542
|
toJSON(message) {
|
|
@@ -12667,7 +12546,7 @@ const StopsAdjacency_StopAdjacency = {
|
|
|
12667
12546
|
obj.transfers = message.transfers.map((e) => Transfer.toJSON(e));
|
|
12668
12547
|
}
|
|
12669
12548
|
if ((_b = message.routes) === null || _b === void 0 ? void 0 : _b.length) {
|
|
12670
|
-
obj.routes = message.routes;
|
|
12549
|
+
obj.routes = message.routes.map((e) => Math.round(e));
|
|
12671
12550
|
}
|
|
12672
12551
|
return obj;
|
|
12673
12552
|
},
|
|
@@ -12683,12 +12562,12 @@ const StopsAdjacency_StopAdjacency = {
|
|
|
12683
12562
|
},
|
|
12684
12563
|
};
|
|
12685
12564
|
function createBaseStopsAdjacency_StopsEntry() {
|
|
12686
|
-
return { key:
|
|
12565
|
+
return { key: 0, value: undefined };
|
|
12687
12566
|
}
|
|
12688
12567
|
const StopsAdjacency_StopsEntry = {
|
|
12689
12568
|
encode(message, writer = new BinaryWriter()) {
|
|
12690
|
-
if (message.key !==
|
|
12691
|
-
writer.uint32(
|
|
12569
|
+
if (message.key !== 0) {
|
|
12570
|
+
writer.uint32(8).uint32(message.key);
|
|
12692
12571
|
}
|
|
12693
12572
|
if (message.value !== undefined) {
|
|
12694
12573
|
StopsAdjacency_StopAdjacency.encode(message.value, writer.uint32(18).fork()).join();
|
|
@@ -12703,10 +12582,10 @@ const StopsAdjacency_StopsEntry = {
|
|
|
12703
12582
|
const tag = reader.uint32();
|
|
12704
12583
|
switch (tag >>> 3) {
|
|
12705
12584
|
case 1: {
|
|
12706
|
-
if (tag !==
|
|
12585
|
+
if (tag !== 8) {
|
|
12707
12586
|
break;
|
|
12708
12587
|
}
|
|
12709
|
-
message.key = reader.
|
|
12588
|
+
message.key = reader.uint32();
|
|
12710
12589
|
continue;
|
|
12711
12590
|
}
|
|
12712
12591
|
case 2: {
|
|
@@ -12726,14 +12605,14 @@ const StopsAdjacency_StopsEntry = {
|
|
|
12726
12605
|
},
|
|
12727
12606
|
fromJSON(object) {
|
|
12728
12607
|
return {
|
|
12729
|
-
key: isSet(object.key) ? globalThis.
|
|
12608
|
+
key: isSet(object.key) ? globalThis.Number(object.key) : 0,
|
|
12730
12609
|
value: isSet(object.value) ? StopsAdjacency_StopAdjacency.fromJSON(object.value) : undefined,
|
|
12731
12610
|
};
|
|
12732
12611
|
},
|
|
12733
12612
|
toJSON(message) {
|
|
12734
12613
|
const obj = {};
|
|
12735
|
-
if (message.key !==
|
|
12736
|
-
obj.key = message.key;
|
|
12614
|
+
if (message.key !== 0) {
|
|
12615
|
+
obj.key = Math.round(message.key);
|
|
12737
12616
|
}
|
|
12738
12617
|
if (message.value !== undefined) {
|
|
12739
12618
|
obj.value = StopsAdjacency_StopAdjacency.toJSON(message.value);
|
|
@@ -12746,7 +12625,7 @@ const StopsAdjacency_StopsEntry = {
|
|
|
12746
12625
|
fromPartial(object) {
|
|
12747
12626
|
var _a;
|
|
12748
12627
|
const message = createBaseStopsAdjacency_StopsEntry();
|
|
12749
|
-
message.key = (_a = object.key) !== null && _a !== void 0 ? _a :
|
|
12628
|
+
message.key = (_a = object.key) !== null && _a !== void 0 ? _a : 0;
|
|
12750
12629
|
message.value = (object.value !== undefined && object.value !== null)
|
|
12751
12630
|
? StopsAdjacency_StopAdjacency.fromPartial(object.value)
|
|
12752
12631
|
: undefined;
|
|
@@ -12754,7 +12633,7 @@ const StopsAdjacency_StopsEntry = {
|
|
|
12754
12633
|
},
|
|
12755
12634
|
};
|
|
12756
12635
|
function createBaseServiceRoute() {
|
|
12757
|
-
return { type: 0, name: "" };
|
|
12636
|
+
return { type: 0, name: "", routes: [] };
|
|
12758
12637
|
}
|
|
12759
12638
|
const ServiceRoute = {
|
|
12760
12639
|
encode(message, writer = new BinaryWriter()) {
|
|
@@ -12764,6 +12643,11 @@ const ServiceRoute = {
|
|
|
12764
12643
|
if (message.name !== "") {
|
|
12765
12644
|
writer.uint32(18).string(message.name);
|
|
12766
12645
|
}
|
|
12646
|
+
writer.uint32(26).fork();
|
|
12647
|
+
for (const v of message.routes) {
|
|
12648
|
+
writer.int32(v);
|
|
12649
|
+
}
|
|
12650
|
+
writer.join();
|
|
12767
12651
|
return writer;
|
|
12768
12652
|
},
|
|
12769
12653
|
decode(input, length) {
|
|
@@ -12787,6 +12671,20 @@ const ServiceRoute = {
|
|
|
12787
12671
|
message.name = reader.string();
|
|
12788
12672
|
continue;
|
|
12789
12673
|
}
|
|
12674
|
+
case 3: {
|
|
12675
|
+
if (tag === 24) {
|
|
12676
|
+
message.routes.push(reader.int32());
|
|
12677
|
+
continue;
|
|
12678
|
+
}
|
|
12679
|
+
if (tag === 26) {
|
|
12680
|
+
const end2 = reader.uint32() + reader.pos;
|
|
12681
|
+
while (reader.pos < end2) {
|
|
12682
|
+
message.routes.push(reader.int32());
|
|
12683
|
+
}
|
|
12684
|
+
continue;
|
|
12685
|
+
}
|
|
12686
|
+
break;
|
|
12687
|
+
}
|
|
12790
12688
|
}
|
|
12791
12689
|
if ((tag & 7) === 4 || tag === 0) {
|
|
12792
12690
|
break;
|
|
@@ -12799,9 +12697,11 @@ const ServiceRoute = {
|
|
|
12799
12697
|
return {
|
|
12800
12698
|
type: isSet(object.type) ? routeTypeFromJSON(object.type) : 0,
|
|
12801
12699
|
name: isSet(object.name) ? globalThis.String(object.name) : "",
|
|
12700
|
+
routes: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.routes) ? object.routes.map((e) => globalThis.Number(e)) : [],
|
|
12802
12701
|
};
|
|
12803
12702
|
},
|
|
12804
12703
|
toJSON(message) {
|
|
12704
|
+
var _a;
|
|
12805
12705
|
const obj = {};
|
|
12806
12706
|
if (message.type !== 0) {
|
|
12807
12707
|
obj.type = routeTypeToJSON(message.type);
|
|
@@ -12809,16 +12709,20 @@ const ServiceRoute = {
|
|
|
12809
12709
|
if (message.name !== "") {
|
|
12810
12710
|
obj.name = message.name;
|
|
12811
12711
|
}
|
|
12712
|
+
if ((_a = message.routes) === null || _a === void 0 ? void 0 : _a.length) {
|
|
12713
|
+
obj.routes = message.routes.map((e) => Math.round(e));
|
|
12714
|
+
}
|
|
12812
12715
|
return obj;
|
|
12813
12716
|
},
|
|
12814
12717
|
create(base) {
|
|
12815
12718
|
return ServiceRoute.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
12816
12719
|
},
|
|
12817
12720
|
fromPartial(object) {
|
|
12818
|
-
var _a, _b;
|
|
12721
|
+
var _a, _b, _c;
|
|
12819
12722
|
const message = createBaseServiceRoute();
|
|
12820
12723
|
message.type = (_a = object.type) !== null && _a !== void 0 ? _a : 0;
|
|
12821
12724
|
message.name = (_b = object.name) !== null && _b !== void 0 ? _b : "";
|
|
12725
|
+
message.routes = ((_c = object.routes) === null || _c === void 0 ? void 0 : _c.map((e) => e)) || [];
|
|
12822
12726
|
return message;
|
|
12823
12727
|
},
|
|
12824
12728
|
};
|
|
@@ -12967,7 +12871,7 @@ const ServiceRoutesMap_RoutesEntry = {
|
|
|
12967
12871
|
},
|
|
12968
12872
|
};
|
|
12969
12873
|
function createBaseTimetable() {
|
|
12970
|
-
return { version: "", stopsAdjacency: undefined, routesAdjacency:
|
|
12874
|
+
return { version: "", stopsAdjacency: undefined, routesAdjacency: [], routes: undefined };
|
|
12971
12875
|
}
|
|
12972
12876
|
const Timetable$1 = {
|
|
12973
12877
|
encode(message, writer = new BinaryWriter()) {
|
|
@@ -12977,8 +12881,8 @@ const Timetable$1 = {
|
|
|
12977
12881
|
if (message.stopsAdjacency !== undefined) {
|
|
12978
12882
|
StopsAdjacency.encode(message.stopsAdjacency, writer.uint32(18).fork()).join();
|
|
12979
12883
|
}
|
|
12980
|
-
|
|
12981
|
-
|
|
12884
|
+
for (const v of message.routesAdjacency) {
|
|
12885
|
+
Route$1.encode(v, writer.uint32(26).fork()).join();
|
|
12982
12886
|
}
|
|
12983
12887
|
if (message.routes !== undefined) {
|
|
12984
12888
|
ServiceRoutesMap.encode(message.routes, writer.uint32(34).fork()).join();
|
|
@@ -13010,7 +12914,7 @@ const Timetable$1 = {
|
|
|
13010
12914
|
if (tag !== 26) {
|
|
13011
12915
|
break;
|
|
13012
12916
|
}
|
|
13013
|
-
message.routesAdjacency
|
|
12917
|
+
message.routesAdjacency.push(Route$1.decode(reader, reader.uint32()));
|
|
13014
12918
|
continue;
|
|
13015
12919
|
}
|
|
13016
12920
|
case 4: {
|
|
@@ -13032,11 +12936,14 @@ const Timetable$1 = {
|
|
|
13032
12936
|
return {
|
|
13033
12937
|
version: isSet(object.version) ? globalThis.String(object.version) : "",
|
|
13034
12938
|
stopsAdjacency: isSet(object.stopsAdjacency) ? StopsAdjacency.fromJSON(object.stopsAdjacency) : undefined,
|
|
13035
|
-
routesAdjacency:
|
|
12939
|
+
routesAdjacency: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.routesAdjacency)
|
|
12940
|
+
? object.routesAdjacency.map((e) => Route$1.fromJSON(e))
|
|
12941
|
+
: [],
|
|
13036
12942
|
routes: isSet(object.routes) ? ServiceRoutesMap.fromJSON(object.routes) : undefined,
|
|
13037
12943
|
};
|
|
13038
12944
|
},
|
|
13039
12945
|
toJSON(message) {
|
|
12946
|
+
var _a;
|
|
13040
12947
|
const obj = {};
|
|
13041
12948
|
if (message.version !== "") {
|
|
13042
12949
|
obj.version = message.version;
|
|
@@ -13044,8 +12951,8 @@ const Timetable$1 = {
|
|
|
13044
12951
|
if (message.stopsAdjacency !== undefined) {
|
|
13045
12952
|
obj.stopsAdjacency = StopsAdjacency.toJSON(message.stopsAdjacency);
|
|
13046
12953
|
}
|
|
13047
|
-
if (message.routesAdjacency
|
|
13048
|
-
obj.routesAdjacency =
|
|
12954
|
+
if ((_a = message.routesAdjacency) === null || _a === void 0 ? void 0 : _a.length) {
|
|
12955
|
+
obj.routesAdjacency = message.routesAdjacency.map((e) => Route$1.toJSON(e));
|
|
13049
12956
|
}
|
|
13050
12957
|
if (message.routes !== undefined) {
|
|
13051
12958
|
obj.routes = ServiceRoutesMap.toJSON(message.routes);
|
|
@@ -13056,15 +12963,13 @@ const Timetable$1 = {
|
|
|
13056
12963
|
return Timetable$1.fromPartial(base !== null && base !== void 0 ? base : {});
|
|
13057
12964
|
},
|
|
13058
12965
|
fromPartial(object) {
|
|
13059
|
-
var _a;
|
|
12966
|
+
var _a, _b;
|
|
13060
12967
|
const message = createBaseTimetable();
|
|
13061
12968
|
message.version = (_a = object.version) !== null && _a !== void 0 ? _a : "";
|
|
13062
12969
|
message.stopsAdjacency = (object.stopsAdjacency !== undefined && object.stopsAdjacency !== null)
|
|
13063
12970
|
? StopsAdjacency.fromPartial(object.stopsAdjacency)
|
|
13064
12971
|
: undefined;
|
|
13065
|
-
message.routesAdjacency = (object.routesAdjacency
|
|
13066
|
-
? RoutesAdjacency.fromPartial(object.routesAdjacency)
|
|
13067
|
-
: undefined;
|
|
12972
|
+
message.routesAdjacency = ((_b = object.routesAdjacency) === null || _b === void 0 ? void 0 : _b.map((e) => Route$1.fromPartial(e))) || [];
|
|
13068
12973
|
message.routes = (object.routes !== undefined && object.routes !== null)
|
|
13069
12974
|
? ServiceRoutesMap.fromPartial(object.routes)
|
|
13070
12975
|
: undefined;
|
|
@@ -13628,17 +13533,15 @@ const serializeStopsAdjacency = (stopsAdjacency) => {
|
|
|
13628
13533
|
return protoStopsAdjacency;
|
|
13629
13534
|
};
|
|
13630
13535
|
const serializeRoutesAdjacency = (routesAdjacency) => {
|
|
13631
|
-
const protoRoutesAdjacency =
|
|
13632
|
-
|
|
13633
|
-
};
|
|
13634
|
-
routesAdjacency.forEach((route, key) => {
|
|
13536
|
+
const protoRoutesAdjacency = [];
|
|
13537
|
+
routesAdjacency.forEach((route) => {
|
|
13635
13538
|
const routeData = route.serialize();
|
|
13636
|
-
protoRoutesAdjacency.
|
|
13539
|
+
protoRoutesAdjacency.push({
|
|
13637
13540
|
stopTimes: uint16ArrayToBytes(routeData.stopTimes),
|
|
13638
13541
|
pickUpDropOffTypes: routeData.pickUpDropOffTypes,
|
|
13639
13542
|
stops: uint32ArrayToBytes(routeData.stops),
|
|
13640
13543
|
serviceRouteId: routeData.serviceRouteId,
|
|
13641
|
-
};
|
|
13544
|
+
});
|
|
13642
13545
|
});
|
|
13643
13546
|
return protoRoutesAdjacency;
|
|
13644
13547
|
};
|
|
@@ -13650,6 +13553,7 @@ const serializeServiceRoutesMap = (serviceRoutesMap) => {
|
|
|
13650
13553
|
protoServiceRoutesMap.routes[key] = {
|
|
13651
13554
|
type: serializeRouteType(value.type),
|
|
13652
13555
|
name: value.name,
|
|
13556
|
+
routes: value.routes,
|
|
13653
13557
|
};
|
|
13654
13558
|
});
|
|
13655
13559
|
return protoServiceRoutesMap;
|
|
@@ -13668,10 +13572,10 @@ const deserializeStopsAdjacency = (protoStopsAdjacency) => {
|
|
|
13668
13572
|
return stopsAdjacency;
|
|
13669
13573
|
};
|
|
13670
13574
|
const deserializeRoutesAdjacency = (protoRoutesAdjacency) => {
|
|
13671
|
-
const routesAdjacency =
|
|
13672
|
-
|
|
13575
|
+
const routesAdjacency = [];
|
|
13576
|
+
protoRoutesAdjacency.forEach((value) => {
|
|
13673
13577
|
const stops = bytesToUint32Array(value.stops);
|
|
13674
|
-
routesAdjacency.
|
|
13578
|
+
routesAdjacency.push(new Route(bytesToUint16Array(value.stopTimes), value.pickUpDropOffTypes, stops, value.serviceRouteId));
|
|
13675
13579
|
});
|
|
13676
13580
|
return routesAdjacency;
|
|
13677
13581
|
};
|
|
@@ -13681,6 +13585,7 @@ const deserializeServiceRoutesMap = (protoServiceRoutesMap) => {
|
|
|
13681
13585
|
serviceRoutesMap.set(key, {
|
|
13682
13586
|
type: parseRouteType(value.type),
|
|
13683
13587
|
name: value.name,
|
|
13588
|
+
routes: value.routes,
|
|
13684
13589
|
});
|
|
13685
13590
|
});
|
|
13686
13591
|
return serviceRoutesMap;
|
|
@@ -13775,7 +13680,7 @@ const ALL_TRANSPORT_MODES = new Set([
|
|
|
13775
13680
|
'TROLLEYBUS',
|
|
13776
13681
|
'MONORAIL',
|
|
13777
13682
|
]);
|
|
13778
|
-
const CURRENT_VERSION = '0.0.
|
|
13683
|
+
const CURRENT_VERSION = '0.0.5';
|
|
13779
13684
|
/**
|
|
13780
13685
|
* The internal transit timetable format.
|
|
13781
13686
|
*/
|
|
@@ -13815,9 +13720,7 @@ class Timetable {
|
|
|
13815
13720
|
}
|
|
13816
13721
|
return new Timetable(
|
|
13817
13722
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
13818
|
-
deserializeStopsAdjacency(protoTimetable.stopsAdjacency), deserializeRoutesAdjacency(
|
|
13819
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
13820
|
-
protoTimetable.routesAdjacency),
|
|
13723
|
+
deserializeStopsAdjacency(protoTimetable.stopsAdjacency), deserializeRoutesAdjacency(protoTimetable.routesAdjacency),
|
|
13821
13724
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
13822
13725
|
deserializeServiceRoutesMap(protoTimetable.routes));
|
|
13823
13726
|
}
|
|
@@ -13829,7 +13732,7 @@ class Timetable {
|
|
|
13829
13732
|
* or undefined if no such route exists.
|
|
13830
13733
|
*/
|
|
13831
13734
|
getRoute(routeId) {
|
|
13832
|
-
return this.routesAdjacency
|
|
13735
|
+
return this.routesAdjacency[routeId];
|
|
13833
13736
|
}
|
|
13834
13737
|
/**
|
|
13835
13738
|
* Retrieves all transfer options available at the specified stop.
|
|
@@ -13849,9 +13752,14 @@ class Timetable {
|
|
|
13849
13752
|
* @param route - The route for which the service route is to be retrieved.
|
|
13850
13753
|
* @returns The service route corresponding to the provided route.
|
|
13851
13754
|
*/
|
|
13852
|
-
|
|
13853
|
-
|
|
13854
|
-
|
|
13755
|
+
getServiceRouteInfo(route) {
|
|
13756
|
+
const serviceRoute = this.routes.get(route.serviceRoute());
|
|
13757
|
+
if (!serviceRoute) {
|
|
13758
|
+
throw new Error(`Service route not found for route ID: ${route.serviceRoute()}`);
|
|
13759
|
+
}
|
|
13760
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13761
|
+
const { routes } = serviceRoute, serviceRouteInfo = __rest(serviceRoute, ["routes"]);
|
|
13762
|
+
return serviceRouteInfo;
|
|
13855
13763
|
}
|
|
13856
13764
|
/**
|
|
13857
13765
|
* Finds all routes passing through a stop.
|
|
@@ -13866,7 +13774,7 @@ class Timetable {
|
|
|
13866
13774
|
}
|
|
13867
13775
|
const routes = [];
|
|
13868
13776
|
for (const routeId of stopData.routes) {
|
|
13869
|
-
const route = this.routesAdjacency
|
|
13777
|
+
const route = this.routesAdjacency[routeId];
|
|
13870
13778
|
if (route) {
|
|
13871
13779
|
routes.push(route);
|
|
13872
13780
|
}
|
|
@@ -13886,7 +13794,7 @@ class Timetable {
|
|
|
13886
13794
|
const reachableRoutes = new Map();
|
|
13887
13795
|
for (const originStop of fromStops) {
|
|
13888
13796
|
const validRoutes = this.routesPassingThrough(originStop).filter((route) => {
|
|
13889
|
-
const serviceRoute = this.
|
|
13797
|
+
const serviceRoute = this.getServiceRouteInfo(route);
|
|
13890
13798
|
return transportModes.has(serviceRoute.type);
|
|
13891
13799
|
});
|
|
13892
13800
|
for (const route of validRoutes) {
|
|
@@ -15897,6 +15805,7 @@ const parseRoutes = (routesStream_1, ...args_1) => __awaiter(void 0, [routesStre
|
|
|
15897
15805
|
routes.set(line.route_id, {
|
|
15898
15806
|
name: line.route_short_name,
|
|
15899
15807
|
type: routeType,
|
|
15808
|
+
routes: [],
|
|
15900
15809
|
});
|
|
15901
15810
|
}
|
|
15902
15811
|
}
|
|
@@ -16291,10 +16200,10 @@ const finalizeRouteFromBuilder = (builder) => {
|
|
|
16291
16200
|
*
|
|
16292
16201
|
* @param tripsStream The readable stream containing the trips data.
|
|
16293
16202
|
* @param serviceIds A mapping of service IDs to corresponding route IDs.
|
|
16294
|
-
* @param
|
|
16203
|
+
* @param serviceRoutes A mapping of route IDs to route details.
|
|
16295
16204
|
* @returns A mapping of trip IDs to corresponding route IDs.
|
|
16296
16205
|
*/
|
|
16297
|
-
const parseTrips = (tripsStream, serviceIds,
|
|
16206
|
+
const parseTrips = (tripsStream, serviceIds, serviceRoutes) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16298
16207
|
var _a, e_1, _b, _c;
|
|
16299
16208
|
const trips = new Map();
|
|
16300
16209
|
try {
|
|
@@ -16307,7 +16216,7 @@ const parseTrips = (tripsStream, serviceIds, routeIds) => __awaiter(void 0, void
|
|
|
16307
16216
|
// The trip doesn't correspond to an active service
|
|
16308
16217
|
continue;
|
|
16309
16218
|
}
|
|
16310
|
-
if (!
|
|
16219
|
+
if (!serviceRoutes.get(line.route_id)) {
|
|
16311
16220
|
// The trip doesn't correspond to a supported route
|
|
16312
16221
|
continue;
|
|
16313
16222
|
}
|
|
@@ -16323,21 +16232,22 @@ const parseTrips = (tripsStream, serviceIds, routeIds) => __awaiter(void 0, void
|
|
|
16323
16232
|
}
|
|
16324
16233
|
return trips;
|
|
16325
16234
|
});
|
|
16326
|
-
const buildStopsAdjacencyStructure = (validStops, routes, transfersMap) => {
|
|
16327
|
-
var _a;
|
|
16235
|
+
const buildStopsAdjacencyStructure = (validStops, serviceRoutes, routes, transfersMap) => {
|
|
16328
16236
|
const stopsAdjacency = new Map();
|
|
16329
|
-
|
|
16330
|
-
|
|
16331
|
-
if (!route) {
|
|
16332
|
-
throw new Error(`Route ${routeId} not found`);
|
|
16333
|
-
}
|
|
16237
|
+
routes.forEach((route, index) => {
|
|
16238
|
+
var _a;
|
|
16334
16239
|
for (const stop of route.stopsIterator()) {
|
|
16335
16240
|
if (!stopsAdjacency.get(stop) && validStops.has(stop)) {
|
|
16336
16241
|
stopsAdjacency.set(stop, { routes: [], transfers: [] });
|
|
16337
16242
|
}
|
|
16338
|
-
(_a = stopsAdjacency.get(stop)) === null || _a === void 0 ? void 0 : _a.routes.push(
|
|
16243
|
+
(_a = stopsAdjacency.get(stop)) === null || _a === void 0 ? void 0 : _a.routes.push(index);
|
|
16339
16244
|
}
|
|
16340
|
-
|
|
16245
|
+
const serviceRoute = serviceRoutes.get(route.serviceRoute());
|
|
16246
|
+
if (!serviceRoute) {
|
|
16247
|
+
throw new Error(`Service route ${route.serviceRoute()} not found for route ${index}.`);
|
|
16248
|
+
}
|
|
16249
|
+
serviceRoute.routes.push(index);
|
|
16250
|
+
});
|
|
16341
16251
|
for (const [stop, transfers] of transfersMap) {
|
|
16342
16252
|
const s = stopsAdjacency.get(stop);
|
|
16343
16253
|
if (s) {
|
|
@@ -16469,10 +16379,10 @@ const parseStopTimes = (stopTimesStream, stopsMap, validTripIds, validStopIds) =
|
|
|
16469
16379
|
if (currentTripId) {
|
|
16470
16380
|
addTrip(currentTripId);
|
|
16471
16381
|
}
|
|
16472
|
-
const routesAdjacency =
|
|
16473
|
-
for (const [
|
|
16382
|
+
const routesAdjacency = [];
|
|
16383
|
+
for (const [, routeBuilder] of routeBuilders) {
|
|
16474
16384
|
const routeData = finalizeRouteFromBuilder(routeBuilder);
|
|
16475
|
-
routesAdjacency.
|
|
16385
|
+
routesAdjacency.push(new Route(routeData.stopTimes, routeData.pickUpDropOffTypes, routeData.stops, routeData.serviceRouteId));
|
|
16476
16386
|
}
|
|
16477
16387
|
return routesAdjacency;
|
|
16478
16388
|
});
|
|
@@ -16567,9 +16477,9 @@ class GtfsParser {
|
|
|
16567
16477
|
const stopTimesStart = performance.now();
|
|
16568
16478
|
const stopTimesStream = yield zip.stream(STOP_TIMES_FILE);
|
|
16569
16479
|
const routesAdjacency = yield parseStopTimes(stopTimesStream, parsedStops, trips, validStopIds);
|
|
16570
|
-
const stopsAdjacency = buildStopsAdjacencyStructure(validStopIds, routesAdjacency, transfers);
|
|
16480
|
+
const stopsAdjacency = buildStopsAdjacencyStructure(validStopIds, validGtfsRoutes, routesAdjacency, transfers);
|
|
16571
16481
|
const stopTimesEnd = performance.now();
|
|
16572
|
-
log.info(`${routesAdjacency.
|
|
16482
|
+
log.info(`${routesAdjacency.length} valid unique routes. (${(stopTimesEnd - stopTimesStart).toFixed(2)}ms)`);
|
|
16573
16483
|
log.info(`Removing unused stops.`);
|
|
16574
16484
|
const indexStopsStart = performance.now();
|
|
16575
16485
|
const stops = indexStops(parsedStops, validStopIds);
|