├── .eslintrc.json ├── .gitignore ├── README.md ├── app ├── demos.tsx ├── favicon.ico ├── globals.css ├── icon.png ├── layout.tsx ├── opengraph-image.png ├── page.tsx ├── question.tsx ├── twitter-image.png └── version │ └── page.tsx ├── build ├── constants.mjs ├── lib.mjs ├── loader-dev.mjs ├── loader-prod.mjs ├── run-dev.ts ├── run-prod.ts └── runtime.tsx ├── components.json ├── components └── ui │ ├── button.tsx │ └── collapsible.tsx ├── db.mjs ├── lib └── utils.ts ├── next.config.mjs ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── rpc ├── hello-react.tsx ├── index.d.ts ├── logs.ts ├── pokemon.tsx └── postgres-version.tsx ├── tailwind.config.ts └── 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 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | # local env files 26 | .env*.local 27 | 28 | # vercel 29 | .vercel 30 | 31 | # typescript 32 | *.tsbuildinfo 33 | next-env.d.ts 34 | TODO.md 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## react-postgres-components 2 | 3 | 4 | 5 | 6 | 7 | An experiment on deploying remote functions that run inside Postgres using v8, run React SSR, and are easily defined in a `rpc/` directory. 8 | 9 | ```js 10 | export default function helloWorld () => { 11 | const [{version}] = sql`SELECT version()`; // no `await` needed! 12 | return

Hello from inside Postgres: {version}

; 13 | } 14 | ``` 15 | 16 | Check out the [demos & how it works](https://react-postgres-components.vercel.app/). 17 | 18 | ### Deployment 19 | 20 | - Make sure the Vercel project is connected to a Vercel Postgres (Neon) database. 21 | - Deploy! 22 | 23 | ### Local dev 24 | 25 | - Run `vc env pull` to get a `.env.local` file with the `POSTGRES_URL` credential 26 | - Run `pnpm dev` to start developing 27 | 28 | ### License & Credit 29 | 30 | - MIT licensed 31 | - Elephant icon by [Lima Studio](https://www.svgrepo.com/svg/423868/elephant-origami-paper) (CC Attribution) 32 | - Pokeball icon by [Tiny Brand Icons](https://www.svgrepo.com/svg/315521/pokemon) (MIT) 33 | -------------------------------------------------------------------------------- /app/demos.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { Button } from "@/components/ui/button"; 3 | import { useFormState, useFormStatus } from "react-dom"; 4 | import { Loader2, Rocket } from "lucide-react"; 5 | import PostgresVersion from "@/rpc/postgres-version"; 6 | import Pokemon from "@/rpc/pokemon"; 7 | import { track } from "@vercel/analytics"; 8 | 9 | export function DemoButtons({ 10 | pokemonFunctionCode, 11 | }: { 12 | pokemonFunctionCode: React.ReactNode; 13 | }) { 14 | const [versionState, versionFormAction] = useFormState(PostgresVersion, null); 15 | const [pokemonState, pokemonFormAction] = useFormState(Pokemon, null); 16 | 17 | return ( 18 | <> 19 |
20 |
21 | 22 | 23 | 24 |
25 | 26 | 27 |
28 | 29 | {pokemonState ? ( 30 |
31 | {pokemonState} 32 | 33 |
34 | Images courtesy of PokeAPI – Pokemon is © 1996-2023 Nintendo, 35 | Creatures, Inc., GAME FREAK 36 |
37 | 38 |
39 | View function code 40 | {pokemonFunctionCode} 41 |
42 |
43 | ) : null} 44 | 45 | {versionState ? ( 46 |
{versionState}
47 | ) : null} 48 | 49 | ); 50 | } 51 | 52 | function PokemonDemoButton() { 53 | const { pending } = useFormStatus(); 54 | return ( 55 | 67 | ); 68 | } 69 | 70 | function PostgresVersionDemoButton() { 71 | const { pending } = useFormStatus(); 72 | return ( 73 | 84 | ); 85 | } 86 | 87 | function Pokeball({ className }: { className?: string }) { 88 | return ( 89 | 95 | 96 | 97 | 98 | 104 | 105 | 106 | ); 107 | } 108 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rauchg/react-postgres-components/0cdf49a8faf0cb8a79cdc0d2702d8d91749db27b/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | :root { 7 | --background: 0 0% 100%; 8 | --foreground: 222.2 84% 4.9%; 9 | --card: 0 0% 100%; 10 | --card-foreground: 222.2 84% 4.9%; 11 | --popover: 0 0% 100%; 12 | --popover-foreground: 222.2 84% 4.9%; 13 | --primary: 221.2 83.2% 53.3%; 14 | --primary-foreground: 210 40% 98%; 15 | --secondary: 210 40% 96.1%; 16 | --secondary-foreground: 222.2 47.4% 11.2%; 17 | --muted: 210 40% 96.1%; 18 | --muted-foreground: 215.4 16.3% 46.9%; 19 | --accent: 210 40% 96.1%; 20 | --accent-foreground: 222.2 47.4% 11.2%; 21 | --destructive: 0 84.2% 60.2%; 22 | --destructive-foreground: 210 40% 98%; 23 | --border: 214.3 31.8% 91.4%; 24 | --input: 214.3 31.8% 91.4%; 25 | --ring: 221.2 83.2% 53.3%; 26 | --radius: 0.5rem; 27 | } 28 | 29 | :root { 30 | --sh-class: #2d5e9d; 31 | --sh-identifier: #354150; 32 | --sh-sign: #8996a3; 33 | --sh-string: #00a99a; 34 | --sh-keyword: #f47067; 35 | --sh-comment: #a19595; 36 | --sh-jsxliterals: #6266d1; 37 | } 38 | 39 | .link { 40 | @apply text-primary underline; 41 | } 42 | } 43 | 44 | @layer base { 45 | * { 46 | @apply border-border; 47 | } 48 | body { 49 | @apply bg-background text-foreground; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rauchg/react-postgres-components/0cdf49a8faf0cb8a79cdc0d2702d8d91749db27b/app/icon.png -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import "./globals.css"; 4 | import { Analytics } from "@vercel/analytics/react"; 5 | import { SpeedInsights } from "@vercel/speed-insights/next"; 6 | 7 | const inter = Inter({ subsets: ["latin"] }); 8 | 9 | export const metadata: Metadata = { 10 | title: "React Postgres Components", 11 | description: "An experiment of deploying functions directly inside Postgres", 12 | metadataBase: new URL("https://react-postgres-components.vercel.app"), 13 | openGraph: { 14 | title: "React Postgres Components", 15 | url: "https://react-postgres-components.vercel.app", 16 | siteName: "An experiment of deploying functions directly inside Postgres", 17 | }, 18 | twitter: { 19 | title: "React Postgres Components", 20 | card: "summary_large_image", 21 | site: "@rauchg", 22 | creator: "@rauchg", 23 | }, 24 | }; 25 | 26 | export default function RootLayout({ 27 | children, 28 | }: { 29 | children: React.ReactNode; 30 | }) { 31 | return ( 32 | 33 | 34 | {children} 35 | 36 | 37 | 38 | 39 | ); 40 | } 41 | -------------------------------------------------------------------------------- /app/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rauchg/react-postgres-components/0cdf49a8faf0cb8a79cdc0d2702d8d91749db27b/app/opengraph-image.png -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | import { highlight } from "sugar-high"; 2 | import { DemoButtons } from "./demos"; 3 | import { Tweet } from "react-tweet"; 4 | import { Question } from "./question"; 5 | import Link from "next/link"; 6 | import { Github } from "lucide-react"; 7 | 8 | export default function Home() { 9 | return ( 10 |
11 |
12 | 13 | 19 | 23 | 24 | 25 |
26 | 27 |

28 | React Postgres Components 29 |

30 | 31 |
32 |

33 | An experiment on deploying remote functions that run inside{" "} 34 | Postgres using v8, run React SSR, and are easily defined in a{" "} 35 | rpc/ directory: 36 |

37 | 38 |
 39 |           

40 | 41 | rpc/hello-world.tsx 42 |

43 | { 47 | const [{version}] = sql\`SELECT version()\`; // no \`await\` needed! 48 | return

Hello from inside Postgres: {version}

; 49 | }`), 50 | }} 51 | /> 52 |
53 | 54 |

55 | And then using them in frontend SSR like this: 56 |

57 | 58 |
 59 |           

60 | 61 | app/page.tsx 62 |

