Skip to content

Latest commit

 

History

History
108 lines (82 loc) · 3.13 KB

migrating-to-5.md

File metadata and controls

108 lines (82 loc) · 3.13 KB

Migrating to hafas-client@5

If you use Node 8 ("Carbon")…

…migrate to Node 10 ("Dubnium"), sorry. Node 8 is out of maintenance now. 83f43c6

new fields for departure/arrival time & delays

An arrival/departure now looks like this:

{
  when: null, // realtime/prognosed
  plannedWhen: '2019-10-10T10:10+10:00',
  platform: '3', // realtime/prognosed
  plannedPlatform: '4'
}

A stopover/journey leg now will look like this:

{
  arrival: null, // realtime/prognosed
  plannedArrival: '2019-10-10T10:10+10:00',
  arrivalDelay: null,
  arrivalPlatform: '3', // realtime/prognosed
  plannedArrivalPlatform: '4',

  departure: '2019-10-10T10:12+10:00', // realtime/prognosed
  plannedDeparture: '2019-10-10T10:10+10:00',
  departureDelay: 120, // seconds
  departurePlatform: null, // realtime/prognosed
  plannedDeparturePlatform: null
}

If the same stopover/journey leg is cancelled: true, it will look like this:

{
  arrival: null,
  prognosedArrival: null,
  plannedArrival: '2019-10-10T10:10+10:00',
  arrivalDelay: null,
  arrivalPlatform: null,
  prognosedArrivalPlatform: '3',
  plannedArrivalPlatform: '4',

  departure: null,
  prognosedDeparture: '2019-10-10T10:12+10:00',
  plannedDeparture: '2019-10-10T10:10+10:00',
  departureDelay: 120, // seconds
  departurePlatform: null,
  prognosedDeparturePlatform: null,
  plannedDeparturePlatform: null
}

If you use journeys()

…with the walkingSpeed option and a custom profile, add journeysWalkingSpeed to your profile. 937583e …without the results option, but expect a certain number of results, you must pass results now. 0045587

If you use departures()/arrivals() with the BVG profile

With the latest protocol version, the BVG endpoint doesn't support these options anymore:

  • stopovers – Fetch & parse previous/next stopovers? Default: false
  • includeRelatedStations – Fepartures at related stations, e.g. those that belong together on the metro map? Default: true

2d72391

If you use a custom profile…

Let's assume you have parse function looking like this:

const createParseLine = (profile, opt, data) => (rawLine) => {
	const operator = data.operators[rawLine.oprX] || null
	if (operator && operator.name === 'foo') {
		return {
			type: 'line',
			name: 'really special tram line',
			mode: 'tram',
			product: 'special-tram',
			operator
		}
	}
	return defaultParseLine(rawLine)
}

Adapt your parse function like this:

const createParseLine = (profile, opt, _) => (rawLine) => {
-	const operator = data.operators[rawLine.oprX] || null
+	const operator = rawLine.operator || null

See also #127.

If you use icons in parseWarning/parseHint, adapt the function(s) to take an object data as the first argument. You can access the list of parsed icons via data.icons, parsed warnings via data.warnings, etc. a229205 b36f0e3

Other breaking changes

  • journey.price will be null if there's no pricing data returned by the endpoint, instead of {amount: null}. 8fe277d