UNPKG

@tmlmobilidade/types

Version:
21 lines (20 loc) 755 B
/* * */ import { DateTime } from 'luxon'; import { z } from 'zod'; /* * */ export const OPERATIONAL_DATE_FORMAT = 'yyyyMMdd'; export const operationalDateSchema = z .string() .transform(validateOperationalDate); /** * This function validates if a string is a valid operational date. * Throws an error if the date is invalid. * @param date - The date to be validated. * @returns The given string as an OperationalDate. */ export function validateOperationalDate(date) { const parsedDate = DateTime.fromFormat(date, OPERATIONAL_DATE_FORMAT); if (!parsedDate.isValid) throw new Error(`Invalid date format '${date}', expected format: ${OPERATIONAL_DATE_FORMAT}, explanation: ${parsedDate.invalidExplanation}`); return date; }