"use strict"; exports.DateParser = void 0; var _constants = require("../constants.js"); var _Parser = require("../Parser.js"); var _utils = require("../utils.js"); const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; const DAYS_IN_MONTH_LEAP_YEAR = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, ]; // Day of the month class DateParser extends _Parser.Parser { priority = 90; subPriority = 1; parse(dateString, token, match) { switch (token) { case "d": return (0, _utils.parseNumericPattern)( _constants.numericPatterns.date, dateString, ); case "do": return match.ordinalNumber(dateString, { unit: "date" }); default: return (0, _utils.parseNDigits)(token.length, dateString); } } validate(date, value) { const year = date.getFullYear(); const isLeapYear = (0, _utils.isLeapYearIndex)(year); const month = date.getMonth(); if (isLeapYear) { return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month]; } else { return value >= 1 && value <= DAYS_IN_MONTH[month]; } } set(date, _flags, value) { date.setDate(value); date.setHours(0, 0, 0, 0); return date; } incompatibleTokens = [ "Y", "R", "q", "Q", "w", "I", "D", "i", "e", "c", "t", "T", ]; } exports.DateParser = DateParser;