UNPKG

@tmlmobilidade/types

Version:

This package provides shared Zod validation schemas and their corresponding TypeScript types for use across projects. All types are automatically inferred from the schemas to ensure full type safety and reduce maintenance overhead.

42 lines (41 loc) 1.88 kB
/* * */ import { validateOperationalDate } from '../_common/operational-date.js'; /** * Validates and transforms a value into a GTFS Exception Type. * It accepts numeric or string representations of exception types. * @param value The value to validate and transform. * @returns A GTFS Exception Type value (1 or 2). * @throws Error if the value is not a valid GTFS Exception Type representation. */ export function validateGtfsExceptionType(value) { // Validate the exception type value if (value === 1 || value === '1') return 1; if (value === 2 || value === '2') return 2; // If the value does not match any known exception type, throw an error throw new Error(`Invalid GTFS Exception Type value: "${value}". It must be 1 (Service Added) or 2 (Service Removed).`); } /** * Validates and transforms a raw GTFS Calendar Date exception * into the GTFS_CalendarDate format. * This function checks the types of fields, converts string representations * to appropriate types, and ensures that required fields are present. * @param rawData The raw calendar date exception data to validate and transform. * @returns A validated GTFS_CalendarDate object. */ export function validateGtfsCalendarDate(rawData) { // Ensure required fields are present if (!rawData.service_id) throw new Error('Missing required field "service_id" on GTFS calendar date.'); if (!rawData.date) throw new Error('Missing required field "date" on GTFS calendar date.'); if (!rawData.exception_type) throw new Error('Missing required field "exception_type" on GTFS calendar date.'); // Transform the raw data into the output format return { date: validateOperationalDate(rawData.date), exception_type: validateGtfsExceptionType(rawData.exception_type), service_id: rawData.service_id, }; }