@naturalcycles/nodejs-lib 15.44.0 → 15.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,7 @@ import { _deepCopy, _sortObject } from '@naturalcycles/js-lib/object'
14
14
  import {
15
15
  type AnyObject,
16
16
  type IANATimezone,
17
+ type Inclusiveness,
17
18
  type IsoDate,
18
19
  type IsoDateTime,
19
20
  JWT_REGEX,
@@ -23,6 +24,7 @@ import {
23
24
  type UnixTimestamp,
24
25
  type UnixTimestampMillis,
25
26
  } from '@naturalcycles/js-lib/types'
27
+ import { TIMEZONES } from '../timezones.js'
26
28
  import { JSON_SCHEMA_ORDER, mergeJsonSchemaObjects } from './jsonSchemaBuilder.util.js'
27
29
 
28
30
  export const j = {
@@ -248,6 +250,7 @@ export class JsonSchemaStringBuilder<
248
250
  }
249
251
 
250
252
  pattern(pattern: string, opt?: JsonBuilderRuleOpt): this {
253
+ if (opt?.name) this.setErrorMessage('pattern', `is not a valid ${opt.name}`)
251
254
  if (opt?.msg) this.setErrorMessage('pattern', opt.msg)
252
255
  Object.assign(this.schema, { pattern })
253
256
  return this
@@ -380,9 +383,7 @@ export class JsonSchemaStringBuilder<
380
383
  */
381
384
  ianaTimezone(): JsonSchemaEnumBuilder<string | IANATimezone, IANATimezone, false> {
382
385
  // UTC is added to assist unit-testing, which uses UTC by default (not technically a valid Iana timezone identifier)
383
- return j
384
- .enum([...Intl.supportedValuesOf('timeZone'), 'UTC'], { msg: 'is an invalid IANA timezone' })
385
- .branded<IANATimezone>()
386
+ return j.enum(TIMEZONES, { msg: 'is an invalid IANA timezone' }).branded<IANATimezone>()
386
387
  }
387
388
  }
388
389
 
@@ -435,12 +436,27 @@ export class JsonSchemaNumberBuilder<
435
436
  return this
436
437
  }
437
438
 
