@tmlmobilidade/types
Version:
57 lines (56 loc) • 2.5 kB
JavaScript
/* * */
import { validateGtfsBinary, validateGtfsTernary } from './common.js';
/**
* Validates and transforms raw GTFS Trip data into a structured GTFS_Trip object.
* This function checks the types of fields, converts boolean strings to boolean values,
* and ensures that required fields are present.
* @param rawData The raw trip data to validate and transform.
* @returns A validated GTFS_Trip object.
*/
export function validateGtfsTrip(rawData) {
// Ensure required fields are present
if (!rawData.route_id)
throw new Error('Missing required field "route_id" on GTFS Trip.');
if (!rawData.service_id)
throw new Error('Missing required field "service_id" on GTFS Trip.');
if (!rawData.trip_id)
throw new Error('Missing required field "trip_id" on GTFS Trip.');
if (!rawData.direction_id)
throw new Error('Missing required field "direction_id" on GTFS Trip.');
if (!rawData.trip_headsign)
throw new Error('Missing required field "trip_headsign" on GTFS Trip.');
if (!rawData.shape_id)
throw new Error('Missing required field "shape_id" on GTFS Trip.');
// Transform the raw data into the output format
return {
bikes_allowed: validateGtfsTernary(rawData.bikes_allowed),
block_id: rawData.block_id,
direction_id: validateGtfsBinary(rawData.direction_id),
route_id: rawData.route_id,
service_id: rawData.service_id,
shape_id: rawData.shape_id,
trip_headsign: rawData.trip_headsign,
trip_id: rawData.trip_id,
trip_short_name: rawData.trip_short_name,
wheelchair_accessible: validateGtfsTernary(rawData.wheelchair_accessible),
};
}
/**
* Validates and transforms raw GTFS-TML trip data into a structured GTFS_Trip_Extended object.
* This function checks the types of fields, converts boolean strings to boolean values,
* and ensures that required fields are present, including the pattern_id.
* @param rawData he raw trip data to validate and transform.
* @returns A validated GTFS_Trip_Extended object.
*/
export function validateGtfsTripExtended(rawData) {
// Validate the standard GTFS fields
const trip = validateGtfsTrip(rawData);
// Validate the Extended GTFS fields
if (!rawData.pattern_id)
throw new Error('Missing required field "pattern_id" on GTFS Trip.');
// Transform the raw data into the output format
return {
...trip,
pattern_id: rawData.pattern_id,
};
}