| 2 | import type {UnpackedZoneData} from '#packages/ecma402-abstract/types/date-time.js' |
| 3 | |
| 4 | export function unpack(data: PackedData): Record<string, UnpackedZoneData[]> { |
| 5 | const abbrvs = data.abbrvs.split('|') |
| 6 | const offsets = data.offsets.split('|').map(n => parseInt(n, 36)) |
| 7 | const packedZones = data.zones |
| 8 | const zones: Record<string, UnpackedZoneData[]> = {} |
| 9 | for (const d of packedZones) { |
| 10 | const [zone, ...zoneData] = d.split('|') |
| 11 | |
| 12 | zones[zone] = zoneData |
| 13 | .map(z => z.split(',')) |
| 14 | .map(([ts, abbrvIndex, offsetIndex, dst]) => [ |
| 15 | ts === '' ? -Infinity : parseInt(ts, 36), |
| 16 | abbrvs[+abbrvIndex], |
| 17 | offsets[+offsetIndex], |
| 18 | dst === '1', |
| 19 | ]) |
| 20 | } |
| 21 | return zones |
| 22 | } |