UNPKG

@protontech/timezone-support

Version:

Lightweight time zone support for your applications or other date libraries.

45 lines (38 loc) 965 B
import { unpack } from './unpack' let zones let names let links let instances function populateTimeZones ({ zones: zoneData, links: linkData }) { zones = {} names = zoneData.map(packed => { const name = packed.substr(0, packed.indexOf('|')) zones[name] = packed return name }) links = linkData.reduce((result, packed) => { const [ name, alias ] = packed.split('|') result[alias] = name return result }, {}) instances = {} } function listTimeZones () { return names.slice() } function getTimeZoneLinks () { return Object.assign({}, links) } function findTimeZone (alias) { const name = links[alias] || alias let timeZone = instances[name] if (!timeZone) { const packed = zones[name] if (!packed) { throw new Error(`Unknown time zone "${name}".`) } timeZone = instances[name] = unpack(packed) } return timeZone } export { populateTimeZones, listTimeZones, getTimeZoneLinks, findTimeZone }