{"version":3,"sources":["../src/helpers/parseHHMM.ts","../src/helpers/mergeSlots.ts","../src/core/normalize.ts","../src/core/tz.ts","../src/core/compute.ts","../src/core/format.ts","../src/index.ts"],"names":["DateTime","Interval"],"mappings":"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","file":"index.cjs","sourcesContent":["export function isHHMM(value: string): boolean {\n  return /^\\d{2}:\\d{2}$/.test(value)\n}\n\nexport function parseHHMM(value: string): { hours: number; minutes: number } {\n  if (!isHHMM(value)) throw new Error(`Invalid HH:MM: ${value}`)\n  const [h, m] = value.split(':').map(Number)\n  if (h < 0 || h > 23 || m < 0 || m > 59) {\n    throw new Error(`Invalid time components: ${value}`)\n  }\n  return { hours: h, minutes: m }\n}\n\n","import type { SlotInput } from '../core/types'\nimport { isHHMM, parseHHMM } from './parseHHMM'\n\ntype Slot = { open: string; close: string }\n\nexport function validateAndSortDay(slots: SlotInput[], strict: boolean): SlotInput[] {\n  const valid: SlotInput[] = []\n  for (const s of slots) {\n    if (!isHHMM(s.open) || !isHHMM(s.close)) {\n      if (strict) throw new Error(`Invalid HH:MM in slot ${s.open}-${s.close}`)\n      else continue\n    }\n    valid.push({ open: s.open, close: s.close })\n  }\n\n  valid.sort((a, b) => (a.open < b.open ? -1 : a.open > b.open ? 1 : 0))\n\n  // Merge overlapping or touching slots within the same day (ignoring overnight)\n  const merged: SlotInput[] = []\n  for (const s of valid) {\n    const last = merged[merged.length - 1]\n    if (!last) {\n      merged.push(s)\n      continue\n    }\n    if (s.open <= last.close) {\n      // overlap or touch\n      if (s.close > last.close) last.close = s.close as any\n    } else {\n      merged.push({ ...s })\n    }\n  }\n\n  return merged\n}\n\nexport function splitOvernight(slots: SlotInput[]): {\n  sameDay: SlotInput[]\n  overnight: SlotInput[]\n} {\n  const sameDay: SlotInput[] = []\n  const overnight: SlotInput[] = []\n  for (const s of slots) {\n    if (s.open <= s.close) sameDay.push(s)\n    else overnight.push(s)\n  }\n  return { sameDay, overnight }\n}\n\nexport function addMinutesToHHMM(hhmm: string, minutesToAdd: number): string {\n  const { hours, minutes } = parseHHMM(hhmm)\n  const total = hours * 60 + minutes + minutesToAdd\n  const norm = ((total % (24 * 60)) + 24 * 60) % (24 * 60)\n  const h = Math.floor(norm / 60)\n  const m = norm % 60\n  return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`\n}\n\n","import { DateTime } from 'luxon'\nimport type {\n  Config,\n  DaySpec,\n  Exception,\n  Holiday,\n  SlotInput,\n  WeekdayKey,\n} from './types'\nimport { validateAndSortDay, splitOvernight } from '../helpers/mergeSlots'\n\nconst WEEK_KEYS: WeekdayKey[] = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']\n\nexport type NormalizedConfig = Required<Config>\n\nexport function normalizeConfig(input: Config): NormalizedConfig {\n  const strict = Boolean(input.strictValidation)\n  const locale = input.locale ?? 'en-US'\n  const firstDayOfWeek = input.firstDayOfWeek ?? 'mon'\n  const holidays = input.holidays ?? []\n  const exceptions = input.exceptions ?? []\n\n  const week: Record<WeekdayKey, DaySpec> = { ...input.week } as any\n  for (const k of WEEK_KEYS) {\n    if (!(k in week)) {\n      if (strict) throw new Error(`Missing weekday: ${k}`)\n      week[k] = 'closed'\n    }\n    const v = week[k]\n    if (v !== 'closed') {\n      week[k] = validateAndSortDay(v, strict)\n    }\n  }\n\n  return {\n    timezone: input.timezone,\n    week: week as Record<WeekdayKey, DaySpec>,\n    holidays,\n    exceptions,\n    locale,\n    firstDayOfWeek,\n    strictValidation: strict,\n  }\n}\n\nexport function dayKeyFromLuxon(dt: DateTime): WeekdayKey {\n  // Luxon: Monday = 1 ... Sunday = 7\n  const map: Record<number, WeekdayKey> = {\n    1: 'mon',\n    2: 'tue',\n    3: 'wed',\n    4: 'thu',\n    5: 'fri',\n    6: 'sat',\n    7: 'sun',\n  }\n  return map[dt.weekday]\n}\n\nexport function toJSON(config: Config): Config {\n  return JSON.parse(JSON.stringify(config))\n}\n\nexport function fromJSON(configLike: any): Config {\n  return configLike as Config\n}\n\nexport function resolveDaySpecForDate(\n  dateISO: string,\n  cfg: NormalizedConfig,\n): DaySpec {\n  // exceptions override holidays\n  const ex = cfg.exceptions?.find((e) => e.date === dateISO)\n  if (ex) return ex.closed ? 'closed' : ex.slots ?? 'closed'\n\n  const hol = cfg.holidays?.find((h) => h.date === dateISO)\n  if (hol) return hol.closed ? 'closed' : hol.slots ?? 'closed'\n\n  // fallback to week\n  const dt = DateTime.fromISO(dateISO, { zone: cfg.timezone })\n  const key = dayKeyFromLuxon(dt)\n  return cfg.week[key]\n}\n\nexport function expandDaySlotsForDate(\n  dateISO: string,\n  cfg: NormalizedConfig,\n): SlotInput[] {\n  const spec = resolveDaySpecForDate(dateISO, cfg)\n  if (spec === 'closed') return []\n  const { sameDay, overnight } = splitOvernight(spec)\n\n  // Overnight: split into end-of-day and next-day ranges in HH:MM space\n  const expanded: SlotInput[] = [...sameDay]\n  for (const s of overnight) {\n    // part 1: dateISO from s.open to 24:00 -> represent as 23:59 for inclusivity\n    expanded.push({ open: s.open, close: '23:59' as any })\n    // part 2 handled on next date when computing actual Date ranges\n  }\n  return expanded\n}\n\n","import { DateTime, Interval } from 'luxon'\n\nimport type { DateLike } from './types'\n\nexport function dtFrom(date: DateLike | undefined, zone: string): DateTime {\n  if (date === undefined) return DateTime.now().setZone(zone)\n  if (date instanceof Date) return DateTime.fromJSDate(date).setZone(zone)\n  // ISO-like strings interpreted in the given zone\n  const parsed = DateTime.fromISO(date, { setZone: true })\n  return parsed.isValid ? parsed.setZone(zone) : DateTime.invalid('Invalid date')\n}\n\nexport function toDate(dt: DateTime): Date {\n  return dt.toJSDate()\n}\n\nexport function createDayInterval(dt: DateTime): Interval {\n  const start = dt.startOf('day')\n  const end = dt.endOf('day')\n  return Interval.fromDateTimes(start, end)\n}\n\nexport function normalizeISODate(dateISO: string, zone: string): string {\n  // Ensures YYYY-MM-DD for given zone's calendar day\n  const dt = DateTime.fromISO(dateISO, { zone })\n  return dt.toISODate()!\n}\n\n","import { DateTime, Interval } from 'luxon'\nimport type {\n  BusinessHours,\n  CloseAt,\n  Config,\n  DateLike,\n  OpenCloseWindow,\n  SlotInput,\n  WeekdayKey,\n} from './types'\nimport { normalizeConfig, resolveDaySpecForDate } from './normalize'\nimport { dtFrom, toDate } from './tz'\n\ntype SlotRange = { open: DateTime; close: DateTime }\n\nexport function createBusinessHours(config: Config): BusinessHours {\n  const cfg = normalizeConfig(config)\n  const cache = new Map<string, Array<{ open: Date; close: Date }>>()\n  const MAX_CACHE_DAYS = 14\n\n  function slotsOn(date: DateLike): Array<{ open: Date; close: Date }> {\n    const dt = dtFrom(date as any, cfg.timezone)\n    const startOfDay = dt.startOf('day')\n    const dateISO = startOfDay.toISODate()!\n    const cached = cache.get(dateISO)\n    if (cached) return cached\n    const spec = resolveDaySpecForDate(dateISO, cfg)\n    const ranges: SlotRange[] = []\n\n    if (spec !== 'closed') {\n      for (const s of spec) {\n        if (s.open <= s.close) {\n          // same-day\n          ranges.push(rangeFor(startOfDay, s))\n        } else {\n          // overnight: split\n          ranges.push(rangeFor(startOfDay, { open: s.open, close: '23:59' as any }))\n          // note: next-day portion will be added when computing that day's slots via previous-day check below\n        }\n      }\n    }\n\n    // Include previous day's overnight spill into current day\n    const prevDay = startOfDay.minus({ days: 1 }).startOf('day')\n    const prevISO = prevDay.toISODate()!\n    const prevSpec = resolveDaySpecForDate(prevISO, cfg)\n    if (prevSpec !== 'closed') {\n      for (const s of prevSpec) {\n        if (s.open > s.close) {\n          // spill from 00:00 to s.close on current date\n          ranges.push(rangeFor(startOfDay, { open: '00:00' as any, close: s.close }))\n        }\n      }\n    }\n\n    const result = ranges\n      .map((r) => ({ open: r.open.toJSDate(), close: r.close.toJSDate() }))\n      .sort((a, b) => a.open.getTime() - b.open.getTime())\n\n    // simple LRU behavior\n    cache.set(dateISO, result)\n    if (cache.size > MAX_CACHE_DAYS) {\n      const firstKey = cache.keys().next().value as string | undefined\n      if (firstKey) cache.delete(firstKey)\n    }\n    return result\n  }\n\n  function currentSlot(at?: DateLike): { open: Date; close: Date } | null {\n    const now = dtFrom(at, cfg.timezone)\n    const todays = slotsOn(now.toJSDate())\n    for (const s of todays) {\n      const o = DateTime.fromJSDate(s.open)\n      const c = DateTime.fromJSDate(s.close)\n      if (Interval.fromDateTimes(o, c).contains(now)) return s\n    }\n    return null\n  }\n\n  function isOpenAt(date: DateLike): boolean {\n    return currentSlot(date) !== null\n  }\n\n  function isOpenNow(): boolean {\n    return isOpenAt(dtFrom(undefined, cfg.timezone).toJSDate())\n  }\n\n  function nextOpen(from?: DateLike): OpenCloseWindow | null {\n    const start = dtFrom(from, cfg.timezone)\n    // check today first\n    const todaySlots = slotsOn(start.toJSDate())\n    for (const slot of todaySlots) {\n      const o = DateTime.fromJSDate(slot.open)\n      const c = DateTime.fromJSDate(slot.close)\n      if (c <= start) continue\n      if (start < o) return { start: o.toJSDate(), end: c.toJSDate() }\n      if (Interval.fromDateTimes(o, c).contains(start)) return { start: start.toJSDate(), end: c.toJSDate() }\n    }\n\n    // look ahead up to 14 days (cache window)\n    for (let i = 1; i <= 14; i++) {\n      const day = start.plus({ days: i }).startOf('day')\n      const slots = slotsOn(day.toJSDate())\n      if (slots.length > 0) {\n        return { start: slots[0].open, end: slots[0].close }\n      }\n    }\n    return null\n  }\n\n  function nextClose(from?: DateLike): CloseAt | null {\n    const start = dtFrom(from, cfg.timezone)\n    const slot = currentSlot(start.toJSDate())\n    if (slot) return { at: slot.close }\n\n    const upcoming = nextOpen(start.toJSDate())\n    if (!upcoming) return null\n    return { at: upcoming.end }\n  }\n\n  function timeUntilClose(at?: DateLike): { ms: number; minutes: number } | null {\n    const start = dtFrom(at, cfg.timezone)\n    const slot = currentSlot(start.toJSDate())\n    if (!slot) return null\n    const diff = DateTime.fromJSDate(slot.close).diff(start).as('milliseconds')\n    if (diff <= 0) return null\n    return { ms: diff, minutes: Math.ceil(diff / 60000) }\n  }\n\n  function timeUntilOpen(at?: DateLike): { ms: number; minutes: number } | null {\n    const start = dtFrom(at, cfg.timezone)\n    if (currentSlot(start.toJSDate())) return { ms: 0, minutes: 0 }\n    const upcoming = nextOpen(start.toJSDate())\n    if (!upcoming) return null\n    const diff = DateTime.fromJSDate(upcoming.start).diff(start).as('milliseconds')\n    return { ms: diff, minutes: Math.ceil(diff / 60000) }\n  }\n\n  function todaysSlots(at?: DateLike): Array<{ open: Date; close: Date }> {\n    const dt = dtFrom(at, cfg.timezone)\n    return slotsOn(dt.toJSDate())\n  }\n\n  function weeklySummary(options?: { join?: boolean }): string[] | string {\n    const lines: string[] = []\n    const start = DateTime.now().setZone(cfg.timezone).startOf('week')\n    for (let i = 0; i < 7; i++) {\n      const day = start.plus({ days: i })\n      const slots = slotsOn(day.toJSDate())\n      if (slots.length === 0) {\n        lines.push(`${day.toFormat('EEE')} closed`)\n      } else {\n        const parts = slots.map((s) => {\n          const o = DateTime.fromJSDate(s.open).setZone(cfg.timezone)\n          const c = DateTime.fromJSDate(s.close).setZone(cfg.timezone)\n          return `${o.toFormat('HH:mm')}–${c.toFormat('HH:mm')}`\n        })\n        lines.push(`${day.toFormat('EEE')} ${parts.join(', ')}`)\n      }\n    }\n    return options?.join ? lines.join('\\n') : lines\n  }\n\n  function listUpcomingSlots(daysAhead = 14): Array<{ date: string; slots: Array<{ open: Date; close: Date }> }> {\n    const now = DateTime.now().setZone(cfg.timezone).startOf('day')\n    const out: Array<{ date: string; slots: Array<{ open: Date; close: Date }> }> = []\n    for (let i = 0; i <= daysAhead; i++) {\n      const day = now.plus({ days: i })\n      const dateISO = day.toISODate()!\n      const slots = slotsOn(day.toJSDate())\n      out.push({ date: dateISO, slots })\n    }\n    return out\n  }\n\n  function withOverrides(overrides: Partial<Config>): BusinessHours {\n    return createBusinessHours({ ...cfg, ...overrides })\n  }\n\n  function toJSONLocal(): Config {\n    return {\n      timezone: cfg.timezone,\n      week: cfg.week,\n      holidays: cfg.holidays,\n      exceptions: cfg.exceptions,\n      locale: cfg.locale,\n      firstDayOfWeek: cfg.firstDayOfWeek,\n      strictValidation: cfg.strictValidation,\n    }\n  }\n\n  return {\n    isOpenNow,\n    isOpenAt,\n    nextOpen,\n    nextClose,\n    currentSlot,\n    timeUntilClose,\n    timeUntilOpen,\n    todaysSlots,\n    slotsOn,\n    weeklySummary,\n    listUpcomingSlots,\n    withOverrides,\n    toJSON: toJSONLocal,\n  }\n}\n\nfunction rangeFor(dayStart: DateTime, slot: SlotInput): { open: DateTime; close: DateTime } {\n  const [oh, om] = slot.open.split(':').map(Number)\n  const [ch, cm] = slot.close.split(':').map(Number)\n  const open = dayStart.set({ hour: oh, minute: om, second: 0, millisecond: 0 })\n  const close = dayStart.set({ hour: ch, minute: cm, second: 0, millisecond: 0 })\n  return { open, close }\n}\n\n","import { DateTime } from 'luxon'\nimport type { WeekdayNumbers } from 'luxon'\nimport type { WeekdayKey } from './types'\n\nexport function formatSlot(\n  slot: { open: Date; close: Date },\n  options?: { locale?: string; timezone?: string },\n): string {\n  const zone = options?.timezone\n  const locale = options?.locale ?? 'en-US'\n  const o = DateTime.fromJSDate(slot.open).setZone(zone).setLocale(locale)\n  const c = DateTime.fromJSDate(slot.close).setZone(zone).setLocale(locale)\n  return `${o.toFormat('HH:mm')}–${c.toFormat('HH:mm')}`\n}\n\nexport function formatDayName(\n  weekday: WeekdayKey,\n  options?: { locale?: string },\n): string {\n  const locale = options?.locale ?? 'en-US'\n  const map: Record<WeekdayKey, WeekdayNumbers> = {\n    mon: 1,\n    tue: 2,\n    wed: 3,\n    thu: 4,\n    fri: 5,\n    sat: 6,\n    sun: 7,\n  }\n  const dt = DateTime.now().set({ weekday: map[weekday] }).setLocale(locale)\n  return dt.toFormat('EEE')\n}\n\n","export * from './core/types'\nexport { createBusinessHours } from './core/compute'\nexport { formatSlot, formatDayName } from './core/format'\nexport { toJSON } from './core/normalize'\n\nimport type { BusinessHours, Config } from './core/types'\nimport { createBusinessHours as _create } from './core/compute'\n\nexport function fromJSON(configLike: Config): BusinessHours {\n  return _create(configLike)\n}\n\n"]}