UNPKG

@tmlmobilidade/types

Version:
22 lines (21 loc) 941 B
/* * */ import { DateTime } from 'luxon'; import { z } from 'zod'; export const UnixTimeStampSchema = z .number() .transform(validateUnixTimestamp); /** * This function validates if a number is a valid Unix Timestamp, in milliseconds. * It is assumed the number will always be greater than 10^10 (1e10) to ensure it is in milliseconds. * Throws an error if the date is invalid. * @param milliseconds - The number to be validated. * @returns The given number as a UnixTimestamp. */ export function validateUnixTimestamp(milliseconds) { if (milliseconds < 1e10) throw new Error(`Invalid value '${milliseconds}', expected a number in milliseconds but received a number smaller than 1e10`); const parsedDate = DateTime.fromMillis(milliseconds); if (!parsedDate.isValid) throw new Error(`Invalid date '${milliseconds}, explanation: ${parsedDate.invalidExplanation}`); return parsedDate.toMillis(); }