@wemap/routers 12.7.3 → 12.7.4

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/dist/index.js CHANGED
@@ -296,7 +296,7 @@ Vertices
296
296
  function getDurationFromLength(length, speed = 5) {
297
297
  return length / (speed * 1e3 / 3600);
298
298
  }
299
- function isTransitModePublicTransport(routingMode) {
299
+ function isTransitModePublicTransport(transitMode) {
300
300
  return [
301
301
  "AIRPLANE",
302
302
  "BOAT",
@@ -304,9 +304,13 @@ function isTransitModePublicTransport(routingMode) {
304
304
  "FERRY",
305
305
  "FUNICULAR",
306
306
  "METRO",
307
+ "MULTI",
307
308
  "TRAIN",
308
309
  "TRAM"
309
- ].includes(routingMode);
310
+ ].includes(transitMode);
311
+ }
312
+ function areTransitAndTravelModeConsistent(transitMode, travelMode) {
313
+ return transitMode === travelMode || isTransitModePublicTransport(transitMode) && travelMode === "TRANSIT";
310
314
  }
311
315
  function stepToJson(step) {
312
316
  return {
@@ -715,27 +719,24 @@ class Itinerary {
715
719
  return this.legs.map((leg) => leg.steps).flat();
716
720
  }
717
721
  set transitMode(_) {
718
- throw new Error("Itinerary.mode cannot be set. They are calculated from Itinerary.legs.");
722
+ throw new Error("Itinerary.transitMode cannot be set. They are calculated from Itinerary.legs.");
719
723
  }
724
+ // Transit mode will return MULTI if there are several transit modes except WALK
725
+ // Else it will return the only transit mode
726
+ // fallback to WALK if no transit mode
720
727
  get transitMode() {
721
728
  if (!this._transitMode) {
722
- let isPublicTransport = false;
723
- let isBicycle = false;
724
- let isDriving = false;
725
- this.legs.forEach((leg) => {
726
- isPublicTransport = isPublicTransport || isTransitModePublicTransport(leg.transitMode);
727
- isBicycle = isBicycle || leg.transitMode === "BIKE";
728
- isDriving = isDriving || leg.transitMode === "CAR";
729
- });
730
- if (isPublicTransport) {
729
+ const legTransitModes = new Set(this.legs.map((leg) => leg.transitMode));
730
+ legTransitModes.delete("WALK");
731
+ if (legTransitModes.size > 1) {
731
732
  this._transitMode = "MULTI";
732
- } else if (isDriving) {
733
- this._transitMode = "CAR";
734
- } else if (isBicycle) {
735
- this._transitMode = "BIKE";
736
- } else {
737
- this._transitMode = "WALK";
733
+ return this._transitMode;
734
+ }
735
+ if (legTransitModes.size === 1) {
736
+ this._transitMode = legTransitModes.values().next().value;
737
+ return this._transitMode;
738
738
  }
739
+ this._transitMode = "WALK";
739
740
  }
740
741
  return this._transitMode;
741
742
  }
@@ -3302,7 +3303,7 @@ class IdfmRemoteRouter extends RemoteRouter {
3302
3303
  throw RemoteRoutingError.notFound(this.rname, jsonResponse.error.message);
3303
3304
  }
3304
3305
  const itineraries = this.parseResponse(jsonResponse);
3305
- const sameModeFound = itineraries.some((itinerary) => itinerary.transitMode === routerRequest.travelMode);
3306
+ const sameModeFound = itineraries.some((itinerary) => areTransitAndTravelModeConsistent(itinerary.transitMode, routerRequest.travelMode));
3306
3307
  if (!sameModeFound) {
3307
3308
  throw RemoteRoutingError.notFound(
3308
3309
  this.rname,
@@ -4542,6 +4543,7 @@ exports.Vertex = Vertex;
4542
4543
  exports.WemapMultiRemoteRouter = WemapMultiRemoteRouter$1;
4543
4544
  exports.WemapMultiRouter = WemapMultiRouter;
4544
4545
  exports.WemapMultiRoutingError = WemapMultiRoutingError;
4546
+ exports.areTransitAndTravelModeConsistent = areTransitAndTravelModeConsistent;
4545
4547
  exports.getDurationFromLength = getDurationFromLength;
4546
4548
  exports.routerRequestToJson = routerRequestToJson;
4547
4549
  //# sourceMappingURL=index.js.map