{"version":3,"file":"date-mutators.mjs","names":[],"sources":["../../../../../../../@warlock.js/seal/src/mutators/date-mutators.ts"],"sourcesContent":["import dayjs from \"dayjs\";\r\nimport type { Mutator } from \"../types\";\r\n\r\n/**\r\n * Convert value to Date object\r\n * Returns Invalid Date if value cannot be converted\r\n */\r\nexport const dateMutator: Mutator = async (value) => {\r\n  // Handle null/undefined\r\n  if (!value) {\r\n    return;\r\n  }\r\n\r\n  // Already a Date object\r\n  if (value instanceof Date) {\r\n    return value;\r\n  }\r\n\r\n  // Try to convert to Date\r\n  const date = new Date(value);\r\n\r\n  // Return the date (valid or Invalid Date)\r\n  // dateRule will validate and fail if invalid\r\n  return date;\r\n};\r\n\r\n/** Convert date to ISO string format */\r\nexport const toISOStringMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  return date.toISOString();\r\n};\r\n\r\n/** Convert date to Unix timestamp (milliseconds) */\r\nexport const toTimestampMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  return date.getTime();\r\n};\r\n\r\n/** Convert date to start of day (00:00:00) */\r\nexport const toStartOfDayMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  date.setHours(0, 0, 0, 0);\r\n  return date;\r\n};\r\n\r\n/** Convert date to end of day (23:59:59.999) */\r\nexport const toEndOfDayMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  date.setHours(23, 59, 59, 999);\r\n  return date;\r\n};\r\n\r\n/** Add or subtract days from date */\r\nexport const addDaysMutator: Mutator = async (value, context) => {\r\n  const date = new Date(value);\r\n  const days = context?.options.days ?? 0;\r\n  date.setDate(date.getDate() + days);\r\n  return date;\r\n};\r\n\r\n/** Add or subtract months from date */\r\nexport const addMonthsMutator: Mutator = async (value, context) => {\r\n  const date = new Date(value);\r\n  const months = context?.options.months ?? 0;\r\n  date.setMonth(date.getMonth() + months);\r\n  return date;\r\n};\r\n\r\n/** Add or subtract years from date */\r\nexport const addYearsMutator: Mutator = async (value, context) => {\r\n  const date = new Date(value);\r\n  const years = context?.options.years ?? 0;\r\n  date.setFullYear(date.getFullYear() + years);\r\n  return date;\r\n};\r\n\r\n/** Add or subtract hours from date */\r\nexport const addHoursMutator: Mutator = async (value, context) => {\r\n  const date = new Date(value);\r\n  const hours = context?.options.hours ?? 0;\r\n  date.setHours(date.getHours() + hours);\r\n  return date;\r\n};\r\n\r\n/** Convert date to UTC */\r\nexport const toUTCMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  return new Date(date.toUTCString());\r\n};\r\n\r\n/** Convert date to specific format using dayjs */\r\nexport const toFormatMutator: Mutator = async (value, context) => {\r\n  const format = context?.options.format ?? \"YYYY-MM-DD\";\r\n  return dayjs(value).format(format);\r\n};\r\n\r\n/** Convert to date only (remove time) */\r\nexport const toDateOnlyMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  return date.toISOString().split(\"T\")[0];\r\n};\r\n\r\n/** Convert to time only (HH:MM:SS) */\r\nexport const toTimeOnlyMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  return date.toTimeString().split(\" \")[0];\r\n};\r\n\r\n/** Set to start of month */\r\nexport const toStartOfMonthMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  date.setDate(1);\r\n  date.setHours(0, 0, 0, 0);\r\n  return date;\r\n};\r\n\r\n/** Set to end of month */\r\nexport const toEndOfMonthMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  date.setMonth(date.getMonth() + 1);\r\n  date.setDate(0);\r\n  date.setHours(23, 59, 59, 999);\r\n  return date;\r\n};\r\n\r\n/** Set to start of year */\r\nexport const toStartOfYearMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  date.setMonth(0);\r\n  date.setDate(1);\r\n  date.setHours(0, 0, 0, 0);\r\n  return date;\r\n};\r\n\r\n/** Set to end of year */\r\nexport const toEndOfYearMutator: Mutator = async (value) => {\r\n  const date = new Date(value);\r\n  date.setMonth(11);\r\n  date.setDate(31);\r\n  date.setHours(23, 59, 59, 999);\r\n  return date;\r\n};\r\n"],"mappings":"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"}