From b99ab056d10a1425dc9e0c501a06a17312119d62 Mon Sep 17 00:00:00 2001 From: Alex Yang <himself65@outlook.com> Date: Wed, 8 May 2024 02:56:42 -0500 Subject: [PATCH] feat: init `@llamaindex/autotool` (#819) --- .github/workflows/test.yml | 6 +- package.json | 2 +- packages/autotool/README.md | 83 + .../autotool/examples/01_node/package.json | 12 + .../examples/01_node/src/index.tool.ts | 11 + .../autotool/examples/01_node/src/index.ts | 23 + .../autotool/examples/01_node/src/utils.ts | 8 + .../autotool/examples/01_node/tsconfig.json | 9 + .../autotool/examples/02_nextjs/.env.example | 3 + .../autotool/examples/02_nextjs/.gitignore | 35 + .../autotool/examples/02_nextjs/README.md | 30 + .../autotool/examples/02_nextjs/actions.ts | 38 + .../examples/02_nextjs/app/favicon.ico | Bin 0 -> 15406 bytes .../examples/02_nextjs/app/globals.css | 94 + .../examples/02_nextjs/app/layout.tsx | 26 + .../autotool/examples/02_nextjs/app/page.tsx | 11 + .../02_nextjs/components/chat-section.tsx | 35 + .../02_nextjs/components/location-card.tsx | 9 + .../examples/02_nextjs/components/spinner.tsx | 23 + .../examples/02_nextjs/context/index.ts | 14 + .../examples/02_nextjs/next.config.mjs | 6 + .../autotool/examples/02_nextjs/package.json | 36 + .../examples/02_nextjs/postcss.config.js | 6 + .../examples/02_nextjs/public/llama.png | Bin 0 -> 36985 bytes .../examples/02_nextjs/tailwind.config.ts | 78 + .../examples/02_nextjs/tool/index.tsx | 27 + .../autotool/examples/02_nextjs/tsconfig.json | 28 + packages/autotool/package.json | 78 + packages/autotool/src/compiler.ts | 103 + packages/autotool/src/index.ts | 82 + packages/autotool/src/internal/index.ts | 26 + packages/autotool/src/loader.ts | 38 + packages/autotool/src/next.ts | 13 + packages/autotool/src/node.ts | 16 + packages/autotool/src/plugin.ts | 35 + packages/autotool/src/vite.ts | 6 + packages/autotool/src/webpack.ts | 6 + packages/autotool/tsconfig.json | 19 + .../examples/nextjs-edge-runtime/package.json | 2 +- packages/edge/.gitignore | 4 - packages/edge/package.json | 97 - packages/edge/scripts/update-deps.js | 26 - packages/env/package.json | 2 +- packages/experimental/package.json | 2 +- packages/wasm-tools/package.json | 2 +- pnpm-lock.yaml | 2294 ++++++++++++++--- pnpm-workspace.yaml | 1 + tsconfig.json | 6 + turbo.json | 10 +- 49 files changed, 2957 insertions(+), 564 deletions(-) create mode 100644 packages/autotool/README.md create mode 100644 packages/autotool/examples/01_node/package.json create mode 100644 packages/autotool/examples/01_node/src/index.tool.ts create mode 100644 packages/autotool/examples/01_node/src/index.ts create mode 100644 packages/autotool/examples/01_node/src/utils.ts create mode 100644 packages/autotool/examples/01_node/tsconfig.json create mode 100644 packages/autotool/examples/02_nextjs/.env.example create mode 100644 packages/autotool/examples/02_nextjs/.gitignore create mode 100644 packages/autotool/examples/02_nextjs/README.md create mode 100644 packages/autotool/examples/02_nextjs/actions.ts create mode 100644 packages/autotool/examples/02_nextjs/app/favicon.ico create mode 100644 packages/autotool/examples/02_nextjs/app/globals.css create mode 100644 packages/autotool/examples/02_nextjs/app/layout.tsx create mode 100644 packages/autotool/examples/02_nextjs/app/page.tsx create mode 100644 packages/autotool/examples/02_nextjs/components/chat-section.tsx create mode 100644 packages/autotool/examples/02_nextjs/components/location-card.tsx create mode 100644 packages/autotool/examples/02_nextjs/components/spinner.tsx create mode 100644 packages/autotool/examples/02_nextjs/context/index.ts create mode 100644 packages/autotool/examples/02_nextjs/next.config.mjs create mode 100644 packages/autotool/examples/02_nextjs/package.json create mode 100644 packages/autotool/examples/02_nextjs/postcss.config.js create mode 100644 packages/autotool/examples/02_nextjs/public/llama.png create mode 100644 packages/autotool/examples/02_nextjs/tailwind.config.ts create mode 100644 packages/autotool/examples/02_nextjs/tool/index.tsx create mode 100644 packages/autotool/examples/02_nextjs/tsconfig.json create mode 100644 packages/autotool/package.json create mode 100644 packages/autotool/src/compiler.ts create mode 100644 packages/autotool/src/index.ts create mode 100644 packages/autotool/src/internal/index.ts create mode 100644 packages/autotool/src/loader.ts create mode 100644 packages/autotool/src/next.ts create mode 100644 packages/autotool/src/node.ts create mode 100644 packages/autotool/src/plugin.ts create mode 100644 packages/autotool/src/vite.ts create mode 100644 packages/autotool/src/webpack.ts create mode 100644 packages/autotool/tsconfig.json delete mode 100644 packages/edge/.gitignore delete mode 100644 packages/edge/package.json delete mode 100644 packages/edge/scripts/update-deps.js diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index edbdab20d..e75558cc1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -69,7 +69,7 @@ jobs: - name: Install dependencies run: pnpm install - name: Build - run: pnpm run build --filter llamaindex + run: pnpm run build - name: Use Build For Examples run: pnpm link ../packages/core/ working-directory: ./examples @@ -105,7 +105,7 @@ jobs: - name: Install dependencies run: pnpm install - name: Build llamaindex - run: pnpm run build --filter llamaindex + run: pnpm run build - name: Build ${{ matrix.packages }} run: pnpm run build working-directory: packages/core/e2e/examples/${{ matrix.packages }} @@ -124,7 +124,7 @@ jobs: - name: Install dependencies run: pnpm install - name: Build - run: pnpm run build --filter llamaindex + run: pnpm run build - name: Copy examples run: rsync -rv --exclude=node_modules ./examples ${{ runner.temp }} - name: Pack @llamaindex/env diff --git a/package.json b/package.json index 0309e7324..43eb028b4 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@llamaindex/monorepo", "private": true, "scripts": { - "build": "turbo run build", + "build": "turbo run build --filter=\"!docs\" --filter=\"!*-test\"", "build:release": "turbo run build lint test --filter=\"!docs\" --filter=\"!*-test\"", "dev": "turbo run dev", "format": "prettier --ignore-unknown --cache --check .", diff --git a/packages/autotool/README.md b/packages/autotool/README.md new file mode 100644 index 000000000..04e930891 --- /dev/null +++ b/packages/autotool/README.md @@ -0,0 +1,83 @@ +# @llamaindex/autotool + +> Auto transpile your JS function to LLM Agent compatible + +## Usage + +First, Install the package + +```shell +npm install @llamaindex/autotool +pnpm add @llamaindex/autotool +yarn add @llamaindex/autotool +``` + +Second, Add the plugin/loader to your configuration: + +### Next.js + +```javascript +import { withNext } from "@llamaindex/autotool/next"; + +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default withNext(nextConfig); +``` + +### Node.js + +```shell +node --import @llamaindex/autotool/node ./path/to/your/script.js +``` + +Third, add `"use tool"` on top of your tool file or change to `.tool.ts`. + +```typescript +"use tool"; + +export function getWeather(city: string) { + // ... +} +// ... +``` + +Finally, export a chat handler function to the frontend using `llamaindex` Agent + +```typescript +"use server"; + +// imports ... + +export async function chatWithAI(message: string): Promise<JSX.Element> { + const agent = new OpenAIAgent({ + tools: convertTools("llamaindex"), + }); + const uiStream = createStreamableUI(); + agent + .chat({ + stream: true, + message, + }) + .then(async (responseStream) => { + return responseStream.pipeTo( + new WritableStream({ + start: () => { + uiStream.append("\n"); + }, + write: async (message) => { + uiStream.append(message.response.delta); + }, + close: () => { + uiStream.done(); + }, + }), + ); + }); + return uiStream.value; +} +``` + +## License + +MIT diff --git a/packages/autotool/examples/01_node/package.json b/packages/autotool/examples/01_node/package.json new file mode 100644 index 000000000..08fc33a90 --- /dev/null +++ b/packages/autotool/examples/01_node/package.json @@ -0,0 +1,12 @@ +{ + "name": "@llamaindex/autotool-01-node-example", + "type": "module", + "dependencies": { + "@llamaindex/autotool": "workspace:*", + "llamaindex": "workspace:*", + "openai": "^4.33.0" + }, + "scripts": { + "start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts" + } +} diff --git a/packages/autotool/examples/01_node/src/index.tool.ts b/packages/autotool/examples/01_node/src/index.tool.ts new file mode 100644 index 000000000..2a2feec62 --- /dev/null +++ b/packages/autotool/examples/01_node/src/index.tool.ts @@ -0,0 +1,11 @@ +import { getWeather } from "./utils.js"; + +/** + * Get current location + */ +export function getCurrentLocation() { + console.log("Getting current location"); + return "London"; +} + +export { getWeather }; diff --git a/packages/autotool/examples/01_node/src/index.ts b/packages/autotool/examples/01_node/src/index.ts new file mode 100644 index 000000000..04a310b27 --- /dev/null +++ b/packages/autotool/examples/01_node/src/index.ts @@ -0,0 +1,23 @@ +import { convertTools } from "@llamaindex/autotool"; +import { OpenAI } from "openai"; +import "./index.tool.js"; + +const openai = new OpenAI(); +{ + const response = await openai.chat.completions.create({ + model: "gpt-3.5-turbo", + messages: [ + { + role: "user", + content: "What's my current weather?", + }, + ], + tools: convertTools("openai"), + stream: false, + }); + + const toolCalls = response.choices[0].message.tool_calls ?? []; + for (const toolCall of toolCalls) { + toolCall.function.name; + } +} diff --git a/packages/autotool/examples/01_node/src/utils.ts b/packages/autotool/examples/01_node/src/utils.ts new file mode 100644 index 000000000..3d61412c5 --- /dev/null +++ b/packages/autotool/examples/01_node/src/utils.ts @@ -0,0 +1,8 @@ +/** + * Get the weather for a city + * @param city The city to get the weather for + * @returns The weather for the city, e.g. "Sunny", "Rainy", etc. + */ +export function getWeather(city: string) { + return `The weather in ${city} is sunny!`; +} diff --git a/packages/autotool/examples/01_node/tsconfig.json b/packages/autotool/examples/01_node/tsconfig.json new file mode 100644 index 000000000..924bba251 --- /dev/null +++ b/packages/autotool/examples/01_node/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./lib", + "module": "node16", + "moduleResolution": "node16" + }, + "include": ["./src"] +} diff --git a/packages/autotool/examples/02_nextjs/.env.example b/packages/autotool/examples/02_nextjs/.env.example new file mode 100644 index 000000000..7ac0a0155 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/.env.example @@ -0,0 +1,3 @@ +# Rename this file to `.env.local` to use environment variables locally with `next dev` +# https://nextjs.org/docs/pages/building-your-application/configuring/environment-variables +MY_HOST="example.com" diff --git a/packages/autotool/examples/02_nextjs/.gitignore b/packages/autotool/examples/02_nextjs/.gitignore new file mode 100644 index 000000000..8f322f0d8 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/packages/autotool/examples/02_nextjs/README.md b/packages/autotool/examples/02_nextjs/README.md new file mode 100644 index 000000000..1509ded7c --- /dev/null +++ b/packages/autotool/examples/02_nextjs/README.md @@ -0,0 +1,30 @@ +This is a [LlamaIndex](https://www.llamaindex.ai/) project using [Next.js](https://nextjs.org/) bootstrapped with [`create-llama`](https://github.com/run-llama/LlamaIndexTS/tree/main/packages/create-llama). + +## Getting Started + +First, install the dependencies: + +``` +npm install +``` + +Second, run the development server: + +``` +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. + +## Learn More + +To learn more about LlamaIndex, take a look at the following resources: + +- [LlamaIndex Documentation](https://docs.llamaindex.ai) - learn about LlamaIndex (Python features). +- [LlamaIndexTS Documentation](https://ts.llamaindex.ai) - learn about LlamaIndex (Typescript features). + +You can check out [the LlamaIndexTS GitHub repository](https://github.com/run-llama/LlamaIndexTS) - your feedback and contributions are welcome! diff --git a/packages/autotool/examples/02_nextjs/actions.ts b/packages/autotool/examples/02_nextjs/actions.ts new file mode 100644 index 000000000..a99a81d80 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/actions.ts @@ -0,0 +1,38 @@ +"use server"; +import { OpenAIAgent } from "llamaindex"; +// import your tools on top, that's it +import { runWithStreamableUI } from "@/context"; +import "@/tool"; +import { convertTools } from "@llamaindex/autotool"; +import { createStreamableUI } from "ai/rsc"; +import type { JSX } from "react"; + +export async function chatWithAI(message: string): Promise<JSX.Element> { + const agent = new OpenAIAgent({ + tools: convertTools("llamaindex"), + }); + const uiStream = createStreamableUI(); + runWithStreamableUI(uiStream, () => + agent + .chat({ + stream: true, + message, + }) + .then(async (responseStream) => { + return responseStream.pipeTo( + new WritableStream({ + start: () => { + uiStream.append("\n"); + }, + write: async (message) => { + uiStream.append(message.response.delta); + }, + close: () => { + uiStream.done(); + }, + }), + ); + }), + ).catch(uiStream.error); + return uiStream.value; +} diff --git a/packages/autotool/examples/02_nextjs/app/favicon.ico b/packages/autotool/examples/02_nextjs/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a1eaef62f2dfa895f1bbffc6595bb53d9604963e GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/packages/autotool/examples/02_nextjs/app/globals.css b/packages/autotool/examples/02_nextjs/app/globals.css new file mode 100644 index 000000000..09b85ed2c --- /dev/null +++ b/packages/autotool/examples/02_nextjs/app/globals.css @@ -0,0 +1,94 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 47.4% 11.2%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 47.4% 11.2%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --card: 0 0% 100%; + --card-foreground: 222.2 47.4% 11.2%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 100% 50%; + --destructive-foreground: 210 40% 98%; + + --ring: 215 20.2% 65.1%; + + --radius: 0.5rem; + } + + .dark { + --background: 224 71% 4%; + --foreground: 213 31% 91%; + + --muted: 223 47% 11%; + --muted-foreground: 215.4 16.3% 56.9%; + + --accent: 216 34% 17%; + --accent-foreground: 210 40% 98%; + + --popover: 224 71% 4%; + --popover-foreground: 215 20.2% 65.1%; + + --border: 216 34% 17%; + --input: 216 34% 17%; + + --card: 224 71% 4%; + --card-foreground: 213 31% 91%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 1.2%; + + --secondary: 222.2 47.4% 11.2%; + --secondary-foreground: 210 40% 98%; + + --destructive: 0 63% 31%; + --destructive-foreground: 210 40% 98%; + + --ring: 216 34% 17%; + + --radius: 0.5rem; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + font-feature-settings: + "rlig" 1, + "calt" 1; + } + .background-gradient { + background-color: #fff; + background-image: radial-gradient( + at 21% 11%, + rgba(186, 186, 233, 0.53) 0, + transparent 50% + ), + radial-gradient(at 85% 0, hsla(46, 57%, 78%, 0.52) 0, transparent 50%), + radial-gradient(at 91% 36%, rgba(194, 213, 255, 0.68) 0, transparent 50%), + radial-gradient(at 8% 40%, rgba(251, 218, 239, 0.46) 0, transparent 50%); + } +} diff --git a/packages/autotool/examples/02_nextjs/app/layout.tsx b/packages/autotool/examples/02_nextjs/app/layout.tsx new file mode 100644 index 000000000..ced5247c4 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/app/layout.tsx @@ -0,0 +1,26 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import { Toaster } from "sonner"; +import "./globals.css"; + +const inter = Inter({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Create Llama App", + description: "Generated by create-llama", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <html lang="en"> + <body className={inter.className}> + <Toaster /> + {children} + </body> + </html> + ); +} diff --git a/packages/autotool/examples/02_nextjs/app/page.tsx b/packages/autotool/examples/02_nextjs/app/page.tsx new file mode 100644 index 000000000..eb3abfd82 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/app/page.tsx @@ -0,0 +1,11 @@ +import { ChatSection } from "@/components/chat-section"; + +export const runtime = "edge"; + +export default function Home() { + return ( + <main className="flex min-h-screen flex-col items-center gap-10 p-24 background-gradient"> + <ChatSection /> + </main> + ); +} diff --git a/packages/autotool/examples/02_nextjs/components/chat-section.tsx b/packages/autotool/examples/02_nextjs/components/chat-section.tsx new file mode 100644 index 000000000..dd83ce3c4 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/components/chat-section.tsx @@ -0,0 +1,35 @@ +"use client"; +import { chatWithAI } from "@/actions"; +import { ReactNode, useActionState } from "react"; +import { toast } from "sonner"; + +export function ChatSection() { + const [state, formAction] = useActionState<ReactNode | null, FormData>( + async (state, payload) => { + const input = payload.get("input") as string | null; + if (!input) { + toast.error("Please type a message"); + return null; + } + return chatWithAI(input); + }, + null, + ); + return ( + <form> + <div className="border border-gray-400 p-2 max-w-md">{state}</div> + <input + className="border border-gray-400 p-2" + type="text" + name="input" + placeholder="Type your message here" + /> + <button + className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded" + formAction={formAction} + > + Chat + </button> + </form> + ); +} diff --git a/packages/autotool/examples/02_nextjs/components/location-card.tsx b/packages/autotool/examples/02_nextjs/components/location-card.tsx new file mode 100644 index 000000000..cb7a4b880 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/components/location-card.tsx @@ -0,0 +1,9 @@ +export function LocationCard() { + return ( + <div className="border border-gray-400 p-2 max-w-md"> + <h1>Weather</h1> + <p>San Francisco, CA</p> + <p>Sunny</p> + </div> + ); +} diff --git a/packages/autotool/examples/02_nextjs/components/spinner.tsx b/packages/autotool/examples/02_nextjs/components/spinner.tsx new file mode 100644 index 000000000..0408035ae --- /dev/null +++ b/packages/autotool/examples/02_nextjs/components/spinner.tsx @@ -0,0 +1,23 @@ +export function Spinner() { + return ( + <div role="status"> + <svg + aria-hidden="true" + className="w-8 h-8 text-gray-200 animate-spin dark:text-gray-600 fill-blue-600" + viewBox="0 0 100 101" + fill="none" + xmlns="http://www.w3.org/2000/svg" + > + <path + d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" + fill="currentColor" + /> + <path + d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" + fill="currentFill" + /> + </svg> + <span className="sr-only">Loading...</span> + </div> + ); +} diff --git a/packages/autotool/examples/02_nextjs/context/index.ts b/packages/autotool/examples/02_nextjs/context/index.ts new file mode 100644 index 000000000..63afe9e50 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/context/index.ts @@ -0,0 +1,14 @@ +import type { createStreamableUI } from "ai/rsc"; +import { AsyncLocalStorage } from "node:async_hooks"; + +type StreamableUI = ReturnType<typeof createStreamableUI>; + +const streamUIAsyncLocalStorage = new AsyncLocalStorage<StreamableUI>(); + +export function getCurrentStreamableUI() { + return streamUIAsyncLocalStorage.getStore(); +} + +export function runWithStreamableUI<T>(streamUI: StreamableUI, fn: () => T): T { + return streamUIAsyncLocalStorage.run(streamUI, fn); +} diff --git a/packages/autotool/examples/02_nextjs/next.config.mjs b/packages/autotool/examples/02_nextjs/next.config.mjs new file mode 100644 index 000000000..02a508a86 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/next.config.mjs @@ -0,0 +1,6 @@ +import { withNext } from "@llamaindex/autotool/next"; + +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default withNext(nextConfig); diff --git a/packages/autotool/examples/02_nextjs/package.json b/packages/autotool/examples/02_nextjs/package.json new file mode 100644 index 000000000..249595c11 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/package.json @@ -0,0 +1,36 @@ +{ + "name": "@llamaindex/autotool-02-next-example", + "version": "0.1.0", + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "@llamaindex/autotool": "workspace:*", + "@radix-ui/react-slot": "^1.0.2", + "ai": "^3.1.1", + "class-variance-authority": "^0.7.0", + "dotenv": "^16.3.1", + "llamaindex": "workspace:*", + "lucide-react": "^0.378.0", + "next": "^14.3.0-canary.45", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-markdown": "^8.0.7", + "react-syntax-highlighter": "^15.5.0", + "sonner": "^1.4.41", + "tailwind-merge": "^2.1.0" + }, + "devDependencies": { + "@types/node": "^20.10.3", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.0", + "@types/react-syntax-highlighter": "^15.5.11", + "autoprefixer": "^10.4.16", + "cross-env": "^7.0.3", + "postcss": "^8.4.32", + "tailwindcss": "^3.3.6", + "typescript": "^5.4.5" + } +} diff --git a/packages/autotool/examples/02_nextjs/postcss.config.js b/packages/autotool/examples/02_nextjs/postcss.config.js new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/packages/autotool/examples/02_nextjs/public/llama.png b/packages/autotool/examples/02_nextjs/public/llama.png new file mode 100644 index 0000000000000000000000000000000000000000..d4efba3b816bf765439c6d01b322b02684e946c3 GIT binary patch literal 36985 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 Z1<z_U4-`xNVPIfj@O1TaS?83{1OS^n$>{(9 literal 0 HcmV?d00001 diff --git a/packages/autotool/examples/02_nextjs/tailwind.config.ts b/packages/autotool/examples/02_nextjs/tailwind.config.ts new file mode 100644 index 000000000..aa5580aff --- /dev/null +++ b/packages/autotool/examples/02_nextjs/tailwind.config.ts @@ -0,0 +1,78 @@ +import type { Config } from "tailwindcss"; +import { fontFamily } from "tailwindcss/defaultTheme"; + +const config: Config = { + darkMode: ["class"], + content: ["app/**/*.{ts,tsx}", "components/**/*.{ts,tsx}"], + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive) / <alpha-value>)", + foreground: "hsl(var(--destructive-foreground) / <alpha-value>)", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + xl: `calc(var(--radius) + 4px)`, + lg: `var(--radius)`, + md: `calc(var(--radius) - 2px)`, + sm: "calc(var(--radius) - 4px)", + }, + fontFamily: { + sans: ["var(--font-sans)", ...fontFamily.sans], + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [], +}; +export default config; diff --git a/packages/autotool/examples/02_nextjs/tool/index.tsx b/packages/autotool/examples/02_nextjs/tool/index.tsx new file mode 100644 index 000000000..8ebfe4e34 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/tool/index.tsx @@ -0,0 +1,27 @@ +"use tool"; +import { getCurrentStreamableUI } from "@/context"; + +export async function getMyUserID() { + const ui = getCurrentStreamableUI()!; + ui.update("Getting user ID..."); + await new Promise((resolve) => setTimeout(resolve, 2000)); + return "12345"; +} + +export async function showUserInfo(userId: string) { + const ui = getCurrentStreamableUI()!; + ui.update("Getting user info..."); + await new Promise((resolve) => setTimeout(resolve, 2000)); + ui.update( + <div> + User ID: {userId} + <br /> + Name: John Doe + </div>, + ); + return `User ID: ${userId}\nName: John Doe\nEmail: alex@gmail.com\nPhone: 123-456-7890\nAddress: 123 Main St\nCity: San Francisco\nState: CA\nZip: 94105\nCountry: USA\n`; +} + +export function getWeather(address: string) { + return `The weather in ${address} is sunny!`; +} diff --git a/packages/autotool/examples/02_nextjs/tsconfig.json b/packages/autotool/examples/02_nextjs/tsconfig.json new file mode 100644 index 000000000..40c136b82 --- /dev/null +++ b/packages/autotool/examples/02_nextjs/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + }, + "forceConsistentCasingInFileNames": true + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/autotool/package.json b/packages/autotool/package.json new file mode 100644 index 000000000..06f7469c7 --- /dev/null +++ b/packages/autotool/package.json @@ -0,0 +1,78 @@ +{ + "name": "@llamaindex/autotool", + "type": "module", + "version": "0.0.1", + "description": "", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.cjs", + "default": "./dist/index.js" + }, + "./next": { + "types": "./dist/next.d.ts", + "import": "./dist/next.js", + "require": "./dist/next.cjs", + "default": "./dist/next.js" + }, + "./webpack": { + "types": "./dist/webpack.d.ts", + "import": "./dist/webpack.js", + "require": "./dist/webpack.cjs", + "default": "./dist/webpack.js" + }, + "./vite": { + "types": "./dist/vite.d.ts", + "import": "./dist/vite.js", + "require": "./dist/vite.cjs", + "default": "./dist/vite.js" + }, + "./loader": { + "types": "./dist/loader.d.ts", + "import": "./dist/loader.js", + "require": "./dist/loader.cjs", + "default": "./dist/loader.js" + }, + "./node": "./dist/node.js" + }, + "scripts": { + "build": "bunchee", + "dev": "bunchee --watch" + }, + "dependencies": { + "@swc/core": "^1.4.16", + "jotai": "^2.8.0", + "typedoc": "^0.25.13", + "unplugin": "^1.10.1" + }, + "peerDependencies": { + "llamaindex": "^0.3.0", + "openai": "^4", + "typescript": "^4" + }, + "peerDependenciesMeta": { + "openai": { + "optional": true + }, + "llamaindex": { + "optional": true + }, + "typescript": { + "optional": true + } + }, + "devDependencies": { + "@swc/types": "^0.1.6", + "@types/json-schema": "^7.0.15", + "@types/node": "^20.12.10", + "bunchee": "^5.1.5", + "llamaindex": "workspace:*", + "next": "14.2.3", + "rollup": "^4.17.2", + "tsx": "^4.7.2", + "typescript": "^5.4.5", + "vitest": "^1.5.0", + "webpack": "^5.91.0" + } +} diff --git a/packages/autotool/src/compiler.ts b/packages/autotool/src/compiler.ts new file mode 100644 index 000000000..701d5f05b --- /dev/null +++ b/packages/autotool/src/compiler.ts @@ -0,0 +1,103 @@ +import type { + JSONSchema7, + JSONSchema7Definition, + JSONSchema7TypeName, +} from "json-schema"; +import type { ToolMetadata } from "llamaindex"; +import type { SourceMapInput } from "rollup"; +import td from "typedoc"; +import type { SourceMapCompact } from "unplugin"; +import type { InfoString } from "./internal"; + +export const isToolFile = (url: string) => /tool\.[jt]sx?$/.test(url); +export const isJSorTS = (url: string) => /\.m?[jt]sx?$/.test(url); + +async function parseRoot(entryPoint: string) { + const app = await td.Application.bootstrapWithPlugins( + { + entryPoints: [entryPoint], + }, + [ + new td.TypeDocReader(), + new td.PackageJsonReader(), + new td.TSConfigReader(), + ], + ); + const project = await app.convert(); + + if (project) { + return app.serializer.projectToObject(project, process.cwd()); + } + throw new Error("Failed to parse root"); +} + +export async function transformAutoTool( + code: string, + url: string, +): Promise<{ + code: string; + map?: SourceMapInput | SourceMapCompact | null; +}> { + const json = await parseRoot(url); + const children = json.children; + if (Array.isArray(children)) { + const schema = { + type: "object", + properties: {} as { + [key: string]: JSONSchema7Definition; + }, + additionalItems: false, + required: [] as string[], + } satisfies JSONSchema7; + const info: InfoString = { + originalFunction: undefined, + parameterMapping: {}, + }; + children.forEach((child) => { + // replace starting and ending quotes, to make it a function in the runtime + info.originalFunction = child.name; + const metadata: ToolMetadata = { + name: child.name, + description: "", + parameters: schema, + }; + child.signatures?.forEach((signature) => { + const description = signature.comment?.summary + .map((x) => x.text) + .join("\n"); + if (description) { + metadata.description += description; + } + signature.parameters?.map((parameter, idx) => { + if (parameter.type?.type === "intrinsic") { + // parameter.type.name + schema.properties[parameter.name as string] = { + type: parameter.type.name as JSONSchema7TypeName, + description: parameter.comment?.summary + .map((x) => x.text) + .join("\n"), + } as JSONSchema7Definition; + schema.required.push(parameter.name as string); + info.parameterMapping[parameter.name as string] = idx; + } + }); + }); + const infoJSON = JSON.stringify(info) + // remove quotes from `originalFunction` value + .replace(/"originalFunction":"(.*?)"/g, '"originalFunction":$1'); + code = + code + `\ninjectMetadata(${JSON.stringify(metadata)}, ${infoJSON});`; + }); + } + if ( + !/^import\s+{\sinjectMetadata\s}\s+from\s+['"]@llamaindex\/tool['"]/.test( + code, + ) + ) { + code = `import {injectMetadata} from '@llamaindex/autotool';\n${code}`; + } + return { + code, + map: null, + }; +} diff --git a/packages/autotool/src/index.ts b/packages/autotool/src/index.ts new file mode 100644 index 000000000..19f546bb6 --- /dev/null +++ b/packages/autotool/src/index.ts @@ -0,0 +1,82 @@ +import { atom } from "jotai/vanilla"; +import type { BaseToolWithCall, ToolMetadata } from "llamaindex"; +import type { ChatCompletionTool } from "openai/resources/chat/completions"; +import { store, toolMetadataAtom, toolsAtom, type Info } from "./internal"; + +export type { Info }; + +/** + * @internal This function is used by the compiler to inject metadata into the source code. + */ +export function injectMetadata(metadata: ToolMetadata, info: Info) { + store.get(toolMetadataAtom).push([metadata, info]); +} + +const openaiToolsAtom = atom<ChatCompletionTool[]>((get) => { + const metadata = get(toolMetadataAtom); + return metadata.map(([metadata]) => ({ + type: "function", + function: { + parameters: metadata.parameters, + name: metadata.name, + description: metadata.description, + }, + })); +}); + +const llamaindexToolsAtom = atom<BaseToolWithCall[]>((get) => { + const metadata = get(toolMetadataAtom); + const fns = get(toolsAtom); + return metadata.map(([metadata, info]) => ({ + call: (input: Record<string, unknown>) => { + const args = Object.entries(info.parameterMapping).reduce( + (arr, [name, idx]) => { + arr[idx] = input[name]; + return arr; + }, + [] as unknown[], + ); + const fn = fns[metadata.name] ?? info.originalFunction; + if (!fn) { + throw new Error(`Cannot find function to call: ${metadata.name}`); + } + return fn(...args); + }, + metadata, + })); +}); + +export function convertTools(format: "openai"): ChatCompletionTool[]; +export function convertTools(format: "llamaindex"): BaseToolWithCall[]; +export function convertTools( + format: string, +): ChatCompletionTool[] | BaseToolWithCall[] { + switch (format) { + case "openai": { + return store.get(openaiToolsAtom); + } + case "llamaindex": { + return store.get(llamaindexToolsAtom); + } + } + throw new Error(`Unknown format: ${format}`); +} + +/** + * Call a tool by name with the given input. + */ +export function callTool( + name: string, + input: string | Record<string, unknown>, +): unknown | Promise<unknown> { + const tools = store.get(llamaindexToolsAtom); + const targetTool = tools.find((tool) => tool.metadata.name === name); + if (!targetTool) { + throw new Error(`Cannot find tool: ${name}`); + } + return targetTool.call( + // for OpenAI, input is a string + // for ClaudeAI, input is an object + typeof input === "string" ? JSON.parse(input) : input, + ); +} diff --git a/packages/autotool/src/internal/index.ts b/packages/autotool/src/internal/index.ts new file mode 100644 index 000000000..b05b6527a --- /dev/null +++ b/packages/autotool/src/internal/index.ts @@ -0,0 +1,26 @@ +import { atom, createStore } from "jotai/vanilla"; +import type { ToolMetadata } from "llamaindex"; + +export type Info = { + originalFunction?: (...args: any[]) => any; + /** + * In current LLM, it doesn't support non-object parameter, so we mock arguments as object, and use this mapping to convert it back. + */ + parameterMapping: Record<string, number>; +}; + +/** + * This is used in parser side to store the original function and parameter mapping. + * + * In the runtime, originalFunction is a JS function. + * + * @internal + */ +export type InfoString = { + originalFunction?: string; + parameterMapping: Record<string, number>; +}; + +export const store = createStore(); +export const toolMetadataAtom = atom<[ToolMetadata, Info][]>([]); +export const toolsAtom = atom<Record<string, (...args: any[]) => any>>({}); diff --git a/packages/autotool/src/loader.ts b/packages/autotool/src/loader.ts new file mode 100644 index 000000000..8b849a674 --- /dev/null +++ b/packages/autotool/src/loader.ts @@ -0,0 +1,38 @@ +/** + * This is a node module loader hook that injects metadata into the source code. + * + * @module + */ +import { parse } from "@swc/core"; +import type { ExpressionStatement } from "@swc/types"; +import type { LoadHook } from "node:module"; +import { fileURLToPath } from "node:url"; +import { isJSorTS, isToolFile, transformAutoTool } from "./compiler"; + +export const load: LoadHook = async (url, context, nextLoad) => { + const output = await nextLoad(url, context); + if (typeof output.source === "string" && isJSorTS(url)) { + const isTool = isToolFile(url); + const hasToolDirective = (await parse(output.source)).body + .filter( + (node): node is ExpressionStatement => + node.type === "ExpressionStatement", + ) + .some( + (node) => + node.expression.type === "StringLiteral" && + node.expression.value === "use tool", + ); + if (isTool || hasToolDirective) { + const { code } = await transformAutoTool( + output.source, + fileURLToPath(url), + ); + return { + ...output, + source: code, + }; + } + } + return output; +}; diff --git a/packages/autotool/src/next.ts b/packages/autotool/src/next.ts new file mode 100644 index 000000000..168f7f31d --- /dev/null +++ b/packages/autotool/src/next.ts @@ -0,0 +1,13 @@ +import type { NextConfig } from "next"; +import webpackPlugin from "./webpack"; + +export function withNext(config: NextConfig) { + return { + ...config, + webpack: (webpackConfig: any, context: any) => { + webpackConfig = config.webpack?.(webpackConfig, context) ?? webpackConfig; + webpackConfig.plugins.push(webpackPlugin()); + return webpackConfig; + }, + }; +} diff --git a/packages/autotool/src/node.ts b/packages/autotool/src/node.ts new file mode 100644 index 000000000..81a76ce58 --- /dev/null +++ b/packages/autotool/src/node.ts @@ -0,0 +1,16 @@ +/** + * @example + * ```shell + * node --import @llamaindex/autotool/node ./dist/index.js + * ``` + * + * @example + * ```shell + * node --import tsx --import @llamaindex/autotool/node ./src/index.ts + * ``` + * + * @module + */ +import { register } from "node:module"; + +register("./loader.js", import.meta.url); diff --git a/packages/autotool/src/plugin.ts b/packages/autotool/src/plugin.ts new file mode 100644 index 000000000..3c61a302c --- /dev/null +++ b/packages/autotool/src/plugin.ts @@ -0,0 +1,35 @@ +import { parse } from "@swc/core"; +import type { ExpressionStatement } from "@swc/types"; +import { createUnplugin, type UnpluginFactory } from "unplugin"; +import { isJSorTS, isToolFile, transformAutoTool } from "./compiler"; + +export interface Options {} + +const name = "llama-index-tool"; + +export const unpluginFactory: UnpluginFactory<Options | undefined> = () => ({ + name, + async transform(code, id) { + if (!isJSorTS(id)) { + return code; + } + const isTool = isToolFile(id); + const hasToolDirective = (await parse(code)).body + .filter( + (node): node is ExpressionStatement => + node.type === "ExpressionStatement", + ) + .some( + (node) => + node.expression.type === "StringLiteral" && + node.expression.value === "use tool", + ); + if (isTool || hasToolDirective) { + return transformAutoTool(code, id); + } + }, +}); + +export const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory); + +export default unplugin; diff --git a/packages/autotool/src/vite.ts b/packages/autotool/src/vite.ts new file mode 100644 index 000000000..6309e7ab1 --- /dev/null +++ b/packages/autotool/src/vite.ts @@ -0,0 +1,6 @@ +import { createVitePlugin } from "unplugin"; +import { unpluginFactory } from "./plugin"; + +const vitePlugin = createVitePlugin(unpluginFactory); + +export default vitePlugin; diff --git a/packages/autotool/src/webpack.ts b/packages/autotool/src/webpack.ts new file mode 100644 index 000000000..8ac3109bb --- /dev/null +++ b/packages/autotool/src/webpack.ts @@ -0,0 +1,6 @@ +import { createWebpackPlugin } from "unplugin"; +import { unpluginFactory } from "./plugin"; + +const webpackPlugin = createWebpackPlugin(unpluginFactory); + +export default webpackPlugin; diff --git a/packages/autotool/tsconfig.json b/packages/autotool/tsconfig.json new file mode 100644 index 000000000..a9a0f7f98 --- /dev/null +++ b/packages/autotool/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "bundler", + "outDir": "./lib", + "types": ["node"] + }, + "include": ["./src"], + "references": [ + { + "path": "../core/tsconfig.json" + }, + { + "path": "../env/tsconfig.json" + } + ] +} diff --git a/packages/core/e2e/examples/nextjs-edge-runtime/package.json b/packages/core/e2e/examples/nextjs-edge-runtime/package.json index cfccd8d97..3b670867a 100644 --- a/packages/core/e2e/examples/nextjs-edge-runtime/package.json +++ b/packages/core/e2e/examples/nextjs-edge-runtime/package.json @@ -8,7 +8,7 @@ "start": "next start" }, "dependencies": { - "@llamaindex/edge": "workspace:*", + "llamaindex": "workspace:*", "next": "14.1.3", "react": "^18", "react-dom": "^18" diff --git a/packages/edge/.gitignore b/packages/edge/.gitignore deleted file mode 100644 index bcc805184..000000000 --- a/packages/edge/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.turbo -README.md -LICENSE -CHANGELOG.md diff --git a/packages/edge/package.json b/packages/edge/package.json deleted file mode 100644 index 6769a7a33..000000000 --- a/packages/edge/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "@llamaindex/edge", - "version": "0.3.8", - "license": "MIT", - "type": "module", - "dependencies": { - "@anthropic-ai/sdk": "^0.20.6", - "@aws-crypto/sha256-js": "^5.2.0", - "@datastax/astra-db-ts": "^1.0.1", - "@google/generative-ai": "^0.8.0", - "@grpc/grpc-js": "^1.10.6", - "@huggingface/inference": "^2.6.7", - "@llamaindex/cloud": "0.0.5", - "@llamaindex/env": "workspace:*", - "@mistralai/mistralai": "^0.1.3", - "@pinecone-database/pinecone": "^2.2.0", - "@qdrant/js-client-rest": "^1.8.2", - "@types/lodash": "^4.17.0", - "@types/papaparse": "^5.3.14", - "@types/pg": "^8.11.5", - "@xenova/transformers": "^2.17.1", - "@zilliz/milvus2-sdk-node": "^2.4.1", - "ajv": "^8.12.0", - "assemblyai": "^4.4.1", - "chromadb": "~1.7.3", - "cohere-ai": "^7.9.5", - "js-tiktoken": "^1.0.11", - "lodash": "^4.17.21", - "magic-bytes.js": "^1.10.0", - "mammoth": "^1.7.1", - "md-utils-ts": "^2.0.0", - "mongodb": "^6.5.0", - "notion-md-crawler": "^1.0.0", - "openai": "^4.38.0", - "papaparse": "^5.4.1", - "pathe": "^1.1.2", - "pdf2json": "^3.0.5", - "pg": "^8.11.5", - "pgvector": "^0.1.8", - "portkey-ai": "^0.1.16", - "rake-modified": "^1.0.8", - "string-strip-html": "^13.4.8", - "wikipedia": "^2.1.2", - "wink-nlp": "^1.14.3" - }, - "engines": { - "node": ">=18.0.0" - }, - "types": "./dist/type/index.edge.d.ts", - "main": "./dist/index.edge.js", - "exports": { - "./readers/SimpleDirectoryReader": { - "import": { - "types": "./dist/type/readers/SimpleDirectoryReader.edge.d.ts", - "default": "./dist/readers/SimpleDirectoryReader.edge.js" - } - }, - ".": { - "import": { - "types": "./dist/type/index.edge.d.ts", - "default": "./dist/index.edge.js" - } - }, - "./*": { - "import": { - "types": "./dist/type/*.d.ts", - "default": "./dist/*.js" - } - } - }, - "files": [ - "dist" - ], - "repository": { - "type": "git", - "url": "https://github.com/run-llama/LlamaIndexTS.git", - "directory": "packages/edge" - }, - "scripts": { - "copy": "cp -r ../../README.md ../../LICENSE ../core/CHANGELOG.md .", - "update:deps": "node scripts/update-deps.js", - "build:core": "pnpm --filter llamaindex build && cp -r ../core/dist . && rm -rf dist/cjs", - "build": "pnpm run update:deps && pnpm run build:core && pnpm copy" - }, - "devDependencies": { - "@notionhq/client": "^2.2.15", - "@swc/cli": "^0.3.12", - "@swc/core": "^1.4.16", - "concurrently": "^8.2.2", - "glob": "^10.3.12", - "madge": "^7.0.0", - "typescript": "^5.4.5" - }, - "peerDependencies": { - "@notionhq/client": "^2.2.15" - } -} diff --git a/packages/edge/scripts/update-deps.js b/packages/edge/scripts/update-deps.js deleted file mode 100644 index 49d87278a..000000000 --- a/packages/edge/scripts/update-deps.js +++ /dev/null @@ -1,26 +0,0 @@ -// Copies the dependencies from the core package to the edge package. Run with each build to ensure that they are the same - -import { execSync } from "node:child_process"; -import fs from "node:fs"; -import path from "node:path"; - -const corePackagePath = path.join(process.cwd(), "..", "core", "package.json"); -const edgePackagePath = path.join(process.cwd(), "package.json"); - -const edgePackage = readJson(edgePackagePath); -const corePackage = readJson(corePackagePath); -edgePackage.dependencies = corePackage.dependencies; -edgePackage.devDependencies = corePackage.devDependencies; -edgePackage.peerDependencies = corePackage.peerDependencies; -edgePackage.version = corePackage.version; -writeJson(edgePackagePath, edgePackage); -execSync("pnpm install --lockfile-only", { stdio: "inherit" }); - -function readJson(filePath) { - const content = fs.readFileSync(filePath, "utf8"); - return JSON.parse(content); -} - -function writeJson(filePath, json) { - fs.writeFileSync(filePath, JSON.stringify(json, null, 2) + "\n"); -} diff --git a/packages/env/package.json b/packages/env/package.json index fe3769248..908d63bd4 100644 --- a/packages/env/package.json +++ b/packages/env/package.json @@ -76,7 +76,7 @@ "devDependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@swc/cli": "^0.3.9", - "@swc/core": "^1.4.2", + "@swc/core": "^1.4.16", "concurrently": "^8.2.2", "pathe": "^1.1.2", "readable-stream": "^4.5.2" diff --git a/packages/experimental/package.json b/packages/experimental/package.json index f7c072ad6..13cd1d3e2 100644 --- a/packages/experimental/package.json +++ b/packages/experimental/package.json @@ -56,7 +56,7 @@ "devDependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@swc/cli": "^0.3.9", - "@swc/core": "^1.4.2", + "@swc/core": "^1.4.16", "@types/jsonpath": "^0.2.4", "concurrently": "^8.2.2", "pathe": "^1.1.2" diff --git a/packages/wasm-tools/package.json b/packages/wasm-tools/package.json index fb427794a..1dc487c28 100644 --- a/packages/wasm-tools/package.json +++ b/packages/wasm-tools/package.json @@ -10,7 +10,7 @@ "devDependencies": { "assemblyscript": "^0.19.9", "@swc/cli": "^0.3.9", - "@swc/core": "^1.4.2", + "@swc/core": "^1.4.16", "typescript": "^5.4.3" }, "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 58bc36220..b0b1f3c76 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -139,7 +139,7 @@ importers: version: 2.4.1 chromadb: specifier: ^1.8.1 - version: 1.8.1(@google/generative-ai@0.8.0)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.38.1(encoding@0.1.13)) + version: 1.8.1(@google/generative-ai@0.8.0)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.42.0(encoding@0.1.13)) commander: specifier: ^11.1.0 version: 11.1.0 @@ -164,7 +164,7 @@ importers: version: 20.12.7 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5) tsx: specifier: ^4.7.2 version: 4.7.2 @@ -188,6 +188,143 @@ importers: specifier: ^5.4.5 version: 5.4.5 + packages/autotool: + dependencies: + '@swc/core': + specifier: ^1.4.16 + version: 1.5.3(@swc/helpers@0.5.11) + jotai: + specifier: ^2.8.0 + version: 2.8.0(@types/react@18.3.1)(react@19.0.0-canary-e3ebcd54b-20240405) + openai: + specifier: ^4 + version: 4.42.0(encoding@0.1.13) + typedoc: + specifier: ^0.25.13 + version: 0.25.13(typescript@5.4.5) + unplugin: + specifier: ^1.10.1 + version: 1.10.1 + devDependencies: + '@swc/types': + specifier: ^0.1.6 + version: 0.1.6 + '@types/json-schema': + specifier: ^7.0.15 + version: 7.0.15 + '@types/node': + specifier: ^20.12.10 + version: 20.12.10 + bunchee: + specifier: ^5.1.5 + version: 5.1.5(typescript@5.4.5) + llamaindex: + specifier: workspace:* + version: link:../core + next: + specifier: 14.2.3 + version: 14.2.3(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405) + rollup: + specifier: ^4.17.2 + version: 4.17.2 + tsx: + specifier: ^4.7.2 + version: 4.7.2 + typescript: + specifier: ^5.4.5 + version: 5.4.5 + vitest: + specifier: ^1.5.0 + version: 1.6.0(@types/node@20.12.10)(terser@5.30.3) + webpack: + specifier: ^5.91.0 + version: 5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11)) + + packages/autotool/examples/01_node: + dependencies: + '@llamaindex/autotool': + specifier: workspace:* + version: link:../.. + llamaindex: + specifier: workspace:* + version: link:../../../core + openai: + specifier: ^4.33.0 + version: 4.42.0(encoding@0.1.13) + + packages/autotool/examples/02_nextjs: + dependencies: + '@llamaindex/autotool': + specifier: workspace:* + version: link:../.. + '@radix-ui/react-slot': + specifier: ^1.0.2 + version: 1.0.2(@types/react@18.3.1)(react@18.3.1) + ai: + specifier: ^3.1.1 + version: 3.1.1(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.15)(vue@3.4.26(typescript@5.4.5))(zod@3.23.5) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + dotenv: + specifier: ^16.3.1 + version: 16.4.5 + llamaindex: + specifier: workspace:* + version: link:../../../core + lucide-react: + specifier: ^0.378.0 + version: 0.378.0(react@18.3.1) + next: + specifier: ^14.3.0-canary.45 + version: 14.3.0-canary.45(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-markdown: + specifier: ^8.0.7 + version: 8.0.7(@types/react@18.3.1)(react@18.3.1) + react-syntax-highlighter: + specifier: ^15.5.0 + version: 15.5.0(react@18.3.1) + sonner: + specifier: ^1.4.41 + version: 1.4.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: + specifier: ^2.1.0 + version: 2.3.0 + devDependencies: + '@types/node': + specifier: ^20.10.3 + version: 20.12.10 + '@types/react': + specifier: ^18.3.1 + version: 18.3.1 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@types/react-syntax-highlighter': + specifier: ^15.5.11 + version: 15.5.13 + autoprefixer: + specifier: ^10.4.16 + version: 10.4.19(postcss@8.4.38) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + postcss: + specifier: ^8.4.32 + version: 8.4.38 + tailwindcss: + specifier: ^3.3.6 + version: 3.4.3(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.5)) + typescript: + specifier: ^5.4.5 + version: 5.4.5 + packages/core: dependencies: '@anthropic-ai/sdk': @@ -310,10 +447,10 @@ importers: version: 2.2.15(encoding@0.1.13) '@swc/cli': specifier: ^0.3.12 - version: 0.3.12(@swc/core@1.4.16(@swc/helpers@0.5.5))(chokidar@3.6.0) + version: 0.3.12(@swc/core@1.4.16(@swc/helpers@0.5.11))(chokidar@3.6.0) '@swc/core': specifier: ^1.4.16 - version: 1.4.16(@swc/helpers@0.5.5) + version: 1.4.16(@swc/helpers@0.5.11) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -353,7 +490,7 @@ importers: devDependencies: '@cloudflare/vitest-pool-workers': specifier: ^0.2.3 - version: 0.2.5(@cloudflare/workers-types@4.20240423.0)(@vitest/runner@1.3.1)(@vitest/snapshot@1.3.1)(vitest@1.3.0(@types/node@20.12.7)(terser@5.30.3)) + version: 0.2.5(@cloudflare/workers-types@4.20240423.0)(@vitest/runner@1.6.0)(@vitest/snapshot@1.6.0)(vitest@1.3.0(@types/node@20.12.10)(terser@5.30.3)) '@cloudflare/workers-types': specifier: ^4.20240423.0 version: 4.20240423.0 @@ -362,7 +499,7 @@ importers: version: 5.4.5 vitest: specifier: 1.3.0 - version: 1.3.0(@types/node@20.12.7)(terser@5.30.3) + version: 1.3.0(@types/node@20.12.10)(terser@5.30.3) wrangler: specifier: ^3.52.0 version: 3.53.0(@cloudflare/workers-types@4.20240423.0) @@ -405,16 +542,16 @@ importers: version: 8.4.38 tailwindcss: specifier: ^3.4.1 - version: 3.4.3(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5)) + version: 3.4.3(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5)) typescript: specifier: ^5 version: 5.4.5 packages/core/e2e/examples/nextjs-edge-runtime: dependencies: - '@llamaindex/edge': + llamaindex: specifier: workspace:* - version: link:../../../../edge + version: link:../../.. next: specifier: 14.1.3 version: 14.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -451,10 +588,10 @@ importers: version: 19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405) react-server-dom-webpack: specifier: 19.0.0-canary-e3ebcd54b-20240405 - version: 19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))) + version: 19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))) waku: specifier: 0.20.1 - version: 0.20.1(@swc/helpers@0.5.5)(@types/node@20.12.7)(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react-server-dom-webpack@19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))))(react@19.0.0-canary-e3ebcd54b-20240405)(terser@5.30.3) + version: 0.20.1(@swc/helpers@0.5.11)(@types/node@20.12.10)(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react-server-dom-webpack@19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))))(react@19.0.0-canary-e3ebcd54b-20240405)(terser@5.30.3) devDependencies: '@types/react': specifier: 18.2.74 @@ -467,7 +604,7 @@ importers: version: 10.4.19(postcss@8.4.38) tailwindcss: specifier: 3.4.3 - version: 3.4.3(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.4)) + version: 3.4.3(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.4)) typescript: specifier: 5.4.4 version: 5.4.4 @@ -479,146 +616,7 @@ importers: version: link:.. vitest: specifier: ^1.3.1 - version: 1.3.1(@types/node@20.12.7)(terser@5.30.3) - - packages/edge: - dependencies: - '@anthropic-ai/sdk': - specifier: ^0.20.6 - version: 0.20.6(encoding@0.1.13) - '@aws-crypto/sha256-js': - specifier: ^5.2.0 - version: 5.2.0 - '@datastax/astra-db-ts': - specifier: ^1.0.1 - version: 1.0.1 - '@google/generative-ai': - specifier: ^0.8.0 - version: 0.8.0 - '@grpc/grpc-js': - specifier: ^1.10.6 - version: 1.10.6 - '@huggingface/inference': - specifier: ^2.6.7 - version: 2.6.7 - '@llamaindex/cloud': - specifier: 0.0.5 - version: 0.0.5(node-fetch@2.7.0(encoding@0.1.13)) - '@llamaindex/env': - specifier: workspace:* - version: link:../env - '@mistralai/mistralai': - specifier: ^0.1.3 - version: 0.1.3(encoding@0.1.13) - '@pinecone-database/pinecone': - specifier: ^2.2.0 - version: 2.2.0 - '@qdrant/js-client-rest': - specifier: ^1.8.2 - version: 1.8.2(typescript@5.4.5) - '@types/lodash': - specifier: ^4.17.0 - version: 4.17.0 - '@types/papaparse': - specifier: ^5.3.14 - version: 5.3.14 - '@types/pg': - specifier: ^8.11.5 - version: 8.11.5 - '@xenova/transformers': - specifier: ^2.17.1 - version: 2.17.1 - '@zilliz/milvus2-sdk-node': - specifier: ^2.4.1 - version: 2.4.1 - ajv: - specifier: ^8.12.0 - version: 8.12.0 - assemblyai: - specifier: ^4.4.1 - version: 4.4.1 - chromadb: - specifier: ~1.7.3 - version: 1.7.3(@google/generative-ai@0.8.0)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.38.1(encoding@0.1.13)) - cohere-ai: - specifier: ^7.9.5 - version: 7.9.5(encoding@0.1.13) - js-tiktoken: - specifier: ^1.0.11 - version: 1.0.11 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - magic-bytes.js: - specifier: ^1.10.0 - version: 1.10.0 - mammoth: - specifier: ^1.7.1 - version: 1.7.1 - md-utils-ts: - specifier: ^2.0.0 - version: 2.0.0 - mongodb: - specifier: ^6.5.0 - version: 6.5.0 - notion-md-crawler: - specifier: ^1.0.0 - version: 1.0.0(encoding@0.1.13) - openai: - specifier: ^4.38.0 - version: 4.38.1(encoding@0.1.13) - papaparse: - specifier: ^5.4.1 - version: 5.4.1 - pathe: - specifier: ^1.1.2 - version: 1.1.2 - pdf2json: - specifier: ^3.0.5 - version: 3.0.5 - pg: - specifier: ^8.11.5 - version: 8.11.5 - pgvector: - specifier: ^0.1.8 - version: 0.1.8 - portkey-ai: - specifier: ^0.1.16 - version: 0.1.16 - rake-modified: - specifier: ^1.0.8 - version: 1.0.8 - string-strip-html: - specifier: ^13.4.8 - version: 13.4.8 - wikipedia: - specifier: ^2.1.2 - version: 2.1.2 - wink-nlp: - specifier: ^1.14.3 - version: 1.14.3 - devDependencies: - '@notionhq/client': - specifier: ^2.2.15 - version: 2.2.15(encoding@0.1.13) - '@swc/cli': - specifier: ^0.3.12 - version: 0.3.12(@swc/core@1.4.16(@swc/helpers@0.5.5))(chokidar@3.6.0) - '@swc/core': - specifier: ^1.4.16 - version: 1.4.16(@swc/helpers@0.5.5) - concurrently: - specifier: ^8.2.2 - version: 8.2.2 - glob: - specifier: ^10.3.12 - version: 10.3.12 - madge: - specifier: ^7.0.0 - version: 7.0.0(typescript@5.4.5) - typescript: - specifier: ^5.4.5 - version: 5.4.5 + version: 1.3.1(@types/node@20.12.10)(terser@5.30.3) packages/env: dependencies: @@ -634,10 +632,10 @@ importers: version: 5.2.0 '@swc/cli': specifier: ^0.3.9 - version: 0.3.9(@swc/core@1.4.2(@swc/helpers@0.5.5))(chokidar@3.6.0) + version: 0.3.9(@swc/core@1.5.3(@swc/helpers@0.5.11))(chokidar@3.6.0) '@swc/core': - specifier: ^1.4.2 - version: 1.4.2(@swc/helpers@0.5.5) + specifier: ^1.4.16 + version: 1.5.3(@swc/helpers@0.5.11) concurrently: specifier: ^8.2.2 version: 8.2.2 @@ -671,10 +669,10 @@ importers: version: 5.2.0 '@swc/cli': specifier: ^0.3.9 - version: 0.3.9(@swc/core@1.4.2(@swc/helpers@0.5.5))(chokidar@3.6.0) + version: 0.3.9(@swc/core@1.5.3(@swc/helpers@0.5.11))(chokidar@3.6.0) '@swc/core': - specifier: ^1.4.2 - version: 1.4.2(@swc/helpers@0.5.5) + specifier: ^1.4.16 + version: 1.5.3(@swc/helpers@0.5.11) '@types/jsonpath': specifier: ^0.2.4 version: 0.2.4 @@ -696,10 +694,10 @@ importers: devDependencies: '@swc/cli': specifier: ^0.3.9 - version: 0.3.9(@swc/core@1.4.2(@swc/helpers@0.5.5))(chokidar@3.6.0) + version: 0.3.9(@swc/core@1.5.3(@swc/helpers@0.5.11))(chokidar@3.6.0) '@swc/core': - specifier: ^1.4.2 - version: 1.4.2(@swc/helpers@0.5.5) + specifier: ^1.4.16 + version: 1.5.3(@swc/helpers@0.5.11) assemblyscript: specifier: ^0.19.9 version: 0.19.23 @@ -1816,6 +1814,9 @@ packages: '@docusaurus/types': optional: true + '@emnapi/runtime@1.1.1': + resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} + '@esbuild-plugins/node-globals-polyfill@0.2.3': resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} peerDependencies: @@ -2260,6 +2261,9 @@ packages: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} + '@fastify/deepmerge@1.3.0': + resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + '@google/generative-ai@0.8.0': resolution: {integrity: sha512-O55FgK1Jvl2JuJP1cnRHEAM8A4Lr3yKtjQrCn2QXOXVT+L5+o/nFQcx0/oIo3oq1Kq9TjjgewXyb9BBrK+Wd0A==} engines: {node: '>=18.0.0'} @@ -2302,6 +2306,119 @@ packages: '@humanwhocodes/object-schema@2.0.3': resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + '@img/sharp-darwin-arm64@0.33.3': + resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.3': + resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.2': + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.2': + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.2': + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.2': + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.2': + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.2': + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.2': + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.3': + resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.3': + resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.3': + resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.3': + resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.3': + resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.3': + resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.3': + resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.3': + resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.3': + resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2387,6 +2504,9 @@ packages: '@next/env@14.2.3': resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==} + '@next/env@14.3.0-canary.45': + resolution: {integrity: sha512-boZHstl3TK8VG3Sv7s6CUNbNnD8kerILpnaer4FGZzzoKpjiERy4DspR/IuTEyv5/20BInjJTH/aXJ9P7xRiqg==} + '@next/eslint-plugin-next@13.5.6': resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} @@ -2405,6 +2525,12 @@ packages: cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@14.3.0-canary.45': + resolution: {integrity: sha512-S7JxoCuBabXn61aGXONn4pKn9odU+s8R/VW2D36bOwFb6ksVoden3ob63bJ8w9nRsmz99uUGJluq2GaZTjVeWw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@14.1.3': resolution: {integrity: sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==} engines: {node: '>= 10'} @@ -2417,6 +2543,12 @@ packages: cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@14.3.0-canary.45': + resolution: {integrity: sha512-CzsiCamwmUtXIoc2+qIEIAD9LVZUxm2rbgHB+VCPJKavYVV2bHqQhA4qYbTKrQWUUMR3G8ua9hODr3DPdm8c6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-linux-arm64-gnu@14.1.3': resolution: {integrity: sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==} engines: {node: '>= 10'} @@ -2429,6 +2561,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@14.3.0-canary.45': + resolution: {integrity: sha512-Sf6gApHjjbjO6hApIUeknOx3Cgmr7KuWxuaVeVG/upG8elJOTk8oA5zeudLmFlhPqnOxTDswzSbtMjZy+jOgfQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@14.1.3': resolution: {integrity: sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==} engines: {node: '>= 10'} @@ -2441,6 +2579,12 @@ packages: cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@14.3.0-canary.45': + resolution: {integrity: sha512-pJxMKKkgMqFNARTsjiuZ1BsVEZ/x6HpDwHHd8w5EhHg+u9oaCC57yfnfZZhuG07RlOGibfeYVaefEBINvw7fAw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@14.1.3': resolution: {integrity: sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==} engines: {node: '>= 10'} @@ -2453,6 +2597,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@14.3.0-canary.45': + resolution: {integrity: sha512-i9QNaSD0aquTYbacztYhdJdhcZqnofbr5PlUuxJy8M530b7ykTJlnHUIym+0wAyWi6gRbV6bMU2LH/fjKKseJQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@14.1.3': resolution: {integrity: sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==} engines: {node: '>= 10'} @@ -2465,6 +2615,12 @@ packages: cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@14.3.0-canary.45': + resolution: {integrity: sha512-VdQkBXpd9iU57nINvNF4h5q5MI/+a/bKKQrly6jUbJw2Pe2fE5WSGCOcdxt7Qqznkc5AdynOL7YPwqefJOsf0Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@14.1.3': resolution: {integrity: sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==} engines: {node: '>= 10'} @@ -2477,6 +2633,12 @@ packages: cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@14.3.0-canary.45': + resolution: {integrity: sha512-+7QXXxhtnqk8v2rQWOhuI3Dz5vy/cGo/c/htootzD/zchtEAw21f4m6pkdNhztVi+afzpQTAKdyOwXlFGE+jpg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-ia32-msvc@14.1.3': resolution: {integrity: sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==} engines: {node: '>= 10'} @@ -2489,6 +2651,12 @@ packages: cpu: [ia32] os: [win32] + '@next/swc-win32-ia32-msvc@14.3.0-canary.45': + resolution: {integrity: sha512-URQlG/gG5hrPUUsylv5wAz5NfpA0gsYZAYO63E9vwwhcc/BTYSKymhl7Q4TYzDaBqqChyhq4msv8yTt0WbEEIw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@next/swc-win32-x64-msvc@14.1.3': resolution: {integrity: sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg==} engines: {node: '>= 10'} @@ -2501,6 +2669,12 @@ packages: cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@14.3.0-canary.45': + resolution: {integrity: sha512-edj+RMB3RTSfHaVgSd6I6EjJiFZ/oJ5DxY7FWaWe3KuJ3MJl6W7ppB9H7H0jMYp18XW4VqsgLyJwRaIs9/F4Cw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -2587,51 +2761,98 @@ packages: resolution: {integrity: sha512-oQG/FejNpItrxRHoyctYvT3rwGZOnK4jr3JdppO/c78ktDvkWiPXPHNsrDf33K9sZdRb6PR7gi4noIapu5q4HA==} engines: {node: '>=18.0.0', pnpm: '>=8'} - '@rollup/rollup-android-arm-eabi@4.12.0': - resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} - cpu: [arm] - os: [android] + '@radix-ui/react-compose-refs@1.0.1': + resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-slot@1.0.2': + resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@rollup/plugin-commonjs@25.0.7': + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@15.2.3': + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-replace@5.0.5': + resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-wasm@6.2.2': + resolution: {integrity: sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true '@rollup/rollup-android-arm-eabi@4.17.2': resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.12.0': - resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} - cpu: [arm64] - os: [android] - '@rollup/rollup-android-arm64@4.17.2': resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.12.0': - resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} - cpu: [arm64] - os: [darwin] - '@rollup/rollup-darwin-arm64@4.17.2': resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.12.0': - resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} - cpu: [x64] - os: [darwin] - '@rollup/rollup-darwin-x64@4.17.2': resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.12.0': - resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} - cpu: [arm] - os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} cpu: [arm] @@ -2642,21 +2863,11 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.12.0': - resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.17.2': resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.12.0': - resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} - cpu: [arm64] - os: [linux] - '@rollup/rollup-linux-arm64-musl@4.17.2': resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} cpu: [arm64] @@ -2667,11 +2878,6 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.12.0': - resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} - cpu: [riscv64] - os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.17.2': resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} cpu: [riscv64] @@ -2682,51 +2888,26 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.12.0': - resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-gnu@4.17.2': resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.12.0': - resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} - cpu: [x64] - os: [linux] - '@rollup/rollup-linux-x64-musl@4.17.2': resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.12.0': - resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} - cpu: [arm64] - os: [win32] - '@rollup/rollup-win32-arm64-msvc@4.17.2': resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.12.0': - resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} - cpu: [ia32] - os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.17.2': resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.12.0': - resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} - cpu: [x64] - os: [win32] - '@rollup/rollup-win32-x64-msvc@4.17.2': resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} cpu: [x64] @@ -2892,8 +3073,8 @@ packages: cpu: [arm64] os: [darwin] - '@swc/core-darwin-arm64@1.4.2': - resolution: {integrity: sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==} + '@swc/core-darwin-arm64@1.5.3': + resolution: {integrity: sha512-kRmmV2XqWegzGXvJfVVOj10OXhLgaVOOBjaX3p3Aqg7Do5ksg+bY5wi1gAN/Eul7B08Oqf7GG7WJevjDQGWPOg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -2910,8 +3091,8 @@ packages: cpu: [x64] os: [darwin] - '@swc/core-darwin-x64@1.4.2': - resolution: {integrity: sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==} + '@swc/core-darwin-x64@1.5.3': + resolution: {integrity: sha512-EYs0+ovaRw6ZN9GBr2nIeC7gUXWA0q4RYR+Og3Vo0Qgv2Mt/XudF44A2lPK9X7M3JIfu6JjnxnTuvsK1Lqojfw==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -2928,8 +3109,8 @@ packages: cpu: [arm] os: [linux] - '@swc/core-linux-arm-gnueabihf@1.4.2': - resolution: {integrity: sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==} + '@swc/core-linux-arm-gnueabihf@1.5.3': + resolution: {integrity: sha512-RBVUTidSf4wgPdv98VrgJ4rMzMDN/3LBWdT7l+R7mNFH+mtID7ZAhTON0o/m1HkECgAgi1xcbTOVAw1xgd5KLA==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -2946,8 +3127,8 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-gnu@1.4.2': - resolution: {integrity: sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==} + '@swc/core-linux-arm64-gnu@1.5.3': + resolution: {integrity: sha512-DCC6El3MiTYfv98CShxz/g2s4Pxn6tV0mldCQ0UdRqaN2ApUn7E+zTrqaj5bk7yII3A43WhE9Mr6wNPbXUeVyg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2964,8 +3145,8 @@ packages: cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.4.2': - resolution: {integrity: sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==} + '@swc/core-linux-arm64-musl@1.5.3': + resolution: {integrity: sha512-p04ysjYXEyaCGpJvwHm0T0nkPawXtdKBTThWnlh8M5jYULVNVA1YmC9azG2Avs1GDaLgBPVUgodmFYpdSupOYA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2982,8 +3163,8 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-gnu@1.4.2': - resolution: {integrity: sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==} + '@swc/core-linux-x64-gnu@1.5.3': + resolution: {integrity: sha512-/l4KJu0xwYm6tcVSOvF8RbXrIeIHJAhWnKvuX4ZnYKFkON968kB8Ghx+1yqBQcZf36tMzSuZUC5xBUA9u66lGA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3000,8 +3181,8 @@ packages: cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.4.2': - resolution: {integrity: sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==} + '@swc/core-linux-x64-musl@1.5.3': + resolution: {integrity: sha512-54DmSnrTXq4fYEKNR0nFAImG3+FxsHlQ6Tol/v3l+rxmg2K0FeeDOpH7wTXeWhMGhFlGrLIyLSnA+SzabfoDIA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -3018,8 +3199,8 @@ packages: cpu: [arm64] os: [win32] - '@swc/core-win32-arm64-msvc@1.4.2': - resolution: {integrity: sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==} + '@swc/core-win32-arm64-msvc@1.5.3': + resolution: {integrity: sha512-piUMqoHNwDXChBfaaFIMzYgoxepfd8Ci1uXXNVEnuiRKz3FiIcNLmvXaBD7lKUwKcnGgVziH/CrndX6SldKQNQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -3036,8 +3217,8 @@ packages: cpu: [ia32] os: [win32] - '@swc/core-win32-ia32-msvc@1.4.2': - resolution: {integrity: sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==} + '@swc/core-win32-ia32-msvc@1.5.3': + resolution: {integrity: sha512-zV5utPYBUzYhBOomCByAjKAvfVBcOCJtnszx7Zlfz7SAv/cGm8D1QzPDCvv6jDhIlUtLj6KyL8JXeFr+f95Fjw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -3054,8 +3235,8 @@ packages: cpu: [x64] os: [win32] - '@swc/core-win32-x64-msvc@1.4.2': - resolution: {integrity: sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==} + '@swc/core-win32-x64-msvc@1.5.3': + resolution: {integrity: sha512-QmUiXiPIV5gBADfDh8e2jKynEhyRC+dcKP/zF9y5KqDUErYzlhocLd68uYS4uIegP6AylYlmigHgcaktGEE9VQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3078,8 +3259,8 @@ packages: '@swc/helpers': optional: true - '@swc/core@1.4.2': - resolution: {integrity: sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==} + '@swc/core@1.5.3': + resolution: {integrity: sha512-pSEglypnBGLHBoBcv3aYS7IM2t2LRinubYMyP88UoFIcD2pear2CeB15CbjJ2IzuvERD0ZL/bthM7cDSR9g+aQ==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': ^0.5.0 @@ -3090,15 +3271,15 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.11': + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} + '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - '@swc/types@0.1.5': - resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} - '@swc/types@0.1.6': resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} @@ -3189,6 +3370,9 @@ packages: '@types/gtag.js@0.0.12': resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -3237,6 +3421,9 @@ packages: '@types/lodash@4.17.0': resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdast@4.0.3': resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} @@ -3267,6 +3454,9 @@ packages: '@types/node@18.19.31': resolution: {integrity: sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==} + '@types/node@20.12.10': + resolution: {integrity: sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==} + '@types/node@20.12.7': resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} @@ -3309,6 +3499,9 @@ packages: '@types/react-router@5.1.20': resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + '@types/react-syntax-highlighter@15.5.13': + resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} + '@types/react@18.2.74': resolution: {integrity: sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==} @@ -3318,6 +3511,9 @@ packages: '@types/react@18.3.1': resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -3511,30 +3707,45 @@ packages: '@vitest/expect@1.3.1': resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/runner@1.3.0': resolution: {integrity: sha512-1Jb15Vo/Oy7mwZ5bXi7zbgszsdIBNjc4IqP8Jpr/8RdBC4nF1CTzIAn2dxYvpF1nGSseeL39lfLQ2uvs5u1Y9A==} '@vitest/runner@1.3.1': resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/snapshot@1.3.0': resolution: {integrity: sha512-swmktcviVVPYx9U4SEQXLV6AEY51Y6bZ14jA2yo6TgMxQ3h+ZYiO0YhAHGJNp0ohCFbPAis1R9kK0cvN6lDPQA==} '@vitest/snapshot@1.3.1': resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/spy@1.3.0': resolution: {integrity: sha512-AkCU0ThZunMvblDpPKgjIi025UxR8V7MZ/g/EwmAGpjIujLVV2X6rGYGmxE2D4FJbAy0/ijdROHMWa2M/6JVMw==} '@vitest/spy@1.3.1': resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/utils@1.3.0': resolution: {integrity: sha512-/LibEY/fkaXQufi4GDlQZhikQsPO2entBKtfuyIpr1jV4DpaeasqkeHjhdOhU24vSHshcSuEyVlWdzvv2XmYCw==} '@vitest/utils@1.3.1': resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vue/compiler-core@3.4.26': resolution: {integrity: sha512-N9Vil6Hvw7NaiyFUFBPXrAyETIGlQ8KcFMkyk6hW1Cl6NvoqvP+Y8p1Eqvx+UdqsnrnI9+HMUEJegzia3mhXmQ==} @@ -3689,6 +3900,27 @@ packages: zod: optional: true + ai@3.1.1: + resolution: {integrity: sha512-pJZc6q7SLd2/NenxN62iagMw9HHQ4Q8FyKqkrZUJntupRTHHgN3fL7exzJU/ICHDAbtn/EcJXOau6P61QgUtKQ==} + engines: {node: '>=18'} + peerDependencies: + react: ^18.2.0 + solid-js: ^1.7.7 + svelte: ^3.0.0 || ^4.0.0 + vue: ^3.3.4 + zod: ^3.0.0 + peerDependenciesMeta: + react: + optional: true + solid-js: + optional: true + svelte: + optional: true + vue: + optional: true + zod: + optional: true + ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -4037,6 +4269,20 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bunchee@5.1.5: + resolution: {integrity: sha512-zrUIjZcyJjiXdUk1U1Sa1ItmopK3ZmzFUGQ5M4FGDPRI0ksDB4OCRyqp5ci2vFdLFy1y8MbrxIoOD6/j8TYfYQ==} + engines: {node: '>= 18.0.0'} + hasBin: true + peerDependencies: + typescript: ^4.1 || ^5.0 + peerDependenciesMeta: + typescript: + optional: true + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -4142,12 +4388,21 @@ packages: character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} @@ -4212,6 +4467,9 @@ packages: cjs-module-lexer@1.3.1: resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -4265,6 +4523,10 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} @@ -4322,6 +4584,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@1.0.8: + resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -4460,6 +4725,11 @@ packages: create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + cross-fetch@3.1.8: resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} @@ -4780,6 +5050,10 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dingbat-to-unicode@1.0.1: resolution: {integrity: sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==} @@ -5274,6 +5548,9 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fault@1.0.4: + resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} + fault@2.0.1: resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} @@ -5571,6 +5848,10 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -5691,6 +5972,9 @@ packages: hast-util-from-parse5@8.0.1: resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + hast-util-parse-selector@2.2.5: + resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} + hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} @@ -5706,9 +5990,15 @@ packages: hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + hastscript@6.0.0: + resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} + hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} @@ -5716,6 +6006,9 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -5926,9 +6219,15 @@ packages: resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} engines: {node: '>= 10'} + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} @@ -5956,6 +6255,14 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -5971,6 +6278,9 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -6010,6 +6320,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -6024,6 +6337,9 @@ packages: is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -6076,6 +6392,9 @@ packages: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} @@ -6208,6 +6527,18 @@ packages: joi@17.12.3: resolution: {integrity: sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==} + jotai@2.8.0: + resolution: {integrity: sha512-yZNMC36FdLOksOr8qga0yLf14miCJlEThlp5DeFJNnqzm2+ZG7wLcJzoOyij5K6U6Xlc5ljQqPDlJRgqW0Y18g==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=17.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + js-base64@3.7.2: resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==} @@ -6469,6 +6800,9 @@ packages: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lowlight@1.20.0: + resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} @@ -6487,6 +6821,11 @@ packages: resolution: {integrity: sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==} engines: {node: 14 || >=16.14} + lucide-react@0.378.0: + resolution: {integrity: sha512-u6EPU8juLUk9ytRcyapkWI18epAv3RU+6+TC23ivjR0e+glWKBobFeSgRwOIJihzktILQuy6E0E80P2jVTDR5g==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 + lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -6544,12 +6883,18 @@ packages: md-utils-ts@2.0.0: resolution: {integrity: sha512-sMG6JtX0ebcRMHxYTcmgsh0/m6o8hGdQHFE2OgjvflRZlQM51CGGj/uuk056D+12BlCiW0aTpt/AdlDNtgQiew==} + mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + mdast-util-directive@3.0.0: resolution: {integrity: sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==} mdast-util-find-and-replace@3.0.1: resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + mdast-util-from-markdown@2.0.0: resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} @@ -6589,12 +6934,18 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + mdast-util-to-hast@13.1.0: resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} mdast-util-to-markdown@2.1.0: resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -6633,6 +6984,9 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + micromark-core-commonmark@2.0.0: resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} @@ -6678,9 +7032,15 @@ packages: micromark-extension-mdxjs@3.0.0: resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + micromark-factory-label@2.0.0: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} @@ -6693,9 +7053,15 @@ packages: micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + micromark-factory-title@2.0.0: resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + micromark-factory-whitespace@2.0.0: resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} @@ -6705,39 +7071,72 @@ packages: micromark-util-character@2.1.0: resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + micromark-util-chunked@2.0.0: resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + micromark-util-classify-character@2.0.0: resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + micromark-util-combine-extensions@2.0.0: resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + micromark-util-decode-numeric-character-reference@2.0.1: resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + micromark-util-decode-string@2.0.0: resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + micromark-util-encode@2.0.0: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} micromark-util-events-to-acorn@2.0.2: resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + micromark-util-html-tag-name@2.0.0: resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + micromark-util-normalize-identifier@2.0.0: resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + micromark-util-resolve-all@2.0.0: resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + micromark-util-subtokenize@2.0.0: resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} @@ -6753,6 +7152,9 @@ packages: micromark-util-types@2.0.0: resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + micromark@4.0.0: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} @@ -6827,6 +7229,10 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -6896,6 +7302,10 @@ packages: socks: optional: true + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -6976,6 +7386,24 @@ packages: sass: optional: true + next@14.3.0-canary.45: + resolution: {integrity: sha512-f0G1p6Er0Llzrhd98tHuHx1LpAt8MsTkTon2DZAGAFMq6L52AHJY8xSRjroaE+Cf6qTbx6oWyEBI1+Dw1ITs5Q==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: 19.0.0-beta-4508873393-20240430 + react-dom: 19.0.0-beta-4508873393-20240430 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + nice-napi@1.0.2: resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} os: ['!win32'] @@ -7152,6 +7580,10 @@ packages: resolution: {integrity: sha512-nmSKE9O2piuoh9+AgDqwGHojIFSxToQ2jJqwaxjbzz2ebdD5LYY9s+bMe25b18t4QEgvtgW70JfK8BU3xf5dRw==} hasBin: true + openai@4.42.0: + resolution: {integrity: sha512-xbiQQ2YNqdkE6cHqeWKa7lsAvdYfgp84XiNFOVkAMa6+9KpmOL4hCWCRR6e6I/clpaens/T9XeLVtyC5StXoRw==} + hasBin: true + opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true @@ -7263,6 +7695,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} @@ -7818,6 +8253,10 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} @@ -7841,6 +8280,10 @@ packages: peerDependencies: react: '>=16.0.0' + prismjs@1.27.0: + resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + engines: {node: '>=6'} + prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -7859,6 +8302,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@5.6.0: + resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} + property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} @@ -7990,6 +8436,11 @@ packages: peerDependencies: react: ^18.2.0 + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + react-dom@19.0.0-canary-e3ebcd54b-20240405: resolution: {integrity: sha512-rLmRhyj0CiO0H5lWTIeP1izYsjjp03Dt36dufxjlPWVVpbHdKoIHUU/cDNin7Le2H+hNQfDQk7VcOb6Z7Z+W0g==} peerDependencies: @@ -8032,6 +8483,12 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' + react-markdown@8.0.7: + resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + react-refresh@0.14.2: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} @@ -8060,10 +8517,19 @@ packages: react-dom: 19.0.0-canary-e3ebcd54b-20240405 webpack: ^5.59.0 + react-syntax-highlighter@15.5.0: + resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} + peerDependencies: + react: '>= 0.14.0' + react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + react@19.0.0-canary-e3ebcd54b-20240405: resolution: {integrity: sha512-cJE4hNNSAZSkMGplceUigybvn9cnUrvgFuljOahB2LStTLGVK4bZcszJ0sppwPbr9XVelEvyNmKj/0HRQPc53w==} engines: {node: '>=0.10.0'} @@ -8121,6 +8587,9 @@ packages: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} + refractor@3.6.0: + resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} + regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -8177,9 +8646,15 @@ packages: remark-mdx@3.0.1: resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-rehype@10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + remark-rehype@11.1.0: resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} @@ -8278,6 +8753,13 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true + rollup-plugin-dts@6.1.0: + resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 + rollup-plugin-inject@3.0.2: resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. @@ -8285,13 +8767,20 @@ packages: rollup-plugin-node-polyfills@0.2.1: resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} + rollup-plugin-swc3@0.11.1: + resolution: {integrity: sha512-6j8kWS6HM63P9pc6O5UtfhZkW9vVmkYfoEmZxR3Nua6KQRDCM3a6RrskqiGeiCnJ9s1W+tAmlVYz80G9yy2/Kg==} + engines: {node: '>=12'} + peerDependencies: + '@swc/core': '>=1.2.165' + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.12.0: - resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + rollup-preserve-directives@1.1.1: + resolution: {integrity: sha512-+eQafbuEfDPfxQ9hQPlwaROfin4yiVRxap8hnrvvvcSGoukv1tTiYpAW9mvm3uR8J+fe4xd8FdVd5rz9q7jZ+Q==} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 rollup@4.17.2: resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} @@ -8315,6 +8804,10 @@ packages: rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + safe-array-concat@1.1.0: resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} @@ -8347,6 +8840,9 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.25.0-canary-e3ebcd54b-20240405: resolution: {integrity: sha512-xI+jJ4zTJfULtwgO1GgoT3I3MiEV1OisswVdS9LdoQr0QwKpH0Al7IlW68R5ceIXE/a8RfuYZc7Aq34DwBqr7A==} @@ -8463,6 +8959,10 @@ packages: resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} engines: {node: '>=14.15.0'} + sharp@0.33.3: + resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -8563,6 +9063,12 @@ packages: solid-js: ^1.2 swr-store: ^0.10 + sonner@1.4.41: + resolution: {integrity: sha512-uG511ggnnsw6gcn/X+YKkWPo5ep9il9wYi3QJxHsYe7yTZ4+cOd1wuodOUmOpFuXL+/RE3R04LczdNCDygTDgQ==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + sort-css-media-queries@2.1.0: resolution: {integrity: sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==} engines: {node: '>= 6.3.0'} @@ -8594,6 +9100,9 @@ packages: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead + space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} @@ -8874,6 +9383,9 @@ packages: peerDependencies: vue: '>=3.2.26 < 4' + tailwind-merge@2.3.0: + resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} + tailwindcss@3.4.3: resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} engines: {node: '>=14.0.0'} @@ -8957,6 +9469,10 @@ packages: resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + tinyspy@2.2.1: resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} @@ -9246,6 +9762,9 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + unified@11.0.4: resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} @@ -9253,24 +9772,42 @@ packages: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} + unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} unist-util-position-from-estree@2.0.0: resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} @@ -9290,6 +9827,10 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin@1.10.1: + resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} + engines: {node: '>=14.0.0'} + update-browserslist-db@1.0.13: resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -9346,6 +9887,11 @@ packages: resolution: {integrity: sha512-zV3eW2NlXTsun/aJ7AixxZjH/byQcH/r3J99MI0dDEkU2cJIBJxhEWUHDTpOaLPRNhebPZoeHuykYREkI9HafA==} hasBin: true + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -9362,9 +9908,15 @@ packages: vfile-location@5.0.2: resolution: {integrity: sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==} + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} @@ -9378,6 +9930,11 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite@5.1.4: resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -9484,6 +10041,31 @@ packages: jsdom: optional: true + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} @@ -9571,6 +10153,9 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} + webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + webpack@5.91.0: resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} @@ -10968,16 +11553,16 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/vitest-pool-workers@0.2.5(@cloudflare/workers-types@4.20240423.0)(@vitest/runner@1.3.1)(@vitest/snapshot@1.3.1)(vitest@1.3.0(@types/node@20.12.7)(terser@5.30.3))': + '@cloudflare/vitest-pool-workers@0.2.5(@cloudflare/workers-types@4.20240423.0)(@vitest/runner@1.6.0)(@vitest/snapshot@1.6.0)(vitest@1.3.0(@types/node@20.12.10)(terser@5.30.3))': dependencies: - '@vitest/runner': 1.3.1 - '@vitest/snapshot': 1.3.1 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 birpc: 0.2.14 cjs-module-lexer: 1.3.1 devalue: 4.3.3 esbuild: 0.17.19 miniflare: 3.20240419.0 - vitest: 1.3.0(@types/node@20.12.7)(terser@5.30.3) + vitest: 1.3.0(@types/node@20.12.10)(terser@5.30.3) wrangler: 3.53.0(@cloudflare/workers-types@4.20240423.0) zod: 3.23.5 transitivePeerDependencies: @@ -11752,6 +12337,11 @@ snapshots: - uglify-js - webpack-cli + '@emnapi/runtime@1.1.1': + dependencies: + tslib: 2.6.2 + optional: true + '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': dependencies: esbuild: 0.17.19 @@ -11993,6 +12583,8 @@ snapshots: '@fastify/busboy@2.1.1': {} + '@fastify/deepmerge@1.3.0': {} + '@google/generative-ai@0.8.0': {} '@grpc/grpc-js@1.10.6': @@ -12031,6 +12623,81 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@img/sharp-darwin-arm64@0.33.3': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.2 + optional: true + + '@img/sharp-darwin-x64@0.33.3': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.2 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.2': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.2': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.2': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.2': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.2': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.2': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.2': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.2': + optional: true + + '@img/sharp-linux-arm64@0.33.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.2 + optional: true + + '@img/sharp-linux-arm@0.33.3': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.2 + optional: true + + '@img/sharp-linux-s390x@0.33.3': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.2 + optional: true + + '@img/sharp-linux-x64@0.33.3': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.2 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.3': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + optional: true + + '@img/sharp-wasm32@0.33.3': + dependencies: + '@emnapi/runtime': 1.1.1 + optional: true + + '@img/sharp-win32-ia32@0.33.3': + optional: true + + '@img/sharp-win32-x64@0.33.3': + optional: true + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -12049,7 +12716,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -12170,6 +12837,8 @@ snapshots: '@next/env@14.2.3': {} + '@next/env@14.3.0-canary.45': {} + '@next/eslint-plugin-next@13.5.6': dependencies: glob: 7.1.7 @@ -12184,54 +12853,81 @@ snapshots: '@next/swc-darwin-arm64@14.2.3': optional: true + '@next/swc-darwin-arm64@14.3.0-canary.45': + optional: true + '@next/swc-darwin-x64@14.1.3': optional: true '@next/swc-darwin-x64@14.2.3': optional: true + '@next/swc-darwin-x64@14.3.0-canary.45': + optional: true + '@next/swc-linux-arm64-gnu@14.1.3': optional: true '@next/swc-linux-arm64-gnu@14.2.3': optional: true + '@next/swc-linux-arm64-gnu@14.3.0-canary.45': + optional: true + '@next/swc-linux-arm64-musl@14.1.3': optional: true '@next/swc-linux-arm64-musl@14.2.3': optional: true + '@next/swc-linux-arm64-musl@14.3.0-canary.45': + optional: true + '@next/swc-linux-x64-gnu@14.1.3': optional: true '@next/swc-linux-x64-gnu@14.2.3': optional: true + '@next/swc-linux-x64-gnu@14.3.0-canary.45': + optional: true + '@next/swc-linux-x64-musl@14.1.3': optional: true '@next/swc-linux-x64-musl@14.2.3': optional: true + '@next/swc-linux-x64-musl@14.3.0-canary.45': + optional: true + '@next/swc-win32-arm64-msvc@14.1.3': optional: true '@next/swc-win32-arm64-msvc@14.2.3': optional: true + '@next/swc-win32-arm64-msvc@14.3.0-canary.45': + optional: true + '@next/swc-win32-ia32-msvc@14.1.3': optional: true '@next/swc-win32-ia32-msvc@14.2.3': optional: true + '@next/swc-win32-ia32-msvc@14.3.0-canary.45': + optional: true + '@next/swc-win32-x64-msvc@14.1.3': optional: true '@next/swc-win32-x64-msvc@14.2.3': optional: true + '@next/swc-win32-x64-msvc@14.3.0-canary.45': + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -12316,31 +13012,80 @@ snapshots: '@qdrant/openapi-typescript-fetch@1.2.6': {} - '@rollup/rollup-android-arm-eabi@4.12.0': - optional: true + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.4 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.1 - '@rollup/rollup-android-arm-eabi@4.17.2': - optional: true + '@radix-ui/react-slot@1.0.2(@types/react@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.4 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.1)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.1 - '@rollup/rollup-android-arm64@4.12.0': - optional: true + '@rollup/plugin-commonjs@25.0.7(rollup@4.17.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.17.2 - '@rollup/rollup-android-arm64@4.17.2': - optional: true + '@rollup/plugin-json@6.1.0(rollup@4.17.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + optionalDependencies: + rollup: 4.17.2 - '@rollup/rollup-darwin-arm64@4.12.0': - optional: true + '@rollup/plugin-node-resolve@15.2.3(rollup@4.17.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.17.2 - '@rollup/rollup-darwin-arm64@4.17.2': + '@rollup/plugin-replace@5.0.5(rollup@4.17.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.17.2 + + '@rollup/plugin-wasm@6.2.2(rollup@4.17.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + optionalDependencies: + rollup: 4.17.2 + + '@rollup/pluginutils@5.1.0(rollup@4.17.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.17.2 + + '@rollup/rollup-android-arm-eabi@4.17.2': optional: true - '@rollup/rollup-darwin-x64@4.12.0': + '@rollup/rollup-android-arm64@4.17.2': optional: true - '@rollup/rollup-darwin-x64@4.17.2': + '@rollup/rollup-darwin-arm64@4.17.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.12.0': + '@rollup/rollup-darwin-x64@4.17.2': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.17.2': @@ -12349,55 +13094,31 @@ snapshots: '@rollup/rollup-linux-arm-musleabihf@4.17.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.12.0': - optional: true - '@rollup/rollup-linux-arm64-gnu@4.17.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.12.0': - optional: true - '@rollup/rollup-linux-arm64-musl@4.17.2': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.12.0': - optional: true - '@rollup/rollup-linux-riscv64-gnu@4.17.2': optional: true '@rollup/rollup-linux-s390x-gnu@4.17.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.12.0': - optional: true - '@rollup/rollup-linux-x64-gnu@4.17.2': optional: true - '@rollup/rollup-linux-x64-musl@4.12.0': - optional: true - '@rollup/rollup-linux-x64-musl@4.17.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.12.0': - optional: true - '@rollup/rollup-win32-arm64-msvc@4.17.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.12.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.17.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.12.0': + '@rollup/rollup-win32-ia32-msvc@4.17.2': optional: true '@rollup/rollup-win32-x64-msvc@4.17.2': @@ -12536,10 +13257,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@swc/cli@0.3.12(@swc/core@1.4.16(@swc/helpers@0.5.5))(chokidar@3.6.0)': + '@swc/cli@0.3.12(@swc/core@1.4.16(@swc/helpers@0.5.11))(chokidar@3.6.0)': dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.4.16(@swc/helpers@0.5.5) + '@swc/core': 1.4.16(@swc/helpers@0.5.11) '@swc/counter': 0.1.3 commander: 8.3.0 fast-glob: 3.3.2 @@ -12551,10 +13272,10 @@ snapshots: optionalDependencies: chokidar: 3.6.0 - '@swc/cli@0.3.9(@swc/core@1.4.2(@swc/helpers@0.5.5))(chokidar@3.6.0)': + '@swc/cli@0.3.9(@swc/core@1.5.3(@swc/helpers@0.5.11))(chokidar@3.6.0)': dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.4.2(@swc/helpers@0.5.5) + '@swc/core': 1.5.3(@swc/helpers@0.5.11) '@swc/counter': 0.1.3 commander: 7.2.0 fast-glob: 3.3.1 @@ -12572,7 +13293,7 @@ snapshots: '@swc/core-darwin-arm64@1.4.16': optional: true - '@swc/core-darwin-arm64@1.4.2': + '@swc/core-darwin-arm64@1.5.3': optional: true '@swc/core-darwin-x64@1.4.12': @@ -12581,7 +13302,7 @@ snapshots: '@swc/core-darwin-x64@1.4.16': optional: true - '@swc/core-darwin-x64@1.4.2': + '@swc/core-darwin-x64@1.5.3': optional: true '@swc/core-linux-arm-gnueabihf@1.4.12': @@ -12590,7 +13311,7 @@ snapshots: '@swc/core-linux-arm-gnueabihf@1.4.16': optional: true - '@swc/core-linux-arm-gnueabihf@1.4.2': + '@swc/core-linux-arm-gnueabihf@1.5.3': optional: true '@swc/core-linux-arm64-gnu@1.4.12': @@ -12599,7 +13320,7 @@ snapshots: '@swc/core-linux-arm64-gnu@1.4.16': optional: true - '@swc/core-linux-arm64-gnu@1.4.2': + '@swc/core-linux-arm64-gnu@1.5.3': optional: true '@swc/core-linux-arm64-musl@1.4.12': @@ -12608,7 +13329,7 @@ snapshots: '@swc/core-linux-arm64-musl@1.4.16': optional: true - '@swc/core-linux-arm64-musl@1.4.2': + '@swc/core-linux-arm64-musl@1.5.3': optional: true '@swc/core-linux-x64-gnu@1.4.12': @@ -12617,7 +13338,7 @@ snapshots: '@swc/core-linux-x64-gnu@1.4.16': optional: true - '@swc/core-linux-x64-gnu@1.4.2': + '@swc/core-linux-x64-gnu@1.5.3': optional: true '@swc/core-linux-x64-musl@1.4.12': @@ -12626,7 +13347,7 @@ snapshots: '@swc/core-linux-x64-musl@1.4.16': optional: true - '@swc/core-linux-x64-musl@1.4.2': + '@swc/core-linux-x64-musl@1.5.3': optional: true '@swc/core-win32-arm64-msvc@1.4.12': @@ -12635,7 +13356,7 @@ snapshots: '@swc/core-win32-arm64-msvc@1.4.16': optional: true - '@swc/core-win32-arm64-msvc@1.4.2': + '@swc/core-win32-arm64-msvc@1.5.3': optional: true '@swc/core-win32-ia32-msvc@1.4.12': @@ -12644,7 +13365,7 @@ snapshots: '@swc/core-win32-ia32-msvc@1.4.16': optional: true - '@swc/core-win32-ia32-msvc@1.4.2': + '@swc/core-win32-ia32-msvc@1.5.3': optional: true '@swc/core-win32-x64-msvc@1.4.12': @@ -12653,10 +13374,10 @@ snapshots: '@swc/core-win32-x64-msvc@1.4.16': optional: true - '@swc/core-win32-x64-msvc@1.4.2': + '@swc/core-win32-x64-msvc@1.5.3': optional: true - '@swc/core@1.4.12(@swc/helpers@0.5.5)': + '@swc/core@1.4.12(@swc/helpers@0.5.11)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.6 @@ -12671,9 +13392,9 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.4.12 '@swc/core-win32-ia32-msvc': 1.4.12 '@swc/core-win32-x64-msvc': 1.4.12 - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.11 - '@swc/core@1.4.16(@swc/helpers@0.5.5)': + '@swc/core@1.4.16(@swc/helpers@0.5.11)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.6 @@ -12688,27 +13409,31 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.4.16 '@swc/core-win32-ia32-msvc': 1.4.16 '@swc/core-win32-x64-msvc': 1.4.16 - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.11 - '@swc/core@1.4.2(@swc/helpers@0.5.5)': + '@swc/core@1.5.3(@swc/helpers@0.5.11)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.5 + '@swc/types': 0.1.6 optionalDependencies: - '@swc/core-darwin-arm64': 1.4.2 - '@swc/core-darwin-x64': 1.4.2 - '@swc/core-linux-arm-gnueabihf': 1.4.2 - '@swc/core-linux-arm64-gnu': 1.4.2 - '@swc/core-linux-arm64-musl': 1.4.2 - '@swc/core-linux-x64-gnu': 1.4.2 - '@swc/core-linux-x64-musl': 1.4.2 - '@swc/core-win32-arm64-msvc': 1.4.2 - '@swc/core-win32-ia32-msvc': 1.4.2 - '@swc/core-win32-x64-msvc': 1.4.2 - '@swc/helpers': 0.5.5 + '@swc/core-darwin-arm64': 1.5.3 + '@swc/core-darwin-x64': 1.5.3 + '@swc/core-linux-arm-gnueabihf': 1.5.3 + '@swc/core-linux-arm64-gnu': 1.5.3 + '@swc/core-linux-arm64-musl': 1.5.3 + '@swc/core-linux-x64-gnu': 1.5.3 + '@swc/core-linux-x64-musl': 1.5.3 + '@swc/core-win32-arm64-msvc': 1.5.3 + '@swc/core-win32-ia32-msvc': 1.5.3 + '@swc/core-win32-x64-msvc': 1.5.3 + '@swc/helpers': 0.5.11 '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.11': + dependencies: + tslib: 2.6.2 + '@swc/helpers@0.5.2': dependencies: tslib: 2.6.2 @@ -12718,8 +13443,6 @@ snapshots: '@swc/counter': 0.1.3 tslib: 2.6.2 - '@swc/types@0.1.5': {} - '@swc/types@0.1.6': dependencies: '@swc/counter': 0.1.3 @@ -12774,27 +13497,27 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/responselike': 1.0.3 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.0 - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/connect@3.4.38': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/debug@4.1.12': dependencies: @@ -12820,7 +13543,7 @@ snapshots: '@types/express-serve-static-core@4.19.0': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/qs': 6.9.14 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -12834,6 +13557,10 @@ snapshots: '@types/gtag.js@0.0.12': {} + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.10 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.2 @@ -12848,7 +13575,7 @@ snapshots: '@types/http-proxy@1.17.14': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/istanbul-lib-coverage@2.0.6': {} @@ -12868,7 +13595,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/lodash-es@4.17.12': dependencies: @@ -12878,6 +13605,10 @@ snapshots: '@types/lodash@4.17.0': {} + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.10 + '@types/mdast@4.0.3': dependencies: '@types/unist': 3.0.2 @@ -12892,12 +13623,12 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 form-data: 4.0.0 '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/node@12.20.55': {} @@ -12907,6 +13638,10 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@20.12.10': + dependencies: + undici-types: 5.26.5 + '@types/node@20.12.7': dependencies: undici-types: 5.26.5 @@ -12915,13 +13650,13 @@ snapshots: '@types/papaparse@5.3.14': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/parse-json@4.0.2': {} '@types/pg@8.11.5': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 pg-protocol: 1.6.1 pg-types: 4.0.2 @@ -12958,6 +13693,10 @@ snapshots: '@types/history': 4.7.11 '@types/react': 18.3.1 + '@types/react-syntax-highlighter@15.5.13': + dependencies: + '@types/react': 18.3.1 + '@types/react@18.2.74': dependencies: '@types/prop-types': 15.7.12 @@ -12973,22 +13712,24 @@ snapshots: '@types/prop-types': 15.7.12 csstype: 3.1.3 + '@types/resolve@1.20.2': {} + '@types/responselike@1.0.3': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/retry@0.12.0': {} '@types/sax@1.2.7': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/semver@7.5.8': {} '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/serve-index@1.9.4': dependencies: @@ -12997,12 +13738,12 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/tough-cookie@4.0.5': {} @@ -13020,7 +13761,7 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 '@types/yargs-parser@21.0.3': {} @@ -13204,14 +13945,14 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.2.1(vite@5.2.8(@types/node@20.12.7)(terser@5.30.3))': + '@vitejs/plugin-react@4.2.1(vite@5.2.8(@types/node@20.12.10)(terser@5.30.3))': dependencies: '@babel/core': 7.24.4 '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.4) '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.4) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.8(@types/node@20.12.7)(terser@5.30.3) + vite: 5.2.8(@types/node@20.12.10)(terser@5.30.3) transitivePeerDependencies: - supports-color @@ -13227,6 +13968,12 @@ snapshots: '@vitest/utils': 1.3.1 chai: 4.4.1 + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.4.1 + '@vitest/runner@1.3.0': dependencies: '@vitest/utils': 1.3.0 @@ -13239,6 +13986,12 @@ snapshots: p-limit: 5.0.0 pathe: 1.1.2 + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + '@vitest/snapshot@1.3.0': dependencies: magic-string: 0.30.7 @@ -13251,6 +14004,12 @@ snapshots: pathe: 1.1.2 pretty-format: 29.7.0 + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.10 + pathe: 1.1.2 + pretty-format: 29.7.0 + '@vitest/spy@1.3.0': dependencies: tinyspy: 2.2.1 @@ -13259,6 +14018,10 @@ snapshots: dependencies: tinyspy: 2.2.1 + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + '@vitest/utils@1.3.0': dependencies: diff-sequences: 29.6.3 @@ -13273,6 +14036,13 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + '@vue/compiler-core@3.4.26': dependencies: '@babel/parser': 7.24.4 @@ -13485,6 +14255,28 @@ snapshots: vue: 3.4.26(typescript@5.4.5) zod: 3.23.5 + ai@3.1.1(react@18.3.1)(solid-js@1.8.17)(svelte@4.2.15)(vue@3.4.26(typescript@5.4.5))(zod@3.23.5): + dependencies: + '@ai-sdk/provider': 0.0.3 + '@ai-sdk/provider-utils': 0.0.5(zod@3.23.5) + eventsource-parser: 1.1.2 + json-schema: 0.4.0 + jsondiffpatch: 0.6.0 + nanoid: 3.3.6 + secure-json-parse: 2.7.0 + solid-swr-store: 0.10.7(solid-js@1.8.17)(swr-store@0.10.6) + sswr: 2.0.0(svelte@4.2.15) + swr: 2.2.0(react@18.3.1) + swr-store: 0.10.6 + swrv: 1.0.4(vue@3.4.26(typescript@5.4.5)) + zod-to-json-schema: 3.22.5(zod@3.23.5) + optionalDependencies: + react: 18.3.1 + solid-js: 1.8.17 + svelte: 4.2.15 + vue: 3.4.26(typescript@5.4.5) + zod: 3.23.5 + ajv-formats@2.1.1(ajv@8.12.0): optionalDependencies: ajv: 8.12.0 @@ -13901,6 +14693,30 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + builtin-modules@3.3.0: {} + + bunchee@5.1.5(typescript@5.4.5): + dependencies: + '@rollup/plugin-commonjs': 25.0.7(rollup@4.17.2) + '@rollup/plugin-json': 6.1.0(rollup@4.17.2) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.17.2) + '@rollup/plugin-replace': 5.0.5(rollup@4.17.2) + '@rollup/plugin-wasm': 6.2.2(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@swc/core': 1.5.3(@swc/helpers@0.5.11) + '@swc/helpers': 0.5.11 + arg: 5.0.2 + clean-css: 5.3.3 + magic-string: 0.30.10 + pretty-bytes: 5.6.0 + rollup: 4.17.2 + rollup-plugin-dts: 6.1.0(rollup@4.17.2)(typescript@5.4.5) + rollup-plugin-swc3: 0.11.1(@swc/core@1.5.3(@swc/helpers@0.5.11))(rollup@4.17.2) + rollup-preserve-directives: 1.1.1(rollup@4.17.2) + tslib: 2.6.2 + optionalDependencies: + typescript: 5.4.5 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -14013,10 +14829,16 @@ snapshots: character-entities-html4@2.1.0: {} + character-entities-legacy@1.1.4: {} + character-entities-legacy@3.0.0: {} + character-entities@1.2.4: {} + character-entities@2.0.2: {} + character-reference-invalid@1.1.4: {} + character-reference-invalid@2.0.1: {} chardet@0.7.0: {} @@ -14069,14 +14891,14 @@ snapshots: transitivePeerDependencies: - encoding - chromadb@1.8.1(@google/generative-ai@0.8.0)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.38.1(encoding@0.1.13)): + chromadb@1.8.1(@google/generative-ai@0.8.0)(cohere-ai@7.9.5(encoding@0.1.13))(encoding@0.1.13)(openai@4.42.0(encoding@0.1.13)): dependencies: cliui: 8.0.1 isomorphic-fetch: 3.0.0(encoding@0.1.13) optionalDependencies: '@google/generative-ai': 0.8.0 cohere-ai: 7.9.5(encoding@0.1.13) - openai: 4.38.1(encoding@0.1.13) + openai: 4.42.0(encoding@0.1.13) transitivePeerDependencies: - encoding @@ -14086,6 +14908,10 @@ snapshots: cjs-module-lexer@1.3.1: {} + class-variance-authority@0.7.0: + dependencies: + clsx: 2.0.0 + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -14141,6 +14967,8 @@ snapshots: clone@1.0.4: {} + clsx@2.0.0: {} + clsx@2.1.0: {} code-red@1.0.4: @@ -14209,6 +15037,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@1.0.8: {} + comma-separated-tokens@2.0.3: {} commander@10.0.1: {} @@ -14343,6 +15173,10 @@ snapshots: create-require@1.1.1: {} + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + cross-fetch@3.1.8(encoding@0.1.13): dependencies: node-fetch: 2.7.0(encoding@0.1.13) @@ -14677,6 +15511,8 @@ snapshots: diff@4.0.2: {} + diff@5.2.0: {} + dingbat-to-unicode@1.0.1: {} dir-glob@3.0.1: @@ -15303,7 +16139,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 require-like: 0.1.2 event-target-shim@5.0.1: {} @@ -15449,6 +16285,10 @@ snapshots: dependencies: reusify: 1.0.4 + fault@1.0.4: + dependencies: + format: 0.2.2 + fault@2.0.1: dependencies: format: 0.2.2 @@ -15785,6 +16625,14 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + global-dirs@3.0.1: dependencies: ini: 2.0.0 @@ -15931,6 +16779,8 @@ snapshots: vfile-location: 5.0.2 web-namespaces: 2.0.1 + hast-util-parse-selector@2.2.5: {} + hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 @@ -16002,10 +16852,20 @@ snapshots: web-namespaces: 2.0.1 zwitch: 2.0.4 + hast-util-whitespace@2.0.1: {} + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 + hastscript@6.0.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 1.0.8 + hast-util-parse-selector: 2.2.5 + property-information: 5.6.0 + space-separated-tokens: 1.1.5 + hastscript@8.0.0: dependencies: '@types/hast': 3.0.4 @@ -16016,6 +16876,8 @@ snapshots: he@1.2.0: {} + highlight.js@10.7.3: {} + history@4.10.1: dependencies: '@babel/runtime': 7.24.4 @@ -16229,8 +17091,15 @@ snapshots: ipaddr.js@2.1.0: {} + is-alphabetical@1.0.4: {} + is-alphabetical@2.0.1: {} + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-alphanumerical@2.0.1: dependencies: is-alphabetical: 2.0.1 @@ -16263,6 +17132,12 @@ snapshots: call-bind: 1.0.7 has-tostringtag: 1.0.0 + is-buffer@2.0.5: {} + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + is-callable@1.2.7: {} is-ci@3.0.1: @@ -16277,6 +17152,8 @@ snapshots: dependencies: has-tostringtag: 1.0.0 + is-decimal@1.0.4: {} + is-decimal@2.0.1: {} is-docker@2.2.1: {} @@ -16305,6 +17182,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hexadecimal@1.0.4: {} + is-hexadecimal@2.0.1: {} is-installed-globally@0.4.0: @@ -16316,6 +17195,8 @@ snapshots: is-map@2.0.2: {} + is-module@1.0.0: {} + is-negative-zero@2.0.2: {} is-npm@6.0.0: {} @@ -16346,6 +17227,10 @@ snapshots: is-plain-object@5.0.0: {} + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 + is-reference@3.0.2: dependencies: '@types/estree': 1.0.5 @@ -16450,7 +17335,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.12.7 + '@types/node': 20.12.10 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -16458,13 +17343,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16479,6 +17364,11 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + jotai@2.8.0(@types/react@18.3.1)(react@19.0.0-canary-e3ebcd54b-20240405): + optionalDependencies: + '@types/react': 18.3.1 + react: 19.0.0-canary-e3ebcd54b-20240405 + js-base64@3.7.2: {} js-base64@3.7.7: {} @@ -16746,6 +17636,11 @@ snapshots: lowercase-keys@3.0.0: {} + lowlight@1.20.0: + dependencies: + fault: 1.0.4 + highlight.js: 10.7.3 + lru-cache@10.2.0: {} lru-cache@4.1.5: @@ -16763,6 +17658,10 @@ snapshots: lru-cache@9.1.2: {} + lucide-react@0.378.0(react@18.3.1): + dependencies: + react: 18.3.1 + lunr@2.3.9: {} madge@7.0.0(typescript@5.4.5): @@ -16826,6 +17725,12 @@ snapshots: md-utils-ts@2.0.0: {} + mdast-util-definitions@5.1.2: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + unist-util-visit: 4.1.2 + mdast-util-directive@3.0.0: dependencies: '@types/mdast': 4.0.3 @@ -16846,6 +17751,23 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 + mdast-util-from-markdown@1.3.1: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.10 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + mdast-util-from-markdown@2.0.0: dependencies: '@types/mdast': 4.0.3 @@ -16986,6 +17908,17 @@ snapshots: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 + mdast-util-to-hast@12.3.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + mdast-util-to-hast@13.1.0: dependencies: '@types/hast': 3.0.4 @@ -17009,6 +17942,10 @@ snapshots: unist-util-visit: 5.0.0 zwitch: 2.0.4 + mdast-util-to-string@3.2.0: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.3 @@ -17047,6 +17984,25 @@ snapshots: methods@1.1.2: {} + micromark-core-commonmark@1.1.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + micromark-core-commonmark@2.0.0: dependencies: decode-named-character-reference: 1.0.2 @@ -17192,12 +18148,25 @@ snapshots: micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + micromark-factory-destination@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + micromark-factory-destination@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + micromark-factory-label@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 @@ -17226,6 +18195,13 @@ snapshots: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 + micromark-factory-title@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 @@ -17233,6 +18209,13 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + micromark-factory-whitespace@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 @@ -17250,25 +18233,51 @@ snapshots: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + micromark-util-chunked@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 + micromark-util-classify-character@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 + micromark-util-combine-extensions@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 + micromark-util-decode-numeric-character-reference@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 + micromark-util-decode-string@1.1.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 @@ -17276,6 +18285,8 @@ snapshots: micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 + micromark-util-encode@1.1.0: {} + micromark-util-encode@2.0.0: {} micromark-util-events-to-acorn@2.0.2: @@ -17289,22 +18300,45 @@ snapshots: micromark-util-types: 2.0.0 vfile-message: 4.0.2 + micromark-util-html-tag-name@1.2.0: {} + micromark-util-html-tag-name@2.0.0: {} + micromark-util-normalize-identifier@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 + micromark-util-resolve-all@1.1.0: + dependencies: + micromark-util-types: 1.1.0 + micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 + micromark-util-sanitize-uri@1.2.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 + micromark-util-subtokenize@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + micromark-util-subtokenize@2.0.0: dependencies: devlop: 1.1.0 @@ -17320,6 +18354,28 @@ snapshots: micromark-util-types@2.0.0: {} + micromark@3.2.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + micromark@4.0.0: dependencies: '@types/debug': 4.1.12 @@ -17406,6 +18462,10 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 @@ -17458,6 +18518,8 @@ snapshots: bson: 6.6.0 mongodb-connection-string-url: 3.0.0 + mri@1.2.0: {} + mrmime@2.0.0: {} ms@2.0.0: {} @@ -17516,7 +18578,32 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@14.2.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@14.2.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@next/env': 14.2.3 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001607 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.3 + '@next/swc-darwin-x64': 14.2.3 + '@next/swc-linux-arm64-gnu': 14.2.3 + '@next/swc-linux-arm64-musl': 14.2.3 + '@next/swc-linux-x64-gnu': 14.2.3 + '@next/swc-linux-x64-musl': 14.2.3 + '@next/swc-win32-arm64-msvc': 14.2.3 + '@next/swc-win32-ia32-msvc': 14.2.3 + '@next/swc-win32-x64-msvc': 14.2.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + next@14.2.3(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405): dependencies: '@next/env': 14.2.3 '@swc/helpers': 0.5.5 @@ -17524,9 +18611,9 @@ snapshots: caniuse-lite: 1.0.30001607 graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + react: 19.0.0-canary-e3ebcd54b-20240405 + react-dom: 19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405) + styled-jsx: 5.1.1(react@19.0.0-canary-e3ebcd54b-20240405) optionalDependencies: '@next/swc-darwin-arm64': 14.2.3 '@next/swc-darwin-x64': 14.2.3 @@ -17541,6 +18628,32 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@14.3.0-canary.45(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@next/env': 14.3.0-canary.45 + '@swc/helpers': 0.5.11 + busboy: 1.6.0 + caniuse-lite: 1.0.30001607 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.3.0-canary.45 + '@next/swc-darwin-x64': 14.3.0-canary.45 + '@next/swc-linux-arm64-gnu': 14.3.0-canary.45 + '@next/swc-linux-arm64-musl': 14.3.0-canary.45 + '@next/swc-linux-x64-gnu': 14.3.0-canary.45 + '@next/swc-linux-x64-musl': 14.3.0-canary.45 + '@next/swc-win32-arm64-msvc': 14.3.0-canary.45 + '@next/swc-win32-ia32-msvc': 14.3.0-canary.45 + '@next/swc-win32-x64-msvc': 14.3.0-canary.45 + sharp: 0.33.3 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + nice-napi@1.0.2: dependencies: node-addon-api: 3.2.1 @@ -17737,6 +18850,19 @@ snapshots: transitivePeerDependencies: - encoding + openai@4.42.0(encoding@0.1.13): + dependencies: + '@types/node': 18.19.31 + '@types/node-fetch': 2.6.11 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.7.0(encoding@0.1.13) + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + opener@1.5.2: {} option@0.2.4: {} @@ -17854,6 +18980,15 @@ snapshots: dependencies: callsites: 3.1.0 + parse-entities@2.0.0: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + parse-entities@4.0.1: dependencies: '@types/unist': 2.0.10 @@ -18089,21 +19224,29 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.4)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.4)): + dependencies: + lilconfig: 3.0.0 + yaml: 2.3.4 + optionalDependencies: + postcss: 8.4.38 + ts-node: 10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.4) + + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.5)): dependencies: lilconfig: 3.0.0 yaml: 2.3.4 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.4) + ts-node: 10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.5) - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5)): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5)): dependencies: lilconfig: 3.0.0 yaml: 2.3.4 optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5) postcss-loader@7.3.4(postcss@8.4.38)(typescript@5.4.4)(webpack@5.91.0): dependencies: @@ -18373,6 +19516,8 @@ snapshots: prettier@3.2.5: {} + pretty-bytes@5.6.0: {} + pretty-error@4.0.0: dependencies: lodash: 4.17.21 @@ -18398,6 +19543,8 @@ snapshots: clsx: 2.1.0 react: 18.2.0 + prismjs@1.27.0: {} + prismjs@1.29.0: {} process-nextick-args@2.0.1: {} @@ -18415,6 +19562,10 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + property-information@5.6.0: + dependencies: + xtend: 4.0.2 + property-information@6.5.0: {} proto-list@1.2.4: {} @@ -18431,7 +19582,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.7 + '@types/node': 20.12.10 long: 5.2.3 proxy-addr@2.0.7: @@ -18578,6 +19729,12 @@ snapshots: react: 18.2.0 scheduler: 0.23.0 + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405): dependencies: react: 19.0.0-canary-e3ebcd54b-20240405 @@ -18619,6 +19776,28 @@ snapshots: react-loadable: '@docusaurus/react-loadable@5.5.2(react@18.2.0)' webpack: 5.91.0 + react-markdown@8.0.7(@types/react@18.3.1)(react@18.3.1): + dependencies: + '@types/hast': 2.3.10 + '@types/prop-types': 15.7.12 + '@types/react': 18.3.1 + '@types/unist': 2.0.10 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 2.0.1 + prop-types: 15.8.1 + property-information: 6.5.0 + react: 18.3.1 + react-is: 18.2.0 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unified: 10.1.2 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + transitivePeerDependencies: + - supports-color + react-refresh@0.14.2: {} react-router-config@5.1.1(react-router@5.3.4(react@18.2.0))(react@18.2.0): @@ -18651,18 +19830,31 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-server-dom-webpack@19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))): + react-server-dom-webpack@19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))): dependencies: acorn-loose: 8.4.0 neo-async: 2.6.2 react: 19.0.0-canary-e3ebcd54b-20240405 react-dom: 19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405) - webpack: 5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5)) + webpack: 5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11)) + + react-syntax-highlighter@15.5.0(react@18.3.1): + dependencies: + '@babel/runtime': 7.24.4 + highlight.js: 10.7.3 + lowlight: 1.20.0 + prismjs: 1.29.0 + react: 18.3.1 + refractor: 3.6.0 react@18.2.0: dependencies: loose-envify: 1.4.0 + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + react@19.0.0-canary-e3ebcd54b-20240405: {} read-cache@1.0.0: @@ -18745,6 +19937,12 @@ snapshots: globalthis: 1.0.3 which-builtin-type: 1.1.3 + refractor@3.6.0: + dependencies: + hastscript: 6.0.0 + parse-entities: 2.0.0 + prismjs: 1.27.0 + regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 @@ -18836,6 +20034,14 @@ snapshots: transitivePeerDependencies: - supports-color + remark-parse@10.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.3 @@ -18845,6 +20051,13 @@ snapshots: transitivePeerDependencies: - supports-color + remark-rehype@10.1.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + remark-rehype@11.1.0: dependencies: '@types/hast': 3.0.4 @@ -18938,6 +20151,14 @@ snapshots: dependencies: glob: 7.2.3 + rollup-plugin-dts@6.1.0(rollup@4.17.2)(typescript@5.4.5): + dependencies: + magic-string: 0.30.10 + rollup: 4.17.2 + typescript: 5.4.5 + optionalDependencies: + '@babel/code-frame': 7.24.2 + rollup-plugin-inject@3.0.2: dependencies: estree-walker: 0.6.1 @@ -18948,28 +20169,23 @@ snapshots: dependencies: rollup-plugin-inject: 3.0.2 + rollup-plugin-swc3@0.11.1(@swc/core@1.5.3(@swc/helpers@0.5.11))(rollup@4.17.2): + dependencies: + '@fastify/deepmerge': 1.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@swc/core': 1.5.3(@swc/helpers@0.5.11) + get-tsconfig: 4.7.3 + rollup: 4.17.2 + rollup-preserve-directives: 1.1.1(rollup@4.17.2) + rollup-pluginutils@2.8.2: dependencies: estree-walker: 0.6.1 - rollup@4.12.0: + rollup-preserve-directives@1.1.1(rollup@4.17.2): dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.12.0 - '@rollup/rollup-android-arm64': 4.12.0 - '@rollup/rollup-darwin-arm64': 4.12.0 - '@rollup/rollup-darwin-x64': 4.12.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 - '@rollup/rollup-linux-arm64-gnu': 4.12.0 - '@rollup/rollup-linux-arm64-musl': 4.12.0 - '@rollup/rollup-linux-riscv64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-gnu': 4.12.0 - '@rollup/rollup-linux-x64-musl': 4.12.0 - '@rollup/rollup-win32-arm64-msvc': 4.12.0 - '@rollup/rollup-win32-ia32-msvc': 4.12.0 - '@rollup/rollup-win32-x64-msvc': 4.12.0 - fsevents: 2.3.3 + magic-string: 0.30.10 + rollup: 4.17.2 rollup@4.17.2: dependencies: @@ -19012,6 +20228,10 @@ snapshots: dependencies: tslib: 2.6.2 + sade@1.8.1: + dependencies: + mri: 1.2.0 + safe-array-concat@1.1.0: dependencies: call-bind: 1.0.7 @@ -19043,6 +20263,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + scheduler@0.25.0-canary-e3ebcd54b-20240405: {} schema-utils@2.7.0: @@ -19198,6 +20422,33 @@ snapshots: tar-fs: 3.0.5 tunnel-agent: 0.6.0 + sharp@0.33.3: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.0 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.3 + '@img/sharp-darwin-x64': 0.33.3 + '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-linux-arm': 0.33.3 + '@img/sharp-linux-arm64': 0.33.3 + '@img/sharp-linux-s390x': 0.33.3 + '@img/sharp-linux-x64': 0.33.3 + '@img/sharp-linuxmusl-arm64': 0.33.3 + '@img/sharp-linuxmusl-x64': 0.33.3 + '@img/sharp-wasm32': 0.33.3 + '@img/sharp-win32-ia32': 0.33.3 + '@img/sharp-win32-x64': 0.33.3 + optional: true + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -19309,6 +20560,11 @@ snapshots: solid-js: 1.8.17 swr-store: 0.10.6 + sonner@1.4.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + sort-css-media-queries@2.1.0: {} sort-keys-length@1.0.1: @@ -19332,6 +20588,8 @@ snapshots: sourcemap-codec@1.4.8: {} + space-separated-tokens@1.1.5: {} + space-separated-tokens@2.0.2: {} sparse-bitfield@3.0.3: @@ -19569,6 +20827,16 @@ snapshots: client-only: 0.0.1 react: 18.2.0 + styled-jsx@5.1.1(react@18.3.1): + dependencies: + client-only: 0.0.1 + react: 18.3.1 + + styled-jsx@5.1.1(react@19.0.0-canary-e3ebcd54b-20240405): + dependencies: + client-only: 0.0.1 + react: 19.0.0-canary-e3ebcd54b-20240405 + stylehacks@5.1.1(postcss@8.4.38): dependencies: browserslist: 4.23.0 @@ -19641,13 +20909,49 @@ snapshots: react: 18.2.0 use-sync-external-store: 1.2.2(react@18.2.0) + swr@2.2.0(react@18.3.1): + dependencies: + react: 18.3.1 + use-sync-external-store: 1.2.2(react@18.3.1) + swrev@4.0.0: {} swrv@1.0.4(vue@3.4.26(typescript@5.4.5)): dependencies: vue: 3.4.26(typescript@5.4.5) - tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.4)): + tailwind-merge@2.3.0: + dependencies: + '@babel/runtime': 7.24.4 + + tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.4)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.4)) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -19666,7 +20970,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.4)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 @@ -19674,7 +20978,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5)): + tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -19693,7 +20997,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5)) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 @@ -19736,16 +21040,16 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(@swc/core@1.4.16(@swc/helpers@0.5.5))(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))): + terser-webpack-plugin@5.3.10(@swc/core@1.5.3(@swc/helpers@0.5.11))(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.30.3 - webpack: 5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5)) + webpack: 5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11)) optionalDependencies: - '@swc/core': 1.4.16(@swc/helpers@0.5.5) + '@swc/core': 1.5.3(@swc/helpers@0.5.11) terser-webpack-plugin@5.3.10(webpack@5.91.0): dependencies: @@ -19789,6 +21093,8 @@ snapshots: tinypool@0.8.2: {} + tinypool@0.8.4: {} + tinyspy@2.2.1: {} tmp@0.0.33: @@ -19847,14 +21153,14 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.4): + ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.10 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 @@ -19865,10 +21171,31 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.4.16(@swc/helpers@0.5.5) + '@swc/core': 1.5.3(@swc/helpers@0.5.11) + optional: true + + ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.10)(typescript@5.4.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.12.10 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.5.3(@swc/helpers@0.5.11) optional: true - ts-node@10.9.2(@swc/core@1.4.16(@swc/helpers@0.5.5))(@types/node@20.12.7)(typescript@5.4.5): + ts-node@10.9.2(@swc/core@1.5.3(@swc/helpers@0.5.11))(@types/node@20.12.7)(typescript@5.4.5): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -19886,7 +21213,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.4.16(@swc/helpers@0.5.5) + '@swc/core': 1.5.3(@swc/helpers@0.5.11) tsconfig-paths@3.15.0: dependencies: @@ -20033,6 +21360,14 @@ snapshots: shiki: 0.14.7 typescript: 5.4.4 + typedoc@0.25.13(typescript@5.4.5): + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.4 + shiki: 0.14.7 + typescript: 5.4.5 + typescript@5.4.3: {} typescript@5.4.4: {} @@ -20074,6 +21409,16 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unified@10.1.2: + dependencies: + '@types/unist': 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + unified@11.0.4: dependencies: '@types/unist': 3.0.2 @@ -20088,6 +21433,12 @@ snapshots: dependencies: crypto-random-string: 4.0.0 + unist-util-generated@2.0.1: {} + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.10 + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.2 @@ -20096,6 +21447,10 @@ snapshots: dependencies: '@types/unist': 3.0.2 + unist-util-position@4.0.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.2 @@ -20105,15 +21460,30 @@ snapshots: '@types/unist': 3.0.2 unist-util-visit: 5.0.0 + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.2 + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.2 @@ -20128,6 +21498,13 @@ snapshots: unpipe@1.0.0: {} + unplugin@1.10.1: + dependencies: + acorn: 8.11.3 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 @@ -20175,6 +21552,10 @@ snapshots: dependencies: react: 18.2.0 + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} utila@0.4.0: {} @@ -20187,6 +21568,13 @@ snapshots: uuidv7@0.6.3: {} + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 + v8-compile-cache-lib@3.0.1: {} validate-npm-package-license@3.0.4: @@ -20203,24 +21591,53 @@ snapshots: '@types/unist': 3.0.2 vfile: 6.0.1 + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + vfile@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@1.3.0(@types/node@20.12.7)(terser@5.30.3): + vite-node@1.3.0(@types/node@20.12.10)(terser@5.30.3): + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.4(@types/node@20.12.10)(terser@5.30.3) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-node@1.3.1(@types/node@20.12.10)(terser@5.30.3): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.4(@types/node@20.12.7)(terser@5.30.3) + vite: 5.1.4(@types/node@20.12.10)(terser@5.30.3) transitivePeerDependencies: - '@types/node' - less @@ -20231,13 +21648,13 @@ snapshots: - supports-color - terser - vite-node@1.3.1(@types/node@20.12.7)(terser@5.30.3): + vite-node@1.6.0(@types/node@20.12.10)(terser@5.30.3): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.4(@types/node@20.12.7)(terser@5.30.3) + vite: 5.2.8(@types/node@20.12.10)(terser@5.30.3) transitivePeerDependencies: - '@types/node' - less @@ -20248,27 +21665,27 @@ snapshots: - supports-color - terser - vite@5.1.4(@types/node@20.12.7)(terser@5.30.3): + vite@5.1.4(@types/node@20.12.10)(terser@5.30.3): dependencies: esbuild: 0.19.12 postcss: 8.4.38 - rollup: 4.12.0 + rollup: 4.17.2 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 fsevents: 2.3.3 terser: 5.30.3 - vite@5.2.8(@types/node@20.12.7)(terser@5.30.3): + vite@5.2.8(@types/node@20.12.10)(terser@5.30.3): dependencies: esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.17.2 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 fsevents: 2.3.3 terser: 5.30.3 - vitest@1.3.0(@types/node@20.12.7)(terser@5.30.3): + vitest@1.3.0(@types/node@20.12.10)(terser@5.30.3): dependencies: '@vitest/expect': 1.3.0 '@vitest/runner': 1.3.0 @@ -20287,11 +21704,11 @@ snapshots: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.4(@types/node@20.12.7)(terser@5.30.3) - vite-node: 1.3.0(@types/node@20.12.7)(terser@5.30.3) + vite: 5.1.4(@types/node@20.12.10)(terser@5.30.3) + vite-node: 1.3.0(@types/node@20.12.10)(terser@5.30.3) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 transitivePeerDependencies: - less - lightningcss @@ -20301,7 +21718,7 @@ snapshots: - supports-color - terser - vitest@1.3.1(@types/node@20.12.7)(terser@5.30.3): + vitest@1.3.1(@types/node@20.12.10)(terser@5.30.3): dependencies: '@vitest/expect': 1.3.1 '@vitest/runner': 1.3.1 @@ -20320,11 +21737,44 @@ snapshots: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.4(@types/node@20.12.7)(terser@5.30.3) - vite-node: 1.3.1(@types/node@20.12.7)(terser@5.30.3) + vite: 5.1.4(@types/node@20.12.10)(terser@5.30.3) + vite-node: 1.3.1(@types/node@20.12.10)(terser@5.30.3) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.10 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vitest@1.6.0(@types/node@20.12.10)(terser@5.30.3): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.10 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.4 + vite: 5.2.8(@types/node@20.12.10)(terser@5.30.3) + vite-node: 1.6.0(@types/node@20.12.10)(terser@5.30.3) + why-is-node-running: 2.2.2 + optionalDependencies: + '@types/node': 20.12.10 transitivePeerDependencies: - less - lightningcss @@ -20348,18 +21798,18 @@ snapshots: optionalDependencies: typescript: 5.4.5 - waku@0.20.1(@swc/helpers@0.5.5)(@types/node@20.12.7)(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react-server-dom-webpack@19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))))(react@19.0.0-canary-e3ebcd54b-20240405)(terser@5.30.3): + waku@0.20.1(@swc/helpers@0.5.11)(@types/node@20.12.10)(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react-server-dom-webpack@19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))))(react@19.0.0-canary-e3ebcd54b-20240405)(terser@5.30.3): dependencies: '@hono/node-server': 1.9.1 - '@swc/core': 1.4.12(@swc/helpers@0.5.5) - '@vitejs/plugin-react': 4.2.1(vite@5.2.8(@types/node@20.12.7)(terser@5.30.3)) + '@swc/core': 1.4.12(@swc/helpers@0.5.11) + '@vitejs/plugin-react': 4.2.1(vite@5.2.8(@types/node@20.12.10)(terser@5.30.3)) dotenv: 16.4.5 hono: 4.2.2 react: 19.0.0-canary-e3ebcd54b-20240405 react-dom: 19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405) - react-server-dom-webpack: 19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))) + react-server-dom-webpack: 19.0.0-canary-e3ebcd54b-20240405(react-dom@19.0.0-canary-e3ebcd54b-20240405(react@19.0.0-canary-e3ebcd54b-20240405))(react@19.0.0-canary-e3ebcd54b-20240405)(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))) rsc-html-stream: 0.0.3 - vite: 5.2.8(@types/node@20.12.7)(terser@5.30.3) + vite: 5.2.8(@types/node@20.12.10)(terser@5.30.3) transitivePeerDependencies: - '@swc/helpers' - '@types/node' @@ -20472,6 +21922,8 @@ snapshots: webpack-sources@3.2.3: {} + webpack-virtual-modules@0.6.1: {} + webpack@5.91.0: dependencies: '@types/eslint-scope': 3.7.7 @@ -20503,7 +21955,7 @@ snapshots: - esbuild - uglify-js - webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5)): + webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 @@ -20526,7 +21978,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.4.16(@swc/helpers@0.5.5))(webpack@5.91.0(@swc/core@1.4.16(@swc/helpers@0.5.5))) + terser-webpack-plugin: 5.3.10(@swc/core@1.5.3(@swc/helpers@0.5.11))(webpack@5.91.0(@swc/core@1.5.3(@swc/helpers@0.5.11))) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bb8c73153..dc97c64eb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,6 +4,7 @@ packages: - "packages/core/tests" - "packages/core/e2e" - "packages/core/e2e/examples/*" + - "packages/autotool/examples/*" - "packages/edge/e2e/*" - "examples/" - "examples/*" diff --git a/tsconfig.json b/tsconfig.json index 8ee8dbd94..c14327511 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,6 +41,12 @@ { "path": "./packages/core/tests/tsconfig.json" }, + { + "path": "./packages/autotool/tsconfig.json" + }, + { + "path": "./packages/autotool/examples/01_node/tsconfig.json" + }, { "path": "./packages/env/tsconfig.json" }, diff --git a/turbo.json b/turbo.json index 8ca45295e..85e908e14 100644 --- a/turbo.json +++ b/turbo.json @@ -7,16 +7,10 @@ "outputs": ["dist/**", "build/**"] }, "lint": { - "inputs": ["packages/eslint-config-custom"] - }, - "@llamaindex/edge#build": { - "dependsOn": ["llamaindex#build"] - }, - "@llamaindex/experimental#build": { - "dependsOn": ["@llamaindex/edge#build"] + "dependsOn": ["^build"] }, "test": { - "dependsOn": ["^build", "@llamaindex/edge#build"] + "dependsOn": ["^build"] }, "e2e": { "dependsOn": ["^build"] -- GitLab