tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

timezone-case-insensitive.js (13611B)


      1 // Copyright (C) 2023 Justin Grant. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 esid: sec-initializedatetimeformat
      6 description: Time zone identifiers are case-normalized
      7 features: [canonical-tz]
      8 ---*/
      9 
     10 const timeZoneIdentifiers = [
     11  // IANA TZDB Zone names
     12  "Africa/Abidjan",
     13  "Africa/Algiers",
     14  "Africa/Bissau",
     15  "Africa/Cairo",
     16  "Africa/Casablanca",
     17  "Africa/Ceuta",
     18  "Africa/El_Aaiun",
     19  "Africa/Johannesburg",
     20  "Africa/Juba",
     21  "Africa/Khartoum",
     22  "Africa/Lagos",
     23  "Africa/Maputo",
     24  "Africa/Monrovia",
     25  "Africa/Nairobi",
     26  "Africa/Ndjamena",
     27  "Africa/Sao_Tome",
     28  "Africa/Tripoli",
     29  "Africa/Tunis",
     30  "Africa/Windhoek",
     31  "America/Adak",
     32  "America/Anchorage",
     33  "America/Araguaina",
     34  "America/Argentina/Buenos_Aires",
     35  "America/Argentina/Catamarca",
     36  "America/Argentina/Cordoba",
     37  "America/Argentina/Jujuy",
     38  "America/Argentina/La_Rioja",
     39  "America/Argentina/Mendoza",
     40  "America/Argentina/Rio_Gallegos",
     41  "America/Argentina/Salta",
     42  "America/Argentina/San_Juan",
     43  "America/Argentina/San_Luis",
     44  "America/Argentina/Tucuman",
     45  "America/Argentina/Ushuaia",
     46  "America/Asuncion",
     47  "America/Bahia",
     48  "America/Bahia_Banderas",
     49  "America/Barbados",
     50  "America/Belem",
     51  "America/Belize",
     52  "America/Boa_Vista",
     53  "America/Bogota",
     54  "America/Boise",
     55  "America/Cambridge_Bay",
     56  "America/Campo_Grande",
     57  "America/Cancun",
     58  "America/Caracas",
     59  "America/Cayenne",
     60  "America/Chicago",
     61  "America/Chihuahua",
     62  // 'America/Ciudad_Juarez' // uncomment after Node supports this ID added in TZDB 2022g
     63  "America/Costa_Rica",
     64  "America/Cuiaba",
     65  "America/Danmarkshavn",
     66  "America/Dawson",
     67  "America/Dawson_Creek",
     68  "America/Denver",
     69  "America/Detroit",
     70  "America/Edmonton",
     71  "America/Eirunepe",
     72  "America/El_Salvador",
     73  "America/Fort_Nelson",
     74  "America/Fortaleza",
     75  "America/Glace_Bay",
     76  "America/Goose_Bay",
     77  "America/Grand_Turk",
     78  "America/Guatemala",
     79  "America/Guayaquil",
     80  "America/Guyana",
     81  "America/Halifax",
     82  "America/Havana",
     83  "America/Hermosillo",
     84  "America/Indiana/Indianapolis",
     85  "America/Indiana/Knox",
     86  "America/Indiana/Marengo",
     87  "America/Indiana/Petersburg",
     88  "America/Indiana/Tell_City",
     89  "America/Indiana/Vevay",
     90  "America/Indiana/Vincennes",
     91  "America/Indiana/Winamac",
     92  "America/Inuvik",
     93  "America/Iqaluit",
     94  "America/Jamaica",
     95  "America/Juneau",
     96  "America/Kentucky/Louisville",
     97  "America/Kentucky/Monticello",
     98  "America/La_Paz",
     99  "America/Lima",
    100  "America/Los_Angeles",
    101  "America/Maceio",
    102  "America/Managua",
    103  "America/Manaus",
    104  "America/Martinique",
    105  "America/Matamoros",
    106  "America/Mazatlan",
    107  "America/Menominee",
    108  "America/Merida",
    109  "America/Metlakatla",
    110  "America/Mexico_City",
    111  "America/Miquelon",
    112  "America/Moncton",
    113  "America/Monterrey",
    114  "America/Montevideo",
    115  "America/New_York",
    116  "America/Nome",
    117  "America/Noronha",
    118  "America/North_Dakota/Beulah",
    119  "America/North_Dakota/Center",
    120  "America/North_Dakota/New_Salem",
    121  "America/Nuuk",
    122  "America/Ojinaga",
    123  "America/Panama",
    124  "America/Paramaribo",
    125  "America/Phoenix",
    126  "America/Port-au-Prince",
    127  "America/Porto_Velho",
    128  "America/Puerto_Rico",
    129  "America/Punta_Arenas",
    130  "America/Rankin_Inlet",
    131  "America/Recife",
    132  "America/Regina",
    133  "America/Resolute",
    134  "America/Rio_Branco",
    135  "America/Santarem",
    136  "America/Santiago",
    137  "America/Santo_Domingo",
    138  "America/Sao_Paulo",
    139  "America/Scoresbysund",
    140  "America/Sitka",
    141  "America/St_Johns",
    142  "America/Swift_Current",
    143  "America/Tegucigalpa",
    144  "America/Thule",
    145  "America/Tijuana",
    146  "America/Toronto",
    147  "America/Vancouver",
    148  "America/Whitehorse",
    149  "America/Winnipeg",
    150  "America/Yakutat",
    151  "America/Yellowknife",
    152  "Antarctica/Casey",
    153  "Antarctica/Davis",
    154  "Antarctica/Macquarie",
    155  "Antarctica/Mawson",
    156  "Antarctica/Palmer",
    157  "Antarctica/Rothera",
    158  "Antarctica/Troll",
    159  "Asia/Almaty",
    160  "Asia/Amman",
    161  "Asia/Anadyr",
    162  "Asia/Aqtau",
    163  "Asia/Aqtobe",
    164  "Asia/Ashgabat",
    165  "Asia/Atyrau",
    166  "Asia/Baghdad",
    167  "Asia/Baku",
    168  "Asia/Bangkok",
    169  "Asia/Barnaul",
    170  "Asia/Beirut",
    171  "Asia/Bishkek",
    172  "Asia/Chita",
    173  "Asia/Choibalsan",
    174  "Asia/Colombo",
    175  "Asia/Damascus",
    176  "Asia/Dhaka",
    177  "Asia/Dili",
    178  "Asia/Dubai",
    179  "Asia/Dushanbe",
    180  "Asia/Famagusta",
    181  "Asia/Gaza",
    182  "Asia/Hebron",
    183  "Asia/Ho_Chi_Minh",
    184  "Asia/Hong_Kong",
    185  "Asia/Hovd",
    186  "Asia/Irkutsk",
    187  "Asia/Jakarta",
    188  "Asia/Jayapura",
    189  "Asia/Jerusalem",
    190  "Asia/Kabul",
    191  "Asia/Kamchatka",
    192  "Asia/Karachi",
    193  "Asia/Kathmandu",
    194  "Asia/Khandyga",
    195  "Asia/Kolkata",
    196  "Asia/Krasnoyarsk",
    197  "Asia/Kuching",
    198  "Asia/Macau",
    199  "Asia/Magadan",
    200  "Asia/Makassar",
    201  "Asia/Manila",
    202  "Asia/Nicosia",
    203  "Asia/Novokuznetsk",
    204  "Asia/Novosibirsk",
    205  "Asia/Omsk",
    206  "Asia/Oral",
    207  "Asia/Pontianak",
    208  "Asia/Pyongyang",
    209  "Asia/Qatar",
    210  "Asia/Qostanay",
    211  "Asia/Qyzylorda",
    212  "Asia/Riyadh",
    213  "Asia/Sakhalin",
    214  "Asia/Samarkand",
    215  "Asia/Seoul",
    216  "Asia/Shanghai",
    217  "Asia/Singapore",
    218  "Asia/Srednekolymsk",
    219  "Asia/Taipei",
    220  "Asia/Tashkent",
    221  "Asia/Tbilisi",
    222  "Asia/Tehran",
    223  "Asia/Thimphu",
    224  "Asia/Tokyo",
    225  "Asia/Tomsk",
    226  "Asia/Ulaanbaatar",
    227  "Asia/Urumqi",
    228  "Asia/Ust-Nera",
    229  "Asia/Vladivostok",
    230  "Asia/Yakutsk",
    231  "Asia/Yangon",
    232  "Asia/Yekaterinburg",
    233  "Asia/Yerevan",
    234  "Atlantic/Azores",
    235  "Atlantic/Bermuda",
    236  "Atlantic/Canary",
    237  "Atlantic/Cape_Verde",
    238  "Atlantic/Faroe",
    239  "Atlantic/Madeira",
    240  "Atlantic/South_Georgia",
    241  "Atlantic/Stanley",
    242  "Australia/Adelaide",
    243  "Australia/Brisbane",
    244  "Australia/Broken_Hill",
    245  "Australia/Darwin",
    246  "Australia/Eucla",
    247  "Australia/Hobart",
    248  "Australia/Lindeman",
    249  "Australia/Lord_Howe",
    250  "Australia/Melbourne",
    251  "Australia/Perth",
    252  "Australia/Sydney",
    253  "CET",
    254  "CST6CDT",
    255  "EET",
    256  "EST",
    257  "EST5EDT",
    258  "Etc/GMT",
    259  "Etc/GMT+1",
    260  "Etc/GMT+10",
    261  "Etc/GMT+11",
    262  "Etc/GMT+12",
    263  "Etc/GMT+2",
    264  "Etc/GMT+3",
    265  "Etc/GMT+4",
    266  "Etc/GMT+5",
    267  "Etc/GMT+6",
    268  "Etc/GMT+7",
    269  "Etc/GMT+8",
    270  "Etc/GMT+9",
    271  "Etc/GMT-1",
    272  "Etc/GMT-10",
    273  "Etc/GMT-11",
    274  "Etc/GMT-12",
    275  "Etc/GMT-13",
    276  "Etc/GMT-14",
    277  "Etc/GMT-2",
    278  "Etc/GMT-3",
    279  "Etc/GMT-4",
    280  "Etc/GMT-5",
    281  "Etc/GMT-6",
    282  "Etc/GMT-7",
    283  "Etc/GMT-8",
    284  "Etc/GMT-9",
    285  "Etc/UTC",
    286  "Europe/Andorra",
    287  "Europe/Astrakhan",
    288  "Europe/Athens",
    289  "Europe/Belgrade",
    290  "Europe/Berlin",
    291  "Europe/Brussels",
    292  "Europe/Bucharest",
    293  "Europe/Budapest",
    294  "Europe/Chisinau",
    295  "Europe/Dublin",
    296  "Europe/Gibraltar",
    297  "Europe/Helsinki",
    298  "Europe/Istanbul",
    299  "Europe/Kaliningrad",
    300  "Europe/Kirov",
    301  "Europe/Kyiv",
    302  "Europe/Lisbon",
    303  "Europe/London",
    304  "Europe/Madrid",
    305  "Europe/Malta",
    306  "Europe/Minsk",
    307  "Europe/Moscow",
    308  "Europe/Paris",
    309  "Europe/Prague",
    310  "Europe/Riga",
    311  "Europe/Rome",
    312  "Europe/Samara",
    313  "Europe/Saratov",
    314  "Europe/Simferopol",
    315  "Europe/Sofia",
    316  "Europe/Tallinn",
    317  "Europe/Tirane",
    318  "Europe/Ulyanovsk",
    319  "Europe/Vienna",
    320  "Europe/Vilnius",
    321  "Europe/Volgograd",
    322  "Europe/Warsaw",
    323  "Europe/Zurich",
    324  "HST",
    325  "Indian/Chagos",
    326  "Indian/Maldives",
    327  "Indian/Mauritius",
    328  "MET",
    329  "MST",
    330  "MST7MDT",
    331  "PST8PDT",
    332  "Pacific/Apia",
    333  "Pacific/Auckland",
    334  "Pacific/Bougainville",
    335  "Pacific/Chatham",
    336  "Pacific/Easter",
    337  "Pacific/Efate",
    338  "Pacific/Fakaofo",
    339  "Pacific/Fiji",
    340  "Pacific/Galapagos",
    341  "Pacific/Gambier",
    342  "Pacific/Guadalcanal",
    343  "Pacific/Guam",
    344  "Pacific/Honolulu",
    345  "Pacific/Kanton",
    346  "Pacific/Kiritimati",
    347  "Pacific/Kosrae",
    348  "Pacific/Kwajalein",
    349  "Pacific/Marquesas",
    350  "Pacific/Nauru",
    351  "Pacific/Niue",
    352  "Pacific/Norfolk",
    353  "Pacific/Noumea",
    354  "Pacific/Pago_Pago",
    355  "Pacific/Palau",
    356  "Pacific/Pitcairn",
    357  "Pacific/Port_Moresby",
    358  "Pacific/Rarotonga",
    359  "Pacific/Tahiti",
    360  "Pacific/Tarawa",
    361  "Pacific/Tongatapu",
    362 
    363  // IANA TZDB Link names
    364  "WET",
    365  "Africa/Accra",
    366  "Africa/Addis_Ababa",
    367  "Africa/Asmara",
    368  "Africa/Asmera",
    369  "Africa/Bamako",
    370  "Africa/Bangui",
    371  "Africa/Banjul",
    372  "Africa/Blantyre",
    373  "Africa/Brazzaville",
    374  "Africa/Bujumbura",
    375  "Africa/Conakry",
    376  "Africa/Dakar",
    377  "Africa/Dar_es_Salaam",
    378  "Africa/Djibouti",
    379  "Africa/Douala",
    380  "Africa/Freetown",
    381  "Africa/Gaborone",
    382  "Africa/Harare",
    383  "Africa/Kampala",
    384  "Africa/Kigali",
    385  "Africa/Kinshasa",
    386  "Africa/Libreville",
    387  "Africa/Lome",
    388  "Africa/Luanda",
    389  "Africa/Lubumbashi",
    390  "Africa/Lusaka",
    391  "Africa/Malabo",
    392  "Africa/Maseru",
    393  "Africa/Mbabane",
    394  "Africa/Mogadishu",
    395  "Africa/Niamey",
    396  "Africa/Nouakchott",
    397  "Africa/Ouagadougou",
    398  "Africa/Porto-Novo",
    399  "Africa/Timbuktu",
    400  "America/Anguilla",
    401  "America/Antigua",
    402  "America/Argentina/ComodRivadavia",
    403  "America/Aruba",
    404  "America/Atikokan",
    405  "America/Atka",
    406  "America/Blanc-Sablon",
    407  "America/Buenos_Aires",
    408  "America/Catamarca",
    409  "America/Cayman",
    410  "America/Coral_Harbour",
    411  "America/Cordoba",
    412  "America/Creston",
    413  "America/Curacao",
    414  "America/Dominica",
    415  "America/Ensenada",
    416  "America/Fort_Wayne",
    417  "America/Godthab",
    418  "America/Grenada",
    419  "America/Guadeloupe",
    420  "America/Indianapolis",
    421  "America/Jujuy",
    422  "America/Knox_IN",
    423  "America/Kralendijk",
    424  "America/Louisville",
    425  "America/Lower_Princes",
    426  "America/Marigot",
    427  "America/Mendoza",
    428  "America/Montreal",
    429  "America/Montserrat",
    430  "America/Nassau",
    431  "America/Nipigon",
    432  "America/Pangnirtung",
    433  "America/Port_of_Spain",
    434  "America/Porto_Acre",
    435  "America/Rainy_River",
    436  "America/Rosario",
    437  "America/Santa_Isabel",
    438  "America/Shiprock",
    439  "America/St_Barthelemy",
    440  "America/St_Kitts",
    441  "America/St_Lucia",
    442  "America/St_Thomas",
    443  "America/St_Vincent",
    444  "America/Thunder_Bay",
    445  "America/Tortola",
    446  "America/Virgin",
    447  "Antarctica/DumontDUrville",
    448  "Antarctica/McMurdo",
    449  "Antarctica/South_Pole",
    450  "Antarctica/Syowa",
    451  "Antarctica/Vostok",
    452  "Arctic/Longyearbyen",
    453  "Asia/Aden",
    454  "Asia/Ashkhabad",
    455  "Asia/Bahrain",
    456  "Asia/Brunei",
    457  "Asia/Calcutta",
    458  "Asia/Chongqing",
    459  "Asia/Chungking",
    460  "Asia/Dacca",
    461  "Asia/Harbin",
    462  "Asia/Istanbul",
    463  "Asia/Kashgar",
    464  "Asia/Katmandu",
    465  "Asia/Kuala_Lumpur",
    466  "Asia/Kuwait",
    467  "Asia/Macao",
    468  "Asia/Muscat",
    469  "Asia/Phnom_Penh",
    470  "Asia/Rangoon",
    471  "Asia/Saigon",
    472  "Asia/Tel_Aviv",
    473  "Asia/Thimbu",
    474  "Asia/Ujung_Pandang",
    475  "Asia/Ulan_Bator",
    476  "Asia/Vientiane",
    477  "Atlantic/Faeroe",
    478  "Atlantic/Jan_Mayen",
    479  "Atlantic/Reykjavik",
    480  "Atlantic/St_Helena",
    481  "Australia/ACT",
    482  "Australia/Canberra",
    483  "Australia/Currie",
    484  "Australia/LHI",
    485  "Australia/NSW",
    486  "Australia/North",
    487  "Australia/Queensland",
    488  "Australia/South",
    489  "Australia/Tasmania",
    490  "Australia/Victoria",
    491  "Australia/West",
    492  "Australia/Yancowinna",
    493  "Brazil/Acre",
    494  "Brazil/DeNoronha",
    495  "Brazil/East",
    496  "Brazil/West",
    497  "Canada/Atlantic",
    498  "Canada/Central",
    499  "Canada/Eastern",
    500  "Canada/Mountain",
    501  "Canada/Newfoundland",
    502  "Canada/Pacific",
    503  "Canada/Saskatchewan",
    504  "Canada/Yukon",
    505  "Chile/Continental",
    506  "Chile/EasterIsland",
    507  "Cuba",
    508  "Egypt",
    509  "Eire",
    510  "Etc/GMT+0",
    511  "Etc/GMT-0",
    512  "Etc/GMT0",
    513  "Etc/Greenwich",
    514  "Etc/UCT",
    515  "Etc/Universal",
    516  "Etc/Zulu",
    517  "Europe/Amsterdam",
    518  "Europe/Belfast",
    519  "Europe/Bratislava",
    520  "Europe/Busingen",
    521  "Europe/Copenhagen",
    522  "Europe/Guernsey",
    523  "Europe/Isle_of_Man",
    524  "Europe/Jersey",
    525  "Europe/Kiev",
    526  "Europe/Ljubljana",
    527  "Europe/Luxembourg",
    528  "Europe/Mariehamn",
    529  "Europe/Monaco",
    530  "Europe/Nicosia",
    531  "Europe/Oslo",
    532  "Europe/Podgorica",
    533  "Europe/San_Marino",
    534  "Europe/Sarajevo",
    535  "Europe/Skopje",
    536  "Europe/Stockholm",
    537  "Europe/Tiraspol",
    538  "Europe/Uzhgorod",
    539  "Europe/Vaduz",
    540  "Europe/Vatican",
    541  "Europe/Zagreb",
    542  "Europe/Zaporozhye",
    543  "GB",
    544  "GB-Eire",
    545  "GMT",
    546  "GMT+0",
    547  "GMT-0",
    548  "GMT0",
    549  "Greenwich",
    550  "Hongkong",
    551  "Iceland",
    552  "Indian/Antananarivo",
    553  "Indian/Christmas",
    554  "Indian/Cocos",
    555  "Indian/Comoro",
    556  "Indian/Kerguelen",
    557  "Indian/Mahe",
    558  "Indian/Mayotte",
    559  "Indian/Reunion",
    560  "Iran",
    561  "Israel",
    562  "Jamaica",
    563  "Japan",
    564  "Kwajalein",
    565  "Libya",
    566  "Mexico/BajaNorte",
    567  "Mexico/BajaSur",
    568  "Mexico/General",
    569  "NZ",
    570  "NZ-CHAT",
    571  "Navajo",
    572  "PRC",
    573  "Pacific/Chuuk",
    574  "Pacific/Enderbury",
    575  "Pacific/Funafuti",
    576  "Pacific/Johnston",
    577  "Pacific/Majuro",
    578  "Pacific/Midway",
    579  "Pacific/Pohnpei",
    580  "Pacific/Ponape",
    581  "Pacific/Saipan",
    582  "Pacific/Samoa",
    583  "Pacific/Truk",
    584  "Pacific/Wake",
    585  "Pacific/Wallis",
    586  "Pacific/Yap",
    587  "Poland",
    588  "Portugal",
    589  "ROC",
    590  "ROK",
    591  "Singapore",
    592  "Turkey",
    593  "UCT",
    594  "US/Alaska",
    595  "US/Aleutian",
    596  "US/Arizona",
    597  "US/Central",
    598  "US/East-Indiana",
    599  "US/Eastern",
    600  "US/Hawaii",
    601  "US/Indiana-Starke",
    602  "US/Michigan",
    603  "US/Mountain",
    604  "US/Pacific",
    605  "US/Samoa",
    606  "UTC",
    607  "Universal",
    608  "W-SU",
    609  "Zulu"
    610 ];
    611 
    612 // We want to test all available named time zone identifiers (both primary and non-primary),
    613 // but no ECMAScript built-in API exposes that list. So we use a union of two sources:
    614 // 1. A hard-coded list of Zone and Link identifiers from the 2022g version of IANA TZDB.
    615 // 2. Canonical IDs exposed by Intl.supportedValuesOf('timeZone'), which ensures that IDs
    616 //    added to TZDB later than 2022g will be tested. (New IDs are almost always added as primary.)
    617 const ids = [...new Set([...timeZoneIdentifiers, ...Intl.supportedValuesOf("timeZone")])];
    618 for (const id of ids) {
    619  const lower = id.toLowerCase();
    620  const upper = id.toUpperCase();
    621  assert.sameValue(
    622    new Intl.DateTimeFormat("en", { timeZone: id }).resolvedOptions().timeZone,
    623    id,
    624    `Time zone created from string "${id}"`
    625  );
    626  assert.sameValue(
    627    new Intl.DateTimeFormat("en", { timeZone: upper }).resolvedOptions().timeZone,
    628    id,
    629    `Time zone created from string "${upper}"`
    630  );
    631  assert.sameValue(
    632    new Intl.DateTimeFormat("en", { timeZone: lower }).resolvedOptions().timeZone,
    633    id,
    634    `Time zone created from string "${lower}"`
    635  );
    636 }
    637 
    638 reportCompare(0, 0);