{"version":3,"file":"index.cjs","sources":["../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../src/__generated__/srcFavouriteVehicleRentalStationsQuery.graphql.js","../src/__generated__/srcRoutesByIdsQuery.graphql.js","../src/__generated__/srcFavouriteRoutesQuery.graphql.js","../src/__generated__/srcFavouriteStopsQuery.graphql.js","../src/__generated__/srcFavouriteStationsQuery.graphql.js","../src/__generated__/srcSearchRoutesQuery.graphql.js","../src/__generated__/srcSearchVehicleRentalStationsQuery.graphql.js","../src/__generated__/srcAlertsQuery.graphql.js","../src/__generated__/srcStationsQuery.graphql.js","../src/__generated__/srcStopsQuery.graphql.js","../../helpers/index.js","../../filter-matching-to-input/index.js","../src/index.js","../../route-name-compare/index.js"],"sourcesContent":["function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","/**\n * @generated SignedSource<<0ee072cc664353380eeeeaf43b7db89d>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"stationId\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lat\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lon\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcFavouriteVehicleRentalStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"VehicleRentalStation\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"vehicleRentalStations\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcFavouriteVehicleRentalStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"VehicleRentalStation\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"vehicleRentalStations\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"kind\": \"ScalarField\",\n            \"name\": \"id\",\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"877c0dd1608a032955ea6c92162b8c5a\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcFavouriteVehicleRentalStationsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcFavouriteVehicleRentalStationsQuery(\\n  $ids: [String!]!\\n) {\\n  vehicleRentalStations(ids: $ids) {\\n    name\\n    stationId\\n    lat\\n    lon\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"db3c8c1e358c8419290a3e959fc5e368\";\n\nexport default node;\n","/**\n * @generated SignedSource<<7a569bfc11f4bbb58a2317c10d2b7072>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"type\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"shortName\",\n  \"storageKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"mode\",\n  \"storageKey\": null\n},\nv7 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"color\",\n  \"storageKey\": null\n},\nv8 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"longName\",\n  \"storageKey\": null\n},\nv9 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"code\",\n  \"storageKey\": null\n},\nv10 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"id\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcRoutesByIdsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Route\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"routes\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Agency\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"agency\",\n            \"plural\": false,\n            \"selections\": [\n              (v3/*: any*/)\n            ],\n            \"storageKey\": null\n          },\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          (v7/*: any*/),\n          (v8/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Pattern\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"patterns\",\n            \"plural\": true,\n            \"selections\": [\n              (v9/*: any*/)\n            ],\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcRoutesByIdsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Route\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"routes\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Agency\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"agency\",\n            \"plural\": false,\n            \"selections\": [\n              (v3/*: any*/),\n              (v10/*: any*/)\n            ],\n            \"storageKey\": null\n          },\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          (v7/*: any*/),\n          (v8/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Pattern\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"patterns\",\n            \"plural\": true,\n            \"selections\": [\n              (v9/*: any*/),\n              (v10/*: any*/)\n            ],\n            \"storageKey\": null\n          },\n          (v10/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"7736d0e9922e742bc1ca8f7df8b29002\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcRoutesByIdsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcRoutesByIdsQuery(\\n  $ids: [String!]!\\n) {\\n  routes(ids: $ids) {\\n    gtfsId\\n    agency {\\n      name\\n      id\\n    }\\n    type\\n    shortName\\n    mode\\n    color\\n    longName\\n    patterns {\\n      code\\n      id\\n    }\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"77b14c3c137dee0083184fd7b0758c4f\";\n\nexport default node;\n","/**\n * @generated SignedSource<<a89edfd09bacf58ec377ee760a10b7b6>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"shortName\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"mode\",\n  \"storageKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"longName\",\n  \"storageKey\": null\n},\nv7 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"code\",\n  \"storageKey\": null\n},\nv8 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"id\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcFavouriteRoutesQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Route\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"routes\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Agency\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"agency\",\n            \"plural\": false,\n            \"selections\": [\n              (v3/*: any*/)\n            ],\n            \"storageKey\": null\n          },\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Pattern\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"patterns\",\n            \"plural\": true,\n            \"selections\": [\n              (v7/*: any*/)\n            ],\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcFavouriteRoutesQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Route\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"routes\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Agency\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"agency\",\n            \"plural\": false,\n            \"selections\": [\n              (v3/*: any*/),\n              (v8/*: any*/)\n            ],\n            \"storageKey\": null\n          },\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": \"Pattern\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"patterns\",\n            \"plural\": true,\n            \"selections\": [\n              (v7/*: any*/),\n              (v8/*: any*/)\n            ],\n            \"storageKey\": null\n          },\n          (v8/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"cadeea662e69e6a2f4036e81a4a5be1a\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcFavouriteRoutesQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcFavouriteRoutesQuery(\\n  $ids: [String!]!\\n) {\\n  routes(ids: $ids) {\\n    gtfsId\\n    agency {\\n      name\\n      id\\n    }\\n    shortName\\n    mode\\n    longName\\n    patterns {\\n      code\\n      id\\n    }\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"8b781eca637f3cf0419503056ff73743\";\n\nexport default node;\n","/**\n * @generated SignedSource<<f84c9dd0ece91abf2519fd6c4db394eb>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lat\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lon\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"code\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcFavouriteStopsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stops\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcFavouriteStopsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stops\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"kind\": \"ScalarField\",\n            \"name\": \"id\",\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"be6c95d19127dfd4bb9bed16aaf8d0a8\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcFavouriteStopsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcFavouriteStopsQuery(\\n  $ids: [String!]!\\n) {\\n  stops(ids: $ids) {\\n    gtfsId\\n    lat\\n    lon\\n    name\\n    code\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"1a0ef2577383828232bf5ba931e18e53\";\n\nexport default node;\n","/**\n * @generated SignedSource<<98fa3189d19733e37a2e584fb0764b97>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lat\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lon\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcFavouriteStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stations\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcFavouriteStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stations\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"kind\": \"ScalarField\",\n            \"name\": \"id\",\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"d1f4b94c4b4154d349d55450f137432e\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcFavouriteStationsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcFavouriteStationsQuery(\\n  $ids: [String!]!\\n) {\\n  stations(ids: $ids) {\\n    gtfsId\\n    lat\\n    lon\\n    name\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"441203dddf9a9b7fbf2aa3fd259bcff5\";\n\nexport default node;\n","/**\n * @generated SignedSource<<f99d762fb774cfb4499681ac97891661>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = {\n  \"defaultValue\": null,\n  \"kind\": \"LocalArgument\",\n  \"name\": \"feeds\"\n},\nv1 = {\n  \"defaultValue\": null,\n  \"kind\": \"LocalArgument\",\n  \"name\": \"modes\"\n},\nv2 = {\n  \"defaultValue\": null,\n  \"kind\": \"LocalArgument\",\n  \"name\": \"name\"\n},\nv3 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"feeds\",\n    \"variableName\": \"feeds\"\n  },\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"name\",\n    \"variableName\": \"name\"\n  },\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"transportModes\",\n    \"variableName\": \"modes\"\n  }\n],\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"type\",\n  \"storageKey\": null\n},\nv7 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"shortName\",\n  \"storageKey\": null\n},\nv8 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"mode\",\n  \"storageKey\": null\n},\nv9 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"color\",\n  \"storageKey\": null\n},\nv10 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"longName\",\n  \"storageKey\": null\n},\nv11 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"code\",\n  \"storageKey\": null\n},\nv12 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"id\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": [\n      (v0/*: any*/),\n      (v1/*: any*/),\n      (v2/*: any*/)\n    ],\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcSearchRoutesQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": null,\n        \"concreteType\": \"QueryType\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"viewer\",\n        \"plural\": false,\n        \"selections\": [\n          {\n            \"alias\": null,\n            \"args\": (v3/*: any*/),\n            \"concreteType\": \"Route\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"routes\",\n            \"plural\": true,\n            \"selections\": [\n              (v4/*: any*/),\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Agency\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"agency\",\n                \"plural\": false,\n                \"selections\": [\n                  (v5/*: any*/)\n                ],\n                \"storageKey\": null\n              },\n              (v6/*: any*/),\n              (v7/*: any*/),\n              (v8/*: any*/),\n              (v9/*: any*/),\n              (v10/*: any*/),\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Pattern\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"patterns\",\n                \"plural\": true,\n                \"selections\": [\n                  (v11/*: any*/)\n                ],\n                \"storageKey\": null\n              }\n            ],\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": [\n      (v0/*: any*/),\n      (v2/*: any*/),\n      (v1/*: any*/)\n    ],\n    \"kind\": \"Operation\",\n    \"name\": \"srcSearchRoutesQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": null,\n        \"concreteType\": \"QueryType\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"viewer\",\n        \"plural\": false,\n        \"selections\": [\n          {\n            \"alias\": null,\n            \"args\": (v3/*: any*/),\n            \"concreteType\": \"Route\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"routes\",\n            \"plural\": true,\n            \"selections\": [\n              (v4/*: any*/),\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Agency\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"agency\",\n                \"plural\": false,\n                \"selections\": [\n                  (v5/*: any*/),\n                  (v12/*: any*/)\n                ],\n                \"storageKey\": null\n              },\n              (v6/*: any*/),\n              (v7/*: any*/),\n              (v8/*: any*/),\n              (v9/*: any*/),\n              (v10/*: any*/),\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Pattern\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"patterns\",\n                \"plural\": true,\n                \"selections\": [\n                  (v11/*: any*/),\n                  (v12/*: any*/)\n                ],\n                \"storageKey\": null\n              },\n              (v12/*: any*/)\n            ],\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"946a3629033e88d78843d92234ddc03d\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcSearchRoutesQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcSearchRoutesQuery(\\n  $feeds: [String!]!\\n  $name: String\\n  $modes: [Mode]\\n) {\\n  viewer {\\n    routes(feeds: $feeds, name: $name, transportModes: $modes) {\\n      gtfsId\\n      agency {\\n        name\\n        id\\n      }\\n      type\\n      shortName\\n      mode\\n      color\\n      longName\\n      patterns {\\n        code\\n        id\\n      }\\n      id\\n    }\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"53c17c6317685fe98db2a755710693e9\";\n\nexport default node;\n","/**\n * @generated SignedSource<<bb0a7f4b9f0a1a2e681e1a75cf4a0550>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv1 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"stationId\",\n  \"storageKey\": null\n},\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lon\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lat\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": [],\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcSearchVehicleRentalStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": null,\n        \"concreteType\": \"VehicleRentalStation\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"vehicleRentalStations\",\n        \"plural\": true,\n        \"selections\": [\n          (v0/*: any*/),\n          (v1/*: any*/),\n          (v2/*: any*/),\n          (v3/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": [],\n    \"kind\": \"Operation\",\n    \"name\": \"srcSearchVehicleRentalStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": null,\n        \"concreteType\": \"VehicleRentalStation\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"vehicleRentalStations\",\n        \"plural\": true,\n        \"selections\": [\n          (v0/*: any*/),\n          (v1/*: any*/),\n          (v2/*: any*/),\n          (v3/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"kind\": \"ScalarField\",\n            \"name\": \"id\",\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"1a0f7cd29bc4b8ee6222597eadfe3a80\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcSearchVehicleRentalStationsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcSearchVehicleRentalStationsQuery {\\n  vehicleRentalStations {\\n    name\\n    stationId\\n    lon\\n    lat\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"625b8677f695fadd23c635f82f7172da\";\n\nexport default node;\n","/**\n * @generated SignedSource<<7c21d84de8a55daa34e003210d19ed54>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"feedIds\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"feeds\",\n    \"variableName\": \"feedIds\"\n  },\n  {\n    \"kind\": \"Literal\",\n    \"name\": \"severityLevel\",\n    \"value\": [\n      \"SEVERE\"\n    ]\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"effectiveStartDate\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"effectiveEndDate\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"__typename\",\n  \"storageKey\": null\n},\nv5 = {\n  \"kind\": \"InlineFragment\",\n  \"selections\": [\n    {\n      \"alias\": null,\n      \"args\": null,\n      \"kind\": \"ScalarField\",\n      \"name\": \"mode\",\n      \"storageKey\": null\n    }\n  ],\n  \"type\": \"Route\",\n  \"abstractKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"id\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcAlertsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Alert\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"alerts\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": null,\n            \"kind\": \"LinkedField\",\n            \"name\": \"entities\",\n            \"plural\": true,\n            \"selections\": [\n              (v4/*: any*/),\n              (v5/*: any*/)\n            ],\n            \"storageKey\": null\n          }\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcAlertsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Alert\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"alerts\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": null,\n            \"concreteType\": null,\n            \"kind\": \"LinkedField\",\n            \"name\": \"entities\",\n            \"plural\": true,\n            \"selections\": [\n              (v4/*: any*/),\n              (v5/*: any*/),\n              {\n                \"kind\": \"InlineFragment\",\n                \"selections\": [\n                  (v6/*: any*/)\n                ],\n                \"type\": \"Node\",\n                \"abstractKey\": \"__isNode\"\n              }\n            ],\n            \"storageKey\": null\n          },\n          (v6/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"ccedd98dceef19b64944b367bc5fbf03\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcAlertsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcAlertsQuery(\\n  $feedIds: [String!]\\n) {\\n  alerts(severityLevel: [SEVERE], feeds: $feedIds) {\\n    effectiveStartDate\\n    effectiveEndDate\\n    entities {\\n      __typename\\n      ... on Route {\\n        mode\\n      }\\n      ... on Node {\\n        __isNode: __typename\\n        id\\n      }\\n    }\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"ba038da2f8a1f01eae51b83b0378c101\";\n\nexport default node;\n","/**\n * @generated SignedSource<<c6f8c844205395423af66ea787712880>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lat\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lon\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"code\",\n  \"storageKey\": null\n},\nv7 = [\n  {\n    \"kind\": \"Literal\",\n    \"name\": \"numberOfDepartures\",\n    \"value\": 1\n  }\n],\nv8 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"mode\",\n  \"storageKey\": null\n},\nv9 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"id\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stations\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": (v7/*: any*/),\n            \"concreteType\": \"Stoptime\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"stoptimesWithoutPatterns\",\n            \"plural\": true,\n            \"selections\": [\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Trip\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"trip\",\n                \"plural\": false,\n                \"selections\": [\n                  {\n                    \"alias\": null,\n                    \"args\": null,\n                    \"concreteType\": \"Route\",\n                    \"kind\": \"LinkedField\",\n                    \"name\": \"route\",\n                    \"plural\": false,\n                    \"selections\": [\n                      (v8/*: any*/)\n                    ],\n                    \"storageKey\": null\n                  }\n                ],\n                \"storageKey\": null\n              }\n            ],\n            \"storageKey\": \"stoptimesWithoutPatterns(numberOfDepartures:1)\"\n          }\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcStationsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stations\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": (v7/*: any*/),\n            \"concreteType\": \"Stoptime\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"stoptimesWithoutPatterns\",\n            \"plural\": true,\n            \"selections\": [\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Trip\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"trip\",\n                \"plural\": false,\n                \"selections\": [\n                  {\n                    \"alias\": null,\n                    \"args\": null,\n                    \"concreteType\": \"Route\",\n                    \"kind\": \"LinkedField\",\n                    \"name\": \"route\",\n                    \"plural\": false,\n                    \"selections\": [\n                      (v8/*: any*/),\n                      (v9/*: any*/)\n                    ],\n                    \"storageKey\": null\n                  },\n                  (v9/*: any*/)\n                ],\n                \"storageKey\": null\n              }\n            ],\n            \"storageKey\": \"stoptimesWithoutPatterns(numberOfDepartures:1)\"\n          },\n          (v9/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"3176a49bd90502451448df960b7ab586\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcStationsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcStationsQuery(\\n  $ids: [String!]!\\n) {\\n  stations(ids: $ids) {\\n    gtfsId\\n    lat\\n    lon\\n    name\\n    code\\n    stoptimesWithoutPatterns(numberOfDepartures: 1) {\\n      trip {\\n        route {\\n          mode\\n          id\\n        }\\n        id\\n      }\\n    }\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"eb5608e61590bb996281273301c3df43\";\n\nexport default node;\n","/**\n * @generated SignedSource<<6cf9d34e603a9250457091aa0daf40a7>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* eslint-disable */\n\n'use strict';\n\nvar node = (function(){\nvar v0 = [\n  {\n    \"defaultValue\": null,\n    \"kind\": \"LocalArgument\",\n    \"name\": \"ids\"\n  }\n],\nv1 = [\n  {\n    \"kind\": \"Variable\",\n    \"name\": \"ids\",\n    \"variableName\": \"ids\"\n  }\n],\nv2 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"gtfsId\",\n  \"storageKey\": null\n},\nv3 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lat\",\n  \"storageKey\": null\n},\nv4 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"lon\",\n  \"storageKey\": null\n},\nv5 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"name\",\n  \"storageKey\": null\n},\nv6 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"code\",\n  \"storageKey\": null\n},\nv7 = [\n  {\n    \"kind\": \"Literal\",\n    \"name\": \"numberOfDepartures\",\n    \"value\": 1\n  }\n],\nv8 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"mode\",\n  \"storageKey\": null\n},\nv9 = {\n  \"alias\": null,\n  \"args\": null,\n  \"kind\": \"ScalarField\",\n  \"name\": \"id\",\n  \"storageKey\": null\n};\nreturn {\n  \"fragment\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Fragment\",\n    \"metadata\": null,\n    \"name\": \"srcStopsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stops\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": (v7/*: any*/),\n            \"concreteType\": \"Stoptime\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"stoptimesWithoutPatterns\",\n            \"plural\": true,\n            \"selections\": [\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Trip\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"trip\",\n                \"plural\": false,\n                \"selections\": [\n                  {\n                    \"alias\": null,\n                    \"args\": null,\n                    \"concreteType\": \"Route\",\n                    \"kind\": \"LinkedField\",\n                    \"name\": \"route\",\n                    \"plural\": false,\n                    \"selections\": [\n                      (v8/*: any*/)\n                    ],\n                    \"storageKey\": null\n                  }\n                ],\n                \"storageKey\": null\n              }\n            ],\n            \"storageKey\": \"stoptimesWithoutPatterns(numberOfDepartures:1)\"\n          }\n        ],\n        \"storageKey\": null\n      }\n    ],\n    \"type\": \"QueryType\",\n    \"abstractKey\": null\n  },\n  \"kind\": \"Request\",\n  \"operation\": {\n    \"argumentDefinitions\": (v0/*: any*/),\n    \"kind\": \"Operation\",\n    \"name\": \"srcStopsQuery\",\n    \"selections\": [\n      {\n        \"alias\": null,\n        \"args\": (v1/*: any*/),\n        \"concreteType\": \"Stop\",\n        \"kind\": \"LinkedField\",\n        \"name\": \"stops\",\n        \"plural\": true,\n        \"selections\": [\n          (v2/*: any*/),\n          (v3/*: any*/),\n          (v4/*: any*/),\n          (v5/*: any*/),\n          (v6/*: any*/),\n          {\n            \"alias\": null,\n            \"args\": (v7/*: any*/),\n            \"concreteType\": \"Stoptime\",\n            \"kind\": \"LinkedField\",\n            \"name\": \"stoptimesWithoutPatterns\",\n            \"plural\": true,\n            \"selections\": [\n              {\n                \"alias\": null,\n                \"args\": null,\n                \"concreteType\": \"Trip\",\n                \"kind\": \"LinkedField\",\n                \"name\": \"trip\",\n                \"plural\": false,\n                \"selections\": [\n                  {\n                    \"alias\": null,\n                    \"args\": null,\n                    \"concreteType\": \"Route\",\n                    \"kind\": \"LinkedField\",\n                    \"name\": \"route\",\n                    \"plural\": false,\n                    \"selections\": [\n                      (v8/*: any*/),\n                      (v9/*: any*/)\n                    ],\n                    \"storageKey\": null\n                  },\n                  (v9/*: any*/)\n                ],\n                \"storageKey\": null\n              }\n            ],\n            \"storageKey\": \"stoptimesWithoutPatterns(numberOfDepartures:1)\"\n          },\n          (v9/*: any*/)\n        ],\n        \"storageKey\": null\n      }\n    ]\n  },\n  \"params\": {\n    \"cacheID\": \"404041cb7209bfabdf223459a5c1bd1f\",\n    \"id\": null,\n    \"metadata\": {},\n    \"name\": \"srcStopsQuery\",\n    \"operationKind\": \"query\",\n    \"text\": \"query srcStopsQuery(\\n  $ids: [String!]!\\n) {\\n  stops(ids: $ids) {\\n    gtfsId\\n    lat\\n    lon\\n    name\\n    code\\n    stoptimesWithoutPatterns(numberOfDepartures: 1) {\\n      trip {\\n        route {\\n          mode\\n          id\\n        }\\n        id\\n      }\\n    }\\n    id\\n  }\\n}\\n\"\n  }\n};\n})();\n\nnode.hash = \"de39c40ef46c15957a6cffb045e17266\";\n\nexport default node;\n","import isString from 'lodash/isString';\nimport orderBy from 'lodash/orderBy';\nimport uniqWith from 'lodash/uniqWith';\nimport isDuplicate from '@digitransit-search-util/digitransit-search-util-is-duplicate';\n\nconst normalize = str => {\n  if (!isString(str)) {\n    return '';\n  }\n  return str.toLowerCase();\n};\n\nconst splitShortNameAtLetters = str => {\n  return str.split(/(\\p{L}+)/u);\n};\n\nconst testShortNameMatchesLineWithNumbersAndLetters = str => {\n  return /^[0-9]+\\p{L}+$/u.test(str);\n};\n\n/**\n * LayerType depicts the type of the point-of-interest.\n */\nconst LayerType = {\n  Address: 'address',\n  Back: 'back',\n  CurrentPosition: 'currentPosition',\n  FavouriteStop: 'favouriteStop',\n  FavouriteStation: 'favouriteStation',\n  FavouritePlace: 'favouritePlace',\n  FavouriteRoute: 'favouriteRoute',\n  FavouriteVehicleRentalStation: 'favouriteVehicleRentalStation',\n  FutureRoute: 'futureRoute',\n  Station: 'station',\n  SelectFromMap: 'selectFromMap',\n  SelectFromOwnLocations: 'ownLocations',\n  Stop: 'stop',\n  Street: 'street',\n  Venue: 'venue',\n  VehicleRentalStation: 'bikestation',\n  CarPark: 'carpark',\n  BikePark: 'bikepark',\n};\nexport const isStop = ({ layer, type }) =>\n  layer === 'stop' ||\n  layer === 'favouriteStop' ||\n  type === 'stop' ||\n  type === 'favouriteStop';\n\nconst DEFAULT_ROUTES_PREFIX = 'linjat';\nconst DEFAULT_STOPS_PREFIX = 'pysakit';\n\nexport const mapRoute = (item, pathOpts) => {\n  if (item === null || item === undefined) {\n    return null;\n  }\n\n  const opts = pathOpts || {};\n\n  const routesPrefix = opts.routesPrefix || DEFAULT_ROUTES_PREFIX;\n  const stopsPrefix = opts.stopsPrefix || DEFAULT_STOPS_PREFIX;\n\n  const link = `/${routesPrefix}/${encodeURIComponent(\n    item.gtfsId,\n  )}/${stopsPrefix}`;\n  return {\n    type: 'Route',\n    properties: {\n      ...item,\n      layer: `route-${item.mode}`,\n      link,\n    },\n    geometry: {\n      coordinates: null,\n    },\n  };\n};\n\n/**\n * Tries to match the given search term agains the collection of properties\n * for a geocoding result (min: 0, max: 1.5). The best match will return a number of 1.5.\n * Worse matches will return 0 or 0.5.\n *\n * @param {string} normalizedTerm the normalized search term.\n * @param {*} resultProperties the geocoding result's property collection.\n */\nexport const match = (normalizedTerm, resultProperties) => {\n  if (!isString(normalizedTerm) || normalizedTerm.length === 0) {\n    return 0;\n  }\n\n  const matchProps = ['name', 'label', 'address', 'shortName'];\n  return matchProps\n    .map(name => {\n      return { name, value: resultProperties[name] };\n    })\n    .filter(element => isString(element.value) && element.value.length > 0)\n    .map(element => {\n      let normalizedValue = normalize(element.value);\n      if (normalizedValue.indexOf(normalizedTerm) === 0) {\n        if (\n          element.name === 'shortName' &&\n          testShortNameMatchesLineWithNumbersAndLetters(normalizedValue)\n        ) {\n          // If the shortName is of a certain format (e.g. 89A), it is treated here\n          // as if it had the length of the numbers with the letters removed.\n          // So the length of 89A would be treated as 2.\n          [normalizedValue] = splitShortNameAtLetters(normalizedValue);\n        }\n        // full match at start. Return max result when match is full, not only partial\n        return 0.5 + normalizedTerm.length / normalizedValue.length;\n      }\n      // because of filtermatchingtoinput, we know that match occurred somewhere\n      // don't run filtermatching again but estimate roughly:\n      // the longer the matching string, the better confidence, max being 0.5\n      return (0.5 * normalizedTerm.length) / (normalizedTerm.length + 1);\n    })\n    .reduce(\n      (previous, current) => (current > previous ? current : previous),\n      0,\n    );\n};\n\n/**\n * Ranks the result based on its layer property.\n *\n * @param {string} layer the layer property.\n * @param {string} source the source property.\n */\nexport const getLayerRank = (layer, source) => {\n  switch (layer) {\n    case LayerType.CurrentPosition:\n      return 1;\n    case LayerType.Back:\n      return 0.9;\n    case LayerType.SelectFromMap:\n      return 0.8;\n    case LayerType.SelectFromOwnLocations:\n      return 0.79;\n    case LayerType.FavouriteStation:\n    case LayerType.FavouritePlace:\n    case LayerType.FavouriteStop:\n    case LayerType.FavouriteRoute:\n    case LayerType.FavouriteVehicleRentalStation:\n      return 0.45;\n    case LayerType.FutureRoute:\n      return 0.44;\n    case LayerType.Station: {\n      if (isString(source) && source.indexOf('gtfs') === 0) {\n        return 0.43;\n      }\n      return 0.42;\n    }\n    case LayerType.CarPark:\n      return 0.38;\n    case LayerType.BikePark:\n      return 0.38;\n    case LayerType.VehicleRentalStation:\n      return 0.38;\n    case LayerType.Stop:\n      return 0.36;\n    default:\n      // venue, address, street, route-xxx\n      return 0.41;\n  }\n};\n\n/**\n * Helper function to sort the results. Orders as follows:\n *  - current position first for an empty search\n *  - matching routes first\n *  - otherwise by confidence, except that:\n *    - boost well matching stations (especially from GTFS)\n *    - rank stops lower as they tend to occupy most of the search results\n *  - items with no confidence (old searches and favorites):\n *    - rank favourites better than ordinary old searches\n *    - rank full match better than partial match\n *    - rank match at middle word lower than match at the beginning\n *    - rank bike rental stations lower\n * @param {*[]} results The search results that were received\n * @param {String} term The search term that was used\n */\nexport const sortSearchResults = (lineRegexp, results, term = '') => {\n  if (!Array.isArray(results) || !results.length) {\n    return results;\n  }\n  const isLineIdentifier = value =>\n    isString(value) && lineRegexp && lineRegexp.test(value);\n\n  const normalizedTerm = normalize(term);\n  const isLineSearch = isLineIdentifier(normalizedTerm);\n\n  const orderedResults = orderBy(\n    results.filter(r => r),\n    [\n      // rank matching routes best\n      result =>\n        isLineSearch &&\n        isLineIdentifier(normalize(result.properties.shortName)) &&\n        normalize(result.properties.shortName).indexOf(normalizedTerm) === 0\n          ? 1\n          : 0,\n\n      result => {\n        const { confidence, layer, source } = result.properties;\n        if (normalizedTerm.length === 0) {\n          // Doing search with empty string.\n          // No confidence to match, so use ranked old searches and favourites\n          return getLayerRank(layer, source);\n        }\n\n        // must handle a mixup of geocoder searches and items above\n        // Normal confidence range from geocoder is about 0.3 .. 1\n        if (!confidence) {\n          // not from geocoder, estimate confidence ourselves\n          return (\n            getLayerRank(layer, source) +\n            match(normalizedTerm, result.properties)\n          );\n        }\n        // geocoded items with confidence, just adjust a little\n        switch (layer) {\n          case LayerType.Station: {\n            const boost = source.indexOf('gtfs') === 0 ? 0.02 : 0.01;\n            return confidence + boost;\n          }\n          case LayerType.Stop:\n            return confidence - 0.05;\n          case LayerType.CarPark:\n            return confidence - 0.05;\n          case LayerType.BikePark:\n            return confidence - 0.05;\n          case LayerType.VehicleRentalStation:\n            return confidence - 0.04;\n          default:\n            return confidence;\n        }\n      },\n      result => {\n        if (result.properties.shortName) {\n          return testShortNameMatchesLineWithNumbersAndLetters(\n            result.properties.shortName,\n          )\n            ? splitShortNameAtLetters(result.properties.shortName)[0]\n            : result.properties.shortName;\n        }\n        return undefined;\n      },\n      result => {\n        if (result.properties.shortName) {\n          return testShortNameMatchesLineWithNumbersAndLetters(\n            result.properties.shortName,\n          )\n            ? splitShortNameAtLetters(result.properties.shortName)[1]\n            : result.properties.shortName;\n        }\n        return undefined;\n      },\n      'properties.longName',\n    ],\n    ['desc', 'desc', 'asc', 'asc', 'asc'],\n  );\n\n  return uniqWith(orderedResults, isDuplicate);\n};\n\n/**\n * Parses stop's name without stop code from a stop name from geocoding results\n *\n * @param {string} label stop's name from geocoding results.\n * @param {string} stopCode stop code.\n */\nexport const getStopName = (name, stopCode) => {\n  if (\n    stopCode !== undefined &&\n    stopCode !== null &&\n    name.lastIndexOf(stopCode) !== -1\n  ) {\n    return name.substring(0, name.lastIndexOf(stopCode) - 1);\n  }\n  return name;\n};\n","import get from 'lodash/get';\n\n/**\n * Function that filters list matching to input.\n *\n * @name filterMatchingToInput\n * @param {Array} list List containin objects e.g(  {\n *         type: 'Feature'\n *         properties: {\n *           label: 'testaddress4',\n *           layer: 'address',\n *           name: 'testaddress4',\n *         },\n *         geometry: { coordinates: [lon, lat] },\n *       },)\n * @param {String} Input Input given for filtering the list\n * @param {Array} fields List of fields that list is filtered by e.g ([properties.label, properties.name])\n * @returns {Array} Filtered Array.\n * @example\n * digitransit-util.filterMatchingToInput([{type: feature, properties { ... name: testaddress4 } ... }], 'testaddress4', 'properties.name');\n * //= List containing object with given name.\n */\nexport default function filterMatchingToInput(list, Input, fields) {\n  if (typeof Input === 'string' && Input.length > 0) {\n    const input = Input.toLowerCase().trim();\n    const multiWord = input.includes(' ') || input.includes(',');\n    return list.filter(item => {\n      let parts = [];\n      fields.forEach(pName => {\n        let value = get(item, pName);\n\n        if (\n          !multiWord &&\n          (pName === 'properties.label' || pName === 'address') &&\n          value\n        ) {\n          // special case: drop last parts i.e. city and neighbourhood\n          value = value.split(',');\n          if (value.length > 2) {\n            value.splice(value.length - 2, 2);\n          } else if (value.length > 1) {\n            value.splice(value.length - 1, 1);\n          }\n          value = value.join(',');\n        }\n        if (value) {\n          if (multiWord) {\n            parts = parts.concat(value.toLowerCase());\n          } else {\n            parts = parts.concat(\n              value.toLowerCase().replace(/,/g, ' ').split(' '),\n            );\n          }\n        }\n      });\n      for (let i = 0; i < parts.length; i++) {\n        if (parts[i].indexOf(input) === 0) {\n          // accept match only at word start\n          return true;\n        }\n      }\n      return false;\n    });\n  }\n\n  return list;\n}\n","/* eslint-disable no-param-reassign */\nimport take from 'lodash/take';\nimport flatten from 'lodash/flatten';\nimport uniq from 'lodash/uniq';\nimport compact from 'lodash/compact';\nimport { fetchQuery, graphql } from 'react-relay';\nimport routeNameCompare from '@digitransit-search-util/digitransit-search-util-route-name-compare';\nimport {\n  mapRoute,\n  isStop,\n  match,\n} from '@digitransit-search-util/digitransit-search-util-helpers';\nimport filterMatchingToInput from '@digitransit-search-util/digitransit-search-util-filter-matching-to-input';\nimport { isString, orderBy } from 'lodash';\n\nlet relayEnvironment = null;\n\nconst stopsQuery = graphql`\n  query srcStopsQuery($ids: [String!]!) {\n    stops(ids: $ids) {\n      gtfsId\n      lat\n      lon\n      name\n      code\n      stoptimesWithoutPatterns(numberOfDepartures: 1) {\n        trip {\n          route {\n            mode\n          }\n        }\n      }\n    }\n  }\n`;\n\nconst stationsQuery = graphql`\n  query srcStationsQuery($ids: [String!]!) {\n    stations(ids: $ids) {\n      gtfsId\n      lat\n      lon\n      name\n      code\n      stoptimesWithoutPatterns(numberOfDepartures: 1) {\n        trip {\n          route {\n            mode\n          }\n        }\n      }\n    }\n  }\n`;\n\nconst alertsQuery = graphql`\n  query srcAlertsQuery($feedIds: [String!]) {\n    alerts(severityLevel: [SEVERE], feeds: $feedIds) {\n      effectiveStartDate\n      effectiveEndDate\n      entities {\n        __typename\n        ... on Route {\n          mode\n        }\n      }\n    }\n  }\n`;\n\nconst searchVehicleRentalStationsQuery = graphql`\n  query srcSearchVehicleRentalStationsQuery {\n    vehicleRentalStations {\n      name\n      stationId\n      lon\n      lat\n    }\n  }\n`;\n\nconst searchRoutesQuery = graphql`\n  query srcSearchRoutesQuery(\n    $feeds: [String!]!\n    $name: String\n    $modes: [Mode]\n  ) {\n    viewer {\n      routes(feeds: $feeds, name: $name, transportModes: $modes) {\n        gtfsId\n        agency {\n          name\n        }\n        type\n        shortName\n        mode\n        color\n        longName\n        patterns {\n          code\n        }\n      }\n    }\n  }\n`;\n\nconst favouriteStationsQuery = graphql`\n  query srcFavouriteStationsQuery($ids: [String!]!) {\n    stations(ids: $ids) {\n      gtfsId\n      lat\n      lon\n      name\n    }\n  }\n`;\n\nconst favouriteStopsQuery = graphql`\n  query srcFavouriteStopsQuery($ids: [String!]!) {\n    stops(ids: $ids) {\n      gtfsId\n      lat\n      lon\n      name\n      code\n    }\n  }\n`;\n\nconst favouriteRoutesQuery = graphql`\n  query srcFavouriteRoutesQuery($ids: [String!]!) {\n    routes(ids: $ids) {\n      gtfsId\n      agency {\n        name\n      }\n      shortName\n      mode\n      longName\n      patterns {\n        code\n      }\n    }\n  }\n`;\n\nconst routesByIdsQuery = graphql`\n  query srcRoutesByIdsQuery($ids: [String!]!) {\n    routes(ids: $ids) {\n      gtfsId\n      agency {\n        name\n      }\n      type\n      shortName\n      mode\n      color\n      longName\n      patterns {\n        code\n      }\n    }\n  }\n`;\n\nconst favouriteVehicleRentalQuery = graphql`\n  query srcFavouriteVehicleRentalStationsQuery($ids: [String!]!) {\n    vehicleRentalStations(ids: $ids) {\n      name\n      stationId\n      lat\n      lon\n    }\n  }\n`;\n\n/** Verifies that the data for favourites is coherent and current and fixes errors */\nfunction verify(stopStationMap, favourites) {\n  const result = favourites\n    .map(favourite => {\n      const fromQuery = stopStationMap[favourite.gtfsId];\n      if (fromQuery) {\n        favourite.lat = fromQuery.lat;\n        favourite.lon = fromQuery.lon;\n        if (fromQuery.code) {\n          favourite.code = fromQuery.code;\n        }\n        return favourite;\n      }\n      return null;\n    })\n    .filter(r => r !== null);\n  return result;\n}\n/**\n * Set you Relay environment\n * @param {*} environment Your Relay environment\n *\n */\nexport function setRelayEnvironment(environment) {\n  relayEnvironment = environment;\n}\n\n/**\n * Get alerts for modes\n * @param {Number} currentTime Epoch time\n * @param {Array} feedIds Array of feedId Strings\n *\n */\nexport function getModesWithAlerts(currentTime, feedIds = null) {\n  if (!relayEnvironment) {\n    return Promise.resolve([]);\n  }\n  return fetchQuery(relayEnvironment, alertsQuery, { feedIds })\n    .toPromise()\n    .then(res => {\n      const modes = [];\n      res.alerts.forEach(alert => {\n        if (\n          alert.effectiveStartDate <= currentTime &&\n          alert.effectiveEndDate >= currentTime\n        ) {\n          alert.entities.forEach(e => {\n            // eslint-disable-next-line no-underscore-dangle\n            if (e.__typename === 'Route') {\n              modes.push(e.mode);\n            }\n          });\n        }\n      });\n      return modes;\n    })\n    .then(compact)\n    .then(uniq);\n}\n/**\n * Returns Stop and station objects .\n * @param {*} favourites\n */\n\nexport function getStopAndStationsQuery(favourites) {\n  // TODO perhaps validate stops/stations through geocoding api instead of routing?\n  if (!relayEnvironment || !Array.isArray(favourites)) {\n    return Promise.resolve([]);\n  }\n  const queries = [];\n  const stopIds = favourites\n    .filter(item => item.type === 'stop')\n    .map(item => item.gtfsId);\n  if (stopIds.length > 0) {\n    queries.push(\n      fetchQuery(relayEnvironment, favouriteStopsQuery, {\n        ids: stopIds,\n      }).toPromise(),\n    );\n  }\n  const stationIds = favourites\n    .filter(item => item.type === 'station')\n    .map(item => item.gtfsId);\n  if (stationIds.length > 0) {\n    queries.push(\n      fetchQuery(relayEnvironment, favouriteStationsQuery, {\n        ids: stationIds,\n      }).toPromise(),\n    );\n  }\n  if (queries.length === 0) {\n    return Promise.resolve([]);\n  }\n  return Promise.all(queries)\n    .then(qres =>\n      qres.map(stopOrStation => {\n        return stopOrStation.stops\n          ? stopOrStation.stops\n          : stopOrStation.stations;\n      }),\n    )\n    .then(flatten)\n    .then(result => result.filter(res => res !== null))\n    .then(stopsAndStations => {\n      // eslint-disable-next-line func-names\n      const stopStationMap = stopsAndStations.reduce(function (\n        map,\n        stopOrStation,\n      ) {\n        // eslint-disable-next-line no-param-reassign\n        map[stopOrStation.gtfsId] = stopOrStation;\n        return map;\n      }, {});\n      return verify(stopStationMap, favourites).map(stop => {\n        const favourite = {\n          type: 'FavouriteStop',\n          ...stop,\n          properties: {\n            label: stop.name,\n            layer: isStop(stop) ? 'favouriteStop' : 'favouriteStation',\n          },\n          geometry: {\n            coordinates: [stop.lon, stop.lat],\n          },\n        };\n        return favourite;\n      });\n    });\n}\n\nexport function getAllVehicleRentalStations() {\n  if (!relayEnvironment) {\n    return Promise.resolve([]);\n  }\n  return fetchQuery(\n    relayEnvironment,\n    searchVehicleRentalStationsQuery,\n  ).toPromise();\n}\n\n/**\n * Returns Stop and station objects filtered by given mode based on mode information\n * acquired from OTP by checking the modes of the departures on the given stops.\n * @param {*} stopsToFilter\n * @param {String} mode\n */\nexport function filterStopsAndStationsByMode(stopsToFilter, mode) {\n  if (!relayEnvironment || stopsToFilter.length < 1) {\n    return Promise.resolve([]);\n  }\n  const stationIds = stopsToFilter\n    .filter(\n      item =>\n        item.properties.layer === 'station' ||\n        item.properties.layer === 'favouriteStation' ||\n        item.properties.type === 'station',\n    )\n    .map(item => item.gtfsId);\n\n  const stopIds = stopsToFilter\n    .filter(\n      item =>\n        item.properties.layer === 'stop' ||\n        item.properties.layer === 'favouriteStop' ||\n        item.properties.type === 'stop',\n    )\n    .map(item => item.gtfsId);\n  const queries = [];\n  if (stopIds.length > 0) {\n    queries.push(\n      fetchQuery(relayEnvironment, stopsQuery, {\n        ids: stopIds,\n      }).toPromise(),\n    );\n  }\n  if (stationIds.length > 0) {\n    queries.push(\n      fetchQuery(relayEnvironment, stationsQuery, {\n        ids: stationIds,\n      }).toPromise(),\n    );\n  }\n  if (queries.length === 0) {\n    return Promise.resolve([]);\n  }\n  return Promise.all(queries)\n    .then(qres =>\n      qres.map(stopOrStation => {\n        return stopOrStation.stops\n          ? stopOrStation.stops\n          : stopOrStation.stations;\n      }),\n    )\n    .then(flatten)\n    .then(result => result.filter(res => res !== null))\n    .then(data =>\n      data.map(stop => {\n        const stopMode = stop.stoptimesWithoutPatterns[0]\n          ? stop.stoptimesWithoutPatterns[0].trip.route.mode\n          : undefined;\n        const oldStop = stopsToFilter.find(s => s.gtfsId === stop.gtfsId);\n        const newStop = {\n          ...oldStop,\n          mode: stopMode,\n        };\n        if (newStop.mode === mode) {\n          return newStop;\n        }\n        return undefined;\n      }),\n    )\n    .then(compact);\n}\n\n/**\n * Returns Route objects matching the provided GTFS IDs.\n * @param {Array.<String>} ids Route GTFS IDs to query.\n * @param pathOpts an object containing two properties routesPrefix and stopsPrefix to override the URL paths returned\n *        by this method\n * @returns {Promise<Array>} A promise resolving to the matching route objects.\n */\nexport function getRoutesByIds(ids, pathOpts) {\n  if (!relayEnvironment || !Array.isArray(ids) || ids.length === 0) {\n    return Promise.resolve([]);\n  }\n  return fetchQuery(relayEnvironment, routesByIdsQuery, { ids })\n    .toPromise()\n    .then(data => data.routes.map(r => mapRoute(r, pathOpts)).filter(Boolean));\n}\n/**\n * Returns Favourite Route objects depending on input\n * @param {String} input Search text, if empty no objects are returned\n * @param {*} favourites\n * @param {String} transportMode If provided, all returned route objects are of this mode, e.g. 'BUS'\n * @param pathOpts an object containing two properties routesPrefix and stopsPrefix to override the URL paths returned\n *        by this method\n */\nexport function getFavouriteRoutesQuery(\n  favourites,\n  input,\n  transportMode,\n  pathOpts,\n) {\n  if (\n    !relayEnvironment ||\n    !Array.isArray(favourites) ||\n    favourites.length === 0\n  ) {\n    return Promise.resolve([]);\n  }\n  return fetchQuery(relayEnvironment, favouriteRoutesQuery, {\n    ids: favourites,\n  })\n    .toPromise()\n    .then(data => data.routes.map(r => mapRoute(r, pathOpts)))\n    .then(routes => routes.filter(route => !!route))\n    .then(routes =>\n      routes.map(favourite => ({\n        ...favourite,\n        properties: { ...favourite.properties, layer: 'favouriteRoute' },\n        type: 'FavouriteRoute',\n      })),\n    )\n    .then(routes => {\n      if (transportMode) {\n        return routes.filter(favourite => {\n          return favourite.properties.mode === transportMode;\n        });\n      }\n      return routes;\n    })\n    .then(routes =>\n      filterMatchingToInput(routes, input, [\n        'properties.shortName',\n        'properties.longName',\n      ]),\n    )\n    .then(routes =>\n      routes.sort((x, y) => routeNameCompare(x.properties, y.properties)),\n    );\n}\n/**\n * Returns Favourite VehicleRentalStation objects depending on input\n * @param {String} input Search text, if empty no objects are returned\n * @param {*} favourites\n */\nexport function getFavouriteVehicleRentalStationsQuery(favourites, input) {\n  if (\n    !relayEnvironment ||\n    !Array.isArray(favourites) ||\n    favourites.length === 0\n  ) {\n    return Promise.resolve([]);\n  }\n  const favouriteIds = favourites.map(station => station.stationId);\n  return fetchQuery(relayEnvironment, favouriteVehicleRentalQuery, {\n    ids: favouriteIds,\n  })\n    .toPromise()\n    .then(data => data.vehicleRentalStations)\n    .then(stations => stations.filter(station => !!station))\n    .then(stations =>\n      stations.map(favourite => ({\n        geometry: {\n          coordinates: [favourite.lon, favourite.lat],\n        },\n        properties: {\n          name: favourite.name,\n          labelId: favourite.stationId,\n          layer: 'favouriteVehicleRentalStation',\n        },\n        type: 'FavouriteVehicleRentalStation',\n      })),\n    )\n    .then(stations =>\n      filterMatchingToInput(stations, input, ['properties.name']),\n    )\n    .then(stations => stations.sort());\n}\n/**\n * Returns Route objects depending on input\n * @param {String} input Search text, if empty no objects are returned\n * @param {*} feedIds\n * @param {String} transportMode Filter routes with a transport mode, e.g. route-BUS\n * @param pathOpts an object containing two properties routesPrefix and stopsPrefix to override the URL paths returned\n *        by this method\n */\nexport function getRoutesQuery(input, feedIds, transportMode, pathOpts) {\n  if (!relayEnvironment) {\n    return Promise.resolve([]);\n  }\n  if (typeof input !== 'string' || input.trim().length === 0) {\n    return Promise.resolve([]);\n  }\n  let modes;\n  if (transportMode) {\n    [, modes] = transportMode.split('-');\n  }\n  return fetchQuery(relayEnvironment, searchRoutesQuery, {\n    feeds: Array.isArray(feedIds) && feedIds.length > 0 ? feedIds : null,\n    name: input,\n    modes: transportMode ? modes : null,\n  })\n    .toPromise()\n    .then(data => {\n      const results = data.viewer.routes\n        .map(r => mapRoute(r, pathOpts))\n        .filter(route => !!route);\n      const normalizedTerm = !isString(input) ? '' : input.toLowerCase();\n      const orderedResults = orderBy(\n        results,\n        [result => match(normalizedTerm, result.properties)],\n        ['desc', 'desc'],\n      );\n      return take(orderedResults, 100);\n    });\n}\n\nexport function withCurrentTime(location) {\n  const query = (location && location.query) || {};\n  return {\n    ...location,\n    query: {\n      ...query,\n      time: query.time ? query.time : Math.floor(new Date().getTime() / 1000),\n    },\n  };\n}\n/**\n * Can be used to filter stops and stations by a given mode\n * @param {*} results search results from geocoding\n * @param {*} type type of search results to filter, e.g 'Stops' or 'Routes'. This function only filters Stops because routes can be filtered with the query itself\n * @param {*} mode e.g 'BUS' or 'TRAM'\n */\nexport function filterSearchResultsByMode(results, mode, type = 'Stops') {\n  switch (type) {\n    case 'Routes':\n      return results;\n    case 'Stops': {\n      return results.filter(stop => {\n        if (\n          stop &&\n          stop.properties &&\n          stop.properties.addendum &&\n          stop.properties.addendum.GTFS &&\n          stop.properties.addendum.GTFS.modes\n        ) {\n          return stop.properties.addendum.GTFS.modes.includes(mode);\n        }\n        return false;\n      });\n    }\n    default:\n      return results;\n  }\n}\n","/**\n * Compares routenames\n *\n * @name routeNameCompare\n * @param {Object} a {\n *  shortName: String,\n *  longName: String,\n *   agency: {\n *      name: String\n *    }\n * }\n * @param {Object} b Same as a\n * @returns {Number} 0 True -1 false\n * @example\n * const a = {\n *  shortName: 'hki',\n *  longName: 'Helsinki',\n *  agency: {\n *    name: 'hsl',\n *  },\n * };\n * const b = {\n *  shortName: 'hki',\n *  longName: 'Helsinki',\n *   agency: {\n *     name: 'hsl',\n *   },\n *  };\n * digitransit-search-util.routeNameCompare(a, b);\n * //= 0\n */\nexport default function routeNameCompare(a, b) {\n  const a1 =\n    a.shortName ||\n    a.longName ||\n    (a.agency && a.agency.name ? a.agency.name : '');\n  const b1 =\n    b.shortName ||\n    b.longName ||\n    (b.agency && b.agency.name ? b.agency.name : '');\n\n  const aNum = parseInt(a1, 10);\n  const bNum = parseInt(b1, 10);\n\n  if (!Number.isNaN(aNum) && !Number.isNaN(bNum)) {\n    if (aNum < bNum) {\n      return -1;\n    }\n    if (aNum > bNum) {\n      return 1;\n    }\n  }\n\n  const primary = a1.localeCompare(b1);\n  if (primary !== 0) {\n    return primary;\n  }\n\n  const a2 = a.longName || (a.agency && a.agency.name ? a.agency.name : '');\n  const b2 = b.longName || (b.agency && b.agency.name ? b.agency.name : '');\n\n  const secondary = a2.localeCompare(b2);\n  if (secondary !== 0) {\n    return secondary;\n  }\n\n  const a3 = a.agency && a.agency.name ? a.agency.name : '';\n  const b3 = b.agency && b.agency.name ? b.agency.name : '';\n\n  return a3.localeCompare(b3);\n}\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","t","i","r","e","toPrimitive","call","TypeError","String","Number","_defineProperty","Object","defineProperty","value","enumerable","configurable","writable","v0","v1","v2","v3","v4","v5","node","fragment","argumentDefinitions","defaultValue","kind","name","metadata","selections","alias","args","variableName","concreteType","plural","storageKey","type","abstractKey","operation","params","cacheID","id","operationKind","text","hash","v6","v7","v8","v9","v10","v11","v12","isStop","layer","mapRoute","item","pathOpts","opts","routesPrefix","stopsPrefix","link","encodeURIComponent","gtfsId","properties","_objectSpread","mode","geometry","coordinates","match","normalizedTerm","resultProperties","isString","length","map","filter","element","normalizedValue","str","toLowerCase","indexOf","test","testShortNameMatchesLineWithNumbersAndLetters","split","splitShortNameAtLetters","reduce","previous","current","filterMatchingToInput","list","Input","fields","input","trim","multiWord","includes","parts","forEach","pName","get","splice","join","concat","replace","relayEnvironment","stopsQuery","_srcStopsQuery","stationsQuery","_srcStationsQuery","alertsQuery","_srcAlertsQuery","searchVehicleRentalStationsQuery","_srcSearchVehicleRentalStationsQuery","searchRoutesQuery","_srcSearchRoutesQuery","favouriteStationsQuery","_srcFavouriteStationsQuery","favouriteStopsQuery","_srcFavouriteStopsQuery","favouriteRoutesQuery","_srcFavouriteRoutesQuery","routesByIdsQuery","_srcRoutesByIdsQuery","favouriteVehicleRentalQuery","_srcFavouriteVehicleRentalStationsQuery","results","stop","addendum","GTFS","modes","stopsToFilter","Promise","resolve","stationIds","stopIds","queries","push","fetchQuery","ids","toPromise","all","then","qres","stopOrStation","stops","stations","flatten","result","res","data","stopMode","stoptimesWithoutPatterns","trip","route","undefined","newStop","find","s","compact","favourites","transportMode","Array","isArray","routes","favourite","sort","x","y","a","b","a1","shortName","longName","agency","b1","aNum","parseInt","bNum","isNaN","primary","localeCompare","a2","b2","secondary","a3","b3","routeNameCompare","favouriteIds","station","stationId","vehicleRentalStations","lon","lat","labelId","currentTime","feedIds","alerts","alert","effectiveStartDate","effectiveEndDate","entities","__typename","uniq","Boolean","feeds","viewer","orderedResults","orderBy","take","stopsAndStations","stopStationMap","fromQuery","code","verify","label","environment","location","query","time","Math","floor","Date","getTime"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}