├── .eslintrc.json ├── .gitignore ├── README.md ├── app ├── [location] │ ├── opengraph-image.tsx │ └── page.tsx ├── api │ └── weather │ │ └── route.ts ├── components │ ├── footer.tsx │ ├── illustration.tsx │ └── page-data.tsx ├── favicon.ico ├── fonts │ └── ClashDisplay-Semibold.otf ├── globals.css ├── layout.tsx ├── lib │ └── utils.ts ├── opengraph-image.png └── page.tsx ├── package.json ├── pnpm-lock.yaml ├── public ├── .well-known │ └── ai-plugin.json ├── bg-dark.png ├── bg-light.png ├── logo.png ├── logo.svg ├── next.svg ├── openapi.json └── vercel.svg └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env 29 | .env*.local 30 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | 38 | # misc 39 | .vscode 40 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | OG Image 3 | 4 | 5 |

WeatherGPT

6 | 7 |

8 | A ChatGPT Plugin starter template built with Next.js 13 App Router, Edge Functions, and Vercel 9 |

10 | 11 |

12 | Introduction · 13 | Features · 14 | Try the Plugin · 15 | Deploy Your Own · 16 | Read the blog post 17 |

18 |
19 | 20 | ## Introduction 21 | 22 | WeatherGPT is a ChatGPT Plugin to get the weather of any given location. 23 | 24 | https://user-images.githubusercontent.com/28986134/231841036-80da6d5b-b1dd-46e8-881e-4034529bcd1e.mp4 25 | 26 |
27 | 28 | It can also make appropriate recommendations of what outfits to wear given the weather. 29 | 30 | ![CleanShot 2023-04-13 at 13 16 45](https://user-images.githubusercontent.com/28986134/231851083-4a00ffd8-9372-42b4-a3c8-534b0435ee25.png) 31 | 32 | ## Features 33 | 34 | - AI-Plugin & OpenAPI JSON specs 35 | - Returns a link to a dynamic Next.js route 36 | - Nextjs 13 App Router 37 | - Edge Route Handlers for returning weather data 38 | - Metadata API for SEO tags 39 | - `ImageResponse` API for dynamic OG images at the edge 40 | 41 | ## Try the Plugin 42 | 43 | If you have access to Plugins, you can try this plugin out! 44 | 45 | 1. Go to the Plugin Store 46 | 2. Click "Install an unverified plugin" 47 | 3. Enter "weathergpt.vercel.app" 48 | 4. Click "Install". 49 | 50 | https://user-images.githubusercontent.com/28986134/231842599-ab80ccc2-b1c2-4d24-bdfc-c023eebdf320.mp4 51 | 52 | ## Deploy Your Own 53 | 54 | You can deploy your own hosted version of this plugin to Vercel with one-click: 55 | 56 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?demo-title=WeatherGPT+%E2%80%93%C2%A0ChatGPT+Plugin+Starter&demo-description=The+ultimate+ChatGPT+Plugin+starter+template.+WeatherGPT+is+a+ChatGPT+Plugin+to+get+the+weather+of+any+given+location.&demo-url=https%3A%2F%2Fweathergpt.vercel.app%2F&demo-image=%2F%2Fimages.ctfassets.net%2Fe5382hct74si%2F7Ft2fS9gtS9XtxUNVJJENP%2F04a68855bda0524982d3c15cbd2628ac%2FCleanShot_2023-04-13_at_12.37.09.png&project-name=WeatherGPT+%E2%80%93%C2%A0ChatGPT+Plugin+Starter&repository-name=weathergpt&repository-url=https%3A%2F%2Fgithub.com%2Fsteven-tey%2Fweathergpt&from=templates&skippable-integrations=1&env=WEATHER_API_KEY&envDescription=Get+your+WeatherAPI+key+here%3A&envLink=https%3A%2F%2Fwww.weatherapi.com%2F&teamCreateStatus=hidden) 57 | 58 | Once you're done, don't forget to change all instances of `weathergpt.vercel.app` in the codebase to your app's URL: 59 | 60 | ![CleanShot 2023-04-14 at 17 23 32](https://user-images.githubusercontent.com/28986134/232164728-12a5d659-24a6-4528-babc-099dde5fdd26.png) 61 | 62 | To add your newly deployed Plugin to ChatGPT, follow the steps from [Try the Plugin](#try-the-plugin) above, but instead of clicking on "Install an unverified plugin", select "Develop your own plugin" instead. Note that you'll need access to develop ChatGPT Plugins to be able to do this. 63 | 64 | ![CleanShot 2023-04-14 at 17 21 56](https://user-images.githubusercontent.com/28986134/232164948-d77c25c8-3ace-4b8c-8d30-db8d2b6283a5.png) 65 | 66 | -------------------------------------------------------------------------------- /app/[location]/opengraph-image.tsx: -------------------------------------------------------------------------------- 1 | import { ImageResponse } from "next/server"; 2 | import { getWeatherData } from "../lib/utils"; 3 | 4 | export const runtime = "edge"; 5 | 6 | const stats = [ 7 | { 8 | name: "TEMPERATURE", 9 | attr: "temp_c", 10 | unit: "°C", 11 | }, 12 | { 13 | name: "WIND", 14 | attr: "wind_mph", 15 | unit: "mph", 16 | }, 17 | { 18 | name: "HUMIDITY", 19 | attr: "humidity", 20 | unit: "%", 21 | }, 22 | ]; 23 | 24 | export default async function LocationOG({ 25 | params, 26 | }: { 27 | params: { location: string }; 28 | }) { 29 | const clashData = await fetch( 30 | new URL("../fonts/ClashDisplay-Semibold.otf", import.meta.url) 31 | ).then((res) => res.arrayBuffer()); 32 | 33 | const data = await getWeatherData(params.location); 34 | 35 | return new ImageResponse( 36 | ( 37 |
54 |
63 | ⛅ 64 |
65 |
66 | 73 | {data.location.name} Weather Data 74 | 75 |
82 | {stats.map(({ name, attr, unit }) => ( 83 |
87 |

94 | {name} 95 |

96 |

97 | {data.current[attr]} 98 | {unit} 99 |

100 |
101 | ))} 102 |
103 |
104 |
105 | ), 106 | { 107 | width: 1200, 108 | height: 600, 109 | fonts: [ 110 | { 111 | name: "Clash", 112 | data: clashData, 113 | }, 114 | ], 115 | emoji: "blobmoji", 116 | } 117 | ); 118 | } 119 | -------------------------------------------------------------------------------- /app/[location]/page.tsx: -------------------------------------------------------------------------------- 1 | import { PageData } from "../components/page-data"; 2 | import { getWeatherData } from "../lib/utils"; 3 | 4 | export const runtime = "edge"; 5 | 6 | export async function generateMetadata({ 7 | params, 8 | }: { 9 | params: { location: string }; 10 | }) { 11 | const data = await getWeatherData(params.location); 12 | 13 | return { 14 | title: `${data.location.name} Weather Data - WeatherGPT`, 15 | description: 16 | "WeatherGPT is a ChatGPT Plugin to get the weather of any given location. Built with Next.js and server from Vercel's Edge Network.", 17 | twitter: { 18 | card: "summary_large_image", 19 | title: `${data.location.name} Weather Data - WeatherGPT`, 20 | description: 21 | "WeatherGPT is a ChatGPT Plugin to get the weather of any given location. Built with Next.js and server from Vercel's Edge Network.", 22 | creator: "@steventey", 23 | }, 24 | themeColor: "#FFF", 25 | }; 26 | } 27 | 28 | export default async function Location({ 29 | params, 30 | }: { 31 | params: { location: string }; 32 | }) { 33 | const data = await getWeatherData(params.location); 34 | 35 | return ; 36 | } 37 | -------------------------------------------------------------------------------- /app/api/weather/route.ts: -------------------------------------------------------------------------------- 1 | import { NextRequest, NextResponse } from "next/server"; 2 | import { geolocation } from "@vercel/edge"; 3 | import { getWeatherData } from "@/app/lib/utils"; 4 | 5 | export const runtime = "edge"; 6 | 7 | export async function GET(req: NextRequest) { 8 | let location = req.nextUrl.searchParams.get("location"); 9 | if (!location) { 10 | const { city } = geolocation(req); 11 | location = city || "San Francisco"; 12 | } 13 | 14 | const response = await getWeatherData(location); 15 | 16 | return NextResponse.json({ 17 | ...response, 18 | infoLink: `https://weathergpt.vercel.app/${encodeURIComponent(location)}`, 19 | }); 20 | } 21 | -------------------------------------------------------------------------------- /app/components/footer.tsx: -------------------------------------------------------------------------------- 1 | export function Footer({ children }: React.PropsWithChildren<{}>) { 2 | return ( 3 | 80 | ); 81 | } 82 | -------------------------------------------------------------------------------- /app/components/illustration.tsx: -------------------------------------------------------------------------------- 1 | const ILLUSTRATION_ARIA_LABEL = 2 | "Vercel and Next.js logos side-by-side, surrounded by multiple growing ellipses with orbiting circles on top."; 3 | 4 | export function Illustration() { 5 | return ( 6 | <> 7 | 22 | 30 | 38 | 46 | 54 | 62 | 77 | 92 | 107 | 122 | 137 | 138 | 145 | 146 | 157 | 161 | 162 | 163 | 167 | 171 | 175 | 176 | 177 | 178 | 186 | 187 | 188 | 189 | 197 | 198 | 199 | 200 | 208 | 209 | 210 | 211 | 219 | 220 | 221 | 222 | 223 | 231 | 232 | 233 | 234 | 235 | 243 | 244 | 245 | 246 | 254 | 255 | 256 | 257 | 258 | 263 | 264 | 265 | 266 | 281 | 288 | 295 | 302 | 309 | 316 | 320 | 321 | 328 | 329 | 333 | 334 | 341 | 342 | 346 | 347 | 354 | 355 | 359 | 360 | 367 | 368 | 372 | 373 | 380 | 381 | 382 | 389 | 400 | 404 | 405 | 406 | 412 | 416 | 420 | 421 | 422 | 431 | 432 | 437 | 438 | 439 | 440 | 444 | 449 | 450 | 459 | 460 | 465 | 466 | 467 | 468 | 472 | 477 | 478 | 487 | 488 | 493 | 494 | 495 | 496 | 500 | 505 | 506 | 515 | 516 | 521 | 522 | 523 | 524 | 528 | 533 | 534 | 543 | 544 | 549 | 550 | 551 | 552 | 556 | 561 | 562 | 570 | 571 | 572 | 573 | 581 | 582 | 583 | 584 | 592 | 593 | 594 | 595 | 603 | 604 | 605 | 606 | 607 | 615 | 616 | 617 | 618 | 619 | 627 | 628 | 629 | 630 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | ); 645 | } 646 | -------------------------------------------------------------------------------- /app/components/page-data.tsx: -------------------------------------------------------------------------------- 1 | import { Illustration } from "./illustration"; 2 | import { Footer } from "./footer"; 3 | 4 | export function PageData({ data }: { data: any }) { 5 | const date = new Date().toISOString(); 6 | return ( 7 | <> 8 |
9 | 15 | Deploy your own to Vercel 16 | 17 |

WeatherGPT

18 |

19 | ChatGPT Plugin to get the weather of any given location 20 |

21 | 22 |
23 |
24 | Your Location 25 | 26 | {data.location.name} 27 | 28 |
29 |
30 | Current Temperature 31 | 32 | {data.current.temp_c}°C / {data.current.temp_f}°F 33 | 34 |
35 |
36 |
37 | 38 | 50 | 51 | ); 52 | } 53 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steven-tey/weathergpt/dabf3866fcf61db3dae3f00bdd2666f2a92f4775/app/favicon.ico -------------------------------------------------------------------------------- /app/fonts/ClashDisplay-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steven-tey/weathergpt/dabf3866fcf61db3dae3f00bdd2666f2a92f4775/app/fonts/ClashDisplay-Semibold.otf -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | height: 100%; 4 | } 5 | 6 | *, 7 | *::before, 8 | *::after { 9 | box-sizing: border-box; 10 | -webkit-font-smoothing: antialiased; 11 | -moz-osx-font-smoothing: grayscale; 12 | } 13 | 14 | body { 15 | --fg: black; 16 | --bg: white; 17 | --remix: #2f77d1; 18 | 19 | --accents-1: #fafafa; 20 | --accents-2: #eaeaea; 21 | --accents-3: #999999; 22 | --accents-4: #888888; 23 | --accents-5: #666666; 24 | --accents-6: #444444; 25 | --accents-7: #333333; 26 | --accents-8: #111111; 27 | 28 | --nav-border: #bebebe80; 29 | --nav-background: #fff; 30 | --nav-text: #999; 31 | --nav-text-active: #000; 32 | --nav-pill: radial-gradient(#dadada 0%, #f1f1f1 100%); 33 | --root-padding: 16px; 34 | 35 | display: flex; 36 | flex-direction: column; 37 | margin: 0; 38 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, 39 | Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; 40 | background: var(--bg); 41 | color: var(--fg); 42 | padding: 0 var(--root-padding); 43 | background-image: url(/bg-light.png); 44 | background-size: cover; 45 | background-position: center center; 46 | background-repeat: no-repeat; 47 | } 48 | 49 | h1, 50 | h2, 51 | h3, 52 | h4, 53 | p { 54 | margin: 0; 55 | } 56 | 57 | h1 { 58 | font-size: 60px; 59 | } 60 | 61 | .description { 62 | font-size: 20px; 63 | color: var(--accents-5); 64 | margin-top: 10px; 65 | text-align: center; 66 | } 67 | 68 | .pill { 69 | border-radius: 9999px; 70 | border: solid 1px var(--accents-2); 71 | background: var(--accents-2); 72 | font-weight: 600; 73 | font-size: 14px; 74 | color: var(--accents-7); 75 | text-decoration: none; 76 | padding: 8px 16px; 77 | margin-bottom: 8px; 78 | } 79 | 80 | .pill:hover { 81 | filter: brightness(0.96); 82 | transition: filter 0.2s ease; 83 | } 84 | 85 | ::selection { 86 | background: var(--remix); 87 | color: var(--bg); 88 | } 89 | 90 | @media (prefers-color-scheme: dark) { 91 | body { 92 | --fg: white; 93 | --bg: black; 94 | 95 | --accents-8: #fafafa; 96 | --accents-7: #eaeaea; 97 | --accents-6: #999999; 98 | --accents-5: #888888; 99 | --accents-4: #666666; 100 | --accents-3: #444444; 101 | --accents-2: #333333; 102 | --accents-1: #111111; 103 | 104 | --nav-border: #44444480; 105 | --nav-background: #000; 106 | --nav-text-active: #fff; 107 | --nav-pill: radial-gradient(#505050 0%, #292929 100%); 108 | 109 | background-image: url(/bg-dark.png); 110 | } 111 | } 112 | 113 | /* main */ 114 | 115 | body a { 116 | border-radius: 3px; 117 | } 118 | 119 | body a:focus-visible { 120 | box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--accents-4); 121 | outline: 0; 122 | text-decoration: none; 123 | } 124 | 125 | main { 126 | display: flex; 127 | align-items: center; 128 | justify-content: center; 129 | flex-direction: column; 130 | position: relative; 131 | width: 100%; 132 | height: 100%; 133 | max-width: 720px; 134 | margin: 0 auto; 135 | overflow: hidden; 136 | } 137 | 138 | .gradient { 139 | position: fixed; 140 | top: 0; 141 | right: 0; 142 | z-index: -1; 143 | pointer-events: none; 144 | } 145 | 146 | .gradient[data-theme="dark"] { 147 | display: none; 148 | } 149 | 150 | .illustration { 151 | width: 100%; 152 | min-width: 480px; 153 | position: absolute; 154 | top: 50%; 155 | transform: translateY(-50%); 156 | pointer-events: none; 157 | } 158 | 159 | .illustration[data-theme="dark"] { 160 | display: none; 161 | } 162 | 163 | .meta { 164 | display: grid; 165 | grid-template-columns: repeat(2, 1fr); 166 | align-items: center; 167 | justify-content: center; 168 | width: 100%; 169 | gap: 0px; 170 | margin-top: 40vh; 171 | } 172 | 173 | .info { 174 | display: flex; 175 | flex-direction: column; 176 | align-items: center; 177 | text-align: center; 178 | gap: 12px; 179 | } 180 | 181 | .info span { 182 | white-space: nowrap; 183 | display: flex; 184 | width: fit-content; 185 | align-items: center; 186 | gap: 8px; 187 | font-size: clamp(14px, 2vw, 16px); 188 | color: var(--accents-5); 189 | } 190 | 191 | .info span.region strong { 192 | color: var(--fg); 193 | } 194 | 195 | .info span svg { 196 | width: 18px; 197 | height: 18px; 198 | } 199 | 200 | .info strong { 201 | line-height: 1.2; 202 | font-size: clamp(18px, 5vw, 40px); 203 | } 204 | 205 | @keyframes spin { 206 | 0% { 207 | transform: rotate(0deg); 208 | } 209 | 100% { 210 | transform: rotate(-360deg); 211 | } 212 | } 213 | 214 | @keyframes scale { 215 | 0% { 216 | opacity: 0; 217 | } 218 | 100% { 219 | opacity: var(--circle-opacity); 220 | } 221 | } 222 | 223 | .illustration circle { 224 | opacity: 0; 225 | animation: scale 0.5s ease forwards; 226 | } 227 | 228 | .illustration circle[data-index="0"] { 229 | animation-delay: 0.1s; 230 | } 231 | 232 | .illustration circle[data-index="1"] { 233 | animation-delay: 0.2s; 234 | } 235 | 236 | .illustration circle[data-index="2"] { 237 | animation-delay: 0.3s; 238 | } 239 | 240 | .illustration circle[data-index="3"] { 241 | animation-delay: 0.4s; 242 | } 243 | 244 | .illustration circle[data-index="4"] { 245 | animation-delay: 0.5s; 246 | } 247 | 248 | .orbit { 249 | opacity: 0; 250 | animation: scale 1s ease forwards; 251 | } 252 | 253 | .orbit[data-index="0"] { 254 | animation-delay: 0.5s; 255 | } 256 | 257 | .orbit[data-index="1"] { 258 | animation-delay: 0.6s; 259 | } 260 | 261 | .orbit[data-index="2"] { 262 | animation-delay: 0.25s; 263 | } 264 | 265 | .orbit[data-index="3"] { 266 | animation-delay: 0.3s; 267 | } 268 | 269 | .orbit[data-index="4"] { 270 | animation-delay: 0.6s; 271 | } 272 | 273 | .illustration .orbits { 274 | transform-origin: center center; 275 | } 276 | 277 | .illustration .orbits > g { 278 | animation: spin 60s linear both infinite; 279 | } 280 | 281 | .illustration .orbits > g:nth-child(2) { 282 | animation-duration: 80s; 283 | } 284 | 285 | .illustration .orbits > g:nth-child(3) { 286 | animation-duration: 100s; 287 | } 288 | 289 | .illustration .orbits > g:nth-child(4) { 290 | animation-duration: 120s; 291 | } 292 | 293 | /* footer */ 294 | 295 | footer { 296 | display: flex; 297 | justify-content: space-between; 298 | align-items: flex-end; 299 | position: relative; 300 | bottom: 0; 301 | left: 0; 302 | width: 100%; 303 | text-align: center; 304 | padding: 48px; 305 | box-sizing: border-box; 306 | font-size: 16px; 307 | } 308 | 309 | footer p { 310 | line-height: 20px; 311 | color: var(--accents-7); 312 | } 313 | 314 | footer a { 315 | height: fit-content; 316 | } 317 | 318 | footer a:hover { 319 | text-decoration: hover; 320 | } 321 | 322 | footer .details { 323 | display: flex; 324 | flex-direction: column; 325 | gap: 12px; 326 | font-size: inherit; 327 | color: var(--fg); 328 | } 329 | 330 | footer .details a { 331 | color: inherit; 332 | text-decoration-color: var(--mono8); 333 | text-decoration-thickness: 1px; 334 | text-underline-offset: 3px; 335 | } 336 | 337 | footer .source { 338 | display: flex; 339 | align-items: center; 340 | justify-content: flex-end; 341 | gap: 8px; 342 | font-size: inherit; 343 | color: var(--accents-8); 344 | text-decoration: none; 345 | } 346 | 347 | .vercel { 348 | height: 24px; 349 | } 350 | 351 | /* nav */ 352 | 353 | nav { 354 | top: 0; 355 | margin-top: 64px; 356 | font-size: 14px; 357 | position: fixed; 358 | width: fit-content; 359 | z-index: 10; 360 | left: 50%; 361 | transform: translateX(-50%); 362 | max-width: 100%; 363 | 364 | border: 1px solid var(--accents-2); 365 | border-radius: 9999px; 366 | box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12); 367 | position: relative; 368 | z-index: 10; 369 | } 370 | 371 | nav:after { 372 | content: ""; 373 | background: linear-gradient( 374 | to left, 375 | var(--accents-2) 20%, 376 | var(--accents-2) 44%, 377 | var(--accents-6) 50%, 378 | var(--accents-3) 60%, 379 | var(--accents-2) 63%, 380 | var(--accents-2) 100% 381 | ); 382 | z-index: -1; 383 | background-position-x: var(--x); 384 | background-size: 200% auto; 385 | position: absolute; 386 | border-radius: inherit; 387 | bottom: -1px; 388 | left: 0; 389 | width: 100%; 390 | height: 100%; 391 | transition: background-position-x 600ms ease; 392 | } 393 | 394 | .nav-switcher { 395 | width: 100%; 396 | overflow-x: auto; 397 | overflow-y: hidden; 398 | border-radius: inherit; 399 | display: flex; 400 | padding: 4px; 401 | background: var(--accents-1); 402 | } 403 | 404 | .nav-link { 405 | display: flex; 406 | align-items: center; 407 | border-radius: inherit; 408 | height: 32px; 409 | border: 0; 410 | font-family: var(--font-sans); 411 | padding: 0 16px; 412 | font-size: 14px; 413 | background: transparent; 414 | color: var(--accents-5); 415 | position: relative; 416 | cursor: pointer; 417 | transition: color 150ms ease; 418 | text-decoration: none; 419 | white-space: nowrap; 420 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 421 | } 422 | 423 | .nav-link.active { 424 | color: var(--accents-8); 425 | text-shadow: 1px 1px 12px rgba(255, 255, 255, 0.4); 426 | } 427 | 428 | .nav-link:focus-visible { 429 | outline: 0; 430 | box-shadow: 0 0 0 2px var(--accents-4); 431 | } 432 | 433 | .nav-stroke { 434 | background: linear-gradient( 435 | 90deg, 436 | rgba(0, 0, 0, 0), 437 | var(--accents-4) 20%, 438 | var(--accents-2) 67.19%, 439 | rgba(0, 0, 0, 0) 440 | ); 441 | height: 1px; 442 | position: absolute; 443 | top: -1px; 444 | width: 90%; 445 | left: 32px; 446 | z-index: -1; 447 | } 448 | 449 | .nav-glow { 450 | background: white; 451 | width: 50%; 452 | height: 50px; 453 | border-radius: inherit; 454 | position: absolute; 455 | z-index: 1; 456 | filter: blur(7px); 457 | bottom: -52px; 458 | left: 25%; 459 | } 460 | 461 | .nav-pill { 462 | position: absolute; 463 | width: 100%; 464 | height: 100%; 465 | top: 0; 466 | left: 0; 467 | border-radius: inherit; 468 | background: rgba(255, 255, 255, 0.08); 469 | } 470 | 471 | @media (max-width: 420px) { 472 | .nav-link { 473 | padding: 0 12px; 474 | } 475 | } 476 | 477 | @media (hover: hover) and (pointer: fine) { 478 | .nav-link:hover { 479 | color: var(--nav-text-active); 480 | } 481 | } 482 | 483 | @media (prefers-color-scheme: light) { 484 | nav:after { 485 | display: none; 486 | } 487 | 488 | .nav-stroke { 489 | opacity: 0.2; 490 | } 491 | 492 | nav { 493 | border: 1px solid rgba(0, 0, 0, 0.12); 494 | background-clip: padding-box; 495 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.05); 496 | } 497 | 498 | .nav-switcher { 499 | background: rgba(255, 255, 255, 0.1); 500 | backdrop-filter: blur(16px); 501 | } 502 | 503 | .nav-pill { 504 | background: radial-gradient( 505 | 132.5% 137.28% at 69.9% 88.75%, 506 | #dadada 0%, 507 | #f1f1f1 100% 508 | ); 509 | } 510 | 511 | .nav-link { 512 | color: var(--accents-3); 513 | } 514 | } 515 | 516 | @media (prefers-color-scheme: dark) { 517 | .gradient[data-theme="dark"] { 518 | display: block; 519 | } 520 | .gradient[data-theme="light"] { 521 | display: none; 522 | } 523 | .details p:nth-of-type(2) { 524 | color: var(--accents-5); 525 | } 526 | .illustration[data-theme="dark"] { 527 | display: block; 528 | } 529 | .illustration[data-theme="light"] { 530 | display: none; 531 | } 532 | } 533 | 534 | @media (max-width: 960px) { 535 | footer { 536 | flex-direction: column; 537 | align-items: center; 538 | gap: 16px; 539 | padding: 32px 16px; 540 | font-size: 13px; 541 | } 542 | 543 | footer [data-break] { 544 | display: block; 545 | } 546 | 547 | .source svg { 548 | width: 16px; 549 | height: 16px; 550 | } 551 | 552 | .source { 553 | margin-top: 4px; 554 | } 555 | 556 | nav { 557 | margin-top: 32px; 558 | } 559 | } 560 | 561 | @media (max-width: 600px) { 562 | .meta { 563 | gap: 8px; 564 | } 565 | 566 | footer { 567 | gap: 12px; 568 | } 569 | 570 | .info { 571 | gap: 8px; 572 | } 573 | 574 | .info span svg { 575 | width: 14px; 576 | height: 14px; 577 | } 578 | 579 | .vercel, 580 | .vercel svg { 581 | height: 18px; 582 | } 583 | } 584 | 585 | .note { 586 | font-size: 12px; 587 | color: var(--accents-4); 588 | max-width: 320px; 589 | text-align: center; 590 | top: 0; 591 | margin-top: 12px; 592 | position: fixed; 593 | z-index: 10; 594 | left: 50%; 595 | transform: translateX(-50%); 596 | position: relative; 597 | } 598 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import "./globals.css"; 2 | import { Analytics } from "@vercel/analytics/react"; 3 | 4 | export const metadata = { 5 | title: "WeatherGPT - ChatGPT Plugin to get the weather of any given location", 6 | description: 7 | "WeatherGPT is a ChatGPT Plugin to get the weather of any given location. Built with Next.js and served from Vercel's Edge Network.", 8 | twitter: { 9 | card: "summary_large_image", 10 | title: 11 | "WeatherGPT - ChatGPT Plugin to get the weather of any given location", 12 | description: 13 | "WeatherGPT is a ChatGPT Plugin to get the weather of any given location. Built with Next.js and served from Vercel's Edge Network.", 14 | creator: "@steventey", 15 | }, 16 | metadataBase: new URL("https://weathergpt.vercel.app"), 17 | themeColor: "#FFF", 18 | }; 19 | 20 | export default function RootLayout({ 21 | children, 22 | }: { 23 | children: React.ReactNode; 24 | }) { 25 | return ( 26 | 27 | 28 | {children} 29 | 30 | 31 | 32 | ); 33 | } 34 | -------------------------------------------------------------------------------- /app/lib/utils.ts: -------------------------------------------------------------------------------- 1 | export async function getWeatherData(location: string) { 2 | return fetch( 3 | `http://api.weatherapi.com/v1/current.json?key=${process.env.WEATHER_API_KEY}&q=${location}&aqi=no`, 4 | { next: { revalidate: 60 } } 5 | ).then((res) => res.json()); 6 | } 7 | -------------------------------------------------------------------------------- /app/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steven-tey/weathergpt/dabf3866fcf61db3dae3f00bdd2666f2a92f4775/app/opengraph-image.png -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | import { headers } from "next/headers"; 2 | import { getWeatherData } from "./lib/utils"; 3 | import { PageData } from "./components/page-data"; 4 | 5 | export const runtime = "edge"; 6 | 7 | export default async function Page() { 8 | const parsedCity = headers().get("x-vercel-ip-city"); 9 | const city = 10 | !parsedCity || parsedCity === "null" ? "San Francisco" : parsedCity; 11 | const data = await getWeatherData(city); 12 | 13 | return ; 14 | } 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "weathergpt", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "dependencies": { 12 | "@types/node": "18.15.11", 13 | "@types/react": "18.0.35", 14 | "@types/react-dom": "18.0.11", 15 | "@vercel/analytics": "^0.1.11", 16 | "@vercel/edge": "^0.3.2", 17 | "eslint": "8.38.0", 18 | "eslint-config-next": "13.3.0", 19 | "fs": "0.0.1-security", 20 | "next": "13.4.1", 21 | "react": "18.2.0", 22 | "react-dom": "18.2.0", 23 | "typescript": "5.0.4" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@types/node': 18.15.11 5 | '@types/react': 18.0.35 6 | '@types/react-dom': 18.0.11 7 | '@vercel/analytics': ^0.1.11 8 | '@vercel/edge': ^0.3.2 9 | eslint: 8.38.0 10 | eslint-config-next: 13.3.0 11 | fs: 0.0.1-security 12 | next: 13.4.1 13 | react: 18.2.0 14 | react-dom: 18.2.0 15 | typescript: 5.0.4 16 | 17 | dependencies: 18 | '@types/node': 18.15.11 19 | '@types/react': 18.0.35 20 | '@types/react-dom': 18.0.11 21 | '@vercel/analytics': 0.1.11_react@18.2.0 22 | '@vercel/edge': 0.3.2 23 | eslint: 8.38.0 24 | eslint-config-next: 13.3.0_voubu7prgxjfsfbgx5d4sqnwiy 25 | fs: 0.0.1-security 26 | next: 13.4.1_biqbaboplfbrettd7655fr4n2y 27 | react: 18.2.0 28 | react-dom: 18.2.0_react@18.2.0 29 | typescript: 5.0.4 30 | 31 | packages: 32 | 33 | /@babel/runtime/7.21.0: 34 | resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} 35 | engines: {node: '>=6.9.0'} 36 | dependencies: 37 | regenerator-runtime: 0.13.11 38 | dev: false 39 | 40 | /@eslint-community/eslint-utils/4.4.0_eslint@8.38.0: 41 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 42 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 43 | peerDependencies: 44 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 45 | dependencies: 46 | eslint: 8.38.0 47 | eslint-visitor-keys: 3.4.0 48 | dev: false 49 | 50 | /@eslint-community/regexpp/4.5.0: 51 | resolution: {integrity: sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==} 52 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 53 | dev: false 54 | 55 | /@eslint/eslintrc/2.0.2: 56 | resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} 57 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 58 | dependencies: 59 | ajv: 6.12.6 60 | debug: 4.3.4 61 | espree: 9.5.1 62 | globals: 13.20.0 63 | ignore: 5.2.4 64 | import-fresh: 3.3.0 65 | js-yaml: 4.1.0 66 | minimatch: 3.1.2 67 | strip-json-comments: 3.1.1 68 | transitivePeerDependencies: 69 | - supports-color 70 | dev: false 71 | 72 | /@eslint/js/8.38.0: 73 | resolution: {integrity: sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==} 74 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 75 | dev: false 76 | 77 | /@humanwhocodes/config-array/0.11.8: 78 | resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 79 | engines: {node: '>=10.10.0'} 80 | dependencies: 81 | '@humanwhocodes/object-schema': 1.2.1 82 | debug: 4.3.4 83 | minimatch: 3.1.2 84 | transitivePeerDependencies: 85 | - supports-color 86 | dev: false 87 | 88 | /@humanwhocodes/module-importer/1.0.1: 89 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 90 | engines: {node: '>=12.22'} 91 | dev: false 92 | 93 | /@humanwhocodes/object-schema/1.2.1: 94 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 95 | dev: false 96 | 97 | /@next/env/13.4.1: 98 | resolution: {integrity: sha512-eD6WCBMFjLFooLM19SIhSkWBHtaFrZFfg2Cxnyl3vS3DAdFRfnx5TY2RxlkuKXdIRCC0ySbtK9JXXt8qLCqzZg==} 99 | dev: false 100 | 101 | /@next/eslint-plugin-next/13.3.0: 102 | resolution: {integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==} 103 | dependencies: 104 | glob: 7.1.7 105 | dev: false 106 | 107 | /@next/swc-darwin-arm64/13.4.1: 108 | resolution: {integrity: sha512-eF8ARHtYfnoYtDa6xFHriUKA/Mfj/cCbmKb3NofeKhMccs65G6/loZ15a6wYCCx4rPAd6x4t1WmVYtri7EdeBg==} 109 | engines: {node: '>= 10'} 110 | cpu: [arm64] 111 | os: [darwin] 112 | requiresBuild: true 113 | dev: false 114 | optional: true 115 | 116 | /@next/swc-darwin-x64/13.4.1: 117 | resolution: {integrity: sha512-7cmDgF9tGWTgn5Gw+vP17miJbH4wcraMHDCOHTYWkO/VeKT73dUWG23TNRLfgtCNSPgH4V5B4uLHoZTanx9bAw==} 118 | engines: {node: '>= 10'} 119 | cpu: [x64] 120 | os: [darwin] 121 | requiresBuild: true 122 | dev: false 123 | optional: true 124 | 125 | /@next/swc-linux-arm64-gnu/13.4.1: 126 | resolution: {integrity: sha512-qwJqmCri2ie8aTtE5gjTSr8S6O8B67KCYgVZhv9gKH44yvc/zXbAY8u23QGULsYOyh1islWE5sWfQNLOj9iryg==} 127 | engines: {node: '>= 10'} 128 | cpu: [arm64] 129 | os: [linux] 130 | requiresBuild: true 131 | dev: false 132 | optional: true 133 | 134 | /@next/swc-linux-arm64-musl/13.4.1: 135 | resolution: {integrity: sha512-qcC54tWNGDv/VVIFkazxhqH1Bnagjfs4enzELVRlUOoJPD2BGJTPI7z08pQPbbgxLtRiu8gl2mXvpB8WlOkMeA==} 136 | engines: {node: '>= 10'} 137 | cpu: [arm64] 138 | os: [linux] 139 | requiresBuild: true 140 | dev: false 141 | optional: true 142 | 143 | /@next/swc-linux-x64-gnu/13.4.1: 144 | resolution: {integrity: sha512-9TeWFlpLsBosZ+tsm/rWBaMwt5It9tPH8m3nawZqFUUrZyGRfGcI67js774vtx0k3rL9qbyY6+3pw9BCVpaYUA==} 145 | engines: {node: '>= 10'} 146 | cpu: [x64] 147 | os: [linux] 148 | requiresBuild: true 149 | dev: false 150 | optional: true 151 | 152 | /@next/swc-linux-x64-musl/13.4.1: 153 | resolution: {integrity: sha512-sNDGaWmSqTS4QRUzw61wl4mVPeSqNIr1OOjLlQTRuyInxMxtqImRqdvzDvFTlDfdeUMU/DZhWGYoHrXLlZXe6A==} 154 | engines: {node: '>= 10'} 155 | cpu: [x64] 156 | os: [linux] 157 | requiresBuild: true 158 | dev: false 159 | optional: true 160 | 161 | /@next/swc-win32-arm64-msvc/13.4.1: 162 | resolution: {integrity: sha512-+CXZC7u1iXdLRudecoUYbhbsXpglYv8KFYsFxKBPn7kg+bk7eJo738wAA4jXIl8grTF2mPdmO93JOQym+BlYGA==} 163 | engines: {node: '>= 10'} 164 | cpu: [arm64] 165 | os: [win32] 166 | requiresBuild: true 167 | dev: false 168 | optional: true 169 | 170 | /@next/swc-win32-ia32-msvc/13.4.1: 171 | resolution: {integrity: sha512-vIoXVVc7UYO68VwVMDKwJC2+HqAZQtCYiVlApyKEeIPIQpz2gpufzGxk1z3/gwrJt/kJ5CDZjlhYDCzd3hdz+g==} 172 | engines: {node: '>= 10'} 173 | cpu: [ia32] 174 | os: [win32] 175 | requiresBuild: true 176 | dev: false 177 | optional: true 178 | 179 | /@next/swc-win32-x64-msvc/13.4.1: 180 | resolution: {integrity: sha512-n8V5ImLQZibKTu10UUdI3nIeTLkliEXe628qxqW9v8My3BAH2a7H0SaCqkV2OgqFnn8sG1wxKYw9/SNJ632kSA==} 181 | engines: {node: '>= 10'} 182 | cpu: [x64] 183 | os: [win32] 184 | requiresBuild: true 185 | dev: false 186 | optional: true 187 | 188 | /@nodelib/fs.scandir/2.1.5: 189 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 190 | engines: {node: '>= 8'} 191 | dependencies: 192 | '@nodelib/fs.stat': 2.0.5 193 | run-parallel: 1.2.0 194 | dev: false 195 | 196 | /@nodelib/fs.stat/2.0.5: 197 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 198 | engines: {node: '>= 8'} 199 | dev: false 200 | 201 | /@nodelib/fs.walk/1.2.8: 202 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 203 | engines: {node: '>= 8'} 204 | dependencies: 205 | '@nodelib/fs.scandir': 2.1.5 206 | fastq: 1.15.0 207 | dev: false 208 | 209 | /@pkgr/utils/2.3.1: 210 | resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} 211 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 212 | dependencies: 213 | cross-spawn: 7.0.3 214 | is-glob: 4.0.3 215 | open: 8.4.2 216 | picocolors: 1.0.0 217 | tiny-glob: 0.2.9 218 | tslib: 2.5.0 219 | dev: false 220 | 221 | /@rushstack/eslint-patch/1.2.0: 222 | resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} 223 | dev: false 224 | 225 | /@swc/helpers/0.5.1: 226 | resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} 227 | dependencies: 228 | tslib: 2.5.0 229 | dev: false 230 | 231 | /@types/json5/0.0.29: 232 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 233 | dev: false 234 | 235 | /@types/node/18.15.11: 236 | resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} 237 | dev: false 238 | 239 | /@types/prop-types/15.7.5: 240 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 241 | dev: false 242 | 243 | /@types/react-dom/18.0.11: 244 | resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} 245 | dependencies: 246 | '@types/react': 18.0.35 247 | dev: false 248 | 249 | /@types/react/18.0.35: 250 | resolution: {integrity: sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==} 251 | dependencies: 252 | '@types/prop-types': 15.7.5 253 | '@types/scheduler': 0.16.3 254 | csstype: 3.1.2 255 | dev: false 256 | 257 | /@types/scheduler/0.16.3: 258 | resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} 259 | dev: false 260 | 261 | /@typescript-eslint/parser/5.58.0_voubu7prgxjfsfbgx5d4sqnwiy: 262 | resolution: {integrity: sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==} 263 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 264 | peerDependencies: 265 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 266 | typescript: '*' 267 | peerDependenciesMeta: 268 | typescript: 269 | optional: true 270 | dependencies: 271 | '@typescript-eslint/scope-manager': 5.58.0 272 | '@typescript-eslint/types': 5.58.0 273 | '@typescript-eslint/typescript-estree': 5.58.0_typescript@5.0.4 274 | debug: 4.3.4 275 | eslint: 8.38.0 276 | typescript: 5.0.4 277 | transitivePeerDependencies: 278 | - supports-color 279 | dev: false 280 | 281 | /@typescript-eslint/scope-manager/5.58.0: 282 | resolution: {integrity: sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==} 283 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 284 | dependencies: 285 | '@typescript-eslint/types': 5.58.0 286 | '@typescript-eslint/visitor-keys': 5.58.0 287 | dev: false 288 | 289 | /@typescript-eslint/types/5.58.0: 290 | resolution: {integrity: sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==} 291 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 292 | dev: false 293 | 294 | /@typescript-eslint/typescript-estree/5.58.0_typescript@5.0.4: 295 | resolution: {integrity: sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==} 296 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 297 | peerDependencies: 298 | typescript: '*' 299 | peerDependenciesMeta: 300 | typescript: 301 | optional: true 302 | dependencies: 303 | '@typescript-eslint/types': 5.58.0 304 | '@typescript-eslint/visitor-keys': 5.58.0 305 | debug: 4.3.4 306 | globby: 11.1.0 307 | is-glob: 4.0.3 308 | semver: 7.4.0 309 | tsutils: 3.21.0_typescript@5.0.4 310 | typescript: 5.0.4 311 | transitivePeerDependencies: 312 | - supports-color 313 | dev: false 314 | 315 | /@typescript-eslint/visitor-keys/5.58.0: 316 | resolution: {integrity: sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==} 317 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 318 | dependencies: 319 | '@typescript-eslint/types': 5.58.0 320 | eslint-visitor-keys: 3.4.0 321 | dev: false 322 | 323 | /@vercel/analytics/0.1.11_react@18.2.0: 324 | resolution: {integrity: sha512-mj5CPR02y0BRs1tN3oZcBNAX9a8NxsIUl9vElDPcqxnMfP0RbRc9fI9Ud7+QDg/1Izvt5uMumsr+6YsmVHcyuw==} 325 | peerDependencies: 326 | react: ^16.8||^17||^18 327 | dependencies: 328 | react: 18.2.0 329 | dev: false 330 | 331 | /@vercel/edge/0.3.2: 332 | resolution: {integrity: sha512-+Vmzzdj5bRdLkBUERJEMkm1pgBDoMrcyDZLRjCWQskOTpi9NfAyu5RU42y4XxpPBwHpuRzkk6lpGa1g3c1Xw2w==} 333 | dev: false 334 | 335 | /acorn-jsx/5.3.2_acorn@8.8.2: 336 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 337 | peerDependencies: 338 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 339 | dependencies: 340 | acorn: 8.8.2 341 | dev: false 342 | 343 | /acorn/8.8.2: 344 | resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 345 | engines: {node: '>=0.4.0'} 346 | hasBin: true 347 | dev: false 348 | 349 | /ajv/6.12.6: 350 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 351 | dependencies: 352 | fast-deep-equal: 3.1.3 353 | fast-json-stable-stringify: 2.1.0 354 | json-schema-traverse: 0.4.1 355 | uri-js: 4.4.1 356 | dev: false 357 | 358 | /ansi-regex/5.0.1: 359 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 360 | engines: {node: '>=8'} 361 | dev: false 362 | 363 | /ansi-styles/4.3.0: 364 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 365 | engines: {node: '>=8'} 366 | dependencies: 367 | color-convert: 2.0.1 368 | dev: false 369 | 370 | /argparse/2.0.1: 371 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 372 | dev: false 373 | 374 | /aria-query/5.1.3: 375 | resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} 376 | dependencies: 377 | deep-equal: 2.2.0 378 | dev: false 379 | 380 | /array-buffer-byte-length/1.0.0: 381 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 382 | dependencies: 383 | call-bind: 1.0.2 384 | is-array-buffer: 3.0.2 385 | dev: false 386 | 387 | /array-includes/3.1.6: 388 | resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} 389 | engines: {node: '>= 0.4'} 390 | dependencies: 391 | call-bind: 1.0.2 392 | define-properties: 1.2.0 393 | es-abstract: 1.21.2 394 | get-intrinsic: 1.2.0 395 | is-string: 1.0.7 396 | dev: false 397 | 398 | /array-union/2.1.0: 399 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 400 | engines: {node: '>=8'} 401 | dev: false 402 | 403 | /array.prototype.flat/1.3.1: 404 | resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} 405 | engines: {node: '>= 0.4'} 406 | dependencies: 407 | call-bind: 1.0.2 408 | define-properties: 1.2.0 409 | es-abstract: 1.21.2 410 | es-shim-unscopables: 1.0.0 411 | dev: false 412 | 413 | /array.prototype.flatmap/1.3.1: 414 | resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} 415 | engines: {node: '>= 0.4'} 416 | dependencies: 417 | call-bind: 1.0.2 418 | define-properties: 1.2.0 419 | es-abstract: 1.21.2 420 | es-shim-unscopables: 1.0.0 421 | dev: false 422 | 423 | /array.prototype.tosorted/1.1.1: 424 | resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 425 | dependencies: 426 | call-bind: 1.0.2 427 | define-properties: 1.2.0 428 | es-abstract: 1.21.2 429 | es-shim-unscopables: 1.0.0 430 | get-intrinsic: 1.2.0 431 | dev: false 432 | 433 | /ast-types-flow/0.0.7: 434 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 435 | dev: false 436 | 437 | /available-typed-arrays/1.0.5: 438 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 439 | engines: {node: '>= 0.4'} 440 | dev: false 441 | 442 | /axe-core/4.6.3: 443 | resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} 444 | engines: {node: '>=4'} 445 | dev: false 446 | 447 | /axobject-query/3.1.1: 448 | resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} 449 | dependencies: 450 | deep-equal: 2.2.0 451 | dev: false 452 | 453 | /balanced-match/1.0.2: 454 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 455 | dev: false 456 | 457 | /brace-expansion/1.1.11: 458 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 459 | dependencies: 460 | balanced-match: 1.0.2 461 | concat-map: 0.0.1 462 | dev: false 463 | 464 | /braces/3.0.2: 465 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 466 | engines: {node: '>=8'} 467 | dependencies: 468 | fill-range: 7.0.1 469 | dev: false 470 | 471 | /busboy/1.6.0: 472 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 473 | engines: {node: '>=10.16.0'} 474 | dependencies: 475 | streamsearch: 1.1.0 476 | dev: false 477 | 478 | /call-bind/1.0.2: 479 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 480 | dependencies: 481 | function-bind: 1.1.1 482 | get-intrinsic: 1.2.0 483 | dev: false 484 | 485 | /callsites/3.1.0: 486 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 487 | engines: {node: '>=6'} 488 | dev: false 489 | 490 | /caniuse-lite/1.0.30001478: 491 | resolution: {integrity: sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==} 492 | dev: false 493 | 494 | /chalk/4.1.2: 495 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 496 | engines: {node: '>=10'} 497 | dependencies: 498 | ansi-styles: 4.3.0 499 | supports-color: 7.2.0 500 | dev: false 501 | 502 | /client-only/0.0.1: 503 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 504 | dev: false 505 | 506 | /color-convert/2.0.1: 507 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 508 | engines: {node: '>=7.0.0'} 509 | dependencies: 510 | color-name: 1.1.4 511 | dev: false 512 | 513 | /color-name/1.1.4: 514 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 515 | dev: false 516 | 517 | /concat-map/0.0.1: 518 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 519 | dev: false 520 | 521 | /cross-spawn/7.0.3: 522 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 523 | engines: {node: '>= 8'} 524 | dependencies: 525 | path-key: 3.1.1 526 | shebang-command: 2.0.0 527 | which: 2.0.2 528 | dev: false 529 | 530 | /csstype/3.1.2: 531 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 532 | dev: false 533 | 534 | /damerau-levenshtein/1.0.8: 535 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 536 | dev: false 537 | 538 | /debug/3.2.7: 539 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 540 | dependencies: 541 | ms: 2.1.3 542 | dev: false 543 | 544 | /debug/4.3.4: 545 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 546 | engines: {node: '>=6.0'} 547 | peerDependencies: 548 | supports-color: '*' 549 | peerDependenciesMeta: 550 | supports-color: 551 | optional: true 552 | dependencies: 553 | ms: 2.1.2 554 | dev: false 555 | 556 | /deep-equal/2.2.0: 557 | resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} 558 | dependencies: 559 | call-bind: 1.0.2 560 | es-get-iterator: 1.1.3 561 | get-intrinsic: 1.2.0 562 | is-arguments: 1.1.1 563 | is-array-buffer: 3.0.2 564 | is-date-object: 1.0.5 565 | is-regex: 1.1.4 566 | is-shared-array-buffer: 1.0.2 567 | isarray: 2.0.5 568 | object-is: 1.1.5 569 | object-keys: 1.1.1 570 | object.assign: 4.1.4 571 | regexp.prototype.flags: 1.4.3 572 | side-channel: 1.0.4 573 | which-boxed-primitive: 1.0.2 574 | which-collection: 1.0.1 575 | which-typed-array: 1.1.9 576 | dev: false 577 | 578 | /deep-is/0.1.4: 579 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 580 | dev: false 581 | 582 | /define-lazy-prop/2.0.0: 583 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 584 | engines: {node: '>=8'} 585 | dev: false 586 | 587 | /define-properties/1.2.0: 588 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} 589 | engines: {node: '>= 0.4'} 590 | dependencies: 591 | has-property-descriptors: 1.0.0 592 | object-keys: 1.1.1 593 | dev: false 594 | 595 | /dir-glob/3.0.1: 596 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 597 | engines: {node: '>=8'} 598 | dependencies: 599 | path-type: 4.0.0 600 | dev: false 601 | 602 | /doctrine/2.1.0: 603 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 604 | engines: {node: '>=0.10.0'} 605 | dependencies: 606 | esutils: 2.0.3 607 | dev: false 608 | 609 | /doctrine/3.0.0: 610 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 611 | engines: {node: '>=6.0.0'} 612 | dependencies: 613 | esutils: 2.0.3 614 | dev: false 615 | 616 | /emoji-regex/9.2.2: 617 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 618 | dev: false 619 | 620 | /enhanced-resolve/5.12.0: 621 | resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} 622 | engines: {node: '>=10.13.0'} 623 | dependencies: 624 | graceful-fs: 4.2.11 625 | tapable: 2.2.1 626 | dev: false 627 | 628 | /es-abstract/1.21.2: 629 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} 630 | engines: {node: '>= 0.4'} 631 | dependencies: 632 | array-buffer-byte-length: 1.0.0 633 | available-typed-arrays: 1.0.5 634 | call-bind: 1.0.2 635 | es-set-tostringtag: 2.0.1 636 | es-to-primitive: 1.2.1 637 | function.prototype.name: 1.1.5 638 | get-intrinsic: 1.2.0 639 | get-symbol-description: 1.0.0 640 | globalthis: 1.0.3 641 | gopd: 1.0.1 642 | has: 1.0.3 643 | has-property-descriptors: 1.0.0 644 | has-proto: 1.0.1 645 | has-symbols: 1.0.3 646 | internal-slot: 1.0.5 647 | is-array-buffer: 3.0.2 648 | is-callable: 1.2.7 649 | is-negative-zero: 2.0.2 650 | is-regex: 1.1.4 651 | is-shared-array-buffer: 1.0.2 652 | is-string: 1.0.7 653 | is-typed-array: 1.1.10 654 | is-weakref: 1.0.2 655 | object-inspect: 1.12.3 656 | object-keys: 1.1.1 657 | object.assign: 4.1.4 658 | regexp.prototype.flags: 1.4.3 659 | safe-regex-test: 1.0.0 660 | string.prototype.trim: 1.2.7 661 | string.prototype.trimend: 1.0.6 662 | string.prototype.trimstart: 1.0.6 663 | typed-array-length: 1.0.4 664 | unbox-primitive: 1.0.2 665 | which-typed-array: 1.1.9 666 | dev: false 667 | 668 | /es-get-iterator/1.1.3: 669 | resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} 670 | dependencies: 671 | call-bind: 1.0.2 672 | get-intrinsic: 1.2.0 673 | has-symbols: 1.0.3 674 | is-arguments: 1.1.1 675 | is-map: 2.0.2 676 | is-set: 2.0.2 677 | is-string: 1.0.7 678 | isarray: 2.0.5 679 | stop-iteration-iterator: 1.0.0 680 | dev: false 681 | 682 | /es-set-tostringtag/2.0.1: 683 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} 684 | engines: {node: '>= 0.4'} 685 | dependencies: 686 | get-intrinsic: 1.2.0 687 | has: 1.0.3 688 | has-tostringtag: 1.0.0 689 | dev: false 690 | 691 | /es-shim-unscopables/1.0.0: 692 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 693 | dependencies: 694 | has: 1.0.3 695 | dev: false 696 | 697 | /es-to-primitive/1.2.1: 698 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 699 | engines: {node: '>= 0.4'} 700 | dependencies: 701 | is-callable: 1.2.7 702 | is-date-object: 1.0.5 703 | is-symbol: 1.0.4 704 | dev: false 705 | 706 | /escape-string-regexp/4.0.0: 707 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 708 | engines: {node: '>=10'} 709 | dev: false 710 | 711 | /eslint-config-next/13.3.0_voubu7prgxjfsfbgx5d4sqnwiy: 712 | resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} 713 | peerDependencies: 714 | eslint: ^7.23.0 || ^8.0.0 715 | typescript: '>=3.3.1' 716 | peerDependenciesMeta: 717 | typescript: 718 | optional: true 719 | dependencies: 720 | '@next/eslint-plugin-next': 13.3.0 721 | '@rushstack/eslint-patch': 1.2.0 722 | '@typescript-eslint/parser': 5.58.0_voubu7prgxjfsfbgx5d4sqnwiy 723 | eslint: 8.38.0 724 | eslint-import-resolver-node: 0.3.7 725 | eslint-import-resolver-typescript: 3.5.5_cshkc2qhcu55b7r3t6b6lfgcxm 726 | eslint-plugin-import: 2.27.5_eslint@8.38.0 727 | eslint-plugin-jsx-a11y: 6.7.1_eslint@8.38.0 728 | eslint-plugin-react: 7.32.2_eslint@8.38.0 729 | eslint-plugin-react-hooks: 4.6.0_eslint@8.38.0 730 | typescript: 5.0.4 731 | transitivePeerDependencies: 732 | - supports-color 733 | dev: false 734 | 735 | /eslint-import-resolver-node/0.3.7: 736 | resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} 737 | dependencies: 738 | debug: 3.2.7 739 | is-core-module: 2.12.0 740 | resolve: 1.22.2 741 | dev: false 742 | 743 | /eslint-import-resolver-typescript/3.5.5_cshkc2qhcu55b7r3t6b6lfgcxm: 744 | resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} 745 | engines: {node: ^14.18.0 || >=16.0.0} 746 | peerDependencies: 747 | eslint: '*' 748 | eslint-plugin-import: '*' 749 | dependencies: 750 | debug: 4.3.4 751 | enhanced-resolve: 5.12.0 752 | eslint: 8.38.0 753 | eslint-module-utils: 2.7.4_eslint@8.38.0 754 | eslint-plugin-import: 2.27.5_eslint@8.38.0 755 | get-tsconfig: 4.5.0 756 | globby: 13.1.4 757 | is-core-module: 2.12.0 758 | is-glob: 4.0.3 759 | synckit: 0.8.5 760 | transitivePeerDependencies: 761 | - supports-color 762 | dev: false 763 | 764 | /eslint-module-utils/2.7.4_eslint@8.38.0: 765 | resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} 766 | engines: {node: '>=4'} 767 | peerDependencies: 768 | eslint: '*' 769 | peerDependenciesMeta: 770 | eslint: 771 | optional: true 772 | dependencies: 773 | debug: 3.2.7 774 | eslint: 8.38.0 775 | dev: false 776 | 777 | /eslint-plugin-import/2.27.5_eslint@8.38.0: 778 | resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} 779 | engines: {node: '>=4'} 780 | peerDependencies: 781 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 782 | dependencies: 783 | array-includes: 3.1.6 784 | array.prototype.flat: 1.3.1 785 | array.prototype.flatmap: 1.3.1 786 | debug: 3.2.7 787 | doctrine: 2.1.0 788 | eslint: 8.38.0 789 | eslint-import-resolver-node: 0.3.7 790 | eslint-module-utils: 2.7.4_eslint@8.38.0 791 | has: 1.0.3 792 | is-core-module: 2.12.0 793 | is-glob: 4.0.3 794 | minimatch: 3.1.2 795 | object.values: 1.1.6 796 | resolve: 1.22.2 797 | semver: 6.3.0 798 | tsconfig-paths: 3.14.2 799 | dev: false 800 | 801 | /eslint-plugin-jsx-a11y/6.7.1_eslint@8.38.0: 802 | resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} 803 | engines: {node: '>=4.0'} 804 | peerDependencies: 805 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 806 | dependencies: 807 | '@babel/runtime': 7.21.0 808 | aria-query: 5.1.3 809 | array-includes: 3.1.6 810 | array.prototype.flatmap: 1.3.1 811 | ast-types-flow: 0.0.7 812 | axe-core: 4.6.3 813 | axobject-query: 3.1.1 814 | damerau-levenshtein: 1.0.8 815 | emoji-regex: 9.2.2 816 | eslint: 8.38.0 817 | has: 1.0.3 818 | jsx-ast-utils: 3.3.3 819 | language-tags: 1.0.5 820 | minimatch: 3.1.2 821 | object.entries: 1.1.6 822 | object.fromentries: 2.0.6 823 | semver: 6.3.0 824 | dev: false 825 | 826 | /eslint-plugin-react-hooks/4.6.0_eslint@8.38.0: 827 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 828 | engines: {node: '>=10'} 829 | peerDependencies: 830 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 831 | dependencies: 832 | eslint: 8.38.0 833 | dev: false 834 | 835 | /eslint-plugin-react/7.32.2_eslint@8.38.0: 836 | resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} 837 | engines: {node: '>=4'} 838 | peerDependencies: 839 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 840 | dependencies: 841 | array-includes: 3.1.6 842 | array.prototype.flatmap: 1.3.1 843 | array.prototype.tosorted: 1.1.1 844 | doctrine: 2.1.0 845 | eslint: 8.38.0 846 | estraverse: 5.3.0 847 | jsx-ast-utils: 3.3.3 848 | minimatch: 3.1.2 849 | object.entries: 1.1.6 850 | object.fromentries: 2.0.6 851 | object.hasown: 1.1.2 852 | object.values: 1.1.6 853 | prop-types: 15.8.1 854 | resolve: 2.0.0-next.4 855 | semver: 6.3.0 856 | string.prototype.matchall: 4.0.8 857 | dev: false 858 | 859 | /eslint-scope/7.1.1: 860 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 861 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 862 | dependencies: 863 | esrecurse: 4.3.0 864 | estraverse: 5.3.0 865 | dev: false 866 | 867 | /eslint-visitor-keys/3.4.0: 868 | resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} 869 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 870 | dev: false 871 | 872 | /eslint/8.38.0: 873 | resolution: {integrity: sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==} 874 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 875 | hasBin: true 876 | dependencies: 877 | '@eslint-community/eslint-utils': 4.4.0_eslint@8.38.0 878 | '@eslint-community/regexpp': 4.5.0 879 | '@eslint/eslintrc': 2.0.2 880 | '@eslint/js': 8.38.0 881 | '@humanwhocodes/config-array': 0.11.8 882 | '@humanwhocodes/module-importer': 1.0.1 883 | '@nodelib/fs.walk': 1.2.8 884 | ajv: 6.12.6 885 | chalk: 4.1.2 886 | cross-spawn: 7.0.3 887 | debug: 4.3.4 888 | doctrine: 3.0.0 889 | escape-string-regexp: 4.0.0 890 | eslint-scope: 7.1.1 891 | eslint-visitor-keys: 3.4.0 892 | espree: 9.5.1 893 | esquery: 1.5.0 894 | esutils: 2.0.3 895 | fast-deep-equal: 3.1.3 896 | file-entry-cache: 6.0.1 897 | find-up: 5.0.0 898 | glob-parent: 6.0.2 899 | globals: 13.20.0 900 | grapheme-splitter: 1.0.4 901 | ignore: 5.2.4 902 | import-fresh: 3.3.0 903 | imurmurhash: 0.1.4 904 | is-glob: 4.0.3 905 | is-path-inside: 3.0.3 906 | js-sdsl: 4.4.0 907 | js-yaml: 4.1.0 908 | json-stable-stringify-without-jsonify: 1.0.1 909 | levn: 0.4.1 910 | lodash.merge: 4.6.2 911 | minimatch: 3.1.2 912 | natural-compare: 1.4.0 913 | optionator: 0.9.1 914 | strip-ansi: 6.0.1 915 | strip-json-comments: 3.1.1 916 | text-table: 0.2.0 917 | transitivePeerDependencies: 918 | - supports-color 919 | dev: false 920 | 921 | /espree/9.5.1: 922 | resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} 923 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 924 | dependencies: 925 | acorn: 8.8.2 926 | acorn-jsx: 5.3.2_acorn@8.8.2 927 | eslint-visitor-keys: 3.4.0 928 | dev: false 929 | 930 | /esquery/1.5.0: 931 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 932 | engines: {node: '>=0.10'} 933 | dependencies: 934 | estraverse: 5.3.0 935 | dev: false 936 | 937 | /esrecurse/4.3.0: 938 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 939 | engines: {node: '>=4.0'} 940 | dependencies: 941 | estraverse: 5.3.0 942 | dev: false 943 | 944 | /estraverse/5.3.0: 945 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 946 | engines: {node: '>=4.0'} 947 | dev: false 948 | 949 | /esutils/2.0.3: 950 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 951 | engines: {node: '>=0.10.0'} 952 | dev: false 953 | 954 | /fast-deep-equal/3.1.3: 955 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 956 | dev: false 957 | 958 | /fast-glob/3.2.12: 959 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 960 | engines: {node: '>=8.6.0'} 961 | dependencies: 962 | '@nodelib/fs.stat': 2.0.5 963 | '@nodelib/fs.walk': 1.2.8 964 | glob-parent: 5.1.2 965 | merge2: 1.4.1 966 | micromatch: 4.0.5 967 | dev: false 968 | 969 | /fast-json-stable-stringify/2.1.0: 970 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 971 | dev: false 972 | 973 | /fast-levenshtein/2.0.6: 974 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 975 | dev: false 976 | 977 | /fastq/1.15.0: 978 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 979 | dependencies: 980 | reusify: 1.0.4 981 | dev: false 982 | 983 | /file-entry-cache/6.0.1: 984 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 985 | engines: {node: ^10.12.0 || >=12.0.0} 986 | dependencies: 987 | flat-cache: 3.0.4 988 | dev: false 989 | 990 | /fill-range/7.0.1: 991 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 992 | engines: {node: '>=8'} 993 | dependencies: 994 | to-regex-range: 5.0.1 995 | dev: false 996 | 997 | /find-up/5.0.0: 998 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 999 | engines: {node: '>=10'} 1000 | dependencies: 1001 | locate-path: 6.0.0 1002 | path-exists: 4.0.0 1003 | dev: false 1004 | 1005 | /flat-cache/3.0.4: 1006 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1007 | engines: {node: ^10.12.0 || >=12.0.0} 1008 | dependencies: 1009 | flatted: 3.2.7 1010 | rimraf: 3.0.2 1011 | dev: false 1012 | 1013 | /flatted/3.2.7: 1014 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1015 | dev: false 1016 | 1017 | /for-each/0.3.3: 1018 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1019 | dependencies: 1020 | is-callable: 1.2.7 1021 | dev: false 1022 | 1023 | /fs.realpath/1.0.0: 1024 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1025 | dev: false 1026 | 1027 | /fs/0.0.1-security: 1028 | resolution: {integrity: sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==} 1029 | dev: false 1030 | 1031 | /function-bind/1.1.1: 1032 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1033 | dev: false 1034 | 1035 | /function.prototype.name/1.1.5: 1036 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1037 | engines: {node: '>= 0.4'} 1038 | dependencies: 1039 | call-bind: 1.0.2 1040 | define-properties: 1.2.0 1041 | es-abstract: 1.21.2 1042 | functions-have-names: 1.2.3 1043 | dev: false 1044 | 1045 | /functions-have-names/1.2.3: 1046 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1047 | dev: false 1048 | 1049 | /get-intrinsic/1.2.0: 1050 | resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} 1051 | dependencies: 1052 | function-bind: 1.1.1 1053 | has: 1.0.3 1054 | has-symbols: 1.0.3 1055 | dev: false 1056 | 1057 | /get-symbol-description/1.0.0: 1058 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1059 | engines: {node: '>= 0.4'} 1060 | dependencies: 1061 | call-bind: 1.0.2 1062 | get-intrinsic: 1.2.0 1063 | dev: false 1064 | 1065 | /get-tsconfig/4.5.0: 1066 | resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} 1067 | dev: false 1068 | 1069 | /glob-parent/5.1.2: 1070 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1071 | engines: {node: '>= 6'} 1072 | dependencies: 1073 | is-glob: 4.0.3 1074 | dev: false 1075 | 1076 | /glob-parent/6.0.2: 1077 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1078 | engines: {node: '>=10.13.0'} 1079 | dependencies: 1080 | is-glob: 4.0.3 1081 | dev: false 1082 | 1083 | /glob/7.1.7: 1084 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1085 | dependencies: 1086 | fs.realpath: 1.0.0 1087 | inflight: 1.0.6 1088 | inherits: 2.0.4 1089 | minimatch: 3.1.2 1090 | once: 1.4.0 1091 | path-is-absolute: 1.0.1 1092 | dev: false 1093 | 1094 | /glob/7.2.3: 1095 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1096 | dependencies: 1097 | fs.realpath: 1.0.0 1098 | inflight: 1.0.6 1099 | inherits: 2.0.4 1100 | minimatch: 3.1.2 1101 | once: 1.4.0 1102 | path-is-absolute: 1.0.1 1103 | dev: false 1104 | 1105 | /globals/13.20.0: 1106 | resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1107 | engines: {node: '>=8'} 1108 | dependencies: 1109 | type-fest: 0.20.2 1110 | dev: false 1111 | 1112 | /globalthis/1.0.3: 1113 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1114 | engines: {node: '>= 0.4'} 1115 | dependencies: 1116 | define-properties: 1.2.0 1117 | dev: false 1118 | 1119 | /globalyzer/0.1.0: 1120 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1121 | dev: false 1122 | 1123 | /globby/11.1.0: 1124 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1125 | engines: {node: '>=10'} 1126 | dependencies: 1127 | array-union: 2.1.0 1128 | dir-glob: 3.0.1 1129 | fast-glob: 3.2.12 1130 | ignore: 5.2.4 1131 | merge2: 1.4.1 1132 | slash: 3.0.0 1133 | dev: false 1134 | 1135 | /globby/13.1.4: 1136 | resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} 1137 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1138 | dependencies: 1139 | dir-glob: 3.0.1 1140 | fast-glob: 3.2.12 1141 | ignore: 5.2.4 1142 | merge2: 1.4.1 1143 | slash: 4.0.0 1144 | dev: false 1145 | 1146 | /globrex/0.1.2: 1147 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1148 | dev: false 1149 | 1150 | /gopd/1.0.1: 1151 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1152 | dependencies: 1153 | get-intrinsic: 1.2.0 1154 | dev: false 1155 | 1156 | /graceful-fs/4.2.11: 1157 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1158 | dev: false 1159 | 1160 | /grapheme-splitter/1.0.4: 1161 | resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1162 | dev: false 1163 | 1164 | /has-bigints/1.0.2: 1165 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1166 | dev: false 1167 | 1168 | /has-flag/4.0.0: 1169 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1170 | engines: {node: '>=8'} 1171 | dev: false 1172 | 1173 | /has-property-descriptors/1.0.0: 1174 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1175 | dependencies: 1176 | get-intrinsic: 1.2.0 1177 | dev: false 1178 | 1179 | /has-proto/1.0.1: 1180 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1181 | engines: {node: '>= 0.4'} 1182 | dev: false 1183 | 1184 | /has-symbols/1.0.3: 1185 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1186 | engines: {node: '>= 0.4'} 1187 | dev: false 1188 | 1189 | /has-tostringtag/1.0.0: 1190 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1191 | engines: {node: '>= 0.4'} 1192 | dependencies: 1193 | has-symbols: 1.0.3 1194 | dev: false 1195 | 1196 | /has/1.0.3: 1197 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1198 | engines: {node: '>= 0.4.0'} 1199 | dependencies: 1200 | function-bind: 1.1.1 1201 | dev: false 1202 | 1203 | /ignore/5.2.4: 1204 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1205 | engines: {node: '>= 4'} 1206 | dev: false 1207 | 1208 | /import-fresh/3.3.0: 1209 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1210 | engines: {node: '>=6'} 1211 | dependencies: 1212 | parent-module: 1.0.1 1213 | resolve-from: 4.0.0 1214 | dev: false 1215 | 1216 | /imurmurhash/0.1.4: 1217 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1218 | engines: {node: '>=0.8.19'} 1219 | dev: false 1220 | 1221 | /inflight/1.0.6: 1222 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1223 | dependencies: 1224 | once: 1.4.0 1225 | wrappy: 1.0.2 1226 | dev: false 1227 | 1228 | /inherits/2.0.4: 1229 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1230 | dev: false 1231 | 1232 | /internal-slot/1.0.5: 1233 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} 1234 | engines: {node: '>= 0.4'} 1235 | dependencies: 1236 | get-intrinsic: 1.2.0 1237 | has: 1.0.3 1238 | side-channel: 1.0.4 1239 | dev: false 1240 | 1241 | /is-arguments/1.1.1: 1242 | resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} 1243 | engines: {node: '>= 0.4'} 1244 | dependencies: 1245 | call-bind: 1.0.2 1246 | has-tostringtag: 1.0.0 1247 | dev: false 1248 | 1249 | /is-array-buffer/3.0.2: 1250 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1251 | dependencies: 1252 | call-bind: 1.0.2 1253 | get-intrinsic: 1.2.0 1254 | is-typed-array: 1.1.10 1255 | dev: false 1256 | 1257 | /is-bigint/1.0.4: 1258 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1259 | dependencies: 1260 | has-bigints: 1.0.2 1261 | dev: false 1262 | 1263 | /is-boolean-object/1.1.2: 1264 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1265 | engines: {node: '>= 0.4'} 1266 | dependencies: 1267 | call-bind: 1.0.2 1268 | has-tostringtag: 1.0.0 1269 | dev: false 1270 | 1271 | /is-callable/1.2.7: 1272 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1273 | engines: {node: '>= 0.4'} 1274 | dev: false 1275 | 1276 | /is-core-module/2.12.0: 1277 | resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} 1278 | dependencies: 1279 | has: 1.0.3 1280 | dev: false 1281 | 1282 | /is-date-object/1.0.5: 1283 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1284 | engines: {node: '>= 0.4'} 1285 | dependencies: 1286 | has-tostringtag: 1.0.0 1287 | dev: false 1288 | 1289 | /is-docker/2.2.1: 1290 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1291 | engines: {node: '>=8'} 1292 | hasBin: true 1293 | dev: false 1294 | 1295 | /is-extglob/2.1.1: 1296 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1297 | engines: {node: '>=0.10.0'} 1298 | dev: false 1299 | 1300 | /is-glob/4.0.3: 1301 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1302 | engines: {node: '>=0.10.0'} 1303 | dependencies: 1304 | is-extglob: 2.1.1 1305 | dev: false 1306 | 1307 | /is-map/2.0.2: 1308 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1309 | dev: false 1310 | 1311 | /is-negative-zero/2.0.2: 1312 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1313 | engines: {node: '>= 0.4'} 1314 | dev: false 1315 | 1316 | /is-number-object/1.0.7: 1317 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1318 | engines: {node: '>= 0.4'} 1319 | dependencies: 1320 | has-tostringtag: 1.0.0 1321 | dev: false 1322 | 1323 | /is-number/7.0.0: 1324 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1325 | engines: {node: '>=0.12.0'} 1326 | dev: false 1327 | 1328 | /is-path-inside/3.0.3: 1329 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1330 | engines: {node: '>=8'} 1331 | dev: false 1332 | 1333 | /is-regex/1.1.4: 1334 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1335 | engines: {node: '>= 0.4'} 1336 | dependencies: 1337 | call-bind: 1.0.2 1338 | has-tostringtag: 1.0.0 1339 | dev: false 1340 | 1341 | /is-set/2.0.2: 1342 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1343 | dev: false 1344 | 1345 | /is-shared-array-buffer/1.0.2: 1346 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1347 | dependencies: 1348 | call-bind: 1.0.2 1349 | dev: false 1350 | 1351 | /is-string/1.0.7: 1352 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1353 | engines: {node: '>= 0.4'} 1354 | dependencies: 1355 | has-tostringtag: 1.0.0 1356 | dev: false 1357 | 1358 | /is-symbol/1.0.4: 1359 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1360 | engines: {node: '>= 0.4'} 1361 | dependencies: 1362 | has-symbols: 1.0.3 1363 | dev: false 1364 | 1365 | /is-typed-array/1.1.10: 1366 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} 1367 | engines: {node: '>= 0.4'} 1368 | dependencies: 1369 | available-typed-arrays: 1.0.5 1370 | call-bind: 1.0.2 1371 | for-each: 0.3.3 1372 | gopd: 1.0.1 1373 | has-tostringtag: 1.0.0 1374 | dev: false 1375 | 1376 | /is-weakmap/2.0.1: 1377 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1378 | dev: false 1379 | 1380 | /is-weakref/1.0.2: 1381 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1382 | dependencies: 1383 | call-bind: 1.0.2 1384 | dev: false 1385 | 1386 | /is-weakset/2.0.2: 1387 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1388 | dependencies: 1389 | call-bind: 1.0.2 1390 | get-intrinsic: 1.2.0 1391 | dev: false 1392 | 1393 | /is-wsl/2.2.0: 1394 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1395 | engines: {node: '>=8'} 1396 | dependencies: 1397 | is-docker: 2.2.1 1398 | dev: false 1399 | 1400 | /isarray/2.0.5: 1401 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1402 | dev: false 1403 | 1404 | /isexe/2.0.0: 1405 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1406 | dev: false 1407 | 1408 | /js-sdsl/4.4.0: 1409 | resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} 1410 | dev: false 1411 | 1412 | /js-tokens/4.0.0: 1413 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1414 | dev: false 1415 | 1416 | /js-yaml/4.1.0: 1417 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1418 | hasBin: true 1419 | dependencies: 1420 | argparse: 2.0.1 1421 | dev: false 1422 | 1423 | /json-schema-traverse/0.4.1: 1424 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1425 | dev: false 1426 | 1427 | /json-stable-stringify-without-jsonify/1.0.1: 1428 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1429 | dev: false 1430 | 1431 | /json5/1.0.2: 1432 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1433 | hasBin: true 1434 | dependencies: 1435 | minimist: 1.2.8 1436 | dev: false 1437 | 1438 | /jsx-ast-utils/3.3.3: 1439 | resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} 1440 | engines: {node: '>=4.0'} 1441 | dependencies: 1442 | array-includes: 3.1.6 1443 | object.assign: 4.1.4 1444 | dev: false 1445 | 1446 | /language-subtag-registry/0.3.22: 1447 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1448 | dev: false 1449 | 1450 | /language-tags/1.0.5: 1451 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} 1452 | dependencies: 1453 | language-subtag-registry: 0.3.22 1454 | dev: false 1455 | 1456 | /levn/0.4.1: 1457 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1458 | engines: {node: '>= 0.8.0'} 1459 | dependencies: 1460 | prelude-ls: 1.2.1 1461 | type-check: 0.4.0 1462 | dev: false 1463 | 1464 | /locate-path/6.0.0: 1465 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1466 | engines: {node: '>=10'} 1467 | dependencies: 1468 | p-locate: 5.0.0 1469 | dev: false 1470 | 1471 | /lodash.merge/4.6.2: 1472 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1473 | dev: false 1474 | 1475 | /loose-envify/1.4.0: 1476 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1477 | hasBin: true 1478 | dependencies: 1479 | js-tokens: 4.0.0 1480 | dev: false 1481 | 1482 | /lru-cache/6.0.0: 1483 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1484 | engines: {node: '>=10'} 1485 | dependencies: 1486 | yallist: 4.0.0 1487 | dev: false 1488 | 1489 | /merge2/1.4.1: 1490 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1491 | engines: {node: '>= 8'} 1492 | dev: false 1493 | 1494 | /micromatch/4.0.5: 1495 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1496 | engines: {node: '>=8.6'} 1497 | dependencies: 1498 | braces: 3.0.2 1499 | picomatch: 2.3.1 1500 | dev: false 1501 | 1502 | /minimatch/3.1.2: 1503 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1504 | dependencies: 1505 | brace-expansion: 1.1.11 1506 | dev: false 1507 | 1508 | /minimist/1.2.8: 1509 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1510 | dev: false 1511 | 1512 | /ms/2.1.2: 1513 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1514 | dev: false 1515 | 1516 | /ms/2.1.3: 1517 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1518 | dev: false 1519 | 1520 | /nanoid/3.3.6: 1521 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1522 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1523 | hasBin: true 1524 | dev: false 1525 | 1526 | /natural-compare/1.4.0: 1527 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1528 | dev: false 1529 | 1530 | /next/13.4.1_biqbaboplfbrettd7655fr4n2y: 1531 | resolution: {integrity: sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==} 1532 | engines: {node: '>=16.8.0'} 1533 | hasBin: true 1534 | peerDependencies: 1535 | '@opentelemetry/api': ^1.1.0 1536 | fibers: '>= 3.1.0' 1537 | node-sass: ^6.0.0 || ^7.0.0 1538 | react: ^18.2.0 1539 | react-dom: ^18.2.0 1540 | sass: ^1.3.0 1541 | peerDependenciesMeta: 1542 | '@opentelemetry/api': 1543 | optional: true 1544 | fibers: 1545 | optional: true 1546 | node-sass: 1547 | optional: true 1548 | sass: 1549 | optional: true 1550 | dependencies: 1551 | '@next/env': 13.4.1 1552 | '@swc/helpers': 0.5.1 1553 | busboy: 1.6.0 1554 | caniuse-lite: 1.0.30001478 1555 | postcss: 8.4.14 1556 | react: 18.2.0 1557 | react-dom: 18.2.0_react@18.2.0 1558 | styled-jsx: 5.1.1_react@18.2.0 1559 | zod: 3.21.4 1560 | optionalDependencies: 1561 | '@next/swc-darwin-arm64': 13.4.1 1562 | '@next/swc-darwin-x64': 13.4.1 1563 | '@next/swc-linux-arm64-gnu': 13.4.1 1564 | '@next/swc-linux-arm64-musl': 13.4.1 1565 | '@next/swc-linux-x64-gnu': 13.4.1 1566 | '@next/swc-linux-x64-musl': 13.4.1 1567 | '@next/swc-win32-arm64-msvc': 13.4.1 1568 | '@next/swc-win32-ia32-msvc': 13.4.1 1569 | '@next/swc-win32-x64-msvc': 13.4.1 1570 | transitivePeerDependencies: 1571 | - '@babel/core' 1572 | - babel-plugin-macros 1573 | dev: false 1574 | 1575 | /object-assign/4.1.1: 1576 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1577 | engines: {node: '>=0.10.0'} 1578 | dev: false 1579 | 1580 | /object-inspect/1.12.3: 1581 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1582 | dev: false 1583 | 1584 | /object-is/1.1.5: 1585 | resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} 1586 | engines: {node: '>= 0.4'} 1587 | dependencies: 1588 | call-bind: 1.0.2 1589 | define-properties: 1.2.0 1590 | dev: false 1591 | 1592 | /object-keys/1.1.1: 1593 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1594 | engines: {node: '>= 0.4'} 1595 | dev: false 1596 | 1597 | /object.assign/4.1.4: 1598 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 1599 | engines: {node: '>= 0.4'} 1600 | dependencies: 1601 | call-bind: 1.0.2 1602 | define-properties: 1.2.0 1603 | has-symbols: 1.0.3 1604 | object-keys: 1.1.1 1605 | dev: false 1606 | 1607 | /object.entries/1.1.6: 1608 | resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} 1609 | engines: {node: '>= 0.4'} 1610 | dependencies: 1611 | call-bind: 1.0.2 1612 | define-properties: 1.2.0 1613 | es-abstract: 1.21.2 1614 | dev: false 1615 | 1616 | /object.fromentries/2.0.6: 1617 | resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} 1618 | engines: {node: '>= 0.4'} 1619 | dependencies: 1620 | call-bind: 1.0.2 1621 | define-properties: 1.2.0 1622 | es-abstract: 1.21.2 1623 | dev: false 1624 | 1625 | /object.hasown/1.1.2: 1626 | resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} 1627 | dependencies: 1628 | define-properties: 1.2.0 1629 | es-abstract: 1.21.2 1630 | dev: false 1631 | 1632 | /object.values/1.1.6: 1633 | resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} 1634 | engines: {node: '>= 0.4'} 1635 | dependencies: 1636 | call-bind: 1.0.2 1637 | define-properties: 1.2.0 1638 | es-abstract: 1.21.2 1639 | dev: false 1640 | 1641 | /once/1.4.0: 1642 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1643 | dependencies: 1644 | wrappy: 1.0.2 1645 | dev: false 1646 | 1647 | /open/8.4.2: 1648 | resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} 1649 | engines: {node: '>=12'} 1650 | dependencies: 1651 | define-lazy-prop: 2.0.0 1652 | is-docker: 2.2.1 1653 | is-wsl: 2.2.0 1654 | dev: false 1655 | 1656 | /optionator/0.9.1: 1657 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1658 | engines: {node: '>= 0.8.0'} 1659 | dependencies: 1660 | deep-is: 0.1.4 1661 | fast-levenshtein: 2.0.6 1662 | levn: 0.4.1 1663 | prelude-ls: 1.2.1 1664 | type-check: 0.4.0 1665 | word-wrap: 1.2.3 1666 | dev: false 1667 | 1668 | /p-limit/3.1.0: 1669 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1670 | engines: {node: '>=10'} 1671 | dependencies: 1672 | yocto-queue: 0.1.0 1673 | dev: false 1674 | 1675 | /p-locate/5.0.0: 1676 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1677 | engines: {node: '>=10'} 1678 | dependencies: 1679 | p-limit: 3.1.0 1680 | dev: false 1681 | 1682 | /parent-module/1.0.1: 1683 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1684 | engines: {node: '>=6'} 1685 | dependencies: 1686 | callsites: 3.1.0 1687 | dev: false 1688 | 1689 | /path-exists/4.0.0: 1690 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1691 | engines: {node: '>=8'} 1692 | dev: false 1693 | 1694 | /path-is-absolute/1.0.1: 1695 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1696 | engines: {node: '>=0.10.0'} 1697 | dev: false 1698 | 1699 | /path-key/3.1.1: 1700 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1701 | engines: {node: '>=8'} 1702 | dev: false 1703 | 1704 | /path-parse/1.0.7: 1705 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1706 | dev: false 1707 | 1708 | /path-type/4.0.0: 1709 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1710 | engines: {node: '>=8'} 1711 | dev: false 1712 | 1713 | /picocolors/1.0.0: 1714 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1715 | dev: false 1716 | 1717 | /picomatch/2.3.1: 1718 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1719 | engines: {node: '>=8.6'} 1720 | dev: false 1721 | 1722 | /postcss/8.4.14: 1723 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1724 | engines: {node: ^10 || ^12 || >=14} 1725 | dependencies: 1726 | nanoid: 3.3.6 1727 | picocolors: 1.0.0 1728 | source-map-js: 1.0.2 1729 | dev: false 1730 | 1731 | /prelude-ls/1.2.1: 1732 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1733 | engines: {node: '>= 0.8.0'} 1734 | dev: false 1735 | 1736 | /prop-types/15.8.1: 1737 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1738 | dependencies: 1739 | loose-envify: 1.4.0 1740 | object-assign: 4.1.1 1741 | react-is: 16.13.1 1742 | dev: false 1743 | 1744 | /punycode/2.3.0: 1745 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1746 | engines: {node: '>=6'} 1747 | dev: false 1748 | 1749 | /queue-microtask/1.2.3: 1750 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1751 | dev: false 1752 | 1753 | /react-dom/18.2.0_react@18.2.0: 1754 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1755 | peerDependencies: 1756 | react: ^18.2.0 1757 | dependencies: 1758 | loose-envify: 1.4.0 1759 | react: 18.2.0 1760 | scheduler: 0.23.0 1761 | dev: false 1762 | 1763 | /react-is/16.13.1: 1764 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1765 | dev: false 1766 | 1767 | /react/18.2.0: 1768 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 1769 | engines: {node: '>=0.10.0'} 1770 | dependencies: 1771 | loose-envify: 1.4.0 1772 | dev: false 1773 | 1774 | /regenerator-runtime/0.13.11: 1775 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 1776 | dev: false 1777 | 1778 | /regexp.prototype.flags/1.4.3: 1779 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 1780 | engines: {node: '>= 0.4'} 1781 | dependencies: 1782 | call-bind: 1.0.2 1783 | define-properties: 1.2.0 1784 | functions-have-names: 1.2.3 1785 | dev: false 1786 | 1787 | /resolve-from/4.0.0: 1788 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1789 | engines: {node: '>=4'} 1790 | dev: false 1791 | 1792 | /resolve/1.22.2: 1793 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 1794 | hasBin: true 1795 | dependencies: 1796 | is-core-module: 2.12.0 1797 | path-parse: 1.0.7 1798 | supports-preserve-symlinks-flag: 1.0.0 1799 | dev: false 1800 | 1801 | /resolve/2.0.0-next.4: 1802 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 1803 | hasBin: true 1804 | dependencies: 1805 | is-core-module: 2.12.0 1806 | path-parse: 1.0.7 1807 | supports-preserve-symlinks-flag: 1.0.0 1808 | dev: false 1809 | 1810 | /reusify/1.0.4: 1811 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1812 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1813 | dev: false 1814 | 1815 | /rimraf/3.0.2: 1816 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1817 | hasBin: true 1818 | dependencies: 1819 | glob: 7.2.3 1820 | dev: false 1821 | 1822 | /run-parallel/1.2.0: 1823 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1824 | dependencies: 1825 | queue-microtask: 1.2.3 1826 | dev: false 1827 | 1828 | /safe-regex-test/1.0.0: 1829 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 1830 | dependencies: 1831 | call-bind: 1.0.2 1832 | get-intrinsic: 1.2.0 1833 | is-regex: 1.1.4 1834 | dev: false 1835 | 1836 | /scheduler/0.23.0: 1837 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 1838 | dependencies: 1839 | loose-envify: 1.4.0 1840 | dev: false 1841 | 1842 | /semver/6.3.0: 1843 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1844 | hasBin: true 1845 | dev: false 1846 | 1847 | /semver/7.4.0: 1848 | resolution: {integrity: sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==} 1849 | engines: {node: '>=10'} 1850 | hasBin: true 1851 | dependencies: 1852 | lru-cache: 6.0.0 1853 | dev: false 1854 | 1855 | /shebang-command/2.0.0: 1856 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1857 | engines: {node: '>=8'} 1858 | dependencies: 1859 | shebang-regex: 3.0.0 1860 | dev: false 1861 | 1862 | /shebang-regex/3.0.0: 1863 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1864 | engines: {node: '>=8'} 1865 | dev: false 1866 | 1867 | /side-channel/1.0.4: 1868 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 1869 | dependencies: 1870 | call-bind: 1.0.2 1871 | get-intrinsic: 1.2.0 1872 | object-inspect: 1.12.3 1873 | dev: false 1874 | 1875 | /slash/3.0.0: 1876 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1877 | engines: {node: '>=8'} 1878 | dev: false 1879 | 1880 | /slash/4.0.0: 1881 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} 1882 | engines: {node: '>=12'} 1883 | dev: false 1884 | 1885 | /source-map-js/1.0.2: 1886 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1887 | engines: {node: '>=0.10.0'} 1888 | dev: false 1889 | 1890 | /stop-iteration-iterator/1.0.0: 1891 | resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} 1892 | engines: {node: '>= 0.4'} 1893 | dependencies: 1894 | internal-slot: 1.0.5 1895 | dev: false 1896 | 1897 | /streamsearch/1.1.0: 1898 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1899 | engines: {node: '>=10.0.0'} 1900 | dev: false 1901 | 1902 | /string.prototype.matchall/4.0.8: 1903 | resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} 1904 | dependencies: 1905 | call-bind: 1.0.2 1906 | define-properties: 1.2.0 1907 | es-abstract: 1.21.2 1908 | get-intrinsic: 1.2.0 1909 | has-symbols: 1.0.3 1910 | internal-slot: 1.0.5 1911 | regexp.prototype.flags: 1.4.3 1912 | side-channel: 1.0.4 1913 | dev: false 1914 | 1915 | /string.prototype.trim/1.2.7: 1916 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} 1917 | engines: {node: '>= 0.4'} 1918 | dependencies: 1919 | call-bind: 1.0.2 1920 | define-properties: 1.2.0 1921 | es-abstract: 1.21.2 1922 | dev: false 1923 | 1924 | /string.prototype.trimend/1.0.6: 1925 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 1926 | dependencies: 1927 | call-bind: 1.0.2 1928 | define-properties: 1.2.0 1929 | es-abstract: 1.21.2 1930 | dev: false 1931 | 1932 | /string.prototype.trimstart/1.0.6: 1933 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 1934 | dependencies: 1935 | call-bind: 1.0.2 1936 | define-properties: 1.2.0 1937 | es-abstract: 1.21.2 1938 | dev: false 1939 | 1940 | /strip-ansi/6.0.1: 1941 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1942 | engines: {node: '>=8'} 1943 | dependencies: 1944 | ansi-regex: 5.0.1 1945 | dev: false 1946 | 1947 | /strip-bom/3.0.0: 1948 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1949 | engines: {node: '>=4'} 1950 | dev: false 1951 | 1952 | /strip-json-comments/3.1.1: 1953 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1954 | engines: {node: '>=8'} 1955 | dev: false 1956 | 1957 | /styled-jsx/5.1.1_react@18.2.0: 1958 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 1959 | engines: {node: '>= 12.0.0'} 1960 | peerDependencies: 1961 | '@babel/core': '*' 1962 | babel-plugin-macros: '*' 1963 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 1964 | peerDependenciesMeta: 1965 | '@babel/core': 1966 | optional: true 1967 | babel-plugin-macros: 1968 | optional: true 1969 | dependencies: 1970 | client-only: 0.0.1 1971 | react: 18.2.0 1972 | dev: false 1973 | 1974 | /supports-color/7.2.0: 1975 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1976 | engines: {node: '>=8'} 1977 | dependencies: 1978 | has-flag: 4.0.0 1979 | dev: false 1980 | 1981 | /supports-preserve-symlinks-flag/1.0.0: 1982 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1983 | engines: {node: '>= 0.4'} 1984 | dev: false 1985 | 1986 | /synckit/0.8.5: 1987 | resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} 1988 | engines: {node: ^14.18.0 || >=16.0.0} 1989 | dependencies: 1990 | '@pkgr/utils': 2.3.1 1991 | tslib: 2.5.0 1992 | dev: false 1993 | 1994 | /tapable/2.2.1: 1995 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 1996 | engines: {node: '>=6'} 1997 | dev: false 1998 | 1999 | /text-table/0.2.0: 2000 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2001 | dev: false 2002 | 2003 | /tiny-glob/0.2.9: 2004 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2005 | dependencies: 2006 | globalyzer: 0.1.0 2007 | globrex: 0.1.2 2008 | dev: false 2009 | 2010 | /to-regex-range/5.0.1: 2011 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2012 | engines: {node: '>=8.0'} 2013 | dependencies: 2014 | is-number: 7.0.0 2015 | dev: false 2016 | 2017 | /tsconfig-paths/3.14.2: 2018 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 2019 | dependencies: 2020 | '@types/json5': 0.0.29 2021 | json5: 1.0.2 2022 | minimist: 1.2.8 2023 | strip-bom: 3.0.0 2024 | dev: false 2025 | 2026 | /tslib/1.14.1: 2027 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2028 | dev: false 2029 | 2030 | /tslib/2.5.0: 2031 | resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} 2032 | dev: false 2033 | 2034 | /tsutils/3.21.0_typescript@5.0.4: 2035 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2036 | engines: {node: '>= 6'} 2037 | peerDependencies: 2038 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2039 | dependencies: 2040 | tslib: 1.14.1 2041 | typescript: 5.0.4 2042 | dev: false 2043 | 2044 | /type-check/0.4.0: 2045 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2046 | engines: {node: '>= 0.8.0'} 2047 | dependencies: 2048 | prelude-ls: 1.2.1 2049 | dev: false 2050 | 2051 | /type-fest/0.20.2: 2052 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2053 | engines: {node: '>=10'} 2054 | dev: false 2055 | 2056 | /typed-array-length/1.0.4: 2057 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2058 | dependencies: 2059 | call-bind: 1.0.2 2060 | for-each: 0.3.3 2061 | is-typed-array: 1.1.10 2062 | dev: false 2063 | 2064 | /typescript/5.0.4: 2065 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 2066 | engines: {node: '>=12.20'} 2067 | hasBin: true 2068 | dev: false 2069 | 2070 | /unbox-primitive/1.0.2: 2071 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2072 | dependencies: 2073 | call-bind: 1.0.2 2074 | has-bigints: 1.0.2 2075 | has-symbols: 1.0.3 2076 | which-boxed-primitive: 1.0.2 2077 | dev: false 2078 | 2079 | /uri-js/4.4.1: 2080 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2081 | dependencies: 2082 | punycode: 2.3.0 2083 | dev: false 2084 | 2085 | /which-boxed-primitive/1.0.2: 2086 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2087 | dependencies: 2088 | is-bigint: 1.0.4 2089 | is-boolean-object: 1.1.2 2090 | is-number-object: 1.0.7 2091 | is-string: 1.0.7 2092 | is-symbol: 1.0.4 2093 | dev: false 2094 | 2095 | /which-collection/1.0.1: 2096 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 2097 | dependencies: 2098 | is-map: 2.0.2 2099 | is-set: 2.0.2 2100 | is-weakmap: 2.0.1 2101 | is-weakset: 2.0.2 2102 | dev: false 2103 | 2104 | /which-typed-array/1.1.9: 2105 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} 2106 | engines: {node: '>= 0.4'} 2107 | dependencies: 2108 | available-typed-arrays: 1.0.5 2109 | call-bind: 1.0.2 2110 | for-each: 0.3.3 2111 | gopd: 1.0.1 2112 | has-tostringtag: 1.0.0 2113 | is-typed-array: 1.1.10 2114 | dev: false 2115 | 2116 | /which/2.0.2: 2117 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2118 | engines: {node: '>= 8'} 2119 | hasBin: true 2120 | dependencies: 2121 | isexe: 2.0.0 2122 | dev: false 2123 | 2124 | /word-wrap/1.2.3: 2125 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2126 | engines: {node: '>=0.10.0'} 2127 | dev: false 2128 | 2129 | /wrappy/1.0.2: 2130 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2131 | dev: false 2132 | 2133 | /yallist/4.0.0: 2134 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2135 | dev: false 2136 | 2137 | /yocto-queue/0.1.0: 2138 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2139 | engines: {node: '>=10'} 2140 | dev: false 2141 | 2142 | /zod/3.21.4: 2143 | resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 2144 | dev: false 2145 | -------------------------------------------------------------------------------- /public/.well-known/ai-plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "schema_version": "v1", 3 | "name_for_model": "WeatherGPT", 4 | "name_for_human": "WeatherGPT", 5 | "description_for_human": "Get current weather information for a specific location.", 6 | "description_for_model": "Use the WeatherGPT plugin to automatically fetch current weather information for a specific location when it's being generated by the ChatGPT assistant. The plugin will return weather data, including temperature, wind speed, humidity, and other relevant information, as well as a link to a page that has all the information. Links will always be returned and should be shown to the user. The weather data can be used to provide users with up-to-date and accurate weather information for their desired location.", 7 | "api": { 8 | "type": "openapi", 9 | "url": "https://weathergpt.vercel.app/openapi.json", 10 | "has_user_authentication": false 11 | }, 12 | "auth": { 13 | "type": "none" 14 | }, 15 | "logo_url": "https://weathergpt.vercel.app/logo.png", 16 | "contact_email": "stey@vercel.com", 17 | "legal_info_url": "https://weathergpt.vercel.app/legal" 18 | } 19 | -------------------------------------------------------------------------------- /public/bg-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steven-tey/weathergpt/dabf3866fcf61db3dae3f00bdd2666f2a92f4775/public/bg-dark.png -------------------------------------------------------------------------------- /public/bg-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steven-tey/weathergpt/dabf3866fcf61db3dae3f00bdd2666f2a92f4775/public/bg-light.png -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/steven-tey/weathergpt/dabf3866fcf61db3dae3f00bdd2666f2a92f4775/public/logo.png -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/openapi.json: -------------------------------------------------------------------------------- 1 | { 2 | "openapi": "3.0.0", 3 | "info": { 4 | "title": "Weather API", 5 | "version": "1.0.0" 6 | }, 7 | "paths": { 8 | "/api/weather": { 9 | "get": { 10 | "summary": "Get current weather information", 11 | "operationId": "checkWeatherUsingGET", 12 | "parameters": [ 13 | { 14 | "name": "location", 15 | "in": "query", 16 | "required": true, 17 | "description": "Location for which to retrieve weather information.", 18 | "schema": { 19 | "type": "string" 20 | } 21 | } 22 | ], 23 | "responses": { 24 | "200": { 25 | "description": "Current weather information", 26 | "content": { 27 | "application/json": { 28 | "schema": { 29 | "type": "object", 30 | "properties": { 31 | "location": { 32 | "type": "object", 33 | "properties": { 34 | "name": { "type": "string" }, 35 | "region": { "type": "string" }, 36 | "country": { "type": "string" }, 37 | "lat": { "type": "number" }, 38 | "lon": { "type": "number" }, 39 | "tz_id": { "type": "string" }, 40 | "localtime_epoch": { "type": "integer" }, 41 | "localtime": { "type": "string" } 42 | } 43 | }, 44 | "current": { 45 | "type": "object", 46 | "properties": { 47 | "last_updated": { 48 | "type": "string", 49 | "description": "Local time when the real time data was updated" 50 | }, 51 | "last_updated_epoch": { 52 | "type": "integer", 53 | "description": "Local time when the real time data was updated in unix time" 54 | }, 55 | "temp_c": { 56 | "type": "number", 57 | "description": "Temperature in celsius" 58 | }, 59 | "temp_f": { 60 | "type": "number", 61 | "description": "Temperature in fahrenheit" 62 | }, 63 | "is_day": { 64 | "type": "integer", 65 | "description": "1 = Yes 0 = No, Whether to show day condition icon or night icon" 66 | }, 67 | "condition": { 68 | "type": "object", 69 | "properties": { 70 | "text": { 71 | "type": "string", 72 | "description": "Weather condition text" 73 | }, 74 | "icon": { 75 | "type": "string", 76 | "description": "Weather icon url" 77 | }, 78 | "code": { 79 | "type": "integer", 80 | "description": "Weather condition unique code" 81 | } 82 | } 83 | }, 84 | "wind_mph": { 85 | "type": "number", 86 | "description": "Wind speed in miles per hour" 87 | }, 88 | "wind_kph": { 89 | "type": "number", 90 | "description": "Wind speed in kilometer per hour" 91 | }, 92 | "wind_degree": { 93 | "type": "integer", 94 | "description": "Wind direction in degrees" 95 | }, 96 | "wind_dir": { 97 | "type": "string", 98 | "description": "Wind direction as 16 point compass, e.g., NSW" 99 | }, 100 | "pressure_mb": { 101 | "type": "number", 102 | "description": "Pressure in millibars" 103 | }, 104 | "pressure_in": { 105 | "type": "number", 106 | "description": "Pressure in inches" 107 | }, 108 | "precip_mm": { 109 | "type": "number", 110 | "description": "Precipitation amount in millimeters" 111 | }, 112 | "precip_in": { 113 | "type": "number", 114 | "description": "Precipitation amount in inches" 115 | }, 116 | "humidity": { 117 | "type": "integer", 118 | "description": "Humidity as percentage" 119 | }, 120 | "cloud": { 121 | "type": "integer", 122 | "description": "Cloud cover as percentage" 123 | }, 124 | "feelslike_c": { 125 | "type": "number", 126 | "description": "Feels like temperature in celsius" 127 | }, 128 | "feelslike_f": { 129 | "type": "number", 130 | "description": "Feels like temperature in fahrenheit" 131 | }, 132 | "vis_km": { 133 | "type": "number", 134 | "description": "Visibility in kilometers" 135 | }, 136 | "vis_miles": { 137 | "type": "number", 138 | "description": "Visibility in miles" 139 | }, 140 | "uv": { "type": "number", "description": "UV Index" }, 141 | "gust_mph": { 142 | "type": "number", 143 | "description": "Wind gust in miles per hour" 144 | }, 145 | "gust_kph": { 146 | "type": "number", 147 | "description": "Wind gust in kilometer per hour" 148 | } 149 | } 150 | }, 151 | "infoLink": { 152 | "type": "string", 153 | "format": "uri", 154 | "description": "A link to a page with more information about the location's weather in the format https://weathergpt.vercel.app/{location}." 155 | } 156 | } 157 | } 158 | } 159 | } 160 | } 161 | } 162 | } 163 | } 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "plugins": [ 18 | { 19 | "name": "next" 20 | } 21 | ], 22 | "paths": { 23 | "@/*": ["./*"] 24 | } 25 | }, 26 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 27 | "exclude": ["node_modules"] 28 | } 29 | --------------------------------------------------------------------------------