{"version":3,"file":"lookup-convert.mjs","sources":["../src/lookup/unpack.js","../src/lookup/lookup.js","../src/convert/utc-date.js","../src/convert/convert.js"],"sourcesContent":["function charCodeToInt (charCode) {\n  if (charCode > 96) {\n    return charCode - 87\n  } else if (charCode > 64) {\n    return charCode - 29\n  }\n  return charCode - 48\n}\n\nfunction unpackBase60 (string) {\n  const parts = string.split('.')\n  const whole = parts[0]\n  const fractional = parts[1] || ''\n  let multiplier = 1\n  let start = 0\n  let out = 0\n  let sign = 1\n  // handle negative numbers\n  if (string.charCodeAt(0) === 45) {\n    start = 1\n    sign = -1\n  }\n  // handle digits before the decimal\n  for (let i = start, length = whole.length; i < length; ++i) {\n    const num = charCodeToInt(whole.charCodeAt(i))\n    out = (60 * out) + num\n  }\n  // handle digits after the decimal\n  // istanbul ignore next\n  for (let i = 0, length = fractional.length; i < length; ++i) {\n    const num = charCodeToInt(fractional.charCodeAt(i))\n    multiplier = multiplier / 60\n    out += num * multiplier\n  }\n  return out * sign\n}\n\nfunction arrayToInt (array) {\n  for (let i = 0, length = array.length; i < length; ++i) {\n    array[i] = unpackBase60(array[i])\n  }\n}\n\nfunction intToUntil (array, length) {\n  for (let i = 0; i < length; ++i) {\n    array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000))\n  }\n  array[length - 1] = Infinity\n}\n\nfunction mapIndices (source, indices) {\n  const out = []\n  for (let i = 0, length = indices.length; i < length; ++i) {\n    out[i] = source[indices[i]]\n  }\n  return out\n}\n\nfunction unpack (string) {\n  const data = string.split('|')\n  let offsets = data[2].split(' ')\n  const indices = data[3].split('')\n  const untils = data[4].split(' ')\n\n  arrayToInt(offsets)\n  arrayToInt(indices)\n  arrayToInt(untils)\n  intToUntil(untils, indices.length)\n\n  const name = data[0]\n  const abbreviations = mapIndices((data[1].split(' ')), indices)\n  const population = data[5] | 0\n  offsets = mapIndices(offsets, indices)\n\n  return { name, abbreviations, offsets, untils, population }\n}\n\nexport { unpack }\n","import { unpack } from './unpack'\n\nlet zones\nlet names\nlet links\nlet instances\n\nfunction populateTimeZones ({ zones: zoneData, links: linkData }) {\n  zones = {}\n  names = zoneData.map(packed => {\n    const name = packed.substr(0, packed.indexOf('|'))\n    zones[name] = packed\n    return name\n  })\n  links = linkData.reduce((result, packed) => {\n    const [ name, alias ] = packed.split('|')\n    result[alias] = name\n    return result\n  }, {})\n  instances = {}\n}\n\nfunction listTimeZones () {\n  return names.slice()\n}\n\nfunction getTimeZoneLinks () {\n  return Object.assign({}, links)\n}\n\nfunction findTimeZone (alias) {\n  const name = links[alias] || alias\n  let timeZone = instances[name]\n  if (!timeZone) {\n    const packed = zones[name]\n    if (!packed) {\n      throw new Error(`Unknown time zone \"${name}\".`)\n    }\n    timeZone = instances[name] = unpack(packed)\n  }\n  return timeZone\n}\n\nexport { populateTimeZones, listTimeZones, getTimeZoneLinks, findTimeZone }\n","function getUnixTimeFromUTC ({ year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0 }) {\n  return Date.UTC(year, month - 1, day, hours, minutes, seconds, milliseconds)\n}\n\nfunction getDateFromTime ({ year, month, day, hours = 0, minutes = 0, seconds = 0, milliseconds = 0 }) {\n  return new Date(year, month - 1, day, hours, minutes, seconds, milliseconds)\n}\n\nfunction getUTCTime (date) {\n  const year = date.getUTCFullYear()\n  const month = date.getUTCMonth() + 1\n  const day = date.getUTCDate()\n  const dayOfWeek = date.getUTCDay()\n  const hours = date.getUTCHours()\n  const minutes = date.getUTCMinutes()\n  const seconds = date.getUTCSeconds() || 0\n  const milliseconds = date.getUTCMilliseconds() || 0\n  return { year, month, day, dayOfWeek, hours, minutes, seconds, milliseconds }\n}\n\nfunction getLocalTime (date) {\n  const year = date.getFullYear()\n  const month = date.getMonth() + 1\n  const day = date.getDate()\n  const dayOfWeek = date.getDay()\n  const hours = date.getHours()\n  const minutes = date.getMinutes()\n  const seconds = date.getSeconds() || 0\n  const milliseconds = date.getMilliseconds() || 0\n  return { year, month, day, dayOfWeek, hours, minutes, seconds, milliseconds }\n}\n\nfunction getDateTime (date, options) {\n  const { useUTC } = options || {}\n  let extract\n  if (useUTC === true) {\n    extract = getUTCTime\n  } else if (useUTC === false) {\n    extract = getLocalTime\n  } else {\n    throw new Error('Extract local or UTC date? Set useUTC option.')\n  }\n  return extract(date)\n}\n\nexport { getUnixTimeFromUTC, getDateFromTime, getUTCTime, getLocalTime, getDateTime }\n","import { getUnixTimeFromUTC, getDateFromTime, getUTCTime, getLocalTime, getDateTime } from './utc-date'\n\nfunction findTransitionIndex (unixTime, timeZone) {\n  const { untils } = timeZone\n  for (let i = 0, length = untils.length; i < length; ++i) {\n    if (unixTime < untils[i]) {\n      return i\n    }\n  }\n}\n\nfunction getTransition (unixTime, timeZone) {\n  const transitionIndex = findTransitionIndex(unixTime, timeZone)\n  const abbreviation = timeZone.abbreviations[transitionIndex]\n  const offset = timeZone.offsets[transitionIndex]\n  return { abbreviation, offset }\n}\n\nfunction attachEpoch (time, unixTime) {\n  Object.defineProperty(time, 'epoch', { value: unixTime })\n}\n\nfunction getUTCOffset (date, timeZone) {\n  const unixTime = typeof date === 'number' ? date : date.getTime()\n  const { abbreviation, offset } = getTransition(unixTime, timeZone)\n  return { abbreviation, offset }\n}\n\nfunction getZonedTime (date, timeZone) {\n  const gotUnixTime = typeof date === 'number'\n  const unixTime = gotUnixTime ? date : date.getTime()\n  const { abbreviation, offset } = getTransition(unixTime, timeZone)\n  if (gotUnixTime || offset) {\n    date = new Date(unixTime - offset * 60000)\n  }\n  const time = getUTCTime(date)\n  time.zone = { abbreviation, offset }\n  attachEpoch(time, unixTime)\n  return time\n}\n\nfunction getUnixTime (time, timeZone) {\n  let { zone, epoch } = time\n  if (epoch) {\n    if (timeZone) {\n      throw new Error('Both epoch and other time zone specified. Omit the other one.')\n    }\n    return epoch\n  }\n  const unixTime = getUnixTimeFromUTC(time)\n  if (zone) {\n    if (timeZone) {\n      throw new Error('Both own and other time zones specified. Omit the other one.')\n    }\n  } else {\n    if (!timeZone) {\n      throw new Error('Missing other time zone.')\n    }\n    zone = getTransition(unixTime, timeZone)\n  }\n  return unixTime + zone.offset * 60000\n}\n\nfunction setTimeZone (time, timeZone, options) {\n  if (time instanceof Date) {\n    time = getDateTime(time, options)\n  } else {\n    const { year, month, day, hours, minutes, seconds = 0, milliseconds = 0 } = time\n    time = { year, month, day, hours, minutes, seconds, milliseconds }\n  }\n  const unixTime = getUnixTimeFromUTC(time)\n  const utcDate = new Date(unixTime)\n  time.dayOfWeek = utcDate.getUTCDay()\n  const { abbreviation, offset } = getTransition(unixTime, timeZone)\n  time.zone = { abbreviation, offset }\n  attachEpoch(time, unixTime + offset * 60000)\n  return time\n}\n\nfunction convertTimeToDate (time) {\n  const { epoch } = time\n  if (epoch !== undefined) {\n    return new Date(epoch)\n  }\n  const { offset } = time.zone || {}\n  if (offset === undefined) {\n    return getDateFromTime(time)\n  }\n  const unixTime = getUnixTimeFromUTC(time)\n  return new Date(unixTime + offset * 60000)\n}\n\nfunction convertDateToTime (date) {\n  const time = getLocalTime(date)\n  const match = /\\(([^)]+)\\)$/.exec(date.toTimeString())\n  time.zone = {\n    abbreviation: match ? match[1]\n      // istanbul ignore next\n      : '???',\n    offset: date.getTimezoneOffset()\n  }\n  attachEpoch(time, date.getTime())\n  return time\n}\n\nexport { getUTCOffset, getZonedTime, getUnixTime, setTimeZone, convertTimeToDate, convertDateToTime }\n"],"names":["charCodeToInt","charCode","unpackBase60","string","parts","split","whole","fractional","multiplier","start","out","sign","charCodeAt","i","length","num","arrayToInt","array","intToUntil","Math","round","Infinity","mapIndices","source","indices","unpack","data","offsets","untils","name","abbreviations","population","zones","names","links","instances","populateTimeZones","zoneData","linkData","map","packed","substr","indexOf","reduce","result","alias","listTimeZones","slice","getTimeZoneLinks","Object","assign","findTimeZone","timeZone","Error","getUnixTimeFromUTC","year","month","day","hours","minutes","seconds","milliseconds","Date","UTC","getDateFromTime","getUTCTime","date","getUTCFullYear","getUTCMonth","getUTCDate","dayOfWeek","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getLocalTime","getFullYear","getMonth","getDate","getDay","getHours","getMinutes","getSeconds","getMilliseconds","getDateTime","options","useUTC","extract","findTransitionIndex","unixTime","getTransition","transitionIndex","abbreviation","offset","attachEpoch","time","defineProperty","value","getUTCOffset","getTime","getZonedTime","gotUnixTime","zone","getUnixTime","epoch","setTimeZone","utcDate","convertTimeToDate","undefined","convertDateToTime","match","exec","toTimeString","getTimezoneOffset"],"mappings":"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"}