Openstatus www.openstatus.dev
at main 385 lines 8.2 kB view raw
1export const regions = [ 2 { 3 code: "ams", 4 location: "Amsterdam, Netherlands", 5 flag: "🇳🇱", 6 continent: "Europe", 7 provider: "Fly", 8 }, 9 { 10 code: "arn", 11 location: "Stockholm, Sweden", 12 flag: "🇸🇪", 13 continent: "Europe", 14 provider: "Fly", 15 }, 16 { 17 code: "atl", 18 location: "Atlanta, Georgia, USA", 19 flag: "🇺🇸", 20 continent: "North America", 21 provider: "Fly", 22 }, 23 { 24 code: "bog", 25 location: "Bogotá, Colombia", 26 flag: "🇨🇴", 27 continent: "South America", 28 provider: "Fly", 29 }, 30 { 31 code: "bom", 32 location: "Mumbai, India", 33 flag: "🇮🇳", 34 continent: "Asia", 35 provider: "Fly", 36 }, 37 { 38 code: "bos", 39 location: "Boston, Massachusetts, USA", 40 flag: "🇺🇸", 41 continent: "North America", 42 provider: "Fly", 43 }, 44 { 45 code: "cdg", 46 location: "Paris, France", 47 flag: "🇫🇷", 48 continent: "Europe", 49 provider: "Fly", 50 }, 51 { 52 code: "den", 53 location: "Denver, Colorado, USA", 54 flag: "🇺🇸", 55 continent: "North America", 56 provider: "Fly", 57 }, 58 { 59 code: "dfw", 60 location: "Dallas, Texas, USA", 61 flag: "🇺🇸", 62 continent: "North America", 63 provider: "Fly", 64 }, 65 { 66 code: "ewr", 67 location: "Secaucus, New Jersey, USA", 68 flag: "🇺🇸", 69 continent: "North America", 70 provider: "Fly", 71 }, 72 { 73 code: "eze", 74 location: "Ezeiza, Argentina", 75 flag: "🇦🇷", 76 continent: "South America", 77 provider: "Fly", 78 }, 79 { 80 code: "fra", 81 location: "Frankfurt, Germany", 82 flag: "🇩🇪", 83 continent: "Europe", 84 provider: "Fly", 85 }, 86 { 87 code: "gdl", 88 location: "Guadalajara, Mexico", 89 flag: "🇲🇽", 90 continent: "North America", 91 provider: "Fly", 92 }, 93 { 94 code: "gig", 95 location: "Rio de Janeiro, Brazil", 96 flag: "🇧🇷", 97 continent: "South America", 98 provider: "Fly", 99 }, 100 { 101 code: "gru", 102 location: "Sao Paulo, Brazil", 103 flag: "🇧🇷", 104 continent: "South America", 105 provider: "Fly", 106 }, 107 { 108 code: "hkg", 109 location: "Hong Kong, Hong Kong", 110 flag: "🇭🇰", 111 continent: "Asia", 112 provider: "Fly", 113 }, 114 { 115 code: "iad", 116 location: "Ashburn, Virginia, USA", 117 flag: "🇺🇸", 118 continent: "North America", 119 provider: "Fly", 120 }, 121 { 122 code: "jnb", 123 location: "Johannesburg, South Africa", 124 flag: "🇿🇦", 125 continent: "Africa", 126 }, 127 { 128 code: "lax", 129 location: "Los Angeles, California, USA", 130 flag: "🇺🇸", 131 continent: "North America", 132 provider: "Fly", 133 }, 134 { 135 code: "lhr", 136 location: "London, United Kingdom", 137 flag: "🇬🇧", 138 continent: "Europe", 139 provider: "Fly", 140 }, 141 { 142 code: "mad", 143 location: "Madrid, Spain", 144 flag: "🇪🇸", 145 continent: "Europe", 146 }, 147 { 148 code: "mia", 149 location: "Miami, Florida, USA", 150 flag: "🇺🇸", 151 continent: "North America", 152 provider: "Fly", 153 }, 154 { 155 code: "nrt", 156 location: "Tokyo, Japan", 157 flag: "🇯🇵", 158 continent: "Asia", 159 provider: "Fly", 160 }, 161 { 162 code: "ord", 163 location: "Chicago, Illinois, USA", 164 flag: "🇺🇸", 165 continent: "North America", 166 }, 167 { 168 code: "otp", 169 location: "Bucharest, Romania", 170 flag: "🇷🇴", 171 continent: "Europe", 172 provider: "Fly", 173 }, 174 { 175 code: "phx", 176 location: "Phoenix, Arizona, USA", 177 flag: "🇺🇸", 178 continent: "North America", 179 provider: "Fly", 180 }, 181 { 182 code: "qro", 183 location: "Querétaro, Mexico", 184 flag: "🇲🇽", 185 continent: "North America", 186 provider: "Fly", 187 }, 188 { 189 code: "scl", 190 location: "Santiago, Chile", 191 flag: "🇨🇱", 192 continent: "South America", 193 provider: "Fly", 194 }, 195 { 196 code: "sjc", 197 location: "San Jose, California, USA", 198 flag: "🇺🇸", 199 continent: "North America", 200 provider: "Fly", 201 }, 202 { 203 code: "sea", 204 location: "Seattle, Washington, USA", 205 flag: "🇺🇸", 206 continent: "North America", 207 provider: "Fly", 208 }, 209 { 210 code: "sin", 211 location: "Singapore, Singapore", 212 flag: "🇸🇬", 213 continent: "Asia", 214 provider: "Fly", 215 }, 216 { 217 code: "syd", 218 location: "Sydney, Australia", 219 flag: "🇦🇺", 220 continent: "Oceania", 221 provider: "Fly", 222 }, 223 { 224 code: "waw", 225 location: "Warsaw, Poland", 226 flag: "🇵🇱", 227 continent: "Europe", 228 provider: "Fly", 229 }, 230 { 231 code: "yul", 232 location: "Montreal, Canada", 233 flag: "🇨🇦", 234 continent: "North America", 235 provider: "Fly", 236 }, 237 { 238 code: "yyz", 239 location: "Toronto, Canada", 240 flag: "🇨🇦", 241 continent: "North America", 242 provider: "Fly", 243 }, 244 { 245 code: "koyeb_fra", 246 location: "Frankfurt, Germany", 247 flag: "🇩🇪", 248 continent: "Europe", 249 provider: "koyeb", 250 }, 251 { 252 code: "koyeb_par", 253 location: "Paris, France", 254 flag: "🇫🇷", 255 continent: "Europe", 256 provider: "koyeb", 257 }, 258 { 259 code: "koyeb_sfo", 260 location: "San Francisco, USA", 261 flag: "🇺🇸", 262 continent: "North America", 263 provider: "koyeb", 264 }, 265 { 266 code: "koyeb_sin", 267 location: "Singapore, Singapore", 268 flag: "🇸🇬", 269 continent: "Asia", 270 provider: "koyeb", 271 }, 272 { 273 code: "koyeb_tyo", 274 location: "Tokyo, Japan", 275 flag: "🇯🇵", 276 continent: "Asia", 277 provider: "koyeb", 278 }, 279 { 280 code: "koyeb_was", 281 location: "Washington, USA", 282 flag: "🇺🇸", 283 continent: "North America", 284 provider: "koyeb", 285 }, 286 { 287 code: "railway_us-west2", 288 location: "California, USA", 289 flag: "🇺🇸", 290 continent: "North America", 291 provider: "railway", 292 }, 293 { 294 code: "railway_us-east4-eqdc4a", 295 location: "Virginia, USA", 296 flag: "🇺🇸", 297 continent: "North America", 298 provider: "railway", 299 }, 300 { 301 code: "railway_europe-west4-drams3a", 302 location: "Amsterdam, Netherlands", 303 flag: "🇳🇱", 304 continent: "Europe", 305 provider: "railway", 306 }, 307 { 308 code: "railway_asia-southeast1-eqsg3a", 309 location: "Singapore, Singapore", 310 flag: "🇸🇬", 311 continent: "Asia", 312 provider: "railway", 313 }, 314] as const; 315 316export type Region = (typeof regions)[number]["code"]; 317 318export const groupedRegions = regions.reduce( 319 (acc, region) => { 320 const continent = region.continent; 321 if (!acc[continent]) { 322 acc[continent] = []; 323 } 324 acc[continent].push(region.code); 325 return acc; 326 }, 327 {} as Record<string, Region[]>, 328); 329 330export const regionColors = { 331 ams: "hsl(217.2 91.2% 59.8%)", 332 arn: "hsl(238.7 83.5% 66.7%)", 333 atl: "hsl(258.3 89.5% 66.3%)", 334 bog: "hsl(270.7 91% 65.1%)", 335 bom: "hsl(292.2 84.1% 60.6%)", 336 bos: "hsl(330.4 81.2% 60.4%)", 337 cdg: "hsl(349.7 89.2% 60.2%)", 338 den: "hsl(215.4 16.3% 46.9%)", 339 dfw: "hsl(220 8.9% 46.1%)", 340 ewr: "hsl(240 3.8% 46.1%)", 341 eze: "hsl(0 0% 45.1%)", 342 fra: "hsl(25 5.3% 44.7%)", 343 gdl: "hsl(0 84.2% 60.2%)", 344 gig: "hsl(24.6 95% 53.1%)", 345 gru: "hsl(37.7 92.1% 50.2%)", 346 hkg: "hsl(45.4 93.4% 47.5%)", 347 iad: "hsl(83.7 80.5% 44.3%)", 348 jnb: "hsl(142.1 70.6% 45.3%)", 349 lax: "hsl(160.1 84.1% 39.4%)", 350 lhr: "hsl(173.4 80.4% 40%)", 351 mad: "hsl(188.7 94.5% 42.7%)", 352 mia: "hsl(198.6 88.7% 48.4%)", 353 nrt: "hsl(217.2 91.2% 59.8%)", 354 ord: "hsl(238.7 83.5% 66.7%)", 355 otp: "hsl(258.3 89.5% 66.3%)", 356 phx: "hsl(270.7 91% 65.1%)", 357 qro: "hsl(292.2 84.1% 60.6%)", 358 scl: "hsl(330.4 81.2% 60.4%)", 359 sjc: "hsl(349.7 89.2% 60.2%)", 360 sea: "hsl(215.4 16.3% 46.9%)", 361 sin: "hsl(220 8.9% 46.1%)", 362 syd: "hsl(240 3.8% 46.1%)", 363 waw: "hsl(0 0% 45.1%)", 364 yul: "hsl(25 5.3% 44.7%)", 365 yyz: "hsl(0 84.2% 60.2%)", 366 367 koyeb_fra: "hsl(25 5.3% 44.7%)", 368 koyeb_par: "hsl(25 5.3% 44.7%)", 369 koyeb_sin: "hsl(25 5.3% 44.7%)", 370 koyeb_sfo: "hsl(0 0% 45.1%)", 371 koyeb_tyo: "hsl(0 0% 45.1%)", 372 koyeb_was: "hsl(0 0% 45.1%)", 373 374 "railway_asia-southeast1-eqsg3a": "hsl(0 0% 45.1%)", 375 "railway_europe-west4-drams3a": "hsl(0 0% 45.1%)", 376 "railway_us-east4-eqdc4a": "hsl(0 0% 45.1%)", 377 "railway_us-west2": "hsl(0 0% 45.1%)", 378} satisfies Record<Region, string>; 379 380export function getRegionColor(region: string) { 381 if (region in regionColors) { 382 return regionColors[region as keyof typeof regionColors]; 383 } 384 return "hsl(0 0% 45.1%)"; 385}