UNPKG

timezones-ical-library

Version:

Easy direct access to the most recent official timezone information for iCalendar files via JavaScript/TypeScript

344 lines (339 loc) 42.1 kB
"use strict"; var tzlib_tmp_scope = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/tzlib.ts var tzlib_exports = {}; __export(tzlib_exports, { tzlib_get_ical_block: () => tzlib_get_ical_block, tzlib_get_offset: () => tzlib_get_offset, tzlib_get_timezones: () => tzlib_get_timezones }); // src/db/zonesdb.json var zonesdb_default = { db: { Africa: { Abidjan: ["", 0], Accra: ["59/Abidjan", 0], Addis_Ababa: ["59/Nairobi", 1], Algiers: ["", 2], Asmara: ["59/Nairobi", 1], Asmera: ["59/Nairobi", 1], Bamako: ["59/Abidjan", 0], Bangui: ["59/Lagos", 3], Banjul: ["59/Abidjan", 0], Bissau: ["", 0], Blantyre: ["59/Maputo", 4], Brazzaville: ["59/Lagos", 3], Bujumbura: ["59/Maputo", 4], Cairo: ["", 5], Casablanca: ["", 6], Ceuta: ["", 7], Conakry: ["59/Abidjan", 0], Dakar: ["59/Abidjan", 0], Dar_es_Salaam: ["59/Nairobi", 1], Djibouti: ["59/Nairobi", 1], Douala: ["59/Lagos", 3], El_Aaiun: ["", 6], Freetown: ["59/Abidjan", 0], Gaborone: ["59/Maputo", 4], Harare: ["59/Maputo", 4], Johannesburg: ["", 8], Juba: ["", 4], Kampala: ["59/Nairobi", 1], Khartoum: ["", 4], Kigali: ["59/Maputo", 4], Kinshasa: ["59/Lagos", 3], Lagos: ["", 3], Libreville: ["59/Lagos", 3], Lome: ["59/Abidjan", 0], Luanda: ["59/Lagos", 3], Lubumbashi: ["59/Maputo", 4], Lusaka: ["59/Maputo", 4], Malabo: ["59/Lagos", 3], Maputo: ["", 4], Maseru: ["59/Johannesburg", 8], Mbabane: ["59/Johannesburg", 8], Mogadishu: ["59/Nairobi", 1], Monrovia: ["", 0], Nairobi: ["", 1], Ndjamena: ["", 3], Niamey: ["59/Lagos", 3], Nouakchott: ["59/Abidjan", 0], Ouagadougou: ["59/Abidjan", 0], "Porto-Novo": ["59/Lagos", 3], Sao_Tome: ["", 0], Timbuktu: ["59/Abidjan", 0], Tripoli: ["", 9], Tunis: ["", 2], Windhoek: ["", 4] }, America: { Adak: ["", 10], Anchorage: ["", 11], Anguilla: ["58/Puerto_Rico", 12], Antigua: ["58/Puerto_Rico", 12], Araguaina: ["", 13], Argentina: { Buenos_Aires: ["", 13], Catamarca: ["", 13], ComodRivadavia: ["58/Argentina/Catamarca", 13], Cordoba: ["", 13], Jujuy: ["", 13], La_Rioja: ["", 13], Mendoza: ["", 13], Rio_Gallegos: ["", 13], Salta: ["", 13], San_Juan: ["", 13], San_Luis: ["", 13], Tucuman: ["", 13], Ushuaia: ["", 13] }, Aruba: ["58/Puerto_Rico", 12], Asuncion: ["", 13], Atikokan: ["58/Panama", 14], Atka: ["58/Adak", 10], Bahia: ["", 13], Bahia_Banderas: ["", 15], Barbados: ["", 12], Belem: ["", 13], Belize: ["", 15], "Blanc-Sablon": ["58/Puerto_Rico", 12], Boa_Vista: ["", 16], Bogota: ["", 17], Boise: ["", 18], Buenos_Aires: ["58/Argentina/Buenos_Aires", 13], Cambridge_Bay: ["", 18], Campo_Grande: ["", 16], Cancun: ["", 14], Caracas: ["", 16], Catamarca: ["58/Argentina/Catamarca", 13], Cayenne: ["", 13], Cayman: ["58/Panama", 14], Chicago: ["", 19], Chihuahua: ["", 15], Ciudad_Juarez: ["", 18], Coral_Harbour: ["58/Panama", 14], Cordoba: ["58/Argentina/Cordoba", 13], Costa_Rica: ["", 15], Coyhaique: ["", 13], Creston: ["58/Phoenix", 20], Cuiaba: ["", 16], Curacao: ["58/Puerto_Rico", 12], Danmarkshavn: ["", 0], Dawson: ["", 20], Dawson_Creek: ["", 20], Denver: ["", 18], Detroit: ["", 21], Dominica: ["58/Puerto_Rico", 12], Edmonton: ["", 18], Eirunepe: ["", 17], El_Salvador: ["", 15], Ensenada: ["58/Tijuana", 22], Fort_Nelson: ["", 20], Fort_Wayne: ["58/Indiana/Indianapolis", 21], Fortaleza: ["", 13], Glace_Bay: ["", 23], Godthab: ["58/Nuuk", 24], Goose_Bay: ["", 25], Grand_Turk: ["", 26], Grenada: ["58/Puerto_Rico", 12], Guadeloupe: ["58/Puerto_Rico", 12], Guatemala: ["", 15], Guayaquil: ["", 17], Guyana: ["", 16], Halifax: ["", 23], Havana: ["", 27], Hermosillo: ["", 20], Indiana: { Indianapolis: ["", 21], Knox: ["", 19], Marengo: ["", 21], Petersburg: ["", 21], Tell_City: ["", 19], Vevay: ["", 21], Vincennes: ["", 21], Winamac: ["", 26] }, Indianapolis: ["58/Indiana/Indianapolis", 21], Inuvik: ["", 18], Iqaluit: ["", 21], Jamaica: ["", 14], Jujuy: ["58/Argentina/Jujuy", 13], Juneau: ["", 11], Kentucky: { Louisville: ["", 21], Monticello: ["", 21] }, Knox_IN: ["58/Indiana/Knox", 19], Kralendijk: ["58/Puerto_Rico", 12], La_Paz: ["", 16], Lima: ["", 17], Los_Angeles: ["", 22], Louisville: ["58/Kentucky/Louisville", 21], Lower_Princes: ["58/Puerto_Rico", 12], Maceio: ["", 13], Managua: ["", 15], Manaus: ["", 16], Marigot: ["58/Puerto_Rico", 12], Martinique: ["", 12], Matamoros: ["", 19], Mazatlan: ["", 20], Mendoza: ["58/Argentina/Mendoza", 13], Menominee: ["", 19], Merida: ["", 15], Metlakatla: ["", 11], Mexico_City: ["", 15], Miquelon: ["", 28], Moncton: ["", 23], Monterrey: ["", 15], Montevideo: ["", 13], Montreal: ["58/Toronto", 21], Montserrat: ["58/Puerto_Rico", 12], Nassau: ["58/Toronto", 21], New_York: ["", 21], Nipigon: ["58/Toronto", 21], Nome: ["", 11], Noronha: ["", 29], North_Dakota: { Beulah: ["", 19], Center: ["", 19], New_Salem: ["", 19] }, Nuuk: ["", 24], Ojinaga: ["", 19], Panama: ["", 14], Pangnirtung: ["58/Iqaluit", 21], Paramaribo: ["", 13], Phoenix: ["", 20], Port_of_Spain: ["58/Puerto_Rico", 12], "Port-au-Prince": ["", 21], Porto_Acre: ["58/Rio_Branco", 17], Porto_Velho: ["", 16], Puerto_Rico: ["", 12], Punta_Arenas: ["", 13], Rainy_River: ["58/Winnipeg", 19], Rankin_Inlet: ["", 19], Recife: ["", 13], Regina: ["", 15], Resolute: ["", 30], Rio_Branco: ["", 17], Rosario: ["58/Argentina/Cordoba", 13], Santa_Isabel: ["58/Tijuana", 22], Santarem: ["", 13], Santiago: ["", 31], Santo_Domingo: ["", 12], Sao_Paulo: ["", 13], Scoresbysund: ["", 32], Shiprock: ["58/Denver", 18], Sitka: ["", 11], St_Barthelemy: ["58/Puerto_Rico", 12], St_Johns: ["", 33], St_Kitts: ["58/Puerto_Rico", 12], St_Lucia: ["58/Puerto_Rico", 12], St_Thomas: ["58/Puerto_Rico", 12], St_Vincent: ["58/Puerto_Rico", 12], Swift_Current: ["", 15], Tegucigalpa: ["", 15], Thule: ["", 23], Thunder_Bay: ["58/Toronto", 21], Tijuana: ["", 22], Toronto: ["", 21], Tortola: ["58/Puerto_Rico", 12], Vancouver: ["", 20], Virgin: ["58/Puerto_Rico", 12], Whitehorse: ["", 20], Winnipeg: ["", 19], Yakutat: ["", 11], Yellowknife: ["58/Edmonton", 18] }, Antarctica: { Casey: ["", 34], Davis: ["", 35], DumontDUrville: ["Pacific/Port_Moresby", 36], Macquarie: ["", 37], Mawson: ["", 38], McMurdo: ["Pacific/Auckland", 39], Palmer: ["", 13], Rothera: ["", 13], South_Pole: ["Pacific/Auckland", 39], Syowa: ["Asia/Riyadh", 40], Troll: ["", 41], Vostok: ["", 38] }, Arctic: { Longyearbyen: ["Europe/Berlin", 7] }, Asia: { Aden: ["55/Riyadh", 40], Almaty: ["", 38], Amman: ["", 40], Anadyr: ["", 42], Aqtau: ["", 38], Aqtobe: ["", 38], Ashgabat: ["", 38], Ashkhabad: ["55/Ashgabat", 38], Atyrau: ["", 38], Baghdad: ["", 40], Bahrain: ["55/Qatar", 40], Baku: ["", 43], Bangkok: ["", 35], Barnaul: ["", 35], Beirut: ["", 44], Bishkek: ["", 45], Brunei: ["55/Kuching", 34], Calcutta: ["55/Kolkata", 46], Chita: ["", 47], Choibalsan: ["55/Ulaanbaatar", 34], Chongqing: ["55/Shanghai", 48], Chungking: ["55/Shanghai", 48], Colombo: ["", 49], Dacca: ["55/Dhaka", 45], Damascus: ["", 40], Dhaka: ["", 45], Dili: ["", 47], Dubai: ["", 43], Dushanbe: ["", 38], Famagusta: ["", 50], Gaza: ["", 51], Harbin: ["55/Shanghai", 48], Hebron: ["", 51], Ho_Chi_Minh: ["", 35], Hong_Kong: ["", 52], Hovd: ["", 35], Irkutsk: ["", 34], Istanbul: ["Europe/Istanbul", 40], Jakarta: ["", 53], Jayapura: ["", 54], Jerusalem: ["", 55], Kabul: ["", 56], Kamchatka: ["", 42], Karachi: ["", 57], Kashgar: ["55/Urumqi", 45], Kathmandu: ["", 58], Katmandu: ["55/Kathmandu", 58], Khandyga: ["", 47], Kolkata: ["", 46], Krasnoyarsk: ["", 35], Kuala_Lumpur: ["55/Singapore", 34], Kuching: ["", 34], Kuwait: ["55/Riyadh", 40], Macao: ["55/Macau", 48], Macau: ["", 48], Magadan: ["", 59], Makassar: ["", 60], Manila: ["", 61], Muscat: ["55/Dubai", 43], Nicosia: ["", 62], Novokuznetsk: ["", 35], Novosibirsk: ["", 35], Omsk: ["", 45], Oral: ["", 38], Phnom_Penh: ["55/Bangkok", 35], Pontianak: ["", 53], Pyongyang: ["", 63], Qatar: ["", 40], Qostanay: ["", 38], Qyzylorda: ["", 38], Rangoon: ["55/Yangon", 64], Riyadh: ["", 40], Saigon: ["55/Ho_Chi_Minh", 35], Sakhalin: ["", 59], Samarkand: ["", 38], Seoul: ["", 63], Shanghai: ["", 48], Singapore: ["", 34], Srednekolymsk: ["", 59], Taipei: ["", 48], Tashkent: ["", 38], Tbilisi: ["", 43], Tehran: ["", 65], Tel_Aviv: ["55/Jerusalem", 55], Thimbu: ["55/Thimphu", 45], Thimphu: ["", 45], Tokyo: ["", 66], Tomsk: ["", 35], Ujung_Pandang: ["55/Makassar", 60], Ulaanbaatar: ["", 34], Ulan_Bator: ["55/Ulaanbaatar", 34], Urumqi: ["", 45], "Ust-Nera": ["", 36], Vientiane: ["55/Bangkok", 35], Vladivostok: ["", 36], Yakutsk: ["", 47], Yangon: ["", 64], Yekaterinburg: ["", 38], Yerevan: ["", 43] }, Atlantic: { Azores: ["", 67], Bermuda: ["", 23], Canary: ["", 68], Cape_Verde: ["", 69], Faeroe: ["54/Faroe", 68], Faroe: ["", 68], Jan_Mayen: ["Europe/Berlin", 7], Madeira: ["", 68], Reykjavik: ["Africa/Abidjan", 0], South_Georgia: ["", 29], St_Helena: ["Africa/Abidjan", 0], Stanley: ["", 13] }, Australia: { ACT: ["53/Sydney", 37], Adelaide: ["", 70], Brisbane: ["", 71], Broken_Hill: ["", 70], Canberra: ["53/Sydney", 37], Currie: ["53/Hobart", 72], Darwin: ["", 73], Eucla: ["", 74], Hobart: ["", 72], LHI: ["53/Lord_Howe", 75], Lindeman: ["", 71], Lord_Howe: ["", 75], Melbourne: ["", 37], North: ["53/Darwin", 73], NSW: ["53/Sydney", 37], Perth: ["", 76], Queensland: ["53/Brisbane", 71], South: ["53/Adelaide", 70], Sydney: ["", 37], Tasmania: ["53/Hobart", 72], Victoria: ["53/Melbourne", 37], West: ["53/Perth", 76], Yancowinna: ["53/Broken_Hill", 70] }, Brazil: { Acre: ["America/Rio_Branco", 17], DeNoronha: ["America/Noronha", 29], East: ["America/Sao_Paulo", 13], West: ["America/Manaus", 16] }, Canada: { Atlantic: ["America/Halifax", 23], Central: ["America/Winnipeg", 19], Eastern: ["America/Toronto", 21], Mountain: ["America/Edmonton", 18], Newfoundland: ["America/St_Johns", 33], Pacific: ["America/Vancouver", 20], Saskatchewan: ["America/Regina", 15], Yukon: ["America/Whitehorse", 20] }, CET: ["Europe/Brussels", 7], Chile: { Continental: ["America/Santiago", 31], EasterIsland: ["Pacific/Easter", 77] }, CST6CDT: ["America/Chicago", 19], Cuba: ["America/Havana", 27], EET: ["Europe/Athens", 50], Egypt: ["Africa/Cairo", 5], Eire: ["Europe/Dublin", 78], EST: ["America/Panama", 14], EST5EDT: ["America/New_York", 21], Etc: { GMT: ["", 0], "GMT-0": ["49/GMT", 0], "GMT-1": ["", 6], "GMT-10": ["", 36], "GMT-11": ["", 59], "GMT-12": ["", 42], "GMT-13": ["", 79], "GMT-14": ["", 80], "GMT-2": ["", 81], "GMT-3": ["", 40], "GMT-4": ["", 43], "GMT-5": ["", 38], "GMT-6": ["", 45], "GMT-7": ["", 35], "GMT-8": ["", 34], "GMT-9": ["", 47], "GMT+0": ["49/GMT", 0], "GMT+1": ["", 69], "GMT+10": ["", 82], "GMT+11": ["", 83], "GMT+12": ["", 84], "GMT+2": ["", 29], "GMT+3": ["", 13], "GMT+4": ["", 16], "GMT+5": ["", 17], "GMT+6": ["", 85], "GMT+7": ["", 86], "GMT+8": ["", 87], "GMT+9": ["", 88], GMT0: ["49/GMT", 0], Greenwich: ["49/GMT", 0], UCT: ["49/UTC", 89], Universal: ["49/UTC", 89], UTC: ["", 89], Zulu: ["49/UTC", 89] }, Europe: { Amsterdam: ["48/Brussels", 7], Andorra: ["", 7], Astrakhan: ["", 43], Athens: ["", 50], Belfast: ["48/London", 90], Belgrade: ["", 7], Berlin: ["", 7], Bratislava: ["48/Prague", 7], Brussels: ["", 7], Bucharest: ["", 50], Budapest: ["", 7], Busingen: ["48/Zurich", 7], Chisinau: ["", 50], Copenhagen: ["48/Berlin", 7], Dublin: ["", 78], Gibraltar: ["", 7], Guernsey: ["48/London", 90], Helsinki: ["", 50], Isle_of_Man: ["48/London", 90], Istanbul: ["", 40], Jersey: ["48/London", 90], Kaliningrad: ["", 9], Kiev: ["48/Kyiv", 62], Kirov: ["", 91], Kyiv: ["", 62], Lisbon: ["", 92], Ljubljana: ["48/Belgrade", 7], London: ["", 90], Luxembourg: ["48/Brussels", 7], Madrid: ["", 7], Malta: ["", 7], Mariehamn: ["48/Helsinki", 50], Minsk: ["", 40], Monaco: ["48/Paris", 7], Moscow: ["", 91], Nicosia: ["Asia/Nicosia", 62], Oslo: ["48/Berlin", 7], Paris: ["", 7], Podgorica: ["48/Belgrade", 7], Prague: ["", 7], Riga: ["", 50], Rome: ["", 7], Samara: ["", 43], San_Marino: ["48/Rome", 7], Sarajevo: ["48/Belgrade", 7], Saratov: ["", 43], Simferopol: ["", 91], Skopje: ["48/Belgrade", 7], Sofia: ["", 50], Stockholm: ["48/Berlin", 7], Tallinn: ["", 50], Tirane: ["", 7], Tiraspol: ["48/Chisinau", 50], Ulyanovsk: ["", 43], Uzhgorod: ["48/Kyiv", 62], Vaduz: ["48/Zurich", 7], Vatican: ["48/Rome", 7], Vienna: ["", 7], Vilnius: ["", 50], Volgograd: ["", 91], Warsaw: ["", 7], Zagreb: ["48/Belgrade", 7], Zaporozhye: ["48/Kyiv", 62], Zurich: ["", 7] }, GB: ["Europe/London", 90], "GB-Eire": ["Europe/London", 90], GMT: ["Etc/GMT", 0], "GMT-0": ["Etc/GMT", 0], "GMT+0": ["Etc/GMT", 0], GMT0: ["Etc/GMT", 0], Greenwich: ["Etc/GMT", 0], Hongkong: ["Asia/Hong_Kong", 52], HST: ["Pacific/Honolulu", 93], Iceland: ["Africa/Abidjan", 0], Indian: { Antananarivo: ["Africa/Nairobi", 1], Chagos: ["", 45], Christmas: ["Asia/Bangkok", 35], Cocos: ["Asia/Yangon", 64], Comoro: ["Africa/Nairobi", 1], Kerguelen: ["47/Maldives", 38], Mahe: ["Asia/Dubai", 43], Maldives: ["", 38], Mauritius: ["", 43], Mayotte: ["Africa/Nairobi", 1], Reunion: ["Asia/Dubai", 43] }, Iran: ["Asia/Tehran", 65], Israel: ["Asia/Jerusalem", 55], Jamaica: ["America/Jamaica", 14], Japan: ["Asia/Tokyo", 66], Kwajalein: ["Pacific/Kwajalein", 42], Libya: ["Africa/Tripoli", 9], MET: ["Europe/Brussels", 7], Mexico: { BajaNorte: ["America/Tijuana", 22], BajaSur: ["America/Mazatlan", 20], General: ["America/Mexico_City", 15] }, MST: ["America/Phoenix", 20], MST7MDT: ["America/Denver", 18], Navajo: ["America/Denver", 18], NZ: ["Pacific/Auckland", 39], "NZ-CHAT": ["Pacific/Chatham", 94], Pacific: { Apia: ["", 79], Auckland: ["", 39], Bougainville: ["", 59], Chatham: ["", 94], Chuuk: ["45/Port_Moresby", 36], Easter: ["", 77], Efate: ["", 59], Enderbury: ["45/Kanton", 79], Fakaofo: ["", 79], Fiji: ["", 42], Funafuti: ["45/Tarawa", 42], Galapagos: ["", 85], Gambier: ["", 88], Guadalcanal: ["", 59], Guam: ["", 95], Honolulu: ["", 93], Johnston: ["45/Honolulu", 93], Kanton: ["", 79], Kiritimati: ["", 80], Kosrae: ["", 59], Kwajalein: ["", 42], Majuro: ["45/Tarawa", 42], Marquesas: ["", 96], Midway: ["45/Pago_Pago", 97], Nauru: ["", 42], Niue: ["", 83], Norfolk: ["", 98], Noumea: ["", 59], Pago_Pago: ["", 97], Palau: ["", 47], Pitcairn: ["", 87], Pohnpei: ["45/Guadalcanal", 59], Ponape: ["45/Guadalcanal", 59], Port_Moresby: ["", 36], Rarotonga: ["", 82], Saipan: ["45/Guam", 95], Samoa: ["45/Pago_Pago", 97], Tahiti: ["", 82], Tarawa: ["", 42], Tongatapu: ["", 79], Truk: ["45/Port_Moresby", 36], Wake: ["45/Tarawa", 42], Wallis: ["45/Tarawa", 42], Yap: ["45/Port_Moresby", 36] }, Poland: ["Europe/Warsaw", 7], Portugal: ["Europe/Lisbon", 92], PRC: ["Asia/Shanghai", 48], PST8PDT: ["America/Los_Angeles", 22], ROC: ["Asia/Taipei", 48], ROK: ["Asia/Seoul", 63], Singapore: ["Asia/Singapore", 34], Turkey: ["Europe/Istanbul", 40], UCT: ["Etc/UTC", 89], Universal: ["Etc/UTC", 89], US: { Alaska: ["America/Anchorage", 11], Aleutian: ["America/Adak", 10], Arizona: ["America/Phoenix", 20], Central: ["America/Chicago", 19], "East-Indiana": ["America/Indiana/Indianapolis", 21], Eastern: ["America/New_York", 21], Hawaii: ["Pacific/Honolulu", 93], "Indiana-Starke": ["America/Indiana/Knox", 19], Michigan: ["America/Detroit", 21], Mountain: ["America/Denver", 18], Pacific: ["America/Los_Angeles", 22], Samoa: ["Pacific/Pago_Pago", 97] }, UTC: ["Etc/UTC", 89], "W-SU": ["Europe/Moscow", 91], WET: ["Europe/Lisbon", 92], Zulu: ["Etc/UTC", 89] }, details: ["20260429T222214Z<n><bs><n><tz>GMT<n><of>+0000<n><ot>+0000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>EAT<n><of>+0300<n><ot>+0300<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>CET<n><of>+0100<n><ot>+0100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>WAT<n><of>+0100<n><ot>+0100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>CAT<n><of>+0200<n><ot>+0200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>EEST<n><of>+0200<n><ot>+0300<n><s>19700424T000000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR<n><ed><n><bs><n><tz>EET<n><of>+0300<n><ot>+0200<n><s>19701030T000000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR<n><es><n>", "20260429T222214Z<n><bs><n><tz>+01<n><of>+0100<n><ot>+0100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>CEST<n><of>+0100<n><ot>+0200<n><s>19700329T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>CET<n><of>+0200<n><ot>+0100<n><s>19701025T030000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>SAST<n><of>+0200<n><ot>+0200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>EET<n><of>+0200<n><ot>+0200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>HDT<n><of>-1000<n><ot>-0900<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>HST<n><of>-0900<n><ot>-1000<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>AKDT<n><of>-0900<n><ot>-0800<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>AKST<n><of>-0800<n><ot>-0900<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>AST<n><of>-0400<n><ot>-0400<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-03<n><of>-0300<n><ot>-0300<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>EST<n><of>-0500<n><ot>-0500<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>CST<n><of>-0600<n><ot>-0600<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-04<n><of>-0400<n><ot>-0400<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-05<n><of>-0500<n><ot>-0500<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>MDT<n><of>-0700<n><ot>-0600<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>MST<n><of>-0600<n><ot>-0700<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>CDT<n><of>-0600<n><ot>-0500<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>CST<n><of>-0500<n><ot>-0600<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>MST<n><of>-0700<n><ot>-0700<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>EDT<n><of>-0500<n><ot>-0400<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>EST<n><of>-0400<n><ot>-0500<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>PDT<n><of>-0800<n><ot>-0700<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>PST<n><of>-0700<n><ot>-0800<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>ADT<n><of>-0400<n><ot>-0300<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>AST<n><of>-0300<n><ot>-0400<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>-01<n><of>-0200<n><ot>-0100<n><s>19700328T230000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA<n><ed><n><bs><n><tz>-02<n><of>-0100<n><ot>-0200<n><s>19701025T000000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>AST<n><of>-0300<n><ot>-0400<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n><bd><n><tz>ADT<n><of>-0400<n><ot>-0300<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>EST<n><of>-0400<n><ot>-0500<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n><bd><n><tz>EDT<n><of>-0500<n><ot>-0400<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>CST<n><of>-0400<n><ot>-0500<n><s>19701101T010000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n><bd><n><tz>CDT<n><of>-0500<n><ot>-0400<n><s>19700308T000000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n>", "20260429T222214Z<n><bd><n><tz>-02<n><of>-0300<n><ot>-0200<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n><bs><n><tz>-03<n><of>-0200<n><ot>-0300<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>-02<n><of>-0200<n><ot>-0200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>CST<n><of>-0500<n><ot>-0600<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n><bd><n><tz>CDT<n><of>-0600<n><ot>-0500<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>-04<n><of>-0300<n><ot>-0400<n><s>19700405T000000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n><bd><n><tz>-03<n><of>-0400<n><ot>-0300<n><s>19700906T000000<n><r>FREQ=YEARLY;BYMONTH=9;BYDAY=1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>-02<n><of>-0100<n><ot>-0200<n><s>19701025T000000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n><bd><n><tz>-01<n><of>-0200<n><ot>-0100<n><s>19700328T230000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA<n><ed><n>", "20260429T222214Z<n><bs><n><tz>NST<n><of>-0230<n><ot>-0330<n><s>19701101T020000<n><r>FREQ=YEARLY;BYMONTH=11;BYDAY=1SU<n><es><n><bd><n><tz>NDT<n><of>-0330<n><ot>-0230<n><s>19700308T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=2SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>+08<n><of>+0800<n><ot>+0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+07<n><of>+0700<n><ot>+0700<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+10<n><of>+1000<n><ot>+1000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>AEST<n><of>+1100<n><ot>+1000<n><s>19700405T030000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n><bd><n><tz>AEDT<n><of>+1000<n><ot>+1100<n><s>19701004T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>+05<n><of>+0500<n><ot>+0500<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>NZDT<n><of>+1200<n><ot>+1300<n><s>19700927T020000<n><r>FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU<n><ed><n><bs><n><tz>NZST<n><of>+1300<n><ot>+1200<n><s>19700405T030000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>+03<n><of>+0300<n><ot>+0300<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>+02<n><of>+0000<n><ot>+0200<n><s>19700329T010000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>+00<n><of>+0200<n><ot>+0000<n><s>19701025T030000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>+12<n><of>+1200<n><ot>+1200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+04<n><of>+0400<n><ot>+0400<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>EEST<n><of>+0200<n><ot>+0300<n><s>19700329T000000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>EET<n><of>+0300<n><ot>+0200<n><s>19701025T000000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>+06<n><of>+0600<n><ot>+0600<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>IST<n><of>+0530<n><ot>+0530<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+09<n><of>+0900<n><ot>+0900<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>CST<n><of>+0800<n><ot>+0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+0530<n><of>+0530<n><ot>+0530<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>EEST<n><of>+0200<n><ot>+0300<n><s>19700329T030000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>EET<n><of>+0300<n><ot>+0200<n><s>19701025T040000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>EEST<n><of>+0200<n><ot>+0300<n><s>19700328T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SA<n><ed><n><bs><n><tz>EET<n><of>+0300<n><ot>+0200<n><s>19701024T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SA<n><es><n>", "20260429T222214Z<n><bs><n><tz>HKT<n><of>+0800<n><ot>+0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>WIB<n><of>+0700<n><ot>+0700<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>WIT<n><of>+0900<n><ot>+0900<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>IDT<n><of>+0200<n><ot>+0300<n><s>19700327T020000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR<n><ed><n><bs><n><tz>IST<n><of>+0300<n><ot>+0200<n><s>19701025T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>+0430<n><of>+0430<n><ot>+0430<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>PKT<n><of>+0500<n><ot>+0500<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+0545<n><of>+0545<n><ot>+0545<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+11<n><of>+1100<n><ot>+1100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>WITA<n><of>+0800<n><ot>+0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>PST<n><of>+0800<n><ot>+0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>EET<n><of>+0300<n><ot>+0200<n><s>19701025T040000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n><bd><n><tz>EEST<n><of>+0200<n><ot>+0300<n><s>19700329T030000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>KST<n><of>+0900<n><ot>+0900<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+0630<n><of>+0630<n><ot>+0630<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+0330<n><of>+0330<n><ot>+0330<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>JST<n><of>+0900<n><ot>+0900<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>+00<n><of>-0100<n><ot>+0000<n><s>19700329T000000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>-01<n><of>+0000<n><ot>-0100<n><s>19701025T010000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bd><n><tz>WEST<n><of>+0000<n><ot>+0100<n><s>19700329T010000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>WET<n><of>+0100<n><ot>+0000<n><s>19701025T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>-01<n><of>-0100<n><ot>-0100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>ACST<n><of>+1030<n><ot>+0930<n><s>19700405T030000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n><bd><n><tz>ACDT<n><of>+0930<n><ot>+1030<n><s>19701004T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>AEST<n><of>+1000<n><ot>+1000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>AEDT<n><of>+1000<n><ot>+1100<n><s>19701004T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=1SU<n><ed><n><bs><n><tz>AEST<n><of>+1100<n><ot>+1000<n><s>19700405T030000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>ACST<n><of>+0930<n><ot>+0930<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+0845<n><of>+0845<n><ot>+0845<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+1030<n><of>+1100<n><ot>+1030<n><s>19700405T020000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n><bd><n><tz>+11<n><of>+1030<n><ot>+1100<n><s>19701004T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>AWST<n><of>+0800<n><ot>+0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-06<n><of>-0500<n><ot>-0600<n><s>19700404T220000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SA<n><es><n><bd><n><tz>-05<n><of>-0600<n><ot>-0500<n><s>19700905T220000<n><r>FREQ=YEARLY;BYMONTH=9;BYDAY=1SA<n><ed><n>", "20260429T222214Z<n><bs><n><tz>IST<n><of>+0000<n><ot>+0100<n><s>19700329T010000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><es><n><bd><n><tz>GMT<n><of>+0100<n><ot>+0000<n><s>19701025T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>+13<n><of>+1300<n><ot>+1300<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+14<n><of>+1400<n><ot>+1400<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>+02<n><of>+0200<n><ot>+0200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-10<n><of>-1000<n><ot>-1000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-11<n><of>-1100<n><ot>-1100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-12<n><of>-1200<n><ot>-1200<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-06<n><of>-0600<n><ot>-0600<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-07<n><of>-0700<n><ot>-0700<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-08<n><of>-0800<n><ot>-0800<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-09<n><of>-0900<n><ot>-0900<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>UTC<n><of>+0000<n><ot>+0000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>BST<n><of>+0000<n><ot>+0100<n><s>19700329T010000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n><bs><n><tz>GMT<n><of>+0100<n><ot>+0000<n><s>19701025T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>MSK<n><of>+0300<n><ot>+0300<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>WET<n><of>+0100<n><ot>+0000<n><s>19701025T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU<n><es><n><bd><n><tz>WEST<n><of>+0000<n><ot>+0100<n><s>19700329T010000<n><r>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU<n><ed><n>", "20260429T222214Z<n><bs><n><tz>HST<n><of>-1000<n><ot>-1000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>+1345<n><of>+1245<n><ot>+1345<n><s>19700927T024500<n><r>FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU<n><ed><n><bs><n><tz>+1245<n><of>+1345<n><ot>+1245<n><s>19700405T034500<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n>", "20260429T222214Z<n><bs><n><tz>ChST<n><of>+1000<n><ot>+1000<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>-0930<n><of>-0930<n><ot>-0930<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bs><n><tz>SST<n><of>-1100<n><ot>-1100<n><s>19700101T000000<n><es><n>", "20260429T222214Z<n><bd><n><tz>+12<n><of>+1100<n><ot>+1200<n><s>19701004T020000<n><r>FREQ=YEARLY;BYMONTH=10;BYDAY=1SU<n><ed><n><bs><n><tz>+11<n><of>+1200<n><ot>+1100<n><s>19700405T030000<n><r>FREQ=YEARLY;BYMONTH=4;BYDAY=1SU<n><es><n>"], toplevel: ["Zulu", "WET", "W-SU", "Universal", "UTC", "UCT", "Turkey", "Singapore", "ROK", "ROC", "Portugal", "Poland", "PST8PDT", "PRC", "Navajo", "NZ", "NZ-CHAT", "MST7MDT", "MST", "MET", "Libya", "Kwajalein", "Japan", "Jamaica", "Israel", "Iran", "Iceland", "Hongkong", "HST", "Greenwich", "GMT0", "GMT", "GMT-0", "GMT+0", "GB", "GB-Eire", "Eire", "Egypt", "EST5EDT", "EST", "EET", "Cuba", "CST6CDT", "CET", "US", "Pacific", "Mexico", "Indian", "Europe", "Etc", "Chile", "Canada", "Brazil", "Australia", "Atlantic", "Asia", "Arctic", "Antarctica", "America", "Africa"] }; // src/utils.ts var tzDb = zonesdb_default; function escapeRegExp(string) { return string.replace(/[^+\-\w]/g, "\\$&"); } var shortenerMap = { "<br>": "<n>", "TZNAME:": "<tz>", "TZOFFSETFROM:": "<of>", "TZOFFSETTO:": "<ot>", "DTSTART:": "<s>", "RRULE:": "<r>", "BEGIN:DAYLIGHT": "<bd>", "END:DAYLIGHT": "<ed>", "BEGIN:STANDARD": "<bs>", "END:STANDARD": "<es>" }; function enrich_details(string) { for (const [key, value] of Object.entries(shortenerMap)) { string = string.replaceAll(value, key); } return string; } function map_db_data(dbData) { const raw = dbData.db; const topLevelZones = dbData.toplevel; const expandLocation = (location, fallbackPath) => { if (location === "") { return fallbackPath; } const match = location.match(/^(\d+)\/(.+)$/); if (match) { const zoneIndex = Number(match[1]); const zonePrefix = topLevelZones.find((_, index) => index === zoneIndex); if (zonePrefix != null) { return `${zonePrefix}/${match[2]}`; } } return location; }; const mappedData = {}; for (const [key, value] of Object.entries(raw)) { if (typeof value === "object" && !Array.isArray(value)) { mappedData[`${key}`] = {}; const subLevel1 = value; for (const [key2, value2] of Object.entries(subLevel1)) { if (typeof value2 === "object" && !Array.isArray(value2)) { mappedData[`${key}`][`${key2}`] = {}; const subLevel2 = value2; for (const [key3, value3] of Object.entries(subLevel2)) { const entry = value3; const fallbackPath = `${key}/${key2}/${key3}`; mappedData[`${key}`][`${key2}`][`${key3}`] = [ expandLocation(entry[0], fallbackPath), entry[1] ]; } } else { const entry = value2; const fallbackPath = `${key}/${key2}`; mappedData[`${key}`][`${key2}`] = [expandLocation(entry[0], fallbackPath), entry[1]]; } } } else { const entry = value; mappedData[`${key}`] = [expandLocation(entry[0], key), entry[1]]; } } return mappedData; } function get_tz_content(tzName) { const tzDbZones = map_db_data(tzDb); const nameParts = tzName.split("/"); let dbData; try { if (nameParts.length === 3) { const l1 = tzDbZones[`${nameParts[0]}`]; if (l1 && !Array.isArray(l1)) { const l2 = l1[`${nameParts[1]}`]; if (l2 && !Array.isArray(l2)) { dbData = l2[`${nameParts[2]}`]; } } } else if (nameParts.length === 2) { const l1 = tzDbZones[`${nameParts[0]}`]; if (l1 && !Array.isArray(l1)) { dbData = l1[`${nameParts[1]}`]; } } else { dbData = tzDbZones[`${nameParts[0]}`]; } if (dbData == null || !Array.isArray(dbData) || dbData.length < 2) { throw new Error("Given time zone not valid."); } const entry = dbData; return [entry[0], enrich_details(tzDb.details[entry[1]])]; } catch { console.error("Given time zone not valid."); return ""; } } // src/tzlib.ts /*! * @preserve * * ++++++++++++++++++++++++++++++++++++++ * Add to Calendar Time Zones iCal Library * ++++++++++++++++++++++++++++++++++++++ * * Creator: Jens Kuerschner (https://jekuer.com) * Project: https://github.com/add2cal/timezones-ical-library * License: Apache-2.0 * */ var tzDb2 = zonesdb_default; function tzlib_get_ical_block(tzName, jsonType = false) { const tzBlock = get_tz_content(tzName); if (typeof tzBlock === "string" || !tzBlock[1] || tzBlock[1] === "") { return ""; } const blockArray = tzBlock; const location = (function() { if (blockArray[0] == "") { return tzName; } else { return blockArray[0]; } })(); const tzidLine = "TZID=" + location; const output = [ "BEGIN:VTIMEZONE\r\nTZID:" + location + "\r\nX-LIC-LOCATION:" + location + "\r\nLAST-MODIFIED:" + blockArray[1].replace(/[^\w\-:,;=+/<>]/g, "").replace(/<br>/g, "\r\n") + "END:VTIMEZONE", tzidLine ]; if (jsonType) { return JSON.stringify(output); } return output; } function tzlib_get_offset(tzName, isoDate, isoTime) { const tzBlock = get_tz_content(tzName); if (typeof tzBlock === "string" || tzBlock[1] == null || tzBlock[1] == "") { return ""; } const blockArray = tzBlock; if (!isoDate.match(/^\d{4}-\d{2}-\d{2}$/)) { console.error("offset calculation failed: date misspelled [-> YYYY-MM-DD]"); return ""; } if (!isoTime.match(/^\d{2}:\d{2}$/)) { console.error("offset calculation failed: time misspelled [-> hh:mm]"); return ""; } if (!blockArray[1].match(/BEGIN:DAYLIGHT/i)) { const match = blockArray[1].match(/TZOFFSETTO:([+|-]\d{4})/i); return match ? match[1] : ""; } const dateString = isoDate + "T" + isoTime + ":00"; const date = new Date(dateString); const dateYear = date.getFullYear(); const dateMonth = date.getMonth() + 1; const dateDay = date.getDate(); const dateHour = date.getHours(); const timezoneData = blockArray[1].replace(/[^\w\-:,;=+/<>]/g, "").split("<br>"); const tzBreakpoints = { 1: {}, 2: {} }; let breakpointCount = 0; for (let i = 0; i < timezoneData.length; i++) { const line = timezoneData[i]; if (line.startsWith("TZOFFSETTO")) { breakpointCount++; if (tzBreakpoints[`${breakpointCount}`]) { tzBreakpoints[`${breakpointCount}`].offset = line.split(":")[1]; } } if (line.startsWith("DTSTART")) { if (tzBreakpoints[`${breakpointCount}`]) { tzBreakpoints[`${breakpointCount}`].hour = parseInt(line.substr(17, 2)); } } if (line.startsWith("RRULE")) { const rruleParts = line.split(";"); const rruleMonthPart = rruleParts[1].split("=")[1]; const rruleMonth = parseInt(rruleMonthPart); if (tzBreakpoints[`${breakpointCount}`]) { tzBreakpoints[`${breakpointCount}`].month = rruleMonth; tzBreakpoints[`${breakpointCount}`].day = rruleParts[2].split("=")[1]; } } } if (tzBreakpoints["1"].month !== void 0 && tzBreakpoints["2"].month !== void 0 && tzBreakpoints["1"].month > tzBreakpoints["2"].month) { [tzBreakpoints["1"], tzBreakpoints["2"]] = [tzBreakpoints["2"], tzBreakpoints["1"]]; } const bp1 = tzBreakpoints["1"]; const bp2 = tzBreakpoints["2"]; if (bp1.month === void 0 || bp2.month === void 0 || bp1.offset === void 0 || bp2.offset === void 0) { return ""; } if (dateMonth != bp1.month && dateMonth != bp2.month) { if (dateMonth < bp1.month || dateMonth > bp2.month) { return bp2.offset; } else { return bp1.offset; } } const theCase = (function() { return Object.keys(tzBreakpoints).find((key) => tzBreakpoints[`${key}`].month == dateMonth); })(); if (!theCase) return bp2.offset; const currentBp = tzBreakpoints[`${theCase}`]; const helperArrayWeekdays = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"]; const numberDays = new Date(dateYear, dateMonth, 0).getDate(); let weekdayCount = new Date(dateYear, dateMonth - 1, 1).getDay(); const weekdays = { SU: {}, MO: {}, TU: {}, WE: {}, TH: {}, FR: {}, SA: {} }; for (let d = 1; d <= numberDays; d++) { const wcIndex = helperArrayWeekdays[weekdayCount]; const occurence = Object.keys(weekdays[`${wcIndex}`]).length + 1; weekdays[`${wcIndex}`][`${occurence}`] = d; weekdayCount++; if (weekdayCount == 7) { weekdayCount = 0; } } const actualDay = (function() { if (!currentBp.day) return 0; if (currentBp.day[0] == "-") { const breakpointWeekday = currentBp.day.substr(2, 2); const dayIndex = Object.keys(weekdays[`${breakpointWeekday}`]).length + 1 - parseInt(currentBp.day[1]); return weekdays[`${breakpointWeekday}`][`${dayIndex}`]; } else { const breakpointWeekday = currentBp.day.substr(1, 2); return weekdays[`${breakpointWeekday}`][currentBp.day[0]]; } })(); if (dateDay > actualDay || dateDay == actualDay && dateHour >= (currentBp.hour || 0)) { return currentBp.offset || ""; } const fallbackCase = (function() { if (theCase == "1") { return "2"; } else { return "1"; } })(); return tzBreakpoints[`${fallbackCase}`].offset || ""; } function tzlib_get_timezones(jsonType = false) { const zoneNames = []; const map_db_data2 = (raw) => { const mappedData = {}; for (const [key, value] of Object.entries(raw)) { if (typeof value === "object" && !Array.isArray(value)) { mappedData[`${key}`] = {}; const subValue = value; for (const [key2, value2] of Object.entries(subValue)) { if (typeof value2 === "object" && !Array.isArray(value2)) { mappedData[`${key}`][`${key2}`] = {}; const subValue2 = value2; for (const [key3, value3] of Object.entries(subValue2)) { const entry = value3; const location = entry[0].replace( new RegExp(`^${escapeRegExp(key)}/${escapeRegExp(key2)}/`), `${tzDb2.toplevel.indexOf(key)}/${key2}/` ); mappedData[`${key}`][`${key2}`][`${key3}`] = [location, entry[1]]; } } else { const entry = value2; const location = entry[0].replace( new RegExp(`^${escapeRegExp(key)}/`), `${tzDb2.toplevel.indexOf(key)}/` ); mappedData[`${key}`][`${key2}`] = [location, entry[1]]; } } } else { const entry = value; const location = entry[0].replace( new RegExp(`^${escapeRegExp(key)}/`), `${tzDb2.toplevel.indexOf(key)}/` ); mappedData[`${key}`] = [location, entry[1]]; } } return mappedData; }; const tzDbZones = map_db_data2(tzDb2.db); const traverse_db = (obj, path = "") => { for (const [key, value] of Object.entries(obj)) { if (typeof value === "object" && !Array.isArray(value)) { traverse_db(value, path + key + "/"); } else { zoneNames.push(path + key); } } }; traverse_db(tzDbZones); if (jsonType) { return JSON.stringify(zoneNames); } return zoneNames; } return __toCommonJS(tzlib_exports); })(); if(typeof window !== "undefined"){ for(var k in tzlib_tmp_scope) window[k] = tzlib_tmp_scope[k]; }