next-geo-block 0.2.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.
package/dist/index.cjs ADDED
@@ -0,0 +1,678 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ createGeoBlock: () => createGeoBlock,
24
+ getCountry: () => getCountry,
25
+ timezoneToCountry: () => timezoneToCountry
26
+ });
27
+ module.exports = __toCommonJS(index_exports);
28
+ var import_server = require("next/server");
29
+
30
+ // src/tz-country.ts
31
+ var TZ_TO_COUNTRY = {
32
+ // --- Africa ---
33
+ "Africa/Abidjan": "CI",
34
+ "Africa/Accra": "GH",
35
+ "Africa/Addis_Ababa": "ET",
36
+ "Africa/Algiers": "DZ",
37
+ "Africa/Asmara": "ER",
38
+ "Africa/Bamako": "ML",
39
+ "Africa/Bangui": "CF",
40
+ "Africa/Banjul": "GM",
41
+ "Africa/Bissau": "GW",
42
+ "Africa/Blantyre": "MW",
43
+ "Africa/Brazzaville": "CG",
44
+ "Africa/Bujumbura": "BI",
45
+ "Africa/Cairo": "EG",
46
+ "Africa/Casablanca": "MA",
47
+ "Africa/Ceuta": "ES",
48
+ "Africa/Conakry": "GN",
49
+ "Africa/Dakar": "SN",
50
+ "Africa/Dar_es_Salaam": "TZ",
51
+ "Africa/Djibouti": "DJ",
52
+ "Africa/Douala": "CM",
53
+ "Africa/El_Aaiun": "EH",
54
+ "Africa/Freetown": "SL",
55
+ "Africa/Gaborone": "BW",
56
+ "Africa/Harare": "ZW",
57
+ "Africa/Johannesburg": "ZA",
58
+ "Africa/Juba": "SS",
59
+ "Africa/Kampala": "UG",
60
+ "Africa/Khartoum": "SD",
61
+ "Africa/Kigali": "RW",
62
+ "Africa/Kinshasa": "CD",
63
+ "Africa/Lagos": "NG",
64
+ "Africa/Libreville": "GA",
65
+ "Africa/Lome": "TG",
66
+ "Africa/Luanda": "AO",
67
+ "Africa/Lubumbashi": "CD",
68
+ "Africa/Lusaka": "ZM",
69
+ "Africa/Malabo": "GQ",
70
+ "Africa/Maputo": "MZ",
71
+ "Africa/Maseru": "LS",
72
+ "Africa/Mbabane": "SZ",
73
+ "Africa/Mogadishu": "SO",
74
+ "Africa/Monrovia": "LR",
75
+ "Africa/Nairobi": "KE",
76
+ "Africa/Ndjamena": "TD",
77
+ "Africa/Niamey": "NE",
78
+ "Africa/Nouakchott": "MR",
79
+ "Africa/Ouagadougou": "BF",
80
+ "Africa/Porto-Novo": "BJ",
81
+ "Africa/Sao_Tome": "ST",
82
+ "Africa/Tripoli": "LY",
83
+ "Africa/Tunis": "TN",
84
+ "Africa/Windhoek": "NA",
85
+ // --- Americas ---
86
+ "America/Adak": "US",
87
+ "America/Anchorage": "US",
88
+ "America/Anguilla": "AI",
89
+ "America/Antigua": "AG",
90
+ "America/Araguaina": "BR",
91
+ "America/Argentina/Buenos_Aires": "AR",
92
+ "America/Argentina/Catamarca": "AR",
93
+ "America/Argentina/Cordoba": "AR",
94
+ "America/Argentina/Jujuy": "AR",
95
+ "America/Argentina/La_Rioja": "AR",
96
+ "America/Argentina/Mendoza": "AR",
97
+ "America/Argentina/Rio_Gallegos": "AR",
98
+ "America/Argentina/Salta": "AR",
99
+ "America/Argentina/San_Juan": "AR",
100
+ "America/Argentina/San_Luis": "AR",
101
+ "America/Argentina/Tucuman": "AR",
102
+ "America/Argentina/Ushuaia": "AR",
103
+ "America/Aruba": "AW",
104
+ "America/Asuncion": "PY",
105
+ "America/Atikokan": "CA",
106
+ "America/Bahia": "BR",
107
+ "America/Bahia_Banderas": "MX",
108
+ "America/Barbados": "BB",
109
+ "America/Belem": "BR",
110
+ "America/Belize": "BZ",
111
+ "America/Blanc-Sablon": "CA",
112
+ "America/Boa_Vista": "BR",
113
+ "America/Bogota": "CO",
114
+ "America/Boise": "US",
115
+ "America/Cambridge_Bay": "CA",
116
+ "America/Campo_Grande": "BR",
117
+ "America/Cancun": "MX",
118
+ "America/Caracas": "VE",
119
+ "America/Cayenne": "GF",
120
+ "America/Cayman": "KY",
121
+ "America/Chicago": "US",
122
+ "America/Chihuahua": "MX",
123
+ "America/Ciudad_Juarez": "MX",
124
+ "America/Costa_Rica": "CR",
125
+ "America/Creston": "CA",
126
+ "America/Cuiaba": "BR",
127
+ "America/Curacao": "CW",
128
+ "America/Danmarkshavn": "GL",
129
+ "America/Dawson": "CA",
130
+ "America/Dawson_Creek": "CA",
131
+ "America/Denver": "US",
132
+ "America/Detroit": "US",
133
+ "America/Dominica": "DM",
134
+ "America/Edmonton": "CA",
135
+ "America/Eirunepe": "BR",
136
+ "America/El_Salvador": "SV",
137
+ "America/Fort_Nelson": "CA",
138
+ "America/Fortaleza": "BR",
139
+ "America/Glace_Bay": "CA",
140
+ "America/Goose_Bay": "CA",
141
+ "America/Grand_Turk": "TC",
142
+ "America/Grenada": "GD",
143
+ "America/Guadeloupe": "GP",
144
+ "America/Guatemala": "GT",
145
+ "America/Guayaquil": "EC",
146
+ "America/Guyana": "GY",
147
+ "America/Halifax": "CA",
148
+ "America/Havana": "CU",
149
+ "America/Hermosillo": "MX",
150
+ "America/Indiana/Indianapolis": "US",
151
+ "America/Indiana/Knox": "US",
152
+ "America/Indiana/Marengo": "US",
153
+ "America/Indiana/Petersburg": "US",
154
+ "America/Indiana/Tell_City": "US",
155
+ "America/Indiana/Vevay": "US",
156
+ "America/Indiana/Vincennes": "US",
157
+ "America/Indiana/Winamac": "US",
158
+ "America/Inuvik": "CA",
159
+ "America/Iqaluit": "CA",
160
+ "America/Jamaica": "JM",
161
+ "America/Juneau": "US",
162
+ "America/Kentucky/Louisville": "US",
163
+ "America/Kentucky/Monticello": "US",
164
+ "America/Kralendijk": "BQ",
165
+ "America/La_Paz": "BO",
166
+ "America/Lima": "PE",
167
+ "America/Los_Angeles": "US",
168
+ "America/Lower_Princes": "SX",
169
+ "America/Maceio": "BR",
170
+ "America/Managua": "NI",
171
+ "America/Manaus": "BR",
172
+ "America/Marigot": "MF",
173
+ "America/Martinique": "MQ",
174
+ "America/Matamoros": "MX",
175
+ "America/Mazatlan": "MX",
176
+ "America/Menominee": "US",
177
+ "America/Merida": "MX",
178
+ "America/Metlakatla": "US",
179
+ "America/Mexico_City": "MX",
180
+ "America/Miquelon": "PM",
181
+ "America/Moncton": "CA",
182
+ "America/Monterrey": "MX",
183
+ "America/Montevideo": "UY",
184
+ "America/Montserrat": "MS",
185
+ "America/Nassau": "BS",
186
+ "America/New_York": "US",
187
+ "America/Nome": "US",
188
+ "America/Noronha": "BR",
189
+ "America/North_Dakota/Beulah": "US",
190
+ "America/North_Dakota/Center": "US",
191
+ "America/North_Dakota/New_Salem": "US",
192
+ "America/Nuuk": "GL",
193
+ "America/Ojinaga": "MX",
194
+ "America/Panama": "PA",
195
+ "America/Paramaribo": "SR",
196
+ "America/Phoenix": "US",
197
+ "America/Port-au-Prince": "HT",
198
+ "America/Port_of_Spain": "TT",
199
+ "America/Porto_Velho": "BR",
200
+ "America/Puerto_Rico": "PR",
201
+ "America/Punta_Arenas": "CL",
202
+ "America/Rankin_Inlet": "CA",
203
+ "America/Recife": "BR",
204
+ "America/Regina": "CA",
205
+ "America/Resolute": "CA",
206
+ "America/Rio_Branco": "BR",
207
+ "America/Santarem": "BR",
208
+ "America/Santiago": "CL",
209
+ "America/Santo_Domingo": "DO",
210
+ "America/Sao_Paulo": "BR",
211
+ "America/Scoresbysund": "GL",
212
+ "America/Sitka": "US",
213
+ "America/St_Barthelemy": "BL",
214
+ "America/St_Johns": "CA",
215
+ "America/St_Kitts": "KN",
216
+ "America/St_Lucia": "LC",
217
+ "America/St_Thomas": "VI",
218
+ "America/St_Vincent": "VC",
219
+ "America/Swift_Current": "CA",
220
+ "America/Tegucigalpa": "HN",
221
+ "America/Thule": "GL",
222
+ "America/Tijuana": "MX",
223
+ "America/Toronto": "CA",
224
+ "America/Tortola": "VG",
225
+ "America/Vancouver": "CA",
226
+ "America/Whitehorse": "CA",
227
+ "America/Winnipeg": "CA",
228
+ "America/Yakutat": "US",
229
+ // --- Antarctica / Arctic ---
230
+ "Antarctica/Casey": "AQ",
231
+ "Antarctica/Davis": "AQ",
232
+ "Antarctica/DumontDUrville": "AQ",
233
+ "Antarctica/Macquarie": "AU",
234
+ "Antarctica/Mawson": "AQ",
235
+ "Antarctica/McMurdo": "AQ",
236
+ "Antarctica/Palmer": "AQ",
237
+ "Antarctica/Rothera": "AQ",
238
+ "Antarctica/Syowa": "AQ",
239
+ "Antarctica/Troll": "AQ",
240
+ "Antarctica/Vostok": "AQ",
241
+ "Arctic/Longyearbyen": "SJ",
242
+ // --- Asia ---
243
+ "Asia/Aden": "YE",
244
+ "Asia/Almaty": "KZ",
245
+ "Asia/Amman": "JO",
246
+ "Asia/Anadyr": "RU",
247
+ "Asia/Aqtau": "KZ",
248
+ "Asia/Aqtobe": "KZ",
249
+ "Asia/Ashgabat": "TM",
250
+ "Asia/Atyrau": "KZ",
251
+ "Asia/Baghdad": "IQ",
252
+ "Asia/Bahrain": "BH",
253
+ "Asia/Baku": "AZ",
254
+ "Asia/Bangkok": "TH",
255
+ "Asia/Barnaul": "RU",
256
+ "Asia/Beirut": "LB",
257
+ "Asia/Bishkek": "KG",
258
+ "Asia/Brunei": "BN",
259
+ "Asia/Chita": "RU",
260
+ "Asia/Choibalsan": "MN",
261
+ "Asia/Colombo": "LK",
262
+ "Asia/Damascus": "SY",
263
+ "Asia/Dhaka": "BD",
264
+ "Asia/Dili": "TL",
265
+ "Asia/Dubai": "AE",
266
+ "Asia/Dushanbe": "TJ",
267
+ "Asia/Famagusta": "CY",
268
+ "Asia/Gaza": "PS",
269
+ "Asia/Hebron": "PS",
270
+ "Asia/Ho_Chi_Minh": "VN",
271
+ "Asia/Hong_Kong": "HK",
272
+ "Asia/Hovd": "MN",
273
+ "Asia/Irkutsk": "RU",
274
+ "Asia/Jakarta": "ID",
275
+ "Asia/Jayapura": "ID",
276
+ "Asia/Jerusalem": "IL",
277
+ "Asia/Kabul": "AF",
278
+ "Asia/Kamchatka": "RU",
279
+ "Asia/Karachi": "PK",
280
+ "Asia/Kathmandu": "NP",
281
+ "Asia/Khandyga": "RU",
282
+ "Asia/Kolkata": "IN",
283
+ "Asia/Krasnoyarsk": "RU",
284
+ "Asia/Kuala_Lumpur": "MY",
285
+ "Asia/Kuching": "MY",
286
+ "Asia/Kuwait": "KW",
287
+ "Asia/Macau": "MO",
288
+ "Asia/Magadan": "RU",
289
+ "Asia/Makassar": "ID",
290
+ "Asia/Manila": "PH",
291
+ "Asia/Muscat": "OM",
292
+ "Asia/Nicosia": "CY",
293
+ "Asia/Novokuznetsk": "RU",
294
+ "Asia/Novosibirsk": "RU",
295
+ "Asia/Omsk": "RU",
296
+ "Asia/Oral": "KZ",
297
+ "Asia/Phnom_Penh": "KH",
298
+ "Asia/Pontianak": "ID",
299
+ "Asia/Pyongyang": "KP",
300
+ "Asia/Qatar": "QA",
301
+ "Asia/Qostanay": "KZ",
302
+ "Asia/Qyzylorda": "KZ",
303
+ "Asia/Riyadh": "SA",
304
+ "Asia/Sakhalin": "RU",
305
+ "Asia/Samarkand": "UZ",
306
+ "Asia/Seoul": "KR",
307
+ "Asia/Shanghai": "CN",
308
+ "Asia/Singapore": "SG",
309
+ "Asia/Srednekolymsk": "RU",
310
+ "Asia/Taipei": "TW",
311
+ "Asia/Tashkent": "UZ",
312
+ "Asia/Tbilisi": "GE",
313
+ "Asia/Tehran": "IR",
314
+ "Asia/Thimphu": "BT",
315
+ "Asia/Tokyo": "JP",
316
+ "Asia/Tomsk": "RU",
317
+ "Asia/Ulaanbaatar": "MN",
318
+ "Asia/Urumqi": "CN",
319
+ "Asia/Ust-Nera": "RU",
320
+ "Asia/Vientiane": "LA",
321
+ "Asia/Vladivostok": "RU",
322
+ "Asia/Yakutsk": "RU",
323
+ "Asia/Yangon": "MM",
324
+ "Asia/Yekaterinburg": "RU",
325
+ "Asia/Yerevan": "AM",
326
+ // --- Atlantic ---
327
+ "Atlantic/Azores": "PT",
328
+ "Atlantic/Bermuda": "BM",
329
+ "Atlantic/Canary": "ES",
330
+ "Atlantic/Cape_Verde": "CV",
331
+ "Atlantic/Faroe": "FO",
332
+ "Atlantic/Madeira": "PT",
333
+ "Atlantic/Reykjavik": "IS",
334
+ "Atlantic/South_Georgia": "GS",
335
+ "Atlantic/St_Helena": "SH",
336
+ "Atlantic/Stanley": "FK",
337
+ // --- Australia ---
338
+ "Australia/Adelaide": "AU",
339
+ "Australia/Brisbane": "AU",
340
+ "Australia/Broken_Hill": "AU",
341
+ "Australia/Darwin": "AU",
342
+ "Australia/Eucla": "AU",
343
+ "Australia/Hobart": "AU",
344
+ "Australia/Lindeman": "AU",
345
+ "Australia/Lord_Howe": "AU",
346
+ "Australia/Melbourne": "AU",
347
+ "Australia/Perth": "AU",
348
+ "Australia/Sydney": "AU",
349
+ // --- Europe ---
350
+ "Europe/Amsterdam": "NL",
351
+ "Europe/Andorra": "AD",
352
+ "Europe/Astrakhan": "RU",
353
+ "Europe/Athens": "GR",
354
+ "Europe/Belgrade": "RS",
355
+ "Europe/Berlin": "DE",
356
+ "Europe/Bratislava": "SK",
357
+ "Europe/Brussels": "BE",
358
+ "Europe/Bucharest": "RO",
359
+ "Europe/Budapest": "HU",
360
+ "Europe/Busingen": "DE",
361
+ "Europe/Chisinau": "MD",
362
+ "Europe/Copenhagen": "DK",
363
+ "Europe/Dublin": "IE",
364
+ "Europe/Gibraltar": "GI",
365
+ "Europe/Guernsey": "GG",
366
+ "Europe/Helsinki": "FI",
367
+ "Europe/Isle_of_Man": "IM",
368
+ "Europe/Istanbul": "TR",
369
+ "Europe/Jersey": "JE",
370
+ "Europe/Kaliningrad": "RU",
371
+ "Europe/Kirov": "RU",
372
+ "Europe/Kyiv": "UA",
373
+ "Europe/Lisbon": "PT",
374
+ "Europe/Ljubljana": "SI",
375
+ "Europe/London": "GB",
376
+ "Europe/Luxembourg": "LU",
377
+ "Europe/Madrid": "ES",
378
+ "Europe/Malta": "MT",
379
+ "Europe/Mariehamn": "AX",
380
+ "Europe/Minsk": "BY",
381
+ "Europe/Monaco": "MC",
382
+ "Europe/Moscow": "RU",
383
+ "Europe/Oslo": "NO",
384
+ "Europe/Paris": "FR",
385
+ "Europe/Podgorica": "ME",
386
+ "Europe/Prague": "CZ",
387
+ "Europe/Riga": "LV",
388
+ "Europe/Rome": "IT",
389
+ "Europe/Samara": "RU",
390
+ "Europe/San_Marino": "SM",
391
+ "Europe/Sarajevo": "BA",
392
+ "Europe/Saratov": "RU",
393
+ "Europe/Simferopol": "RU",
394
+ "Europe/Skopje": "MK",
395
+ "Europe/Sofia": "BG",
396
+ "Europe/Stockholm": "SE",
397
+ "Europe/Tallinn": "EE",
398
+ "Europe/Tirane": "AL",
399
+ "Europe/Ulyanovsk": "RU",
400
+ "Europe/Vaduz": "LI",
401
+ "Europe/Vatican": "VA",
402
+ "Europe/Vienna": "AT",
403
+ "Europe/Vilnius": "LT",
404
+ "Europe/Volgograd": "RU",
405
+ "Europe/Warsaw": "PL",
406
+ "Europe/Zagreb": "HR",
407
+ "Europe/Zurich": "CH",
408
+ // --- Indian Ocean ---
409
+ "Indian/Antananarivo": "MG",
410
+ "Indian/Chagos": "IO",
411
+ "Indian/Christmas": "CX",
412
+ "Indian/Cocos": "CC",
413
+ "Indian/Comoro": "KM",
414
+ "Indian/Kerguelen": "TF",
415
+ "Indian/Mahe": "SC",
416
+ "Indian/Maldives": "MV",
417
+ "Indian/Mauritius": "MU",
418
+ "Indian/Mayotte": "YT",
419
+ "Indian/Reunion": "RE",
420
+ // --- Pacific ---
421
+ "Pacific/Apia": "WS",
422
+ "Pacific/Auckland": "NZ",
423
+ "Pacific/Bougainville": "PG",
424
+ "Pacific/Chatham": "NZ",
425
+ "Pacific/Chuuk": "FM",
426
+ "Pacific/Easter": "CL",
427
+ "Pacific/Efate": "VU",
428
+ "Pacific/Fakaofo": "TK",
429
+ "Pacific/Fiji": "FJ",
430
+ "Pacific/Funafuti": "TV",
431
+ "Pacific/Galapagos": "EC",
432
+ "Pacific/Gambier": "PF",
433
+ "Pacific/Guadalcanal": "SB",
434
+ "Pacific/Guam": "GU",
435
+ "Pacific/Honolulu": "US",
436
+ "Pacific/Kanton": "KI",
437
+ "Pacific/Kiritimati": "KI",
438
+ "Pacific/Kosrae": "FM",
439
+ "Pacific/Kwajalein": "MH",
440
+ "Pacific/Majuro": "MH",
441
+ "Pacific/Marquesas": "PF",
442
+ "Pacific/Midway": "UM",
443
+ "Pacific/Nauru": "NR",
444
+ "Pacific/Niue": "NU",
445
+ "Pacific/Norfolk": "NF",
446
+ "Pacific/Noumea": "NC",
447
+ "Pacific/Pago_Pago": "AS",
448
+ "Pacific/Palau": "PW",
449
+ "Pacific/Pitcairn": "PN",
450
+ "Pacific/Pohnpei": "FM",
451
+ "Pacific/Port_Moresby": "PG",
452
+ "Pacific/Rarotonga": "CK",
453
+ "Pacific/Saipan": "MP",
454
+ "Pacific/Tahiti": "PF",
455
+ "Pacific/Tarawa": "KI",
456
+ "Pacific/Tongatapu": "TO",
457
+ "Pacific/Wake": "UM",
458
+ "Pacific/Wallis": "WF",
459
+ // --- Legacy aliases (still emitted by some browsers / older clients) ---
460
+ "Asia/Calcutta": "IN",
461
+ "Asia/Katmandu": "NP",
462
+ "Asia/Rangoon": "MM",
463
+ "Asia/Saigon": "VN",
464
+ "Asia/Chongqing": "CN",
465
+ "Asia/Harbin": "CN",
466
+ "Asia/Kashgar": "CN",
467
+ "Asia/Macao": "MO",
468
+ "Asia/Tel_Aviv": "IL",
469
+ "Asia/Thimbu": "BT",
470
+ "Asia/Ulan_Bator": "MN",
471
+ "Atlantic/Faeroe": "FO",
472
+ "Atlantic/Jan_Mayen": "SJ",
473
+ "Australia/ACT": "AU",
474
+ "Australia/Canberra": "AU",
475
+ "Australia/LHI": "AU",
476
+ "Australia/NSW": "AU",
477
+ "Australia/North": "AU",
478
+ "Australia/Queensland": "AU",
479
+ "Australia/South": "AU",
480
+ "Australia/Tasmania": "AU",
481
+ "Australia/Victoria": "AU",
482
+ "Australia/West": "AU",
483
+ "Australia/Yancowinna": "AU",
484
+ "America/Argentina/ComodRivadavia": "AR",
485
+ "America/Buenos_Aires": "AR",
486
+ "America/Catamarca": "AR",
487
+ "America/Cordoba": "AR",
488
+ "America/Jujuy": "AR",
489
+ "America/Mendoza": "AR",
490
+ "America/Rosario": "AR",
491
+ "America/Indianapolis": "US",
492
+ "America/Indiana": "US",
493
+ "America/Kentucky/Louisville_legacy": "US",
494
+ "America/Knox_IN": "US",
495
+ "America/Louisville": "US",
496
+ "America/Fort_Wayne": "US",
497
+ "America/Atka": "US",
498
+ "America/Shiprock": "US",
499
+ "America/Ensenada": "MX",
500
+ "America/Rosario_BR": "BR",
501
+ "America/Porto_Acre": "BR",
502
+ "America/Coral_Harbour": "CA",
503
+ "America/Montreal": "CA",
504
+ "America/Nipigon": "CA",
505
+ "America/Pangnirtung": "CA",
506
+ "America/Rainy_River": "CA",
507
+ "America/Thunder_Bay": "CA",
508
+ "America/Yellowknife": "CA",
509
+ "America/Virgin": "VI",
510
+ "America/Godthab": "GL",
511
+ "Europe/Belfast": "GB",
512
+ "Europe/Kiev": "UA",
513
+ "Europe/Nicosia": "CY",
514
+ "Europe/Tiraspol": "MD",
515
+ "Europe/Uzhgorod": "UA",
516
+ "Europe/Zaporozhye": "UA",
517
+ "Pacific/Enderbury": "KI",
518
+ "Pacific/Johnston": "US",
519
+ "Pacific/Ponape": "FM",
520
+ "Pacific/Samoa": "AS",
521
+ "Pacific/Truk": "FM",
522
+ "Pacific/Yap": "FM",
523
+ "Africa/Asmera": "ER",
524
+ "Africa/Timbuktu": "ML",
525
+ "Iceland": "IS",
526
+ "Egypt": "EG",
527
+ "Eire": "IE",
528
+ "GB": "GB",
529
+ "GB-Eire": "GB",
530
+ "Hongkong": "HK",
531
+ "Israel": "IL",
532
+ "Jamaica": "JM",
533
+ "Japan": "JP",
534
+ "Libya": "LY",
535
+ "Navajo": "US",
536
+ "Poland": "PL",
537
+ "Portugal": "PT",
538
+ "PRC": "CN",
539
+ "ROC": "TW",
540
+ "ROK": "KR",
541
+ "Singapore": "SG",
542
+ "Turkey": "TR"
543
+ };
544
+ function timezoneToCountry(tz) {
545
+ if (!tz) return void 0;
546
+ const direct = TZ_TO_COUNTRY[tz];
547
+ if (direct) return direct;
548
+ if (tz === "UTC" || tz === "GMT" || tz.startsWith("Etc/")) return void 0;
549
+ return void 0;
550
+ }
551
+
552
+ // src/index.ts
553
+ var DEFAULT_HEADERS = [
554
+ "x-vercel-ip-country",
555
+ "cf-ipcountry",
556
+ "x-country-code"
557
+ ];
558
+ var DEFAULT_TZ_COOKIE = "client_tz";
559
+ var DEFAULT_TZ_HEADER = "x-client-timezone";
560
+ function getCountry(request, extraHeaders = []) {
561
+ for (const header of [...extraHeaders, ...DEFAULT_HEADERS]) {
562
+ const value = request.headers.get(header);
563
+ if (!value) continue;
564
+ const code = value.toUpperCase();
565
+ if (code === "XX") continue;
566
+ return code;
567
+ }
568
+ return void 0;
569
+ }
570
+ function normalizeTimezoneFallback(fb) {
571
+ if (!fb) return void 0;
572
+ if (fb === true) {
573
+ return {
574
+ cookie: DEFAULT_TZ_COOKIE,
575
+ header: DEFAULT_TZ_HEADER,
576
+ resolve: timezoneToCountry
577
+ };
578
+ }
579
+ return {
580
+ cookie: fb.cookie ?? DEFAULT_TZ_COOKIE,
581
+ header: fb.header ?? DEFAULT_TZ_HEADER,
582
+ resolve: fb.resolve ?? timezoneToCountry
583
+ };
584
+ }
585
+ function getCountryFromTimezone(request, cfg) {
586
+ const raw = request.cookies.get(cfg.cookie)?.value ?? request.headers.get(cfg.header) ?? void 0;
587
+ if (!raw) return void 0;
588
+ let tz;
589
+ try {
590
+ tz = decodeURIComponent(raw);
591
+ } catch {
592
+ tz = raw;
593
+ }
594
+ const country = cfg.resolve(tz);
595
+ return country ? country.toUpperCase() : void 0;
596
+ }
597
+ function patternToRegex(pattern) {
598
+ let body = pattern;
599
+ let suffix = "";
600
+ const trailing = body.match(/\/\*\*?$/);
601
+ if (trailing) {
602
+ body = body.slice(0, -trailing[0].length);
603
+ suffix = "(?:/.*)?";
604
+ }
605
+ const escaped = body.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, "[^/]+");
606
+ return new RegExp(`^${escaped}${suffix}/?$`);
607
+ }
608
+ function compileRules(rules) {
609
+ return rules.map((rule) => ({
610
+ matchers: rule.paths.map(
611
+ (p) => p instanceof RegExp ? p : patternToRegex(p)
612
+ ),
613
+ block: new Set(rule.block.map((c) => c.toUpperCase())),
614
+ source: rule
615
+ }));
616
+ }
617
+ function matchRule(compiled, pathname) {
618
+ return compiled.find(
619
+ (rule) => rule.matchers.some((re) => re.test(pathname))
620
+ );
621
+ }
622
+ function createGeoBlock(options) {
623
+ const compiled = compileRules(options.rules);
624
+ const blockedPath = options.blockedPath === void 0 ? "/blocked" : options.blockedPath;
625
+ const failOpen = options.failOpen ?? true;
626
+ const extraHeaders = options.countryHeaders ?? [];
627
+ const tzFallback = normalizeTimezoneFallback(options.fallbackTimezone);
628
+ return async function geoBlock(request) {
629
+ const pathname = request.nextUrl.pathname;
630
+ const rule = matchRule(compiled, pathname);
631
+ if (!rule) return import_server.NextResponse.next();
632
+ let country = getCountry(request, extraHeaders);
633
+ let source = "header";
634
+ if (!country && tzFallback) {
635
+ const tzCountry = getCountryFromTimezone(request, tzFallback);
636
+ if (tzCountry) {
637
+ country = tzCountry;
638
+ source = "timezone";
639
+ }
640
+ }
641
+ if (!country) {
642
+ if (failOpen) return import_server.NextResponse.next();
643
+ return blockResponse(request, rule.source, "", source, options, blockedPath);
644
+ }
645
+ if (rule.block.has(country)) {
646
+ return blockResponse(
647
+ request,
648
+ rule.source,
649
+ country,
650
+ source,
651
+ options,
652
+ blockedPath
653
+ );
654
+ }
655
+ return import_server.NextResponse.next();
656
+ };
657
+ }
658
+ async function blockResponse(request, matchedRule, country, source, options, blockedPath) {
659
+ if (options.onBlock) {
660
+ return options.onBlock({
661
+ request,
662
+ country,
663
+ pathname: request.nextUrl.pathname,
664
+ matchedRule,
665
+ source
666
+ });
667
+ }
668
+ if (blockedPath) {
669
+ return import_server.NextResponse.rewrite(new URL(blockedPath, request.url));
670
+ }
671
+ return new import_server.NextResponse("Not available in your region", { status: 451 });
672
+ }
673
+ // Annotate the CommonJS export names for ESM import in node:
674
+ 0 && (module.exports = {
675
+ createGeoBlock,
676
+ getCountry,
677
+ timezoneToCountry
678
+ });