{"version":3,"file":"index.cjs","sources":["zero-digits.js","part-patterns.js","testing-date.js","index.js"],"sourcesContent":["const zeroDigits = {}\n\nexport default function getZeroDigit(numberingSystem) {\n  let zeroDigit = zeroDigits[numberingSystem]\n  if (zeroDigit) return zeroDigit\n  const parts = new Intl.NumberFormat('en', { numberingSystem }).formatToParts(0)\n  const part = parts.find(({ type }) => type === 'integer')\n  zeroDigit = part.value.charCodeAt(0)\n  zeroDigits[numberingSystem] = zeroDigit\n  return zeroDigit\n}\n","const partTokens = {\n  era: ['G', 'GGGG'],\n  month: ['MMM', 'MMMM'],\n  weekday: ['E', 'EEEE']\n}\nconst partPatterns = {}\n\nfunction getPartValue(locale, date, part, style) {\n  const options = { day: 'numeric', [part]: style }\n  const parts = new Intl.DateTimeFormat(locale, options).formatToParts(date)\n  return parts.find(({ type }) => type === part).value\n}\n\nfunction getPartValues(locale, date, style) {\n  const values = {}\n  for (const part in partTokens) {\n    values[part] = getPartValue(locale, date, part, style)\n  }\n  return values\n}\n\nfunction valueToPattern(shortValues, longValues, part) {\n  const shortValue = shortValues[part]\n  const longValue = longValues[part]\n  const [shortToken, longToken] = partTokens[part]\n  return shortValue !== longValue ? {\n    [shortValue]: () => shortToken,\n    [longValue]: () => longToken\n  } : {\n    /* c8 ignore next */\n    [shortValue]: style => style === 'short' || style === 'medium' ? shortToken : longToken\n  }\n}\n\nfunction getPartPatterns(locale, date) {\n  let patterns = partPatterns[locale]\n  if (patterns) return patterns\n  const shortValues = getPartValues(locale, date, 'short')\n  const longValues = getPartValues(locale, date, 'long')\n  patterns = {}\n  for (const part in partTokens) {\n    patterns[part] = valueToPattern(shortValues, longValues, part)\n  }\n  partPatterns[locale] = patterns\n  return patterns\n}\n\nexport default function getPartPattern(locale, date, part, style, value) {\n  const pattern = getPartPatterns(locale, date)[part][value]\n  if (pattern) return pattern(style)\n  const tokens = partTokens[part]\n  /* c8 ignore next */\n  return style === 'short' || style === 'medium' ? tokens[0] : tokens[1]\n}\n","export default function getTestingDate(calendar) {\n  let month\n  let day\n  if (calendar === 'islamic-umalqura') {\n    month = 4\n    day = 21\n  } else if (calendar === 'persian') {\n    month = 3\n    day = 23\n  } else {\n    month = 1\n    day = 3\n  }\n  return new Date(1, month, day, 4, 5, 6) // 1901-02-03 04:05:06\n}\n","import getZeroDigit from './zero-digits.js'\nimport getPartPattern from './part-patterns.js'\nimport getTestingDate from './testing-date.js'\n\nfunction escapeTokens(value) {\n  // return value.replace(/([\\p{Alphabetic}\\p{Mark}\\p{Decimal_Number}\\p{Connector_Punctuation}\\p{Join_Control}]+)/ug, '\\'$1\\'')\n  return value.replace(/([A-Za-z]+)/g, '\\'$1\\'')\n}\n\nconst patternAnalyser = {\n  literal(value) {\n    return escapeTokens(value)\n  },\n  year(value) { // 1901, 01\n    return value.length === 4 ? 'y' : 'yy'\n  },\n  month(value, { locale, style, zeroDigit, date }) { // 2, 02, Feb., February\n    if (/^\\p{Decimal_Number}+$/u.test(value)) {\n      const firstDigit = value.charCodeAt(0)\n      return firstDigit === zeroDigit ? 'MM' : 'M'\n    }\n    return getPartPattern(locale, date, 'month', style, value)\n  },\n  day(value, { zeroDigit }) { // 3, 03\n    const firstDigit = value.charCodeAt(0)\n    return firstDigit === zeroDigit ? 'dd' : 'd'\n  },\n  hour(value, { hourCycle, zeroDigit }) { // 4, 04\n    const firstDigit = value.charCodeAt(0)\n    switch (hourCycle) {\n      case 'h23':\n        return firstDigit === zeroDigit ? 'HH' : 'H'\n      case 'h12':\n        return firstDigit === zeroDigit ? 'hh' : 'h'\n        /* c8 ignore next 4 */\n      case 'h24':\n        return firstDigit === zeroDigit ? 'kk' : 'k'\n      default: // h11\n        return firstDigit === zeroDigit ? 'KK' : 'K'\n    }\n  },\n  minute(value, { zeroDigit }) { // 5, 05\n    const firstDigit = value.charCodeAt(0)\n    return firstDigit === zeroDigit ? 'mm' : 'm'\n  },\n  second(value, { zeroDigit }) { // 6, 06\n    const firstDigit = value.charCodeAt(0)\n    return firstDigit === zeroDigit ? 'ss' : 's'\n  },\n  dayPeriod(_value, { locale }) { // AM, PM\n    return locale === 'zh-hant' ? 'B' : 'a'\n  },\n  era(value, { locale, style, date }) {\n    return getPartPattern(locale, date, 'era', style, value)\n  },\n  weekday(value, { locale, style, date }) { // Sun, Sunday\n    return getPartPattern(locale, date, 'weekday', style, value)\n  },\n  /* c8 ignore next 3 */\n  timeZoneName(value) { // GMT+1, GMT+01:00\n    return value.includes(':') || value.includes('.') || /\\d{4}/.test(value) ? 'zzzz' : 'z'\n  }\n}\n\n// Enforce lower-case and dash as a delimiter\nfunction normalizeLocale(locale) {\n  return locale.toLowerCase().replace('_', '-')\n}\n\n// Cut the first part of the locale before the first dash (language)\nfunction getLanguage(locale) {\n  const separator = locale.indexOf('-')\n  return separator > 0 && locale.substring(0, separator)\n}\n\nfunction inferPattern(locale, options) {\n  locale = normalizeLocale(locale)\n  const language = getLanguage(locale)\n  let formatter = new Intl.DateTimeFormat(locale, options)\n  let { locale: resolvedLocale, hourCycle, numberingSystem, calendar } = formatter.resolvedOptions()\n\n  // If language with country is not supported - the created formatter uses\n  // a different (fallback) locale - try the language alone\n  if (locale !== resolvedLocale.toLowerCase()) {\n    if (language) {\n      formatter = new Intl.DateTimeFormat(language, options);\n      ({ locale: resolvedLocale, hourCycle } = formatter.resolvedOptions())\n    }\n    if (language !== resolvedLocale) {\n      throw new Error(`Requested locale \"${locale}\" differs from resolved \"${resolvedLocale}\".`)\n    }\n  }\n\n  const date = getTestingDate(calendar)\n  const dateParts = formatter.formatToParts(date)\n  const zeroDigit = getZeroDigit(numberingSystem) // zeroDigits[numberingSystem]\n  const patternOptions = {\n    locale,\n    style: options.dateStyle,\n    hourCycle,\n    zeroDigit,\n    date\n  }\n  let pattern = ''\n  for (const { type, value } of dateParts) {\n    pattern += patternAnalyser[type](value, patternOptions)\n  }\n  return pattern\n}\n\nconst patterns = {}\n\nexport function getDateTimeFormatPattern(locale, dateStyle, timeStyle) {\n  if (typeof locale !== 'string') {\n    ({ locale, dateStyle, timeStyle } = locale.resolvedOptions())\n  } else if (typeof dateStyle === 'string') {\n    dateStyle = { dateStyle, timeStyle }\n  }\n  const key = `${locale}:${JSON.stringify(dateStyle)}`\n  let pattern = patterns[key]\n  if (!pattern) {\n    pattern = patterns[key] = inferPattern(locale, dateStyle)\n  }\n  return pattern\n}\n"],"names":[],"mappings":"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"}