{"version":3,"sources":["../src/constants.ts","../src/utils.ts","../src/converter.ts","../src/formatter.ts","../src/index.ts"],"names":["BANGLA_MONTHS","WEEK_DAYS","BANGLA_SEASONS","TOTAL_MONTH_DAYS","BANGLA_DIGITS","DEFAULT_FORMAT","BANGLA_YEAR_OFFSET","BANGLA_NEW_YEAR_MONTH","BANGLA_NEW_YEAR_DATE","EPOCH_DATE","isLeapYear","year","dateDiffInDays","a","b","utc1","utc2","convertToBanglaDigits","text","match","parseDateInput","dateInput","parsed","adjustDateForBangla","date","adjusted","convertToBanglaDate","givenDate","adjustedDate","gregDate","gregMonth","gregYear","gregDay","monthDays","banglaYearStart","banglaYear","epoch","dayRemaining","banglaMonthIndex","i","banglaDate","banglaMonth","banglaDay","banglaSeason","formatBanglaDate","options","format","showSeason","showWeekDays","useBanglaDigits","tokens","formattedString","bongabdo","getBanglaDate","formatBanglaDateOnly"],"mappings":"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","file":"index.mjs","sourcesContent":["export const BANGLA_MONTHS = [\n  'বৈশাখ',\n  'জ্যৈষ্ঠ',\n  'আষাঢ়',\n  'শ্রাবণ',\n  'ভাদ্র',\n  'আশ্বিন',\n  'কার্তিক',\n  'অগ্রহায়ণ',\n  'পৌষ',\n  'মাঘ',\n  'ফাল্গুন',\n  'চৈত্র'\n] as const;\n\nexport const WEEK_DAYS = [\n  'রবিবার',\n  'সোমবার',\n  'মঙ্গলবার',\n  'বুধবার',\n  'বৃহস্পতিবার',\n  'শুক্রবার',\n  'শনিবার'\n] as const;\n\nexport const BANGLA_SEASONS = [\n  'গ্রীষ্ম',\n  'বর্ষা',\n  'শরৎ',\n  'হেমন্ত',\n  'শীত',\n  'বসন্ত'\n] as const;\n\nexport const TOTAL_MONTH_DAYS = [31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30, 30] as const;\n\nexport const BANGLA_DIGITS: Record<string, string> = {\n  '0': '০',\n  '1': '১',\n  '2': '২',\n  '3': '৩',\n  '4': '৪',\n  '5': '৫',\n  '6': '৬',\n  '7': '৭',\n  '8': '৮',\n  '9': '৯'\n};\n\nexport const DEFAULT_FORMAT = 'DD MM, YY';\nexport const BANGLA_YEAR_OFFSET = 593;\nexport const BANGLA_NEW_YEAR_MONTH = 3; // April (0-indexed)\nexport const BANGLA_NEW_YEAR_DATE = 14;\nexport const EPOCH_DATE = 13; // 13th April ","import { BANGLA_DIGITS } from './constants';\n\n/**\n * Check if a year is a leap year\n */\nexport function isLeapYear(year: number): boolean {\n  return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n}\n\n/**\n * Calculate the difference in days between two dates\n */\nexport function dateDiffInDays(a: Date, b: Date): number {\n  const MILLISECONDS_PER_DAY = 1000 * 60 * 60 * 24;\n  const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());\n  const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());\n  \n  return Math.floor((utc2 - utc1) / MILLISECONDS_PER_DAY);\n}\n\n/**\n * Convert English digits to Bengali digits\n */\nexport function convertToBanglaDigits(text: string): string {\n  return text.replace(/\\d/g, (match) => BANGLA_DIGITS[match] || match);\n}\n\n/**\n * Parse date input to Date object\n */\nexport function parseDateInput(dateInput?: Date | string): Date {\n  if (dateInput instanceof Date) {\n    return new Date(dateInput);\n  }\n  \n  if (typeof dateInput === 'string') {\n    const parsed = new Date(dateInput);\n    if (isNaN(parsed.getTime())) {\n      throw new Error(`Invalid date string: ${dateInput}`);\n    }\n    return parsed;\n  }\n  \n  return new Date();\n}\n\n/**\n * Adjust date for Bengali calendar (subtract 6 hours for sunrise)\n */\nexport function adjustDateForBangla(date: Date): Date {\n  const adjusted = new Date(date);\n  adjusted.setHours(adjusted.getHours() - 6);\n  return adjusted;\n} ","import { BanglaDate } from './types';\nimport {\n  BANGLA_MONTHS,\n  WEEK_DAYS,\n  BANGLA_SEASONS,\n  TOTAL_MONTH_DAYS,\n  BANGLA_YEAR_OFFSET,\n  BANGLA_NEW_YEAR_MONTH,\n  BANGLA_NEW_YEAR_DATE,\n  EPOCH_DATE\n} from './constants';\nimport { isLeapYear, dateDiffInDays, adjustDateForBangla } from './utils';\n\n/**\n * Convert a Gregorian date to Bengali calendar date\n */\nexport function convertToBanglaDate(givenDate: Date): BanglaDate {\n  const adjustedDate = adjustDateForBangla(givenDate);\n  \n  // Extract Gregorian date components\n  const gregDate = adjustedDate.getDate();\n  const gregMonth = adjustedDate.getMonth();\n  const gregYear = adjustedDate.getFullYear();\n  const gregDay = adjustedDate.getDay();\n  \n  // Create a copy of month days array to handle leap year adjustments\n  const monthDays = [...TOTAL_MONTH_DAYS];\n  \n  // If the given Gregorian Year is a Leap Year, then the Falgun month will be 31 days\n  if (isLeapYear(gregYear)) {\n    monthDays[10] = 31; // Falgun (index 10)\n  }\n  \n  // If the given date is before 14th April of current Gregorian Year\n  let banglaYearStart = gregYear;\n  if (gregMonth < BANGLA_NEW_YEAR_MONTH || \n      (gregMonth === BANGLA_NEW_YEAR_MONTH && gregDate < BANGLA_NEW_YEAR_DATE)) {\n    banglaYearStart = gregYear - 1;\n  }\n  \n  // Calculate Bengali year\n  const banglaYear = banglaYearStart - BANGLA_YEAR_OFFSET;\n  \n  // Create epoch date (13th April of the Bengali year start)\n  const epoch = new Date(banglaYearStart, BANGLA_NEW_YEAR_MONTH, EPOCH_DATE);\n  \n  // Calculate days remaining from epoch\n  let dayRemaining = dateDiffInDays(epoch, adjustedDate);\n  \n  // Find Bengali month and date\n  let banglaMonthIndex = 0;\n  \n  for (let i = 0; i < BANGLA_MONTHS.length; i++) {\n    if (dayRemaining <= monthDays[i]) {\n      banglaMonthIndex = i;\n      break;\n    }\n    dayRemaining -= monthDays[i];\n  }\n  \n  const banglaDate = dayRemaining;\n  const banglaMonth = BANGLA_MONTHS[banglaMonthIndex];\n  const banglaDay = WEEK_DAYS[gregDay];\n  \n  // Calculate season (every two consecutive months indicate one season)\n  const banglaSeason = BANGLA_SEASONS[Math.floor(banglaMonthIndex / 2)];\n  \n  return {\n    year: banglaYear,\n    date: banglaDate,\n    month: banglaMonth,\n    day: banglaDay,\n    season: banglaSeason\n  };\n} ","import { BanglaDate, BongabdoOptions, FormatTokens } from './types';\nimport { DEFAULT_FORMAT } from './constants';\nimport { convertToBanglaDigits } from './utils';\n\n/**\n * Format a Bengali date according to the specified format\n */\nexport function formatBanglaDate(banglaDate: BanglaDate, options: BongabdoOptions = {}): string {\n  const {\n    format = DEFAULT_FORMAT,\n    showSeason = false,\n    showWeekDays = false,\n    convertToBanglaDigits: useBanglaDigits = true\n  } = options;\n  \n  // Create format tokens\n  const tokens: FormatTokens = {\n    DD: banglaDate.date.toString(),\n    MM: banglaDate.month,\n    YY: banglaDate.year.toString(),\n    WW: banglaDate.day,\n    SS: banglaDate.season\n  };\n  \n  let formattedString = format;\n  \n  // Replace format tokens\n  formattedString = formattedString.replace(/DD/g, tokens.DD);\n  formattedString = formattedString.replace(/MM/g, tokens.MM);\n  formattedString = formattedString.replace(/YY/g, tokens.YY);\n  \n  // Handle optional tokens\n  if (showWeekDays) {\n    formattedString = formattedString.replace(/WW/g, tokens.WW);\n  } else {\n    formattedString = formattedString.replace(/WW/g, '');\n  }\n  \n  if (showSeason) {\n    formattedString = formattedString.replace(/SS/g, tokens.SS);\n  } else {\n    formattedString = formattedString.replace(/SS/g, '');\n  }\n  \n  // Clean up any empty brackets or extra spaces\n  formattedString = formattedString\n    .replace(/\\[\\s*\\]/g, '') // Remove empty brackets\n    .replace(/\\(\\s*\\)/g, '') // Remove empty parentheses\n    .replace(/\\s+/g, ' ') // Replace multiple spaces with single space\n    .trim();\n  \n  // Convert to Bengali digits if requested\n  if (useBanglaDigits) {\n    formattedString = convertToBanglaDigits(formattedString);\n  }\n  \n  return formattedString;\n} ","import { BanglaDate, BongabdoOptions } from './types';\nimport { convertToBanglaDate } from './converter';\nimport { formatBanglaDate } from './formatter';\nimport { parseDateInput } from './utils';\n\n/**\n * Main function to convert a Gregorian date to Bengali calendar format\n */\nexport function bongabdo(dateInput?: Date | string, options: BongabdoOptions = {}): string {\n  const date = parseDateInput(dateInput);\n  const banglaDate = convertToBanglaDate(date);\n  return formatBanglaDate(banglaDate, options);\n}\n\n/**\n * Get raw Bengali date object without formatting\n */\nexport function getBanglaDate(dateInput?: Date | string): BanglaDate {\n  const date = parseDateInput(dateInput);\n  return convertToBanglaDate(date);\n}\n\n/**\n * Format an existing Bengali date object\n */\nexport function formatBanglaDateOnly(banglaDate: BanglaDate, options: BongabdoOptions = {}): string {\n  return formatBanglaDate(banglaDate, options);\n}\n\n// Export types\nexport type { BanglaDate, BongabdoOptions };\n\n// Export individual functions for advanced usage\nexport { convertToBanglaDate } from './converter';\nexport { formatBanglaDate } from './formatter';\nexport { parseDateInput, convertToBanglaDigits, isLeapYear } from './utils';\n\n// Export constants\nexport {\n  BANGLA_MONTHS,\n  WEEK_DAYS,\n  BANGLA_SEASONS,\n  TOTAL_MONTH_DAYS,\n  BANGLA_DIGITS,\n  DEFAULT_FORMAT\n} from './constants'; "]}