{"version":3,"file":"date-day-rules.mjs","names":[],"sources":["../../../../../../../../@warlock.js/seal/src/rules/date/date-day-rules.ts"],"sourcesContent":["import { invalidRule, VALID_RULE } from \"../../helpers\";\r\nimport type { SchemaRule } from \"../../types\";\r\nimport type { WeekDay } from \"../../types/date-types\";\r\nimport { WEEK_DAYS } from \"../../types/date-types\";\r\n\r\n/**\r\n * Weekend rule - date must be Saturday or Sunday\r\n */\r\nexport const weekendRule: SchemaRule = {\r\n  name: \"weekend\",\r\n  defaultErrorMessage: \"The :input must be a weekend (Saturday or Sunday)\",\r\n  async validate(value: Date, context) {\r\n    const inputDate = new Date(value);\r\n    const dayOfWeek = inputDate.getDay();\r\n\r\n    // 0 = Sunday, 6 = Saturday\r\n    if (dayOfWeek === 0 || dayOfWeek === 6) {\r\n      return VALID_RULE;\r\n    }\r\n    return invalidRule(this, context);\r\n  },\r\n};\r\n\r\n/**\r\n * Weekday rule - date must be Monday through Friday\r\n */\r\nexport const weekdayRule: SchemaRule = {\r\n  name: \"weekday\",\r\n  defaultErrorMessage: \"The :input must be a weekday (Monday-Friday)\",\r\n  async validate(value: Date, context) {\r\n    const inputDate = new Date(value);\r\n    const dayOfWeek = inputDate.getDay();\r\n\r\n    // 1-5 = Monday-Friday\r\n    if (dayOfWeek >= 1 && dayOfWeek <= 5) {\r\n      return VALID_RULE;\r\n    }\r\n\r\n    return invalidRule(this, context);\r\n  },\r\n};\r\n\r\n/**\r\n * Weekdays rule - date must be one of specified weekdays\r\n */\r\nexport const weekdaysRule: SchemaRule<{ days: WeekDay[] }> = {\r\n  name: \"weekdays\",\r\n  defaultErrorMessage: \"The :input must be one of: :days\",\r\n  async validate(value: Date, context) {\r\n    const inputDate = new Date(value);\r\n    const dayOfWeek = inputDate.getDay();\r\n    const { days } = this.context.options;\r\n\r\n    const allowedDays = days.map((day) => WEEK_DAYS[day]);\r\n\r\n    if (allowedDays.includes(dayOfWeek)) {\r\n      return VALID_RULE;\r\n    }\r\n\r\n    days.forEach((day) => {\r\n      this.context.translatableParams[day] = day;\r\n    });\r\n\r\n    return invalidRule(this, context);\r\n  },\r\n};\r\n\r\n/**\r\n * Business day rule - date must be Monday-Friday (no weekends)\r\n */\r\nexport const businessDayRule: SchemaRule = {\r\n  name: \"businessDay\",\r\n  defaultErrorMessage: \"The :input must be a business day\",\r\n  async validate(value: Date, context) {\r\n    const inputDate = new Date(value);\r\n    const dayOfWeek = inputDate.getDay();\r\n\r\n    // 1-5 = Monday-Friday\r\n    if (dayOfWeek >= 1 && dayOfWeek <= 5) {\r\n      return VALID_RULE;\r\n    }\r\n\r\n    return invalidRule(this, context);\r\n  },\r\n};\r\n"],"mappings":";;;;;;;;AAQA,MAAa,cAA0B;CACrC,MAAM;CACN,qBAAqB;CACrB,MAAM,SAAS,OAAa,SAAS;EAEnC,MAAM,YAAY,IADI,KAAK,KACD,CAAC,CAAC,OAAO;EAGnC,IAAI,cAAc,KAAK,cAAc,GACnC,OAAO;EAET,OAAO,YAAY,MAAM,OAAO;CAClC;AACF;;;;AAKA,MAAa,cAA0B;CACrC,MAAM;CACN,qBAAqB;CACrB,MAAM,SAAS,OAAa,SAAS;EAEnC,MAAM,YAAY,IADI,KAAK,KACD,CAAC,CAAC,OAAO;EAGnC,IAAI,aAAa,KAAK,aAAa,GACjC,OAAO;EAGT,OAAO,YAAY,MAAM,OAAO;CAClC;AACF;;;;AAKA,MAAa,eAAgD;CAC3D,MAAM;CACN,qBAAqB;CACrB,MAAM,SAAS,OAAa,SAAS;EAEnC,MAAM,YAAY,IADI,KAAK,KACD,CAAC,CAAC,OAAO;EACnC,MAAM,EAAE,SAAS,KAAK,QAAQ;EAI9B,IAFoB,KAAK,KAAK,QAAQ,UAAU,IAElC,CAAC,CAAC,SAAS,SAAS,GAChC,OAAO;EAGT,KAAK,SAAS,QAAQ;GACpB,KAAK,QAAQ,mBAAmB,OAAO;EACzC,CAAC;EAED,OAAO,YAAY,MAAM,OAAO;CAClC;AACF;;;;AAKA,MAAa,kBAA8B;CACzC,MAAM;CACN,qBAAqB;CACrB,MAAM,SAAS,OAAa,SAAS;EAEnC,MAAM,YAAY,IADI,KAAK,KACD,CAAC,CAAC,OAAO;EAGnC,IAAI,aAAa,KAAK,aAAa,GACjC,OAAO;EAGT,OAAO,YAAY,MAAM,OAAO;CAClC;AACF"}