{"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  const 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  return (zeroDigits[numberingSystem] = part.value.charCodeAt(0))\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    [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  return (partPatterns[locale] = 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, 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  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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"}