soff-date 1.2.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +21 -0
  2. package/dist/ar-Br72xIAo.d.ts +31 -0
  3. package/dist/ar-BzotUQyb.d.cts +31 -0
  4. package/dist/br-6mG4bT2v.d.cts +31 -0
  5. package/dist/br-BZijEnzK.d.ts +31 -0
  6. package/dist/co-BV19Ey8m.d.cts +31 -0
  7. package/dist/co-DqYkl-kH.d.ts +31 -0
  8. package/dist/core/types.d.cts +13 -1
  9. package/dist/core/types.d.ts +13 -1
  10. package/dist/i18n/en.cjs +1 -1
  11. package/dist/i18n/en.cjs.map +1 -1
  12. package/dist/i18n/en.js +1 -1
  13. package/dist/i18n/en.js.map +1 -1
  14. package/dist/i18n/es.cjs +1 -1
  15. package/dist/i18n/es.cjs.map +1 -1
  16. package/dist/i18n/es.js +1 -1
  17. package/dist/i18n/es.js.map +1 -1
  18. package/dist/i18n/index.cjs +1 -1
  19. package/dist/i18n/index.cjs.map +1 -1
  20. package/dist/i18n/index.js +1 -1
  21. package/dist/i18n/index.js.map +1 -1
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +15 -1
  25. package/dist/index.d.ts +15 -1
  26. package/dist/index.js +1 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/locales/ar.cjs +1 -1
  29. package/dist/locales/ar.cjs.map +1 -1
  30. package/dist/locales/ar.d.cts +2 -1
  31. package/dist/locales/ar.d.ts +2 -1
  32. package/dist/locales/ar.js +1 -1
  33. package/dist/locales/ar.js.map +1 -1
  34. package/dist/locales/br.cjs +1 -1
  35. package/dist/locales/br.cjs.map +1 -1
  36. package/dist/locales/br.d.cts +2 -1
  37. package/dist/locales/br.d.ts +2 -1
  38. package/dist/locales/br.js +1 -1
  39. package/dist/locales/br.js.map +1 -1
  40. package/dist/locales/co.cjs +1 -1
  41. package/dist/locales/co.cjs.map +1 -1
  42. package/dist/locales/co.d.cts +2 -1
  43. package/dist/locales/co.d.ts +2 -1
  44. package/dist/locales/co.js +1 -1
  45. package/dist/locales/co.js.map +1 -1
  46. package/dist/locales/index.cjs +1 -1
  47. package/dist/locales/index.cjs.map +1 -1
  48. package/dist/locales/index.d.cts +74 -6
  49. package/dist/locales/index.d.ts +74 -6
  50. package/dist/locales/index.js +1 -1
  51. package/dist/locales/index.js.map +1 -1
  52. package/dist/locales/mx.cjs +1 -1
  53. package/dist/locales/mx.cjs.map +1 -1
  54. package/dist/locales/mx.d.cts +2 -1
  55. package/dist/locales/mx.d.ts +2 -1
  56. package/dist/locales/mx.js +1 -1
  57. package/dist/locales/mx.js.map +1 -1
  58. package/dist/locales/us.cjs +1 -1
  59. package/dist/locales/us.cjs.map +1 -1
  60. package/dist/locales/us.d.cts +2 -1
  61. package/dist/locales/us.d.ts +2 -1
  62. package/dist/locales/us.js +1 -1
  63. package/dist/locales/us.js.map +1 -1
  64. package/dist/manager-cCTMxYzq.d.cts +7 -0
  65. package/dist/manager-t1ZTM9nD.d.ts +7 -0
  66. package/dist/mx-BkWemPZ9.d.cts +31 -0
  67. package/dist/mx-CWOzeLjN.d.ts +31 -0
  68. package/dist/us-CIIYd5iU.d.ts +31 -0
  69. package/dist/us-CLaBwY8j.d.cts +31 -0
  70. package/package.json +1 -1
  71. package/dist/ar-DOBc0AKI.d.ts +0 -24
  72. package/dist/ar-DZGRazxg.d.cts +0 -24
  73. package/dist/br-Bxl7-z70.d.cts +0 -24
  74. package/dist/br-DyXv2cHh.d.ts +0 -24
  75. package/dist/co-BPDNBIJT.d.ts +0 -24
  76. package/dist/co-pYFH0DtD.d.cts +0 -24
  77. package/dist/mx-AFleoZyO.d.ts +0 -24
  78. package/dist/mx-aI-ieOc4.d.cts +0 -24
  79. package/dist/us-8v1NFxuj.d.cts +0 -24
  80. package/dist/us-BMlmAp3v.d.ts +0 -24
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/algorithms/easter.ts","../../src/core/algorithms/nth-weekday.ts","../../src/core/algorithms/shifts.ts","../../src/core/engine.ts","../../src/core/business.ts","../../src/i18n/pt.ts","../../src/locales/br.ts"],"names":["getEasterSunday","year","a","b","c","d","e","f","g","h","i","l","m","month","day","getNthWeekday","weekday","expectedMonth","firstWeekday","result","last","diff","isValidDate","date","applyShift","rule","daysToNextMonday","resolveRule","easter","toISODate","resolveHolidays","definitions","names","def","rawDate","shifted","checkIsHoliday","isoDate","findNextHoliday","from","isoFrom","holidays","next","createInvalidDate","isWeekend","checkIsBusinessDay","addBusinessDays","startDate","amount","remaining","direction","getBusinessDaysBetween","endDate","start","end","count","current","pt","getHolidays","options","isHoliday","getNextHoliday","isBusinessDay","businessDays","diffBusinessDays"],"mappings":"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","file":"br.cjs","sourcesContent":["/**\n * Calculates Easter Sunday (Meeus/Jones/Butcher algorithm)\n * Valid for Gregorian calendar (1583+)\n */\nexport function getEasterSunday(year: number): Date {\n if (!Number.isInteger(year) || year < 1583) {\n return new Date(Number.NaN);\n }\n\n const a = year % 19;\n const b = Math.floor(year / 100);\n const c = year % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = (19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = (32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n\n return new Date(Date.UTC(year, month - 1, day));\n}\n","/**\n * Calculates the Nth weekday of a month\n * @param year - Year\n * @param month - Month (1-12)\n * @param weekday - Weekday (0=Sun, 1=Mon, ..., 6=Sat)\n * @param n - Occurrence (1=first, 2=second, -1=last)\n */\nexport function getNthWeekday(year: number, month: number, weekday: number, n: number): Date {\n if (\n !Number.isInteger(year) ||\n !Number.isInteger(month) ||\n month < 1 ||\n month > 12 ||\n !Number.isInteger(weekday) ||\n weekday < 0 ||\n weekday > 6 ||\n !Number.isInteger(n) ||\n n === 0\n ) {\n return new Date(Number.NaN);\n }\n\n const expectedMonth = month - 1;\n\n if (n > 0) {\n // From start of month\n const first = new Date(Date.UTC(year, month - 1, 1));\n const firstWeekday = first.getUTCDay();\n const diff = (weekday - firstWeekday + 7) % 7;\n const day = 1 + diff + (n - 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n } else {\n // From end of month (n = -1 = last)\n // month is 1-12. Date.UTC(year, month, 0) gives the last day of month 'month'\n const last = new Date(Date.UTC(year, month, 0));\n const lastWeekday = last.getUTCDay();\n const diff = (lastWeekday - weekday + 7) % 7;\n const day = last.getUTCDate() - diff + (n + 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n }\n}\n","import type { ShiftRule } from '../types';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\n/**\n * Applies a shift rule to a date\n * @returns { date: Date, shifted: boolean }\n */\nexport function applyShift(date: Date, rule: ShiftRule): { date: Date; shifted: boolean } {\n if (!isValidDate(date)) {\n return { date, shifted: false };\n }\n\n const day = date.getUTCDay(); // 0=Sun, 6=Sat\n\n if (rule === 'none') {\n return { date, shifted: false };\n }\n\n const result = new Date(date);\n\n switch (rule) {\n case 'emiliani':\n case 'nextMonday': {\n // If it's already Monday (1), do not move\n if (day === 1) {\n return { date, shifted: false };\n }\n // Move to next Monday\n // (8 - day) % 7 gives days until next Monday\n // Ex: Sun(0) -> (8-0)%7 = 1 (+1 day) -> Mon\n // Ex: Sat(6) -> (8-6)%7 = 2 (+2 days) -> Mon\n // Ex: Wed(3) -> (8-3)%7 = 5 (+5 days) -> Mon\n const daysToNextMonday = (8 - day) % 7;\n result.setUTCDate(date.getUTCDate() + daysToNextMonday);\n break;\n }\n\n case 'observedUS':\n // Only affects weekends\n if (day === 0) {\n // Sunday -> Monday (+1)\n result.setUTCDate(date.getUTCDate() + 1);\n } else if (day === 6) {\n // Saturday -> Friday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else {\n return { date, shifted: false };\n }\n break;\n\n case 'nearestMonday':\n // Argentina rule:\n // Tue/Wed -> Previous Monday\n // Thu/Fri -> Next Monday\n if (day === 2) {\n // Tuesday -> Monday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else if (day === 3) {\n // Wednesday -> Monday (-2)\n result.setUTCDate(date.getUTCDate() - 2);\n } else if (day === 4) {\n // Thursday -> Next Monday (+4)\n result.setUTCDate(date.getUTCDate() + 4);\n } else if (day === 5) {\n // Friday -> Next Monday (+3)\n result.setUTCDate(date.getUTCDate() + 3);\n } else {\n return { date, shifted: false };\n }\n break;\n\n default:\n return { date, shifted: false };\n }\n\n return { date: result, shifted: true };\n}\n","import type { HolidayDefinition, HolidayRule, Holiday } from './types';\nimport { getEasterSunday } from './algorithms/easter';\nimport { getNthWeekday } from './algorithms/nth-weekday';\nimport { applyShift } from './algorithms/shifts';\n\n/** Resolves a rule to a concrete date */\nfunction resolveRule(rule: HolidayRule, year: number): Date | null {\n switch (rule.type) {\n case 'fixed':\n return new Date(Date.UTC(year, rule.month - 1, rule.day));\n\n case 'nthWeekday':\n return getNthWeekday(year, rule.month, rule.weekday, rule.n);\n\n case 'easterRelative': {\n const easter = getEasterSunday(year);\n const result = new Date(easter);\n result.setUTCDate(easter.getUTCDate() + rule.offset);\n return result;\n }\n\n case 'custom':\n return rule.calc(year);\n }\n}\n\n/** Formats Date to ISO string (date only) */\nfunction toISODate(date: Date): string {\n try {\n return date.toISOString().split('T')[0];\n } catch {\n return '';\n }\n}\n\n/** Checks if a date is valid */\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && !Number.isNaN(date.getTime());\n}\n\n/** Generates holidays for a year */\nexport function resolveHolidays(\n definitions: HolidayDefinition[],\n year: number,\n names: Record<string, string> = {},\n): Holiday[] {\n if (typeof year !== 'number' || !Number.isInteger(year)) {\n return [];\n }\n\n return definitions\n .map((def) => {\n const rawDate = resolveRule(def.rule, year);\n if (!rawDate || !isValidDate(rawDate)) return null;\n\n const { date, shifted } = applyShift(rawDate, def.shift ?? 'none');\n if (!isValidDate(date)) return null;\n\n return {\n date: toISODate(date),\n key: def.key,\n name: names[def.key] ?? def.key,\n ...(shifted && { isShifted: true }),\n };\n })\n .filter((h): h is Holiday => h !== null)\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\n/** Checks if a date is a holiday */\nexport function checkIsHoliday(\n definitions: HolidayDefinition[],\n date: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(date)) return null;\n\n const year = date.getUTCFullYear();\n const isoDate = toISODate(date);\n if (!isoDate) return null;\n\n const holidays = resolveHolidays(definitions, year, names);\n return holidays.find((h) => h.date === isoDate) ?? null;\n}\n\n/** Gets the next holiday from a date */\nexport function findNextHoliday(\n definitions: HolidayDefinition[],\n from: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(from)) return null;\n\n const isoFrom = toISODate(from);\n if (!isoFrom) return null;\n\n const year = from.getUTCFullYear();\n\n // Search in current year\n let holidays = resolveHolidays(definitions, year, names);\n let next = holidays.find((h) => h.date >= isoFrom);\n\n // If none, search in next year\n if (!next) {\n holidays = resolveHolidays(definitions, year + 1, names);\n next = holidays[0];\n }\n\n return next ?? null;\n}\n","import type { HolidayDefinition } from './types';\nimport { checkIsHoliday } from './engine';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\nfunction createInvalidDate(): Date {\n return new Date(Number.NaN);\n}\n\n/**\n * Checks if a date is a weekend (Saturday or Sunday)\n * Uses UTC date to avoid timezone issues\n */\nexport function isWeekend(date: Date): boolean {\n const day = date.getUTCDay();\n return day === 0 || day === 6; // 0 = Sunday, 6 = Saturday\n}\n\n/**\n * Checks if a date is a business day (not weekend AND not holiday)\n */\nexport function checkIsBusinessDay(definitions: HolidayDefinition[], date: Date): boolean {\n if (!isValidDate(date)) return false;\n if (isWeekend(date)) return false;\n return checkIsHoliday(definitions, date) === null;\n}\n\n/**\n * Adds (or subtracts) business days to a date\n */\nexport function addBusinessDays(\n definitions: HolidayDefinition[],\n startDate: Date,\n amount: number,\n): Date {\n if (!isValidDate(startDate) || !Number.isFinite(amount)) {\n return createInvalidDate();\n }\n\n const result = new Date(startDate);\n let remaining = Math.abs(amount);\n const direction = amount >= 0 ? 1 : -1;\n\n while (remaining > 0) {\n result.setUTCDate(result.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, result)) {\n remaining--;\n }\n }\n\n return result;\n}\n\n/**\n * Calculates the number of business days between two dates\n * Returns the number of days to add to startDate to get endDate (can be negative)\n * If startDate and endDate are the same, returns 0\n */\nexport function getBusinessDaysBetween(\n definitions: HolidayDefinition[],\n startDate: Date,\n endDate: Date,\n): number {\n if (!isValidDate(startDate) || !isValidDate(endDate)) {\n return Number.NaN;\n }\n\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n // Reset hours to avoid issues with daylight saving time or partial days\n start.setUTCHours(0, 0, 0, 0);\n end.setUTCHours(0, 0, 0, 0);\n\n if (start.getTime() === end.getTime()) return 0;\n\n const direction = start < end ? 1 : -1;\n let count = 0;\n const current = new Date(start);\n\n // If direction is positive, we count days starting from start+1 until end\n // If direction is negative, we count days starting from start-1 until end\n\n while (current.getTime() !== end.getTime()) {\n current.setUTCDate(current.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, current)) {\n count += direction;\n }\n }\n\n return count;\n}\n","import type { HolidayNames } from '../core/types';\n\nexport const pt: HolidayNames = {\n newYear: 'Ano Novo',\n epiphany: 'Dia de Reis',\n holyThursday: 'Quinta-feira Santa',\n goodFriday: 'Sexta-feira Santa',\n easterSunday: 'Domingo de Páscoa',\n laborDay: 'Dia do Trabalhador',\n ascension: 'Ascensão do Senhor',\n corpusChristi: 'Corpus Christi',\n christmas: 'Natal',\n christmasEve: 'Véspera de Natal',\n newYearsEve: 'Véspera de Ano Novo',\n allSaints: 'Dia de Todos os Santos',\n assumptionMary: 'Assunção de Nossa Senhora',\n immaculateConception: 'Imaculada Conceição',\n\n // Brasil\n carnivalMonday: 'Segunda-feira de Carnaval',\n carnivalTuesday: 'Terça-feira de Carnaval',\n tiradentesDay: 'Tiradentes',\n independenceDay: 'Independência do Brasil',\n ladyAparecida: 'Nossa Senhora Aparecida',\n allSouls: 'Finados',\n republicProclamation: 'Proclamação da República',\n blackConsciousness: 'Dia da Consciência Negra',\n};\n","import type { HolidayDefinition, Holiday, HolidayNames } from '../core/types';\nimport { resolveHolidays, checkIsHoliday, findNextHoliday } from '../core/engine';\nimport { checkIsBusinessDay, addBusinessDays, getBusinessDaysBetween } from '../core/business';\nimport { pt } from '../i18n/pt';\n\nconst definitions: HolidayDefinition[] = [\n { key: 'newYear', rule: { type: 'fixed', month: 1, day: 1 } },\n { key: 'carnivalMonday', rule: { type: 'easterRelative', offset: -48 } },\n { key: 'carnivalTuesday', rule: { type: 'easterRelative', offset: -47 } },\n { key: 'goodFriday', rule: { type: 'easterRelative', offset: -2 } },\n { key: 'tiradentesDay', rule: { type: 'fixed', month: 4, day: 21 } },\n { key: 'laborDay', rule: { type: 'fixed', month: 5, day: 1 } },\n { key: 'corpusChristi', rule: { type: 'easterRelative', offset: 60 } },\n { key: 'independenceDay', rule: { type: 'fixed', month: 9, day: 7 } },\n { key: 'ladyAparecida', rule: { type: 'fixed', month: 10, day: 12 } },\n { key: 'allSouls', rule: { type: 'fixed', month: 11, day: 2 } },\n { key: 'republicProclamation', rule: { type: 'fixed', month: 11, day: 15 } },\n { key: 'blackConsciousness', rule: { type: 'fixed', month: 11, day: 20 } },\n { key: 'christmas', rule: { type: 'fixed', month: 12, day: 25 } },\n];\n\nexport interface GetHolidaysOptions {\n lang?: HolidayNames;\n}\n\nexport function getHolidays(year: number, options?: GetHolidaysOptions): Holiday[] {\n const names = options?.lang ?? pt;\n return resolveHolidays(definitions, year, names);\n}\n\nexport function isHoliday(date: Date, options?: GetHolidaysOptions): Holiday | null {\n const names = options?.lang ?? pt;\n return checkIsHoliday(definitions, date, names);\n}\n\nexport function getNextHoliday(\n from: Date = new Date(),\n options?: GetHolidaysOptions,\n): Holiday | null {\n const names = options?.lang ?? pt;\n return findNextHoliday(definitions, from, names);\n}\n\nexport function isBusinessDay(date: Date): boolean {\n return checkIsBusinessDay(definitions, date);\n}\n\nexport function businessDays(date: Date, amount: number): Date {\n return addBusinessDays(definitions, date, amount);\n}\n\nexport function diffBusinessDays(startDate: Date, endDate: Date): number {\n return getBusinessDaysBetween(definitions, startDate, endDate);\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/algorithms/easter.ts","../../src/core/algorithms/nth-weekday.ts","../../src/core/algorithms/shifts.ts","../../src/core/engine.ts","../../src/core/business.ts","../../src/core/manager.ts","../../src/i18n/pt.ts","../../src/locales/br.ts"],"names":["getEasterSunday","year","b","c","d","e","f","g","h","i","k","m","month","day","getNthWeekday","weekday","n","expectedMonth","firstWeekday","result","last","diff","isValidDate","date","applyShift","rule","daysToNextMonday","resolveRule","easter","toISODate","resolveHolidays","definitions","names","def","rawDate","shifted","a","checkIsHoliday","isoDate","findNextHoliday","from","isoFrom","holidays","next","createInvalidDate","isWeekend","checkIsBusinessDay","addBusinessDays","startDate","amount","remaining","direction","getBusinessDaysBetween","endDate","start","end","count","current","parseTime","timeStr","hours","minutes","getTimeInMinutes","getBusinessHoursBetween","businessHours","startH","startM","endH","endM","startDayMin","endDayMin","t1","t2","isNegative","totalMinutes","currentMin","periodEndMin","periodStartMin","addBusinessHours","amountInHours","remainingMinutes","min","availableMinutes","createHolidayManager","defaultLang","options","pt","getHolidays","isHoliday","getNextHoliday","isBusinessDay","businessDays","diffBusinessDays","diffBusinessHours"],"mappings":"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","file":"br.cjs","sourcesContent":["/**\n * Calculates Easter Sunday (Meeus/Jones/Butcher algorithm)\n * Valid for Gregorian calendar (1583+)\n */\nexport function getEasterSunday(year: number): Date {\n if (!Number.isInteger(year) || year < 1583) {\n return new Date(Number.NaN);\n }\n\n const a = year % 19;\n const b = Math.floor(year / 100);\n const c = year % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = (19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = (32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n\n return new Date(Date.UTC(year, month - 1, day));\n}\n","/**\n * Calculates the Nth weekday of a month\n * @param year - Year\n * @param month - Month (1-12)\n * @param weekday - Weekday (0=Sun, 1=Mon, ..., 6=Sat)\n * @param n - Occurrence (1=first, 2=second, -1=last)\n */\nexport function getNthWeekday(year: number, month: number, weekday: number, n: number): Date {\n if (\n !Number.isInteger(year) ||\n !Number.isInteger(month) ||\n month < 1 ||\n month > 12 ||\n !Number.isInteger(weekday) ||\n weekday < 0 ||\n weekday > 6 ||\n !Number.isInteger(n) ||\n n === 0\n ) {\n return new Date(Number.NaN);\n }\n\n const expectedMonth = month - 1;\n\n if (n > 0) {\n // From start of month\n const first = new Date(Date.UTC(year, month - 1, 1));\n const firstWeekday = first.getUTCDay();\n const diff = (weekday - firstWeekday + 7) % 7;\n const day = 1 + diff + (n - 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n } else {\n // From end of month (n = -1 = last)\n // month is 1-12. Date.UTC(year, month, 0) gives the last day of month 'month'\n const last = new Date(Date.UTC(year, month, 0));\n const lastWeekday = last.getUTCDay();\n const diff = (lastWeekday - weekday + 7) % 7;\n const day = last.getUTCDate() - diff + (n + 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n }\n}\n","import type { ShiftRule } from '../types';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\n/**\n * Applies a shift rule to a date\n * @returns { date: Date, shifted: boolean }\n */\nexport function applyShift(date: Date, rule: ShiftRule): { date: Date; shifted: boolean } {\n if (!isValidDate(date)) {\n return { date, shifted: false };\n }\n\n const day = date.getUTCDay(); // 0=Sun, 6=Sat\n\n if (rule === 'none') {\n return { date, shifted: false };\n }\n\n const result = new Date(date);\n\n switch (rule) {\n case 'emiliani':\n case 'nextMonday': {\n // If it's already Monday (1), do not move\n if (day === 1) {\n return { date, shifted: false };\n }\n // Move to next Monday\n // (8 - day) % 7 gives days until next Monday\n // Ex: Sun(0) -> (8-0)%7 = 1 (+1 day) -> Mon\n // Ex: Sat(6) -> (8-6)%7 = 2 (+2 days) -> Mon\n // Ex: Wed(3) -> (8-3)%7 = 5 (+5 days) -> Mon\n const daysToNextMonday = (8 - day) % 7;\n result.setUTCDate(date.getUTCDate() + daysToNextMonday);\n break;\n }\n\n case 'observedUS':\n // Only affects weekends\n if (day === 0) {\n // Sunday -> Monday (+1)\n result.setUTCDate(date.getUTCDate() + 1);\n } else if (day === 6) {\n // Saturday -> Friday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else {\n return { date, shifted: false };\n }\n break;\n\n case 'nearestMonday':\n // Argentina rule:\n // Tue/Wed -> Previous Monday\n // Thu/Fri -> Next Monday\n if (day === 2) {\n // Tuesday -> Monday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else if (day === 3) {\n // Wednesday -> Monday (-2)\n result.setUTCDate(date.getUTCDate() - 2);\n } else if (day === 4) {\n // Thursday -> Next Monday (+4)\n result.setUTCDate(date.getUTCDate() + 4);\n } else if (day === 5) {\n // Friday -> Next Monday (+3)\n result.setUTCDate(date.getUTCDate() + 3);\n } else {\n return { date, shifted: false };\n }\n break;\n\n default:\n return { date, shifted: false };\n }\n\n return { date: result, shifted: true };\n}\n","import type { HolidayDefinition, HolidayRule, Holiday } from './types';\nimport { getEasterSunday } from './algorithms/easter';\nimport { getNthWeekday } from './algorithms/nth-weekday';\nimport { applyShift } from './algorithms/shifts';\n\n/** Resolves a rule to a concrete date */\nfunction resolveRule(rule: HolidayRule, year: number): Date | null {\n switch (rule.type) {\n case 'fixed':\n return new Date(Date.UTC(year, rule.month - 1, rule.day));\n\n case 'nthWeekday':\n return getNthWeekday(year, rule.month, rule.weekday, rule.n);\n\n case 'easterRelative': {\n const easter = getEasterSunday(year);\n const result = new Date(easter);\n result.setUTCDate(easter.getUTCDate() + rule.offset);\n return result;\n }\n\n case 'custom':\n return rule.calc(year);\n }\n}\n\n/** Formats Date to ISO string (date only) */\nfunction toISODate(date: Date): string {\n try {\n return date.toISOString().split('T')[0];\n } catch {\n return '';\n }\n}\n\n/** Checks if a date is valid */\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && !Number.isNaN(date.getTime());\n}\n\n/** Generates holidays for a year */\nexport function resolveHolidays(\n definitions: HolidayDefinition[],\n year: number,\n names: Record<string, string> = {},\n): Holiday[] {\n if (typeof year !== 'number' || !Number.isInteger(year)) {\n return [];\n }\n\n return definitions\n .map((def) => {\n const rawDate = resolveRule(def.rule, year);\n if (!rawDate || !isValidDate(rawDate)) return null;\n\n const { date, shifted } = applyShift(rawDate, def.shift ?? 'none');\n if (!isValidDate(date)) return null;\n\n return {\n date: toISODate(date),\n key: def.key,\n name: names[def.key] ?? def.key,\n ...(shifted && { isShifted: true }),\n };\n })\n .filter((h): h is Holiday => h !== null)\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\n/** Checks if a date is a holiday */\nexport function checkIsHoliday(\n definitions: HolidayDefinition[],\n date: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(date)) return null;\n\n const year = date.getUTCFullYear();\n const isoDate = toISODate(date);\n if (!isoDate) return null;\n\n const holidays = resolveHolidays(definitions, year, names);\n return holidays.find((h) => h.date === isoDate) ?? null;\n}\n\n/** Gets the next holiday from a date */\nexport function findNextHoliday(\n definitions: HolidayDefinition[],\n from: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(from)) return null;\n\n const isoFrom = toISODate(from);\n if (!isoFrom) return null;\n\n const year = from.getUTCFullYear();\n\n // Search in current year\n let holidays = resolveHolidays(definitions, year, names);\n let next = holidays.find((h) => h.date >= isoFrom);\n\n // If none, search in next year\n if (!next) {\n holidays = resolveHolidays(definitions, year + 1, names);\n next = holidays[0];\n }\n\n return next ?? null;\n}\n","import type { HolidayDefinition } from './types';\nimport { checkIsHoliday } from './engine';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\nfunction createInvalidDate(): Date {\n return new Date(Number.NaN);\n}\n\n/**\n * Checks if a date is a weekend (Saturday or Sunday)\n * Uses UTC date to avoid timezone issues\n */\nexport function isWeekend(date: Date): boolean {\n const day = date.getUTCDay();\n return day === 0 || day === 6; // 0 = Sunday, 6 = Saturday\n}\n\n/**\n * Checks if a date is a business day (not weekend AND not holiday)\n */\nexport function checkIsBusinessDay(definitions: HolidayDefinition[], date: Date): boolean {\n if (!isValidDate(date)) return false;\n if (isWeekend(date)) return false;\n return checkIsHoliday(definitions, date) === null;\n}\n\n/**\n * Adds (or subtracts) business days to a date\n */\nexport function addBusinessDays(\n definitions: HolidayDefinition[],\n startDate: Date,\n amount: number,\n): Date {\n if (!isValidDate(startDate) || !Number.isFinite(amount)) {\n return createInvalidDate();\n }\n\n const result = new Date(startDate);\n let remaining = Math.abs(amount);\n const direction = amount >= 0 ? 1 : -1;\n\n while (remaining > 0) {\n result.setUTCDate(result.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, result)) {\n remaining--;\n }\n }\n\n return result;\n}\n\n/**\n * Calculates the number of business days between two dates\n * Returns the number of days to add to startDate to get endDate (can be negative)\n * If startDate and endDate are the same, returns 0\n */\nexport function getBusinessDaysBetween(\n definitions: HolidayDefinition[],\n startDate: Date,\n endDate: Date,\n): number {\n if (!isValidDate(startDate) || !isValidDate(endDate)) {\n return Number.NaN;\n }\n\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n // Reset hours to avoid issues with daylight saving time or partial days\n start.setUTCHours(0, 0, 0, 0);\n end.setUTCHours(0, 0, 0, 0);\n\n if (start.getTime() === end.getTime()) return 0;\n\n const direction = start < end ? 1 : -1;\n let count = 0;\n const current = new Date(start);\n\n // If direction is positive, we count days starting from start+1 until end\n // If direction is negative, we count days starting from start-1 until end\n\n while (current.getTime() !== end.getTime()) {\n current.setUTCDate(current.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, current)) {\n count += direction;\n }\n }\n\n return count;\n}\n\nfunction parseTime(timeStr: string): { h: number; m: number } {\n const [hours, minutes] = timeStr.split(':').map(Number);\n return { h: hours || 0, m: minutes || 0 };\n}\n\nfunction getTimeInMinutes(date: Date): number {\n return date.getUTCHours() * 60 + date.getUTCMinutes();\n}\n\n/**\n * Calculates the number of business hours between two dates\n */\nexport function getBusinessHoursBetween(\n definitions: HolidayDefinition[],\n startDate: Date,\n endDate: Date,\n businessHours: { start: string; end: string } = { start: '08:00', end: '17:00' },\n): number {\n if (!isValidDate(startDate) || !isValidDate(endDate)) {\n return Number.NaN;\n }\n\n const { h: startH, m: startM } = parseTime(businessHours.start);\n const { h: endH, m: endM } = parseTime(businessHours.end);\n const startDayMin = startH * 60 + startM;\n const endDayMin = endH * 60 + endM;\n\n if (startDayMin >= endDayMin) return 0; // Invalid business hours\n\n const t1 = startDate.getTime();\n const t2 = endDate.getTime();\n if (t1 === t2) return 0;\n\n const start = new Date(Math.min(t1, t2));\n const end = new Date(Math.max(t1, t2));\n const isNegative = t1 > t2;\n\n let totalMinutes = 0;\n const current = new Date(start);\n\n while (current.getTime() < end.getTime()) {\n if (checkIsBusinessDay(definitions, current)) {\n const currentMin = getTimeInMinutes(current);\n\n // If current date is the same day as end date\n const isEndDay =\n current.getUTCFullYear() === end.getUTCFullYear() &&\n current.getUTCMonth() === end.getUTCMonth() &&\n current.getUTCDate() === end.getUTCDate();\n\n const periodEndMin = isEndDay ? Math.min(getTimeInMinutes(end), endDayMin) : endDayMin;\n const periodStartMin = Math.max(currentMin, startDayMin);\n\n if (periodEndMin > periodStartMin) {\n totalMinutes += periodEndMin - periodStartMin;\n }\n }\n\n // Move to next day at 00:00\n current.setUTCDate(current.getUTCDate() + 1);\n current.setUTCHours(0, 0, 0, 0);\n }\n\n return isNegative ? -(totalMinutes / 60) : totalMinutes / 60;\n}\n\n/**\n * Adds business hours to a date\n */\nexport function addBusinessHours(\n definitions: HolidayDefinition[],\n startDate: Date,\n amountInHours: number,\n businessHours: { start: string; end: string } = { start: '08:00', end: '17:00' },\n): Date {\n if (!isValidDate(startDate) || !Number.isFinite(amountInHours)) {\n return createInvalidDate();\n }\n\n if (amountInHours === 0) return new Date(startDate);\n\n const { h: startH, m: startM } = parseTime(businessHours.start);\n const { h: endH, m: endM } = parseTime(businessHours.end);\n const startDayMin = startH * 60 + startM;\n const endDayMin = endH * 60 + endM;\n const minutesPerDay = endDayMin - startDayMin;\n\n if (minutesPerDay <= 0) return createInvalidDate();\n\n const isNegative = amountInHours < 0;\n let remainingMinutes = Math.abs(amountInHours) * 60;\n\n const current = new Date(startDate);\n\n // Snap to start or end of business hours if outside\n if (!checkIsBusinessDay(definitions, current)) {\n if (isNegative) {\n current.setUTCHours(endH, endM, 0, 0);\n } else {\n current.setUTCHours(startH, startM, 0, 0);\n }\n } else {\n const min = getTimeInMinutes(current);\n if (min < startDayMin) {\n if (isNegative) {\n // move to previous day end\n current.setUTCDate(current.getUTCDate() - 1);\n current.setUTCHours(endH, endM, 0, 0);\n } else {\n current.setUTCHours(startH, startM, 0, 0);\n }\n } else if (min > endDayMin) {\n if (isNegative) {\n current.setUTCHours(endH, endM, 0, 0);\n } else {\n // move to next day start\n current.setUTCDate(current.getUTCDate() + 1);\n current.setUTCHours(startH, startM, 0, 0);\n }\n }\n }\n\n while (remainingMinutes > 0) {\n if (!checkIsBusinessDay(definitions, current)) {\n current.setUTCDate(current.getUTCDate() + (isNegative ? -1 : 1));\n current.setUTCHours(isNegative ? endH : startH, isNegative ? endM : startM, 0, 0);\n continue;\n }\n\n const min = getTimeInMinutes(current);\n let availableMinutes = isNegative ? min - startDayMin : endDayMin - min;\n\n if (availableMinutes < 0) availableMinutes = 0;\n\n if (remainingMinutes <= availableMinutes) {\n if (isNegative) {\n current.setUTCMinutes(current.getUTCMinutes() - remainingMinutes);\n } else {\n current.setUTCMinutes(current.getUTCMinutes() + remainingMinutes);\n }\n remainingMinutes = 0;\n } else {\n remainingMinutes -= availableMinutes;\n current.setUTCDate(current.getUTCDate() + (isNegative ? -1 : 1));\n current.setUTCHours(isNegative ? endH : startH, isNegative ? endM : startM, 0, 0);\n }\n }\n\n return current;\n}\n","import type { HolidayDefinition, Holiday, HolidayNames } from './types.js';\nimport { resolveHolidays, checkIsHoliday, findNextHoliday } from './engine.js';\nimport {\n checkIsBusinessDay,\n addBusinessDays,\n getBusinessDaysBetween,\n addBusinessHours,\n getBusinessHoursBetween,\n} from './business.js';\n\nexport interface GetHolidaysOptions {\n lang?: HolidayNames;\n}\n\nexport function createHolidayManager(definitions: HolidayDefinition[], defaultLang: HolidayNames) {\n return {\n getHolidays: (year: number, options?: GetHolidaysOptions): Holiday[] => {\n const names = options?.lang ?? defaultLang;\n return resolveHolidays(definitions, year, names);\n },\n isHoliday: (date: Date, options?: GetHolidaysOptions): Holiday | null => {\n const names = options?.lang ?? defaultLang;\n return checkIsHoliday(definitions, date, names);\n },\n getNextHoliday: (from: Date = new Date(), options?: GetHolidaysOptions): Holiday | null => {\n const names = options?.lang ?? defaultLang;\n return findNextHoliday(definitions, from, names);\n },\n isBusinessDay: (date: Date): boolean => {\n return checkIsBusinessDay(definitions, date);\n },\n businessDays: (date: Date, amount: number): Date => {\n return addBusinessDays(definitions, date, amount);\n },\n diffBusinessDays: (startDate: Date, endDate: Date): number => {\n return getBusinessDaysBetween(definitions, startDate, endDate);\n },\n businessHours: (\n date: Date,\n amount: number,\n businessHours?: { start: string; end: string },\n ): Date => {\n return addBusinessHours(definitions, date, amount, businessHours);\n },\n diffBusinessHours: (\n startDate: Date,\n endDate: Date,\n businessHours?: { start: string; end: string },\n ): number => {\n return getBusinessHoursBetween(definitions, startDate, endDate, businessHours);\n },\n };\n}\n","import type { HolidayNames } from '../core/types';\n\nexport const pt: HolidayNames = {\n newYear: 'Ano Novo',\n epiphany: 'Dia de Reis',\n holyThursday: 'Quinta-feira Santa',\n goodFriday: 'Sexta-feira Santa',\n easterSunday: 'Domingo de Páscoa',\n laborDay: 'Dia do Trabalhador',\n ascension: 'Ascensão do Senhor',\n corpusChristi: 'Corpus Christi',\n christmas: 'Natal',\n christmasEve: 'Véspera de Natal',\n newYearsEve: 'Véspera de Ano Novo',\n allSaints: 'Dia de Todos os Santos',\n assumptionMary: 'Assunção de Nossa Senhora',\n immaculateConception: 'Imaculada Conceição',\n\n // Brasil\n carnivalMonday: 'Segunda-feira de Carnaval',\n carnivalTuesday: 'Terça-feira de Carnaval',\n tiradentesDay: 'Tiradentes',\n independenceDay: 'Independência do Brasil',\n ladyAparecida: 'Nossa Senhora Aparecida',\n allSouls: 'Finados',\n republicProclamation: 'Proclamação da República',\n blackConsciousness: 'Dia da Consciência Negra',\n};\n","import type { HolidayDefinition } from '../core/types';\nimport { createHolidayManager } from '../core/manager';\nimport { pt } from '../i18n/pt';\n\nconst definitions: HolidayDefinition[] = [\n { key: 'newYear', rule: { type: 'fixed', month: 1, day: 1 } },\n { key: 'carnivalMonday', rule: { type: 'easterRelative', offset: -48 } },\n { key: 'carnivalTuesday', rule: { type: 'easterRelative', offset: -47 } },\n { key: 'goodFriday', rule: { type: 'easterRelative', offset: -2 } },\n { key: 'tiradentesDay', rule: { type: 'fixed', month: 4, day: 21 } },\n { key: 'laborDay', rule: { type: 'fixed', month: 5, day: 1 } },\n { key: 'corpusChristi', rule: { type: 'easterRelative', offset: 60 } },\n { key: 'independenceDay', rule: { type: 'fixed', month: 9, day: 7 } },\n { key: 'ladyAparecida', rule: { type: 'fixed', month: 10, day: 12 } },\n { key: 'allSouls', rule: { type: 'fixed', month: 11, day: 2 } },\n { key: 'republicProclamation', rule: { type: 'fixed', month: 11, day: 15 } },\n { key: 'blackConsciousness', rule: { type: 'fixed', month: 11, day: 20 } },\n { key: 'christmas', rule: { type: 'fixed', month: 12, day: 25 } },\n];\n\nexport const {\n getHolidays,\n isHoliday,\n getNextHoliday,\n isBusinessDay,\n businessDays,\n diffBusinessDays,\n businessHours,\n diffBusinessHours,\n} = createHolidayManager(definitions, pt);\n"]}
@@ -1,2 +1,3 @@
1
1
  import '../core/types.cjs';
2
- export { G as GetHolidaysOptions, a as businessDays, d as diffBusinessDays, g as getHolidays, c as getNextHoliday, i as isBusinessDay, e as isHoliday } from '../br-Bxl7-z70.cjs';
2
+ import '../manager-cCTMxYzq.cjs';
3
+ export { a as businessDays, c as businessHours, d as diffBusinessDays, e as diffBusinessHours, g as getHolidays, f as getNextHoliday, i as isBusinessDay, h as isHoliday } from '../br-6mG4bT2v.cjs';
@@ -1,2 +1,3 @@
1
1
  import '../core/types.js';
2
- export { G as GetHolidaysOptions, a as businessDays, d as diffBusinessDays, g as getHolidays, c as getNextHoliday, i as isBusinessDay, e as isHoliday } from '../br-DyXv2cHh.js';
2
+ import '../manager-t1ZTM9nD.js';
3
+ export { a as businessDays, c as businessHours, d as diffBusinessDays, e as diffBusinessHours, g as getHolidays, f as getNextHoliday, i as isBusinessDay, h as isHoliday } from '../br-BZijEnzK.js';
@@ -1,2 +1,2 @@
1
- function b(e){if(!Number.isInteger(e)||e<1583)return new Date(Number.NaN);let t=e%19,a=Math.floor(e/100),n=e%100,i=Math.floor(a/4),o=a%4,r=Math.floor((a+8)/25),s=Math.floor((a-r+1)/3),l=(19*t+a-i-s+15)%30,u=Math.floor(n/4),k=n%4,h=(32+2*o+2*u-l-k)%7,T=Math.floor((t+11*l+22*h)/451),w=Math.floor((l+h-7*T+114)/31),S=(l+h-7*T+114)%31+1;return new Date(Date.UTC(e,w-1,S))}function C(e,t,a,n){if(!Number.isInteger(e)||!Number.isInteger(t)||t<1||t>12||!Number.isInteger(a)||a<0||a>6||!Number.isInteger(n)||n===0)return new Date(Number.NaN);let i=t-1;if(n>0){let r=new Date(Date.UTC(e,t-1,1)).getUTCDay(),l=1+(a-r+7)%7+(n-1)*7,u=new Date(Date.UTC(e,t-1,l));return u.getUTCMonth()===i?u:new Date(Number.NaN)}else {let o=new Date(Date.UTC(e,t,0)),s=(o.getUTCDay()-a+7)%7,l=o.getUTCDate()-s+(n+1)*7,u=new Date(Date.UTC(e,t-1,l));return u.getUTCMonth()===i?u:new Date(Number.NaN)}}function v(e){return e instanceof Date&&Number.isFinite(e.getTime())}function N(e,t){if(!v(e))return {date:e,shifted:false};let a=e.getUTCDay();if(t==="none")return {date:e,shifted:false};let n=new Date(e);switch(t){case "emiliani":case "nextMonday":{if(a===1)return {date:e,shifted:false};let i=(8-a)%7;n.setUTCDate(e.getUTCDate()+i);break}case "observedUS":if(a===0)n.setUTCDate(e.getUTCDate()+1);else if(a===6)n.setUTCDate(e.getUTCDate()-1);else return {date:e,shifted:false};break;case "nearestMonday":if(a===2)n.setUTCDate(e.getUTCDate()-1);else if(a===3)n.setUTCDate(e.getUTCDate()-2);else if(a===4)n.setUTCDate(e.getUTCDate()+4);else if(a===5)n.setUTCDate(e.getUTCDate()+3);else return {date:e,shifted:false};break;default:return {date:e,shifted:false}}return {date:n,shifted:true}}function M(e,t){switch(e.type){case "fixed":return new Date(Date.UTC(t,e.month-1,e.day));case "nthWeekday":return C(t,e.month,e.weekday,e.n);case "easterRelative":{let a=b(t),n=new Date(a);return n.setUTCDate(a.getUTCDate()+e.offset),n}case "custom":return e.calc(t)}}function g(e){try{return e.toISOString().split("T")[0]}catch{return ""}}function d(e){return e instanceof Date&&!Number.isNaN(e.getTime())}function f(e,t,a={}){return typeof t!="number"||!Number.isInteger(t)?[]:e.map(n=>{let i=M(n.rule,t);if(!i||!d(i))return null;let{date:o,shifted:r}=N(i,n.shift??"none");return d(o)?{date:g(o),key:n.key,name:a[n.key]??n.key,...r&&{isShifted:true}}:null}).filter(n=>n!==null).sort((n,i)=>n.date.localeCompare(i.date))}function y(e,t,a){if(!d(t))return null;let n=t.getUTCFullYear(),i=g(t);return i?f(e,n,a).find(r=>r.date===i)??null:null}function H(e,t,a){if(!d(t))return null;let n=g(t);if(!n)return null;let i=t.getUTCFullYear(),o=f(e,i,a),r=o.find(s=>s.date>=n);return r||(o=f(e,i+1,a),r=o[0]),r??null}function D(e){return e instanceof Date&&Number.isFinite(e.getTime())}function I(){return new Date(Number.NaN)}function R(e){let t=e.getUTCDay();return t===0||t===6}function p(e,t){return !D(t)||R(t)?false:y(e,t)===null}function U(e,t,a){if(!D(t)||!Number.isFinite(a))return I();let n=new Date(t),i=Math.abs(a),o=a>=0?1:-1;for(;i>0;)n.setUTCDate(n.getUTCDate()+o),p(e,n)&&i--;return n}function x(e,t,a){if(!D(t)||!D(a))return Number.NaN;let n=new Date(t),i=new Date(a);if(n.setUTCHours(0,0,0,0),i.setUTCHours(0,0,0,0),n.getTime()===i.getTime())return 0;let o=n<i?1:-1,r=0,s=new Date(n);for(;s.getTime()!==i.getTime();)s.setUTCDate(s.getUTCDate()+o),p(e,s)&&(r+=o);return r}var m={newYear:"Ano Novo",epiphany:"Dia de Reis",holyThursday:"Quinta-feira Santa",goodFriday:"Sexta-feira Santa",easterSunday:"Domingo de P\xE1scoa",laborDay:"Dia do Trabalhador",ascension:"Ascens\xE3o do Senhor",corpusChristi:"Corpus Christi",christmas:"Natal",christmasEve:"V\xE9spera de Natal",newYearsEve:"V\xE9spera de Ano Novo",allSaints:"Dia de Todos os Santos",assumptionMary:"Assun\xE7\xE3o de Nossa Senhora",immaculateConception:"Imaculada Concei\xE7\xE3o",carnivalMonday:"Segunda-feira de Carnaval",carnivalTuesday:"Ter\xE7a-feira de Carnaval",tiradentesDay:"Tiradentes",independenceDay:"Independ\xEAncia do Brasil",ladyAparecida:"Nossa Senhora Aparecida",allSouls:"Finados",republicProclamation:"Proclama\xE7\xE3o da Rep\xFAblica",blackConsciousness:"Dia da Consci\xEAncia Negra"};var c=[{key:"newYear",rule:{type:"fixed",month:1,day:1}},{key:"carnivalMonday",rule:{type:"easterRelative",offset:-48}},{key:"carnivalTuesday",rule:{type:"easterRelative",offset:-47}},{key:"goodFriday",rule:{type:"easterRelative",offset:-2}},{key:"tiradentesDay",rule:{type:"fixed",month:4,day:21}},{key:"laborDay",rule:{type:"fixed",month:5,day:1}},{key:"corpusChristi",rule:{type:"easterRelative",offset:60}},{key:"independenceDay",rule:{type:"fixed",month:9,day:7}},{key:"ladyAparecida",rule:{type:"fixed",month:10,day:12}},{key:"allSouls",rule:{type:"fixed",month:11,day:2}},{key:"republicProclamation",rule:{type:"fixed",month:11,day:15}},{key:"blackConsciousness",rule:{type:"fixed",month:11,day:20}},{key:"christmas",rule:{type:"fixed",month:12,day:25}}];function z(e,t){let a=t?.lang??m;return f(c,e,a)}function J(e,t){let a=t?.lang??m;return y(c,e,a)}function K(e=new Date,t){let a=t?.lang??m;return H(c,e,a)}function L(e){return p(c,e)}function X(e,t){return U(c,e,t)}function Z(e,t){return x(c,e,t)}export{X as businessDays,Z as diffBusinessDays,z as getHolidays,K as getNextHoliday,L as isBusinessDay,J as isHoliday};//# sourceMappingURL=br.js.map
1
+ function k(e){if(!Number.isInteger(e)||e<1583)return new Date(Number.NaN);let a=e%19,n=Math.floor(e/100),t=e%100,s=Math.floor(n/4),r=n%4,o=Math.floor((n+8)/25),u=Math.floor((n-o+1)/3),c=(19*a+n-s-u+15)%30,d=Math.floor(t/4),g=t%4,l=(32+2*r+2*d-c-g)%7,f=Math.floor((a+11*c+22*l)/451),i=Math.floor((c+l-7*f+114)/31),y=(c+l-7*f+114)%31+1;return new Date(Date.UTC(e,i-1,y))}function S(e,a,n,t){if(!Number.isInteger(e)||!Number.isInteger(a)||a<1||a>12||!Number.isInteger(n)||n<0||n>6||!Number.isInteger(t)||t===0)return new Date(Number.NaN);let s=a-1;if(t>0){let o=new Date(Date.UTC(e,a-1,1)).getUTCDay(),c=1+(n-o+7)%7+(t-1)*7,d=new Date(Date.UTC(e,a-1,c));return d.getUTCMonth()===s?d:new Date(Number.NaN)}else {let r=new Date(Date.UTC(e,a,0)),u=(r.getUTCDay()-n+7)%7,c=r.getUTCDate()-u+(t+1)*7,d=new Date(Date.UTC(e,a-1,c));return d.getUTCMonth()===s?d:new Date(Number.NaN)}}function O(e){return e instanceof Date&&Number.isFinite(e.getTime())}function v(e,a){if(!O(e))return {date:e,shifted:false};let n=e.getUTCDay();if(a==="none")return {date:e,shifted:false};let t=new Date(e);switch(a){case "emiliani":case "nextMonday":{if(n===1)return {date:e,shifted:false};let s=(8-n)%7;t.setUTCDate(e.getUTCDate()+s);break}case "observedUS":if(n===0)t.setUTCDate(e.getUTCDate()+1);else if(n===6)t.setUTCDate(e.getUTCDate()-1);else return {date:e,shifted:false};break;case "nearestMonday":if(n===2)t.setUTCDate(e.getUTCDate()-1);else if(n===3)t.setUTCDate(e.getUTCDate()-2);else if(n===4)t.setUTCDate(e.getUTCDate()+4);else if(n===5)t.setUTCDate(e.getUTCDate()+3);else return {date:e,shifted:false};break;default:return {date:e,shifted:false}}return {date:t,shifted:true}}function P(e,a){switch(e.type){case "fixed":return new Date(Date.UTC(a,e.month-1,e.day));case "nthWeekday":return S(a,e.month,e.weekday,e.n);case "easterRelative":{let n=k(a),t=new Date(n);return t.setUTCDate(n.getUTCDate()+e.offset),t}case "custom":return e.calc(a)}}function N(e){try{return e.toISOString().split("T")[0]}catch{return ""}}function h(e){return e instanceof Date&&!Number.isNaN(e.getTime())}function C(e,a,n={}){return typeof a!="number"||!Number.isInteger(a)?[]:e.map(t=>{let s=P(t.rule,a);if(!s||!h(s))return null;let{date:r,shifted:o}=v(s,t.shift??"none");return h(r)?{date:N(r),key:t.key,name:n[t.key]??t.key,...o&&{isShifted:true}}:null}).filter(t=>t!==null).sort((t,s)=>t.date.localeCompare(s.date))}function U(e,a,n){if(!h(a))return null;let t=a.getUTCFullYear(),s=N(a);return s?C(e,t,n).find(o=>o.date===s)??null:null}function B(e,a,n){if(!h(a))return null;let t=N(a);if(!t)return null;let s=a.getUTCFullYear(),r=C(e,s,n),o=r.find(u=>u.date>=t);return o||(r=C(e,s+1,n),o=r[0]),o??null}function p(e){return e instanceof Date&&Number.isFinite(e.getTime())}function M(){return new Date(Number.NaN)}function V(e){let a=e.getUTCDay();return a===0||a===6}function T(e,a){return !p(a)||V(a)?false:U(e,a)===null}function R(e,a,n){if(!p(a)||!Number.isFinite(n))return M();let t=new Date(a),s=Math.abs(n),r=n>=0?1:-1;for(;s>0;)t.setUTCDate(t.getUTCDate()+r),T(e,t)&&s--;return t}function I(e,a,n){if(!p(a)||!p(n))return Number.NaN;let t=new Date(a),s=new Date(n);if(t.setUTCHours(0,0,0,0),s.setUTCHours(0,0,0,0),t.getTime()===s.getTime())return 0;let r=t<s?1:-1,o=0,u=new Date(t);for(;u.getTime()!==s.getTime();)u.setUTCDate(u.getUTCDate()+r),T(e,u)&&(o+=r);return o}function H(e){let[a,n]=e.split(":").map(Number);return {h:a||0,m:n||0}}function b(e){return e.getUTCHours()*60+e.getUTCMinutes()}function F(e,a,n,t={start:"08:00",end:"17:00"}){if(!p(a)||!p(n))return Number.NaN;let{h:s,m:r}=H(t.start),{h:o,m:u}=H(t.end),c=s*60+r,d=o*60+u;if(c>=d)return 0;let g=a.getTime(),l=n.getTime();if(g===l)return 0;let f=new Date(Math.min(g,l)),i=new Date(Math.max(g,l)),y=g>l,m=0,D=new Date(f);for(;D.getTime()<i.getTime();){if(T(e,D)){let Y=b(D),x=D.getUTCFullYear()===i.getUTCFullYear()&&D.getUTCMonth()===i.getUTCMonth()&&D.getUTCDate()===i.getUTCDate()?Math.min(b(i),d):d,w=Math.max(Y,c);x>w&&(m+=x-w);}D.setUTCDate(D.getUTCDate()+1),D.setUTCHours(0,0,0,0);}return y?-(m/60):m/60}function A(e,a,n,t={start:"08:00",end:"17:00"}){if(!p(a)||!Number.isFinite(n))return M();if(n===0)return new Date(a);let{h:s,m:r}=H(t.start),{h:o,m:u}=H(t.end),c=s*60+r,d=o*60+u;if(d-c<=0)return M();let l=n<0,f=Math.abs(n)*60,i=new Date(a);if(!T(e,i))l?i.setUTCHours(o,u,0,0):i.setUTCHours(s,r,0,0);else {let y=b(i);y<c?l?(i.setUTCDate(i.getUTCDate()-1),i.setUTCHours(o,u,0,0)):i.setUTCHours(s,r,0,0):y>d&&(l?i.setUTCHours(o,u,0,0):(i.setUTCDate(i.getUTCDate()+1),i.setUTCHours(s,r,0,0)));}for(;f>0;){if(!T(e,i)){i.setUTCDate(i.getUTCDate()+(l?-1:1)),i.setUTCHours(l?o:s,l?u:r,0,0);continue}let y=b(i),m=l?y-c:d-y;m<0&&(m=0),f<=m?(l?i.setUTCMinutes(i.getUTCMinutes()-f):i.setUTCMinutes(i.getUTCMinutes()+f),f=0):(f-=m,i.setUTCDate(i.getUTCDate()+(l?-1:1)),i.setUTCHours(l?o:s,l?u:r,0,0));}return i}function E(e,a){return {getHolidays:(n,t)=>{let s=t?.lang??a;return C(e,n,s)},isHoliday:(n,t)=>{let s=t?.lang??a;return U(e,n,s)},getNextHoliday:(n=new Date,t)=>{let s=t?.lang??a;return B(e,n,s)},isBusinessDay:n=>T(e,n),businessDays:(n,t)=>R(e,n,t),diffBusinessDays:(n,t)=>I(e,n,t),businessHours:(n,t,s)=>A(e,n,t,s),diffBusinessHours:(n,t,s)=>F(e,n,t,s)}}var W={newYear:"Ano Novo",epiphany:"Dia de Reis",holyThursday:"Quinta-feira Santa",goodFriday:"Sexta-feira Santa",easterSunday:"Domingo de P\xE1scoa",laborDay:"Dia do Trabalhador",ascension:"Ascens\xE3o do Senhor",corpusChristi:"Corpus Christi",christmas:"Natal",christmasEve:"V\xE9spera de Natal",newYearsEve:"V\xE9spera de Ano Novo",allSaints:"Dia de Todos os Santos",assumptionMary:"Assun\xE7\xE3o de Nossa Senhora",immaculateConception:"Imaculada Concei\xE7\xE3o",carnivalMonday:"Segunda-feira de Carnaval",carnivalTuesday:"Ter\xE7a-feira de Carnaval",tiradentesDay:"Tiradentes",independenceDay:"Independ\xEAncia do Brasil",ladyAparecida:"Nossa Senhora Aparecida",allSouls:"Finados",republicProclamation:"Proclama\xE7\xE3o da Rep\xFAblica",blackConsciousness:"Dia da Consci\xEAncia Negra"};var G=[{key:"newYear",rule:{type:"fixed",month:1,day:1}},{key:"carnivalMonday",rule:{type:"easterRelative",offset:-48}},{key:"carnivalTuesday",rule:{type:"easterRelative",offset:-47}},{key:"goodFriday",rule:{type:"easterRelative",offset:-2}},{key:"tiradentesDay",rule:{type:"fixed",month:4,day:21}},{key:"laborDay",rule:{type:"fixed",month:5,day:1}},{key:"corpusChristi",rule:{type:"easterRelative",offset:60}},{key:"independenceDay",rule:{type:"fixed",month:9,day:7}},{key:"ladyAparecida",rule:{type:"fixed",month:10,day:12}},{key:"allSouls",rule:{type:"fixed",month:11,day:2}},{key:"republicProclamation",rule:{type:"fixed",month:11,day:15}},{key:"blackConsciousness",rule:{type:"fixed",month:11,day:20}},{key:"christmas",rule:{type:"fixed",month:12,day:25}}],{getHolidays:ie,isHoliday:re,getNextHoliday:oe,isBusinessDay:ue,businessDays:le,diffBusinessDays:ce,businessHours:de,diffBusinessHours:fe}=E(G,W);export{le as businessDays,de as businessHours,ce as diffBusinessDays,fe as diffBusinessHours,ie as getHolidays,oe as getNextHoliday,ue as isBusinessDay,re as isHoliday};//# sourceMappingURL=br.js.map
2
2
  //# sourceMappingURL=br.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/algorithms/easter.ts","../../src/core/algorithms/nth-weekday.ts","../../src/core/algorithms/shifts.ts","../../src/core/engine.ts","../../src/core/business.ts","../../src/i18n/pt.ts","../../src/locales/br.ts"],"names":["getEasterSunday","year","a","b","c","d","e","f","g","h","i","l","m","month","day","getNthWeekday","weekday","expectedMonth","firstWeekday","result","last","diff","isValidDate","date","applyShift","rule","daysToNextMonday","resolveRule","easter","toISODate","resolveHolidays","definitions","names","def","rawDate","shifted","checkIsHoliday","isoDate","findNextHoliday","from","isoFrom","holidays","next","createInvalidDate","isWeekend","checkIsBusinessDay","addBusinessDays","startDate","amount","remaining","direction","getBusinessDaysBetween","endDate","start","end","count","current","pt","getHolidays","options","isHoliday","getNextHoliday","isBusinessDay","businessDays","diffBusinessDays"],"mappings":"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","file":"br.js","sourcesContent":["/**\n * Calculates Easter Sunday (Meeus/Jones/Butcher algorithm)\n * Valid for Gregorian calendar (1583+)\n */\nexport function getEasterSunday(year: number): Date {\n if (!Number.isInteger(year) || year < 1583) {\n return new Date(Number.NaN);\n }\n\n const a = year % 19;\n const b = Math.floor(year / 100);\n const c = year % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = (19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = (32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n\n return new Date(Date.UTC(year, month - 1, day));\n}\n","/**\n * Calculates the Nth weekday of a month\n * @param year - Year\n * @param month - Month (1-12)\n * @param weekday - Weekday (0=Sun, 1=Mon, ..., 6=Sat)\n * @param n - Occurrence (1=first, 2=second, -1=last)\n */\nexport function getNthWeekday(year: number, month: number, weekday: number, n: number): Date {\n if (\n !Number.isInteger(year) ||\n !Number.isInteger(month) ||\n month < 1 ||\n month > 12 ||\n !Number.isInteger(weekday) ||\n weekday < 0 ||\n weekday > 6 ||\n !Number.isInteger(n) ||\n n === 0\n ) {\n return new Date(Number.NaN);\n }\n\n const expectedMonth = month - 1;\n\n if (n > 0) {\n // From start of month\n const first = new Date(Date.UTC(year, month - 1, 1));\n const firstWeekday = first.getUTCDay();\n const diff = (weekday - firstWeekday + 7) % 7;\n const day = 1 + diff + (n - 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n } else {\n // From end of month (n = -1 = last)\n // month is 1-12. Date.UTC(year, month, 0) gives the last day of month 'month'\n const last = new Date(Date.UTC(year, month, 0));\n const lastWeekday = last.getUTCDay();\n const diff = (lastWeekday - weekday + 7) % 7;\n const day = last.getUTCDate() - diff + (n + 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n }\n}\n","import type { ShiftRule } from '../types';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\n/**\n * Applies a shift rule to a date\n * @returns { date: Date, shifted: boolean }\n */\nexport function applyShift(date: Date, rule: ShiftRule): { date: Date; shifted: boolean } {\n if (!isValidDate(date)) {\n return { date, shifted: false };\n }\n\n const day = date.getUTCDay(); // 0=Sun, 6=Sat\n\n if (rule === 'none') {\n return { date, shifted: false };\n }\n\n const result = new Date(date);\n\n switch (rule) {\n case 'emiliani':\n case 'nextMonday': {\n // If it's already Monday (1), do not move\n if (day === 1) {\n return { date, shifted: false };\n }\n // Move to next Monday\n // (8 - day) % 7 gives days until next Monday\n // Ex: Sun(0) -> (8-0)%7 = 1 (+1 day) -> Mon\n // Ex: Sat(6) -> (8-6)%7 = 2 (+2 days) -> Mon\n // Ex: Wed(3) -> (8-3)%7 = 5 (+5 days) -> Mon\n const daysToNextMonday = (8 - day) % 7;\n result.setUTCDate(date.getUTCDate() + daysToNextMonday);\n break;\n }\n\n case 'observedUS':\n // Only affects weekends\n if (day === 0) {\n // Sunday -> Monday (+1)\n result.setUTCDate(date.getUTCDate() + 1);\n } else if (day === 6) {\n // Saturday -> Friday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else {\n return { date, shifted: false };\n }\n break;\n\n case 'nearestMonday':\n // Argentina rule:\n // Tue/Wed -> Previous Monday\n // Thu/Fri -> Next Monday\n if (day === 2) {\n // Tuesday -> Monday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else if (day === 3) {\n // Wednesday -> Monday (-2)\n result.setUTCDate(date.getUTCDate() - 2);\n } else if (day === 4) {\n // Thursday -> Next Monday (+4)\n result.setUTCDate(date.getUTCDate() + 4);\n } else if (day === 5) {\n // Friday -> Next Monday (+3)\n result.setUTCDate(date.getUTCDate() + 3);\n } else {\n return { date, shifted: false };\n }\n break;\n\n default:\n return { date, shifted: false };\n }\n\n return { date: result, shifted: true };\n}\n","import type { HolidayDefinition, HolidayRule, Holiday } from './types';\nimport { getEasterSunday } from './algorithms/easter';\nimport { getNthWeekday } from './algorithms/nth-weekday';\nimport { applyShift } from './algorithms/shifts';\n\n/** Resolves a rule to a concrete date */\nfunction resolveRule(rule: HolidayRule, year: number): Date | null {\n switch (rule.type) {\n case 'fixed':\n return new Date(Date.UTC(year, rule.month - 1, rule.day));\n\n case 'nthWeekday':\n return getNthWeekday(year, rule.month, rule.weekday, rule.n);\n\n case 'easterRelative': {\n const easter = getEasterSunday(year);\n const result = new Date(easter);\n result.setUTCDate(easter.getUTCDate() + rule.offset);\n return result;\n }\n\n case 'custom':\n return rule.calc(year);\n }\n}\n\n/** Formats Date to ISO string (date only) */\nfunction toISODate(date: Date): string {\n try {\n return date.toISOString().split('T')[0];\n } catch {\n return '';\n }\n}\n\n/** Checks if a date is valid */\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && !Number.isNaN(date.getTime());\n}\n\n/** Generates holidays for a year */\nexport function resolveHolidays(\n definitions: HolidayDefinition[],\n year: number,\n names: Record<string, string> = {},\n): Holiday[] {\n if (typeof year !== 'number' || !Number.isInteger(year)) {\n return [];\n }\n\n return definitions\n .map((def) => {\n const rawDate = resolveRule(def.rule, year);\n if (!rawDate || !isValidDate(rawDate)) return null;\n\n const { date, shifted } = applyShift(rawDate, def.shift ?? 'none');\n if (!isValidDate(date)) return null;\n\n return {\n date: toISODate(date),\n key: def.key,\n name: names[def.key] ?? def.key,\n ...(shifted && { isShifted: true }),\n };\n })\n .filter((h): h is Holiday => h !== null)\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\n/** Checks if a date is a holiday */\nexport function checkIsHoliday(\n definitions: HolidayDefinition[],\n date: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(date)) return null;\n\n const year = date.getUTCFullYear();\n const isoDate = toISODate(date);\n if (!isoDate) return null;\n\n const holidays = resolveHolidays(definitions, year, names);\n return holidays.find((h) => h.date === isoDate) ?? null;\n}\n\n/** Gets the next holiday from a date */\nexport function findNextHoliday(\n definitions: HolidayDefinition[],\n from: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(from)) return null;\n\n const isoFrom = toISODate(from);\n if (!isoFrom) return null;\n\n const year = from.getUTCFullYear();\n\n // Search in current year\n let holidays = resolveHolidays(definitions, year, names);\n let next = holidays.find((h) => h.date >= isoFrom);\n\n // If none, search in next year\n if (!next) {\n holidays = resolveHolidays(definitions, year + 1, names);\n next = holidays[0];\n }\n\n return next ?? null;\n}\n","import type { HolidayDefinition } from './types';\nimport { checkIsHoliday } from './engine';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\nfunction createInvalidDate(): Date {\n return new Date(Number.NaN);\n}\n\n/**\n * Checks if a date is a weekend (Saturday or Sunday)\n * Uses UTC date to avoid timezone issues\n */\nexport function isWeekend(date: Date): boolean {\n const day = date.getUTCDay();\n return day === 0 || day === 6; // 0 = Sunday, 6 = Saturday\n}\n\n/**\n * Checks if a date is a business day (not weekend AND not holiday)\n */\nexport function checkIsBusinessDay(definitions: HolidayDefinition[], date: Date): boolean {\n if (!isValidDate(date)) return false;\n if (isWeekend(date)) return false;\n return checkIsHoliday(definitions, date) === null;\n}\n\n/**\n * Adds (or subtracts) business days to a date\n */\nexport function addBusinessDays(\n definitions: HolidayDefinition[],\n startDate: Date,\n amount: number,\n): Date {\n if (!isValidDate(startDate) || !Number.isFinite(amount)) {\n return createInvalidDate();\n }\n\n const result = new Date(startDate);\n let remaining = Math.abs(amount);\n const direction = amount >= 0 ? 1 : -1;\n\n while (remaining > 0) {\n result.setUTCDate(result.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, result)) {\n remaining--;\n }\n }\n\n return result;\n}\n\n/**\n * Calculates the number of business days between two dates\n * Returns the number of days to add to startDate to get endDate (can be negative)\n * If startDate and endDate are the same, returns 0\n */\nexport function getBusinessDaysBetween(\n definitions: HolidayDefinition[],\n startDate: Date,\n endDate: Date,\n): number {\n if (!isValidDate(startDate) || !isValidDate(endDate)) {\n return Number.NaN;\n }\n\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n // Reset hours to avoid issues with daylight saving time or partial days\n start.setUTCHours(0, 0, 0, 0);\n end.setUTCHours(0, 0, 0, 0);\n\n if (start.getTime() === end.getTime()) return 0;\n\n const direction = start < end ? 1 : -1;\n let count = 0;\n const current = new Date(start);\n\n // If direction is positive, we count days starting from start+1 until end\n // If direction is negative, we count days starting from start-1 until end\n\n while (current.getTime() !== end.getTime()) {\n current.setUTCDate(current.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, current)) {\n count += direction;\n }\n }\n\n return count;\n}\n","import type { HolidayNames } from '../core/types';\n\nexport const pt: HolidayNames = {\n newYear: 'Ano Novo',\n epiphany: 'Dia de Reis',\n holyThursday: 'Quinta-feira Santa',\n goodFriday: 'Sexta-feira Santa',\n easterSunday: 'Domingo de Páscoa',\n laborDay: 'Dia do Trabalhador',\n ascension: 'Ascensão do Senhor',\n corpusChristi: 'Corpus Christi',\n christmas: 'Natal',\n christmasEve: 'Véspera de Natal',\n newYearsEve: 'Véspera de Ano Novo',\n allSaints: 'Dia de Todos os Santos',\n assumptionMary: 'Assunção de Nossa Senhora',\n immaculateConception: 'Imaculada Conceição',\n\n // Brasil\n carnivalMonday: 'Segunda-feira de Carnaval',\n carnivalTuesday: 'Terça-feira de Carnaval',\n tiradentesDay: 'Tiradentes',\n independenceDay: 'Independência do Brasil',\n ladyAparecida: 'Nossa Senhora Aparecida',\n allSouls: 'Finados',\n republicProclamation: 'Proclamação da República',\n blackConsciousness: 'Dia da Consciência Negra',\n};\n","import type { HolidayDefinition, Holiday, HolidayNames } from '../core/types';\nimport { resolveHolidays, checkIsHoliday, findNextHoliday } from '../core/engine';\nimport { checkIsBusinessDay, addBusinessDays, getBusinessDaysBetween } from '../core/business';\nimport { pt } from '../i18n/pt';\n\nconst definitions: HolidayDefinition[] = [\n { key: 'newYear', rule: { type: 'fixed', month: 1, day: 1 } },\n { key: 'carnivalMonday', rule: { type: 'easterRelative', offset: -48 } },\n { key: 'carnivalTuesday', rule: { type: 'easterRelative', offset: -47 } },\n { key: 'goodFriday', rule: { type: 'easterRelative', offset: -2 } },\n { key: 'tiradentesDay', rule: { type: 'fixed', month: 4, day: 21 } },\n { key: 'laborDay', rule: { type: 'fixed', month: 5, day: 1 } },\n { key: 'corpusChristi', rule: { type: 'easterRelative', offset: 60 } },\n { key: 'independenceDay', rule: { type: 'fixed', month: 9, day: 7 } },\n { key: 'ladyAparecida', rule: { type: 'fixed', month: 10, day: 12 } },\n { key: 'allSouls', rule: { type: 'fixed', month: 11, day: 2 } },\n { key: 'republicProclamation', rule: { type: 'fixed', month: 11, day: 15 } },\n { key: 'blackConsciousness', rule: { type: 'fixed', month: 11, day: 20 } },\n { key: 'christmas', rule: { type: 'fixed', month: 12, day: 25 } },\n];\n\nexport interface GetHolidaysOptions {\n lang?: HolidayNames;\n}\n\nexport function getHolidays(year: number, options?: GetHolidaysOptions): Holiday[] {\n const names = options?.lang ?? pt;\n return resolveHolidays(definitions, year, names);\n}\n\nexport function isHoliday(date: Date, options?: GetHolidaysOptions): Holiday | null {\n const names = options?.lang ?? pt;\n return checkIsHoliday(definitions, date, names);\n}\n\nexport function getNextHoliday(\n from: Date = new Date(),\n options?: GetHolidaysOptions,\n): Holiday | null {\n const names = options?.lang ?? pt;\n return findNextHoliday(definitions, from, names);\n}\n\nexport function isBusinessDay(date: Date): boolean {\n return checkIsBusinessDay(definitions, date);\n}\n\nexport function businessDays(date: Date, amount: number): Date {\n return addBusinessDays(definitions, date, amount);\n}\n\nexport function diffBusinessDays(startDate: Date, endDate: Date): number {\n return getBusinessDaysBetween(definitions, startDate, endDate);\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/algorithms/easter.ts","../../src/core/algorithms/nth-weekday.ts","../../src/core/algorithms/shifts.ts","../../src/core/engine.ts","../../src/core/business.ts","../../src/core/manager.ts","../../src/i18n/pt.ts","../../src/locales/br.ts"],"names":["getEasterSunday","year","b","c","d","e","f","g","h","i","k","m","month","day","getNthWeekday","weekday","n","expectedMonth","firstWeekday","result","last","diff","isValidDate","date","applyShift","rule","daysToNextMonday","resolveRule","easter","toISODate","resolveHolidays","definitions","names","def","rawDate","shifted","a","checkIsHoliday","isoDate","findNextHoliday","from","isoFrom","holidays","next","createInvalidDate","isWeekend","checkIsBusinessDay","addBusinessDays","startDate","amount","remaining","direction","getBusinessDaysBetween","endDate","start","end","count","current","parseTime","timeStr","hours","minutes","getTimeInMinutes","getBusinessHoursBetween","businessHours","startH","startM","endH","endM","startDayMin","endDayMin","t1","t2","isNegative","totalMinutes","currentMin","periodEndMin","periodStartMin","addBusinessHours","amountInHours","remainingMinutes","min","availableMinutes","createHolidayManager","defaultLang","options","pt","getHolidays","isHoliday","getNextHoliday","isBusinessDay","businessDays","diffBusinessDays","diffBusinessHours"],"mappings":"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","file":"br.js","sourcesContent":["/**\n * Calculates Easter Sunday (Meeus/Jones/Butcher algorithm)\n * Valid for Gregorian calendar (1583+)\n */\nexport function getEasterSunday(year: number): Date {\n if (!Number.isInteger(year) || year < 1583) {\n return new Date(Number.NaN);\n }\n\n const a = year % 19;\n const b = Math.floor(year / 100);\n const c = year % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = (19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = (32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n\n return new Date(Date.UTC(year, month - 1, day));\n}\n","/**\n * Calculates the Nth weekday of a month\n * @param year - Year\n * @param month - Month (1-12)\n * @param weekday - Weekday (0=Sun, 1=Mon, ..., 6=Sat)\n * @param n - Occurrence (1=first, 2=second, -1=last)\n */\nexport function getNthWeekday(year: number, month: number, weekday: number, n: number): Date {\n if (\n !Number.isInteger(year) ||\n !Number.isInteger(month) ||\n month < 1 ||\n month > 12 ||\n !Number.isInteger(weekday) ||\n weekday < 0 ||\n weekday > 6 ||\n !Number.isInteger(n) ||\n n === 0\n ) {\n return new Date(Number.NaN);\n }\n\n const expectedMonth = month - 1;\n\n if (n > 0) {\n // From start of month\n const first = new Date(Date.UTC(year, month - 1, 1));\n const firstWeekday = first.getUTCDay();\n const diff = (weekday - firstWeekday + 7) % 7;\n const day = 1 + diff + (n - 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n } else {\n // From end of month (n = -1 = last)\n // month is 1-12. Date.UTC(year, month, 0) gives the last day of month 'month'\n const last = new Date(Date.UTC(year, month, 0));\n const lastWeekday = last.getUTCDay();\n const diff = (lastWeekday - weekday + 7) % 7;\n const day = last.getUTCDate() - diff + (n + 1) * 7;\n const result = new Date(Date.UTC(year, month - 1, day));\n return result.getUTCMonth() === expectedMonth ? result : new Date(Number.NaN);\n }\n}\n","import type { ShiftRule } from '../types';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\n/**\n * Applies a shift rule to a date\n * @returns { date: Date, shifted: boolean }\n */\nexport function applyShift(date: Date, rule: ShiftRule): { date: Date; shifted: boolean } {\n if (!isValidDate(date)) {\n return { date, shifted: false };\n }\n\n const day = date.getUTCDay(); // 0=Sun, 6=Sat\n\n if (rule === 'none') {\n return { date, shifted: false };\n }\n\n const result = new Date(date);\n\n switch (rule) {\n case 'emiliani':\n case 'nextMonday': {\n // If it's already Monday (1), do not move\n if (day === 1) {\n return { date, shifted: false };\n }\n // Move to next Monday\n // (8 - day) % 7 gives days until next Monday\n // Ex: Sun(0) -> (8-0)%7 = 1 (+1 day) -> Mon\n // Ex: Sat(6) -> (8-6)%7 = 2 (+2 days) -> Mon\n // Ex: Wed(3) -> (8-3)%7 = 5 (+5 days) -> Mon\n const daysToNextMonday = (8 - day) % 7;\n result.setUTCDate(date.getUTCDate() + daysToNextMonday);\n break;\n }\n\n case 'observedUS':\n // Only affects weekends\n if (day === 0) {\n // Sunday -> Monday (+1)\n result.setUTCDate(date.getUTCDate() + 1);\n } else if (day === 6) {\n // Saturday -> Friday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else {\n return { date, shifted: false };\n }\n break;\n\n case 'nearestMonday':\n // Argentina rule:\n // Tue/Wed -> Previous Monday\n // Thu/Fri -> Next Monday\n if (day === 2) {\n // Tuesday -> Monday (-1)\n result.setUTCDate(date.getUTCDate() - 1);\n } else if (day === 3) {\n // Wednesday -> Monday (-2)\n result.setUTCDate(date.getUTCDate() - 2);\n } else if (day === 4) {\n // Thursday -> Next Monday (+4)\n result.setUTCDate(date.getUTCDate() + 4);\n } else if (day === 5) {\n // Friday -> Next Monday (+3)\n result.setUTCDate(date.getUTCDate() + 3);\n } else {\n return { date, shifted: false };\n }\n break;\n\n default:\n return { date, shifted: false };\n }\n\n return { date: result, shifted: true };\n}\n","import type { HolidayDefinition, HolidayRule, Holiday } from './types';\nimport { getEasterSunday } from './algorithms/easter';\nimport { getNthWeekday } from './algorithms/nth-weekday';\nimport { applyShift } from './algorithms/shifts';\n\n/** Resolves a rule to a concrete date */\nfunction resolveRule(rule: HolidayRule, year: number): Date | null {\n switch (rule.type) {\n case 'fixed':\n return new Date(Date.UTC(year, rule.month - 1, rule.day));\n\n case 'nthWeekday':\n return getNthWeekday(year, rule.month, rule.weekday, rule.n);\n\n case 'easterRelative': {\n const easter = getEasterSunday(year);\n const result = new Date(easter);\n result.setUTCDate(easter.getUTCDate() + rule.offset);\n return result;\n }\n\n case 'custom':\n return rule.calc(year);\n }\n}\n\n/** Formats Date to ISO string (date only) */\nfunction toISODate(date: Date): string {\n try {\n return date.toISOString().split('T')[0];\n } catch {\n return '';\n }\n}\n\n/** Checks if a date is valid */\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && !Number.isNaN(date.getTime());\n}\n\n/** Generates holidays for a year */\nexport function resolveHolidays(\n definitions: HolidayDefinition[],\n year: number,\n names: Record<string, string> = {},\n): Holiday[] {\n if (typeof year !== 'number' || !Number.isInteger(year)) {\n return [];\n }\n\n return definitions\n .map((def) => {\n const rawDate = resolveRule(def.rule, year);\n if (!rawDate || !isValidDate(rawDate)) return null;\n\n const { date, shifted } = applyShift(rawDate, def.shift ?? 'none');\n if (!isValidDate(date)) return null;\n\n return {\n date: toISODate(date),\n key: def.key,\n name: names[def.key] ?? def.key,\n ...(shifted && { isShifted: true }),\n };\n })\n .filter((h): h is Holiday => h !== null)\n .sort((a, b) => a.date.localeCompare(b.date));\n}\n\n/** Checks if a date is a holiday */\nexport function checkIsHoliday(\n definitions: HolidayDefinition[],\n date: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(date)) return null;\n\n const year = date.getUTCFullYear();\n const isoDate = toISODate(date);\n if (!isoDate) return null;\n\n const holidays = resolveHolidays(definitions, year, names);\n return holidays.find((h) => h.date === isoDate) ?? null;\n}\n\n/** Gets the next holiday from a date */\nexport function findNextHoliday(\n definitions: HolidayDefinition[],\n from: Date,\n names?: Record<string, string>,\n): Holiday | null {\n if (!isValidDate(from)) return null;\n\n const isoFrom = toISODate(from);\n if (!isoFrom) return null;\n\n const year = from.getUTCFullYear();\n\n // Search in current year\n let holidays = resolveHolidays(definitions, year, names);\n let next = holidays.find((h) => h.date >= isoFrom);\n\n // If none, search in next year\n if (!next) {\n holidays = resolveHolidays(definitions, year + 1, names);\n next = holidays[0];\n }\n\n return next ?? null;\n}\n","import type { HolidayDefinition } from './types';\nimport { checkIsHoliday } from './engine';\n\nfunction isValidDate(date: Date): boolean {\n return date instanceof Date && Number.isFinite(date.getTime());\n}\n\nfunction createInvalidDate(): Date {\n return new Date(Number.NaN);\n}\n\n/**\n * Checks if a date is a weekend (Saturday or Sunday)\n * Uses UTC date to avoid timezone issues\n */\nexport function isWeekend(date: Date): boolean {\n const day = date.getUTCDay();\n return day === 0 || day === 6; // 0 = Sunday, 6 = Saturday\n}\n\n/**\n * Checks if a date is a business day (not weekend AND not holiday)\n */\nexport function checkIsBusinessDay(definitions: HolidayDefinition[], date: Date): boolean {\n if (!isValidDate(date)) return false;\n if (isWeekend(date)) return false;\n return checkIsHoliday(definitions, date) === null;\n}\n\n/**\n * Adds (or subtracts) business days to a date\n */\nexport function addBusinessDays(\n definitions: HolidayDefinition[],\n startDate: Date,\n amount: number,\n): Date {\n if (!isValidDate(startDate) || !Number.isFinite(amount)) {\n return createInvalidDate();\n }\n\n const result = new Date(startDate);\n let remaining = Math.abs(amount);\n const direction = amount >= 0 ? 1 : -1;\n\n while (remaining > 0) {\n result.setUTCDate(result.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, result)) {\n remaining--;\n }\n }\n\n return result;\n}\n\n/**\n * Calculates the number of business days between two dates\n * Returns the number of days to add to startDate to get endDate (can be negative)\n * If startDate and endDate are the same, returns 0\n */\nexport function getBusinessDaysBetween(\n definitions: HolidayDefinition[],\n startDate: Date,\n endDate: Date,\n): number {\n if (!isValidDate(startDate) || !isValidDate(endDate)) {\n return Number.NaN;\n }\n\n const start = new Date(startDate);\n const end = new Date(endDate);\n\n // Reset hours to avoid issues with daylight saving time or partial days\n start.setUTCHours(0, 0, 0, 0);\n end.setUTCHours(0, 0, 0, 0);\n\n if (start.getTime() === end.getTime()) return 0;\n\n const direction = start < end ? 1 : -1;\n let count = 0;\n const current = new Date(start);\n\n // If direction is positive, we count days starting from start+1 until end\n // If direction is negative, we count days starting from start-1 until end\n\n while (current.getTime() !== end.getTime()) {\n current.setUTCDate(current.getUTCDate() + direction);\n if (checkIsBusinessDay(definitions, current)) {\n count += direction;\n }\n }\n\n return count;\n}\n\nfunction parseTime(timeStr: string): { h: number; m: number } {\n const [hours, minutes] = timeStr.split(':').map(Number);\n return { h: hours || 0, m: minutes || 0 };\n}\n\nfunction getTimeInMinutes(date: Date): number {\n return date.getUTCHours() * 60 + date.getUTCMinutes();\n}\n\n/**\n * Calculates the number of business hours between two dates\n */\nexport function getBusinessHoursBetween(\n definitions: HolidayDefinition[],\n startDate: Date,\n endDate: Date,\n businessHours: { start: string; end: string } = { start: '08:00', end: '17:00' },\n): number {\n if (!isValidDate(startDate) || !isValidDate(endDate)) {\n return Number.NaN;\n }\n\n const { h: startH, m: startM } = parseTime(businessHours.start);\n const { h: endH, m: endM } = parseTime(businessHours.end);\n const startDayMin = startH * 60 + startM;\n const endDayMin = endH * 60 + endM;\n\n if (startDayMin >= endDayMin) return 0; // Invalid business hours\n\n const t1 = startDate.getTime();\n const t2 = endDate.getTime();\n if (t1 === t2) return 0;\n\n const start = new Date(Math.min(t1, t2));\n const end = new Date(Math.max(t1, t2));\n const isNegative = t1 > t2;\n\n let totalMinutes = 0;\n const current = new Date(start);\n\n while (current.getTime() < end.getTime()) {\n if (checkIsBusinessDay(definitions, current)) {\n const currentMin = getTimeInMinutes(current);\n\n // If current date is the same day as end date\n const isEndDay =\n current.getUTCFullYear() === end.getUTCFullYear() &&\n current.getUTCMonth() === end.getUTCMonth() &&\n current.getUTCDate() === end.getUTCDate();\n\n const periodEndMin = isEndDay ? Math.min(getTimeInMinutes(end), endDayMin) : endDayMin;\n const periodStartMin = Math.max(currentMin, startDayMin);\n\n if (periodEndMin > periodStartMin) {\n totalMinutes += periodEndMin - periodStartMin;\n }\n }\n\n // Move to next day at 00:00\n current.setUTCDate(current.getUTCDate() + 1);\n current.setUTCHours(0, 0, 0, 0);\n }\n\n return isNegative ? -(totalMinutes / 60) : totalMinutes / 60;\n}\n\n/**\n * Adds business hours to a date\n */\nexport function addBusinessHours(\n definitions: HolidayDefinition[],\n startDate: Date,\n amountInHours: number,\n businessHours: { start: string; end: string } = { start: '08:00', end: '17:00' },\n): Date {\n if (!isValidDate(startDate) || !Number.isFinite(amountInHours)) {\n return createInvalidDate();\n }\n\n if (amountInHours === 0) return new Date(startDate);\n\n const { h: startH, m: startM } = parseTime(businessHours.start);\n const { h: endH, m: endM } = parseTime(businessHours.end);\n const startDayMin = startH * 60 + startM;\n const endDayMin = endH * 60 + endM;\n const minutesPerDay = endDayMin - startDayMin;\n\n if (minutesPerDay <= 0) return createInvalidDate();\n\n const isNegative = amountInHours < 0;\n let remainingMinutes = Math.abs(amountInHours) * 60;\n\n const current = new Date(startDate);\n\n // Snap to start or end of business hours if outside\n if (!checkIsBusinessDay(definitions, current)) {\n if (isNegative) {\n current.setUTCHours(endH, endM, 0, 0);\n } else {\n current.setUTCHours(startH, startM, 0, 0);\n }\n } else {\n const min = getTimeInMinutes(current);\n if (min < startDayMin) {\n if (isNegative) {\n // move to previous day end\n current.setUTCDate(current.getUTCDate() - 1);\n current.setUTCHours(endH, endM, 0, 0);\n } else {\n current.setUTCHours(startH, startM, 0, 0);\n }\n } else if (min > endDayMin) {\n if (isNegative) {\n current.setUTCHours(endH, endM, 0, 0);\n } else {\n // move to next day start\n current.setUTCDate(current.getUTCDate() + 1);\n current.setUTCHours(startH, startM, 0, 0);\n }\n }\n }\n\n while (remainingMinutes > 0) {\n if (!checkIsBusinessDay(definitions, current)) {\n current.setUTCDate(current.getUTCDate() + (isNegative ? -1 : 1));\n current.setUTCHours(isNegative ? endH : startH, isNegative ? endM : startM, 0, 0);\n continue;\n }\n\n const min = getTimeInMinutes(current);\n let availableMinutes = isNegative ? min - startDayMin : endDayMin - min;\n\n if (availableMinutes < 0) availableMinutes = 0;\n\n if (remainingMinutes <= availableMinutes) {\n if (isNegative) {\n current.setUTCMinutes(current.getUTCMinutes() - remainingMinutes);\n } else {\n current.setUTCMinutes(current.getUTCMinutes() + remainingMinutes);\n }\n remainingMinutes = 0;\n } else {\n remainingMinutes -= availableMinutes;\n current.setUTCDate(current.getUTCDate() + (isNegative ? -1 : 1));\n current.setUTCHours(isNegative ? endH : startH, isNegative ? endM : startM, 0, 0);\n }\n }\n\n return current;\n}\n","import type { HolidayDefinition, Holiday, HolidayNames } from './types.js';\nimport { resolveHolidays, checkIsHoliday, findNextHoliday } from './engine.js';\nimport {\n checkIsBusinessDay,\n addBusinessDays,\n getBusinessDaysBetween,\n addBusinessHours,\n getBusinessHoursBetween,\n} from './business.js';\n\nexport interface GetHolidaysOptions {\n lang?: HolidayNames;\n}\n\nexport function createHolidayManager(definitions: HolidayDefinition[], defaultLang: HolidayNames) {\n return {\n getHolidays: (year: number, options?: GetHolidaysOptions): Holiday[] => {\n const names = options?.lang ?? defaultLang;\n return resolveHolidays(definitions, year, names);\n },\n isHoliday: (date: Date, options?: GetHolidaysOptions): Holiday | null => {\n const names = options?.lang ?? defaultLang;\n return checkIsHoliday(definitions, date, names);\n },\n getNextHoliday: (from: Date = new Date(), options?: GetHolidaysOptions): Holiday | null => {\n const names = options?.lang ?? defaultLang;\n return findNextHoliday(definitions, from, names);\n },\n isBusinessDay: (date: Date): boolean => {\n return checkIsBusinessDay(definitions, date);\n },\n businessDays: (date: Date, amount: number): Date => {\n return addBusinessDays(definitions, date, amount);\n },\n diffBusinessDays: (startDate: Date, endDate: Date): number => {\n return getBusinessDaysBetween(definitions, startDate, endDate);\n },\n businessHours: (\n date: Date,\n amount: number,\n businessHours?: { start: string; end: string },\n ): Date => {\n return addBusinessHours(definitions, date, amount, businessHours);\n },\n diffBusinessHours: (\n startDate: Date,\n endDate: Date,\n businessHours?: { start: string; end: string },\n ): number => {\n return getBusinessHoursBetween(definitions, startDate, endDate, businessHours);\n },\n };\n}\n","import type { HolidayNames } from '../core/types';\n\nexport const pt: HolidayNames = {\n newYear: 'Ano Novo',\n epiphany: 'Dia de Reis',\n holyThursday: 'Quinta-feira Santa',\n goodFriday: 'Sexta-feira Santa',\n easterSunday: 'Domingo de Páscoa',\n laborDay: 'Dia do Trabalhador',\n ascension: 'Ascensão do Senhor',\n corpusChristi: 'Corpus Christi',\n christmas: 'Natal',\n christmasEve: 'Véspera de Natal',\n newYearsEve: 'Véspera de Ano Novo',\n allSaints: 'Dia de Todos os Santos',\n assumptionMary: 'Assunção de Nossa Senhora',\n immaculateConception: 'Imaculada Conceição',\n\n // Brasil\n carnivalMonday: 'Segunda-feira de Carnaval',\n carnivalTuesday: 'Terça-feira de Carnaval',\n tiradentesDay: 'Tiradentes',\n independenceDay: 'Independência do Brasil',\n ladyAparecida: 'Nossa Senhora Aparecida',\n allSouls: 'Finados',\n republicProclamation: 'Proclamação da República',\n blackConsciousness: 'Dia da Consciência Negra',\n};\n","import type { HolidayDefinition } from '../core/types';\nimport { createHolidayManager } from '../core/manager';\nimport { pt } from '../i18n/pt';\n\nconst definitions: HolidayDefinition[] = [\n { key: 'newYear', rule: { type: 'fixed', month: 1, day: 1 } },\n { key: 'carnivalMonday', rule: { type: 'easterRelative', offset: -48 } },\n { key: 'carnivalTuesday', rule: { type: 'easterRelative', offset: -47 } },\n { key: 'goodFriday', rule: { type: 'easterRelative', offset: -2 } },\n { key: 'tiradentesDay', rule: { type: 'fixed', month: 4, day: 21 } },\n { key: 'laborDay', rule: { type: 'fixed', month: 5, day: 1 } },\n { key: 'corpusChristi', rule: { type: 'easterRelative', offset: 60 } },\n { key: 'independenceDay', rule: { type: 'fixed', month: 9, day: 7 } },\n { key: 'ladyAparecida', rule: { type: 'fixed', month: 10, day: 12 } },\n { key: 'allSouls', rule: { type: 'fixed', month: 11, day: 2 } },\n { key: 'republicProclamation', rule: { type: 'fixed', month: 11, day: 15 } },\n { key: 'blackConsciousness', rule: { type: 'fixed', month: 11, day: 20 } },\n { key: 'christmas', rule: { type: 'fixed', month: 12, day: 25 } },\n];\n\nexport const {\n getHolidays,\n isHoliday,\n getNextHoliday,\n isBusinessDay,\n businessDays,\n diffBusinessDays,\n businessHours,\n diffBusinessHours,\n} = createHolidayManager(definitions, pt);\n"]}
@@ -1,2 +1,2 @@
1
- 'use strict';function b(e){if(!Number.isInteger(e)||e<1583)return new Date(Number.NaN);let t=e%19,n=Math.floor(e/100),a=e%100,i=Math.floor(n/4),o=n%4,s=Math.floor((n+8)/25),r=Math.floor((n-s+1)/3),l=(19*t+n-i-r+15)%30,u=Math.floor(a/4),k=a%4,h=(32+2*o+2*u-l-k)%7,C=Math.floor((t+11*l+22*h)/451),v=Math.floor((l+h-7*C+114)/31),M=(l+h-7*C+114)%31+1;return new Date(Date.UTC(e,v-1,M))}function T(e,t,n,a){if(!Number.isInteger(e)||!Number.isInteger(t)||t<1||t>12||!Number.isInteger(n)||n<0||n>6||!Number.isInteger(a)||a===0)return new Date(Number.NaN);let i=t-1;if(a>0){let s=new Date(Date.UTC(e,t-1,1)).getUTCDay(),l=1+(n-s+7)%7+(a-1)*7,u=new Date(Date.UTC(e,t-1,l));return u.getUTCMonth()===i?u:new Date(Number.NaN)}else {let o=new Date(Date.UTC(e,t,0)),r=(o.getUTCDay()-n+7)%7,l=o.getUTCDate()-r+(a+1)*7,u=new Date(Date.UTC(e,t-1,l));return u.getUTCMonth()===i?u:new Date(Number.NaN)}}function w(e){return e instanceof Date&&Number.isFinite(e.getTime())}function N(e,t){if(!w(e))return {date:e,shifted:false};let n=e.getUTCDay();if(t==="none")return {date:e,shifted:false};let a=new Date(e);switch(t){case "emiliani":case "nextMonday":{if(n===1)return {date:e,shifted:false};let i=(8-n)%7;a.setUTCDate(e.getUTCDate()+i);break}case "observedUS":if(n===0)a.setUTCDate(e.getUTCDate()+1);else if(n===6)a.setUTCDate(e.getUTCDate()-1);else return {date:e,shifted:false};break;case "nearestMonday":if(n===2)a.setUTCDate(e.getUTCDate()-1);else if(n===3)a.setUTCDate(e.getUTCDate()-2);else if(n===4)a.setUTCDate(e.getUTCDate()+4);else if(n===5)a.setUTCDate(e.getUTCDate()+3);else return {date:e,shifted:false};break;default:return {date:e,shifted:false}}return {date:a,shifted:true}}function S(e,t){switch(e.type){case "fixed":return new Date(Date.UTC(t,e.month-1,e.day));case "nthWeekday":return T(t,e.month,e.weekday,e.n);case "easterRelative":{let n=b(t),a=new Date(n);return a.setUTCDate(n.getUTCDate()+e.offset),a}case "custom":return e.calc(t)}}function g(e){try{return e.toISOString().split("T")[0]}catch{return ""}}function c(e){return e instanceof Date&&!Number.isNaN(e.getTime())}function y(e,t,n={}){return typeof t!="number"||!Number.isInteger(t)?[]:e.map(a=>{let i=S(a.rule,t);if(!i||!c(i))return null;let{date:o,shifted:s}=N(i,a.shift??"none");return c(o)?{date:g(o),key:a.key,name:n[a.key]??a.key,...s&&{isShifted:true}}:null}).filter(a=>a!==null).sort((a,i)=>a.date.localeCompare(i.date))}function f(e,t,n){if(!c(t))return null;let a=t.getUTCFullYear(),i=g(t);return i?y(e,a,n).find(s=>s.date===i)??null:null}function H(e,t,n){if(!c(t))return null;let a=g(t);if(!a)return null;let i=t.getUTCFullYear(),o=y(e,i,n),s=o.find(r=>r.date>=a);return s||(o=y(e,i+1,n),s=o[0]),s??null}function D(e){return e instanceof Date&&Number.isFinite(e.getTime())}function I(){return new Date(Number.NaN)}function R(e){let t=e.getUTCDay();return t===0||t===6}function m(e,t){return !D(t)||R(t)?false:f(e,t)===null}function x(e,t,n){if(!D(t)||!Number.isFinite(n))return I();let a=new Date(t),i=Math.abs(n),o=n>=0?1:-1;for(;i>0;)a.setUTCDate(a.getUTCDate()+o),m(e,a)&&i--;return a}function U(e,t,n){if(!D(t)||!D(n))return Number.NaN;let a=new Date(t),i=new Date(n);if(a.setUTCHours(0,0,0,0),i.setUTCHours(0,0,0,0),a.getTime()===i.getTime())return 0;let o=a<i?1:-1,s=0,r=new Date(a);for(;r.getTime()!==i.getTime();)r.setUTCDate(r.getUTCDate()+o),m(e,r)&&(s+=o);return s}var p={newYear:"A\xF1o Nuevo",epiphany:"D\xEDa de los Reyes Magos",holyThursday:"Jueves Santo",goodFriday:"Viernes Santo",easterSunday:"Domingo de Pascua",laborDay:"D\xEDa del Trabajo",ascension:"Ascensi\xF3n del Se\xF1or",corpusChristi:"Corpus Christi",christmas:"Navidad",christmasEve:"Nochebuena",newYearsEve:"Nochevieja",allSaints:"D\xEDa de Todos los Santos",saintJoseph:"D\xEDa de San Jos\xE9",sacredHeart:"Sagrado Coraz\xF3n",saintPeterPaul:"San Pedro y San Pablo",independenceDay:"D\xEDa de la Independencia",boyacaBattle:"Batalla de Boyac\xE1",assumptionMary:"Asunci\xF3n de la Virgen",columbusDay:"D\xEDa de la Raza",independenceCartagena:"Independencia de Cartagena",immaculateConception:"Inmaculada Concepci\xF3n",chiquinquira:"D\xEDa de Nuestra Se\xF1ora del Rosario de Chiquinquir\xE1",constitutionDay:"D\xEDa de la Constituci\xF3n",benitoJuarez:"Natalicio de Benito Ju\xE1rez",revolutionDay:"D\xEDa de la Revoluci\xF3n",virginGuadalupe:"D\xEDa de la Virgen de Guadalupe",transmissionExecutive:"Transmisi\xF3n del Poder Ejecutivo Federal",carnivalMonday:"Lunes de Carnaval",carnivalTuesday:"Martes de Carnaval",memoryDay:"D\xEDa Nacional de la Memoria por la Verdad y la Justicia",malvinasDay:"D\xEDa del Veterano y de los Ca\xEDdos en la Guerra de Malvinas",mayRevolution:"D\xEDa de la Revoluci\xF3n de Mayo",guemesDay:"Paso a la Inmortalidad del Gral. Don Mart\xEDn Miguel de G\xFCemes",belgranoDay:"Paso a la Inmortalidad del Gral. Manuel Belgrano",sanMartinDay:"Paso a la Inmortalidad del Gral. Jos\xE9 de San Mart\xEDn",diversityDay:"D\xEDa del Respeto a la Diversidad Cultural",sovereigntyDay:"D\xEDa de la Soberan\xEDa Nacional",mlkDay:"D\xEDa de Martin Luther King Jr.",presidentsDay:"D\xEDa de los Presidentes",memorialDay:"D\xEDa de los Ca\xEDdos",independenceDayUS:"D\xEDa de la Independencia",thanksgivingDay:"D\xEDa de Acci\xF3n de Gracias",veteransDay:"D\xEDa de los Veteranos"};var d=[{key:"newYear",rule:{type:"fixed",month:1,day:1}},{key:"laborDay",rule:{type:"fixed",month:5,day:1}},{key:"independenceDay",rule:{type:"fixed",month:7,day:20}},{key:"boyacaBattle",rule:{type:"fixed",month:8,day:7}},{key:"immaculateConception",rule:{type:"fixed",month:12,day:8}},{key:"christmas",rule:{type:"fixed",month:12,day:25}},{key:"epiphany",rule:{type:"fixed",month:1,day:6},shift:"emiliani"},{key:"saintJoseph",rule:{type:"fixed",month:3,day:19},shift:"emiliani"},{key:"saintPeterPaul",rule:{type:"fixed",month:6,day:29},shift:"emiliani"},{key:"assumptionMary",rule:{type:"fixed",month:8,day:15},shift:"emiliani"},{key:"columbusDay",rule:{type:"fixed",month:10,day:12},shift:"emiliani"},{key:"allSaints",rule:{type:"fixed",month:11,day:1},shift:"emiliani"},{key:"independenceCartagena",rule:{type:"fixed",month:11,day:11},shift:"emiliani"},{key:"chiquinquira",rule:{type:"custom",calc:e=>e>=2026?new Date(Date.UTC(e,6,9)):null},shift:"emiliani"},{key:"holyThursday",rule:{type:"easterRelative",offset:-3}},{key:"goodFriday",rule:{type:"easterRelative",offset:-2}},{key:"ascension",rule:{type:"easterRelative",offset:39},shift:"emiliani"},{key:"corpusChristi",rule:{type:"easterRelative",offset:60},shift:"emiliani"},{key:"sacredHeart",rule:{type:"easterRelative",offset:68},shift:"emiliani"}];function j(e,t){let n=t?.lang??p;return y(d,e,n)}function L(e,t){let n=t?.lang??p;return f(d,e,n)}function K(e=new Date,t){let n=t?.lang??p;return H(d,e,n)}function Q(e){return m(d,e)}function X(e,t){return x(d,e,t)}function Z(e,t){return U(d,e,t)}exports.businessDays=X;exports.diffBusinessDays=Z;exports.getHolidays=j;exports.getNextHoliday=K;exports.isBusinessDay=Q;exports.isHoliday=L;//# sourceMappingURL=co.cjs.map
1
+ 'use strict';function k(e){if(!Number.isInteger(e)||e<1583)return new Date(Number.NaN);let n=e%19,a=Math.floor(e/100),t=e%100,i=Math.floor(a/4),r=a%4,o=Math.floor((a+8)/25),l=Math.floor((a-o+1)/3),d=(19*n+a-i-l+15)%30,c=Math.floor(t/4),p=t%4,u=(32+2*r+2*c-d-p)%7,y=Math.floor((n+11*d+22*u)/451),s=Math.floor((d+u-7*y+114)/31),D=(d+u-7*y+114)%31+1;return new Date(Date.UTC(e,s-1,D))}function w(e,n,a,t){if(!Number.isInteger(e)||!Number.isInteger(n)||n<1||n>12||!Number.isInteger(a)||a<0||a>6||!Number.isInteger(t)||t===0)return new Date(Number.NaN);let i=n-1;if(t>0){let o=new Date(Date.UTC(e,n-1,1)).getUTCDay(),d=1+(a-o+7)%7+(t-1)*7,c=new Date(Date.UTC(e,n-1,d));return c.getUTCMonth()===i?c:new Date(Number.NaN)}else {let r=new Date(Date.UTC(e,n,0)),l=(r.getUTCDay()-a+7)%7,d=r.getUTCDate()-l+(t+1)*7,c=new Date(Date.UTC(e,n-1,d));return c.getUTCMonth()===i?c:new Date(Number.NaN)}}function J(e){return e instanceof Date&&Number.isFinite(e.getTime())}function S(e,n){if(!J(e))return {date:e,shifted:false};let a=e.getUTCDay();if(n==="none")return {date:e,shifted:false};let t=new Date(e);switch(n){case "emiliani":case "nextMonday":{if(a===1)return {date:e,shifted:false};let i=(8-a)%7;t.setUTCDate(e.getUTCDate()+i);break}case "observedUS":if(a===0)t.setUTCDate(e.getUTCDate()+1);else if(a===6)t.setUTCDate(e.getUTCDate()-1);else return {date:e,shifted:false};break;case "nearestMonday":if(a===2)t.setUTCDate(e.getUTCDate()-1);else if(a===3)t.setUTCDate(e.getUTCDate()-2);else if(a===4)t.setUTCDate(e.getUTCDate()+4);else if(a===5)t.setUTCDate(e.getUTCDate()+3);else return {date:e,shifted:false};break;default:return {date:e,shifted:false}}return {date:t,shifted:true}}function V(e,n){switch(e.type){case "fixed":return new Date(Date.UTC(n,e.month-1,e.day));case "nthWeekday":return w(n,e.month,e.weekday,e.n);case "easterRelative":{let a=k(n),t=new Date(a);return t.setUTCDate(a.getUTCDate()+e.offset),t}case "custom":return e.calc(n)}}function N(e){try{return e.toISOString().split("T")[0]}catch{return ""}}function T(e){return e instanceof Date&&!Number.isNaN(e.getTime())}function C(e,n,a={}){return typeof n!="number"||!Number.isInteger(n)?[]:e.map(t=>{let i=V(t.rule,n);if(!i||!T(i))return null;let{date:r,shifted:o}=S(i,t.shift??"none");return T(r)?{date:N(r),key:t.key,name:a[t.key]??t.key,...o&&{isShifted:true}}:null}).filter(t=>t!==null).sort((t,i)=>t.date.localeCompare(i.date))}function b(e,n,a){if(!T(n))return null;let t=n.getUTCFullYear(),i=N(n);return i?C(e,t,a).find(o=>o.date===i)??null:null}function B(e,n,a){if(!T(n))return null;let t=N(n);if(!t)return null;let i=n.getUTCFullYear(),r=C(e,i,a),o=r.find(l=>l.date>=t);return o||(r=C(e,i+1,a),o=r[0]),o??null}function g(e){return e instanceof Date&&Number.isFinite(e.getTime())}function M(){return new Date(Number.NaN)}function q(e){let n=e.getUTCDay();return n===0||n===6}function h(e,n){return !g(n)||q(n)?false:b(e,n)===null}function I(e,n,a){if(!g(n)||!Number.isFinite(a))return M();let t=new Date(n),i=Math.abs(a),r=a>=0?1:-1;for(;i>0;)t.setUTCDate(t.getUTCDate()+r),h(e,t)&&i--;return t}function R(e,n,a){if(!g(n)||!g(a))return Number.NaN;let t=new Date(n),i=new Date(a);if(t.setUTCHours(0,0,0,0),i.setUTCHours(0,0,0,0),t.getTime()===i.getTime())return 0;let r=t<i?1:-1,o=0,l=new Date(t);for(;l.getTime()!==i.getTime();)l.setUTCDate(l.getUTCDate()+r),h(e,l)&&(o+=r);return o}function U(e){let[n,a]=e.split(":").map(Number);return {h:n||0,m:a||0}}function H(e){return e.getUTCHours()*60+e.getUTCMinutes()}function P(e,n,a,t={start:"08:00",end:"17:00"}){if(!g(n)||!g(a))return Number.NaN;let{h:i,m:r}=U(t.start),{h:o,m:l}=U(t.end),d=i*60+r,c=o*60+l;if(d>=c)return 0;let p=n.getTime(),u=a.getTime();if(p===u)return 0;let y=new Date(Math.min(p,u)),s=new Date(Math.max(p,u)),D=p>u,m=0,f=new Date(y);for(;f.getTime()<s.getTime();){if(h(e,f)){let E=H(f),v=f.getUTCFullYear()===s.getUTCFullYear()&&f.getUTCMonth()===s.getUTCMonth()&&f.getUTCDate()===s.getUTCDate()?Math.min(H(s),c):c,x=Math.max(E,d);v>x&&(m+=v-x);}f.setUTCDate(f.getUTCDate()+1),f.setUTCHours(0,0,0,0);}return D?-(m/60):m/60}function G(e,n,a,t={start:"08:00",end:"17:00"}){if(!g(n)||!Number.isFinite(a))return M();if(a===0)return new Date(n);let{h:i,m:r}=U(t.start),{h:o,m:l}=U(t.end),d=i*60+r,c=o*60+l;if(c-d<=0)return M();let u=a<0,y=Math.abs(a)*60,s=new Date(n);if(!h(e,s))u?s.setUTCHours(o,l,0,0):s.setUTCHours(i,r,0,0);else {let D=H(s);D<d?u?(s.setUTCDate(s.getUTCDate()-1),s.setUTCHours(o,l,0,0)):s.setUTCHours(i,r,0,0):D>c&&(u?s.setUTCHours(o,l,0,0):(s.setUTCDate(s.getUTCDate()+1),s.setUTCHours(i,r,0,0)));}for(;y>0;){if(!h(e,s)){s.setUTCDate(s.getUTCDate()+(u?-1:1)),s.setUTCHours(u?o:i,u?l:r,0,0);continue}let D=H(s),m=u?D-d:c-D;m<0&&(m=0),y<=m?(u?s.setUTCMinutes(s.getUTCMinutes()-y):s.setUTCMinutes(s.getUTCMinutes()+y),y=0):(y-=m,s.setUTCDate(s.getUTCDate()+(u?-1:1)),s.setUTCHours(u?o:i,u?l:r,0,0));}return s}function O(e,n){return {getHolidays:(a,t)=>{let i=t?.lang??n;return C(e,a,i)},isHoliday:(a,t)=>{let i=t?.lang??n;return b(e,a,i)},getNextHoliday:(a=new Date,t)=>{let i=t?.lang??n;return B(e,a,i)},isBusinessDay:a=>h(e,a),businessDays:(a,t)=>I(e,a,t),diffBusinessDays:(a,t)=>R(e,a,t),businessHours:(a,t,i)=>G(e,a,t,i),diffBusinessHours:(a,t,i)=>P(e,a,t,i)}}var F={newYear:"A\xF1o Nuevo",epiphany:"D\xEDa de los Reyes Magos",holyThursday:"Jueves Santo",goodFriday:"Viernes Santo",easterSunday:"Domingo de Pascua",laborDay:"D\xEDa del Trabajo",ascension:"Ascensi\xF3n del Se\xF1or",corpusChristi:"Corpus Christi",christmas:"Navidad",christmasEve:"Nochebuena",newYearsEve:"Nochevieja",allSaints:"D\xEDa de Todos los Santos",saintJoseph:"D\xEDa de San Jos\xE9",sacredHeart:"Sagrado Coraz\xF3n",saintPeterPaul:"San Pedro y San Pablo",independenceDay:"D\xEDa de la Independencia",boyacaBattle:"Batalla de Boyac\xE1",assumptionMary:"Asunci\xF3n de la Virgen",columbusDay:"D\xEDa de la Raza",independenceCartagena:"Independencia de Cartagena",immaculateConception:"Inmaculada Concepci\xF3n",chiquinquira:"D\xEDa de Nuestra Se\xF1ora del Rosario de Chiquinquir\xE1",constitutionDay:"D\xEDa de la Constituci\xF3n",benitoJuarez:"Natalicio de Benito Ju\xE1rez",revolutionDay:"D\xEDa de la Revoluci\xF3n",virginGuadalupe:"D\xEDa de la Virgen de Guadalupe",transmissionExecutive:"Transmisi\xF3n del Poder Ejecutivo Federal",carnivalMonday:"Lunes de Carnaval",carnivalTuesday:"Martes de Carnaval",memoryDay:"D\xEDa Nacional de la Memoria por la Verdad y la Justicia",malvinasDay:"D\xEDa del Veterano y de los Ca\xEDdos en la Guerra de Malvinas",mayRevolution:"D\xEDa de la Revoluci\xF3n de Mayo",guemesDay:"Paso a la Inmortalidad del Gral. Don Mart\xEDn Miguel de G\xFCemes",belgranoDay:"Paso a la Inmortalidad del Gral. Manuel Belgrano",sanMartinDay:"Paso a la Inmortalidad del Gral. Jos\xE9 de San Mart\xEDn",diversityDay:"D\xEDa del Respeto a la Diversidad Cultural",sovereigntyDay:"D\xEDa de la Soberan\xEDa Nacional",mlkDay:"D\xEDa de Martin Luther King Jr.",presidentsDay:"D\xEDa de los Presidentes",memorialDay:"D\xEDa de los Ca\xEDdos",independenceDayUS:"D\xEDa de la Independencia",thanksgivingDay:"D\xEDa de Acci\xF3n de Gracias",veteransDay:"D\xEDa de los Veteranos",independenceDay1:"D\xEDa de la Independencia",independenceDay2:"Fiestas Patrias",battleOfJunin:"Batalla de Jun\xEDn",santaRosaDeLima:"Santa Rosa de Lima",battleOfAngamos:"Combate de Angamos",battleOfAyacucho:"Batalla de Ayacucho",holySaturday:"S\xE1bado Santo",navyDay:"D\xEDa de las Glorias Navales",indigenousPeoplesDay:"D\xEDa Nacional de los Pueblos Ind\xEDgenas",ourLadyOfMountCarmel:"D\xEDa de la Virgen del Carmen",armyDay:"D\xEDa de las Glorias del Ej\xE9rcito",reformationDay:"D\xEDa de las Iglesias Evang\xE9licas y Protestantes",battleOfPichincha:"Batalla de Pichincha",firstCryOfIndependence:"Primer Grito de Independencia",independenceOfGuayaquil:"Independencia de Guayaquil",allSoulsDay:"D\xEDa de los Difuntos",independenceOfCuenca:"Independencia de Cuenca"};var A=[{key:"newYear",rule:{type:"fixed",month:1,day:1}},{key:"laborDay",rule:{type:"fixed",month:5,day:1}},{key:"independenceDay",rule:{type:"fixed",month:7,day:20}},{key:"boyacaBattle",rule:{type:"fixed",month:8,day:7}},{key:"immaculateConception",rule:{type:"fixed",month:12,day:8}},{key:"christmas",rule:{type:"fixed",month:12,day:25}},{key:"epiphany",rule:{type:"fixed",month:1,day:6},shift:"emiliani"},{key:"saintJoseph",rule:{type:"fixed",month:3,day:19},shift:"emiliani"},{key:"saintPeterPaul",rule:{type:"fixed",month:6,day:29},shift:"emiliani"},{key:"assumptionMary",rule:{type:"fixed",month:8,day:15},shift:"emiliani"},{key:"columbusDay",rule:{type:"fixed",month:10,day:12},shift:"emiliani"},{key:"allSaints",rule:{type:"fixed",month:11,day:1},shift:"emiliani"},{key:"independenceCartagena",rule:{type:"fixed",month:11,day:11},shift:"emiliani"},{key:"chiquinquira",rule:{type:"custom",calc:e=>e>=2026?new Date(Date.UTC(e,6,9)):null},shift:"emiliani"},{key:"holyThursday",rule:{type:"easterRelative",offset:-3}},{key:"goodFriday",rule:{type:"easterRelative",offset:-2}},{key:"ascension",rule:{type:"easterRelative",offset:39},shift:"emiliani"},{key:"corpusChristi",rule:{type:"easterRelative",offset:60},shift:"emiliani"},{key:"sacredHeart",rule:{type:"easterRelative",offset:68},shift:"emiliani"}],{getHolidays:se,isHoliday:re,getNextHoliday:oe,isBusinessDay:le,businessDays:ue,diffBusinessDays:de,businessHours:ce,diffBusinessHours:ye}=O(A,F);exports.businessDays=ue;exports.businessHours=ce;exports.diffBusinessDays=de;exports.diffBusinessHours=ye;exports.getHolidays=se;exports.getNextHoliday=oe;exports.isBusinessDay=le;exports.isHoliday=re;//# sourceMappingURL=co.cjs.map
2
2
  //# sourceMappingURL=co.cjs.map