ValidateDateService is a service class for validating date components and input formats. It provides methods to validate date parts (year, month, day), validate input format strings, and parse date parts according to a given format, used internally by parseToDate, formatDate, and validateDate to keep their date-part parsing consistent.ts
import { ValidateDateService } from "@arkyn/shared/validateDateService";
validateDateParts(year, month, day)year (required)numbermonth (required)numberday (required)numbertypescript
import { ValidateDateService } from "@arkyn/shared/validateDateService";const service = new ValidateDateService();service.validateDateParts(2024, 2, 29); // Valid leap year dateservice.validateDateParts(2024, 1, 15); // Valid regular date
validateInputFormat(format)format (required)brazilianDate | usDate | isoDate | timestamptypescript
import { ValidateDateService } from "@arkyn/shared/validateDateService";const service = new ValidateDateService();service.validateInputFormat("brazilianDate"); // Validservice.validateInputFormat("usDate"); // Validservice.validateInputFormat("isoDate"); // Valid (deprecated alias for "usDate")service.validateInputFormat("timestamp"); // Valid
parseDateParts(dateParts, inputFormat)inputFormat into a validated { year, month, day } object, running each value through validateDateParts before returning. This is the single implementation shared internally by parseToDate, formatDate (both @arkyn/shared), and validateDate (@arkyn/server), previously each had its own copy-pasted reordering logic.dateParts (required)number[]inputFormat (required)brazilianDate | usDate | isoDate | timestamptypescript
import { ValidateDateService } from "@arkyn/shared/validateDateService";const service = new ValidateDateService();service.parseDateParts([25, 12, 2023], "brazilianDate");// { year: 2023, month: 12, day: 25 }service.parseDateParts([12, 25, 2023], "usDate");// { year: 2023, month: 12, day: 25 }
typescript
const service = new ValidateDateService();service.validateDateParts(2023, 2, 29);// Throws: "Day 29 is not valid for February 2023 (non-leap year)"service.validateDateParts(2024, 4, 31);// Throws: "Day 31 is not valid for April"service.validateDateParts(99, 1, 15);// Throws: "Year should be four digits"
validateDateParts above, since it validates the reordered parts before returning them.typescript
const service = new ValidateDateService();service.validateInputFormat("invalidFormat");// Throws: "Invalid input format: invalidFormat"
parseToDate to ensure input consistency before processing.