@tmlmobilidade/types
Version:
47 lines (46 loc) • 2.25 kB
JavaScript
/* * */
import { validateGtfsBinary } from './common.js';
import { validateOperationalDate } from '@tmlmobilidade/go-types-shared';
/**
* Validates and transforms a raw GTFS calendar into the GTFS_Calendar format.
* This function checks the types of fields, converts boolean strings to boolean values,
* and ensures that required fields are present.
* @param rawData The raw calendar data to validate and transform.
* @returns A validated GTFS_Calendar object.
*/
export function validateGtfsCalendar(rawData) {
// Ensure required fields are present
if (!rawData.service_id)
throw new Error('Missing required field "service_id" on GTFS calendar.');
if (!rawData.start_date)
throw new Error('Missing required field "start_date" on GTFS calendar.');
if (!rawData.end_date)
throw new Error('Missing required field "end_date" on GTFS calendar.');
if (!rawData.monday)
throw new Error('Missing required field "monday" on GTFS calendar.');
if (!rawData.tuesday)
throw new Error('Missing required field "tuesday" on GTFS calendar.');
if (!rawData.wednesday)
throw new Error('Missing required field "wednesday" on GTFS calendar.');
if (!rawData.thursday)
throw new Error('Missing required field "thursday" on GTFS calendar.');
if (!rawData.friday)
throw new Error('Missing required field "friday" on GTFS calendar.');
if (!rawData.saturday)
throw new Error('Missing required field "saturday" on GTFS calendar.');
if (!rawData.sunday)
throw new Error('Missing required field "sunday" on GTFS calendar.');
// Transform the raw data into the output format
return {
end_date: validateOperationalDate(rawData.end_date),
friday: validateGtfsBinary(rawData.friday),
monday: validateGtfsBinary(rawData.monday),
saturday: validateGtfsBinary(rawData.saturday),
service_id: rawData.service_id,
start_date: validateOperationalDate(rawData.start_date),
sunday: validateGtfsBinary(rawData.sunday),
thursday: validateGtfsBinary(rawData.thursday),
tuesday: validateGtfsBinary(rawData.tuesday),
wednesday: validateGtfsBinary(rawData.wednesday),
};
}