UNPKG

@sffjunkie/astral

Version:

calculations for the position of the sun and the moon

292 lines (291 loc) 33.6 kB
"use strict"; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __values = (this && this.__values) || function(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); }; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); var index_1 = require("./index"); var error_1 = require("./error"); // #region Locations var _LOCATION_INFO = "Abu Dhabi,UAE,Asia/Dubai,24\u00B028'N,54\u00B022'E\nAbu Dhabi,United Arab Emirates,Asia/Dubai,24\u00B028'N,54\u00B022'E\nAbuja,Nigeria,Africa/Lagos,09\u00B005'N,07\u00B032'E\nAccra,Ghana,Africa/Accra,05\u00B035'N,00\u00B006'W\nAddis Ababa,Ethiopia,Africa/Addis_Ababa,09\u00B002'N,38\u00B042'E\nAdelaide,Australia,Australia/Adelaide,34\u00B056'S,138\u00B036'E\nAl Jubail,Saudi Arabia,Asia/Riyadh,25\u00B024'N,49\u00B039'W\nAlgiers,Algeria,Africa/Algiers,36\u00B042'N,03\u00B008'E\nAmman,Jordan,Asia/Amman,31\u00B057'N,35\u00B052'E\nAmsterdam,Netherlands,Europe/Amsterdam,52\u00B023'N,04\u00B054'E\nAndorra la Vella,Andorra,Europe/Andorra,42\u00B031'N,01\u00B032'E\nAnkara,Turkey,Europe/Istanbul,39\u00B057'N,32\u00B054'E\nAntananarivo,Madagascar,Indian/Antananarivo,18\u00B055'S,47\u00B031'E\nApia,Samoa,Pacific/Apia,13\u00B050'S,171\u00B050'W\nAshgabat,Turkmenistan,Asia/Ashgabat,38\u00B000'N,57\u00B050'E\nAsmara,Eritrea,Africa/Asmara,15\u00B019'N,38\u00B055'E\nAstana,Kazakhstan,Asia/Qyzylorda,51\u00B010'N,71\u00B030'E\nAsuncion,Paraguay,America/Asuncion,25\u00B010'S,57\u00B030'W\nAthens,Greece,Europe/Athens,37\u00B058'N,23\u00B046'E\nAvarua,Cook Islands,Etc/GMT-10,21\u00B012'N,159\u00B046'W\nBaghdad,Iraq,Asia/Baghdad,33\u00B020'N,44\u00B030'E\nBaku,Azerbaijan,Asia/Baku,40\u00B029'N,49\u00B056'E\nBamako,Mali,Africa/Bamako,12\u00B034'N,07\u00B055'W\nBandar Seri Begawan,Brunei Darussalam,Asia/Brunei,04\u00B052'N,115\u00B000'E\nBangkok,Thailand,Asia/Bangkok,13\u00B045'N,100\u00B035'E\nBangui,Central African Republic,Africa/Bangui,04\u00B023'N,18\u00B035'E\nBanjul,Gambia,Africa/Banjul,13\u00B028'N,16\u00B040'W\nBasse-Terre,Guadeloupe,America/Guadeloupe,16\u00B000'N,61\u00B044'W\nBasseterre,Saint Kitts and Nevis,America/St_Kitts,17\u00B017'N,62\u00B043'W\nBeijing,China,Asia/Harbin,39\u00B055'N,116\u00B020'E\nBeirut,Lebanon,Asia/Beirut,33\u00B053'N,35\u00B031'E\nBelfast,Northern Ireland,Europe/Belfast,54\u00B036'N,5\u00B056'W\nBelgrade,Yugoslavia,Europe/Belgrade,44\u00B050'N,20\u00B037'E\nBelmopan,Belize,America/Belize,17\u00B018'N,88\u00B030'W\nBerlin,Germany,Europe/Berlin,52\u00B030'N,13\u00B025'E\nBern,Switzerland,Europe/Zurich,46\u00B057'N,07\u00B028'E\nBishkek,Kyrgyzstan,Asia/Bishkek,42\u00B054'N,74\u00B046'E\nBissau,Guinea-Bissau,Africa/Bissau,11\u00B045'N,15\u00B045'W\nBloemfontein,South Africa,Africa/Johannesburg,29\u00B012'S,26\u00B007'E\nBogota,Colombia,America/Bogota,04\u00B034'N,74\u00B000'W\nBrasilia,Brazil,Brazil/East,15\u00B047'S,47\u00B055'W\nBratislava,Slovakia,Europe/Bratislava,48\u00B010'N,17\u00B007'E\nBrazzaville,Congo,Africa/Brazzaville,04\u00B009'S,15\u00B012'E\nBridgetown,Barbados,America/Barbados,13\u00B005'N,59\u00B030'W\nBrisbane,Australia,Australia/Brisbane,27\u00B030'S,153\u00B001'E\nBrussels,Belgium,Europe/Brussels,50\u00B051'N,04\u00B021'E\nBucharest,Romania,Europe/Bucharest,44\u00B027'N,26\u00B010'E\nBucuresti,Romania,Europe/Bucharest,44\u00B027'N,26\u00B010'E\nBudapest,Hungary,Europe/Budapest,47\u00B029'N,19\u00B005'E\nBuenos Aires,Argentina,America/Buenos_Aires,34\u00B062'S,58\u00B044'W\nBujumbura,Burundi,Africa/Bujumbura,03\u00B016'S,29\u00B018'E\nCairo,Egypt,Africa/Cairo,30\u00B001'N,31\u00B014'E\nCanberra,Australia,Australia/Canberra,35\u00B015'S,149\u00B008'E\nCape Town,South Africa,Africa/Johannesburg,33\u00B055'S,18\u00B022'E\nCaracas,Venezuela,America/Caracas,10\u00B030'N,66\u00B055'W\nCastries,Saint Lucia,America/St_Lucia,14\u00B002'N,60\u00B058'W\nCayenne,French Guiana,America/Cayenne,05\u00B005'N,52\u00B018'W\nCharlotte Amalie,United States of Virgin Islands,America/Virgin,18\u00B021'N,64\u00B056'W\nChisinau,Moldova,Europe/Chisinau,47\u00B002'N,28\u00B050'E\nConakry,Guinea,Africa/Conakry,09\u00B029'N,13\u00B049'W\nCopenhagen,Denmark,Europe/Copenhagen,55\u00B041'N,12\u00B034'E\nCotonou,Benin,Africa/Porto-Novo,06\u00B023'N,02\u00B042'E\nDakar,Senegal,Africa/Dakar,14\u00B034'N,17\u00B029'W\nDamascus,Syrian Arab Republic,Asia/Damascus,33\u00B030'N,36\u00B018'E\nDammam,Saudi Arabia,Asia/Riyadh,26\u00B030'N,50\u00B012'E\nDarwin,Australia,Australia/Darwin,12\u00B026'S,130\u00B050'E\nDhaka,Bangladesh,Asia/Dhaka,23\u00B043'N,90\u00B026'E\nDili,East Timor,Asia/Dili,08\u00B029'S,125\u00B034'E\nDjibouti,Djibouti,Africa/Djibouti,11\u00B008'N,42\u00B020'E\nDodoma,United Republic of Tanzania,Africa/Dar_es_Salaam,06\u00B008'S,35\u00B045'E\nDoha,Qatar,Asia/Qatar,25\u00B015'N,51\u00B035'E\nDouglas,Isle Of Man,Europe/London,54\u00B09'N,4\u00B029'W\nDublin,Ireland,Europe/Dublin,53\u00B021'N,06\u00B015'W\nDushanbe,Tajikistan,Asia/Dushanbe,38\u00B033'N,68\u00B048'E\nEl Aaiun,Morocco,UTC,27\u00B09'N,13\u00B012'W\nFort-de-France,Martinique,America/Martinique,14\u00B036'N,61\u00B002'W\nFreetown,Sierra Leone,Africa/Freetown,08\u00B030'N,13\u00B017'W\nFunafuti,Tuvalu,Pacific/Funafuti,08\u00B031'S,179\u00B013'E\nGaborone,Botswana,Africa/Gaborone,24\u00B045'S,25\u00B057'E\nGeorge Town,Cayman Islands,America/Cayman,19\u00B020'N,81\u00B024'W\nGeorgetown,Guyana,America/Guyana,06\u00B050'N,58\u00B012'W\nGibraltar,Gibraltar,Europe/Gibraltar,36\u00B09'N,5\u00B021'W\nGuatemala,Guatemala,America/Guatemala,14\u00B040'N,90\u00B022'W\nHanoi,Viet Nam,Asia/Saigon,21\u00B005'N,105\u00B055'E\nHarare,Zimbabwe,Africa/Harare,17\u00B043'S,31\u00B002'E\nHavana,Cuba,America/Havana,23\u00B008'N,82\u00B022'W\nHelsinki,Finland,Europe/Helsinki,60\u00B015'N,25\u00B003'E\nHobart,Tasmania,Australia/Hobart,42\u00B053'S,147\u00B019'E\nHong Kong,China,Asia/Hong_Kong,22\u00B016'N,114\u00B009'E\nHoniara,Solomon Islands,Pacific/Guadalcanal,09\u00B027'S,159\u00B057'E\nIslamabad,Pakistan,Asia/Karachi,33\u00B040'N,73\u00B010'E\nJakarta,Indonesia,Asia/Jakarta,06\u00B009'S,106\u00B049'E\nJerusalem,Israel,Asia/Jerusalem,31\u00B047'N,35\u00B012'E\nJuba,South Sudan,Africa/Juba,4\u00B051'N,31\u00B036'E\nJubail,Saudi Arabia,Asia/Riyadh,27\u00B002'N,49\u00B039'E\nKabul,Afghanistan,Asia/Kabul,34\u00B028'N,69\u00B011'E\nKampala,Uganda,Africa/Kampala,00\u00B020'N,32\u00B030'E\nKathmandu,Nepal,Asia/Kathmandu,27\u00B045'N,85\u00B020'E\nKhartoum,Sudan,Africa/Khartoum,15\u00B031'N,32\u00B035'E\nKiev,Ukraine,Europe/Kiev,50\u00B030'N,30\u00B028'E\nKigali,Rwanda,Africa/Kigali,01\u00B059'S,30\u00B004'E\nKingston,Jamaica,America/Jamaica,18\u00B000'N,76\u00B050'W\nKingston,Norfolk Island,Pacific/Norfolk,45\u00B020'S,168\u00B043'E\nKingstown,Saint Vincent and the Grenadines,America/St_Vincent,13\u00B010'N,61\u00B010'W\nKinshasa,Democratic Republic of the Congo,Africa/Kinshasa,04\u00B020'S,15\u00B015'E\nKoror,Palau,Pacific/Palau,07\u00B020'N,134\u00B028'E\nKuala Lumpur,Malaysia,Asia/Kuala_Lumpur,03\u00B009'N,101\u00B041'E\nKuwait,Kuwait,Asia/Kuwait,29\u00B030'N,48\u00B000'E\nLa Paz,Bolivia,America/La_Paz,16\u00B020'S,68\u00B010'W\nLibreville,Gabon,Africa/Libreville,00\u00B025'N,09\u00B026'E\nLilongwe,Malawi,Africa/Blantyre,14\u00B000'S,33\u00B048'E\nLima,Peru,America/Lima,12\u00B000'S,77\u00B000'W\nLisbon,Portugal,Europe/Lisbon,38\u00B042'N,09\u00B010'W\nLjubljana,Slovenia,Europe/Ljubljana,46\u00B004'N,14\u00B033'E\nLome,Togo,Africa/Lome,06\u00B009'N,01\u00B020'E\nLondon,England,Europe/London,51\u00B028'24\"N,00\u00B000'3\"W\nLuanda,Angola,Africa/Luanda,08\u00B050'S,13\u00B015'E\nLusaka,Zambia,Africa/Lusaka,15\u00B028'S,28\u00B016'E\nLuxembourg,Luxembourg,Europe/Luxembourg,49\u00B037'N,06\u00B009'E\nMacau,Macao,Asia/Macau,22\u00B012'N,113\u00B033'E\nMadinah,Saudi Arabia,Asia/Riyadh,24\u00B028'N,39\u00B036'E\nMadrid,Spain,Europe/Madrid,40\u00B025'N,03\u00B045'W\nMajuro,Marshall Islands,Pacific/Majuro,7\u00B04'N,171\u00B016'E\nMakkah,Saudi Arabia,Asia/Riyadh,21\u00B026'N,39\u00B049'E\nMalabo,Equatorial Guinea,Africa/Malabo,03\u00B045'N,08\u00B050'E\nMale,Maldives,Indian/Maldives,04\u00B000'N,73\u00B028'E\nMamoudzou,Mayotte,Indian/Mayotte,12\u00B048'S,45\u00B014'E\nManagua,Nicaragua,America/Managua,12\u00B006'N,86\u00B020'W\nManama,Bahrain,Asia/Bahrain,26\u00B010'N,50\u00B030'E\nManila,Philippines,Asia/Manila,14\u00B040'N,121\u00B003'E\nMaputo,Mozambique,Africa/Maputo,25\u00B058'S,32\u00B032'E\nMaseru,Lesotho,Africa/Maseru,29\u00B018'S,27\u00B030'E\nMasqat,Oman,Asia/Muscat,23\u00B037'N,58\u00B036'E\nMbabane,Swaziland,Africa/Mbabane,26\u00B018'S,31\u00B006'E\nMecca,Saudi Arabia,Asia/Riyadh,21\u00B026'N,39\u00B049'E\nMedina,Saudi Arabia,Asia/Riyadh,24\u00B028'N,39\u00B036'E\nMelbourne,Australia,Australia/Melbourne,37\u00B048'S,144\u00B057'E\nMexico,Mexico,America/Mexico_City,19\u00B020'N,99\u00B010'W\nMinsk,Belarus,Europe/Minsk,53\u00B052'N,27\u00B030'E\nMogadishu,Somalia,Africa/Mogadishu,02\u00B002'N,45\u00B025'E\nMonaco,Priciplality Of Monaco,Europe/Monaco,43\u00B043'N,7\u00B025'E\nMonrovia,Liberia,Africa/Monrovia,06\u00B018'N,10\u00B047'W\nMontevideo,Uruguay,America/Montevideo,34\u00B050'S,56\u00B011'W\nMoroni,Comoros,Indian/Comoro,11\u00B040'S,43\u00B016'E\nMoscow,Russian Federation,Europe/Moscow,55\u00B045'N,37\u00B035'E\nMoskva,Russian Federation,Europe/Moscow,55\u00B045'N,37\u00B035'E\nMumbai,India,Asia/Kolkata,18\u00B058'N,72\u00B049'E\nMuscat,Oman,Asia/Muscat,23\u00B037'N,58\u00B032'E\nN'Djamena,Chad,Africa/Ndjamena,12\u00B010'N,14\u00B059'E\nNairobi,Kenya,Africa/Nairobi,01\u00B017'S,36\u00B048'E\nNassau,Bahamas,America/Nassau,25\u00B005'N,77\u00B020'W\nNaypyidaw,Myanmar,Asia/Rangoon,19\u00B045'N,96\u00B06'E\nNew Delhi,India,Asia/Kolkata,28\u00B037'N,77\u00B013'E\nNgerulmud,Palau,Pacific/Palau,7\u00B030'N,134\u00B037'E\nNiamey,Niger,Africa/Niamey,13\u00B027'N,02\u00B006'E\nNicosia,Cyprus,Asia/Nicosia,35\u00B010'N,33\u00B025'E\nNouakchott,Mauritania,Africa/Nouakchott,20\u00B010'S,57\u00B030'E\nNoumea,New Caledonia,Pacific/Noumea,22\u00B017'S,166\u00B030'E\nNuku'alofa,Tonga,Pacific/Tongatapu,21\u00B010'S,174\u00B000'W\nNuuk,Greenland,America/Godthab,64\u00B010'N,51\u00B035'W\nOranjestad,Aruba,America/Aruba,12\u00B032'N,70\u00B002'W\nOslo,Norway,Europe/Oslo,59\u00B055'N,10\u00B045'E\nOttawa,Canada,US/Eastern,45\u00B027'N,75\u00B042'W\nOuagadougou,Burkina Faso,Africa/Ouagadougou,12\u00B015'N,01\u00B030'W\nP'yongyang,Democratic People's Republic of Korea,Asia/Pyongyang,39\u00B009'N,125\u00B030'E\nPago Pago,American Samoa,Pacific/Pago_Pago,14\u00B016'S,170\u00B043'W\nPalikir,Micronesia,Pacific/Ponape,06\u00B055'N,158\u00B009'E\nPanama,Panama,America/Panama,09\u00B000'N,79\u00B025'W\nPapeete,French Polynesia,Pacific/Tahiti,17\u00B032'S,149\u00B034'W\nParamaribo,Suriname,America/Paramaribo,05\u00B050'N,55\u00B010'W\nParis,France,Europe/Paris,48\u00B050'N,02\u00B020'E\nPerth,Australia,Australia/Perth,31\u00B056'S,115\u00B050'E\nPhnom Penh,Cambodia,Asia/Phnom_Penh,11\u00B033'N,104\u00B055'E\nPodgorica,Montenegro,Europe/Podgorica,42\u00B028'N,19\u00B016'E\nPort Louis,Mauritius,Indian/Mauritius,20\u00B09'S,57\u00B030'E\nPort Moresby,Papua New Guinea,Pacific/Port_Moresby,09\u00B024'S,147\u00B008'E\nPort-Vila,Vanuatu,Pacific/Efate,17\u00B045'S,168\u00B018'E\nPort-au-Prince,Haiti,America/Port-au-Prince,18\u00B040'N,72\u00B020'W\nPort of Spain,Trinidad and Tobago,America/Port_of_Spain,10\u00B040'N,61\u00B031'W\nPorto-Novo,Benin,Africa/Porto-Novo,06\u00B023'N,02\u00B042'E\nPrague,Czech Republic,Europe/Prague,50\u00B005'N,14\u00B022'E\nPraia,Cape Verde,Atlantic/Cape_Verde,15\u00B002'N,23\u00B034'W\nPretoria,South Africa,Africa/Johannesburg,25\u00B044'S,28\u00B012'E\nPristina,Albania,Europe/Tirane,42\u00B040'N,21\u00B010'E\nQuito,Ecuador,America/Guayaquil,00\u00B015'S,78\u00B035'W\nRabat,Morocco,Africa/Casablanca,34\u00B01'N,6\u00B050'W\nReykjavik,Iceland,Atlantic/Reykjavik,64\u00B010'N,21\u00B057'W\nRiga,Latvia,Europe/Riga,56\u00B053'N,24\u00B008'E\nRiyadh,Saudi Arabia,Asia/Riyadh,24\u00B041'N,46\u00B042'E\nRoad Town,British Virgin Islands,America/Virgin,18\u00B027'N,64\u00B037'W\nRome,Italy,Europe/Rome,41\u00B054'N,12\u00B029'E\nRoseau,Dominica,America/Dominica,15\u00B020'N,61\u00B024'W\nSaint Helier,Jersey,Etc/GMT,49\u00B011'N,2\u00B06'W\nSaint Pierre,Saint Pierre and Miquelon,America/Miquelon,46\u00B046'N,56\u00B012'W\nSaipan,Northern Mariana Islands,Pacific/Saipan,15\u00B012'N,145\u00B045'E\nSana,Yemen,Asia/Aden,15\u00B020'N,44\u00B012'W\nSana'a,Yemen,Asia/Aden,15\u00B020'N,44\u00B012'W\nSan Jose,Costa Rica,America/Costa_Rica,09\u00B055'N,84\u00B002'W\nSan Juan,Puerto Rico,America/Puerto_Rico,18\u00B028'N,66\u00B007'W\nSan Marino,San Marino,Europe/San_Marino,43\u00B055'N,12\u00B030'E\nSan Salvador,El Salvador,America/El_Salvador,13\u00B040'N,89\u00B010'W\nSantiago,Chile,America/Santiago,33\u00B024'S,70\u00B040'W\nSanto Domingo,Dominica Republic,America/Santo_Domingo,18\u00B030'N,69\u00B059'W\nSao Tome,Sao Tome and Principe,Africa/Sao_Tome,00\u00B010'N,06\u00B039'E\nSarajevo,Bosnia and Herzegovina,Europe/Sarajevo,43\u00B052'N,18\u00B026'E\nSeoul,Republic of Korea,Asia/Seoul,37\u00B031'N,126\u00B058'E\nSingapore,Republic of Singapore,Asia/Singapore,1\u00B018'N,103\u00B048'E\nSkopje,The Former Yugoslav Republic of Macedonia,Europe/Skopje,42\u00B001'N,21\u00B026'E\nSofia,Bulgaria,Europe/Sofia,42\u00B045'N,23\u00B020'E\nSri Jayawardenapura Kotte,Sri Lanka,Asia/Colombo,6\u00B054'N,79\u00B053'E\nSt. George's,Grenada,America/Grenada,32\u00B022'N,64\u00B040'W\nSt. John's,Antigua and Barbuda,America/Antigua,17\u00B07'N,61\u00B051'W\nSt. Peter Port,Guernsey,Europe/Guernsey,49\u00B026'N,02\u00B033'W\nStanley,Falkland Islands,Atlantic/Stanley,51\u00B040'S,59\u00B051'W\nStockholm,Sweden,Europe/Stockholm,59\u00B020'N,18\u00B005'E\nSucre,Bolivia,America/La_Paz,16\u00B020'S,68\u00B010'W\nSuva,Fiji,Pacific/Fiji,18\u00B006'S,178\u00B030'E\nSydney,Australia,Australia/Sydney,33\u00B053'S,151\u00B013'E\nTaipei,Republic of China (Taiwan),Asia/Taipei,25\u00B002'N,121\u00B038'E\nT'bilisi,Georgia,Asia/Tbilisi,41\u00B043'N,44\u00B050'E\nTbilisi,Georgia,Asia/Tbilisi,41\u00B043'N,44\u00B050'E\nTallinn,Estonia,Europe/Tallinn,59\u00B022'N,24\u00B048'E\nTarawa,Kiribati,Pacific/Tarawa,01\u00B030'N,173\u00B000'E\nTashkent,Uzbekistan,Asia/Tashkent,41\u00B020'N,69\u00B010'E\nTegucigalpa,Honduras,America/Tegucigalpa,14\u00B005'N,87\u00B014'W\nTehran,Iran,Asia/Tehran,35\u00B044'N,51\u00B030'E\nThimphu,Bhutan,Asia/Thimphu,27\u00B031'N,89\u00B045'E\nTirana,Albania,Europe/Tirane,41\u00B018'N,19\u00B049'E\nTirane,Albania,Europe/Tirane,41\u00B018'N,19\u00B049'E\nTorshavn,Faroe Islands,Atlantic/Faroe,62\u00B005'N,06\u00B056'W\nTokyo,Japan,Asia/Tokyo,35\u00B041'N,139\u00B041'E\nTripoli,Libyan Arab Jamahiriya,Africa/Tripoli,32\u00B049'N,13\u00B007'E\nTunis,Tunisia,Africa/Tunis,36\u00B050'N,10\u00B011'E\nUlan Bator,Mongolia,Asia/Ulaanbaatar,47\u00B055'N,106\u00B055'E\nUlaanbaatar,Mongolia,Asia/Ulaanbaatar,47\u00B055'N,106\u00B055'E\nVaduz,Liechtenstein,Europe/Vaduz,47\u00B008'N,09\u00B031'E\nValletta,Malta,Europe/Malta,35\u00B054'N,14\u00B031'E\nVienna,Austria,Europe/Vienna,48\u00B012'N,16\u00B022'E\nVientiane,Lao People's Democratic Republic,Asia/Vientiane,17\u00B058'N,102\u00B036'E\nVilnius,Lithuania,Europe/Vilnius,54\u00B038'N,25\u00B019'E\nW. Indies,Antigua and Barbuda,America/Antigua,17\u00B020'N,61\u00B048'W\nWarsaw,Poland,Europe/Warsaw,52\u00B013'N,21\u00B000'E\nWashington DC,USA,US/Eastern,39\u00B091'N,77\u00B002'W\nWellington,New Zealand,Pacific/Auckland,41\u00B019'S,174\u00B046'E\nWillemstad,Netherlands Antilles,America/Curacao,12\u00B005'N,69\u00B000'W\nWindhoek,Namibia,Africa/Windhoek,22\u00B035'S,17\u00B004'E\nYamoussoukro,Cote d'Ivoire,Africa/Abidjan,06\u00B049'N,05\u00B017'W\nYangon,Myanmar,Asia/Rangoon,16\u00B045'N,96\u00B020'E\nYaounde,Cameroon,Africa/Douala,03\u00B050'N,11\u00B035'E\nYaren,Nauru,Pacific/Nauru,0\u00B032'S,166\u00B055'E\nYerevan,Armenia,Asia/Yerevan,40\u00B010'N,44\u00B031'E\nZagreb,Croatia,Europe/Zagreb,45\u00B050'N,15\u00B058'E\n\n# UK Cities\nAberdeen,Scotland,Europe/London,57\u00B008'N,02\u00B006'W\nBirmingham,England,Europe/London,52\u00B030'N,01\u00B050'W\nBolton,England,Europe/London,53\u00B035'N,02\u00B015'W\nBradford,England,Europe/London,53\u00B047'N,01\u00B045'W\nBristol,England,Europe/London,51\u00B028'N,02\u00B035'W\nCardiff,Wales,Europe/London,51\u00B029'N,03\u00B013'W\nCrawley,England,Europe/London,51\u00B08'N,00\u00B010'W\nEdinburgh,Scotland,Europe/London,55\u00B057'N,03\u00B013'W\nGlasgow,Scotland,Europe/London,55\u00B050'N,04\u00B015'W\nGreenwich,England,Europe/London,51\u00B028'N,00\u00B000'W\nLeeds,England,Europe/London,53\u00B048'N,01\u00B035'W\nLeicester,England,Europe/London,52\u00B038'N,01\u00B008'W\nLiverpool,England,Europe/London,53\u00B025'N,03\u00B000'W\nManchester,England,Europe/London,53\u00B030'N,02\u00B015'W\nNewcastle Upon Tyne,England,Europe/London,54\u00B059'N,01\u00B036'W\nNewcastle,England,Europe/London,54\u00B059'N,01\u00B036'W\nNorwich,England,Europe/London,52\u00B038'N,01\u00B018'E\nOxford,England,Europe/London,51\u00B045'N,01\u00B015'W\nPlymouth,England,Europe/London,50\u00B025'N,04\u00B015'W\nPortsmouth,England,Europe/London,50\u00B048'N,01\u00B005'W\nReading,England,Europe/London,51\u00B027'N,0\u00B058'W\nSheffield,England,Europe/London,53\u00B023'N,01\u00B028'W\nSouthampton,England,Europe/London,50\u00B055'N,01\u00B025'W\nSwansea,England,Europe/London,51\u00B037'N,03\u00B057'W\nSwindon,England,Europe/London,51\u00B034'N,01\u00B047'W\nWolverhampton,England,Europe/London,52\u00B035'N,2\u00B008'W\nBarrow-In-Furness,England,Europe/London,54\u00B006'N,3\u00B013'W\n\n# US State Capitals\nMontgomery,USA,US/Central,32\u00B021'N,86\u00B016'W\nJuneau,USA,US/Alaska,58\u00B023'N,134\u00B011'W\nPhoenix,USA,America/Phoenix,33\u00B026'N,112\u00B004'W\nLittle Rock,USA,US/Central,34\u00B044'N,92\u00B019'W\nSacramento,USA,US/Pacific,38\u00B033'N,121\u00B028'W\nDenver,USA,US/Mountain,39\u00B044'N,104\u00B059'W\nHartford,USA,US/Eastern,41\u00B045'N,72\u00B041'W\nDover,USA,US/Eastern,39\u00B009'N,75\u00B031'W\nTallahassee,USA,US/Eastern,30\u00B027'N,84\u00B016'W\nAtlanta,USA,US/Eastern,33\u00B045'N,84\u00B023'W\nHonolulu,USA,US/Hawaii,21\u00B018'N,157\u00B049'W\nBoise,USA,US/Mountain,43\u00B036'N,116\u00B012'W\nSpringfield,USA,US/Central,39\u00B047'N,89\u00B039'W\nIndianapolis,USA,US/Eastern,39\u00B046'N,86\u00B09'W\nDes Moines,USA,US/Central,41\u00B035'N,93\u00B037'W\nTopeka,USA,US/Central,39\u00B003'N,95\u00B041'W\nFrankfort,USA,US/Eastern,38\u00B011'N,84\u00B051'W\nBaton Rouge,USA,US/Central,30\u00B027'N,91\u00B08'W\nAugusta,USA,US/Eastern,44\u00B018'N,69\u00B046'W\nAnnapolis,USA,US/Eastern,38\u00B058'N,76\u00B030'W\nBoston,USA,US/Eastern,42\u00B021'N,71\u00B003'W\nLansing,USA,US/Eastern,42\u00B044'N,84\u00B032'W\nSaint Paul,USA,US/Central,44\u00B056'N,93\u00B005'W\nJackson,USA,US/Central,32\u00B017'N,90\u00B011'W\nJefferson City,USA,US/Central,38\u00B034'N,92\u00B010'W\nHelena,USA,US/Mountain,46\u00B035'N,112\u00B01'W\nLincoln,USA,US/Central,40\u00B048'N,96\u00B040'W\nCarson City,USA,US/Pacific,39\u00B09'N,119\u00B045'W\nConcord,USA,US/Eastern,43\u00B012'N,71\u00B032'W\nTrenton,USA,US/Eastern,40\u00B013'N,74\u00B045'W\nSanta Fe,USA,US/Mountain,35\u00B040'N,105\u00B057'W\nAlbany,USA,US/Eastern,42\u00B039'N,73\u00B046'W\nRaleigh,USA,US/Eastern,35\u00B049'N,78\u00B038'W\nBismarck,USA,US/Central,46\u00B048'N,100\u00B046'W\nColumbus,USA,US/Eastern,39\u00B059'N,82\u00B059'W\nOklahoma City,USA,US/Central,35\u00B028'N,97\u00B032'W\nSalem,USA,US/Pacific,44\u00B055'N,123\u00B01'W\nHarrisburg,USA,US/Eastern,40\u00B016'N,76\u00B052'W\nProvidence,USA,US/Eastern,41\u00B049'N,71\u00B025'W\nColumbia,USA,US/Eastern,34\u00B000'N,81\u00B002'W\nPierre,USA,US/Central,44\u00B022'N,100\u00B020'W\nNashville,USA,US/Central,36\u00B010'N,86\u00B047'W\nAustin,USA,US/Central,30\u00B016'N,97\u00B045'W\nSalt Lake City,USA,US/Mountain,40\u00B045'N,111\u00B053'W\nMontpelier,USA,US/Eastern,44\u00B015'N,72\u00B034'W\nRichmond,USA,US/Eastern,37\u00B032'N,77\u00B025'W\nOlympia,USA,US/Pacific,47\u00B02'N,122\u00B053'W\nCharleston,USA,US/Eastern,38\u00B020'N,81\u00B038'W\nMadison,USA,US/Central,43\u00B04'N,89\u00B024'W\nCheyenne,USA,US/Mountain,41\u00B08'N,104\u00B048'W\n\n# Major US Cities\nBirmingham,USA,US/Central,33\u00B039'N,86\u00B048'W\nAnchorage,USA,US/Alaska,61\u00B013'N,149\u00B053'W\nLos Angeles,USA,US/Pacific,34\u00B003'N,118\u00B015'W\nSan Francisco,USA,US/Pacific,37\u00B046'N,122\u00B025'W\nBridgeport,USA,US/Eastern,41\u00B011'N,73\u00B011'W\nWilmington,USA,US/Eastern,39\u00B044'N,75\u00B032'W\nJacksonville,USA,US/Eastern,30\u00B019'N,81\u00B039'W\nMiami,USA,US/Eastern,26\u00B08'N,80\u00B012'W\nChicago,USA,US/Central,41\u00B050'N,87\u00B041'W\nWichita,USA,US/Central,37\u00B041'N,97\u00B020'W\nLouisville,USA,US/Eastern,38\u00B015'N,85\u00B045'W\nNew Orleans,USA,US/Central,29\u00B057'N,90\u00B04'W\nPortland,USA,US/Eastern,43\u00B039'N,70\u00B016'W\nBaltimore,USA,US/Eastern,39\u00B017'N,76\u00B037'W\nDetroit,USA,US/Eastern,42\u00B019'N,83\u00B02'W\nMinneapolis,USA,US/Central,44\u00B058'N,93\u00B015'W\nKansas City,USA,US/Central,39\u00B006'N,94\u00B035'W\nBillings,USA,US/Mountain,45\u00B047'N,108\u00B032'W\nOmaha,USA,US/Central,41\u00B015'N,96\u00B00'W\nLas Vegas,USA,US/Pacific,36\u00B010'N,115\u00B008'W\nManchester,USA,US/Eastern,42\u00B059'N,71\u00B027'W\nNewark,USA,US/Eastern,40\u00B044'N,74\u00B011'W\nAlbuquerque,USA,US/Mountain,35\u00B006'N,106\u00B036'W\nNew York,USA,US/Eastern,40\u00B043'N,74\u00B00'W\nCharlotte,USA,US/Eastern,35\u00B013'N,80\u00B050'W\nFargo,USA,US/Central,46\u00B052'N,96\u00B047'W\nCleveland,USA,US/Eastern,41\u00B028'N,81\u00B040'W\nPhiladelphia,USA,US/Eastern,39\u00B057'N,75\u00B010'W\nSioux Falls,USA,US/Central,43\u00B032'N,96\u00B043'W\nMemphis,USA,US/Central,35\u00B007'N,89\u00B058'W\nHouston,USA,US/Central,29\u00B045'N,95\u00B022'W\nDallas,USA,US/Central,32\u00B047'N,96\u00B048'W\nBurlington,USA,US/Eastern,44\u00B028'N,73\u00B09'W\nVirginia Beach,USA,US/Eastern,36\u00B050'N,76\u00B005'W\nSeattle,USA,US/Pacific,47\u00B036'N,122\u00B019'W\nMilwaukee,USA,US/Central,43\u00B003'N,87\u00B057'W\nSan Diego,USA,US/Pacific,32\u00B042'N,117\u00B009'W\nOrlando,USA,US/Eastern,28\u00B032'N,81\u00B022'W\nBuffalo,USA,US/Eastern,42\u00B054'N,78\u00B050'W\nToledo,USA,US/Eastern,41\u00B039'N,83\u00B034'W\n\n# Canadian cities\nVancouver,Canada,America/Vancouver,49\u00B015'N,123\u00B06'W\nCalgary,Canada,America/Edmonton,51\u00B02'N,114\u00B03'W\nEdmonton,Canada,America/Edmonton,53\u00B032'N,113\u00B029'W\nSaskatoon,Canada,America/Regina,52\u00B08'N,106\u00B040'W\nRegina,Canada,America/Regina,50\u00B027'N,104\u00B036'W\nWinnipeg,Canada,America/Winnipeg,49\u00B053'N,97\u00B08'W\nToronto,Canada,America/Toronto,43\u00B039'N,79\u00B022'W\nMontreal,Canada,America/Montreal,45\u00B030'N,73\u00B033'W\nQuebec,Canada,America/Toronto,46\u00B048'N,71\u00B014'W\nFredericton,Canada,America/Halifax,45\u00B057'N,66\u00B038'W\nHalifax,Canada,America/Halifax,44\u00B038'N,63\u00B034'W\nCharlottetown,Canada,America/Halifax,46\u00B014'N,63\u00B07'W\nSt. John's,Canada,America/Halifax,47\u00B033'N,52\u00B042'W\nWhitehorse,Canada,America/Whitehorse,60\u00B043'N,135\u00B03'W\nYellowknife,Canada,America/Yellowknife,62\u00B027'N,114\u00B022'W\nIqaluit,Canada,America/Iqaluit,63\u00B044'N,68\u00B031'W"; /** * Create a database with the default set of locations */ function database() { var db = {}; _add_locations_from_str(_LOCATION_INFO, db); return db; } exports.database = database; function _sanitize_key(key) { return key.toLowerCase().replace(' ', '_'); } function _array_to_locationinfo(array) { return new index_1.LocationInfo(array[0], array[1], array[2], array[3], array[4]); } function _add_location_to_db(location, db) { var key = _sanitize_key(location.timezone_group); var group = _get_group(key, db); if (group == null) { group = {}; db[key] = group; } var location_key = _sanitize_key(location.name); if (location_key in group) { group[location_key].push(location); } else { group[location_key] = [location]; } } function _add_locations_from_str(location_string, db) { var lines = location_string.split('\n'); lines.forEach(function (line) { line = line.trim(); if (line.length != 0 && line[0] != '#') { var info = line.split(','); var location_1 = _array_to_locationinfo(info); _add_location_to_db(location_1, db); } }); } function _add_locations_from_list(location_list, db) { var e_1, _a; try { for (var location_list_1 = __values(location_list), location_list_1_1 = location_list_1.next(); !location_list_1_1.done; location_list_1_1 = location_list_1.next()) { var info = location_list_1_1.value; if (info instanceof Array) { var location_2 = _array_to_locationinfo(info); _add_location_to_db(location_2, db); } else { _add_locations_from_str(info, db); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (location_list_1_1 && !location_list_1_1.done && (_a = location_list_1.return)) _a.call(location_list_1); } finally { if (e_1) throw e_1.error; } } } function addLocations(locations, db) { if (locations instanceof Array) { _add_locations_from_list(locations, db); } else { _add_locations_from_str(locations, db); } } exports.addLocations = addLocations; function _get_group(name, db) { if (name in db) return db[name]; else return null; } function _lookup_in_group(name, group) { var key = _sanitize_key(name); var _a = __read(key.split(','), 2), lookup_name = _a[0], lookup_region = _a[1]; lookup_region = lookup_region || ''; lookup_name = lookup_name.replace(/^[\"\']|[\"\']$/gm, ''); lookup_region = lookup_region.replace(/^[\"\']|[\"\']$/gm, ''); var location = null; for (var location_name in group) { if (location_name === lookup_name) { var location_list = group[location_name]; if (lookup_region === '') { location = location_list[0]; } else { location_list.forEach(function (loc) { if (_sanitize_key(loc['region']) == lookup_region) { location = loc; } }); } } } return location; } /** * Look up a location * @param name - location to look up * @param db - The database to look in * @throws KeyError if the location is not in the database */ function location(name, db) { var key = _sanitize_key(name); for (var group_name in db) { var group = db[group_name]; var location = _lookup_in_group(key, group); if (location != null) { return location; } } throw new error_1.KeyError("Location \"" + name + "\" not found in database"); } exports.location = location; /** * Look up a timezone group * @param name - group to look up * @param db - The database to look in * @throws KeyError if the location is not in the database */ function group(name, db) { var e_2, _a; var key = _sanitize_key(name); try { for (var _b = __values(Object.entries(db)), _c = _b.next(); !_c.done; _c = _b.next()) { var _d = __read(_c.value, 2), group_1 = _d[0], group_info = _d[1]; if (group_1 === key) { return group_info; } throw new error_1.KeyError("Group \"" + name + "\" not found in database"); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_2) throw e_2.error; } } } exports.group = group; /** * Returns a generator that returns all locations stored in a database * * @param db - The database to look in */ function allLocations(db) { var _a, _b, group_2, _c, _d, location_list, location_list_2, location_list_2_1, location_info, e_3_1, e_4_1, e_5_1; var e_5, _e, e_4, _f, e_3, _g; return __generator(this, function (_h) { switch (_h.label) { case 0: _h.trys.push([0, 17, 18, 19]); _a = __values(Object.values(db)), _b = _a.next(); _h.label = 1; case 1: if (!!_b.done) return [3 /*break*/, 16]; group_2 = _b.value; _h.label = 2; case 2: _h.trys.push([2, 13, 14, 15]); _c = (e_4 = void 0, __values(Object.values(group_2))), _d = _c.next(); _h.label = 3; case 3: if (!!_d.done) return [3 /*break*/, 12]; location_list = _d.value; _h.label = 4; case 4: _h.trys.push([4, 9, 10, 11]); location_list_2 = (e_3 = void 0, __values(location_list)), location_list_2_1 = location_list_2.next(); _h.label = 5; case 5: if (!!location_list_2_1.done) return [3 /*break*/, 8]; location_info = location_list_2_1.value; return [4 /*yield*/, location_info]; case 6: _h.sent(); _h.label = 7; case 7: location_list_2_1 = location_list_2.next(); return [3 /*break*/, 5]; case 8: return [3 /*break*/, 11]; case 9: e_3_1 = _h.sent(); e_3 = { error: e_3_1 }; return [3 /*break*/, 11]; case 10: try { if (location_list_2_1 && !location_list_2_1.done && (_g = location_list_2.return)) _g.call(location_list_2); } finally { if (e_3) throw e_3.error; } return [7 /*endfinally*/]; case 11: _d = _c.next(); return [3 /*break*/, 3]; case 12: return [3 /*break*/, 15]; case 13: e_4_1 = _h.sent(); e_4 = { error: e_4_1 }; return [3 /*break*/, 15]; case 14: try { if (_d && !_d.done && (_f = _c.return)) _f.call(_c); } finally { if (e_4) throw e_4.error; } return [7 /*endfinally*/]; case 15: _b = _a.next(); return [3 /*break*/, 1]; case 16: return [3 /*break*/, 19]; case 17: e_5_1 = _h.sent(); e_5 = { error: e_5_1 }; return [3 /*break*/, 19]; case 18: try { if (_b && !_b.done && (_e = _a.return)) _e.call(_a); } finally { if (e_5) throw e_5.error; } return [7 /*endfinally*/]; case 19: return [2 /*return*/]; } }); } exports.allLocations = allLocations;