@hypequery/protocol 0.20.0 → 0.21.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.
Files changed (62) hide show
  1. package/README.md +17 -0
  2. package/dist/bundles/codec.js +2 -2
  3. package/dist/cache-keys/cache-keys.js +2 -2
  4. package/dist/cache-preimages/cache-preimages.js +3 -3
  5. package/dist/client-contract/bounds.d.ts +3 -0
  6. package/dist/client-contract/bounds.d.ts.map +1 -0
  7. package/dist/client-contract/bounds.js +24 -0
  8. package/dist/client-contract/codec.d.ts +4 -0
  9. package/dist/client-contract/codec.d.ts.map +1 -0
  10. package/dist/client-contract/codec.js +8 -0
  11. package/dist/client-contract/decode.d.ts +4 -0
  12. package/dist/client-contract/decode.d.ts.map +1 -0
  13. package/dist/client-contract/decode.js +100 -0
  14. package/dist/client-contract/errors.d.ts +21 -0
  15. package/dist/client-contract/errors.d.ts.map +1 -0
  16. package/dist/client-contract/errors.js +26 -0
  17. package/dist/client-contract/index.d.ts +8 -0
  18. package/dist/client-contract/index.d.ts.map +1 -0
  19. package/dist/client-contract/index.js +4 -0
  20. package/dist/client-contract/nodes.d.ts +8 -0
  21. package/dist/client-contract/nodes.d.ts.map +1 -0
  22. package/dist/client-contract/nodes.js +68 -0
  23. package/dist/client-contract/primitives.d.ts +15 -0
  24. package/dist/client-contract/primitives.d.ts.map +1 -0
  25. package/dist/client-contract/primitives.js +74 -0
  26. package/dist/client-contract/query.d.ts +10 -0
  27. package/dist/client-contract/query.d.ts.map +1 -0
  28. package/dist/client-contract/query.js +121 -0
  29. package/dist/client-contract/safe-data.d.ts +6 -0
  30. package/dist/client-contract/safe-data.d.ts.map +1 -0
  31. package/dist/client-contract/safe-data.js +124 -0
  32. package/dist/client-contract/timezone-names.d.ts +2 -0
  33. package/dist/client-contract/timezone-names.d.ts.map +1 -0
  34. package/dist/client-contract/timezone-names.js +600 -0
  35. package/dist/client-contract/types.d.ts +68 -0
  36. package/dist/client-contract/types.d.ts.map +1 -0
  37. package/dist/client-contract/types.js +1 -0
  38. package/dist/client-contract/validate.d.ts +6 -0
  39. package/dist/client-contract/validate.d.ts.map +1 -0
  40. package/dist/client-contract/validate.js +95 -0
  41. package/dist/deployments/codec.js +2 -2
  42. package/dist/index.d.ts +3 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +2 -0
  45. package/dist/releases/codec.js +2 -2
  46. package/dist/values/codec.js +2 -2
  47. package/dist/visibility/errors.d.ts +8 -0
  48. package/dist/visibility/errors.d.ts.map +1 -0
  49. package/dist/visibility/errors.js +13 -0
  50. package/dist/visibility/index.d.ts +5 -0
  51. package/dist/visibility/index.d.ts.map +1 -0
  52. package/dist/visibility/index.js +3 -0
  53. package/dist/visibility/resolve.d.ts +30 -0
  54. package/dist/visibility/resolve.d.ts.map +1 -0
  55. package/dist/visibility/resolve.js +108 -0
  56. package/dist/visibility/types.d.ts +32 -0
  57. package/dist/visibility/types.d.ts.map +1 -0
  58. package/dist/visibility/types.js +1 -0
  59. package/dist/visibility/validate.d.ts +11 -0
  60. package/dist/visibility/validate.d.ts.map +1 -0
  61. package/dist/visibility/validate.js +78 -0
  62. package/package.json +3 -3