438
- /**
439
- * Both ranges are inclusive.
440
- */
441
- range(minimum: number, maximum: number): this {
442
- Object.assign(this.schema, { minimum, maximum })
443
- return this
439
+ lessThan(value: number): this {
440
+ return this.exclusiveMax(value)
441
+ }
442
+
443
+ lessThanOrEqual(value: number): this {
444
+ return this.max(value)
445
+ }
446
+
447
+ moreThan(value: number): this {
448
+ return this.exclusiveMin(value)
449
+ }
450
+
451
+ moreThanOrEqual(value: number): this {
452
+ return this.min(value)
453
+ }
454
+
455
+ range(minimum: number, maximum: number, incl: Inclusiveness): this {
456
+ if (incl === '[)') {
457
+ return this.moreThanOrEqual(minimum).lessThan(maximum)
458
+ }
459
+ return this.moreThanOrEqual(minimum).lessThanOrEqual(maximum)
444
460
  }
445
461
 
446
462
  int32(): this {
@@ -767,7 +783,7 @@ export class JsonSchemaEnumBuilder<
767
783
  > extends JsonSchemaAnyBuilder<IN, OUT, Opt> {
768
784
  constructor(enumValues: readonly IN[], opt?: JsonBuilderRuleOpt) {
769
785
  super({ enum: enumValues })
770
-
786
+ if (opt?.name) this.setErrorMessage('pattern', `is not a valid ${opt.name}`)
771
787
  if (opt?.msg) this.setErrorMessage('enum', opt.msg)
772
788
  }
773
789
 
@@ -900,5 +916,16 @@ type BuilderInUnion<B extends readonly JsonSchemaAnyBuilder<any, any, any>[]> =
900
916
  }[number]
901
917
 
902
918
  interface JsonBuilderRuleOpt {
919
+ /**
920
+ * Text of error message to return when the validation fails for the given rule:
921
+ *
922
+ * `{ msg: "is not a valid Oompa-loompa" } => "Object.property is not a valid Oompa-loompa"`
923
+ */
903
924
  msg?: string
925
+ /**
926
+ * A friendly name for what we are validating, that will be used in error messages:
927
+ *
928
+ * `{ name: "Oompa-loompa" } => "Object.property is not a valid Oompa-loompa"`
929
+ */
930
+ name?: string
904
931
  }
@@ -0,0 +1,616 @@
1
+ import { _uniq } from '@naturalcycles/js-lib/array'
2
+ import type { IANATimezone } from '@naturalcycles/js-lib/types'
3
+
4
+ // List extracted from Wikipedia (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
5
+ // with the "Factory" value removed as its not working with our toolings
6
+ const TIMEZONES_FROM_WIKI = [
7
+ 'Africa/Abidjan',
8
+ 'Africa/Accra',
9
+ 'Africa/Addis_Ababa',
10
+ 'Africa/Algiers',
11
+ 'Africa/Asmara',
12
+ 'Africa/Asmera',
13
+ 'Africa/Bamako',
14
+ 'Africa/Bangui',
15
+ 'Africa/Banjul',
16
+ 'Africa/Bissau',
17
+ 'Africa/Blantyre',
18
+ 'Africa/Brazzaville',
19
+ 'Africa/Bujumbura',
20
+ 'Africa/Cairo',
21
+ 'Africa/Casablanca',
22
+ 'Africa/Ceuta',
23
+ 'Africa/Conakry',
24
+ 'Africa/Dakar',
25
+ 'Africa/Dar_es_Salaam',
26
+ 'Africa/Djibouti',
27
+ 'Africa/Douala',
28
+ 'Africa/El_Aaiun',
29
+ 'Africa/Freetown',
30
+ 'Africa/Gaborone',
31
+ 'Africa/Harare',
32
+ 'Africa/Johannesburg',
33
+ 'Africa/Juba',
34
+ 'Africa/Kampala',
35
+ 'Africa/Khartoum',
36
+ 'Africa/Kigali',
37
+ 'Africa/Kinshasa',
38
+ 'Africa/Lagos',
39
+ 'Africa/Libreville',
40
+ 'Africa/Lome',
41
+ 'Africa/Luanda',
42
+ 'Africa/Lubumbashi',
43
+ 'Africa/Lusaka',
44
+ 'Africa/Malabo',
45
+ 'Africa/Maputo',
46
+ 'Africa/Maseru',
47
+ 'Africa/Mbabane',
48
+ 'Africa/Mogadishu',
49
+ 'Africa/Monrovia',
50
+ 'Africa/Nairobi',
51
+ 'Africa/Ndjamena',
52
+ 'Africa/Niamey',
53
+ 'Africa/Nouakchott',
54
+ 'Africa/Ouagadougou',
55
+ 'Africa/Porto-Novo',
56
+ 'Africa/Sao_Tome',
57
+ 'Africa/Timbuktu',
58
+ 'Africa/Tripoli',
59
+ 'Africa/Tunis',
60
+ 'Africa/Windhoek',
61
+ 'America/Adak',
62
+ 'America/Anchorage',
63
+ 'America/Anguilla',
64
+ 'America/Antigua',
65
+ 'America/Araguaina',
66
+ 'America/Argentina/Buenos_Aires',
67
+ 'America/Argentina/Catamarca',
68
+ 'America/Argentina/ComodRivadavia',
69
+ 'America/Argentina/Cordoba',
70
+ 'America/Argentina/Jujuy',
71
+ 'America/Argentina/La_Rioja',
72
+ 'America/Argentina/Mendoza',
73
+ 'America/Argentina/Rio_Gallegos',
74
+ 'America/Argentina/Salta',
75
+ 'America/Argentina/San_Juan',
76
+ 'America/Argentina/San_Luis',
77
+ 'America/Argentina/Tucuman',
78
+ 'America/Argentina/Ushuaia',
79
+ 'America/Aruba',
80
+ 'America/Asuncion',
81
+ 'America/Atikokan',
82
+ 'America/Atka',
83
+ 'America/Bahia',
84
+ 'America/Bahia_Banderas',
85
+ 'America/Barbados',
86
+ 'America/Belem',
87
+ 'America/Belize',
88
+ 'America/Blanc-Sablon',
89
+ 'America/Boa_Vista',
90
+ 'America/Bogota',
91
+ 'America/Boise',
92
+ 'America/Buenos_Aires',
93
+ 'America/Cambridge_Bay',
94
+ 'America/Campo_Grande',
95
+ 'America/Cancun',
96
+ 'America/Caracas',
97
+ 'America/Catamarca',
98
+ 'America/Cayenne',
99
+ 'America/Cayman',
100
+ 'America/Chicago',
101
+ 'America/Chihuahua',
102
+ 'America/Ciudad_Juarez',
103
+ 'America/Coral_Harbour',
104
+ 'America/Cordoba',
105
+ 'America/Costa_Rica',
106
+ 'America/Coyhaique',
107
+ 'America/Creston',
108
+ 'America/Cuiaba',
109
+ 'America/Curacao',
110
+ 'America/Danmarkshavn',
111
+ 'America/Dawson',
112
+ 'America/Dawson_Creek',
113
+ 'America/Denver',
114
+ 'America/Detroit',
115
+ 'America/Dominica',
116
+ 'America/Edmonton',
117
+ 'America/Eirunepe',
118
+ 'America/El_Salvador',
119
+ 'America/Ensenada',
120
+ 'America/Fort_Nelson',
121
+ 'America/Fort_Wayne',
122
+ 'America/Fortaleza',
123
+ 'America/Glace_Bay',
124
+ 'America/Godthab',
125
+ 'America/Goose_Bay',
126
+ 'America/Grand_Turk',
127
+ 'America/Grenada',
128
+ 'America/Guadeloupe',
129
+ 'America/Guatemala',
130
+ 'America/Guayaquil',
131
+ 'America/Guyana',
132
+ 'America/Halifax',
133
+ 'America/Havana',
134
+ 'America/Hermosillo',
135
+ 'America/Indiana/Indianapolis',
136
+ 'America/Indiana/Knox',
137
+ 'America/Indiana/Marengo',
138
+ 'America/Indiana/Petersburg',
139
+ 'America/Indiana/Tell_City',
140
+ 'America/Indiana/Vevay',
141
+ 'America/Indiana/Vincennes',
142
+ 'America/Indiana/Winamac',
143
+ 'America/Indianapolis',
144
+ 'America/Inuvik',
145
+ 'America/Iqaluit',
146
+ 'America/Jamaica',
147
+ 'America/Jujuy',
148
+ 'America/Juneau',
149
+ 'America/Kentucky/Louisville',
150
+ 'America/Kentucky/Monticello',
151
+ 'America/Knox_IN',
152
+ 'America/Kralendijk',
153
+ 'America/La_Paz',
154
+ 'America/Lima',
155
+ 'America/Los_Angeles',
156
+ 'America/Louisville',
157
+ 'America/Lower_Princes',
158
+ 'America/Maceio',
159
+ 'America/Managua',
160
+ 'America/Manaus',
161
+ 'America/Marigot',
162
+ 'America/Martinique',
163
+ 'America/Matamoros',
164
+ 'America/Mazatlan',
165
+ 'America/Mendoza',
166
+ 'America/Menominee',
167
+ 'America/Merida',
168
+ 'America/Metlakatla',
169
+ 'America/Mexico_City',
170
+ 'America/Miquelon',
171
+ 'America/Moncton',
172
+ 'America/Monterrey',
173
+ 'America/Montevideo',
174
+ 'America/Montreal',
175
+ 'America/Montserrat',
176
+ 'America/Nassau',
177
+ 'America/New_York',
178
+ 'America/Nipigon',
179
+ 'America/Nome',
180
+ 'America/Noronha',
181
+ 'America/North_Dakota/Beulah',
182
+ 'America/North_Dakota/Center',
183
+ 'America/North_Dakota/New_Salem',
184
+ 'America/Nuuk',
185
+ 'America/Ojinaga',
186
+ 'America/Panama',
187
+ 'America/Pangnirtung',
188
+ 'America/Paramaribo',
189
+ 'America/Phoenix',
190
+ 'America/Port-au-Prince',
191
+ 'America/Port_of_Spain',
192
+ 'America/Porto_Acre',
193
+ 'America/Porto_Velho',
194
+ 'America/Puerto_Rico',
195
+ 'America/Punta_Arenas',
196
+ 'America/Rainy_River',
197
+ 'America/Rankin_Inlet',
198
+ 'America/Recife',
199
+ 'America/Regina',
200
+ 'America/Resolute',
201
+ 'America/Rio_Branco',
202
+ 'America/Rosario',
203
+ 'America/Santa_Isabel',
204
+ 'America/Santarem',
205
+ 'America/Santiago',
206
+ 'America/Santo_Domingo',
207
+ 'America/Sao_Paulo',
208
+ 'America/Scoresbysund',
209
+ 'America/Shiprock',
210
+ 'America/Sitka',
211
+ 'America/St_Barthelemy',
212
+ 'America/St_Johns',
213
+ 'America/St_Kitts',
214
+ 'America/St_Lucia',
215
+ 'America/St_Thomas',
216
+ 'America/St_Vincent',
217
+ 'America/Swift_Current',
218
+ 'America/Tegucigalpa',
219
+ 'America/Thule',
220
+ 'America/Thunder_Bay',
221
+ 'America/Tijuana',
222
+ 'America/Toronto',
223
+ 'America/Tortola',
224
+ 'America/Vancouver',
225
+ 'America/Virgin',
226
+ 'America/Whitehorse',
227
+ 'America/Winnipeg',
228
+ 'America/Yakutat',
229
+ 'America/Yellowknife',
230
+ 'Antarctica/Casey',
231
+ 'Antarctica/Davis',
232
+ 'Antarctica/DumontDUrville',
233
+ 'Antarctica/Macquarie',
234
+ 'Antarctica/Mawson',
235
+ 'Antarctica/McMurdo',
236
+ 'Antarctica/Palmer',
237
+ 'Antarctica/Rothera',
238
+ 'Antarctica/South_Pole',
239
+ 'Antarctica/Syowa',
240
+ 'Antarctica/Troll',
241
+ 'Antarctica/Vostok',
242
+ 'Arctic/Longyearbyen',
243
+ 'Asia/Aden',
244
+ 'Asia/Almaty',
245
+ 'Asia/Amman',
246
+ 'Asia/Anadyr',
247
+ 'Asia/Aqtau',
248
+ 'Asia/Aqtobe',
249
+ 'Asia/Ashgabat',
250
+ 'Asia/Ashkhabad',
251
+ 'Asia/Atyrau',
252
+ 'Asia/Baghdad',
253
+ 'Asia/Bahrain',
254
+ 'Asia/Baku',
255
+ 'Asia/Bangkok',
256
+ 'Asia/Barnaul',
257
+ 'Asia/Beirut',
258
+ 'Asia/Bishkek',
259
+ 'Asia/Brunei',
260
+ 'Asia/Calcutta',
261
+ 'Asia/Chita',
262
+ 'Asia/Choibalsan',
263
+ 'Asia/Chongqing',
264
+ 'Asia/Chungking',
265
+ 'Asia/Colombo',
266
+ 'Asia/Dacca',
267
+ 'Asia/Damascus',
268
+ 'Asia/Dhaka',
269
+ 'Asia/Dili',
270
+ 'Asia/Dubai',
271
+ 'Asia/Dushanbe',
272
+ 'Asia/Famagusta',
273
+ 'Asia/Gaza',
274
+ 'Asia/Harbin',
275
+ 'Asia/Hebron',
276
+ 'Asia/Ho_Chi_Minh',
277
+ 'Asia/Hong_Kong',
278
+ 'Asia/Hovd',
279
+ 'Asia/Irkutsk',
280
+ 'Asia/Istanbul',
281
+ 'Asia/Jakarta',
282
+ 'Asia/Jayapura',
283
+ 'Asia/Jerusalem',
284
+ 'Asia/Kabul',
285
+ 'Asia/Kamchatka',
286
+ 'Asia/Karachi',
287
+ 'Asia/Kashgar',
288
+ 'Asia/Kathmandu',
289
+ 'Asia/Katmandu',
290
+ 'Asia/Khandyga',
291
+ 'Asia/Kolkata',
292
+ 'Asia/Krasnoyarsk',
293
+ 'Asia/Kuala_Lumpur',
294
+ 'Asia/Kuching',
295
+ 'Asia/Kuwait',
296
+ 'Asia/Macao',
297
+ 'Asia/Macau',
298
+ 'Asia/Magadan',
299
+ 'Asia/Makassar',
300
+ 'Asia/Manila',
301
+ 'Asia/Muscat',
302
+ 'Asia/Nicosia',
303
+ 'Asia/Novokuznetsk',
304
+ 'Asia/Novosibirsk',
305
+ 'Asia/Omsk',
306
+ 'Asia/Oral',
307
+ 'Asia/Phnom_Penh',
308
+ 'Asia/Pontianak',
309
+ 'Asia/Pyongyang',
310
+ 'Asia/Qatar',
311
+ 'Asia/Qostanay',
312
+ 'Asia/Qyzylorda',
313
+ 'Asia/Rangoon',
314
+ 'Asia/Riyadh',
315
+ 'Asia/Saigon',
316
+ 'Asia/Sakhalin',
317
+ 'Asia/Samarkand',
318
+ 'Asia/Seoul',
319
+ 'Asia/Shanghai',
320
+ 'Asia/Singapore',
321
+ 'Asia/Srednekolymsk',
322
+ 'Asia/Taipei',
323
+ 'Asia/Tashkent',
324
+ 'Asia/Tbilisi',
325
+ 'Asia/Tehran',
326
+ 'Asia/Tel_Aviv',
327
+ 'Asia/Thimbu',
328
+ 'Asia/Thimphu',
329
+ 'Asia/Tokyo',
330
+ 'Asia/Tomsk',
331
+ 'Asia/Ujung_Pandang',
332
+ 'Asia/Ulaanbaatar',
333
+ 'Asia/Ulan_Bator',
334
+ 'Asia/Urumqi',
335
+ 'Asia/Ust-Nera',
336
+ 'Asia/Vientiane',
337
+ 'Asia/Vladivostok',
338
+ 'Asia/Yakutsk',
339
+ 'Asia/Yangon',
340
+ 'Asia/Yekaterinburg',
341
+ 'Asia/Yerevan',
342
+ 'Atlantic/Azores',
343
+ 'Atlantic/Bermuda',
344
+ 'Atlantic/Canary',
345
+ 'Atlantic/Cape_Verde',
346
+ 'Atlantic/Faeroe',
347
+ 'Atlantic/Faroe',
348
+ 'Atlantic/Jan_Mayen',
349
+ 'Atlantic/Madeira',
350
+ 'Atlantic/Reykjavik',
351
+ 'Atlantic/South_Georgia',
352
+ 'Atlantic/St_Helena',
353
+ 'Atlantic/Stanley',
354
+ 'Australia/ACT',
355
+ 'Australia/Adelaide',
356
+ 'Australia/Brisbane',
357
+ 'Australia/Broken_Hill',
358
+ 'Australia/Canberra',
359
+ 'Australia/Currie',
360
+ 'Australia/Darwin',
361
+ 'Australia/Eucla',
362
+ 'Australia/Hobart',
363
+ 'Australia/LHI',
364
+ 'Australia/Lindeman',
365
+ 'Australia/Lord_Howe',
366
+ 'Australia/Melbourne',
367
+ 'Australia/North',
368
+ 'Australia/NSW',
369
+ 'Australia/Perth',
370
+ 'Australia/Queensland',
371
+ 'Australia/South',
372
+ 'Australia/Sydney',
373
+ 'Australia/Tasmania',
374
+ 'Australia/Victoria',
375
+ 'Australia/West',
376
+ 'Australia/Yancowinna',
377
+ 'Brazil/Acre',
378
+ 'Brazil/DeNoronha',
379
+ 'Brazil/East',
380
+ 'Brazil/West',
381
+ 'Canada/Atlantic',
382
+ 'Canada/Central',
383
+ 'Canada/Eastern',
384
+ 'Canada/Mountain',
385
+ 'Canada/Newfoundland',
386
+ 'Canada/Pacific',
387
+ 'Canada/Saskatchewan',
388
+ 'Canada/Yukon',
389
+ 'CET',
390
+ 'Chile/Continental',
391
+ 'Chile/EasterIsland',
392
+ 'CST6CDT',
393
+ 'Cuba',
394
+ 'EET',
395
+ 'Egypt',
396
+ 'Eire',
397
+ 'EST',
398
+ 'EST5EDT',
399
+ 'Etc/GMT',
400
+ 'Etc/GMT+0',
401
+ 'Etc/GMT+1',
402
+ 'Etc/GMT+10',
403
+ 'Etc/GMT+11',
404
+ 'Etc/GMT+12',
405
+ 'Etc/GMT+2',
406
+ 'Etc/GMT+3',
407
+ 'Etc/GMT+4',
408
+ 'Etc/GMT+5',
409
+ 'Etc/GMT+6',
410
+ 'Etc/GMT+7',
411
+ 'Etc/GMT+8',
412
+ 'Etc/GMT+9',
413
+ 'Etc/GMT-0',
414
+ 'Etc/GMT-1',
415
+ 'Etc/GMT-10',
416
+ 'Etc/GMT-11',
417
+ 'Etc/GMT-12',
418
+ 'Etc/GMT-13',
419
+ 'Etc/GMT-14',
420
+ 'Etc/GMT-2',
421
+ 'Etc/GMT-3',
422
+ 'Etc/GMT-4',
423
+ 'Etc/GMT-5',
424
+ 'Etc/GMT-6',
425
+ 'Etc/GMT-7',
426
+ 'Etc/GMT-8',
427
+ 'Etc/GMT-9',
428
+ 'Etc/GMT0',
429
+ 'Etc/Greenwich',
430
+ 'Etc/UCT',
431
+ 'Etc/Universal',
432
+ 'Etc/UTC',
433
+ 'Etc/Zulu',
434
+ 'Europe/Amsterdam',
435
+ 'Europe/Andorra',
436
+ 'Europe/Astrakhan',
437
+ 'Europe/Athens',
438
+ 'Europe/Belfast',
439
+ 'Europe/Belgrade',
440
+ 'Europe/Berlin',
441
+ 'Europe/Bratislava',
442
+ 'Europe/Brussels',
443
+ 'Europe/Bucharest',
444
+ 'Europe/Budapest',
445
+ 'Europe/Busingen',
446
+ 'Europe/Chisinau',
447
+ 'Europe/Copenhagen',
448
+ 'Europe/Dublin',
449
+ 'Europe/Gibraltar',
450
+ 'Europe/Guernsey',
451
+ 'Europe/Helsinki',
452
+ 'Europe/Isle_of_Man',
453
+ 'Europe/Istanbul',
454
+ 'Europe/Jersey',
455
+ 'Europe/Kaliningrad',
456
+ 'Europe/Kiev',
457
+ 'Europe/Kirov',
458
+ 'Europe/Kyiv',
459
+ 'Europe/Lisbon',
460
+ 'Europe/Ljubljana',
461
+ 'Europe/London',
462
+ 'Europe/Luxembourg',
463
+ 'Europe/Madrid',
464
+ 'Europe/Malta',
465
+ 'Europe/Mariehamn',
466
+ 'Europe/Minsk',
467
+ 'Europe/Monaco',
468
+ 'Europe/Moscow',
469
+ 'Europe/Nicosia',
470
+ 'Europe/Oslo',
471
+ 'Europe/Paris',
472
+ 'Europe/Podgorica',
473
+ 'Europe/Prague',
474
+ 'Europe/Riga',
475
+ 'Europe/Rome',
476
+ 'Europe/Samara',
477
+ 'Europe/San_Marino',
478
+ 'Europe/Sarajevo',
479
+ 'Europe/Saratov',
480
+ 'Europe/Simferopol',
481
+ 'Europe/Skopje',
482
+ 'Europe/Sofia',
483
+ 'Europe/Stockholm',
484
+ 'Europe/Tallinn',
485
+ 'Europe/Tirane',
486
+ 'Europe/Tiraspol',
487
+ 'Europe/Ulyanovsk',
488
+ 'Europe/Uzhgorod',
489
+ 'Europe/Vaduz',
490
+ 'Europe/Vatican',
491
+ 'Europe/Vienna',
492
+ 'Europe/Vilnius',
493
+ 'Europe/Volgograd',
494
+ 'Europe/Warsaw',
495
+ 'Europe/Zagreb',
496
+ 'Europe/Zaporozhye',
497
+ 'Europe/Zurich',
498
+ 'GB',
499
+ 'GB-Eire',
500
+ 'GMT',
501
+ 'GMT+0',
502
+ 'GMT-0',
503
+ 'GMT0',
504
+ 'Greenwich',
505
+ 'Hongkong',
506
+ 'HST',
507
+ 'Iceland',
508
+ 'Indian/Antananarivo',
509
+ 'Indian/Chagos',
510
+ 'Indian/Christmas',
511
+ 'Indian/Cocos',
512
+ 'Indian/Comoro',
513
+ 'Indian/Kerguelen',
514
+ 'Indian/Mahe',
515
+ 'Indian/Maldives',
516
+ 'Indian/Mauritius',
517
+ 'Indian/Mayotte',
518
+ 'Indian/Reunion',
519
+ 'Iran',
520
+ 'Israel',
521
+ 'Jamaica',
522
+ 'Japan',
523
+ 'Kwajalein',
524
+ 'Libya',
525
+ 'MET',
526
+ 'Mexico/BajaNorte',
527
+ 'Mexico/BajaSur',
528
+ 'Mexico/General',
529
+ 'MST',
530
+ 'MST7MDT',
531
+ 'Navajo',
532
+ 'NZ',
533
+ 'NZ-CHAT',
534
+ 'Pacific/Apia',
535
+ 'Pacific/Auckland',
536
+ 'Pacific/Bougainville',
537
+ 'Pacific/Chatham',
538
+ 'Pacific/Chuuk',
539
+ 'Pacific/Easter',
540
+ 'Pacific/Efate',
541
+ 'Pacific/Enderbury',
542
+ 'Pacific/Fakaofo',
543
+ 'Pacific/Fiji',
544
+ 'Pacific/Funafuti',
545
+ 'Pacific/Galapagos',
546
+ 'Pacific/Gambier',
547
+ 'Pacific/Guadalcanal',
548
+ 'Pacific/Guam',
549
+ 'Pacific/Honolulu',
550
+ 'Pacific/Johnston',
551
+ 'Pacific/Kanton',
552
+ 'Pacific/Kiritimati',
553
+ 'Pacific/Kosrae',
554
+ 'Pacific/Kwajalein',
555
+ 'Pacific/Majuro',
556
+ 'Pacific/Marquesas',
557
+ 'Pacific/Midway',
558
+ 'Pacific/Nauru',
559
+ 'Pacific/Niue',
560
+ 'Pacific/Norfolk',
561
+ 'Pacific/Noumea',
562
+ 'Pacific/Pago_Pago',
563
+ 'Pacific/Palau',
564
+ 'Pacific/Pitcairn',
565
+ 'Pacific/Pohnpei',
566
+ 'Pacific/Ponape',
567
+ 'Pacific/Port_Moresby',
568
+ 'Pacific/Rarotonga',
569
+ 'Pacific/Saipan',
570
+ 'Pacific/Samoa',
571
+ 'Pacific/Tahiti',
572
+ 'Pacific/Tarawa',
573
+ 'Pacific/Tongatapu',
574
+ 'Pacific/Truk',
575
+ 'Pacific/Wake',
576
+ 'Pacific/Wallis',
577
+ 'Pacific/Yap',
578
+ 'Poland',
579
+ 'Portugal',
580
+ 'PRC',
581
+ 'PST8PDT',
582
+ 'ROC',
583
+ 'ROK',
584
+ 'Singapore',
585
+ 'Turkey',
586
+ 'UCT',
587
+ 'Universal',
588
+ 'US/Alaska',
589
+ 'US/Aleutian',
590
+ 'US/Arizona',
591
+ 'US/Central',
592
+ 'US/East-Indiana',
593
+ 'US/Eastern',
594
+ 'US/Hawaii',
595
+ 'US/Indiana-Starke',
596
+ 'US/Michigan',
597
+ 'US/Mountain',
598
+ 'US/Pacific',
599
+ 'US/Samoa',
600
+ 'UTC',
601
+ 'W-SU',
602
+ 'WET',
603
+ 'Zulu',
604
+ ] as IANATimezone[]
605
+
606
+ const TIMEZONES_FROM_JS = Intl.supportedValuesOf('timeZone') as IANATimezone[]
607
+
608
+ /**
609
+ * A complicated merge of timezones from the underlying Javascript engine
610
+ * and a list exported from Wikipedia.
611
+ *
612
+ * Why? The `Int.supportedValuesOf('timeZone')` we use provide only
613
+ * canonical/standardized timezone values like `Europe/Stockholm`
614
+ * but does not list accepted aliases like `ETC/Gmt`, `CET` or `Canada/Atlantic`.
615
+ */
616
+ export const TIMEZONES = _uniq([...TIMEZONES_FROM_JS, ...TIMEZONES_FROM_WIKI])
File without changes
File without changes