UNPKG

@tmlmobilidade/types

Version:
47 lines (46 loc) 2.25 kB
/* * */ 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), }; }