63 | 69 | 70 | ; 71 | }`), 72 | }} 73 | /> 74 |
75 | 76 | 79 |

80 | 81 | rpc/pokemon.tsx 82 |

83 | 90 | {list.map((row: any) => { 91 | return ( 92 |
  • 93 | {row.name} 99 | \{row.name} 100 |
  • 101 | ); 102 | })} 103 | 104 | ); 105 | } 106 | `), 107 | }} 108 | /> 109 | 110 | } 111 | /> 112 | 113 |

    114 | 115 | How does it work? 116 | 117 |

    118 | 119 |

    120 | Using esbuild and{" "} 121 | 122 | PLV8 123 | {" "} 124 | (a Postgres extension that embeds{" "} 125 | 126 | V8 127 | 128 | ), the functions in the{" "} 129 | rpc/ folder are 130 | bundled and inserted into Postgres as part of the{" "} 131 | 136 | Vercel 137 | {" "} 138 | deployment process. 139 |

    140 | 141 |

    142 | While experimental, this example is a good illustration of{" "} 143 | 148 | Framework-defined Infrastructure 149 | 150 | . In local dev, the functions are executed in the Node.js runtime and 151 | exist in a unified codebase. Upon{" "} 152 | git push, 153 | specialized infrastructure (in this case PLV8 functions) is created. 154 |

    155 | 156 |

    157 | The function source is extended with a minimalist yet useful runtime: 158 |

    159 | 160 |
      161 |
    • 162 | - A{" "} 163 | sql template tag 164 | literal that wraps{" "} 165 | plv8.execute 166 |
    • 167 |
    • 168 | - A{" "} 169 | TextEncoder{" "} 170 | polyfill fittingly named{" "} 171 | 172 | 177 | fastestsmallesttextencoderdecoder 178 | 179 | 180 | , required for React 18+ SSR 181 | 186 | [1] 187 | 188 | . 189 |
    • 190 | 191 |
    • 192 | - A{" "} 193 | console polyfill 194 | that buffers logs and returns them as part of the rpc protocol so 195 | that they end up in the app logging context. 196 |
    • 197 |
    198 | 199 |

    200 | This resulting bundle is inserted into Postgres as follows: 201 |

    202 | 203 |
    204 |           
    213 |         
    214 | 215 |

    Local development

    216 | 217 |

    218 | While Node.js and PLV8 are both based in V8, a good local dev 219 | experience needed to account for important differences: 220 |

    221 | 222 |
      223 |
    • 224 | - Different runtime APIs 225 |
    • 226 | 227 |
    • 228 | - Sync vs async I/O 229 |
    • 230 |
    231 | 232 |

    233 | Both of these were solved by leveraging the{" "} 234 | 239 | isolated-vm 240 | {" "} 241 | project transparently during local dev. 242 |

    243 | 244 |

    245 | For each rpc/{" "} 246 | function, a V8 Isolate is created without access to Node.js APIs. Our 247 | runtime is loaded on top (like{" "} 248 | sql and{" "} 249 | TextEncoder). 250 |

    251 | 252 |

    253 | To preserve the synchronous{" "} 254 | plv8.execute API 255 | semantics, we use{" "} 256 | 261 | applySyncPromise 262 | {" "} 263 | which pauses the isolate until the promise that dispatches the query 264 | is resolved outside of it. 265 |

    266 | 267 |

    Production

    268 | 269 |

    270 | To invoke our functions in production,{" "} 271 | {""}{" "} 272 | is issuing a{" "} 273 | 274 | SELECT helloWorld() 275 | {" "} 276 | query to Postgres, which is then streamed to the client via 277 | React Server Components. 278 |

    279 | 280 |

    281 | This makes it such that the Postgres functions are not exposed 282 | automatically, and gives us more control and integration with the 283 | frontend server side rendering lifecycle. 284 |

    285 | 286 |

    287 | 288 | FAQ 289 | 290 |

    291 | 292 | 293 |

    294 | This is an experimental project that is not intended for production 295 | use. However, it is a good illustration of the possibilities of 296 | Framework-defined Infrastructure. 297 |

    298 |

    299 | Deploying functions to Postgres is a great way to reduce latency and 300 | improve performance by moving computation even closer to 301 | the data. This is especially true for functions that are called 302 | often and return small payloads. 303 |

    304 |

    305 | Unlike regular Serverless Functions, most Postgres providers 306 | don't offer the necessary automatic scaling and isolation 307 | guarantees that would make this technique suitable for general 308 | purpose use. 309 |

    310 |
    311 | 312 | 313 |

    314 | After{" "} 315 | 320 | Oracle announced 321 | {" "} 322 | JavaScript support in MySQL, lots of{" "} 323 | 328 | high quality 329 | {" "} 330 | 335 | memes 336 | {" "} 337 | 342 | hit 343 | {" "} 344 | the scene: 345 |

    346 | 347 |
    348 | 349 |
    350 | 351 |

    352 | Given Postgres already had a V8 extension (and prior art like{" "} 353 | 358 | plv8ify 359 | 360 | ), I wanted to see how far I could take this. Turns out: pretty far. 361 |

    362 |
    363 | 364 | 365 |

    366 | The technique is not exclusive to React. The runtime it implements 367 | on top of PLV8 is very minimal. 368 |

    369 | 370 |

    371 | When the function file extension doesn't end in{" "} 372 | .tsx or 373 | .jsx, the React 374 | runtime could be excluded from the bundle as an optimization. 375 |

    376 |
    377 | 378 | 379 |

    380 | Per the{" "} 381 | 382 | inspiration 383 | {" "} 384 | behind this being MySQL's JavaScript support, the runtime and 385 | technique should be trivially portable. 386 |

    387 |
    388 | 389 | 390 |

    391 | While not tested or audited, the security model is similar to 392 | regular Serverless Functions in that the code is executed in an 393 | isolated environment. 394 |

    395 | 396 |

    397 | These functions, however, are never exposed directly as API Routes 398 | or HTTP endpoints. Instead, in the examples above, they are 399 | themselves invoked from React Server Components like normal SQL. 400 |

    401 |
    402 | 403 |

    404 | 405 | Getting it 406 | 407 |

    408 | 409 |

    410 | The source code is available on{" "} 411 | 416 | 417 | rauchg/react-postgres-components 418 | {" "} 419 | and released under the MIT license. Elephant icon by{" "} 420 | 425 | Lima Studio 426 | 427 | . 428 |

    429 | 430 |

    431 | To deploy it, you'll need a{" "} 432 | 433 | Vercel Postgres 434 | {" "} 435 | or{" "} 436 | 437 | Neon 438 | {" "} 439 | database linked to the project. 440 |

    441 |
    442 |
    443 | ); 444 | } 445 | 446 | function SourceIcon() { 447 | return ( 448 | 455 | 460 | 461 | ); 462 | } 463 | -------------------------------------------------------------------------------- /app/question.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | import { 3 | Collapsible, 4 | CollapsibleContent, 5 | CollapsibleTrigger, 6 | } from "@/components/ui/collapsible"; 7 | import { ChevronRight } from "lucide-react"; 8 | import { useEffect, useState } from "react"; 9 | import { track } from "@vercel/analytics"; 10 | 11 | export function Question({ 12 | id, 13 | title, 14 | children, 15 | }: { 16 | id: string; 17 | title: string; 18 | children: React.ReactNode; 19 | }) { 20 | const [open, setOpen] = useState(false); 21 | 22 | function onHashChange() { 23 | if (window.location.hash === `#${id}`) { 24 | track("Question open", { id }); 25 | setOpen(true); 26 | } else { 27 | setOpen(false); 28 | } 29 | } 30 | 31 | useEffect(() => { 32 | onHashChange(); 33 | window.addEventListener("hashchange", onHashChange); 34 | return () => window.removeEventListener("hashchange", onHashChange); 35 | }); 36 | 37 | return ( 38 | setOpen(newOpen)} 41 | className="my-5" 42 | > 43 | 44 | 49 | 50 | {title} 51 | 52 | 53 | {children} 54 | 55 | ); 56 | } 57 | -------------------------------------------------------------------------------- /app/twitter-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rauchg/react-postgres-components/0cdf49a8faf0cb8a79cdc0d2702d8d91749db27b/app/twitter-image.png -------------------------------------------------------------------------------- /app/version/page.tsx: -------------------------------------------------------------------------------- 1 | import PostgresVersion from "@/rpc/postgres-version"; 2 | 3 | export const dynamic = "force-dynamic"; 4 | 5 | export default function Version() { 6 | return ; 7 | } 8 | -------------------------------------------------------------------------------- /build/constants.mjs: -------------------------------------------------------------------------------- 1 | export const RPC_EXTENSIONS_REGEX = /\.(tsx|ts|js|jsx)$/; 2 | -------------------------------------------------------------------------------- /build/lib.mjs: -------------------------------------------------------------------------------- 1 | import { build } from "esbuild"; 2 | import { join } from "node:path"; 3 | import bytes from "bytes"; 4 | 5 | /** 6 | * Bundles the function source with the RPC runtime 7 | * 8 | * @async 9 | * @exports 10 | * @function bundle 11 | * @param {Object} params - An object. 12 | * @param {string} params.functionName - A name of the function. 13 | * @param {string} params.functionsPath - A path where functions are stored. 14 | * @param {string} params.resolveDir - A directory to resolve the paths. 15 | * @returns {Promise} A promise that resolves when the build function completes. 16 | */ 17 | export async function bundle({ functionName, functionsPath, resolveDir }) { 18 | return await build({ 19 | stdin: { 20 | contents: ` 21 | _RPC_FUNCTION_NAME = "${functionName}"; 22 | import "./runtime"; 23 | import { renderToStaticMarkup } from "react-dom/server"; 24 | import fn from "${functionsPath}/${functionName}"; 25 | 26 | export default function () { 27 | const result = renderToStaticMarkup(fn()); 28 | const logs = _RPC_LOGS; 29 | _RPC_LOGS = []; 30 | return JSON.stringify({ 31 | result, 32 | logs, 33 | }); 34 | } 35 | `, 36 | resolveDir, 37 | loader: "tsx", 38 | }, 39 | bundle: true, 40 | minify: true, 41 | platform: "browser", 42 | jsx: "automatic", 43 | format: "iife", 44 | globalName: "__rpc", 45 | write: false, 46 | }); 47 | } 48 | 49 | /** 50 | * Processes the buffer logs reported by the function inside 51 | * the PLV8 runtime environment 52 | * 53 | * @param {Array.<["log"|"debug"|"info"|"warn"|"error", string]>} logs - An array of tuples, each containing a log method ("log", "debug", "info", "warn", "error") and the message to be logged. 54 | * @returns {void} 55 | */ 56 | export function log(logs) { 57 | logs.forEach(([level, str]) => { 58 | console[level](str); 59 | }); 60 | } 61 | 62 | /** 63 | * Validates the function name to be Postgres identifier 64 | * compatible when contemplating it's always prefixed by `rpc_` 65 | * 66 | * @param {string} functionName - The name of the function to validate. 67 | * @returns {boolean} 68 | */ 69 | export function validateFunctionName(functionName) { 70 | return /^[a-z0-9-_]+$/.test(functionName); 71 | } 72 | 73 | /** 74 | * Deploys the given `rpc/` function 75 | * 76 | * @async 77 | * @param {Object} options - The options for the deploy function. 78 | * @param {any} options.db - The database to be used. 79 | * @param {string} options.functionName - The name of the function to be deployed. 80 | * @param {string} options.functionsPath - The path to the functions to be deployed. 81 | * 82 | * @returns {Promise} - Indicates the function has completed. 83 | */ 84 | export async function deploy({ db, functionName, functionsPath }) { 85 | const start = Date.now(); 86 | console.log(`Building ${functionName}`); 87 | 88 | // only allow a-z, lowercase, numbers and dashes 89 | if (!validateFunctionName(functionName)) { 90 | throw new Error( 91 | `Invalid function name "${functionName}". Only a-z, lowercase, numbers, dashes or underscores are allowed.` 92 | ); 93 | } 94 | 95 | if (`rpc_${functionName}`.length > 63) { 96 | throw new Error( 97 | `Function name "${functionName}" is too long. Maximum length is 59 characters.` 98 | ); 99 | } 100 | 101 | const buildResult = await bundle({ 102 | functionName, 103 | functionsPath, 104 | // at the moment, the easiest way to get to the build directory 105 | // is assuming `build/` is relative to `rpc/`, but that would 106 | // change if this project ever gets packaged ofc 107 | resolveDir: join(functionsPath, "../build"), 108 | }); 109 | 110 | const functionCode = 111 | buildResult.outputFiles[0].text + `return __rpc.default();`; 112 | 113 | console.log( 114 | `Built ${functionName} (${bytes(Buffer.byteLength(functionCode))}) [${ 115 | Date.now() - start 116 | }ms]` 117 | ); 118 | const startDeploy = Date.now(); 119 | 120 | // this is the equivalent of a "vercel alias" 121 | await db( 122 | `CREATE OR REPLACE FUNCTION "rpc_${functionName}"() 123 | RETURNS text AS $rpc$ 124 | ${functionCode} 125 | $rpc$ LANGUAGE plv8 STRICT;` 126 | ); 127 | 128 | console.log(`Deployed ${functionName} [${Date.now() - startDeploy}ms]`); 129 | } 130 | -------------------------------------------------------------------------------- /build/loader-dev.mjs: -------------------------------------------------------------------------------- 1 | import { basename } from "path"; 2 | import { RPC_EXTENSIONS_REGEX } from "./constants.mjs"; 3 | 4 | export default function RPCLoader() { 5 | // get the basename 6 | const functionName = basename(this.resourcePath).replace( 7 | RPC_EXTENSIONS_REGEX, 8 | "" 9 | ); 10 | 11 | return `"use server"; 12 | import { run } from "@/build/run-dev"; 13 | 14 | export default async function() { 15 | const res = await run("${functionName}"); 16 | 17 | // we need something like RawHTML here 18 | // https://github.com/reactjs/rfcs/pull/129 19 | // otherwise we're creating an extra
    20 | // that the user is not defining 21 | return
    ; 22 | }`; 23 | } 24 | -------------------------------------------------------------------------------- /build/loader-prod.mjs: -------------------------------------------------------------------------------- 1 | import { dirname, basename } from "node:path"; 2 | import { deploy } from "./lib.mjs"; 3 | import { db } from "../db.mjs"; 4 | import { RPC_EXTENSIONS_REGEX } from "./constants.mjs"; 5 | 6 | const deploying = new Set(); 7 | 8 | export default async function RPCLoader() { 9 | const callback = this.async(); 10 | 11 | // get the basename 12 | const functionsPath = dirname(this.resourcePath); 13 | const functionName = basename(this.resourcePath).replace( 14 | RPC_EXTENSIONS_REGEX, 15 | "" 16 | ); 17 | 18 | if (!deploying.has(functionName)) { 19 | deploying.add(functionName); 20 | try { 21 | await deploy({ 22 | db, 23 | functionsPath, 24 | functionName, 25 | }); 26 | } catch (err) { 27 | return callback(err); 28 | } 29 | } 30 | 31 | callback( 32 | null, 33 | `"use server"; 34 | import { run } from "@/build/run-prod"; 35 | 36 | export default async function() { 37 | const res = await run("${functionName}"); 38 | 39 | // we need something like RawHTML here 40 | // https://github.com/reactjs/rfcs/pull/129 41 | // otherwise we're creating an extra
    42 | // that the user is not defining 43 | return
    ; 44 | }` 45 | ); 46 | } 47 | -------------------------------------------------------------------------------- /build/run-dev.ts: -------------------------------------------------------------------------------- 1 | import ivm from "isolated-vm"; 2 | import { db } from "../db.mjs"; 3 | import { join, dirname, normalize } from "path"; 4 | import { log, bundle } from "./lib.mjs"; 5 | 6 | export async function run(functionName: string): Promise { 7 | if ("development" !== process.env.NODE_ENV) { 8 | throw new Error("This codepath is only available in development mode"); 9 | } 10 | 11 | const sourceDir = getSourceDirectory(); 12 | 13 | if (sourceDir === null) { 14 | throw new Error( 15 | "Could not find source directory. This is unexpected and might indicate a Next.js compatibility bug." 16 | ); 17 | } 18 | 19 | const functionsPath = join(sourceDir, "rpc"); 20 | const { isolate, context } = createIsolate(); 21 | 22 | const buildResult = await bundle({ 23 | functionName, 24 | functionsPath, 25 | resolveDir: join(sourceDir, "build"), 26 | }); 27 | 28 | if (buildResult.errors.length > 0) { 29 | throw new Error(buildResult.errors.join("\n")); 30 | } 31 | 32 | if (buildResult.outputFiles.length !== 1) { 33 | throw new Error( 34 | `Expected exactly one output file, got ${buildResult.outputFiles.length}` 35 | ); 36 | } 37 | 38 | const functionBundle = buildResult.outputFiles[0].text; 39 | 40 | const res = JSON.parse( 41 | await context.eval(` 42 | ${functionBundle} 43 | __rpc.default(); 44 | `) 45 | ); 46 | 47 | isolate.dispose(); 48 | log(res.logs); 49 | return res.result; 50 | } 51 | 52 | function getSourceDirectory() { 53 | const subdir = ".next"; 54 | 55 | // normalize string to remove '//' and make it work cross-platform 56 | let cleanStr = normalize(__dirname); 57 | 58 | let index = cleanStr.indexOf(normalize(subdir)); 59 | if (index !== -1) { 60 | return dirname(cleanStr.substring(0, index + subdir.length)); 61 | } else { 62 | return null; 63 | } 64 | } 65 | 66 | function createIsolate() { 67 | const isolate = new ivm.Isolate({ memoryLimit: 128 }); 68 | const context = isolate.createContextSync(); 69 | 70 | // a template tagged literal that calls `db.execute` 71 | async function query(sql: string, args: any[]) { 72 | return JSON.stringify(await db(sql, args)); 73 | } 74 | 75 | context.evalClosureSync( 76 | ` 77 | globalThis.plv8 = { 78 | execute: function(...args) { 79 | return JSON.parse( 80 | $0.applySyncPromise(undefined, args, { arguments: { copy: true }}) 81 | ); 82 | } 83 | } 84 | `, 85 | [query], 86 | { arguments: { reference: true }, result: { copy: true } } 87 | ); 88 | 89 | return { isolate, context }; 90 | } 91 | -------------------------------------------------------------------------------- /build/run-prod.ts: -------------------------------------------------------------------------------- 1 | import { validateFunctionName, log } from "./lib.mjs"; 2 | import { db } from "@/db.mjs"; 3 | import { nanoid } from "nanoid"; 4 | 5 | export async function run(functionName: string): Promise { 6 | // this validation is duplicated at deployment time, 7 | // and our adversary is concretely the developer themselves 8 | // who puts the files in the filesystem (`rpc/`), but we validate 9 | // again for the sake of being paranoid 10 | if (!validateFunctionName(functionName)) { 11 | throw new Error("Invalid function name"); 12 | } 13 | 14 | const id = nanoid(); 15 | console.time(`rpc query ${functionName} ${id}`); 16 | const data = (await db(`SELECT "rpc_${functionName}"() as result`))[0].result; 17 | console.timeEnd(`rpc query ${functionName} ${id}`); 18 | 19 | if (data) { 20 | const res = JSON.parse(data) as { 21 | result: string; 22 | logs: ["log" | "debug" | "info" | "warn" | "error", string][]; 23 | }; 24 | log(res.logs); 25 | return res.result; 26 | } else { 27 | throw new Error("No data"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /build/runtime.tsx: -------------------------------------------------------------------------------- 1 | import TextEncoderPolyfill from "fastestsmallesttextencoderdecoder"; 2 | 3 | declare var plv8: any; 4 | declare var sql: any; 5 | declare var _RPC_LOGS: any[]; 6 | declare var TextEncoder: any; 7 | declare var console: any; 8 | 9 | if ("function" !== typeof TextEncoder) { 10 | TextEncoder = TextEncoderPolyfill.TextEncoder; 11 | } 12 | 13 | // at the moment our runtime solely consists of a plv8 wrapper 14 | if ("undefined" === typeof sql) { 15 | sql = function sql(strings: string[], ...values: any[]) { 16 | // imterleave the strings with the substitution expressions 17 | const query = strings.reduce((result, string, i) => { 18 | return result + (i > 0 ? `$${i}` : "") + string; 19 | }, ""); 20 | 21 | // pass the SQL query and the values to `plv8.execute` 22 | return plv8.execute(query, values); 23 | }; 24 | } 25 | 26 | // a logging convenience 27 | 28 | // we must be careful not to overwrite the buffer in 29 | // the case of functions calling other functions, 30 | // which will share the same global scope 31 | _RPC_LOGS = typeof _RPC_LOGS === "undefined" ? [] : _RPC_LOGS; 32 | 33 | console = { 34 | ...(console || {}), 35 | 36 | log(...args: any[]) { 37 | const text = args.join(" "); 38 | _RPC_LOGS.push(["log", text]); 39 | }, 40 | 41 | error(...args: any[]) { 42 | const text = args.join(" "); 43 | _RPC_LOGS.push(["error", text]); 44 | }, 45 | 46 | warn(...args: any[]) { 47 | const text = args.join(" "); 48 | _RPC_LOGS.push(["warn", text]); 49 | }, 50 | 51 | info(...args: any[]) { 52 | const text = args.join(" "); 53 | _RPC_LOGS.push(["info", text]); 54 | }, 55 | 56 | debug(...args: any[]) { 57 | const text = args.join(" "); 58 | _RPC_LOGS.push(["debug", text]); 59 | }, 60 | }; 61 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": true, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.js", 8 | "css": "app/globals.css", 9 | "baseColor": "stone", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/lib/utils" 16 | } 17 | } -------------------------------------------------------------------------------- /components/ui/button.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import { Slot } from "@radix-ui/react-slot" 3 | import { cva, type VariantProps } from "class-variance-authority" 4 | 5 | import { cn } from "@/lib/utils" 6 | 7 | const buttonVariants = cva( 8 | "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50", 9 | { 10 | variants: { 11 | variant: { 12 | default: 13 | "bg-primary text-primary-foreground shadow hover:bg-primary/90", 14 | destructive: 15 | "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", 16 | outline: 17 | "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", 18 | secondary: 19 | "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", 20 | ghost: "hover:bg-accent hover:text-accent-foreground", 21 | link: "text-primary underline-offset-4 hover:underline", 22 | }, 23 | size: { 24 | default: "h-9 px-4 py-2", 25 | sm: "h-8 rounded-md px-3 text-xs", 26 | lg: "h-10 rounded-md px-8", 27 | icon: "h-9 w-9", 28 | }, 29 | }, 30 | defaultVariants: { 31 | variant: "default", 32 | size: "default", 33 | }, 34 | } 35 | ) 36 | 37 | export interface ButtonProps 38 | extends React.ButtonHTMLAttributes, 39 | VariantProps { 40 | asChild?: boolean 41 | } 42 | 43 | const Button = React.forwardRef( 44 | ({ className, variant, size, asChild = false, ...props }, ref) => { 45 | const Comp = asChild ? Slot : "button" 46 | return ( 47 | 52 | ) 53 | } 54 | ) 55 | Button.displayName = "Button" 56 | 57 | export { Button, buttonVariants } 58 | -------------------------------------------------------------------------------- /components/ui/collapsible.tsx: -------------------------------------------------------------------------------- 1 | "use client" 2 | 3 | import * as CollapsiblePrimitive from "@radix-ui/react-collapsible" 4 | 5 | const Collapsible = CollapsiblePrimitive.Root 6 | 7 | const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger 8 | 9 | const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent 10 | 11 | export { Collapsible, CollapsibleTrigger, CollapsibleContent } 12 | -------------------------------------------------------------------------------- /db.mjs: -------------------------------------------------------------------------------- 1 | import { neon } from "@neondatabase/serverless"; 2 | 3 | if (!process.env.POSTGRES_URL) { 4 | throw new Error("POSTGRES_URL environment variable is not set"); 5 | } 6 | 7 | export const db = neon(process.env.POSTGRES_URL, { 8 | fetchOptions: { 9 | cache: "no-store", 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | import path from "path"; 3 | 4 | const __dirname = new URL(".", import.meta.url).pathname; 5 | 6 | const nextConfig = { 7 | experimental: { 8 | ppr: true, 9 | serverComponentsExternalPackages: ["isolated-vm", "esbuild"], 10 | }, 11 | 12 | webpack: (config, { dev }) => { 13 | const rpcLoader = { 14 | loader: dev ? "./build/loader-dev.mjs" : "./build/loader-prod.mjs", 15 | options: {}, 16 | test: /\.(js|jsx|ts|tsx)$/, 17 | include: path.resolve(__dirname, "./rpc"), 18 | }; 19 | 20 | config.module.rules.push(rpcLoader); 21 | return config; 22 | }, 23 | }; 24 | 25 | export default nextConfig; 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-postgres-components", 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 | "@neondatabase/serverless": "^0.7.2", 13 | "@radix-ui/react-collapsible": "^1.0.3", 14 | "@radix-ui/react-icons": "^1.3.0", 15 | "@radix-ui/react-slot": "^1.0.2", 16 | "@vercel/analytics": "^1.1.1", 17 | "@vercel/speed-insights": "^1.0.3", 18 | "class-variance-authority": "^0.7.0", 19 | "clsx": "^2.1.0", 20 | "lucide-react": "^0.309.0", 21 | "nanoid": "^5.0.4", 22 | "next": "14.0.5-canary.58", 23 | "react": "^18", 24 | "react-dom": "^18", 25 | "react-tweet": "^3.2.0", 26 | "sugar-high": "^0.5.6", 27 | "tailwind-merge": "^2.2.0", 28 | "tailwindcss-animate": "^1.0.7" 29 | }, 30 | "devDependencies": { 31 | "@types/bytes": "^3.1.4", 32 | "@types/fastestsmallesttextencoderdecoder": "^1.0.2", 33 | "@types/node": "^20", 34 | "@types/react": "^18", 35 | "@types/react-dom": "^18", 36 | "autoprefixer": "^10.0.1", 37 | "bytes": "^3.1.2", 38 | "dotenv": "^16.3.1", 39 | "esbuild": "^0.19.11", 40 | "eslint": "^8", 41 | "eslint-config-next": "14.0.4", 42 | "fastestsmallesttextencoderdecoder": "^1.0.22", 43 | "isolated-vm": "^4.6.0", 44 | "pg": "^8.11.3", 45 | "postcss": "^8.4.33", 46 | "tailwindcss": "^3.4.1", 47 | "typescript": "^5" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@neondatabase/serverless': 9 | specifier: ^0.7.2 10 | version: 0.7.2 11 | '@radix-ui/react-collapsible': 12 | specifier: ^1.0.3 13 | version: 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) 14 | '@radix-ui/react-icons': 15 | specifier: ^1.3.0 16 | version: 1.3.0(react@18.2.0) 17 | '@radix-ui/react-slot': 18 | specifier: ^1.0.2 19 | version: 1.0.2(@types/react@18.2.47)(react@18.2.0) 20 | '@vercel/analytics': 21 | specifier: ^1.1.1 22 | version: 1.1.1 23 | '@vercel/speed-insights': 24 | specifier: ^1.0.3 25 | version: 1.0.3 26 | class-variance-authority: 27 | specifier: ^0.7.0 28 | version: 0.7.0 29 | clsx: 30 | specifier: ^2.1.0 31 | version: 2.1.0 32 | lucide-react: 33 | specifier: ^0.309.0 34 | version: 0.309.0(react@18.2.0) 35 | nanoid: 36 | specifier: ^5.0.4 37 | version: 5.0.4 38 | next: 39 | specifier: 14.0.5-canary.58 40 | version: 14.0.5-canary.58(react-dom@18.2.0)(react@18.2.0) 41 | react: 42 | specifier: ^18 43 | version: 18.2.0 44 | react-dom: 45 | specifier: ^18 46 | version: 18.2.0(react@18.2.0) 47 | react-tweet: 48 | specifier: ^3.2.0 49 | version: 3.2.0(react-dom@18.2.0)(react@18.2.0) 50 | sugar-high: 51 | specifier: ^0.5.6 52 | version: 0.5.6 53 | tailwind-merge: 54 | specifier: ^2.2.0 55 | version: 2.2.0 56 | tailwindcss-animate: 57 | specifier: ^1.0.7 58 | version: 1.0.7(tailwindcss@3.4.1) 59 | 60 | devDependencies: 61 | '@types/bytes': 62 | specifier: ^3.1.4 63 | version: 3.1.4 64 | '@types/fastestsmallesttextencoderdecoder': 65 | specifier: ^1.0.2 66 | version: 1.0.2 67 | '@types/node': 68 | specifier: ^20 69 | version: 20.10.7 70 | '@types/react': 71 | specifier: ^18 72 | version: 18.2.47 73 | '@types/react-dom': 74 | specifier: ^18 75 | version: 18.2.18 76 | autoprefixer: 77 | specifier: ^10.0.1 78 | version: 10.4.16(postcss@8.4.33) 79 | bytes: 80 | specifier: ^3.1.2 81 | version: 3.1.2 82 | dotenv: 83 | specifier: ^16.3.1 84 | version: 16.3.1 85 | esbuild: 86 | specifier: ^0.19.11 87 | version: 0.19.11 88 | eslint: 89 | specifier: ^8 90 | version: 8.56.0 91 | eslint-config-next: 92 | specifier: 14.0.4 93 | version: 14.0.4(eslint@8.56.0)(typescript@5.3.3) 94 | fastestsmallesttextencoderdecoder: 95 | specifier: ^1.0.22 96 | version: 1.0.22 97 | isolated-vm: 98 | specifier: ^4.6.0 99 | version: 4.6.0 100 | pg: 101 | specifier: ^8.11.3 102 | version: 8.11.3 103 | postcss: 104 | specifier: ^8.4.33 105 | version: 8.4.33 106 | tailwindcss: 107 | specifier: ^3.4.1 108 | version: 3.4.1 109 | typescript: 110 | specifier: ^5 111 | version: 5.3.3 112 | 113 | packages: 114 | 115 | /@aashutoshrathi/word-wrap@1.2.6: 116 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 117 | engines: {node: '>=0.10.0'} 118 | dev: true 119 | 120 | /@alloc/quick-lru@5.2.0: 121 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 122 | engines: {node: '>=10'} 123 | 124 | /@babel/runtime@7.23.8: 125 | resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} 126 | engines: {node: '>=6.9.0'} 127 | dependencies: 128 | regenerator-runtime: 0.14.1 129 | 130 | /@esbuild/aix-ppc64@0.19.11: 131 | resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} 132 | engines: {node: '>=12'} 133 | cpu: [ppc64] 134 | os: [aix] 135 | requiresBuild: true 136 | dev: true 137 | optional: true 138 | 139 | /@esbuild/android-arm64@0.19.11: 140 | resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} 141 | engines: {node: '>=12'} 142 | cpu: [arm64] 143 | os: [android] 144 | requiresBuild: true 145 | dev: true 146 | optional: true 147 | 148 | /@esbuild/android-arm@0.19.11: 149 | resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} 150 | engines: {node: '>=12'} 151 | cpu: [arm] 152 | os: [android] 153 | requiresBuild: true 154 | dev: true 155 | optional: true 156 | 157 | /@esbuild/android-x64@0.19.11: 158 | resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} 159 | engines: {node: '>=12'} 160 | cpu: [x64] 161 | os: [android] 162 | requiresBuild: true 163 | dev: true 164 | optional: true 165 | 166 | /@esbuild/darwin-arm64@0.19.11: 167 | resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} 168 | engines: {node: '>=12'} 169 | cpu: [arm64] 170 | os: [darwin] 171 | requiresBuild: true 172 | dev: true 173 | optional: true 174 | 175 | /@esbuild/darwin-x64@0.19.11: 176 | resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} 177 | engines: {node: '>=12'} 178 | cpu: [x64] 179 | os: [darwin] 180 | requiresBuild: true 181 | dev: true 182 | optional: true 183 | 184 | /@esbuild/freebsd-arm64@0.19.11: 185 | resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} 186 | engines: {node: '>=12'} 187 | cpu: [arm64] 188 | os: [freebsd] 189 | requiresBuild: true 190 | dev: true 191 | optional: true 192 | 193 | /@esbuild/freebsd-x64@0.19.11: 194 | resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} 195 | engines: {node: '>=12'} 196 | cpu: [x64] 197 | os: [freebsd] 198 | requiresBuild: true 199 | dev: true 200 | optional: true 201 | 202 | /@esbuild/linux-arm64@0.19.11: 203 | resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} 204 | engines: {node: '>=12'} 205 | cpu: [arm64] 206 | os: [linux] 207 | requiresBuild: true 208 | dev: true 209 | optional: true 210 | 211 | /@esbuild/linux-arm@0.19.11: 212 | resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} 213 | engines: {node: '>=12'} 214 | cpu: [arm] 215 | os: [linux] 216 | requiresBuild: true 217 | dev: true 218 | optional: true 219 | 220 | /@esbuild/linux-ia32@0.19.11: 221 | resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} 222 | engines: {node: '>=12'} 223 | cpu: [ia32] 224 | os: [linux] 225 | requiresBuild: true 226 | dev: true 227 | optional: true 228 | 229 | /@esbuild/linux-loong64@0.19.11: 230 | resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} 231 | engines: {node: '>=12'} 232 | cpu: [loong64] 233 | os: [linux] 234 | requiresBuild: true 235 | dev: true 236 | optional: true 237 | 238 | /@esbuild/linux-mips64el@0.19.11: 239 | resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} 240 | engines: {node: '>=12'} 241 | cpu: [mips64el] 242 | os: [linux] 243 | requiresBuild: true 244 | dev: true 245 | optional: true 246 | 247 | /@esbuild/linux-ppc64@0.19.11: 248 | resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} 249 | engines: {node: '>=12'} 250 | cpu: [ppc64] 251 | os: [linux] 252 | requiresBuild: true 253 | dev: true 254 | optional: true 255 | 256 | /@esbuild/linux-riscv64@0.19.11: 257 | resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} 258 | engines: {node: '>=12'} 259 | cpu: [riscv64] 260 | os: [linux] 261 | requiresBuild: true 262 | dev: true 263 | optional: true 264 | 265 | /@esbuild/linux-s390x@0.19.11: 266 | resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} 267 | engines: {node: '>=12'} 268 | cpu: [s390x] 269 | os: [linux] 270 | requiresBuild: true 271 | dev: true 272 | optional: true 273 | 274 | /@esbuild/linux-x64@0.19.11: 275 | resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} 276 | engines: {node: '>=12'} 277 | cpu: [x64] 278 | os: [linux] 279 | requiresBuild: true 280 | dev: true 281 | optional: true 282 | 283 | /@esbuild/netbsd-x64@0.19.11: 284 | resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} 285 | engines: {node: '>=12'} 286 | cpu: [x64] 287 | os: [netbsd] 288 | requiresBuild: true 289 | dev: true 290 | optional: true 291 | 292 | /@esbuild/openbsd-x64@0.19.11: 293 | resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} 294 | engines: {node: '>=12'} 295 | cpu: [x64] 296 | os: [openbsd] 297 | requiresBuild: true 298 | dev: true 299 | optional: true 300 | 301 | /@esbuild/sunos-x64@0.19.11: 302 | resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} 303 | engines: {node: '>=12'} 304 | cpu: [x64] 305 | os: [sunos] 306 | requiresBuild: true 307 | dev: true 308 | optional: true 309 | 310 | /@esbuild/win32-arm64@0.19.11: 311 | resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} 312 | engines: {node: '>=12'} 313 | cpu: [arm64] 314 | os: [win32] 315 | requiresBuild: true 316 | dev: true 317 | optional: true 318 | 319 | /@esbuild/win32-ia32@0.19.11: 320 | resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} 321 | engines: {node: '>=12'} 322 | cpu: [ia32] 323 | os: [win32] 324 | requiresBuild: true 325 | dev: true 326 | optional: true 327 | 328 | /@esbuild/win32-x64@0.19.11: 329 | resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} 330 | engines: {node: '>=12'} 331 | cpu: [x64] 332 | os: [win32] 333 | requiresBuild: true 334 | dev: true 335 | optional: true 336 | 337 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 338 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 339 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 340 | peerDependencies: 341 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 342 | dependencies: 343 | eslint: 8.56.0 344 | eslint-visitor-keys: 3.4.3 345 | dev: true 346 | 347 | /@eslint-community/regexpp@4.10.0: 348 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 349 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 350 | dev: true 351 | 352 | /@eslint/eslintrc@2.1.4: 353 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 354 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 355 | dependencies: 356 | ajv: 6.12.6 357 | debug: 4.3.4 358 | espree: 9.6.1 359 | globals: 13.24.0 360 | ignore: 5.3.0 361 | import-fresh: 3.3.0 362 | js-yaml: 4.1.0 363 | minimatch: 3.1.2 364 | strip-json-comments: 3.1.1 365 | transitivePeerDependencies: 366 | - supports-color 367 | dev: true 368 | 369 | /@eslint/js@8.56.0: 370 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 371 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 372 | dev: true 373 | 374 | /@humanwhocodes/config-array@0.11.13: 375 | resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} 376 | engines: {node: '>=10.10.0'} 377 | dependencies: 378 | '@humanwhocodes/object-schema': 2.0.1 379 | debug: 4.3.4 380 | minimatch: 3.1.2 381 | transitivePeerDependencies: 382 | - supports-color 383 | dev: true 384 | 385 | /@humanwhocodes/module-importer@1.0.1: 386 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 387 | engines: {node: '>=12.22'} 388 | dev: true 389 | 390 | /@humanwhocodes/object-schema@2.0.1: 391 | resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} 392 | dev: true 393 | 394 | /@isaacs/cliui@8.0.2: 395 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 396 | engines: {node: '>=12'} 397 | dependencies: 398 | string-width: 5.1.2 399 | string-width-cjs: /string-width@4.2.3 400 | strip-ansi: 7.1.0 401 | strip-ansi-cjs: /strip-ansi@6.0.1 402 | wrap-ansi: 8.1.0 403 | wrap-ansi-cjs: /wrap-ansi@7.0.0 404 | 405 | /@jridgewell/gen-mapping@0.3.3: 406 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 407 | engines: {node: '>=6.0.0'} 408 | dependencies: 409 | '@jridgewell/set-array': 1.1.2 410 | '@jridgewell/sourcemap-codec': 1.4.15 411 | '@jridgewell/trace-mapping': 0.3.20 412 | 413 | /@jridgewell/resolve-uri@3.1.1: 414 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 415 | engines: {node: '>=6.0.0'} 416 | 417 | /@jridgewell/set-array@1.1.2: 418 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 419 | engines: {node: '>=6.0.0'} 420 | 421 | /@jridgewell/sourcemap-codec@1.4.15: 422 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 423 | 424 | /@jridgewell/trace-mapping@0.3.20: 425 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 426 | dependencies: 427 | '@jridgewell/resolve-uri': 3.1.1 428 | '@jridgewell/sourcemap-codec': 1.4.15 429 | 430 | /@neondatabase/serverless@0.7.2: 431 | resolution: {integrity: sha512-wU3WA2uTyNO7wjPs3Mg0G01jztAxUxzd9/mskMmtPwPTjf7JKWi9AW5/puOGXLxmZ9PVgRFeBVRVYq5nBPhsCg==} 432 | dependencies: 433 | '@types/pg': 8.6.6 434 | dev: false 435 | 436 | /@next/env@14.0.5-canary.58: 437 | resolution: {integrity: sha512-HivKr1b1jXNZ/NsGlRaBucZTQIkwtE52QBJZLyygsxXLMPC7ng6oOY3DkWiiLxV4T38etNKKIrKVH8DZSjdWlQ==} 438 | dev: false 439 | 440 | /@next/eslint-plugin-next@14.0.4: 441 | resolution: {integrity: sha512-U3qMNHmEZoVmHA0j/57nRfi3AscXNvkOnxDmle/69Jz/G0o/gWjXTDdlgILZdrxQ0Lw/jv2mPW8PGy0EGIHXhQ==} 442 | dependencies: 443 | glob: 7.1.7 444 | dev: true 445 | 446 | /@next/swc-darwin-arm64@14.0.5-canary.58: 447 | resolution: {integrity: sha512-FDmoxGMy1v0XREXDbdYutdn4xJ6edxOf/zg4piNbqxX3mHLfQiy4UZL1cd5wHMLZuWsOvb+DeivJhI+36oLfOQ==} 448 | engines: {node: '>= 10'} 449 | cpu: [arm64] 450 | os: [darwin] 451 | requiresBuild: true 452 | dev: false 453 | optional: true 454 | 455 | /@next/swc-darwin-x64@14.0.5-canary.58: 456 | resolution: {integrity: sha512-dLvi37j6hxt3n/3HChkwo2Hms5y6VRQpO29b2Rw/uH61LARS9jcdHPvbfGKb9Bssy/MD0UkOIxR+73V2OHldqw==} 457 | engines: {node: '>= 10'} 458 | cpu: [x64] 459 | os: [darwin] 460 | requiresBuild: true 461 | dev: false 462 | optional: true 463 | 464 | /@next/swc-linux-arm64-gnu@14.0.5-canary.58: 465 | resolution: {integrity: sha512-XDc/TGmSlu8KkVQex+z8OJqOu9J4It7+9b56bCRMHYuYaZrm0lUUTznw4DMsJExc+iwaW6XCTVeFYM4z6Ssj1w==} 466 | engines: {node: '>= 10'} 467 | cpu: [arm64] 468 | os: [linux] 469 | requiresBuild: true 470 | dev: false 471 | optional: true 472 | 473 | /@next/swc-linux-arm64-musl@14.0.5-canary.58: 474 | resolution: {integrity: sha512-zoPz3ry3mwn970CKFizLfGweimOit0YV2J3yMb43OwPgi2PHuHBaUswL6Akv1t8P1Ny5wccy1A7rkdg+ypqa1Q==} 475 | engines: {node: '>= 10'} 476 | cpu: [arm64] 477 | os: [linux] 478 | requiresBuild: true 479 | dev: false 480 | optional: true 481 | 482 | /@next/swc-linux-x64-gnu@14.0.5-canary.58: 483 | resolution: {integrity: sha512-PF+lgu05TsS8bYiok6vW07r+46XPkTvJWBC44buoOP7dzA7h8EFjav/rnxtTW0nOtiEDtx7Z6bXhte2N8kIlXw==} 484 | engines: {node: '>= 10'} 485 | cpu: [x64] 486 | os: [linux] 487 | requiresBuild: true 488 | dev: false 489 | optional: true 490 | 491 | /@next/swc-linux-x64-musl@14.0.5-canary.58: 492 | resolution: {integrity: sha512-/vwqLbJlu/SfpntfLyeCPbUV9sUeSZjFqrjrmgQUoIJ2iKDcHh3USQe40Kj5yRR3V3y2mAoTQh4gnpv+OnB8mw==} 493 | engines: {node: '>= 10'} 494 | cpu: [x64] 495 | os: [linux] 496 | requiresBuild: true 497 | dev: false 498 | optional: true 499 | 500 | /@next/swc-win32-arm64-msvc@14.0.5-canary.58: 501 | resolution: {integrity: sha512-X8ptdLqjhPObaJuOGMy5SKY8vsXgJ9MRKMYmH5eGdq2bMYy1/uuH3nSigtmayAb6cvVNeT24FsI9g0P4KMWQTA==} 502 | engines: {node: '>= 10'} 503 | cpu: [arm64] 504 | os: [win32] 505 | requiresBuild: true 506 | dev: false 507 | optional: true 508 | 509 | /@next/swc-win32-ia32-msvc@14.0.5-canary.58: 510 | resolution: {integrity: sha512-iSjSss2j574aHzKw4dO46V8yPARVVYej0P9QH46gKGdcnY97XyW4MjzxLIbhlPR4GV4qXshdB1MoejLIaI1uoA==} 511 | engines: {node: '>= 10'} 512 | cpu: [ia32] 513 | os: [win32] 514 | requiresBuild: true 515 | dev: false 516 | optional: true 517 | 518 | /@next/swc-win32-x64-msvc@14.0.5-canary.58: 519 | resolution: {integrity: sha512-AFl0lgpmLdqHkrBsc2vrZx6mE6zLvKJWonUDS17q5akYsnQ2o9tPrtzFvhU1SYtmt5XD49SbfArPBRmTseFq0A==} 520 | engines: {node: '>= 10'} 521 | cpu: [x64] 522 | os: [win32] 523 | requiresBuild: true 524 | dev: false 525 | optional: true 526 | 527 | /@nodelib/fs.scandir@2.1.5: 528 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 529 | engines: {node: '>= 8'} 530 | dependencies: 531 | '@nodelib/fs.stat': 2.0.5 532 | run-parallel: 1.2.0 533 | 534 | /@nodelib/fs.stat@2.0.5: 535 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 536 | engines: {node: '>= 8'} 537 | 538 | /@nodelib/fs.walk@1.2.8: 539 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 540 | engines: {node: '>= 8'} 541 | dependencies: 542 | '@nodelib/fs.scandir': 2.1.5 543 | fastq: 1.16.0 544 | 545 | /@pkgjs/parseargs@0.11.0: 546 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 547 | engines: {node: '>=14'} 548 | requiresBuild: true 549 | optional: true 550 | 551 | /@radix-ui/primitive@1.0.1: 552 | resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} 553 | dependencies: 554 | '@babel/runtime': 7.23.8 555 | dev: false 556 | 557 | /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): 558 | resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} 559 | peerDependencies: 560 | '@types/react': '*' 561 | '@types/react-dom': '*' 562 | react: ^16.8 || ^17.0 || ^18.0 563 | react-dom: ^16.8 || ^17.0 || ^18.0 564 | peerDependenciesMeta: 565 | '@types/react': 566 | optional: true 567 | '@types/react-dom': 568 | optional: true 569 | dependencies: 570 | '@babel/runtime': 7.23.8 571 | '@radix-ui/primitive': 1.0.1 572 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) 573 | '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) 574 | '@radix-ui/react-id': 1.0.1(@types/react@18.2.47)(react@18.2.0) 575 | '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) 576 | '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) 577 | '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0) 578 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) 579 | '@types/react': 18.2.47 580 | '@types/react-dom': 18.2.18 581 | react: 18.2.0 582 | react-dom: 18.2.0(react@18.2.0) 583 | dev: false 584 | 585 | /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.47)(react@18.2.0): 586 | resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 587 | peerDependencies: 588 | '@types/react': '*' 589 | react: ^16.8 || ^17.0 || ^18.0 590 | peerDependenciesMeta: 591 | '@types/react': 592 | optional: true 593 | dependencies: 594 | '@babel/runtime': 7.23.8 595 | '@types/react': 18.2.47 596 | react: 18.2.0 597 | dev: false 598 | 599 | /@radix-ui/react-context@1.0.1(@types/react@18.2.47)(react@18.2.0): 600 | resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} 601 | peerDependencies: 602 | '@types/react': '*' 603 | react: ^16.8 || ^17.0 || ^18.0 604 | peerDependenciesMeta: 605 | '@types/react': 606 | optional: true 607 | dependencies: 608 | '@babel/runtime': 7.23.8 609 | '@types/react': 18.2.47 610 | react: 18.2.0 611 | dev: false 612 | 613 | /@radix-ui/react-icons@1.3.0(react@18.2.0): 614 | resolution: {integrity: sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==} 615 | peerDependencies: 616 | react: ^16.x || ^17.x || ^18.x 617 | dependencies: 618 | react: 18.2.0 619 | dev: false 620 | 621 | /@radix-ui/react-id@1.0.1(@types/react@18.2.47)(react@18.2.0): 622 | resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} 623 | peerDependencies: 624 | '@types/react': '*' 625 | react: ^16.8 || ^17.0 || ^18.0 626 | peerDependenciesMeta: 627 | '@types/react': 628 | optional: true 629 | dependencies: 630 | '@babel/runtime': 7.23.8 631 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) 632 | '@types/react': 18.2.47 633 | react: 18.2.0 634 | dev: false 635 | 636 | /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): 637 | resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} 638 | peerDependencies: 639 | '@types/react': '*' 640 | '@types/react-dom': '*' 641 | react: ^16.8 || ^17.0 || ^18.0 642 | react-dom: ^16.8 || ^17.0 || ^18.0 643 | peerDependenciesMeta: 644 | '@types/react': 645 | optional: true 646 | '@types/react-dom': 647 | optional: true 648 | dependencies: 649 | '@babel/runtime': 7.23.8 650 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) 651 | '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) 652 | '@types/react': 18.2.47 653 | '@types/react-dom': 18.2.18 654 | react: 18.2.0 655 | react-dom: 18.2.0(react@18.2.0) 656 | dev: false 657 | 658 | /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): 659 | resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} 660 | peerDependencies: 661 | '@types/react': '*' 662 | '@types/react-dom': '*' 663 | react: ^16.8 || ^17.0 || ^18.0 664 | react-dom: ^16.8 || ^17.0 || ^18.0 665 | peerDependenciesMeta: 666 | '@types/react': 667 | optional: true 668 | '@types/react-dom': 669 | optional: true 670 | dependencies: 671 | '@babel/runtime': 7.23.8 672 | '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0) 673 | '@types/react': 18.2.47 674 | '@types/react-dom': 18.2.18 675 | react: 18.2.0 676 | react-dom: 18.2.0(react@18.2.0) 677 | dev: false 678 | 679 | /@radix-ui/react-slot@1.0.2(@types/react@18.2.47)(react@18.2.0): 680 | resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 681 | peerDependencies: 682 | '@types/react': '*' 683 | react: ^16.8 || ^17.0 || ^18.0 684 | peerDependenciesMeta: 685 | '@types/react': 686 | optional: true 687 | dependencies: 688 | '@babel/runtime': 7.23.8 689 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) 690 | '@types/react': 18.2.47 691 | react: 18.2.0 692 | dev: false 693 | 694 | /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.47)(react@18.2.0): 695 | resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} 696 | peerDependencies: 697 | '@types/react': '*' 698 | react: ^16.8 || ^17.0 || ^18.0 699 | peerDependenciesMeta: 700 | '@types/react': 701 | optional: true 702 | dependencies: 703 | '@babel/runtime': 7.23.8 704 | '@types/react': 18.2.47 705 | react: 18.2.0 706 | dev: false 707 | 708 | /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.47)(react@18.2.0): 709 | resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} 710 | peerDependencies: 711 | '@types/react': '*' 712 | react: ^16.8 || ^17.0 || ^18.0 713 | peerDependenciesMeta: 714 | '@types/react': 715 | optional: true 716 | dependencies: 717 | '@babel/runtime': 7.23.8 718 | '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) 719 | '@types/react': 18.2.47 720 | react: 18.2.0 721 | dev: false 722 | 723 | /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.47)(react@18.2.0): 724 | resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} 725 | peerDependencies: 726 | '@types/react': '*' 727 | react: ^16.8 || ^17.0 || ^18.0 728 | peerDependenciesMeta: 729 | '@types/react': 730 | optional: true 731 | dependencies: 732 | '@babel/runtime': 7.23.8 733 | '@types/react': 18.2.47 734 | react: 18.2.0 735 | dev: false 736 | 737 | /@rushstack/eslint-patch@1.6.1: 738 | resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} 739 | dev: true 740 | 741 | /@swc/helpers@0.5.2: 742 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 743 | dependencies: 744 | tslib: 2.6.2 745 | dev: false 746 | 747 | /@swc/helpers@0.5.3: 748 | resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} 749 | dependencies: 750 | tslib: 2.6.2 751 | dev: false 752 | 753 | /@types/bytes@3.1.4: 754 | resolution: {integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==} 755 | dev: true 756 | 757 | /@types/fastestsmallesttextencoderdecoder@1.0.2: 758 | resolution: {integrity: sha512-0Md9qUxGnQ9uJ0NjsA70Y0NHIl3NwfBO1d8CGXK0zhczRL85CXJ3M0JZsmCNQ0WcAbt08FuT4U1G1mWQqgOsUg==} 759 | dev: true 760 | 761 | /@types/json5@0.0.29: 762 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 763 | dev: true 764 | 765 | /@types/node@20.10.7: 766 | resolution: {integrity: sha512-fRbIKb8C/Y2lXxB5eVMj4IU7xpdox0Lh8bUPEdtLysaylsml1hOOx1+STloRs/B9nf7C6kPRmmg/V7aQW7usNg==} 767 | dependencies: 768 | undici-types: 5.26.5 769 | 770 | /@types/pg@8.6.6: 771 | resolution: {integrity: sha512-O2xNmXebtwVekJDD+02udOncjVcMZQuTEQEMpKJ0ZRf5E7/9JJX3izhKUcUifBkyKpljyUM6BTgy2trmviKlpw==} 772 | dependencies: 773 | '@types/node': 20.10.7 774 | pg-protocol: 1.6.0 775 | pg-types: 2.2.0 776 | dev: false 777 | 778 | /@types/prop-types@15.7.11: 779 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 780 | 781 | /@types/react-dom@18.2.18: 782 | resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} 783 | dependencies: 784 | '@types/react': 18.2.47 785 | 786 | /@types/react@18.2.47: 787 | resolution: {integrity: sha512-xquNkkOirwyCgoClNk85BjP+aqnIS+ckAJ8i37gAbDs14jfW/J23f2GItAf33oiUPQnqNMALiFeoM9Y5mbjpVQ==} 788 | dependencies: 789 | '@types/prop-types': 15.7.11 790 | '@types/scheduler': 0.16.8 791 | csstype: 3.1.3 792 | 793 | /@types/scheduler@0.16.8: 794 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 795 | 796 | /@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3): 797 | resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} 798 | engines: {node: ^16.0.0 || >=18.0.0} 799 | peerDependencies: 800 | eslint: ^7.0.0 || ^8.0.0 801 | typescript: '*' 802 | peerDependenciesMeta: 803 | typescript: 804 | optional: true 805 | dependencies: 806 | '@typescript-eslint/scope-manager': 6.18.1 807 | '@typescript-eslint/types': 6.18.1 808 | '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) 809 | '@typescript-eslint/visitor-keys': 6.18.1 810 | debug: 4.3.4 811 | eslint: 8.56.0 812 | typescript: 5.3.3 813 | transitivePeerDependencies: 814 | - supports-color 815 | dev: true 816 | 817 | /@typescript-eslint/scope-manager@6.18.1: 818 | resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} 819 | engines: {node: ^16.0.0 || >=18.0.0} 820 | dependencies: 821 | '@typescript-eslint/types': 6.18.1 822 | '@typescript-eslint/visitor-keys': 6.18.1 823 | dev: true 824 | 825 | /@typescript-eslint/types@6.18.1: 826 | resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} 827 | engines: {node: ^16.0.0 || >=18.0.0} 828 | dev: true 829 | 830 | /@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3): 831 | resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} 832 | engines: {node: ^16.0.0 || >=18.0.0} 833 | peerDependencies: 834 | typescript: '*' 835 | peerDependenciesMeta: 836 | typescript: 837 | optional: true 838 | dependencies: 839 | '@typescript-eslint/types': 6.18.1 840 | '@typescript-eslint/visitor-keys': 6.18.1 841 | debug: 4.3.4 842 | globby: 11.1.0 843 | is-glob: 4.0.3 844 | minimatch: 9.0.3 845 | semver: 7.5.4 846 | ts-api-utils: 1.0.3(typescript@5.3.3) 847 | typescript: 5.3.3 848 | transitivePeerDependencies: 849 | - supports-color 850 | dev: true 851 | 852 | /@typescript-eslint/visitor-keys@6.18.1: 853 | resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} 854 | engines: {node: ^16.0.0 || >=18.0.0} 855 | dependencies: 856 | '@typescript-eslint/types': 6.18.1 857 | eslint-visitor-keys: 3.4.3 858 | dev: true 859 | 860 | /@ungap/structured-clone@1.2.0: 861 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 862 | dev: true 863 | 864 | /@vercel/analytics@1.1.1: 865 | resolution: {integrity: sha512-+NqgNmSabg3IFfxYhrWCfB/H+RCUOCR5ExRudNG2+pcRehq628DJB5e1u1xqwpLtn4pAYii4D98w7kofORAGQA==} 866 | dependencies: 867 | server-only: 0.0.1 868 | dev: false 869 | 870 | /@vercel/speed-insights@1.0.3: 871 | resolution: {integrity: sha512-bKIt0HDdF6hP2bJZyS+za3k6sKeAXNRLSIUbwVwvyvKdsHBWS6ILBvmD1wXHZZyTqjU1TP7dTE/F6lHM6rBdKA==} 872 | requiresBuild: true 873 | dev: false 874 | 875 | /acorn-jsx@5.3.2(acorn@8.11.3): 876 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 877 | peerDependencies: 878 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 879 | dependencies: 880 | acorn: 8.11.3 881 | dev: true 882 | 883 | /acorn@8.11.3: 884 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 885 | engines: {node: '>=0.4.0'} 886 | hasBin: true 887 | dev: true 888 | 889 | /ajv@6.12.6: 890 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 891 | dependencies: 892 | fast-deep-equal: 3.1.3 893 | fast-json-stable-stringify: 2.1.0 894 | json-schema-traverse: 0.4.1 895 | uri-js: 4.4.1 896 | dev: true 897 | 898 | /ansi-regex@5.0.1: 899 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 900 | engines: {node: '>=8'} 901 | 902 | /ansi-regex@6.0.1: 903 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 904 | engines: {node: '>=12'} 905 | 906 | /ansi-styles@4.3.0: 907 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 908 | engines: {node: '>=8'} 909 | dependencies: 910 | color-convert: 2.0.1 911 | 912 | /ansi-styles@6.2.1: 913 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 914 | engines: {node: '>=12'} 915 | 916 | /any-promise@1.3.0: 917 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 918 | 919 | /anymatch@3.1.3: 920 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 921 | engines: {node: '>= 8'} 922 | dependencies: 923 | normalize-path: 3.0.0 924 | picomatch: 2.3.1 925 | 926 | /arg@5.0.2: 927 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 928 | 929 | /argparse@2.0.1: 930 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 931 | dev: true 932 | 933 | /aria-query@5.3.0: 934 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 935 | dependencies: 936 | dequal: 2.0.3 937 | dev: true 938 | 939 | /array-buffer-byte-length@1.0.0: 940 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 941 | dependencies: 942 | call-bind: 1.0.5 943 | is-array-buffer: 3.0.2 944 | dev: true 945 | 946 | /array-includes@3.1.7: 947 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 948 | engines: {node: '>= 0.4'} 949 | dependencies: 950 | call-bind: 1.0.5 951 | define-properties: 1.2.1 952 | es-abstract: 1.22.3 953 | get-intrinsic: 1.2.2 954 | is-string: 1.0.7 955 | dev: true 956 | 957 | /array-union@2.1.0: 958 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 959 | engines: {node: '>=8'} 960 | dev: true 961 | 962 | /array.prototype.findlastindex@1.2.3: 963 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} 964 | engines: {node: '>= 0.4'} 965 | dependencies: 966 | call-bind: 1.0.5 967 | define-properties: 1.2.1 968 | es-abstract: 1.22.3 969 | es-shim-unscopables: 1.0.2 970 | get-intrinsic: 1.2.2 971 | dev: true 972 | 973 | /array.prototype.flat@1.3.2: 974 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 975 | engines: {node: '>= 0.4'} 976 | dependencies: 977 | call-bind: 1.0.5 978 | define-properties: 1.2.1 979 | es-abstract: 1.22.3 980 | es-shim-unscopables: 1.0.2 981 | dev: true 982 | 983 | /array.prototype.flatmap@1.3.2: 984 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 985 | engines: {node: '>= 0.4'} 986 | dependencies: 987 | call-bind: 1.0.5 988 | define-properties: 1.2.1 989 | es-abstract: 1.22.3 990 | es-shim-unscopables: 1.0.2 991 | dev: true 992 | 993 | /array.prototype.tosorted@1.1.2: 994 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} 995 | dependencies: 996 | call-bind: 1.0.5 997 | define-properties: 1.2.1 998 | es-abstract: 1.22.3 999 | es-shim-unscopables: 1.0.2 1000 | get-intrinsic: 1.2.2 1001 | dev: true 1002 | 1003 | /arraybuffer.prototype.slice@1.0.2: 1004 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} 1005 | engines: {node: '>= 0.4'} 1006 | dependencies: 1007 | array-buffer-byte-length: 1.0.0 1008 | call-bind: 1.0.5 1009 | define-properties: 1.2.1 1010 | es-abstract: 1.22.3 1011 | get-intrinsic: 1.2.2 1012 | is-array-buffer: 3.0.2 1013 | is-shared-array-buffer: 1.0.2 1014 | dev: true 1015 | 1016 | /ast-types-flow@0.0.8: 1017 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 1018 | dev: true 1019 | 1020 | /asynciterator.prototype@1.0.0: 1021 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 1022 | dependencies: 1023 | has-symbols: 1.0.3 1024 | dev: true 1025 | 1026 | /autoprefixer@10.4.16(postcss@8.4.33): 1027 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} 1028 | engines: {node: ^10 || ^12 || >=14} 1029 | hasBin: true 1030 | peerDependencies: 1031 | postcss: ^8.1.0 1032 | dependencies: 1033 | browserslist: 4.22.2 1034 | caniuse-lite: 1.0.30001576 1035 | fraction.js: 4.3.7 1036 | normalize-range: 0.1.2 1037 | picocolors: 1.0.0 1038 | postcss: 8.4.33 1039 | postcss-value-parser: 4.2.0 1040 | dev: true 1041 | 1042 | /available-typed-arrays@1.0.5: 1043 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 1044 | engines: {node: '>= 0.4'} 1045 | dev: true 1046 | 1047 | /axe-core@4.7.0: 1048 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 1049 | engines: {node: '>=4'} 1050 | dev: true 1051 | 1052 | /axobject-query@3.2.1: 1053 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 1054 | dependencies: 1055 | dequal: 2.0.3 1056 | dev: true 1057 | 1058 | /balanced-match@1.0.2: 1059 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1060 | 1061 | /base64-js@1.5.1: 1062 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1063 | dev: true 1064 | 1065 | /binary-extensions@2.2.0: 1066 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1067 | engines: {node: '>=8'} 1068 | 1069 | /bl@4.1.0: 1070 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 1071 | dependencies: 1072 | buffer: 5.7.1 1073 | inherits: 2.0.4 1074 | readable-stream: 3.6.2 1075 | dev: true 1076 | 1077 | /brace-expansion@1.1.11: 1078 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1079 | dependencies: 1080 | balanced-match: 1.0.2 1081 | concat-map: 0.0.1 1082 | dev: true 1083 | 1084 | /brace-expansion@2.0.1: 1085 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1086 | dependencies: 1087 | balanced-match: 1.0.2 1088 | 1089 | /braces@3.0.2: 1090 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1091 | engines: {node: '>=8'} 1092 | dependencies: 1093 | fill-range: 7.0.1 1094 | 1095 | /browserslist@4.22.2: 1096 | resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} 1097 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1098 | hasBin: true 1099 | dependencies: 1100 | caniuse-lite: 1.0.30001576 1101 | electron-to-chromium: 1.4.624 1102 | node-releases: 2.0.14 1103 | update-browserslist-db: 1.0.13(browserslist@4.22.2) 1104 | dev: true 1105 | 1106 | /buffer-writer@2.0.0: 1107 | resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} 1108 | engines: {node: '>=4'} 1109 | dev: true 1110 | 1111 | /buffer@5.7.1: 1112 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 1113 | dependencies: 1114 | base64-js: 1.5.1 1115 | ieee754: 1.2.1 1116 | dev: true 1117 | 1118 | /busboy@1.6.0: 1119 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 1120 | engines: {node: '>=10.16.0'} 1121 | dependencies: 1122 | streamsearch: 1.1.0 1123 | dev: false 1124 | 1125 | /bytes@3.1.2: 1126 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 1127 | engines: {node: '>= 0.8'} 1128 | dev: true 1129 | 1130 | /call-bind@1.0.5: 1131 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} 1132 | dependencies: 1133 | function-bind: 1.1.2 1134 | get-intrinsic: 1.2.2 1135 | set-function-length: 1.1.1 1136 | dev: true 1137 | 1138 | /callsites@3.1.0: 1139 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1140 | engines: {node: '>=6'} 1141 | dev: true 1142 | 1143 | /camelcase-css@2.0.1: 1144 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1145 | engines: {node: '>= 6'} 1146 | 1147 | /caniuse-lite@1.0.30001576: 1148 | resolution: {integrity: sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==} 1149 | 1150 | /chalk@4.1.2: 1151 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1152 | engines: {node: '>=10'} 1153 | dependencies: 1154 | ansi-styles: 4.3.0 1155 | supports-color: 7.2.0 1156 | dev: true 1157 | 1158 | /chokidar@3.5.3: 1159 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1160 | engines: {node: '>= 8.10.0'} 1161 | dependencies: 1162 | anymatch: 3.1.3 1163 | braces: 3.0.2 1164 | glob-parent: 5.1.2 1165 | is-binary-path: 2.1.0 1166 | is-glob: 4.0.3 1167 | normalize-path: 3.0.0 1168 | readdirp: 3.6.0 1169 | optionalDependencies: 1170 | fsevents: 2.3.3 1171 | 1172 | /chownr@1.1.4: 1173 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 1174 | dev: true 1175 | 1176 | /class-variance-authority@0.7.0: 1177 | resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} 1178 | dependencies: 1179 | clsx: 2.0.0 1180 | dev: false 1181 | 1182 | /client-only@0.0.1: 1183 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 1184 | dev: false 1185 | 1186 | /clsx@2.0.0: 1187 | resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} 1188 | engines: {node: '>=6'} 1189 | dev: false 1190 | 1191 | /clsx@2.1.0: 1192 | resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} 1193 | engines: {node: '>=6'} 1194 | dev: false 1195 | 1196 | /color-convert@2.0.1: 1197 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1198 | engines: {node: '>=7.0.0'} 1199 | dependencies: 1200 | color-name: 1.1.4 1201 | 1202 | /color-name@1.1.4: 1203 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1204 | 1205 | /commander@4.1.1: 1206 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1207 | engines: {node: '>= 6'} 1208 | 1209 | /concat-map@0.0.1: 1210 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1211 | dev: true 1212 | 1213 | /cross-spawn@7.0.3: 1214 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1215 | engines: {node: '>= 8'} 1216 | dependencies: 1217 | path-key: 3.1.1 1218 | shebang-command: 2.0.0 1219 | which: 2.0.2 1220 | 1221 | /cssesc@3.0.0: 1222 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1223 | engines: {node: '>=4'} 1224 | hasBin: true 1225 | 1226 | /csstype@3.1.3: 1227 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1228 | 1229 | /damerau-levenshtein@1.0.8: 1230 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 1231 | dev: true 1232 | 1233 | /date-fns@2.30.0: 1234 | resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} 1235 | engines: {node: '>=0.11'} 1236 | dependencies: 1237 | '@babel/runtime': 7.23.8 1238 | dev: false 1239 | 1240 | /debug@3.2.7: 1241 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1242 | peerDependencies: 1243 | supports-color: '*' 1244 | peerDependenciesMeta: 1245 | supports-color: 1246 | optional: true 1247 | dependencies: 1248 | ms: 2.1.3 1249 | dev: true 1250 | 1251 | /debug@4.3.4: 1252 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1253 | engines: {node: '>=6.0'} 1254 | peerDependencies: 1255 | supports-color: '*' 1256 | peerDependenciesMeta: 1257 | supports-color: 1258 | optional: true 1259 | dependencies: 1260 | ms: 2.1.2 1261 | dev: true 1262 | 1263 | /decompress-response@6.0.0: 1264 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 1265 | engines: {node: '>=10'} 1266 | dependencies: 1267 | mimic-response: 3.1.0 1268 | dev: true 1269 | 1270 | /deep-extend@0.6.0: 1271 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 1272 | engines: {node: '>=4.0.0'} 1273 | dev: true 1274 | 1275 | /deep-is@0.1.4: 1276 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1277 | dev: true 1278 | 1279 | /define-data-property@1.1.1: 1280 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} 1281 | engines: {node: '>= 0.4'} 1282 | dependencies: 1283 | get-intrinsic: 1.2.2 1284 | gopd: 1.0.1 1285 | has-property-descriptors: 1.0.1 1286 | dev: true 1287 | 1288 | /define-properties@1.2.1: 1289 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1290 | engines: {node: '>= 0.4'} 1291 | dependencies: 1292 | define-data-property: 1.1.1 1293 | has-property-descriptors: 1.0.1 1294 | object-keys: 1.1.1 1295 | dev: true 1296 | 1297 | /dequal@2.0.3: 1298 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1299 | engines: {node: '>=6'} 1300 | dev: true 1301 | 1302 | /detect-libc@2.0.2: 1303 | resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 1304 | engines: {node: '>=8'} 1305 | dev: true 1306 | 1307 | /didyoumean@1.2.2: 1308 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1309 | 1310 | /dir-glob@3.0.1: 1311 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1312 | engines: {node: '>=8'} 1313 | dependencies: 1314 | path-type: 4.0.0 1315 | dev: true 1316 | 1317 | /dlv@1.1.3: 1318 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1319 | 1320 | /doctrine@2.1.0: 1321 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1322 | engines: {node: '>=0.10.0'} 1323 | dependencies: 1324 | esutils: 2.0.3 1325 | dev: true 1326 | 1327 | /doctrine@3.0.0: 1328 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1329 | engines: {node: '>=6.0.0'} 1330 | dependencies: 1331 | esutils: 2.0.3 1332 | dev: true 1333 | 1334 | /dotenv@16.3.1: 1335 | resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} 1336 | engines: {node: '>=12'} 1337 | dev: true 1338 | 1339 | /eastasianwidth@0.2.0: 1340 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1341 | 1342 | /electron-to-chromium@1.4.624: 1343 | resolution: {integrity: sha512-w9niWuheXjz23vezH3w90n9KKcHe0UkhTfJ+rXJkuGGogHyQbQ7KS1x0a8ER4LbI3ljFS/gqxKh1TidNXDMHOg==} 1344 | dev: true 1345 | 1346 | /emoji-regex@8.0.0: 1347 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1348 | 1349 | /emoji-regex@9.2.2: 1350 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1351 | 1352 | /end-of-stream@1.4.4: 1353 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 1354 | dependencies: 1355 | once: 1.4.0 1356 | dev: true 1357 | 1358 | /enhanced-resolve@5.15.0: 1359 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 1360 | engines: {node: '>=10.13.0'} 1361 | dependencies: 1362 | graceful-fs: 4.2.11 1363 | tapable: 2.2.1 1364 | dev: true 1365 | 1366 | /es-abstract@1.22.3: 1367 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} 1368 | engines: {node: '>= 0.4'} 1369 | dependencies: 1370 | array-buffer-byte-length: 1.0.0 1371 | arraybuffer.prototype.slice: 1.0.2 1372 | available-typed-arrays: 1.0.5 1373 | call-bind: 1.0.5 1374 | es-set-tostringtag: 2.0.2 1375 | es-to-primitive: 1.2.1 1376 | function.prototype.name: 1.1.6 1377 | get-intrinsic: 1.2.2 1378 | get-symbol-description: 1.0.0 1379 | globalthis: 1.0.3 1380 | gopd: 1.0.1 1381 | has-property-descriptors: 1.0.1 1382 | has-proto: 1.0.1 1383 | has-symbols: 1.0.3 1384 | hasown: 2.0.0 1385 | internal-slot: 1.0.6 1386 | is-array-buffer: 3.0.2 1387 | is-callable: 1.2.7 1388 | is-negative-zero: 2.0.2 1389 | is-regex: 1.1.4 1390 | is-shared-array-buffer: 1.0.2 1391 | is-string: 1.0.7 1392 | is-typed-array: 1.1.12 1393 | is-weakref: 1.0.2 1394 | object-inspect: 1.13.1 1395 | object-keys: 1.1.1 1396 | object.assign: 4.1.5 1397 | regexp.prototype.flags: 1.5.1 1398 | safe-array-concat: 1.0.1 1399 | safe-regex-test: 1.0.0 1400 | string.prototype.trim: 1.2.8 1401 | string.prototype.trimend: 1.0.7 1402 | string.prototype.trimstart: 1.0.7 1403 | typed-array-buffer: 1.0.0 1404 | typed-array-byte-length: 1.0.0 1405 | typed-array-byte-offset: 1.0.0 1406 | typed-array-length: 1.0.4 1407 | unbox-primitive: 1.0.2 1408 | which-typed-array: 1.1.13 1409 | dev: true 1410 | 1411 | /es-iterator-helpers@1.0.15: 1412 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} 1413 | dependencies: 1414 | asynciterator.prototype: 1.0.0 1415 | call-bind: 1.0.5 1416 | define-properties: 1.2.1 1417 | es-abstract: 1.22.3 1418 | es-set-tostringtag: 2.0.2 1419 | function-bind: 1.1.2 1420 | get-intrinsic: 1.2.2 1421 | globalthis: 1.0.3 1422 | has-property-descriptors: 1.0.1 1423 | has-proto: 1.0.1 1424 | has-symbols: 1.0.3 1425 | internal-slot: 1.0.6 1426 | iterator.prototype: 1.1.2 1427 | safe-array-concat: 1.0.1 1428 | dev: true 1429 | 1430 | /es-set-tostringtag@2.0.2: 1431 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 1432 | engines: {node: '>= 0.4'} 1433 | dependencies: 1434 | get-intrinsic: 1.2.2 1435 | has-tostringtag: 1.0.0 1436 | hasown: 2.0.0 1437 | dev: true 1438 | 1439 | /es-shim-unscopables@1.0.2: 1440 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1441 | dependencies: 1442 | hasown: 2.0.0 1443 | dev: true 1444 | 1445 | /es-to-primitive@1.2.1: 1446 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1447 | engines: {node: '>= 0.4'} 1448 | dependencies: 1449 | is-callable: 1.2.7 1450 | is-date-object: 1.0.5 1451 | is-symbol: 1.0.4 1452 | dev: true 1453 | 1454 | /esbuild@0.19.11: 1455 | resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} 1456 | engines: {node: '>=12'} 1457 | hasBin: true 1458 | requiresBuild: true 1459 | optionalDependencies: 1460 | '@esbuild/aix-ppc64': 0.19.11 1461 | '@esbuild/android-arm': 0.19.11 1462 | '@esbuild/android-arm64': 0.19.11 1463 | '@esbuild/android-x64': 0.19.11 1464 | '@esbuild/darwin-arm64': 0.19.11 1465 | '@esbuild/darwin-x64': 0.19.11 1466 | '@esbuild/freebsd-arm64': 0.19.11 1467 | '@esbuild/freebsd-x64': 0.19.11 1468 | '@esbuild/linux-arm': 0.19.11 1469 | '@esbuild/linux-arm64': 0.19.11 1470 | '@esbuild/linux-ia32': 0.19.11 1471 | '@esbuild/linux-loong64': 0.19.11 1472 | '@esbuild/linux-mips64el': 0.19.11 1473 | '@esbuild/linux-ppc64': 0.19.11 1474 | '@esbuild/linux-riscv64': 0.19.11 1475 | '@esbuild/linux-s390x': 0.19.11 1476 | '@esbuild/linux-x64': 0.19.11 1477 | '@esbuild/netbsd-x64': 0.19.11 1478 | '@esbuild/openbsd-x64': 0.19.11 1479 | '@esbuild/sunos-x64': 0.19.11 1480 | '@esbuild/win32-arm64': 0.19.11 1481 | '@esbuild/win32-ia32': 0.19.11 1482 | '@esbuild/win32-x64': 0.19.11 1483 | dev: true 1484 | 1485 | /escalade@3.1.1: 1486 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1487 | engines: {node: '>=6'} 1488 | dev: true 1489 | 1490 | /escape-string-regexp@4.0.0: 1491 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1492 | engines: {node: '>=10'} 1493 | dev: true 1494 | 1495 | /eslint-config-next@14.0.4(eslint@8.56.0)(typescript@5.3.3): 1496 | resolution: {integrity: sha512-9/xbOHEQOmQtqvQ1UsTQZpnA7SlDMBtuKJ//S4JnoyK3oGLhILKXdBgu/UO7lQo/2xOykQULS1qQ6p2+EpHgAQ==} 1497 | peerDependencies: 1498 | eslint: ^7.23.0 || ^8.0.0 1499 | typescript: '>=3.3.1' 1500 | peerDependenciesMeta: 1501 | typescript: 1502 | optional: true 1503 | dependencies: 1504 | '@next/eslint-plugin-next': 14.0.4 1505 | '@rushstack/eslint-patch': 1.6.1 1506 | '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) 1507 | eslint: 8.56.0 1508 | eslint-import-resolver-node: 0.3.9 1509 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1510 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1511 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) 1512 | eslint-plugin-react: 7.33.2(eslint@8.56.0) 1513 | eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) 1514 | typescript: 5.3.3 1515 | transitivePeerDependencies: 1516 | - eslint-import-resolver-webpack 1517 | - supports-color 1518 | dev: true 1519 | 1520 | /eslint-import-resolver-node@0.3.9: 1521 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1522 | dependencies: 1523 | debug: 3.2.7 1524 | is-core-module: 2.13.1 1525 | resolve: 1.22.8 1526 | transitivePeerDependencies: 1527 | - supports-color 1528 | dev: true 1529 | 1530 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): 1531 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 1532 | engines: {node: ^14.18.0 || >=16.0.0} 1533 | peerDependencies: 1534 | eslint: '*' 1535 | eslint-plugin-import: '*' 1536 | dependencies: 1537 | debug: 4.3.4 1538 | enhanced-resolve: 5.15.0 1539 | eslint: 8.56.0 1540 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1541 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1542 | fast-glob: 3.3.2 1543 | get-tsconfig: 4.7.2 1544 | is-core-module: 2.13.1 1545 | is-glob: 4.0.3 1546 | transitivePeerDependencies: 1547 | - '@typescript-eslint/parser' 1548 | - eslint-import-resolver-node 1549 | - eslint-import-resolver-webpack 1550 | - supports-color 1551 | dev: true 1552 | 1553 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1554 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1555 | engines: {node: '>=4'} 1556 | peerDependencies: 1557 | '@typescript-eslint/parser': '*' 1558 | eslint: '*' 1559 | eslint-import-resolver-node: '*' 1560 | eslint-import-resolver-typescript: '*' 1561 | eslint-import-resolver-webpack: '*' 1562 | peerDependenciesMeta: 1563 | '@typescript-eslint/parser': 1564 | optional: true 1565 | eslint: 1566 | optional: true 1567 | eslint-import-resolver-node: 1568 | optional: true 1569 | eslint-import-resolver-typescript: 1570 | optional: true 1571 | eslint-import-resolver-webpack: 1572 | optional: true 1573 | dependencies: 1574 | '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) 1575 | debug: 3.2.7 1576 | eslint: 8.56.0 1577 | eslint-import-resolver-node: 0.3.9 1578 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1579 | transitivePeerDependencies: 1580 | - supports-color 1581 | dev: true 1582 | 1583 | /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1584 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 1585 | engines: {node: '>=4'} 1586 | peerDependencies: 1587 | '@typescript-eslint/parser': '*' 1588 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1589 | peerDependenciesMeta: 1590 | '@typescript-eslint/parser': 1591 | optional: true 1592 | dependencies: 1593 | '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) 1594 | array-includes: 3.1.7 1595 | array.prototype.findlastindex: 1.2.3 1596 | array.prototype.flat: 1.3.2 1597 | array.prototype.flatmap: 1.3.2 1598 | debug: 3.2.7 1599 | doctrine: 2.1.0 1600 | eslint: 8.56.0 1601 | eslint-import-resolver-node: 0.3.9 1602 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1603 | hasown: 2.0.0 1604 | is-core-module: 2.13.1 1605 | is-glob: 4.0.3 1606 | minimatch: 3.1.2 1607 | object.fromentries: 2.0.7 1608 | object.groupby: 1.0.1 1609 | object.values: 1.1.7 1610 | semver: 6.3.1 1611 | tsconfig-paths: 3.15.0 1612 | transitivePeerDependencies: 1613 | - eslint-import-resolver-typescript 1614 | - eslint-import-resolver-webpack 1615 | - supports-color 1616 | dev: true 1617 | 1618 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): 1619 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1620 | engines: {node: '>=4.0'} 1621 | peerDependencies: 1622 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1623 | dependencies: 1624 | '@babel/runtime': 7.23.8 1625 | aria-query: 5.3.0 1626 | array-includes: 3.1.7 1627 | array.prototype.flatmap: 1.3.2 1628 | ast-types-flow: 0.0.8 1629 | axe-core: 4.7.0 1630 | axobject-query: 3.2.1 1631 | damerau-levenshtein: 1.0.8 1632 | emoji-regex: 9.2.2 1633 | es-iterator-helpers: 1.0.15 1634 | eslint: 8.56.0 1635 | hasown: 2.0.0 1636 | jsx-ast-utils: 3.3.5 1637 | language-tags: 1.0.9 1638 | minimatch: 3.1.2 1639 | object.entries: 1.1.7 1640 | object.fromentries: 2.0.7 1641 | dev: true 1642 | 1643 | /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): 1644 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1645 | engines: {node: '>=10'} 1646 | peerDependencies: 1647 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1648 | dependencies: 1649 | eslint: 8.56.0 1650 | dev: true 1651 | 1652 | /eslint-plugin-react@7.33.2(eslint@8.56.0): 1653 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 1654 | engines: {node: '>=4'} 1655 | peerDependencies: 1656 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1657 | dependencies: 1658 | array-includes: 3.1.7 1659 | array.prototype.flatmap: 1.3.2 1660 | array.prototype.tosorted: 1.1.2 1661 | doctrine: 2.1.0 1662 | es-iterator-helpers: 1.0.15 1663 | eslint: 8.56.0 1664 | estraverse: 5.3.0 1665 | jsx-ast-utils: 3.3.5 1666 | minimatch: 3.1.2 1667 | object.entries: 1.1.7 1668 | object.fromentries: 2.0.7 1669 | object.hasown: 1.1.3 1670 | object.values: 1.1.7 1671 | prop-types: 15.8.1 1672 | resolve: 2.0.0-next.5 1673 | semver: 6.3.1 1674 | string.prototype.matchall: 4.0.10 1675 | dev: true 1676 | 1677 | /eslint-scope@7.2.2: 1678 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1679 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1680 | dependencies: 1681 | esrecurse: 4.3.0 1682 | estraverse: 5.3.0 1683 | dev: true 1684 | 1685 | /eslint-visitor-keys@3.4.3: 1686 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1687 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1688 | dev: true 1689 | 1690 | /eslint@8.56.0: 1691 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 1692 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1693 | hasBin: true 1694 | dependencies: 1695 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1696 | '@eslint-community/regexpp': 4.10.0 1697 | '@eslint/eslintrc': 2.1.4 1698 | '@eslint/js': 8.56.0 1699 | '@humanwhocodes/config-array': 0.11.13 1700 | '@humanwhocodes/module-importer': 1.0.1 1701 | '@nodelib/fs.walk': 1.2.8 1702 | '@ungap/structured-clone': 1.2.0 1703 | ajv: 6.12.6 1704 | chalk: 4.1.2 1705 | cross-spawn: 7.0.3 1706 | debug: 4.3.4 1707 | doctrine: 3.0.0 1708 | escape-string-regexp: 4.0.0 1709 | eslint-scope: 7.2.2 1710 | eslint-visitor-keys: 3.4.3 1711 | espree: 9.6.1 1712 | esquery: 1.5.0 1713 | esutils: 2.0.3 1714 | fast-deep-equal: 3.1.3 1715 | file-entry-cache: 6.0.1 1716 | find-up: 5.0.0 1717 | glob-parent: 6.0.2 1718 | globals: 13.24.0 1719 | graphemer: 1.4.0 1720 | ignore: 5.3.0 1721 | imurmurhash: 0.1.4 1722 | is-glob: 4.0.3 1723 | is-path-inside: 3.0.3 1724 | js-yaml: 4.1.0 1725 | json-stable-stringify-without-jsonify: 1.0.1 1726 | levn: 0.4.1 1727 | lodash.merge: 4.6.2 1728 | minimatch: 3.1.2 1729 | natural-compare: 1.4.0 1730 | optionator: 0.9.3 1731 | strip-ansi: 6.0.1 1732 | text-table: 0.2.0 1733 | transitivePeerDependencies: 1734 | - supports-color 1735 | dev: true 1736 | 1737 | /espree@9.6.1: 1738 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1739 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1740 | dependencies: 1741 | acorn: 8.11.3 1742 | acorn-jsx: 5.3.2(acorn@8.11.3) 1743 | eslint-visitor-keys: 3.4.3 1744 | dev: true 1745 | 1746 | /esquery@1.5.0: 1747 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1748 | engines: {node: '>=0.10'} 1749 | dependencies: 1750 | estraverse: 5.3.0 1751 | dev: true 1752 | 1753 | /esrecurse@4.3.0: 1754 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1755 | engines: {node: '>=4.0'} 1756 | dependencies: 1757 | estraverse: 5.3.0 1758 | dev: true 1759 | 1760 | /estraverse@5.3.0: 1761 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1762 | engines: {node: '>=4.0'} 1763 | dev: true 1764 | 1765 | /esutils@2.0.3: 1766 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1767 | engines: {node: '>=0.10.0'} 1768 | dev: true 1769 | 1770 | /expand-template@2.0.3: 1771 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 1772 | engines: {node: '>=6'} 1773 | dev: true 1774 | 1775 | /fast-deep-equal@3.1.3: 1776 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1777 | dev: true 1778 | 1779 | /fast-glob@3.3.2: 1780 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1781 | engines: {node: '>=8.6.0'} 1782 | dependencies: 1783 | '@nodelib/fs.stat': 2.0.5 1784 | '@nodelib/fs.walk': 1.2.8 1785 | glob-parent: 5.1.2 1786 | merge2: 1.4.1 1787 | micromatch: 4.0.5 1788 | 1789 | /fast-json-stable-stringify@2.1.0: 1790 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1791 | dev: true 1792 | 1793 | /fast-levenshtein@2.0.6: 1794 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1795 | dev: true 1796 | 1797 | /fastestsmallesttextencoderdecoder@1.0.22: 1798 | resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} 1799 | dev: true 1800 | 1801 | /fastq@1.16.0: 1802 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} 1803 | dependencies: 1804 | reusify: 1.0.4 1805 | 1806 | /file-entry-cache@6.0.1: 1807 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1808 | engines: {node: ^10.12.0 || >=12.0.0} 1809 | dependencies: 1810 | flat-cache: 3.2.0 1811 | dev: true 1812 | 1813 | /fill-range@7.0.1: 1814 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1815 | engines: {node: '>=8'} 1816 | dependencies: 1817 | to-regex-range: 5.0.1 1818 | 1819 | /find-up@5.0.0: 1820 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1821 | engines: {node: '>=10'} 1822 | dependencies: 1823 | locate-path: 6.0.0 1824 | path-exists: 4.0.0 1825 | dev: true 1826 | 1827 | /flat-cache@3.2.0: 1828 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1829 | engines: {node: ^10.12.0 || >=12.0.0} 1830 | dependencies: 1831 | flatted: 3.2.9 1832 | keyv: 4.5.4 1833 | rimraf: 3.0.2 1834 | dev: true 1835 | 1836 | /flatted@3.2.9: 1837 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1838 | dev: true 1839 | 1840 | /for-each@0.3.3: 1841 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1842 | dependencies: 1843 | is-callable: 1.2.7 1844 | dev: true 1845 | 1846 | /foreground-child@3.1.1: 1847 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1848 | engines: {node: '>=14'} 1849 | dependencies: 1850 | cross-spawn: 7.0.3 1851 | signal-exit: 4.1.0 1852 | 1853 | /fraction.js@4.3.7: 1854 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1855 | dev: true 1856 | 1857 | /fs-constants@1.0.0: 1858 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 1859 | dev: true 1860 | 1861 | /fs.realpath@1.0.0: 1862 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1863 | dev: true 1864 | 1865 | /fsevents@2.3.3: 1866 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1867 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1868 | os: [darwin] 1869 | requiresBuild: true 1870 | optional: true 1871 | 1872 | /function-bind@1.1.2: 1873 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1874 | 1875 | /function.prototype.name@1.1.6: 1876 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1877 | engines: {node: '>= 0.4'} 1878 | dependencies: 1879 | call-bind: 1.0.5 1880 | define-properties: 1.2.1 1881 | es-abstract: 1.22.3 1882 | functions-have-names: 1.2.3 1883 | dev: true 1884 | 1885 | /functions-have-names@1.2.3: 1886 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1887 | dev: true 1888 | 1889 | /get-intrinsic@1.2.2: 1890 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} 1891 | dependencies: 1892 | function-bind: 1.1.2 1893 | has-proto: 1.0.1 1894 | has-symbols: 1.0.3 1895 | hasown: 2.0.0 1896 | dev: true 1897 | 1898 | /get-symbol-description@1.0.0: 1899 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1900 | engines: {node: '>= 0.4'} 1901 | dependencies: 1902 | call-bind: 1.0.5 1903 | get-intrinsic: 1.2.2 1904 | dev: true 1905 | 1906 | /get-tsconfig@4.7.2: 1907 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1908 | dependencies: 1909 | resolve-pkg-maps: 1.0.0 1910 | dev: true 1911 | 1912 | /github-from-package@0.0.0: 1913 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 1914 | dev: true 1915 | 1916 | /glob-parent@5.1.2: 1917 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1918 | engines: {node: '>= 6'} 1919 | dependencies: 1920 | is-glob: 4.0.3 1921 | 1922 | /glob-parent@6.0.2: 1923 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1924 | engines: {node: '>=10.13.0'} 1925 | dependencies: 1926 | is-glob: 4.0.3 1927 | 1928 | /glob@10.3.10: 1929 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1930 | engines: {node: '>=16 || 14 >=14.17'} 1931 | hasBin: true 1932 | dependencies: 1933 | foreground-child: 3.1.1 1934 | jackspeak: 2.3.6 1935 | minimatch: 9.0.3 1936 | minipass: 7.0.4 1937 | path-scurry: 1.10.1 1938 | 1939 | /glob@7.1.7: 1940 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1941 | dependencies: 1942 | fs.realpath: 1.0.0 1943 | inflight: 1.0.6 1944 | inherits: 2.0.4 1945 | minimatch: 3.1.2 1946 | once: 1.4.0 1947 | path-is-absolute: 1.0.1 1948 | dev: true 1949 | 1950 | /glob@7.2.3: 1951 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1952 | dependencies: 1953 | fs.realpath: 1.0.0 1954 | inflight: 1.0.6 1955 | inherits: 2.0.4 1956 | minimatch: 3.1.2 1957 | once: 1.4.0 1958 | path-is-absolute: 1.0.1 1959 | dev: true 1960 | 1961 | /globals@13.24.0: 1962 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1963 | engines: {node: '>=8'} 1964 | dependencies: 1965 | type-fest: 0.20.2 1966 | dev: true 1967 | 1968 | /globalthis@1.0.3: 1969 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1970 | engines: {node: '>= 0.4'} 1971 | dependencies: 1972 | define-properties: 1.2.1 1973 | dev: true 1974 | 1975 | /globby@11.1.0: 1976 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1977 | engines: {node: '>=10'} 1978 | dependencies: 1979 | array-union: 2.1.0 1980 | dir-glob: 3.0.1 1981 | fast-glob: 3.3.2 1982 | ignore: 5.3.0 1983 | merge2: 1.4.1 1984 | slash: 3.0.0 1985 | dev: true 1986 | 1987 | /gopd@1.0.1: 1988 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1989 | dependencies: 1990 | get-intrinsic: 1.2.2 1991 | dev: true 1992 | 1993 | /graceful-fs@4.2.11: 1994 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1995 | 1996 | /graphemer@1.4.0: 1997 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1998 | dev: true 1999 | 2000 | /has-bigints@1.0.2: 2001 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 2002 | dev: true 2003 | 2004 | /has-flag@4.0.0: 2005 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2006 | engines: {node: '>=8'} 2007 | dev: true 2008 | 2009 | /has-property-descriptors@1.0.1: 2010 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 2011 | dependencies: 2012 | get-intrinsic: 1.2.2 2013 | dev: true 2014 | 2015 | /has-proto@1.0.1: 2016 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 2017 | engines: {node: '>= 0.4'} 2018 | dev: true 2019 | 2020 | /has-symbols@1.0.3: 2021 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 2022 | engines: {node: '>= 0.4'} 2023 | dev: true 2024 | 2025 | /has-tostringtag@1.0.0: 2026 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 2027 | engines: {node: '>= 0.4'} 2028 | dependencies: 2029 | has-symbols: 1.0.3 2030 | dev: true 2031 | 2032 | /hasown@2.0.0: 2033 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 2034 | engines: {node: '>= 0.4'} 2035 | dependencies: 2036 | function-bind: 1.1.2 2037 | 2038 | /ieee754@1.2.1: 2039 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2040 | dev: true 2041 | 2042 | /ignore@5.3.0: 2043 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 2044 | engines: {node: '>= 4'} 2045 | dev: true 2046 | 2047 | /import-fresh@3.3.0: 2048 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 2049 | engines: {node: '>=6'} 2050 | dependencies: 2051 | parent-module: 1.0.1 2052 | resolve-from: 4.0.0 2053 | dev: true 2054 | 2055 | /imurmurhash@0.1.4: 2056 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2057 | engines: {node: '>=0.8.19'} 2058 | dev: true 2059 | 2060 | /inflight@1.0.6: 2061 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 2062 | dependencies: 2063 | once: 1.4.0 2064 | wrappy: 1.0.2 2065 | dev: true 2066 | 2067 | /inherits@2.0.4: 2068 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 2069 | dev: true 2070 | 2071 | /ini@1.3.8: 2072 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 2073 | dev: true 2074 | 2075 | /internal-slot@1.0.6: 2076 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} 2077 | engines: {node: '>= 0.4'} 2078 | dependencies: 2079 | get-intrinsic: 1.2.2 2080 | hasown: 2.0.0 2081 | side-channel: 1.0.4 2082 | dev: true 2083 | 2084 | /is-array-buffer@3.0.2: 2085 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 2086 | dependencies: 2087 | call-bind: 1.0.5 2088 | get-intrinsic: 1.2.2 2089 | is-typed-array: 1.1.12 2090 | dev: true 2091 | 2092 | /is-async-function@2.0.0: 2093 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 2094 | engines: {node: '>= 0.4'} 2095 | dependencies: 2096 | has-tostringtag: 1.0.0 2097 | dev: true 2098 | 2099 | /is-bigint@1.0.4: 2100 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 2101 | dependencies: 2102 | has-bigints: 1.0.2 2103 | dev: true 2104 | 2105 | /is-binary-path@2.1.0: 2106 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2107 | engines: {node: '>=8'} 2108 | dependencies: 2109 | binary-extensions: 2.2.0 2110 | 2111 | /is-boolean-object@1.1.2: 2112 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 2113 | engines: {node: '>= 0.4'} 2114 | dependencies: 2115 | call-bind: 1.0.5 2116 | has-tostringtag: 1.0.0 2117 | dev: true 2118 | 2119 | /is-callable@1.2.7: 2120 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2121 | engines: {node: '>= 0.4'} 2122 | dev: true 2123 | 2124 | /is-core-module@2.13.1: 2125 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 2126 | dependencies: 2127 | hasown: 2.0.0 2128 | 2129 | /is-date-object@1.0.5: 2130 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2131 | engines: {node: '>= 0.4'} 2132 | dependencies: 2133 | has-tostringtag: 1.0.0 2134 | dev: true 2135 | 2136 | /is-extglob@2.1.1: 2137 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2138 | engines: {node: '>=0.10.0'} 2139 | 2140 | /is-finalizationregistry@1.0.2: 2141 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 2142 | dependencies: 2143 | call-bind: 1.0.5 2144 | dev: true 2145 | 2146 | /is-fullwidth-code-point@3.0.0: 2147 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 2148 | engines: {node: '>=8'} 2149 | 2150 | /is-generator-function@1.0.10: 2151 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 2152 | engines: {node: '>= 0.4'} 2153 | dependencies: 2154 | has-tostringtag: 1.0.0 2155 | dev: true 2156 | 2157 | /is-glob@4.0.3: 2158 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2159 | engines: {node: '>=0.10.0'} 2160 | dependencies: 2161 | is-extglob: 2.1.1 2162 | 2163 | /is-map@2.0.2: 2164 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 2165 | dev: true 2166 | 2167 | /is-negative-zero@2.0.2: 2168 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2169 | engines: {node: '>= 0.4'} 2170 | dev: true 2171 | 2172 | /is-number-object@1.0.7: 2173 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2174 | engines: {node: '>= 0.4'} 2175 | dependencies: 2176 | has-tostringtag: 1.0.0 2177 | dev: true 2178 | 2179 | /is-number@7.0.0: 2180 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2181 | engines: {node: '>=0.12.0'} 2182 | 2183 | /is-path-inside@3.0.3: 2184 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2185 | engines: {node: '>=8'} 2186 | dev: true 2187 | 2188 | /is-regex@1.1.4: 2189 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2190 | engines: {node: '>= 0.4'} 2191 | dependencies: 2192 | call-bind: 1.0.5 2193 | has-tostringtag: 1.0.0 2194 | dev: true 2195 | 2196 | /is-set@2.0.2: 2197 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 2198 | dev: true 2199 | 2200 | /is-shared-array-buffer@1.0.2: 2201 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2202 | dependencies: 2203 | call-bind: 1.0.5 2204 | dev: true 2205 | 2206 | /is-string@1.0.7: 2207 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2208 | engines: {node: '>= 0.4'} 2209 | dependencies: 2210 | has-tostringtag: 1.0.0 2211 | dev: true 2212 | 2213 | /is-symbol@1.0.4: 2214 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2215 | engines: {node: '>= 0.4'} 2216 | dependencies: 2217 | has-symbols: 1.0.3 2218 | dev: true 2219 | 2220 | /is-typed-array@1.1.12: 2221 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 2222 | engines: {node: '>= 0.4'} 2223 | dependencies: 2224 | which-typed-array: 1.1.13 2225 | dev: true 2226 | 2227 | /is-weakmap@2.0.1: 2228 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 2229 | dev: true 2230 | 2231 | /is-weakref@1.0.2: 2232 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2233 | dependencies: 2234 | call-bind: 1.0.5 2235 | dev: true 2236 | 2237 | /is-weakset@2.0.2: 2238 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 2239 | dependencies: 2240 | call-bind: 1.0.5 2241 | get-intrinsic: 1.2.2 2242 | dev: true 2243 | 2244 | /isarray@2.0.5: 2245 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2246 | dev: true 2247 | 2248 | /isexe@2.0.0: 2249 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2250 | 2251 | /isolated-vm@4.6.0: 2252 | resolution: {integrity: sha512-MEnfC/54q5PED3VJ9UJYJPOlU6mYFHS3ivR9E8yeNNBEFRFUNBnY0xO4Rj3D/SOtFKPNmsQp9NWUYSKZqAoZiA==} 2253 | engines: {node: '>=16.0.0'} 2254 | requiresBuild: true 2255 | dependencies: 2256 | prebuild-install: 7.1.1 2257 | dev: true 2258 | 2259 | /iterator.prototype@1.1.2: 2260 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 2261 | dependencies: 2262 | define-properties: 1.2.1 2263 | get-intrinsic: 1.2.2 2264 | has-symbols: 1.0.3 2265 | reflect.getprototypeof: 1.0.4 2266 | set-function-name: 2.0.1 2267 | dev: true 2268 | 2269 | /jackspeak@2.3.6: 2270 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 2271 | engines: {node: '>=14'} 2272 | dependencies: 2273 | '@isaacs/cliui': 8.0.2 2274 | optionalDependencies: 2275 | '@pkgjs/parseargs': 0.11.0 2276 | 2277 | /jiti@1.21.0: 2278 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 2279 | hasBin: true 2280 | 2281 | /js-tokens@4.0.0: 2282 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2283 | 2284 | /js-yaml@4.1.0: 2285 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2286 | hasBin: true 2287 | dependencies: 2288 | argparse: 2.0.1 2289 | dev: true 2290 | 2291 | /json-buffer@3.0.1: 2292 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2293 | dev: true 2294 | 2295 | /json-schema-traverse@0.4.1: 2296 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2297 | dev: true 2298 | 2299 | /json-stable-stringify-without-jsonify@1.0.1: 2300 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2301 | dev: true 2302 | 2303 | /json5@1.0.2: 2304 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2305 | hasBin: true 2306 | dependencies: 2307 | minimist: 1.2.8 2308 | dev: true 2309 | 2310 | /jsx-ast-utils@3.3.5: 2311 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 2312 | engines: {node: '>=4.0'} 2313 | dependencies: 2314 | array-includes: 3.1.7 2315 | array.prototype.flat: 1.3.2 2316 | object.assign: 4.1.5 2317 | object.values: 1.1.7 2318 | dev: true 2319 | 2320 | /keyv@4.5.4: 2321 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2322 | dependencies: 2323 | json-buffer: 3.0.1 2324 | dev: true 2325 | 2326 | /language-subtag-registry@0.3.22: 2327 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 2328 | dev: true 2329 | 2330 | /language-tags@1.0.9: 2331 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 2332 | engines: {node: '>=0.10'} 2333 | dependencies: 2334 | language-subtag-registry: 0.3.22 2335 | dev: true 2336 | 2337 | /levn@0.4.1: 2338 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2339 | engines: {node: '>= 0.8.0'} 2340 | dependencies: 2341 | prelude-ls: 1.2.1 2342 | type-check: 0.4.0 2343 | dev: true 2344 | 2345 | /lilconfig@2.1.0: 2346 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2347 | engines: {node: '>=10'} 2348 | 2349 | /lilconfig@3.0.0: 2350 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 2351 | engines: {node: '>=14'} 2352 | 2353 | /lines-and-columns@1.2.4: 2354 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2355 | 2356 | /locate-path@6.0.0: 2357 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2358 | engines: {node: '>=10'} 2359 | dependencies: 2360 | p-locate: 5.0.0 2361 | dev: true 2362 | 2363 | /lodash.merge@4.6.2: 2364 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2365 | dev: true 2366 | 2367 | /loose-envify@1.4.0: 2368 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2369 | hasBin: true 2370 | dependencies: 2371 | js-tokens: 4.0.0 2372 | 2373 | /lru-cache@10.1.0: 2374 | resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} 2375 | engines: {node: 14 || >=16.14} 2376 | 2377 | /lru-cache@6.0.0: 2378 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2379 | engines: {node: '>=10'} 2380 | dependencies: 2381 | yallist: 4.0.0 2382 | dev: true 2383 | 2384 | /lucide-react@0.309.0(react@18.2.0): 2385 | resolution: {integrity: sha512-zNVPczuwFrCfksZH3zbd1UDE6/WYhYAdbe2k7CImVyPAkXLgIwbs6eXQ4loigqDnUFjyFYCI5jZ1y10Kqal0dg==} 2386 | peerDependencies: 2387 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 2388 | dependencies: 2389 | react: 18.2.0 2390 | dev: false 2391 | 2392 | /merge2@1.4.1: 2393 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2394 | engines: {node: '>= 8'} 2395 | 2396 | /micromatch@4.0.5: 2397 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2398 | engines: {node: '>=8.6'} 2399 | dependencies: 2400 | braces: 3.0.2 2401 | picomatch: 2.3.1 2402 | 2403 | /mimic-response@3.1.0: 2404 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 2405 | engines: {node: '>=10'} 2406 | dev: true 2407 | 2408 | /minimatch@3.1.2: 2409 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2410 | dependencies: 2411 | brace-expansion: 1.1.11 2412 | dev: true 2413 | 2414 | /minimatch@9.0.3: 2415 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2416 | engines: {node: '>=16 || 14 >=14.17'} 2417 | dependencies: 2418 | brace-expansion: 2.0.1 2419 | 2420 | /minimist@1.2.8: 2421 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2422 | dev: true 2423 | 2424 | /minipass@7.0.4: 2425 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 2426 | engines: {node: '>=16 || 14 >=14.17'} 2427 | 2428 | /mkdirp-classic@0.5.3: 2429 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 2430 | dev: true 2431 | 2432 | /ms@2.1.2: 2433 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2434 | dev: true 2435 | 2436 | /ms@2.1.3: 2437 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2438 | dev: true 2439 | 2440 | /mz@2.7.0: 2441 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2442 | dependencies: 2443 | any-promise: 1.3.0 2444 | object-assign: 4.1.1 2445 | thenify-all: 1.6.0 2446 | 2447 | /nanoid@3.3.7: 2448 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2449 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2450 | hasBin: true 2451 | 2452 | /nanoid@5.0.4: 2453 | resolution: {integrity: sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==} 2454 | engines: {node: ^18 || >=20} 2455 | hasBin: true 2456 | dev: false 2457 | 2458 | /napi-build-utils@1.0.2: 2459 | resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} 2460 | dev: true 2461 | 2462 | /natural-compare@1.4.0: 2463 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2464 | dev: true 2465 | 2466 | /next@14.0.5-canary.58(react-dom@18.2.0)(react@18.2.0): 2467 | resolution: {integrity: sha512-xZjkkbIDHCnzlV2M//0ehB72Wcxkw0yYsKqDr6+8VX9/BqBx8Z7mP/8d2ezF+c3lVcje6UODsmZW29IXpc5wKQ==} 2468 | engines: {node: '>=18.17.0'} 2469 | hasBin: true 2470 | peerDependencies: 2471 | '@opentelemetry/api': ^1.1.0 2472 | react: ^18.2.0 2473 | react-dom: ^18.2.0 2474 | sass: ^1.3.0 2475 | peerDependenciesMeta: 2476 | '@opentelemetry/api': 2477 | optional: true 2478 | sass: 2479 | optional: true 2480 | dependencies: 2481 | '@next/env': 14.0.5-canary.58 2482 | '@swc/helpers': 0.5.2 2483 | busboy: 1.6.0 2484 | caniuse-lite: 1.0.30001576 2485 | graceful-fs: 4.2.11 2486 | postcss: 8.4.31 2487 | react: 18.2.0 2488 | react-dom: 18.2.0(react@18.2.0) 2489 | styled-jsx: 5.1.1(react@18.2.0) 2490 | optionalDependencies: 2491 | '@next/swc-darwin-arm64': 14.0.5-canary.58 2492 | '@next/swc-darwin-x64': 14.0.5-canary.58 2493 | '@next/swc-linux-arm64-gnu': 14.0.5-canary.58 2494 | '@next/swc-linux-arm64-musl': 14.0.5-canary.58 2495 | '@next/swc-linux-x64-gnu': 14.0.5-canary.58 2496 | '@next/swc-linux-x64-musl': 14.0.5-canary.58 2497 | '@next/swc-win32-arm64-msvc': 14.0.5-canary.58 2498 | '@next/swc-win32-ia32-msvc': 14.0.5-canary.58 2499 | '@next/swc-win32-x64-msvc': 14.0.5-canary.58 2500 | transitivePeerDependencies: 2501 | - '@babel/core' 2502 | - babel-plugin-macros 2503 | dev: false 2504 | 2505 | /node-abi@3.54.0: 2506 | resolution: {integrity: sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==} 2507 | engines: {node: '>=10'} 2508 | dependencies: 2509 | semver: 7.5.4 2510 | dev: true 2511 | 2512 | /node-releases@2.0.14: 2513 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 2514 | dev: true 2515 | 2516 | /normalize-path@3.0.0: 2517 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2518 | engines: {node: '>=0.10.0'} 2519 | 2520 | /normalize-range@0.1.2: 2521 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2522 | engines: {node: '>=0.10.0'} 2523 | dev: true 2524 | 2525 | /object-assign@4.1.1: 2526 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2527 | engines: {node: '>=0.10.0'} 2528 | 2529 | /object-hash@3.0.0: 2530 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2531 | engines: {node: '>= 6'} 2532 | 2533 | /object-inspect@1.13.1: 2534 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2535 | dev: true 2536 | 2537 | /object-keys@1.1.1: 2538 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2539 | engines: {node: '>= 0.4'} 2540 | dev: true 2541 | 2542 | /object.assign@4.1.5: 2543 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 2544 | engines: {node: '>= 0.4'} 2545 | dependencies: 2546 | call-bind: 1.0.5 2547 | define-properties: 1.2.1 2548 | has-symbols: 1.0.3 2549 | object-keys: 1.1.1 2550 | dev: true 2551 | 2552 | /object.entries@1.1.7: 2553 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 2554 | engines: {node: '>= 0.4'} 2555 | dependencies: 2556 | call-bind: 1.0.5 2557 | define-properties: 1.2.1 2558 | es-abstract: 1.22.3 2559 | dev: true 2560 | 2561 | /object.fromentries@2.0.7: 2562 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 2563 | engines: {node: '>= 0.4'} 2564 | dependencies: 2565 | call-bind: 1.0.5 2566 | define-properties: 1.2.1 2567 | es-abstract: 1.22.3 2568 | dev: true 2569 | 2570 | /object.groupby@1.0.1: 2571 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} 2572 | dependencies: 2573 | call-bind: 1.0.5 2574 | define-properties: 1.2.1 2575 | es-abstract: 1.22.3 2576 | get-intrinsic: 1.2.2 2577 | dev: true 2578 | 2579 | /object.hasown@1.1.3: 2580 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 2581 | dependencies: 2582 | define-properties: 1.2.1 2583 | es-abstract: 1.22.3 2584 | dev: true 2585 | 2586 | /object.values@1.1.7: 2587 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 2588 | engines: {node: '>= 0.4'} 2589 | dependencies: 2590 | call-bind: 1.0.5 2591 | define-properties: 1.2.1 2592 | es-abstract: 1.22.3 2593 | dev: true 2594 | 2595 | /once@1.4.0: 2596 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2597 | dependencies: 2598 | wrappy: 1.0.2 2599 | dev: true 2600 | 2601 | /optionator@0.9.3: 2602 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2603 | engines: {node: '>= 0.8.0'} 2604 | dependencies: 2605 | '@aashutoshrathi/word-wrap': 1.2.6 2606 | deep-is: 0.1.4 2607 | fast-levenshtein: 2.0.6 2608 | levn: 0.4.1 2609 | prelude-ls: 1.2.1 2610 | type-check: 0.4.0 2611 | dev: true 2612 | 2613 | /p-limit@3.1.0: 2614 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2615 | engines: {node: '>=10'} 2616 | dependencies: 2617 | yocto-queue: 0.1.0 2618 | dev: true 2619 | 2620 | /p-locate@5.0.0: 2621 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2622 | engines: {node: '>=10'} 2623 | dependencies: 2624 | p-limit: 3.1.0 2625 | dev: true 2626 | 2627 | /packet-reader@1.0.0: 2628 | resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} 2629 | dev: true 2630 | 2631 | /parent-module@1.0.1: 2632 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2633 | engines: {node: '>=6'} 2634 | dependencies: 2635 | callsites: 3.1.0 2636 | dev: true 2637 | 2638 | /path-exists@4.0.0: 2639 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2640 | engines: {node: '>=8'} 2641 | dev: true 2642 | 2643 | /path-is-absolute@1.0.1: 2644 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2645 | engines: {node: '>=0.10.0'} 2646 | dev: true 2647 | 2648 | /path-key@3.1.1: 2649 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2650 | engines: {node: '>=8'} 2651 | 2652 | /path-parse@1.0.7: 2653 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2654 | 2655 | /path-scurry@1.10.1: 2656 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 2657 | engines: {node: '>=16 || 14 >=14.17'} 2658 | dependencies: 2659 | lru-cache: 10.1.0 2660 | minipass: 7.0.4 2661 | 2662 | /path-type@4.0.0: 2663 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2664 | engines: {node: '>=8'} 2665 | dev: true 2666 | 2667 | /pg-cloudflare@1.1.1: 2668 | resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} 2669 | requiresBuild: true 2670 | dev: true 2671 | optional: true 2672 | 2673 | /pg-connection-string@2.6.2: 2674 | resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} 2675 | dev: true 2676 | 2677 | /pg-int8@1.0.1: 2678 | resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 2679 | engines: {node: '>=4.0.0'} 2680 | 2681 | /pg-pool@3.6.1(pg@8.11.3): 2682 | resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} 2683 | peerDependencies: 2684 | pg: '>=8.0' 2685 | dependencies: 2686 | pg: 8.11.3 2687 | dev: true 2688 | 2689 | /pg-protocol@1.6.0: 2690 | resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} 2691 | 2692 | /pg-types@2.2.0: 2693 | resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 2694 | engines: {node: '>=4'} 2695 | dependencies: 2696 | pg-int8: 1.0.1 2697 | postgres-array: 2.0.0 2698 | postgres-bytea: 1.0.0 2699 | postgres-date: 1.0.7 2700 | postgres-interval: 1.2.0 2701 | 2702 | /pg@8.11.3: 2703 | resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} 2704 | engines: {node: '>= 8.0.0'} 2705 | peerDependencies: 2706 | pg-native: '>=3.0.1' 2707 | peerDependenciesMeta: 2708 | pg-native: 2709 | optional: true 2710 | dependencies: 2711 | buffer-writer: 2.0.0 2712 | packet-reader: 1.0.0 2713 | pg-connection-string: 2.6.2 2714 | pg-pool: 3.6.1(pg@8.11.3) 2715 | pg-protocol: 1.6.0 2716 | pg-types: 2.2.0 2717 | pgpass: 1.0.5 2718 | optionalDependencies: 2719 | pg-cloudflare: 1.1.1 2720 | dev: true 2721 | 2722 | /pgpass@1.0.5: 2723 | resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 2724 | dependencies: 2725 | split2: 4.2.0 2726 | dev: true 2727 | 2728 | /picocolors@1.0.0: 2729 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2730 | 2731 | /picomatch@2.3.1: 2732 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2733 | engines: {node: '>=8.6'} 2734 | 2735 | /pify@2.3.0: 2736 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2737 | engines: {node: '>=0.10.0'} 2738 | 2739 | /pirates@4.0.6: 2740 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2741 | engines: {node: '>= 6'} 2742 | 2743 | /postcss-import@15.1.0(postcss@8.4.33): 2744 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2745 | engines: {node: '>=14.0.0'} 2746 | peerDependencies: 2747 | postcss: ^8.0.0 2748 | dependencies: 2749 | postcss: 8.4.33 2750 | postcss-value-parser: 4.2.0 2751 | read-cache: 1.0.0 2752 | resolve: 1.22.8 2753 | 2754 | /postcss-js@4.0.1(postcss@8.4.33): 2755 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2756 | engines: {node: ^12 || ^14 || >= 16} 2757 | peerDependencies: 2758 | postcss: ^8.4.21 2759 | dependencies: 2760 | camelcase-css: 2.0.1 2761 | postcss: 8.4.33 2762 | 2763 | /postcss-load-config@4.0.2(postcss@8.4.33): 2764 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2765 | engines: {node: '>= 14'} 2766 | peerDependencies: 2767 | postcss: '>=8.0.9' 2768 | ts-node: '>=9.0.0' 2769 | peerDependenciesMeta: 2770 | postcss: 2771 | optional: true 2772 | ts-node: 2773 | optional: true 2774 | dependencies: 2775 | lilconfig: 3.0.0 2776 | postcss: 8.4.33 2777 | yaml: 2.3.4 2778 | 2779 | /postcss-nested@6.0.1(postcss@8.4.33): 2780 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2781 | engines: {node: '>=12.0'} 2782 | peerDependencies: 2783 | postcss: ^8.2.14 2784 | dependencies: 2785 | postcss: 8.4.33 2786 | postcss-selector-parser: 6.0.15 2787 | 2788 | /postcss-selector-parser@6.0.15: 2789 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 2790 | engines: {node: '>=4'} 2791 | dependencies: 2792 | cssesc: 3.0.0 2793 | util-deprecate: 1.0.2 2794 | 2795 | /postcss-value-parser@4.2.0: 2796 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2797 | 2798 | /postcss@8.4.31: 2799 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2800 | engines: {node: ^10 || ^12 || >=14} 2801 | dependencies: 2802 | nanoid: 3.3.7 2803 | picocolors: 1.0.0 2804 | source-map-js: 1.0.2 2805 | dev: false 2806 | 2807 | /postcss@8.4.33: 2808 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 2809 | engines: {node: ^10 || ^12 || >=14} 2810 | dependencies: 2811 | nanoid: 3.3.7 2812 | picocolors: 1.0.0 2813 | source-map-js: 1.0.2 2814 | 2815 | /postgres-array@2.0.0: 2816 | resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 2817 | engines: {node: '>=4'} 2818 | 2819 | /postgres-bytea@1.0.0: 2820 | resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 2821 | engines: {node: '>=0.10.0'} 2822 | 2823 | /postgres-date@1.0.7: 2824 | resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 2825 | engines: {node: '>=0.10.0'} 2826 | 2827 | /postgres-interval@1.2.0: 2828 | resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 2829 | engines: {node: '>=0.10.0'} 2830 | dependencies: 2831 | xtend: 4.0.2 2832 | 2833 | /prebuild-install@7.1.1: 2834 | resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} 2835 | engines: {node: '>=10'} 2836 | hasBin: true 2837 | dependencies: 2838 | detect-libc: 2.0.2 2839 | expand-template: 2.0.3 2840 | github-from-package: 0.0.0 2841 | minimist: 1.2.8 2842 | mkdirp-classic: 0.5.3 2843 | napi-build-utils: 1.0.2 2844 | node-abi: 3.54.0 2845 | pump: 3.0.0 2846 | rc: 1.2.8 2847 | simple-get: 4.0.1 2848 | tar-fs: 2.1.1 2849 | tunnel-agent: 0.6.0 2850 | dev: true 2851 | 2852 | /prelude-ls@1.2.1: 2853 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2854 | engines: {node: '>= 0.8.0'} 2855 | dev: true 2856 | 2857 | /prop-types@15.8.1: 2858 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2859 | dependencies: 2860 | loose-envify: 1.4.0 2861 | object-assign: 4.1.1 2862 | react-is: 16.13.1 2863 | dev: true 2864 | 2865 | /pump@3.0.0: 2866 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 2867 | dependencies: 2868 | end-of-stream: 1.4.4 2869 | once: 1.4.0 2870 | dev: true 2871 | 2872 | /punycode@2.3.1: 2873 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2874 | engines: {node: '>=6'} 2875 | dev: true 2876 | 2877 | /queue-microtask@1.2.3: 2878 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2879 | 2880 | /rc@1.2.8: 2881 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 2882 | hasBin: true 2883 | dependencies: 2884 | deep-extend: 0.6.0 2885 | ini: 1.3.8 2886 | minimist: 1.2.8 2887 | strip-json-comments: 2.0.1 2888 | dev: true 2889 | 2890 | /react-dom@18.2.0(react@18.2.0): 2891 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2892 | peerDependencies: 2893 | react: ^18.2.0 2894 | dependencies: 2895 | loose-envify: 1.4.0 2896 | react: 18.2.0 2897 | scheduler: 0.23.0 2898 | dev: false 2899 | 2900 | /react-is@16.13.1: 2901 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2902 | dev: true 2903 | 2904 | /react-tweet@3.2.0(react-dom@18.2.0)(react@18.2.0): 2905 | resolution: {integrity: sha512-eYLAX5ViOICQT/vkte/IzYZZDoBnl7hDO3Ns4++lKEFr/+BohPK5Rg+Lvbfx78Qtn3AjfDG5c6n+rOt7c2J6qg==} 2906 | peerDependencies: 2907 | react: '>= 18.0.0' 2908 | react-dom: '>= 18.0.0' 2909 | dependencies: 2910 | '@swc/helpers': 0.5.3 2911 | clsx: 2.1.0 2912 | date-fns: 2.30.0 2913 | react: 18.2.0 2914 | react-dom: 18.2.0(react@18.2.0) 2915 | swr: 2.2.4(react@18.2.0) 2916 | dev: false 2917 | 2918 | /react@18.2.0: 2919 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2920 | engines: {node: '>=0.10.0'} 2921 | dependencies: 2922 | loose-envify: 1.4.0 2923 | dev: false 2924 | 2925 | /read-cache@1.0.0: 2926 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2927 | dependencies: 2928 | pify: 2.3.0 2929 | 2930 | /readable-stream@3.6.2: 2931 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 2932 | engines: {node: '>= 6'} 2933 | dependencies: 2934 | inherits: 2.0.4 2935 | string_decoder: 1.3.0 2936 | util-deprecate: 1.0.2 2937 | dev: true 2938 | 2939 | /readdirp@3.6.0: 2940 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2941 | engines: {node: '>=8.10.0'} 2942 | dependencies: 2943 | picomatch: 2.3.1 2944 | 2945 | /reflect.getprototypeof@1.0.4: 2946 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} 2947 | engines: {node: '>= 0.4'} 2948 | dependencies: 2949 | call-bind: 1.0.5 2950 | define-properties: 1.2.1 2951 | es-abstract: 1.22.3 2952 | get-intrinsic: 1.2.2 2953 | globalthis: 1.0.3 2954 | which-builtin-type: 1.1.3 2955 | dev: true 2956 | 2957 | /regenerator-runtime@0.14.1: 2958 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2959 | 2960 | /regexp.prototype.flags@1.5.1: 2961 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 2962 | engines: {node: '>= 0.4'} 2963 | dependencies: 2964 | call-bind: 1.0.5 2965 | define-properties: 1.2.1 2966 | set-function-name: 2.0.1 2967 | dev: true 2968 | 2969 | /resolve-from@4.0.0: 2970 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2971 | engines: {node: '>=4'} 2972 | dev: true 2973 | 2974 | /resolve-pkg-maps@1.0.0: 2975 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2976 | dev: true 2977 | 2978 | /resolve@1.22.8: 2979 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2980 | hasBin: true 2981 | dependencies: 2982 | is-core-module: 2.13.1 2983 | path-parse: 1.0.7 2984 | supports-preserve-symlinks-flag: 1.0.0 2985 | 2986 | /resolve@2.0.0-next.5: 2987 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 2988 | hasBin: true 2989 | dependencies: 2990 | is-core-module: 2.13.1 2991 | path-parse: 1.0.7 2992 | supports-preserve-symlinks-flag: 1.0.0 2993 | dev: true 2994 | 2995 | /reusify@1.0.4: 2996 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2997 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2998 | 2999 | /rimraf@3.0.2: 3000 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3001 | hasBin: true 3002 | dependencies: 3003 | glob: 7.2.3 3004 | dev: true 3005 | 3006 | /run-parallel@1.2.0: 3007 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3008 | dependencies: 3009 | queue-microtask: 1.2.3 3010 | 3011 | /safe-array-concat@1.0.1: 3012 | resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} 3013 | engines: {node: '>=0.4'} 3014 | dependencies: 3015 | call-bind: 1.0.5 3016 | get-intrinsic: 1.2.2 3017 | has-symbols: 1.0.3 3018 | isarray: 2.0.5 3019 | dev: true 3020 | 3021 | /safe-buffer@5.2.1: 3022 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 3023 | dev: true 3024 | 3025 | /safe-regex-test@1.0.0: 3026 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 3027 | dependencies: 3028 | call-bind: 1.0.5 3029 | get-intrinsic: 1.2.2 3030 | is-regex: 1.1.4 3031 | dev: true 3032 | 3033 | /scheduler@0.23.0: 3034 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 3035 | dependencies: 3036 | loose-envify: 1.4.0 3037 | dev: false 3038 | 3039 | /semver@6.3.1: 3040 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 3041 | hasBin: true 3042 | dev: true 3043 | 3044 | /semver@7.5.4: 3045 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 3046 | engines: {node: '>=10'} 3047 | hasBin: true 3048 | dependencies: 3049 | lru-cache: 6.0.0 3050 | dev: true 3051 | 3052 | /server-only@0.0.1: 3053 | resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} 3054 | dev: false 3055 | 3056 | /set-function-length@1.1.1: 3057 | resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} 3058 | engines: {node: '>= 0.4'} 3059 | dependencies: 3060 | define-data-property: 1.1.1 3061 | get-intrinsic: 1.2.2 3062 | gopd: 1.0.1 3063 | has-property-descriptors: 1.0.1 3064 | dev: true 3065 | 3066 | /set-function-name@2.0.1: 3067 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 3068 | engines: {node: '>= 0.4'} 3069 | dependencies: 3070 | define-data-property: 1.1.1 3071 | functions-have-names: 1.2.3 3072 | has-property-descriptors: 1.0.1 3073 | dev: true 3074 | 3075 | /shebang-command@2.0.0: 3076 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3077 | engines: {node: '>=8'} 3078 | dependencies: 3079 | shebang-regex: 3.0.0 3080 | 3081 | /shebang-regex@3.0.0: 3082 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3083 | engines: {node: '>=8'} 3084 | 3085 | /side-channel@1.0.4: 3086 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3087 | dependencies: 3088 | call-bind: 1.0.5 3089 | get-intrinsic: 1.2.2 3090 | object-inspect: 1.13.1 3091 | dev: true 3092 | 3093 | /signal-exit@4.1.0: 3094 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 3095 | engines: {node: '>=14'} 3096 | 3097 | /simple-concat@1.0.1: 3098 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 3099 | dev: true 3100 | 3101 | /simple-get@4.0.1: 3102 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 3103 | dependencies: 3104 | decompress-response: 6.0.0 3105 | once: 1.4.0 3106 | simple-concat: 1.0.1 3107 | dev: true 3108 | 3109 | /slash@3.0.0: 3110 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3111 | engines: {node: '>=8'} 3112 | dev: true 3113 | 3114 | /source-map-js@1.0.2: 3115 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3116 | engines: {node: '>=0.10.0'} 3117 | 3118 | /split2@4.2.0: 3119 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 3120 | engines: {node: '>= 10.x'} 3121 | dev: true 3122 | 3123 | /streamsearch@1.1.0: 3124 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 3125 | engines: {node: '>=10.0.0'} 3126 | dev: false 3127 | 3128 | /string-width@4.2.3: 3129 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3130 | engines: {node: '>=8'} 3131 | dependencies: 3132 | emoji-regex: 8.0.0 3133 | is-fullwidth-code-point: 3.0.0 3134 | strip-ansi: 6.0.1 3135 | 3136 | /string-width@5.1.2: 3137 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3138 | engines: {node: '>=12'} 3139 | dependencies: 3140 | eastasianwidth: 0.2.0 3141 | emoji-regex: 9.2.2 3142 | strip-ansi: 7.1.0 3143 | 3144 | /string.prototype.matchall@4.0.10: 3145 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 3146 | dependencies: 3147 | call-bind: 1.0.5 3148 | define-properties: 1.2.1 3149 | es-abstract: 1.22.3 3150 | get-intrinsic: 1.2.2 3151 | has-symbols: 1.0.3 3152 | internal-slot: 1.0.6 3153 | regexp.prototype.flags: 1.5.1 3154 | set-function-name: 2.0.1 3155 | side-channel: 1.0.4 3156 | dev: true 3157 | 3158 | /string.prototype.trim@1.2.8: 3159 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 3160 | engines: {node: '>= 0.4'} 3161 | dependencies: 3162 | call-bind: 1.0.5 3163 | define-properties: 1.2.1 3164 | es-abstract: 1.22.3 3165 | dev: true 3166 | 3167 | /string.prototype.trimend@1.0.7: 3168 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 3169 | dependencies: 3170 | call-bind: 1.0.5 3171 | define-properties: 1.2.1 3172 | es-abstract: 1.22.3 3173 | dev: true 3174 | 3175 | /string.prototype.trimstart@1.0.7: 3176 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 3177 | dependencies: 3178 | call-bind: 1.0.5 3179 | define-properties: 1.2.1 3180 | es-abstract: 1.22.3 3181 | dev: true 3182 | 3183 | /string_decoder@1.3.0: 3184 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 3185 | dependencies: 3186 | safe-buffer: 5.2.1 3187 | dev: true 3188 | 3189 | /strip-ansi@6.0.1: 3190 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3191 | engines: {node: '>=8'} 3192 | dependencies: 3193 | ansi-regex: 5.0.1 3194 | 3195 | /strip-ansi@7.1.0: 3196 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 3197 | engines: {node: '>=12'} 3198 | dependencies: 3199 | ansi-regex: 6.0.1 3200 | 3201 | /strip-bom@3.0.0: 3202 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3203 | engines: {node: '>=4'} 3204 | dev: true 3205 | 3206 | /strip-json-comments@2.0.1: 3207 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 3208 | engines: {node: '>=0.10.0'} 3209 | dev: true 3210 | 3211 | /strip-json-comments@3.1.1: 3212 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3213 | engines: {node: '>=8'} 3214 | dev: true 3215 | 3216 | /styled-jsx@5.1.1(react@18.2.0): 3217 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 3218 | engines: {node: '>= 12.0.0'} 3219 | peerDependencies: 3220 | '@babel/core': '*' 3221 | babel-plugin-macros: '*' 3222 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 3223 | peerDependenciesMeta: 3224 | '@babel/core': 3225 | optional: true 3226 | babel-plugin-macros: 3227 | optional: true 3228 | dependencies: 3229 | client-only: 0.0.1 3230 | react: 18.2.0 3231 | dev: false 3232 | 3233 | /sucrase@3.35.0: 3234 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 3235 | engines: {node: '>=16 || 14 >=14.17'} 3236 | hasBin: true 3237 | dependencies: 3238 | '@jridgewell/gen-mapping': 0.3.3 3239 | commander: 4.1.1 3240 | glob: 10.3.10 3241 | lines-and-columns: 1.2.4 3242 | mz: 2.7.0 3243 | pirates: 4.0.6 3244 | ts-interface-checker: 0.1.13 3245 | 3246 | /sugar-high@0.5.6: 3247 | resolution: {integrity: sha512-VfBxzjVfnYuiYpsjCKp8Jp9zE4pz15eBgMF4wROppvEumQobGIYyKSUaF14Fax4W3KMFZenIg6gAVM3LQZcb3A==} 3248 | dev: false 3249 | 3250 | /supports-color@7.2.0: 3251 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3252 | engines: {node: '>=8'} 3253 | dependencies: 3254 | has-flag: 4.0.0 3255 | dev: true 3256 | 3257 | /supports-preserve-symlinks-flag@1.0.0: 3258 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3259 | engines: {node: '>= 0.4'} 3260 | 3261 | /swr@2.2.4(react@18.2.0): 3262 | resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} 3263 | peerDependencies: 3264 | react: ^16.11.0 || ^17.0.0 || ^18.0.0 3265 | dependencies: 3266 | client-only: 0.0.1 3267 | react: 18.2.0 3268 | use-sync-external-store: 1.2.0(react@18.2.0) 3269 | dev: false 3270 | 3271 | /tailwind-merge@2.2.0: 3272 | resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} 3273 | dependencies: 3274 | '@babel/runtime': 7.23.8 3275 | dev: false 3276 | 3277 | /tailwindcss-animate@1.0.7(tailwindcss@3.4.1): 3278 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 3279 | peerDependencies: 3280 | tailwindcss: '>=3.0.0 || insiders' 3281 | dependencies: 3282 | tailwindcss: 3.4.1 3283 | dev: false 3284 | 3285 | /tailwindcss@3.4.1: 3286 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 3287 | engines: {node: '>=14.0.0'} 3288 | hasBin: true 3289 | dependencies: 3290 | '@alloc/quick-lru': 5.2.0 3291 | arg: 5.0.2 3292 | chokidar: 3.5.3 3293 | didyoumean: 1.2.2 3294 | dlv: 1.1.3 3295 | fast-glob: 3.3.2 3296 | glob-parent: 6.0.2 3297 | is-glob: 4.0.3 3298 | jiti: 1.21.0 3299 | lilconfig: 2.1.0 3300 | micromatch: 4.0.5 3301 | normalize-path: 3.0.0 3302 | object-hash: 3.0.0 3303 | picocolors: 1.0.0 3304 | postcss: 8.4.33 3305 | postcss-import: 15.1.0(postcss@8.4.33) 3306 | postcss-js: 4.0.1(postcss@8.4.33) 3307 | postcss-load-config: 4.0.2(postcss@8.4.33) 3308 | postcss-nested: 6.0.1(postcss@8.4.33) 3309 | postcss-selector-parser: 6.0.15 3310 | resolve: 1.22.8 3311 | sucrase: 3.35.0 3312 | transitivePeerDependencies: 3313 | - ts-node 3314 | 3315 | /tapable@2.2.1: 3316 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 3317 | engines: {node: '>=6'} 3318 | dev: true 3319 | 3320 | /tar-fs@2.1.1: 3321 | resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} 3322 | dependencies: 3323 | chownr: 1.1.4 3324 | mkdirp-classic: 0.5.3 3325 | pump: 3.0.0 3326 | tar-stream: 2.2.0 3327 | dev: true 3328 | 3329 | /tar-stream@2.2.0: 3330 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 3331 | engines: {node: '>=6'} 3332 | dependencies: 3333 | bl: 4.1.0 3334 | end-of-stream: 1.4.4 3335 | fs-constants: 1.0.0 3336 | inherits: 2.0.4 3337 | readable-stream: 3.6.2 3338 | dev: true 3339 | 3340 | /text-table@0.2.0: 3341 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3342 | dev: true 3343 | 3344 | /thenify-all@1.6.0: 3345 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3346 | engines: {node: '>=0.8'} 3347 | dependencies: 3348 | thenify: 3.3.1 3349 | 3350 | /thenify@3.3.1: 3351 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3352 | dependencies: 3353 | any-promise: 1.3.0 3354 | 3355 | /to-regex-range@5.0.1: 3356 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3357 | engines: {node: '>=8.0'} 3358 | dependencies: 3359 | is-number: 7.0.0 3360 | 3361 | /ts-api-utils@1.0.3(typescript@5.3.3): 3362 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 3363 | engines: {node: '>=16.13.0'} 3364 | peerDependencies: 3365 | typescript: '>=4.2.0' 3366 | dependencies: 3367 | typescript: 5.3.3 3368 | dev: true 3369 | 3370 | /ts-interface-checker@0.1.13: 3371 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3372 | 3373 | /tsconfig-paths@3.15.0: 3374 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 3375 | dependencies: 3376 | '@types/json5': 0.0.29 3377 | json5: 1.0.2 3378 | minimist: 1.2.8 3379 | strip-bom: 3.0.0 3380 | dev: true 3381 | 3382 | /tslib@2.6.2: 3383 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3384 | dev: false 3385 | 3386 | /tunnel-agent@0.6.0: 3387 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 3388 | dependencies: 3389 | safe-buffer: 5.2.1 3390 | dev: true 3391 | 3392 | /type-check@0.4.0: 3393 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3394 | engines: {node: '>= 0.8.0'} 3395 | dependencies: 3396 | prelude-ls: 1.2.1 3397 | dev: true 3398 | 3399 | /type-fest@0.20.2: 3400 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3401 | engines: {node: '>=10'} 3402 | dev: true 3403 | 3404 | /typed-array-buffer@1.0.0: 3405 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 3406 | engines: {node: '>= 0.4'} 3407 | dependencies: 3408 | call-bind: 1.0.5 3409 | get-intrinsic: 1.2.2 3410 | is-typed-array: 1.1.12 3411 | dev: true 3412 | 3413 | /typed-array-byte-length@1.0.0: 3414 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 3415 | engines: {node: '>= 0.4'} 3416 | dependencies: 3417 | call-bind: 1.0.5 3418 | for-each: 0.3.3 3419 | has-proto: 1.0.1 3420 | is-typed-array: 1.1.12 3421 | dev: true 3422 | 3423 | /typed-array-byte-offset@1.0.0: 3424 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 3425 | engines: {node: '>= 0.4'} 3426 | dependencies: 3427 | available-typed-arrays: 1.0.5 3428 | call-bind: 1.0.5 3429 | for-each: 0.3.3 3430 | has-proto: 1.0.1 3431 | is-typed-array: 1.1.12 3432 | dev: true 3433 | 3434 | /typed-array-length@1.0.4: 3435 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3436 | dependencies: 3437 | call-bind: 1.0.5 3438 | for-each: 0.3.3 3439 | is-typed-array: 1.1.12 3440 | dev: true 3441 | 3442 | /typescript@5.3.3: 3443 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 3444 | engines: {node: '>=14.17'} 3445 | hasBin: true 3446 | dev: true 3447 | 3448 | /unbox-primitive@1.0.2: 3449 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3450 | dependencies: 3451 | call-bind: 1.0.5 3452 | has-bigints: 1.0.2 3453 | has-symbols: 1.0.3 3454 | which-boxed-primitive: 1.0.2 3455 | dev: true 3456 | 3457 | /undici-types@5.26.5: 3458 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3459 | 3460 | /update-browserslist-db@1.0.13(browserslist@4.22.2): 3461 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3462 | hasBin: true 3463 | peerDependencies: 3464 | browserslist: '>= 4.21.0' 3465 | dependencies: 3466 | browserslist: 4.22.2 3467 | escalade: 3.1.1 3468 | picocolors: 1.0.0 3469 | dev: true 3470 | 3471 | /uri-js@4.4.1: 3472 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3473 | dependencies: 3474 | punycode: 2.3.1 3475 | dev: true 3476 | 3477 | /use-sync-external-store@1.2.0(react@18.2.0): 3478 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 3479 | peerDependencies: 3480 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 3481 | dependencies: 3482 | react: 18.2.0 3483 | dev: false 3484 | 3485 | /util-deprecate@1.0.2: 3486 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3487 | 3488 | /which-boxed-primitive@1.0.2: 3489 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3490 | dependencies: 3491 | is-bigint: 1.0.4 3492 | is-boolean-object: 1.1.2 3493 | is-number-object: 1.0.7 3494 | is-string: 1.0.7 3495 | is-symbol: 1.0.4 3496 | dev: true 3497 | 3498 | /which-builtin-type@1.1.3: 3499 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 3500 | engines: {node: '>= 0.4'} 3501 | dependencies: 3502 | function.prototype.name: 1.1.6 3503 | has-tostringtag: 1.0.0 3504 | is-async-function: 2.0.0 3505 | is-date-object: 1.0.5 3506 | is-finalizationregistry: 1.0.2 3507 | is-generator-function: 1.0.10 3508 | is-regex: 1.1.4 3509 | is-weakref: 1.0.2 3510 | isarray: 2.0.5 3511 | which-boxed-primitive: 1.0.2 3512 | which-collection: 1.0.1 3513 | which-typed-array: 1.1.13 3514 | dev: true 3515 | 3516 | /which-collection@1.0.1: 3517 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3518 | dependencies: 3519 | is-map: 2.0.2 3520 | is-set: 2.0.2 3521 | is-weakmap: 2.0.1 3522 | is-weakset: 2.0.2 3523 | dev: true 3524 | 3525 | /which-typed-array@1.1.13: 3526 | resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} 3527 | engines: {node: '>= 0.4'} 3528 | dependencies: 3529 | available-typed-arrays: 1.0.5 3530 | call-bind: 1.0.5 3531 | for-each: 0.3.3 3532 | gopd: 1.0.1 3533 | has-tostringtag: 1.0.0 3534 | dev: true 3535 | 3536 | /which@2.0.2: 3537 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3538 | engines: {node: '>= 8'} 3539 | hasBin: true 3540 | dependencies: 3541 | isexe: 2.0.0 3542 | 3543 | /wrap-ansi@7.0.0: 3544 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3545 | engines: {node: '>=10'} 3546 | dependencies: 3547 | ansi-styles: 4.3.0 3548 | string-width: 4.2.3 3549 | strip-ansi: 6.0.1 3550 | 3551 | /wrap-ansi@8.1.0: 3552 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3553 | engines: {node: '>=12'} 3554 | dependencies: 3555 | ansi-styles: 6.2.1 3556 | string-width: 5.1.2 3557 | strip-ansi: 7.1.0 3558 | 3559 | /wrappy@1.0.2: 3560 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3561 | dev: true 3562 | 3563 | /xtend@4.0.2: 3564 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 3565 | engines: {node: '>=0.4'} 3566 | 3567 | /yallist@4.0.0: 3568 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3569 | dev: true 3570 | 3571 | /yaml@2.3.4: 3572 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 3573 | engines: {node: '>= 14'} 3574 | 3575 | /yocto-queue@0.1.0: 3576 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3577 | engines: {node: '>=10'} 3578 | dev: true 3579 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /rpc/hello-react.tsx: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return

    Hello World

    ; 3 | } 4 | -------------------------------------------------------------------------------- /rpc/index.d.ts: -------------------------------------------------------------------------------- 1 | declare var sql: any; 2 | -------------------------------------------------------------------------------- /rpc/logs.ts: -------------------------------------------------------------------------------- 1 | export default function () { 2 | console.log("log"); 3 | console.debug("debug"); 4 | console.info("info"); 5 | console.warn("warn"); 6 | console.error("error"); 7 | } 8 | -------------------------------------------------------------------------------- /rpc/pokemon.tsx: -------------------------------------------------------------------------------- 1 | export default function Pokemon() { 2 | const list = sql`SELECT * FROM pokemon ORDER BY RANDOM() LIMIT 12`; 3 | return ( 4 |
      5 | {list.map((row: any) => { 6 | return ( 7 |
    • 8 | {row.name} 14 | {row.name} 15 |
    • 16 | ); 17 | })} 18 |
    19 | ); 20 | } 21 | -------------------------------------------------------------------------------- /rpc/postgres-version.tsx: -------------------------------------------------------------------------------- 1 | export default function postgresVersion() { 2 | const [{ version }] = sql`SELECT version()`; // no `await` needed! 3 | return ( 4 |

    5 | Hello from inside Postgres: {version} 6 |

    7 | ); 8 | } 9 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import { type Config } from "tailwindcss"; 2 | import tailwindcssAnimate from "tailwindcss-animate"; 3 | 4 | const config: Config = { 5 | darkMode: "class", 6 | content: [ 7 | "./pages/**/*.{ts,tsx}", 8 | "./components/**/*.{ts,tsx}", 9 | "./app/**/*.{ts,tsx}", 10 | "./src/**/*.{ts,tsx}", 11 | "./rpc/**/*.{ts,tsx}", 12 | ], 13 | prefix: "", 14 | theme: { 15 | container: { 16 | center: true, 17 | padding: "2rem", 18 | screens: { 19 | "2xl": "1400px", 20 | }, 21 | }, 22 | extend: { 23 | colors: { 24 | border: "hsl(var(--border))", 25 | input: "hsl(var(--input))", 26 | ring: "hsl(var(--ring))", 27 | background: "hsl(var(--background))", 28 | foreground: "hsl(var(--foreground))", 29 | primary: { 30 | DEFAULT: "hsl(var(--primary))", 31 | foreground: "hsl(var(--primary-foreground))", 32 | }, 33 | secondary: { 34 | DEFAULT: "hsl(var(--secondary))", 35 | foreground: "hsl(var(--secondary-foreground))", 36 | }, 37 | destructive: { 38 | DEFAULT: "hsl(var(--destructive))", 39 | foreground: "hsl(var(--destructive-foreground))", 40 | }, 41 | muted: { 42 | DEFAULT: "hsl(var(--muted))", 43 | foreground: "hsl(var(--muted-foreground))", 44 | }, 45 | accent: { 46 | DEFAULT: "hsl(var(--accent))", 47 | foreground: "hsl(var(--accent-foreground))", 48 | }, 49 | popover: { 50 | DEFAULT: "hsl(var(--popover))", 51 | foreground: "hsl(var(--popover-foreground))", 52 | }, 53 | card: { 54 | DEFAULT: "hsl(var(--card))", 55 | foreground: "hsl(var(--card-foreground))", 56 | }, 57 | }, 58 | borderRadius: { 59 | lg: "var(--radius)", 60 | md: "calc(var(--radius) - 2px)", 61 | sm: "calc(var(--radius) - 4px)", 62 | }, 63 | keyframes: { 64 | "accordion-down": { 65 | from: { height: "0" }, 66 | to: { height: "var(--radix-accordion-content-height)" }, 67 | }, 68 | "accordion-up": { 69 | from: { height: "var(--radix-accordion-content-height)" }, 70 | to: { height: "0" }, 71 | }, 72 | }, 73 | animation: { 74 | "accordion-down": "accordion-down 0.2s ease-out", 75 | "accordion-up": "accordion-up 0.2s ease-out", 76 | }, 77 | }, 78 | }, 79 | plugins: [tailwindcssAnimate], 80 | }; 81 | 82 | export default config; 83 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "jsx": "preserve", 15 | "incremental": true, 16 | "plugins": [ 17 | { 18 | "name": "next" 19 | } 20 | ], 21 | "paths": { 22 | "@/*": ["./*"] 23 | } 24 | }, 25 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 26 | "exclude": ["node_modules"] 27 | } 28 | --------------------------------------------------------------------------------