@@ -0,0 +1,124 @@
1
+ import { clientError, ProtocolClientContractError } from './errors.js';
2
+ import { serializeJcs } from '../values/jcs.js';
3
+ export const CLIENT_MAX_BYTES = 1_048_576;
4
+ const encoder = new TextEncoder();
5
+ function charge(budget, bytes) {
6
+ budget.bytes += bytes;
7
+ if (budget.bytes > CLIENT_MAX_BYTES)
8
+ clientError('HQ_CLIENT_LIMIT');
9
+ }
10
+ function text(value, budget) {
11
+ if (value.length > CLIENT_MAX_BYTES)
12
+ clientError('HQ_CLIENT_LIMIT');
13
+ for (const character of value) {
14
+ const code = character.codePointAt(0);
15
+ if (code >= 0xD800 && code <= 0xDFFF)
16
+ clientError('HQ_CLIENT_TYPE');
17
+ }
18
+ charge(budget, encoder.encode(JSON.stringify(value)).byteLength);
19
+ }
20
+ function copy(input, budget, depth) {
21
+ if (depth > 16 || ++budget.nodes > 100_000)
22
+ clientError('HQ_CLIENT_LIMIT');
23
+ if (typeof input === 'string') {
24
+ text(input, budget);
25
+ return input;
26
+ }
27
+ if (input === null || typeof input === 'boolean' || typeof input === 'number') {
28
+ if (typeof input === 'number' && !Number.isFinite(input))
29
+ clientError('HQ_CLIENT_TYPE');
30
+ charge(budget, encoder.encode(JSON.stringify(input)).byteLength);
31
+ return input;
32
+ }
33
+ if (typeof input !== 'object')
34
+ clientError('HQ_CLIENT_TYPE');
35
+ if (budget.active.has(input))
36
+ clientError('HQ_CLIENT_TYPE');
37
+ budget.active.add(input);
38
+ try {
39
+ const array = Array.isArray(input);
40
+ let prototype;
41
+ let keys;
42
+ try {
43
+ prototype = Object.getPrototypeOf(input);
44
+ keys = Reflect.ownKeys(input);
45
+ }
46
+ catch {
47
+ clientError('HQ_CLIENT_TYPE');
48
+ }
49
+ if (array ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null) {
50
+ clientError('HQ_CLIENT_TYPE');
51
+ }
52
+ if (keys.length > 20_000 + (array ? 1 : 0))
53
+ clientError('HQ_CLIENT_LIMIT');
54
+ if (keys.some(key => typeof key !== 'string'))
55
+ clientError('HQ_CLIENT_TYPE');
56
+ const descriptors = Object.create(null);
57
+ for (const key of keys) {
58
+ let descriptor;
59
+ try {
60
+ descriptor = Object.getOwnPropertyDescriptor(input, key);
61
+ }
62
+ catch {
63
+ clientError('HQ_CLIENT_TYPE');
64
+ }
65
+ if (!descriptor)
66
+ clientError('HQ_CLIENT_TYPE');
67
+ descriptors[key] = descriptor;
68
+ }
69
+ if (array) {
70
+ const length = descriptors.length?.value;
71
+ if (!Number.isSafeInteger(length) || length > 20_000)
72
+ clientError('HQ_CLIENT_LIMIT');
73
+ if (keys.length !== length + 1)
74
+ clientError('HQ_CLIENT_TYPE');
75
+ charge(budget, Math.max(length - 1, 0) + 2);
76
+ const result = [];
77
+ for (let i = 0; i < length; i++) {
78
+ const item = descriptors[String(i)];
79
+ if (!item || !item.enumerable || !('value' in item))
80
+ clientError('HQ_CLIENT_TYPE');
81
+ result.push(copy(item.value, budget, depth + 1));
82
+ }
83
+ return result;
84
+ }
85
+ charge(budget, keys.length + Math.max(keys.length - 1, 0) + 2);
86
+ const result = Object.create(null);
87
+ for (const key of keys) {
88
+ const item = descriptors[key];
89
+ if (!item.enumerable || !('value' in item))
90
+ clientError('HQ_CLIENT_TYPE');
91
+ text(key, budget);
92
+ result[key] = copy(item.value, budget, depth + 1);
93
+ }
94
+ return result;
95
+ }
96
+ finally {
97
+ budget.active.delete(input);
98
+ }
99
+ }
100
+ /** Snapshot before validation; accessors/toJSON are never invoked. Reflection can trigger Proxy traps. */
101
+ export function snapshotClientData(input) {
102
+ try {
103
+ return copy(input, { nodes: 0, bytes: 0, active: new WeakSet() }, 1);
104
+ }
105
+ catch (error) {
106
+ if (error instanceof ProtocolClientContractError)
107
+ throw error;
108
+ clientError('HQ_CLIENT_TYPE');
109
+ }
110
+ }
111
+ export function clientCanonical(value) {
112
+ const canonical = serializeJcs(value);
113
+ if (encoder.encode(canonical).byteLength > CLIENT_MAX_BYTES)
114
+ clientError('HQ_CLIENT_LIMIT');
115
+ return canonical;
116
+ }
117
+ export function freezeClientData(value) {
118
+ if (value && typeof value === 'object') {
119
+ for (const child of Object.values(value))
120
+ freezeClientData(child);
121
+ Object.freeze(value);
122
+ }
123
+ return value;
124
+ }
@@ -0,0 +1,2 @@
1
+ export declare const CLIENT_TIMEZONE_NAMES: ReadonlySet<string>;
2
+ //# sourceMappingURL=timezone-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timezone-names.d.ts","sourceRoot":"","sources":["../../src/client-contract/timezone-names.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAslBjC,CAAC"}
@@ -0,0 +1,600 @@
1
+ // RFC 0018 portable timezone spellings. Keep in sync with timezone-names.txt.
2
+ export const CLIENT_TIMEZONE_NAMES = new Set(`
3
+ Africa/Abidjan
4
+ Africa/Accra
5
+ Africa/Addis_Ababa
6
+ Africa/Algiers
7
+ Africa/Asmara
8
+ Africa/Asmera
9
+ Africa/Bamako
10
+ Africa/Bangui
11
+ Africa/Banjul
12
+ Africa/Bissau
13
+ Africa/Blantyre
14
+ Africa/Brazzaville
15
+ Africa/Bujumbura
16
+ Africa/Cairo
17
+ Africa/Casablanca
18
+ Africa/Ceuta
19
+ Africa/Conakry
20
+ Africa/Dakar
21
+ Africa/Dar_es_Salaam
22
+ Africa/Djibouti
23
+ Africa/Douala
24
+ Africa/El_Aaiun
25
+ Africa/Freetown
26
+ Africa/Gaborone
27
+ Africa/Harare
28
+ Africa/Johannesburg
29
+ Africa/Juba
30
+ Africa/Kampala
31
+ Africa/Khartoum
32
+ Africa/Kigali
33
+ Africa/Kinshasa
34
+ Africa/Lagos
35
+ Africa/Libreville
36
+ Africa/Lome
37
+ Africa/Luanda
38
+ Africa/Lubumbashi
39
+ Africa/Lusaka
40
+ Africa/Malabo
41
+ Africa/Maputo
42
+ Africa/Maseru
43
+ Africa/Mbabane
44
+ Africa/Mogadishu
45
+ Africa/Monrovia
46
+ Africa/Nairobi
47
+ Africa/Ndjamena
48
+ Africa/Niamey
49
+ Africa/Nouakchott
50
+ Africa/Ouagadougou
51
+ Africa/Porto-Novo
52
+ Africa/Sao_Tome
53
+ Africa/Timbuktu
54
+ Africa/Tripoli
55
+ Africa/Tunis
56
+ Africa/Windhoek
57
+ America/Adak
58
+ America/Anchorage
59
+ America/Anguilla
60
+ America/Antigua
61
+ America/Araguaina
62
+ America/Argentina/Buenos_Aires
63
+ America/Argentina/Catamarca
64
+ America/Argentina/ComodRivadavia
65
+ America/Argentina/Cordoba
66
+ America/Argentina/Jujuy
67
+ America/Argentina/La_Rioja
68
+ America/Argentina/Mendoza
69
+ America/Argentina/Rio_Gallegos
70
+ America/Argentina/Salta
71
+ America/Argentina/San_Juan
72
+ America/Argentina/San_Luis
73
+ America/Argentina/Tucuman
74
+ America/Argentina/Ushuaia
75
+ America/Aruba
76
+ America/Asuncion
77
+ America/Atikokan
78
+ America/Atka
79
+ America/Bahia
80
+ America/Bahia_Banderas
81
+ America/Barbados
82
+ America/Belem
83
+ America/Belize
84
+ America/Blanc-Sablon
85
+ America/Boa_Vista
86
+ America/Bogota
87
+ America/Boise
88
+ America/Buenos_Aires
89
+ America/Cambridge_Bay
90
+ America/Campo_Grande
91
+ America/Cancun
92
+ America/Caracas
93
+ America/Catamarca
94
+ America/Cayenne
95
+ America/Cayman
96
+ America/Chicago
97
+ America/Chihuahua
98
+ America/Ciudad_Juarez
99
+ America/Coral_Harbour
100
+ America/Cordoba
101
+ America/Costa_Rica
102
+ America/Coyhaique
103
+ America/Creston
104
+ America/Cuiaba
105
+ America/Curacao
106
+ America/Danmarkshavn
107
+ America/Dawson
108
+ America/Dawson_Creek
109
+ America/Denver
110
+ America/Detroit
111
+ America/Dominica
112
+ America/Edmonton
113
+ America/Eirunepe
114
+ America/El_Salvador
115
+ America/Ensenada
116
+ America/Fort_Nelson
117
+ America/Fort_Wayne
118
+ America/Fortaleza
119
+ America/Glace_Bay
120
+ America/Godthab
121
+ America/Goose_Bay
122
+ America/Grand_Turk
123
+ America/Grenada
124
+ America/Guadeloupe
125
+ America/Guatemala
126
+ America/Guayaquil
127
+ America/Guyana
128
+ America/Halifax
129
+ America/Havana
130
+ America/Hermosillo
131
+ America/Indiana/Indianapolis
132
+ America/Indiana/Knox
133
+ America/Indiana/Marengo
134
+ America/Indiana/Petersburg
135
+ America/Indiana/Tell_City
136
+ America/Indiana/Vevay
137
+ America/Indiana/Vincennes
138
+ America/Indiana/Winamac
139
+ America/Indianapolis
140
+ America/Inuvik
141
+ America/Iqaluit
142
+ America/Jamaica
143
+ America/Jujuy
144
+ America/Juneau
145
+ America/Kentucky/Louisville
146
+ America/Kentucky/Monticello
147
+ America/Knox_IN
148
+ America/Kralendijk
149
+ America/La_Paz
150
+ America/Lima
151
+ America/Los_Angeles
152
+ America/Louisville
153
+ America/Lower_Princes
154
+ America/Maceio
155
+ America/Managua
156
+ America/Manaus
157
+ America/Marigot
158
+ America/Martinique
159
+ America/Matamoros
160
+ America/Mazatlan
161
+ America/Mendoza
162
+ America/Menominee
163
+ America/Merida
164
+ America/Metlakatla
165
+ America/Mexico_City
166
+ America/Miquelon
167
+ America/Moncton
168
+ America/Monterrey
169
+ America/Montevideo
170
+ America/Montreal
171
+ America/Montserrat
172
+ America/Nassau
173
+ America/New_York
174
+ America/Nipigon
175
+ America/Nome
176
+ America/Noronha
177
+ America/North_Dakota/Beulah
178
+ America/North_Dakota/Center
179
+ America/North_Dakota/New_Salem
180
+ America/Nuuk
181
+ America/Ojinaga
182
+ America/Panama
183
+ America/Pangnirtung
184
+ America/Paramaribo
185
+ America/Phoenix
186
+ America/Port-au-Prince
187
+ America/Port_of_Spain
188
+ America/Porto_Acre
189
+ America/Porto_Velho
190
+ America/Puerto_Rico
191
+ America/Punta_Arenas
192
+ America/Rainy_River
193
+ America/Rankin_Inlet
194
+ America/Recife
195
+ America/Regina
196
+ America/Resolute
197
+ America/Rio_Branco
198
+ America/Rosario
199
+ America/Santa_Isabel
200
+ America/Santarem
201
+ America/Santiago
202
+ America/Santo_Domingo
203
+ America/Sao_Paulo
204
+ America/Scoresbysund
205
+ America/Shiprock
206
+ America/Sitka
207
+ America/St_Barthelemy
208
+ America/St_Johns
209
+ America/St_Kitts
210
+ America/St_Lucia
211
+ America/St_Thomas
212
+ America/St_Vincent
213
+ America/Swift_Current
214
+ America/Tegucigalpa
215
+ America/Thule
216
+ America/Thunder_Bay
217
+ America/Tijuana
218
+ America/Toronto
219
+ America/Tortola
220
+ America/Vancouver
221
+ America/Virgin
222
+ America/Whitehorse
223
+ America/Winnipeg
224
+ America/Yakutat
225
+ America/Yellowknife
226
+ Antarctica/Casey
227
+ Antarctica/Davis
228
+ Antarctica/DumontDUrville
229
+ Antarctica/Macquarie
230
+ Antarctica/Mawson
231
+ Antarctica/McMurdo
232
+ Antarctica/Palmer
233
+ Antarctica/Rothera
234
+ Antarctica/South_Pole
235
+ Antarctica/Syowa
236
+ Antarctica/Troll
237
+ Antarctica/Vostok
238
+ Arctic/Longyearbyen
239
+ Asia/Aden
240
+ Asia/Almaty
241
+ Asia/Amman
242
+ Asia/Anadyr
243
+ Asia/Aqtau
244
+ Asia/Aqtobe
245
+ Asia/Ashgabat
246
+ Asia/Ashkhabad
247
+ Asia/Atyrau
248
+ Asia/Baghdad
249
+ Asia/Bahrain
250
+ Asia/Baku
251
+ Asia/Bangkok
252
+ Asia/Barnaul
253
+ Asia/Beirut
254
+ Asia/Bishkek
255
+ Asia/Brunei
256
+ Asia/Calcutta
257
+ Asia/Chita
258
+ Asia/Choibalsan
259
+ Asia/Chongqing
260
+ Asia/Chungking
261
+ Asia/Colombo
262
+ Asia/Dacca
263
+ Asia/Damascus
264
+ Asia/Dhaka
265
+ Asia/Dili
266
+ Asia/Dubai
267
+ Asia/Dushanbe
268
+ Asia/Famagusta
269
+ Asia/Gaza
270
+ Asia/Harbin
271
+ Asia/Hebron
272
+ Asia/Ho_Chi_Minh
273
+ Asia/Hong_Kong
274
+ Asia/Hovd
275
+ Asia/Irkutsk
276
+ Asia/Istanbul
277
+ Asia/Jakarta
278
+ Asia/Jayapura
279
+ Asia/Jerusalem
280
+ Asia/Kabul
281
+ Asia/Kamchatka
282
+ Asia/Karachi
283
+ Asia/Kashgar
284
+ Asia/Kathmandu
285
+ Asia/Katmandu
286
+ Asia/Khandyga
287
+ Asia/Kolkata
288
+ Asia/Krasnoyarsk
289
+ Asia/Kuala_Lumpur
290
+ Asia/Kuching
291
+ Asia/Kuwait
292
+ Asia/Macao
293
+ Asia/Macau
294
+ Asia/Magadan
295
+ Asia/Makassar
296
+ Asia/Manila
297
+ Asia/Muscat
298
+ Asia/Nicosia
299
+ Asia/Novokuznetsk
300
+ Asia/Novosibirsk
301
+ Asia/Omsk
302
+ Asia/Oral
303
+ Asia/Phnom_Penh
304
+ Asia/Pontianak
305
+ Asia/Pyongyang
306
+ Asia/Qatar
307
+ Asia/Qostanay
308
+ Asia/Qyzylorda
309
+ Asia/Rangoon
310
+ Asia/Riyadh
311
+ Asia/Saigon
312
+ Asia/Sakhalin
313
+ Asia/Samarkand
314
+ Asia/Seoul
315
+ Asia/Shanghai
316
+ Asia/Singapore
317
+ Asia/Srednekolymsk
318
+ Asia/Taipei
319
+ Asia/Tashkent
320
+ Asia/Tbilisi
321
+ Asia/Tehran
322
+ Asia/Tel_Aviv
323
+ Asia/Thimbu
324
+ Asia/Thimphu
325
+ Asia/Tokyo
326
+ Asia/Tomsk
327
+ Asia/Ujung_Pandang
328
+ Asia/Ulaanbaatar
329
+ Asia/Ulan_Bator
330
+ Asia/Urumqi
331
+ Asia/Ust-Nera
332
+ Asia/Vientiane
333
+ Asia/Vladivostok
334
+ Asia/Yakutsk
335
+ Asia/Yangon
336
+ Asia/Yekaterinburg
337
+ Asia/Yerevan
338
+ Atlantic/Azores
339
+ Atlantic/Bermuda
340
+ Atlantic/Canary
341
+ Atlantic/Cape_Verde
342
+ Atlantic/Faeroe
343
+ Atlantic/Faroe
344
+ Atlantic/Jan_Mayen
345
+ Atlantic/Madeira
346
+ Atlantic/Reykjavik
347
+ Atlantic/South_Georgia
348
+ Atlantic/St_Helena
349
+ Atlantic/Stanley
350
+ Australia/ACT
351
+ Australia/Adelaide
352
+ Australia/Brisbane
353
+ Australia/Broken_Hill
354
+ Australia/Canberra
355
+ Australia/Currie
356
+ Australia/Darwin
357
+ Australia/Eucla
358
+ Australia/Hobart
359
+ Australia/LHI
360
+ Australia/Lindeman
361
+ Australia/Lord_Howe
362
+ Australia/Melbourne
363
+ Australia/NSW
364
+ Australia/North
365
+ Australia/Perth
366
+ Australia/Queensland
367
+ Australia/South
368
+ Australia/Sydney
369
+ Australia/Tasmania
370
+ Australia/Victoria
371
+ Australia/West
372
+ Australia/Yancowinna
373
+ Brazil/Acre
374
+ Brazil/DeNoronha
375
+ Brazil/East
376
+ Brazil/West
377
+ CET
378
+ CST6CDT
379
+ Canada/Atlantic
380
+ Canada/Central
381
+ Canada/Eastern
382
+ Canada/Mountain
383
+ Canada/Newfoundland
384
+ Canada/Pacific
385
+ Canada/Saskatchewan
386
+ Canada/Yukon
387
+ Chile/Continental
388
+ Chile/EasterIsland
389
+ Cuba
390
+ EET
391
+ EST
392
+ EST5EDT
393
+ Egypt
394
+ Eire
395
+ Etc/GMT
396
+ Etc/GMT+0
397
+ Etc/GMT+1
398
+ Etc/GMT+10
399
+ Etc/GMT+11
400
+ Etc/GMT+12
401
+ Etc/GMT+2
402
+ Etc/GMT+3
403
+ Etc/GMT+4
404
+ Etc/GMT+5
405
+ Etc/GMT+6
406
+ Etc/GMT+7
407
+ Etc/GMT+8
408
+ Etc/GMT+9
409
+ Etc/GMT-0
410
+ Etc/GMT-1
411
+ Etc/GMT-10
412
+ Etc/GMT-11
413
+ Etc/GMT-12
414
+ Etc/GMT-13
415
+ Etc/GMT-14
416
+ Etc/GMT-2
417
+ Etc/GMT-3
418
+ Etc/GMT-4
419
+ Etc/GMT-5
420
+ Etc/GMT-6
421
+ Etc/GMT-7
422
+ Etc/GMT-8
423
+ Etc/GMT-9
424
+ Etc/GMT0
425
+ Etc/Greenwich
426
+ Etc/UCT
427
+ Etc/UTC
428
+ Etc/Universal
429
+ Etc/Zulu
430
+ Europe/Amsterdam
431
+ Europe/Andorra
432
+ Europe/Astrakhan
433
+ Europe/Athens
434
+ Europe/Belfast
435
+ Europe/Belgrade
436
+ Europe/Berlin
437
+ Europe/Bratislava
438
+ Europe/Brussels
439
+ Europe/Bucharest
440
+ Europe/Budapest
441
+ Europe/Busingen
442
+ Europe/Chisinau
443
+ Europe/Copenhagen
444
+ Europe/Dublin
445
+ Europe/Gibraltar
446
+ Europe/Guernsey
447
+ Europe/Helsinki
448
+ Europe/Isle_of_Man
449
+ Europe/Istanbul
450
+ Europe/Jersey
451
+ Europe/Kaliningrad
452
+ Europe/Kiev
453
+ Europe/Kirov
454
+ Europe/Kyiv
455
+ Europe/Lisbon
456
+ Europe/Ljubljana
457
+ Europe/London
458
+ Europe/Luxembourg
459
+ Europe/Madrid
460
+ Europe/Malta
461
+ Europe/Mariehamn
462
+ Europe/Minsk
463
+ Europe/Monaco
464
+ Europe/Moscow
465
+ Europe/Nicosia
466
+ Europe/Oslo
467
+ Europe/Paris
468
+ Europe/Podgorica
469
+ Europe/Prague
470
+ Europe/Riga
471
+ Europe/Rome
472
+ Europe/Samara
473
+ Europe/San_Marino
474
+ Europe/Sarajevo
475
+ Europe/Saratov
476
+ Europe/Simferopol
477
+ Europe/Skopje
478
+ Europe/Sofia
479
+ Europe/Stockholm
480
+ Europe/Tallinn
481
+ Europe/Tirane
482
+ Europe/Tiraspol
483
+ Europe/Ulyanovsk
484
+ Europe/Uzhgorod
485
+ Europe/Vaduz
486
+ Europe/Vatican
487
+ Europe/Vienna
488
+ Europe/Vilnius
489
+ Europe/Volgograd
490
+ Europe/Warsaw
491
+ Europe/Zagreb
492
+ Europe/Zaporozhye
493
+ Europe/Zurich
494
+ GB
495
+ GB-Eire
496
+ GMT
497
+ GMT+0
498
+ GMT-0
499
+ GMT0
500
+ Greenwich
501
+ HST
502
+ Hongkong
503
+ Iceland
504
+ Indian/Antananarivo
505
+ Indian/Chagos
506
+ Indian/Christmas
507
+ Indian/Cocos
508
+ Indian/Comoro
509
+ Indian/Kerguelen
510
+ Indian/Mahe
511
+ Indian/Maldives
512
+ Indian/Mauritius
513
+ Indian/Mayotte
514
+ Indian/Reunion
515
+ Iran
516
+ Israel
517
+ Jamaica
518
+ Japan
519
+ Kwajalein
520
+ Libya
521
+ MET
522
+ MST
523
+ MST7MDT
524
+ Mexico/BajaNorte
525
+ Mexico/BajaSur
526
+ Mexico/General
527
+ NZ
528
+ NZ-CHAT
529
+ Navajo
530
+ PRC
531
+ PST8PDT
532
+ Pacific/Apia
533
+ Pacific/Auckland
534
+ Pacific/Bougainville
535
+ Pacific/Chatham
536
+ Pacific/Chuuk
537
+ Pacific/Easter
538
+ Pacific/Efate
539
+ Pacific/Enderbury
540
+ Pacific/Fakaofo
541
+ Pacific/Fiji
542
+ Pacific/Funafuti
543
+ Pacific/Galapagos
544
+ Pacific/Gambier
545
+ Pacific/Guadalcanal
546
+ Pacific/Guam
547
+ Pacific/Honolulu
548
+ Pacific/Johnston
549
+ Pacific/Kanton
550
+ Pacific/Kiritimati
551
+ Pacific/Kosrae
552
+ Pacific/Kwajalein
553
+ Pacific/Majuro
554
+ Pacific/Marquesas
555
+ Pacific/Midway
556
+ Pacific/Nauru
557
+ Pacific/Niue
558
+ Pacific/Norfolk
559
+ Pacific/Noumea
560
+ Pacific/Pago_Pago
561
+ Pacific/Palau
562
+ Pacific/Pitcairn
563
+ Pacific/Pohnpei
564
+ Pacific/Ponape
565
+ Pacific/Port_Moresby
566
+ Pacific/Rarotonga
567
+ Pacific/Saipan
568
+ Pacific/Samoa
569
+ Pacific/Tahiti
570
+ Pacific/Tarawa
571
+ Pacific/Tongatapu
572
+ Pacific/Truk
573
+ Pacific/Wake
574
+ Pacific/Wallis
575
+ Pacific/Yap
576
+ Poland
577
+ Portugal
578
+ ROC
579
+ ROK
580
+ Singapore
581
+ Turkey
582
+ UCT
583
+ US/Alaska
584
+ US/Aleutian
585
+ US/Arizona
586
+ US/Central
587
+ US/East-Indiana
588
+ US/Eastern
589
+ US/Hawaii
590
+ US/Indiana-Starke
591
+ US/Michigan
592
+ US/Mountain
593
+ US/Pacific
594
+ US/Samoa
595
+ UTC
596
+ Universal
597
+ W-SU
598
+ WET
599
+ Zulu
600
+ `.trim().split("\n"));