diff --git a/examples/preact/basic/package.json b/examples/preact/basic/package.json
index 379e5dd6..ecac213e 100644
--- a/examples/preact/basic/package.json
+++ b/examples/preact/basic/package.json
@@ -13,7 +13,7 @@
"@tanstack/devtools-event-client": "0.4.0",
"@tanstack/preact-devtools": "workspace:*",
"preact": "^10.28.0",
- "zod": "^4.1.11"
+ "zod": "^4.3.5"
},
"devDependencies": {
"@preact/preset-vite": "^2.10.2",
diff --git a/examples/react/basic/package.json b/examples/react/basic/package.json
index 519d26bf..580dd203 100644
--- a/examples/react/basic/package.json
+++ b/examples/react/basic/package.json
@@ -19,7 +19,7 @@
"@tanstack/react-router-devtools": "^1.132.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
- "zod": "^4.1.11"
+ "zod": "^4.3.5"
},
"devDependencies": {
"@tanstack/devtools-ui": "0.4.4",
diff --git a/examples/react/bundling-repro/.cta.json b/examples/react/bundling-repro/.cta.json
new file mode 100644
index 00000000..d29f28a4
--- /dev/null
+++ b/examples/react/bundling-repro/.cta.json
@@ -0,0 +1,21 @@
+{
+ "projectName": "start-repro",
+ "mode": "file-router",
+ "typescript": true,
+ "packageManager": "npm",
+ "tailwind": true,
+ "addOnOptions": {},
+ "git": true,
+ "version": 1,
+ "framework": "react-cra",
+ "chosenAddOns": [
+ "biome",
+ "cloudflare",
+ "start",
+ "tanstack-query",
+ "ai",
+ "store",
+ "shadcn",
+ "compiler"
+ ]
+}
diff --git a/examples/react/bundling-repro/.cursorrules b/examples/react/bundling-repro/.cursorrules
new file mode 100644
index 00000000..20159602
--- /dev/null
+++ b/examples/react/bundling-repro/.cursorrules
@@ -0,0 +1,7 @@
+# shadcn instructions
+
+Use the latest version of Shadcn to install new components, like this command to add a button component:
+
+```bash
+pnpm dlx shadcn@latest add button
+```
diff --git a/examples/react/bundling-repro/.wrangler/deploy/config.json b/examples/react/bundling-repro/.wrangler/deploy/config.json
new file mode 100644
index 00000000..3c067226
--- /dev/null
+++ b/examples/react/bundling-repro/.wrangler/deploy/config.json
@@ -0,0 +1 @@
+{ "configPath": "..\\..\\dist\\server\\wrangler.json", "auxiliaryWorkers": [] }
diff --git a/examples/react/bundling-repro/README.md b/examples/react/bundling-repro/README.md
new file mode 100644
index 00000000..9be760e0
--- /dev/null
+++ b/examples/react/bundling-repro/README.md
@@ -0,0 +1,347 @@
+Welcome to your new TanStack app!
+
+# Getting Started
+
+To run this application:
+
+```bash
+npm install
+npm run dev
+```
+
+# Building For Production
+
+To build this application for production:
+
+```bash
+npm run build
+```
+
+## Testing
+
+This project uses [Vitest](https://vitest.dev/) for testing. You can run the tests with:
+
+```bash
+npm run test
+```
+
+## Styling
+
+This project uses [Tailwind CSS](https://tailwindcss.com/) for styling.
+
+## Linting & Formatting
+
+This project uses [Biome](https://biomejs.dev/) for linting and formatting. The following scripts are available:
+
+```bash
+npm run lint
+npm run format
+npm run check
+```
+
+# TanStack Chat Application
+
+Am example chat application built with TanStack Start, TanStack Store, and Claude AI.
+
+## .env Updates
+
+```env
+ANTHROPIC_API_KEY=your_anthropic_api_key
+```
+
+## β¨ Features
+
+### AI Capabilities
+
+- π€ Powered by Claude 3.5 Sonnet
+- π Rich markdown formatting with syntax highlighting
+- π― Customizable system prompts for tailored AI behavior
+- π Real-time message updates and streaming responses (coming soon)
+
+### User Experience
+
+- π¨ Modern UI with Tailwind CSS and Lucide icons
+- π Conversation management and history
+- π Secure API key management
+- π Markdown rendering with code highlighting
+
+### Technical Features
+
+- π¦ Centralized state management with TanStack Store
+- π Extensible architecture for multiple AI providers
+- π οΈ TypeScript for type safety
+
+## Architecture
+
+### Tech Stack
+
+- **Frontend Framework**: TanStack Start
+- **Routing**: TanStack Router
+- **State Management**: TanStack Store
+- **Styling**: Tailwind CSS
+- **AI Integration**: Anthropic's Claude API
+
+## Shadcn
+
+Add components using the latest version of [Shadcn](https://ui.shadcn.com/).
+
+```bash
+pnpm dlx shadcn@latest add button
+```
+
+## Routing
+
+This project uses [TanStack Router](https://tanstack.com/router). The initial setup is a file based router. Which means that the routes are managed as files in `src/routes`.
+
+### Adding A Route
+
+To add a new route to your application just add another a new file in the `./src/routes` directory.
+
+TanStack will automatically generate the content of the route file for you.
+
+Now that you have two routes you can use a `Link` component to navigate between them.
+
+### Adding Links
+
+To use SPA (Single Page Application) navigation you will need to import the `Link` component from `@tanstack/react-router`.
+
+```tsx
+import { Link } from '@tanstack/react-router'
+```
+
+Then anywhere in your JSX you can use it like so:
+
+```tsx
+ About
+```
+
+This will create a link that will navigate to the `/about` route.
+
+More information on the `Link` component can be found in the [Link documentation](https://tanstack.com/router/v1/docs/framework/react/api/router/linkComponent).
+
+### Using A Layout
+
+In the File Based Routing setup the layout is located in `src/routes/__root.tsx`. Anything you add to the root route will appear in all the routes. The route content will appear in the JSX where you use the ` ` component.
+
+Here is an example layout that includes a header:
+
+```tsx
+import { Outlet, createRootRoute } from '@tanstack/react-router'
+import { TanStackRouterDevtools } from '@tanstack/react-router-devtools'
+
+import { Link } from '@tanstack/react-router'
+
+export const Route = createRootRoute({
+ component: () => (
+ <>
+
+
+
+ >
+ ),
+})
+```
+
+The ` ` component is not required so you can remove it if you don't want it in your layout.
+
+More information on layouts can be found in the [Layouts documentation](https://tanstack.com/router/latest/docs/framework/react/guide/routing-concepts#layouts).
+
+## Data Fetching
+
+There are multiple ways to fetch data in your application. You can use TanStack Query to fetch data from a server. But you can also use the `loader` functionality built into TanStack Router to load the data for a route before it's rendered.
+
+For example:
+
+```tsx
+const peopleRoute = createRoute({
+ getParentRoute: () => rootRoute,
+ path: '/people',
+ loader: async () => {
+ const response = await fetch('https://swapi.dev/api/people')
+ return response.json() as Promise<{
+ results: {
+ name: string
+ }[]
+ }>
+ },
+ component: () => {
+ const data = peopleRoute.useLoaderData()
+ return (
+
+ {data.results.map((person) => (
+ {person.name}
+ ))}
+
+ )
+ },
+})
+```
+
+Loaders simplify your data fetching logic dramatically. Check out more information in the [Loader documentation](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#loader-parameters).
+
+### React-Query
+
+React-Query is an excellent addition or alternative to route loading and integrating it into you application is a breeze.
+
+First add your dependencies:
+
+```bash
+npm install @tanstack/react-query @tanstack/react-query-devtools
+```
+
+Next we'll need to create a query client and provider. We recommend putting those in `main.tsx`.
+
+```tsx
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
+
+// ...
+
+const queryClient = new QueryClient()
+
+// ...
+
+if (!rootElement.innerHTML) {
+ const root = ReactDOM.createRoot(rootElement)
+
+ root.render(
+
+
+ ,
+ )
+}
+```
+
+You can also add TanStack Query Devtools to the root route (optional).
+
+```tsx
+import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
+
+const rootRoute = createRootRoute({
+ component: () => (
+ <>
+
+
+
+ >
+ ),
+})
+```
+
+Now you can use `useQuery` to fetch your data.
+
+```tsx
+import { useQuery } from '@tanstack/react-query'
+
+import './App.css'
+
+function App() {
+ const { data } = useQuery({
+ queryKey: ['people'],
+ queryFn: () =>
+ fetch('https://swapi.dev/api/people')
+ .then((res) => res.json())
+ .then((data) => data.results as { name: string }[]),
+ initialData: [],
+ })
+
+ return (
+
+
+ {data.map((person) => (
+ {person.name}
+ ))}
+
+
+ )
+}
+
+export default App
+```
+
+You can find out everything you need to know on how to use React-Query in the [React-Query documentation](https://tanstack.com/query/latest/docs/framework/react/overview).
+
+## State Management
+
+Another common requirement for React applications is state management. There are many options for state management in React. TanStack Store provides a great starting point for your project.
+
+First you need to add TanStack Store as a dependency:
+
+```bash
+npm install @tanstack/store
+```
+
+Now let's create a simple counter in the `src/App.tsx` file as a demonstration.
+
+```tsx
+import { useStore } from '@tanstack/react-store'
+import { Store } from '@tanstack/store'
+import './App.css'
+
+const countStore = new Store(0)
+
+function App() {
+ const count = useStore(countStore)
+ return (
+
+ countStore.setState((n) => n + 1)}>
+ Increment - {count}
+
+
+ )
+}
+
+export default App
+```
+
+One of the many nice features of TanStack Store is the ability to derive state from other state. That derived state will update when the base state updates.
+
+Let's check this out by doubling the count using derived state.
+
+```tsx
+import { useStore } from '@tanstack/react-store'
+import { Store, Derived } from '@tanstack/store'
+import './App.css'
+
+const countStore = new Store(0)
+
+const doubledStore = new Derived({
+ fn: () => countStore.state * 2,
+ deps: [countStore],
+})
+doubledStore.mount()
+
+function App() {
+ const count = useStore(countStore)
+ const doubledCount = useStore(doubledStore)
+
+ return (
+
+
countStore.setState((n) => n + 1)}>
+ Increment - {count}
+
+
Doubled - {doubledCount}
+
+ )
+}
+
+export default App
+```
+
+We use the `Derived` class to create a new store that is derived from another store. The `Derived` class has a `mount` method that will start the derived store updating.
+
+Once we've created the derived store we can use it in the `App` component just like we would any other store using the `useStore` hook.
+
+You can find out everything you need to know on how to use TanStack Store in the [TanStack Store documentation](https://tanstack.com/store/latest).
+
+# Demo files
+
+Files prefixed with `demo` can be safely deleted. They are there to provide a starting point for you to play around with the features you've installed.
+
+# Learn More
+
+You can learn more about all of the offerings from TanStack in the [TanStack documentation](https://tanstack.com).
diff --git a/examples/react/bundling-repro/biome.json b/examples/react/bundling-repro/biome.json
new file mode 100644
index 00000000..cca08344
--- /dev/null
+++ b/examples/react/bundling-repro/biome.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json",
+ "vcs": {
+ "enabled": false,
+ "clientKind": "git",
+ "useIgnoreFile": false
+ },
+ "files": {
+ "ignoreUnknown": false,
+ "includes": [
+ "**/src/**/*",
+ "**/.vscode/**/*",
+ "**/index.html",
+ "**/vite.config.ts",
+ "!**/src/routeTree.gen.ts",
+ "!**/src/styles.css"
+ ]
+ },
+ "formatter": {
+ "enabled": true,
+ "indentStyle": "tab"
+ },
+ "assist": { "actions": { "source": { "organizeImports": "on" } } },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": true
+ }
+ },
+ "javascript": {
+ "formatter": {
+ "quoteStyle": "double"
+ }
+ }
+}
diff --git a/examples/react/bundling-repro/components.json b/examples/react/bundling-repro/components.json
new file mode 100644
index 00000000..58bb3a27
--- /dev/null
+++ b/examples/react/bundling-repro/components.json
@@ -0,0 +1,21 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "new-york",
+ "rsc": false,
+ "tsx": true,
+ "tailwind": {
+ "config": "",
+ "css": "src/styles.css",
+ "baseColor": "zinc",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib",
+ "hooks": "@/hooks"
+ },
+ "iconLibrary": "lucide"
+}
diff --git a/examples/react/bundling-repro/package.json b/examples/react/bundling-repro/package.json
new file mode 100644
index 00000000..0fe54822
--- /dev/null
+++ b/examples/react/bundling-repro/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "start-repro",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite dev --port 3000",
+ "build": "vite build",
+ "preview": "vite preview",
+ "test": "vitest run",
+ "format": "biome format",
+ "lint": "biome lint",
+ "check": "biome check",
+ "deploy": "npm run build && wrangler deploy"
+ },
+ "dependencies": {
+ "@cloudflare/vite-plugin": "^1.13.8",
+ "@tailwindcss/vite": "^4.0.6",
+ "@tanstack/ai": "latest",
+ "@tanstack/ai-anthropic": "latest",
+ "@tanstack/ai-client": "latest",
+ "@tanstack/ai-gemini": "latest",
+ "@tanstack/ai-ollama": "latest",
+ "@tanstack/ai-openai": "latest",
+ "@tanstack/ai-react": "latest",
+ "@tanstack/react-ai-devtools": "latest",
+ "@tanstack/react-devtools": "latest",
+ "@tanstack/react-query": "^5.90.1",
+ "@tanstack/react-query-devtools": "^5.90.1",
+ "@tanstack/react-router": "^1.132.0",
+ "@tanstack/react-router-devtools": "^1.132.0",
+ "@tanstack/react-router-ssr-query": "^1.131.7",
+ "@tanstack/react-start": "^1.132.0",
+ "@tanstack/react-store": "^0.8.0",
+ "@tanstack/router-plugin": "^1.132.0",
+ "@tanstack/store": "^0.8.0",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "highlight.js": "^11.11.1",
+ "lucide-react": "^0.561.0",
+ "react": "^19.2.0",
+ "react-dom": "^19.2.0",
+ "streamdown": "^1.6.5",
+ "tailwind-merge": "^3.0.2",
+ "tailwindcss": "^4.0.6",
+ "tw-animate-css": "^1.3.6",
+ "vite-tsconfig-paths": "^6.0.2",
+ "zod": "^4.3.5"
+ },
+ "devDependencies": {
+ "@biomejs/biome": "2.2.4",
+ "@tanstack/devtools-event-client": "latest",
+ "@tanstack/devtools-vite": "latest",
+ "@testing-library/dom": "^10.4.0",
+ "@testing-library/react": "^16.2.0",
+ "@types/node": "^22.15.2",
+ "@types/react": "^19.2.0",
+ "@types/react-dom": "^19.2.0",
+ "@vitejs/plugin-react": "^5.0.4",
+ "babel-plugin-react-compiler": "^1.0.0",
+ "jsdom": "^27.0.0",
+ "typescript": "~5.9.2",
+ "vite": "^7.1.7",
+ "vitest": "^3.2.4",
+ "web-vitals": "^5.1.0",
+ "wrangler": "^4.40.3"
+ }
+}
diff --git a/examples/react/bundling-repro/public/example-guitar-flowers.jpg b/examples/react/bundling-repro/public/example-guitar-flowers.jpg
new file mode 100644
index 00000000..a284a9ed
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-flowers.jpg differ
diff --git a/examples/react/bundling-repro/public/example-guitar-motherboard.jpg b/examples/react/bundling-repro/public/example-guitar-motherboard.jpg
new file mode 100644
index 00000000..1075e7ef
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-motherboard.jpg differ
diff --git a/examples/react/bundling-repro/public/example-guitar-racing.jpg b/examples/react/bundling-repro/public/example-guitar-racing.jpg
new file mode 100644
index 00000000..497ce3ae
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-racing.jpg differ
diff --git a/examples/react/bundling-repro/public/example-guitar-steamer-trunk.jpg b/examples/react/bundling-repro/public/example-guitar-steamer-trunk.jpg
new file mode 100644
index 00000000..02636d82
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-steamer-trunk.jpg differ
diff --git a/examples/react/bundling-repro/public/example-guitar-superhero.jpg b/examples/react/bundling-repro/public/example-guitar-superhero.jpg
new file mode 100644
index 00000000..1f80d163
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-superhero.jpg differ
diff --git a/examples/react/bundling-repro/public/example-guitar-traveling.jpg b/examples/react/bundling-repro/public/example-guitar-traveling.jpg
new file mode 100644
index 00000000..7b355188
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-traveling.jpg differ
diff --git a/examples/react/bundling-repro/public/example-guitar-video-games.jpg b/examples/react/bundling-repro/public/example-guitar-video-games.jpg
new file mode 100644
index 00000000..090b8044
Binary files /dev/null and b/examples/react/bundling-repro/public/example-guitar-video-games.jpg differ
diff --git a/examples/react/bundling-repro/public/example-ukelele-tanstack.jpg b/examples/react/bundling-repro/public/example-ukelele-tanstack.jpg
new file mode 100644
index 00000000..1e8a5566
Binary files /dev/null and b/examples/react/bundling-repro/public/example-ukelele-tanstack.jpg differ
diff --git a/examples/react/bundling-repro/public/favicon.ico b/examples/react/bundling-repro/public/favicon.ico
new file mode 100644
index 00000000..a11777cc
Binary files /dev/null and b/examples/react/bundling-repro/public/favicon.ico differ
diff --git a/examples/react/bundling-repro/public/logo192.png b/examples/react/bundling-repro/public/logo192.png
new file mode 100644
index 00000000..fc44b0a3
Binary files /dev/null and b/examples/react/bundling-repro/public/logo192.png differ
diff --git a/examples/react/bundling-repro/public/logo512.png b/examples/react/bundling-repro/public/logo512.png
new file mode 100644
index 00000000..a4e47a65
Binary files /dev/null and b/examples/react/bundling-repro/public/logo512.png differ
diff --git a/examples/react/bundling-repro/public/manifest.json b/examples/react/bundling-repro/public/manifest.json
new file mode 100644
index 00000000..078ef501
--- /dev/null
+++ b/examples/react/bundling-repro/public/manifest.json
@@ -0,0 +1,25 @@
+{
+ "short_name": "TanStack App",
+ "name": "Create TanStack App Sample",
+ "icons": [
+ {
+ "src": "favicon.ico",
+ "sizes": "64x64 32x32 24x24 16x16",
+ "type": "image/x-icon"
+ },
+ {
+ "src": "logo192.png",
+ "type": "image/png",
+ "sizes": "192x192"
+ },
+ {
+ "src": "logo512.png",
+ "type": "image/png",
+ "sizes": "512x512"
+ }
+ ],
+ "start_url": ".",
+ "display": "standalone",
+ "theme_color": "#000000",
+ "background_color": "#ffffff"
+}
diff --git a/examples/react/bundling-repro/public/robots.txt b/examples/react/bundling-repro/public/robots.txt
new file mode 100644
index 00000000..e9e57dc4
--- /dev/null
+++ b/examples/react/bundling-repro/public/robots.txt
@@ -0,0 +1,3 @@
+# https://www.robotstxt.org/robotstxt.html
+User-agent: *
+Disallow:
diff --git a/examples/react/bundling-repro/public/tanstack-circle-logo.png b/examples/react/bundling-repro/public/tanstack-circle-logo.png
new file mode 100644
index 00000000..9db3e67b
Binary files /dev/null and b/examples/react/bundling-repro/public/tanstack-circle-logo.png differ
diff --git a/examples/react/bundling-repro/public/tanstack-word-logo-white.svg b/examples/react/bundling-repro/public/tanstack-word-logo-white.svg
new file mode 100644
index 00000000..b6ec5086
--- /dev/null
+++ b/examples/react/bundling-repro/public/tanstack-word-logo-white.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/react/bundling-repro/src/components/Header.tsx b/examples/react/bundling-repro/src/components/Header.tsx
new file mode 100644
index 00000000..98083638
--- /dev/null
+++ b/examples/react/bundling-repro/src/components/Header.tsx
@@ -0,0 +1,252 @@
+import { Link } from '@tanstack/react-router'
+
+import TanChatAIAssistant from './demo-AIAssistant.tsx'
+
+import { useState } from 'react'
+import {
+ ChefHat,
+ ChevronDown,
+ ChevronRight,
+ Home,
+ ImageIcon,
+ Menu,
+ MessagesSquare,
+ Network,
+ SquareFunction,
+ StickyNote,
+ Store,
+ X,
+} from 'lucide-react'
+
+export default function Header() {
+ const [isOpen, setIsOpen] = useState(false)
+ const [groupedExpanded, setGroupedExpanded] = useState<
+ Record
+ >({})
+
+ return (
+ <>
+
+ setIsOpen(true)}
+ className="p-2 hover:bg-gray-700 rounded-lg transition-colors"
+ aria-label="Open menu"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
Navigation
+ setIsOpen(false)}
+ className="p-2 hover:bg-gray-800 rounded-lg transition-colors"
+ aria-label="Close menu"
+ >
+
+
+
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Home
+
+
+ {/* Demo Links Start */}
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Start - Server Functions
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Start - API Request
+
+
+
+ setIsOpen(false)}
+ className="flex-1 flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex-1 flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Start - SSR Demos
+
+
+ setGroupedExpanded((prev) => ({
+ ...prev,
+ StartSSRDemo: !prev.StartSSRDemo,
+ }))
+ }
+ >
+ {groupedExpanded.StartSSRDemo ? (
+
+ ) : (
+
+ )}
+
+
+ {groupedExpanded.StartSSRDemo && (
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ SPA Mode
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Full SSR
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Data Only
+
+
+ )}
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ TanStack Query
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Chat
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Generate Image
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Structured Output
+
+
+ setIsOpen(false)}
+ className="flex items-center gap-3 p-3 rounded-lg hover:bg-gray-800 transition-colors mb-2"
+ activeProps={{
+ className:
+ 'flex items-center gap-3 p-3 rounded-lg bg-cyan-600 hover:bg-cyan-700 transition-colors mb-2',
+ }}
+ >
+
+ Store
+
+
+ {/* Demo Links End */}
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/examples/react/bundling-repro/src/components/demo-AIAssistant.tsx b/examples/react/bundling-repro/src/components/demo-AIAssistant.tsx
new file mode 100644
index 00000000..ee58848a
--- /dev/null
+++ b/examples/react/bundling-repro/src/components/demo-AIAssistant.tsx
@@ -0,0 +1,159 @@
+import { useEffect, useRef, useState } from 'react'
+import { useStore } from '@tanstack/react-store'
+import { Store } from '@tanstack/store'
+
+import { Send, X, ChevronRight, BotIcon } from 'lucide-react'
+import { Streamdown } from 'streamdown'
+
+import { useGuitarRecommendationChat } from '@/feat/demo-ai-hook'
+import type { ChatMessages } from '@/feat/demo-ai-hook'
+
+import GuitarRecommendation from './demo-GuitarRecommendation'
+
+export const showAIAssistant = new Store(false)
+
+function Messages({ messages }: { messages: ChatMessages }) {
+ const messagesContainerRef = useRef(null)
+
+ useEffect(() => {
+ if (messagesContainerRef.current) {
+ messagesContainerRef.current.scrollTop =
+ messagesContainerRef.current.scrollHeight
+ }
+ }, [messages])
+
+ if (!messages.length) {
+ return (
+
+ Ask me anything! I'm here to help.
+
+ )
+ }
+
+ return (
+
+ {messages.map(({ id, role, parts }) => (
+
+ {parts.map((part, index) => {
+ if (part.type === 'text' && part.content) {
+ return (
+
+ {role === 'assistant' ? (
+
+ AI
+
+ ) : (
+
+ Y
+
+ )}
+
+ {part.content}
+
+
+ )
+ }
+ if (
+ part.type === 'tool-call' &&
+ part.name === 'recommendGuitar' &&
+ part.output
+ ) {
+ return (
+
+
+
+ )
+ }
+ })}
+
+ ))}
+
+ )
+}
+
+export default function AIAssistant() {
+ const isOpen = useStore(showAIAssistant)
+ const { messages, sendMessage } = useGuitarRecommendationChat()
+ const [input, setInput] = useState('')
+
+ return (
+
+
showAIAssistant.setState((state) => !state)}
+ className="w-full flex items-center justify-between px-4 py-2.5 rounded-lg bg-linear-to-r from-green-700 to-green-900 text-white hover:opacity-90 transition-opacity"
+ >
+
+
+ AI Assistant
+
+
+
+
+ {isOpen && (
+
+
+
AI Assistant
+ showAIAssistant.setState((state) => !state)}
+ className="text-gray-400 hover:text-white transition-colors"
+ >
+
+
+
+
+
+
+
+
+ )}
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/components/demo-GuitarRecommendation.tsx b/examples/react/bundling-repro/src/components/demo-GuitarRecommendation.tsx
new file mode 100644
index 00000000..afbf935a
--- /dev/null
+++ b/examples/react/bundling-repro/src/components/demo-GuitarRecommendation.tsx
@@ -0,0 +1,47 @@
+import { useNavigate } from '@tanstack/react-router'
+
+import { showAIAssistant } from './demo-AIAssistant'
+
+import guitars from '@/data/demo-guitars'
+
+export default function GuitarRecommendation({ id }: { id: string }) {
+ const navigate = useNavigate()
+ const guitar = guitars.find((guitar) => guitar.id === +id)
+ if (!guitar) {
+ return null
+ }
+ return (
+
+
+
+
+
+
{guitar.name}
+
+ {guitar.shortDescription}
+
+
+
+ ${guitar.price}
+
+
{
+ navigate({
+ to: '/example/guitars/$guitarId',
+ params: { guitarId: guitar.id.toString() },
+ })
+ showAIAssistant.setState(() => false)
+ }}
+ className="bg-gradient-to-r from-orange-500 to-red-600 text-white px-4 py-1.5 rounded-lg text-sm hover:opacity-90 transition-opacity"
+ >
+ View Details
+
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/data/demo-guitars.ts b/examples/react/bundling-repro/src/data/demo-guitars.ts
new file mode 100644
index 00000000..3a5a280c
--- /dev/null
+++ b/examples/react/bundling-repro/src/data/demo-guitars.ts
@@ -0,0 +1,93 @@
+export interface Guitar {
+ id: number
+ name: string
+ image: string
+ description: string
+ shortDescription: string
+ price: number
+}
+
+const guitars: Array = [
+ {
+ id: 1,
+ name: 'TanStack Ukelele',
+ image: '/example-ukelele-tanstack.jpg',
+ description:
+ "Introducing the TanStack Signature Ukuleleβa beautifully handcrafted concert ukulele that combines exceptional sound quality with distinctive style. Featuring a warm, resonant koa-wood body with natural grain patterns, this instrument delivers the rich, mellow tones Hawaii is famous for. The exclusive TanStack palm tree inlay on the soundhole adds a unique touch of island flair, while the matching branded headstock makes this a true collector's piece for developers and musicians alike. Whether you're a beginner looking for a quality starter instrument or an experienced player wanting something special, the TanStack Ukulele brings together craftsmanship, character, and that unmistakable tropical spirit.",
+ shortDescription:
+ 'Premium koa-wood ukulele featuring exclusive TanStack branding, perfect for beach vibes and island-inspired melodies.',
+ price: 299,
+ },
+ {
+ id: 2,
+ name: 'Video Game Guitar',
+ image: '/example-guitar-video-games.jpg',
+ description:
+ "The Video Game Guitar is a unique acoustic guitar that features a design inspired by video games. It has a sleek, high-gloss finish and a comfortable playability. The guitar's ergonomic body and fast neck profile ensure comfortable playability for hours on end.",
+ shortDescription:
+ 'A unique electric guitar with a video game design, high-gloss finish, and comfortable playability.',
+ price: 699,
+ },
+ {
+ id: 3,
+ name: 'Superhero Guitar',
+ image: '/example-guitar-superhero.jpg',
+ description:
+ "The Superhero Guitar is a bold black electric guitar that stands out with its unique superhero logo design. Its sleek, high-gloss finish and powerful pickups make it perfect for high-energy performances. The guitar's ergonomic body and fast neck profile ensure comfortable playability for hours on end.",
+ shortDescription:
+ 'A bold black electric guitar with a unique superhero logo, high-gloss finish, and powerful pickups.',
+ price: 699,
+ },
+ {
+ id: 4,
+ name: 'Motherboard Guitar',
+ image: '/example-guitar-motherboard.jpg',
+ description:
+ "This guitar is a tribute to the motherboard of a computer. It's a unique and stylish instrument that will make you feel like a hacker. The intricate circuit-inspired design features actual LED lights that pulse with your playing intensity, while the neck is inlaid with binary code patterns that glow under stage lights. Each pickup has been custom-wound to produce tones ranging from clean digital precision to glitched-out distortion, perfect for electronic music fusion. The Motherboard Guitar seamlessly bridges the gap between traditional craftsmanship and cutting-edge technology, making it the ultimate instrument for the digital age musician.",
+ shortDescription:
+ 'A tech-inspired electric guitar featuring LED lights and binary code inlays that glow under stage lights.',
+ price: 649,
+ },
+ {
+ id: 5,
+ name: 'Racing Guitar',
+ image: '/example-guitar-racing.jpg',
+ description:
+ "Engineered for speed and precision, the Racing Guitar embodies the spirit of motorsport in every curve and contour. Its aerodynamic body, painted in classic racing stripes and high-gloss finish, is crafted from lightweight materials that allow for effortless play during extended performances. The custom low-action setup and streamlined neck profile enable lightning-fast fretwork, while specially designed pickups deliver a high-octane tone that cuts through any mix. Built with performance-grade hardware including racing-inspired control knobs and checkered flag inlays, this guitar isn't just playedβit's driven to the limits of musical possibility.",
+ shortDescription:
+ 'A lightweight, aerodynamic guitar with racing stripes and a low-action setup designed for speed and precision.',
+ price: 679,
+ },
+ {
+ id: 6,
+ name: 'Steamer Trunk Guitar',
+ image: '/example-guitar-steamer-trunk.jpg',
+ description:
+ 'The Steamer Trunk Guitar is a semi-hollow body instrument that exudes vintage charm and character. Crafted from reclaimed antique luggage wood, it features brass hardware that adds a touch of elegance and durability. The fretboard is adorned with a world map inlay, making it a unique piece that tells a story of travel and adventure.',
+ shortDescription:
+ 'A semi-hollow body guitar with brass hardware and a world map inlay, crafted from reclaimed antique luggage wood.',
+ price: 629,
+ },
+ {
+ id: 7,
+ name: "Travelin' Man Guitar",
+ image: '/example-guitar-traveling.jpg',
+ description:
+ "The Travelin' Man Guitar is an acoustic masterpiece adorned with vintage postcards from around the world. Each postcard tells a story of adventure and wanderlust, making this guitar a unique piece of art. Its rich, resonant tones and comfortable playability make it perfect for musicians who love to travel and perform.",
+ shortDescription:
+ 'An acoustic guitar with vintage postcards, rich tones, and comfortable playability.',
+ price: 499,
+ },
+ {
+ id: 8,
+ name: 'Flowerly Love Guitar',
+ image: '/example-guitar-flowers.jpg',
+ description:
+ "The Flowerly Love Guitar is an acoustic masterpiece adorned with intricate floral designs on its body. Each flower is hand-painted, adding a touch of nature's beauty to the instrument. Its warm, resonant tones make it perfect for both intimate performances and larger gatherings.",
+ shortDescription:
+ 'An acoustic guitar with hand-painted floral designs and warm, resonant tones.',
+ price: 599,
+ },
+]
+
+export default guitars
diff --git a/examples/react/bundling-repro/src/data/demo.punk-songs.ts b/examples/react/bundling-repro/src/data/demo.punk-songs.ts
new file mode 100644
index 00000000..bc6086dc
--- /dev/null
+++ b/examples/react/bundling-repro/src/data/demo.punk-songs.ts
@@ -0,0 +1,13 @@
+import { createServerFn } from '@tanstack/react-start'
+
+export const getPunkSongs = createServerFn({
+ method: 'GET',
+}).handler(async () => [
+ { id: 1, name: 'Teenage Dirtbag', artist: 'Wheatus' },
+ { id: 2, name: 'Smells Like Teen Spirit', artist: 'Nirvana' },
+ { id: 3, name: 'The Middle', artist: 'Jimmy Eat World' },
+ { id: 4, name: 'My Own Worst Enemy', artist: 'Lit' },
+ { id: 5, name: 'Fat Lip', artist: 'Sum 41' },
+ { id: 6, name: 'All the Small Things', artist: 'blink-182' },
+ { id: 7, name: 'Beverly Hills', artist: 'Weezer' },
+])
diff --git a/examples/react/bundling-repro/src/feat/ai-devtools.tsx b/examples/react/bundling-repro/src/feat/ai-devtools.tsx
new file mode 100644
index 00000000..328ca0ac
--- /dev/null
+++ b/examples/react/bundling-repro/src/feat/ai-devtools.tsx
@@ -0,0 +1,3 @@
+import { aiDevtoolsPlugin } from '@tanstack/react-ai-devtools'
+
+export default aiDevtoolsPlugin()
diff --git a/examples/react/bundling-repro/src/feat/demo-ai-hook.ts b/examples/react/bundling-repro/src/feat/demo-ai-hook.ts
new file mode 100644
index 00000000..ec775e97
--- /dev/null
+++ b/examples/react/bundling-repro/src/feat/demo-ai-hook.ts
@@ -0,0 +1,22 @@
+import {
+ fetchServerSentEvents,
+ useChat,
+ createChatClientOptions,
+} from '@tanstack/ai-react'
+import type { InferChatMessages } from '@tanstack/ai-react'
+import { clientTools } from '@tanstack/ai-client'
+
+import { recommendGuitarToolDef } from '@/feat/demo-guitar-tools'
+
+const recommendGuitarToolClient = recommendGuitarToolDef.client(({ id }) => ({
+ id: +id,
+}))
+
+const chatOptions = createChatClientOptions({
+ connection: fetchServerSentEvents('/demo/api/ai/chat'),
+ tools: clientTools(recommendGuitarToolClient),
+})
+
+export type ChatMessages = InferChatMessages
+
+export const useGuitarRecommendationChat = () => useChat(chatOptions)
diff --git a/examples/react/bundling-repro/src/feat/demo-guitar-tools.ts b/examples/react/bundling-repro/src/feat/demo-guitar-tools.ts
new file mode 100644
index 00000000..eb77984e
--- /dev/null
+++ b/examples/react/bundling-repro/src/feat/demo-guitar-tools.ts
@@ -0,0 +1,40 @@
+import { toolDefinition } from '@tanstack/ai'
+import { z } from 'zod'
+import guitars from '@/data/demo-guitars'
+
+// Tool definition for getting guitars
+export const getGuitarsToolDef = toolDefinition({
+ name: 'getGuitars',
+ description: 'Get all products from the database',
+ inputSchema: z.object({}),
+ outputSchema: z.array(
+ z.object({
+ id: z.number(),
+ name: z.string(),
+ image: z.string(),
+ description: z.string(),
+ shortDescription: z.string(),
+ price: z.number(),
+ }),
+ ),
+})
+
+// Server implementation
+export const getGuitars = getGuitarsToolDef.server(() => guitars)
+
+// Tool definition for guitar recommendation
+export const recommendGuitarToolDef = toolDefinition({
+ name: 'recommendGuitar',
+ description:
+ 'REQUIRED tool to display a guitar recommendation to the user. This tool MUST be used whenever recommending a guitar - do NOT write recommendations yourself. This displays the guitar in a special appealing format with a buy button.',
+ inputSchema: z.object({
+ id: z
+ .union([z.string(), z.number()])
+ .describe(
+ 'The ID of the guitar to recommend (from the getGuitars results)',
+ ),
+ }),
+ outputSchema: z.object({
+ id: z.number(),
+ }),
+})
diff --git a/examples/react/bundling-repro/src/feat/demo-store-devtools.tsx b/examples/react/bundling-repro/src/feat/demo-store-devtools.tsx
new file mode 100644
index 00000000..9b66f01e
--- /dev/null
+++ b/examples/react/bundling-repro/src/feat/demo-store-devtools.tsx
@@ -0,0 +1,64 @@
+import { EventClient } from '@tanstack/devtools-event-client'
+import { useState, useEffect } from 'react'
+
+import { store, fullName } from './demo-store'
+
+type EventMap = {
+ 'store-devtools:state': {
+ firstName: string
+ lastName: string
+ fullName: string
+ }
+}
+
+class StoreDevtoolsEventClient extends EventClient {
+ constructor() {
+ super({
+ pluginId: 'store-devtools',
+ })
+ }
+}
+
+const sdec = new StoreDevtoolsEventClient()
+
+store.subscribe(() => {
+ sdec.emit('state', {
+ firstName: store.state.firstName,
+ lastName: store.state.lastName,
+ fullName: fullName.state,
+ })
+})
+
+function DevtoolPanel() {
+ const [state, setState] = useState(() => ({
+ firstName: store.state.firstName,
+ lastName: store.state.lastName,
+ fullName: fullName.state,
+ }))
+
+ useEffect(() => {
+ return sdec.on('state', (e) => setState(e.payload))
+ }, [])
+
+ return (
+
+
+ First Name
+
+
{state?.firstName}
+
+ Last Name
+
+
{state?.lastName}
+
+ Full Name
+
+
{state?.fullName}
+
+ )
+}
+
+export default {
+ name: 'TanStack Store',
+ render: ,
+}
diff --git a/examples/react/bundling-repro/src/feat/demo-store.ts b/examples/react/bundling-repro/src/feat/demo-store.ts
new file mode 100644
index 00000000..8a3101e4
--- /dev/null
+++ b/examples/react/bundling-repro/src/feat/demo-store.ts
@@ -0,0 +1,13 @@
+import { Derived, Store } from '@tanstack/store'
+
+export const store = new Store({
+ firstName: 'Jane',
+ lastName: 'Smith',
+})
+
+export const fullName = new Derived({
+ fn: () => `${store.state.firstName} ${store.state.lastName}`,
+ deps: [store],
+})
+
+fullName.mount()
diff --git a/examples/react/bundling-repro/src/feat/utils.ts b/examples/react/bundling-repro/src/feat/utils.ts
new file mode 100644
index 00000000..fed2fe91
--- /dev/null
+++ b/examples/react/bundling-repro/src/feat/utils.ts
@@ -0,0 +1,6 @@
+import { clsx, type ClassValue } from 'clsx'
+import { twMerge } from 'tailwind-merge'
+
+export function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs))
+}
diff --git a/examples/react/bundling-repro/src/hooks/demo-useAudioRecorder.ts b/examples/react/bundling-repro/src/hooks/demo-useAudioRecorder.ts
new file mode 100644
index 00000000..e3362090
--- /dev/null
+++ b/examples/react/bundling-repro/src/hooks/demo-useAudioRecorder.ts
@@ -0,0 +1,85 @@
+import { useCallback, useRef, useState } from 'react'
+
+/**
+ * Hook for recording audio and transcribing it via the transcription API.
+ */
+export function useAudioRecorder() {
+ const [isRecording, setIsRecording] = useState(false)
+ const [isTranscribing, setIsTranscribing] = useState(false)
+ const mediaRecorderRef = useRef(null)
+ const chunksRef = useRef([])
+
+ const startRecording = useCallback(async () => {
+ try {
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
+ const mediaRecorder = new MediaRecorder(stream, {
+ mimeType: 'audio/webm;codecs=opus',
+ })
+ mediaRecorderRef.current = mediaRecorder
+ chunksRef.current = []
+
+ mediaRecorder.ondataavailable = (e) => {
+ if (e.data.size > 0) {
+ chunksRef.current.push(e.data)
+ }
+ }
+
+ mediaRecorder.start()
+ setIsRecording(true)
+ } catch (error) {
+ console.error('Failed to start recording:', error)
+ alert('Could not access microphone. Please check permissions.')
+ }
+ }, [])
+
+ const stopRecording = useCallback(async (): Promise => {
+ return new Promise((resolve) => {
+ const mediaRecorder = mediaRecorderRef.current
+ if (!mediaRecorder) {
+ resolve(null)
+ return
+ }
+
+ mediaRecorder.onstop = async () => {
+ setIsRecording(false)
+ setIsTranscribing(true)
+
+ const audioBlob = new Blob(chunksRef.current, { type: 'audio/webm' })
+
+ // Stop all tracks
+ mediaRecorder.stream.getTracks().forEach((track) => track.stop())
+
+ try {
+ const formData = new FormData()
+ formData.append(
+ 'audio',
+ new File([audioBlob], 'recording.webm', { type: 'audio/webm' }),
+ )
+ formData.append('model', 'whisper-1')
+
+ const response = await fetch('/demo/api/transcription', {
+ method: 'POST',
+ body: formData,
+ })
+
+ if (!response.ok) {
+ const errorData = await response.json()
+ throw new Error(errorData.error || 'Transcription failed')
+ }
+
+ const result = await response.json()
+ setIsTranscribing(false)
+ resolve(result.text || null)
+ } catch (error) {
+ console.error('Transcription error:', error)
+ setIsTranscribing(false)
+ resolve(null)
+ }
+ }
+
+ mediaRecorder.stop()
+ })
+ }, [])
+
+ return { isRecording, isTranscribing, startRecording, stopRecording }
+}
diff --git a/examples/react/bundling-repro/src/hooks/demo-useTTS.ts b/examples/react/bundling-repro/src/hooks/demo-useTTS.ts
new file mode 100644
index 00000000..a9ddd81a
--- /dev/null
+++ b/examples/react/bundling-repro/src/hooks/demo-useTTS.ts
@@ -0,0 +1,78 @@
+import { useCallback, useRef, useState } from 'react'
+
+/**
+ * Hook for text-to-speech playback via the TTS API.
+ */
+export function useTTS() {
+ const [playingId, setPlayingId] = useState(null)
+ const audioRef = useRef(null)
+
+ const speak = useCallback(async (text: string, id: string) => {
+ // Stop any currently playing audio
+ if (audioRef.current) {
+ audioRef.current.pause()
+ audioRef.current = null
+ }
+
+ setPlayingId(id)
+
+ try {
+ const response = await fetch('/demo/api/tts', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({
+ text,
+ voice: 'nova',
+ model: 'tts-1',
+ format: 'mp3',
+ }),
+ })
+
+ if (!response.ok) {
+ const errorData = await response.json()
+ throw new Error(errorData.error || 'TTS failed')
+ }
+
+ const result = await response.json()
+
+ // Convert base64 to audio and play
+ const audioData = atob(result.audio)
+ const bytes = new Uint8Array(audioData.length)
+ for (let i = 0; i < audioData.length; i++) {
+ bytes[i] = audioData.charCodeAt(i)
+ }
+ const blob = new Blob([bytes], { type: result.contentType })
+ const url = URL.createObjectURL(blob)
+
+ const audio = new Audio(url)
+ audioRef.current = audio
+
+ audio.onended = () => {
+ URL.revokeObjectURL(url)
+ setPlayingId(null)
+ audioRef.current = null
+ }
+
+ audio.onerror = () => {
+ URL.revokeObjectURL(url)
+ setPlayingId(null)
+ audioRef.current = null
+ }
+
+ await audio.play()
+ } catch (error) {
+ console.error('TTS error:', error)
+ setPlayingId(null)
+ }
+ }, [])
+
+ const stop = useCallback(() => {
+ if (audioRef.current) {
+ audioRef.current.pause()
+ audioRef.current = null
+ }
+ setPlayingId(null)
+ }, [])
+
+ return { playingId, speak, stop }
+}
diff --git a/examples/react/bundling-repro/src/integrations/tanstack-query/devtools.tsx b/examples/react/bundling-repro/src/integrations/tanstack-query/devtools.tsx
new file mode 100644
index 00000000..94c68c93
--- /dev/null
+++ b/examples/react/bundling-repro/src/integrations/tanstack-query/devtools.tsx
@@ -0,0 +1,6 @@
+import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'
+
+export default {
+ name: 'Tanstack Query',
+ render: ,
+}
diff --git a/examples/react/bundling-repro/src/integrations/tanstack-query/root-provider.tsx b/examples/react/bundling-repro/src/integrations/tanstack-query/root-provider.tsx
new file mode 100644
index 00000000..5a6ff088
--- /dev/null
+++ b/examples/react/bundling-repro/src/integrations/tanstack-query/root-provider.tsx
@@ -0,0 +1,20 @@
+import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
+
+export function getContext() {
+ const queryClient = new QueryClient()
+ return {
+ queryClient,
+ }
+}
+
+export function Provider({
+ children,
+ queryClient,
+}: {
+ children: React.ReactNode
+ queryClient: QueryClient
+}) {
+ return (
+ {children}
+ )
+}
diff --git a/examples/react/bundling-repro/src/logo.svg b/examples/react/bundling-repro/src/logo.svg
new file mode 100644
index 00000000..fe53fe8d
--- /dev/null
+++ b/examples/react/bundling-repro/src/logo.svg
@@ -0,0 +1,12 @@
+
+
+ logo
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/react/bundling-repro/src/routeTree.gen.ts b/examples/react/bundling-repro/src/routeTree.gen.ts
new file mode 100644
index 00000000..4c4c6249
--- /dev/null
+++ b/examples/react/bundling-repro/src/routeTree.gen.ts
@@ -0,0 +1,492 @@
+/* eslint-disable */
+
+// @ts-nocheck
+
+// noinspection JSUnusedGlobalSymbols
+
+// This file was automatically generated by TanStack Router.
+// You should NOT make any changes in this file as it will be overwritten.
+// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
+
+import { Route as rootRouteImport } from './routes/__root'
+import { Route as IndexRouteImport } from './routes/index'
+import { Route as DemoTanstackQueryRouteImport } from './routes/demo/tanstack-query'
+import { Route as DemoStoreRouteImport } from './routes/demo/store'
+import { Route as DemoAiStructuredRouteImport } from './routes/demo/ai-structured'
+import { Route as DemoAiImageRouteImport } from './routes/demo/ai-image'
+import { Route as DemoAiChatRouteImport } from './routes/demo/ai-chat'
+import { Route as DemoGuitarsIndexRouteImport } from './routes/demo/guitars/index'
+import { Route as DemoStartServerFuncsRouteImport } from './routes/demo/start.server-funcs'
+import { Route as DemoStartApiRequestRouteImport } from './routes/demo/start.api-request'
+import { Route as DemoGuitarsGuitarIdRouteImport } from './routes/demo/guitars/$guitarId'
+import { Route as DemoApiTqTodosRouteImport } from './routes/demo/api.tq-todos'
+import { Route as DemoApiNamesRouteImport } from './routes/demo/api.names'
+import { Route as DemoStartSsrIndexRouteImport } from './routes/demo/start.ssr.index'
+import { Route as DemoStartSsrSpaModeRouteImport } from './routes/demo/start.ssr.spa-mode'
+import { Route as DemoStartSsrFullSsrRouteImport } from './routes/demo/start.ssr.full-ssr'
+import { Route as DemoStartSsrDataOnlyRouteImport } from './routes/demo/start.ssr.data-only'
+import { Route as DemoApiAiTtsRouteImport } from './routes/demo/api.ai.tts'
+import { Route as DemoApiAiTranscriptionRouteImport } from './routes/demo/api.ai.transcription'
+import { Route as DemoApiAiStructuredRouteImport } from './routes/demo/api.ai.structured'
+import { Route as DemoApiAiImageRouteImport } from './routes/demo/api.ai.image'
+import { Route as DemoApiAiChatRouteImport } from './routes/demo/api.ai.chat'
+
+const IndexRoute = IndexRouteImport.update({
+ id: '/',
+ path: '/',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoTanstackQueryRoute = DemoTanstackQueryRouteImport.update({
+ id: '/demo/tanstack-query',
+ path: '/demo/tanstack-query',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStoreRoute = DemoStoreRouteImport.update({
+ id: '/demo/store',
+ path: '/demo/store',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoAiStructuredRoute = DemoAiStructuredRouteImport.update({
+ id: '/demo/ai-structured',
+ path: '/demo/ai-structured',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoAiImageRoute = DemoAiImageRouteImport.update({
+ id: '/demo/ai-image',
+ path: '/demo/ai-image',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoAiChatRoute = DemoAiChatRouteImport.update({
+ id: '/demo/ai-chat',
+ path: '/demo/ai-chat',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoGuitarsIndexRoute = DemoGuitarsIndexRouteImport.update({
+ id: '/demo/guitars/',
+ path: '/demo/guitars/',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStartServerFuncsRoute = DemoStartServerFuncsRouteImport.update({
+ id: '/demo/start/server-funcs',
+ path: '/demo/start/server-funcs',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStartApiRequestRoute = DemoStartApiRequestRouteImport.update({
+ id: '/demo/start/api-request',
+ path: '/demo/start/api-request',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoGuitarsGuitarIdRoute = DemoGuitarsGuitarIdRouteImport.update({
+ id: '/demo/guitars/$guitarId',
+ path: '/demo/guitars/$guitarId',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiTqTodosRoute = DemoApiTqTodosRouteImport.update({
+ id: '/demo/api/tq-todos',
+ path: '/demo/api/tq-todos',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiNamesRoute = DemoApiNamesRouteImport.update({
+ id: '/demo/api/names',
+ path: '/demo/api/names',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStartSsrIndexRoute = DemoStartSsrIndexRouteImport.update({
+ id: '/demo/start/ssr/',
+ path: '/demo/start/ssr/',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStartSsrSpaModeRoute = DemoStartSsrSpaModeRouteImport.update({
+ id: '/demo/start/ssr/spa-mode',
+ path: '/demo/start/ssr/spa-mode',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStartSsrFullSsrRoute = DemoStartSsrFullSsrRouteImport.update({
+ id: '/demo/start/ssr/full-ssr',
+ path: '/demo/start/ssr/full-ssr',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoStartSsrDataOnlyRoute = DemoStartSsrDataOnlyRouteImport.update({
+ id: '/demo/start/ssr/data-only',
+ path: '/demo/start/ssr/data-only',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiAiTtsRoute = DemoApiAiTtsRouteImport.update({
+ id: '/demo/api/ai/tts',
+ path: '/demo/api/ai/tts',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiAiTranscriptionRoute = DemoApiAiTranscriptionRouteImport.update({
+ id: '/demo/api/ai/transcription',
+ path: '/demo/api/ai/transcription',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiAiStructuredRoute = DemoApiAiStructuredRouteImport.update({
+ id: '/demo/api/ai/structured',
+ path: '/demo/api/ai/structured',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiAiImageRoute = DemoApiAiImageRouteImport.update({
+ id: '/demo/api/ai/image',
+ path: '/demo/api/ai/image',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const DemoApiAiChatRoute = DemoApiAiChatRouteImport.update({
+ id: '/demo/api/ai/chat',
+ path: '/demo/api/ai/chat',
+ getParentRoute: () => rootRouteImport,
+} as any)
+
+export interface FileRoutesByFullPath {
+ '/': typeof IndexRoute
+ '/demo/ai-chat': typeof DemoAiChatRoute
+ '/demo/ai-image': typeof DemoAiImageRoute
+ '/demo/ai-structured': typeof DemoAiStructuredRoute
+ '/demo/store': typeof DemoStoreRoute
+ '/demo/tanstack-query': typeof DemoTanstackQueryRoute
+ '/demo/api/names': typeof DemoApiNamesRoute
+ '/demo/api/tq-todos': typeof DemoApiTqTodosRoute
+ '/demo/guitars/$guitarId': typeof DemoGuitarsGuitarIdRoute
+ '/demo/start/api-request': typeof DemoStartApiRequestRoute
+ '/demo/start/server-funcs': typeof DemoStartServerFuncsRoute
+ '/demo/guitars': typeof DemoGuitarsIndexRoute
+ '/demo/api/ai/chat': typeof DemoApiAiChatRoute
+ '/demo/api/ai/image': typeof DemoApiAiImageRoute
+ '/demo/api/ai/structured': typeof DemoApiAiStructuredRoute
+ '/demo/api/ai/transcription': typeof DemoApiAiTranscriptionRoute
+ '/demo/api/ai/tts': typeof DemoApiAiTtsRoute
+ '/demo/start/ssr/data-only': typeof DemoStartSsrDataOnlyRoute
+ '/demo/start/ssr/full-ssr': typeof DemoStartSsrFullSsrRoute
+ '/demo/start/ssr/spa-mode': typeof DemoStartSsrSpaModeRoute
+ '/demo/start/ssr': typeof DemoStartSsrIndexRoute
+}
+export interface FileRoutesByTo {
+ '/': typeof IndexRoute
+ '/demo/ai-chat': typeof DemoAiChatRoute
+ '/demo/ai-image': typeof DemoAiImageRoute
+ '/demo/ai-structured': typeof DemoAiStructuredRoute
+ '/demo/store': typeof DemoStoreRoute
+ '/demo/tanstack-query': typeof DemoTanstackQueryRoute
+ '/demo/api/names': typeof DemoApiNamesRoute
+ '/demo/api/tq-todos': typeof DemoApiTqTodosRoute
+ '/demo/guitars/$guitarId': typeof DemoGuitarsGuitarIdRoute
+ '/demo/start/api-request': typeof DemoStartApiRequestRoute
+ '/demo/start/server-funcs': typeof DemoStartServerFuncsRoute
+ '/demo/guitars': typeof DemoGuitarsIndexRoute
+ '/demo/api/ai/chat': typeof DemoApiAiChatRoute
+ '/demo/api/ai/image': typeof DemoApiAiImageRoute
+ '/demo/api/ai/structured': typeof DemoApiAiStructuredRoute
+ '/demo/api/ai/transcription': typeof DemoApiAiTranscriptionRoute
+ '/demo/api/ai/tts': typeof DemoApiAiTtsRoute
+ '/demo/start/ssr/data-only': typeof DemoStartSsrDataOnlyRoute
+ '/demo/start/ssr/full-ssr': typeof DemoStartSsrFullSsrRoute
+ '/demo/start/ssr/spa-mode': typeof DemoStartSsrSpaModeRoute
+ '/demo/start/ssr': typeof DemoStartSsrIndexRoute
+}
+export interface FileRoutesById {
+ __root__: typeof rootRouteImport
+ '/': typeof IndexRoute
+ '/demo/ai-chat': typeof DemoAiChatRoute
+ '/demo/ai-image': typeof DemoAiImageRoute
+ '/demo/ai-structured': typeof DemoAiStructuredRoute
+ '/demo/store': typeof DemoStoreRoute
+ '/demo/tanstack-query': typeof DemoTanstackQueryRoute
+ '/demo/api/names': typeof DemoApiNamesRoute
+ '/demo/api/tq-todos': typeof DemoApiTqTodosRoute
+ '/demo/guitars/$guitarId': typeof DemoGuitarsGuitarIdRoute
+ '/demo/start/api-request': typeof DemoStartApiRequestRoute
+ '/demo/start/server-funcs': typeof DemoStartServerFuncsRoute
+ '/demo/guitars/': typeof DemoGuitarsIndexRoute
+ '/demo/api/ai/chat': typeof DemoApiAiChatRoute
+ '/demo/api/ai/image': typeof DemoApiAiImageRoute
+ '/demo/api/ai/structured': typeof DemoApiAiStructuredRoute
+ '/demo/api/ai/transcription': typeof DemoApiAiTranscriptionRoute
+ '/demo/api/ai/tts': typeof DemoApiAiTtsRoute
+ '/demo/start/ssr/data-only': typeof DemoStartSsrDataOnlyRoute
+ '/demo/start/ssr/full-ssr': typeof DemoStartSsrFullSsrRoute
+ '/demo/start/ssr/spa-mode': typeof DemoStartSsrSpaModeRoute
+ '/demo/start/ssr/': typeof DemoStartSsrIndexRoute
+}
+export interface FileRouteTypes {
+ fileRoutesByFullPath: FileRoutesByFullPath
+ fullPaths:
+ | '/'
+ | '/demo/ai-chat'
+ | '/demo/ai-image'
+ | '/demo/ai-structured'
+ | '/demo/store'
+ | '/demo/tanstack-query'
+ | '/demo/api/names'
+ | '/demo/api/tq-todos'
+ | '/demo/guitars/$guitarId'
+ | '/demo/start/api-request'
+ | '/demo/start/server-funcs'
+ | '/demo/guitars'
+ | '/demo/api/ai/chat'
+ | '/demo/api/ai/image'
+ | '/demo/api/ai/structured'
+ | '/demo/api/ai/transcription'
+ | '/demo/api/ai/tts'
+ | '/demo/start/ssr/data-only'
+ | '/demo/start/ssr/full-ssr'
+ | '/demo/start/ssr/spa-mode'
+ | '/demo/start/ssr'
+ fileRoutesByTo: FileRoutesByTo
+ to:
+ | '/'
+ | '/demo/ai-chat'
+ | '/demo/ai-image'
+ | '/demo/ai-structured'
+ | '/demo/store'
+ | '/demo/tanstack-query'
+ | '/demo/api/names'
+ | '/demo/api/tq-todos'
+ | '/demo/guitars/$guitarId'
+ | '/demo/start/api-request'
+ | '/demo/start/server-funcs'
+ | '/demo/guitars'
+ | '/demo/api/ai/chat'
+ | '/demo/api/ai/image'
+ | '/demo/api/ai/structured'
+ | '/demo/api/ai/transcription'
+ | '/demo/api/ai/tts'
+ | '/demo/start/ssr/data-only'
+ | '/demo/start/ssr/full-ssr'
+ | '/demo/start/ssr/spa-mode'
+ | '/demo/start/ssr'
+ id:
+ | '__root__'
+ | '/'
+ | '/demo/ai-chat'
+ | '/demo/ai-image'
+ | '/demo/ai-structured'
+ | '/demo/store'
+ | '/demo/tanstack-query'
+ | '/demo/api/names'
+ | '/demo/api/tq-todos'
+ | '/demo/guitars/$guitarId'
+ | '/demo/start/api-request'
+ | '/demo/start/server-funcs'
+ | '/demo/guitars/'
+ | '/demo/api/ai/chat'
+ | '/demo/api/ai/image'
+ | '/demo/api/ai/structured'
+ | '/demo/api/ai/transcription'
+ | '/demo/api/ai/tts'
+ | '/demo/start/ssr/data-only'
+ | '/demo/start/ssr/full-ssr'
+ | '/demo/start/ssr/spa-mode'
+ | '/demo/start/ssr/'
+ fileRoutesById: FileRoutesById
+}
+export interface RootRouteChildren {
+ IndexRoute: typeof IndexRoute
+ DemoAiChatRoute: typeof DemoAiChatRoute
+ DemoAiImageRoute: typeof DemoAiImageRoute
+ DemoAiStructuredRoute: typeof DemoAiStructuredRoute
+ DemoStoreRoute: typeof DemoStoreRoute
+ DemoTanstackQueryRoute: typeof DemoTanstackQueryRoute
+ DemoApiNamesRoute: typeof DemoApiNamesRoute
+ DemoApiTqTodosRoute: typeof DemoApiTqTodosRoute
+ DemoGuitarsGuitarIdRoute: typeof DemoGuitarsGuitarIdRoute
+ DemoStartApiRequestRoute: typeof DemoStartApiRequestRoute
+ DemoStartServerFuncsRoute: typeof DemoStartServerFuncsRoute
+ DemoGuitarsIndexRoute: typeof DemoGuitarsIndexRoute
+ DemoApiAiChatRoute: typeof DemoApiAiChatRoute
+ DemoApiAiImageRoute: typeof DemoApiAiImageRoute
+ DemoApiAiStructuredRoute: typeof DemoApiAiStructuredRoute
+ DemoApiAiTranscriptionRoute: typeof DemoApiAiTranscriptionRoute
+ DemoApiAiTtsRoute: typeof DemoApiAiTtsRoute
+ DemoStartSsrDataOnlyRoute: typeof DemoStartSsrDataOnlyRoute
+ DemoStartSsrFullSsrRoute: typeof DemoStartSsrFullSsrRoute
+ DemoStartSsrSpaModeRoute: typeof DemoStartSsrSpaModeRoute
+ DemoStartSsrIndexRoute: typeof DemoStartSsrIndexRoute
+}
+
+declare module '@tanstack/react-router' {
+ interface FileRoutesByPath {
+ '/': {
+ id: '/'
+ path: '/'
+ fullPath: '/'
+ preLoaderRoute: typeof IndexRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/tanstack-query': {
+ id: '/demo/tanstack-query'
+ path: '/demo/tanstack-query'
+ fullPath: '/demo/tanstack-query'
+ preLoaderRoute: typeof DemoTanstackQueryRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/store': {
+ id: '/demo/store'
+ path: '/demo/store'
+ fullPath: '/demo/store'
+ preLoaderRoute: typeof DemoStoreRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/ai-structured': {
+ id: '/demo/ai-structured'
+ path: '/demo/ai-structured'
+ fullPath: '/demo/ai-structured'
+ preLoaderRoute: typeof DemoAiStructuredRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/ai-image': {
+ id: '/demo/ai-image'
+ path: '/demo/ai-image'
+ fullPath: '/demo/ai-image'
+ preLoaderRoute: typeof DemoAiImageRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/ai-chat': {
+ id: '/demo/ai-chat'
+ path: '/demo/ai-chat'
+ fullPath: '/demo/ai-chat'
+ preLoaderRoute: typeof DemoAiChatRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/guitars/': {
+ id: '/demo/guitars/'
+ path: '/demo/guitars'
+ fullPath: '/demo/guitars'
+ preLoaderRoute: typeof DemoGuitarsIndexRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/start/server-funcs': {
+ id: '/demo/start/server-funcs'
+ path: '/demo/start/server-funcs'
+ fullPath: '/demo/start/server-funcs'
+ preLoaderRoute: typeof DemoStartServerFuncsRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/start/api-request': {
+ id: '/demo/start/api-request'
+ path: '/demo/start/api-request'
+ fullPath: '/demo/start/api-request'
+ preLoaderRoute: typeof DemoStartApiRequestRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/guitars/$guitarId': {
+ id: '/demo/guitars/$guitarId'
+ path: '/demo/guitars/$guitarId'
+ fullPath: '/demo/guitars/$guitarId'
+ preLoaderRoute: typeof DemoGuitarsGuitarIdRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/tq-todos': {
+ id: '/demo/api/tq-todos'
+ path: '/demo/api/tq-todos'
+ fullPath: '/demo/api/tq-todos'
+ preLoaderRoute: typeof DemoApiTqTodosRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/names': {
+ id: '/demo/api/names'
+ path: '/demo/api/names'
+ fullPath: '/demo/api/names'
+ preLoaderRoute: typeof DemoApiNamesRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/start/ssr/': {
+ id: '/demo/start/ssr/'
+ path: '/demo/start/ssr'
+ fullPath: '/demo/start/ssr'
+ preLoaderRoute: typeof DemoStartSsrIndexRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/start/ssr/spa-mode': {
+ id: '/demo/start/ssr/spa-mode'
+ path: '/demo/start/ssr/spa-mode'
+ fullPath: '/demo/start/ssr/spa-mode'
+ preLoaderRoute: typeof DemoStartSsrSpaModeRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/start/ssr/full-ssr': {
+ id: '/demo/start/ssr/full-ssr'
+ path: '/demo/start/ssr/full-ssr'
+ fullPath: '/demo/start/ssr/full-ssr'
+ preLoaderRoute: typeof DemoStartSsrFullSsrRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/start/ssr/data-only': {
+ id: '/demo/start/ssr/data-only'
+ path: '/demo/start/ssr/data-only'
+ fullPath: '/demo/start/ssr/data-only'
+ preLoaderRoute: typeof DemoStartSsrDataOnlyRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/ai/tts': {
+ id: '/demo/api/ai/tts'
+ path: '/demo/api/ai/tts'
+ fullPath: '/demo/api/ai/tts'
+ preLoaderRoute: typeof DemoApiAiTtsRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/ai/transcription': {
+ id: '/demo/api/ai/transcription'
+ path: '/demo/api/ai/transcription'
+ fullPath: '/demo/api/ai/transcription'
+ preLoaderRoute: typeof DemoApiAiTranscriptionRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/ai/structured': {
+ id: '/demo/api/ai/structured'
+ path: '/demo/api/ai/structured'
+ fullPath: '/demo/api/ai/structured'
+ preLoaderRoute: typeof DemoApiAiStructuredRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/ai/image': {
+ id: '/demo/api/ai/image'
+ path: '/demo/api/ai/image'
+ fullPath: '/demo/api/ai/image'
+ preLoaderRoute: typeof DemoApiAiImageRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/demo/api/ai/chat': {
+ id: '/demo/api/ai/chat'
+ path: '/demo/api/ai/chat'
+ fullPath: '/demo/api/ai/chat'
+ preLoaderRoute: typeof DemoApiAiChatRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ }
+}
+
+const rootRouteChildren: RootRouteChildren = {
+ IndexRoute: IndexRoute,
+ DemoAiChatRoute: DemoAiChatRoute,
+ DemoAiImageRoute: DemoAiImageRoute,
+ DemoAiStructuredRoute: DemoAiStructuredRoute,
+ DemoStoreRoute: DemoStoreRoute,
+ DemoTanstackQueryRoute: DemoTanstackQueryRoute,
+ DemoApiNamesRoute: DemoApiNamesRoute,
+ DemoApiTqTodosRoute: DemoApiTqTodosRoute,
+ DemoGuitarsGuitarIdRoute: DemoGuitarsGuitarIdRoute,
+ DemoStartApiRequestRoute: DemoStartApiRequestRoute,
+ DemoStartServerFuncsRoute: DemoStartServerFuncsRoute,
+ DemoGuitarsIndexRoute: DemoGuitarsIndexRoute,
+ DemoApiAiChatRoute: DemoApiAiChatRoute,
+ DemoApiAiImageRoute: DemoApiAiImageRoute,
+ DemoApiAiStructuredRoute: DemoApiAiStructuredRoute,
+ DemoApiAiTranscriptionRoute: DemoApiAiTranscriptionRoute,
+ DemoApiAiTtsRoute: DemoApiAiTtsRoute,
+ DemoStartSsrDataOnlyRoute: DemoStartSsrDataOnlyRoute,
+ DemoStartSsrFullSsrRoute: DemoStartSsrFullSsrRoute,
+ DemoStartSsrSpaModeRoute: DemoStartSsrSpaModeRoute,
+ DemoStartSsrIndexRoute: DemoStartSsrIndexRoute,
+}
+export const routeTree = rootRouteImport
+ ._addFileChildren(rootRouteChildren)
+ ._addFileTypes()
+
+import type { getRouter } from './router.tsx'
+import type { createStart } from '@tanstack/react-start'
+declare module '@tanstack/react-start' {
+ interface Register {
+ ssr: true
+ router: Awaited>
+ }
+}
diff --git a/examples/react/bundling-repro/src/router.tsx b/examples/react/bundling-repro/src/router.tsx
new file mode 100644
index 00000000..e9143bd9
--- /dev/null
+++ b/examples/react/bundling-repro/src/router.tsx
@@ -0,0 +1,24 @@
+import { createRouter } from '@tanstack/react-router'
+import { setupRouterSsrQueryIntegration } from '@tanstack/react-router-ssr-query'
+import * as TanstackQuery from './integrations/tanstack-query/root-provider'
+
+// Import the generated route tree
+import { routeTree } from './routeTree.gen'
+
+// Create a new router instance
+export const getRouter = () => {
+ const rqContext = TanstackQuery.getContext()
+
+ const router = createRouter({
+ routeTree,
+ context: {
+ ...rqContext,
+ },
+
+ defaultPreload: 'intent',
+ })
+
+ setupRouterSsrQueryIntegration({ router, queryClient: rqContext.queryClient })
+
+ return router
+}
diff --git a/examples/react/bundling-repro/src/routes/__root.tsx b/examples/react/bundling-repro/src/routes/__root.tsx
new file mode 100644
index 00000000..7e9609b7
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/__root.tsx
@@ -0,0 +1,77 @@
+import {
+ HeadContent,
+ Scripts,
+ createRootRouteWithContext,
+} from '@tanstack/react-router'
+import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
+import { TanStackDevtools } from '@tanstack/react-devtools'
+
+import Header from '../components/Header'
+
+import TanStackQueryDevtools from '../integrations/tanstack-query/devtools'
+
+import AiDevtools from '../feat/ai-devtools'
+
+import StoreDevtools from '../feat/demo-store-devtools'
+
+import appCss from '../styles.css?url'
+
+import type { QueryClient } from '@tanstack/react-query'
+
+interface MyRouterContext {
+ queryClient: QueryClient
+}
+
+export const Route = createRootRouteWithContext()({
+ head: () => ({
+ meta: [
+ {
+ charSet: 'utf-8',
+ },
+ {
+ name: 'viewport',
+ content: 'width=device-width, initial-scale=1',
+ },
+ {
+ title: 'TanStack Start Starter',
+ },
+ ],
+ links: [
+ {
+ rel: 'stylesheet',
+ href: appCss,
+ },
+ ],
+ }),
+
+ shellComponent: RootDocument,
+})
+
+function RootDocument({ children }: { children: React.ReactNode }) {
+ return (
+
+
+
+
+
+
+ {children}
+ ,
+ },
+ TanStackQueryDevtools,
+ AiDevtools,
+ StoreDevtools,
+ ]}
+ />
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/ai-chat.css b/examples/react/bundling-repro/src/routes/demo/ai-chat.css
new file mode 100644
index 00000000..549ca5cd
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/ai-chat.css
@@ -0,0 +1,228 @@
+@import 'tailwindcss';
+@import 'highlight.js/styles/github-dark.css';
+@source "../../../../node_modules/streamdown/dist/*.js";
+
+/* Custom scrollbar styles */
+::-webkit-scrollbar {
+ width: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: transparent;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: rgba(156, 163, 175, 0.5);
+ border-radius: 4px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background-color: rgba(156, 163, 175, 0.7);
+}
+
+/* Smooth transitions for dark mode */
+html {
+ transition: background-color 0.3s ease;
+}
+
+/* Markdown content styles */
+.prose {
+ max-width: none;
+ color: #e5e7eb; /* text-gray-200 */
+}
+
+/* .prose p {
+ margin-top: 1.25em;
+ margin-bottom: 1.25em;
+} */
+
+.prose code {
+ color: #e5e7eb;
+ background-color: rgba(31, 41, 55, 0.5);
+ padding: 0.2em 0.4em;
+ border-radius: 0.375rem;
+ font-size: 0.875em;
+}
+
+.prose pre {
+ background-color: rgba(31, 41, 55, 0.5);
+ border-radius: 0.5rem;
+ padding: 1rem;
+ margin: 1.25em 0;
+ overflow-x: auto;
+}
+
+.prose pre code {
+ background-color: transparent;
+ padding: 0;
+ border-radius: 0;
+ color: inherit;
+}
+
+.prose h1,
+.prose h2,
+.prose h3,
+.prose h4 {
+ color: #f9fafb; /* text-gray-50 */
+ /* margin-top: 2em; */
+ /* margin-bottom: 1em; */
+}
+
+.prose ul,
+.prose ol {
+ margin-top: 1.25em;
+ margin-bottom: 1.25em;
+ padding-left: 1.625em;
+}
+
+.prose li {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+.prose blockquote {
+ border-left-color: #f97316; /* orange-500 */
+ background-color: rgba(249, 115, 22, 0.1);
+ padding: 1em;
+ margin: 1.25em 0;
+ border-radius: 0.5rem;
+}
+
+.prose hr {
+ border-color: rgba(249, 115, 22, 0.2);
+ margin: 2em 0;
+}
+
+.prose a {
+ color: #f97316; /* orange-500 */
+ text-decoration: underline;
+ text-decoration-thickness: 0.1em;
+ text-underline-offset: 0.2em;
+}
+
+.prose a:hover {
+ color: #fb923c; /* orange-400 */
+}
+
+.prose table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1.25em 0;
+}
+
+.prose th,
+.prose td {
+ padding: 0.75em;
+ border: 1px solid rgba(249, 115, 22, 0.2);
+}
+
+.prose th {
+ background-color: rgba(249, 115, 22, 0.1);
+ font-weight: 600;
+}
+
+/* Message transition animations */
+.message-enter {
+ opacity: 0;
+ transform: translateY(10px);
+}
+
+.message-enter-active {
+ opacity: 1;
+ transform: translateY(0);
+ transition:
+ opacity 300ms,
+ transform 300ms;
+}
+
+.message-exit {
+ opacity: 1;
+}
+
+.message-exit-active {
+ opacity: 0;
+ transition: opacity 300ms;
+}
+
+/* Add/update these styles to match AI formatting capabilities */
+.prose h1 {
+ font-size: 2em;
+ /* margin-top: 1em; */
+ margin-bottom: 0.5em;
+}
+
+.prose h2 {
+ font-size: 1.5em;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+}
+
+.prose h3 {
+ font-size: 1.25em;
+ margin-top: 1em;
+ margin-bottom: 0.5em;
+}
+
+.prose ul {
+ list-style-type: disc;
+ padding-left: 1.5em;
+}
+
+.prose ol {
+ list-style-type: decimal;
+ padding-left: 1.5em;
+}
+
+.prose table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 1em 0;
+}
+
+.prose th,
+.prose td {
+ border: 1px solid rgba(249, 115, 22, 0.2);
+ padding: 0.5em;
+}
+
+.prose th {
+ background-color: rgba(249, 115, 22, 0.1);
+}
+
+.prose strong {
+ color: #f9fafb; /* text-gray-50 */
+ font-weight: 600;
+}
+
+.prose em {
+ font-style: italic;
+}
+
+.prose blockquote {
+ border-left: 4px solid #f97316; /* orange-500 */
+ padding-left: 1em;
+ margin: 1em 0;
+ color: #d1d5db; /* text-gray-300 */
+}
+
+/* Ensure code blocks match the AI's formatting */
+.prose code {
+ color: #e5e7eb;
+ background-color: rgba(31, 41, 55, 0.5);
+ padding: 0.2em 0.4em;
+ border-radius: 0.375rem;
+ font-size: 0.875em;
+}
+
+.prose pre {
+ background-color: rgba(31, 41, 55, 0.5);
+ border-radius: 0.5rem;
+ padding: 1rem;
+ margin: 1em 0;
+}
+
+.prose pre code {
+ background-color: transparent;
+ padding: 0;
+ border-radius: 0;
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/ai-chat.tsx b/examples/react/bundling-repro/src/routes/demo/ai-chat.tsx
new file mode 100644
index 00000000..25288cff
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/ai-chat.tsx
@@ -0,0 +1,287 @@
+import { useEffect, useRef, useState } from 'react'
+import { createFileRoute } from '@tanstack/react-router'
+import {
+ Send,
+ Square,
+ Mic,
+ MicOff,
+ Volume2,
+ VolumeX,
+ Loader2,
+} from 'lucide-react'
+import { Streamdown } from 'streamdown'
+
+import { useGuitarRecommendationChat } from '@/feat/demo-ai-hook'
+import type { ChatMessages } from '@/feat/demo-ai-hook'
+import { useAudioRecorder } from '@/hooks/demo-useAudioRecorder'
+import { useTTS } from '@/hooks/demo-useTTS'
+
+import GuitarRecommendation from '@/components/demo-GuitarRecommendation'
+
+import './ai-chat.css'
+
+function InitialLayout({ children }: { children: React.ReactNode }) {
+ return (
+
+
+
+ TanStack Chat
+
+
+ You can ask me about anything, I might or might not have a good
+ answer, but you can still ask.
+
+ {children}
+
+
+ )
+}
+
+function ChattingLayout({ children }: { children: React.ReactNode }) {
+ return (
+
+ )
+}
+
+function Messages({
+ messages,
+ playingId,
+ onSpeak,
+ onStopSpeak,
+}: {
+ messages: ChatMessages
+ playingId: string | null
+ onSpeak: (text: string, id: string) => void
+ onStopSpeak: () => void
+}) {
+ const messagesContainerRef = useRef(null)
+
+ useEffect(() => {
+ if (messagesContainerRef.current) {
+ messagesContainerRef.current.scrollTop =
+ messagesContainerRef.current.scrollHeight
+ }
+ }, [messages])
+
+ if (!messages.length) {
+ return null
+ }
+
+ // Extract text content from message parts
+ const getTextContent = (
+ parts: ChatMessages[number]['parts'],
+ ): string | null => {
+ for (const part of parts) {
+ if (part.type === 'text' && part.content) {
+ return part.content
+ }
+ }
+ return null
+ }
+
+ return (
+
+
+ {messages.map((message) => {
+ const textContent = getTextContent(message.parts)
+ const isPlaying = playingId === message.id
+
+ return (
+
+
+ {message.role === 'assistant' ? (
+
+ AI
+
+ ) : (
+
+ Y
+
+ )}
+
+ {message.parts.map((part, index) => {
+ if (part.type === 'text' && part.content) {
+ return (
+
+ {part.content}
+
+ )
+ }
+ // Guitar recommendation card
+ if (
+ part.type === 'tool-call' &&
+ part.name === 'recommendGuitar' &&
+ part.output
+ ) {
+ return (
+
+
+
+ )
+ }
+ return null
+ })}
+
+ {/* TTS button for assistant messages */}
+ {message.role === 'assistant' && textContent && (
+
+ isPlaying
+ ? onStopSpeak()
+ : onSpeak(textContent, message.id)
+ }
+ className="flex-shrink-0 p-2 text-gray-400 hover:text-orange-400 transition-colors"
+ title={isPlaying ? 'Stop speaking' : 'Read aloud'}
+ >
+ {isPlaying ? (
+
+ ) : (
+
+ )}
+
+ )}
+
+
+ )
+ })}
+
+
+ )
+}
+
+function ChatPage() {
+ const [input, setInput] = useState('')
+
+ const { isRecording, isTranscribing, startRecording, stopRecording } =
+ useAudioRecorder()
+ const { playingId, speak, stop: stopTTS } = useTTS()
+
+ const { messages, sendMessage, isLoading, stop } =
+ useGuitarRecommendationChat()
+
+ const handleMicClick = async () => {
+ if (isRecording) {
+ const transcribedText = await stopRecording()
+ if (transcribedText) {
+ setInput((prev) =>
+ prev ? `${prev} ${transcribedText}` : transcribedText,
+ )
+ }
+ } else {
+ await startRecording()
+ }
+ }
+
+ const Layout = messages.length ? ChattingLayout : InitialLayout
+
+ return (
+
+
+
+
+
+
+ {isLoading && (
+
+
+
+ Stop
+
+
+ )}
+
{
+ e.preventDefault()
+ if (input.trim()) {
+ sendMessage(input)
+ setInput('')
+ }
+ }}
+ >
+
+
+ {isTranscribing ? (
+
+ ) : isRecording ? (
+
+ ) : (
+
+ )}
+
+
+
+ setInput(e.target.value)}
+ placeholder="Type something clever..."
+ className="w-full rounded-lg border border-orange-500/20 bg-gray-800/50 pl-4 pr-12 py-3 text-sm text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-orange-500/50 focus:border-transparent resize-none overflow-hidden shadow-lg"
+ rows={1}
+ style={{ minHeight: '44px', maxHeight: '200px' }}
+ disabled={isLoading}
+ onInput={(e) => {
+ const target = e.target as HTMLTextAreaElement
+ target.style.height = 'auto'
+ target.style.height =
+ Math.min(target.scrollHeight, 200) + 'px'
+ }}
+ onKeyDown={(e) => {
+ if (e.key === 'Enter' && !e.shiftKey && input.trim()) {
+ e.preventDefault()
+ sendMessage(input)
+ setInput('')
+ }
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+export const Route = createFileRoute('/demo/ai-chat')({
+ component: ChatPage,
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/ai-image.tsx b/examples/react/bundling-repro/src/routes/demo/ai-image.tsx
new file mode 100644
index 00000000..97125d36
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/ai-image.tsx
@@ -0,0 +1,209 @@
+import { useState, useEffect } from 'react'
+import { createFileRoute } from '@tanstack/react-router'
+import { ImageIcon, Loader2, Download } from 'lucide-react'
+
+const SIZES = ['1024x1024', '1536x1024', '1024x1536', 'auto']
+
+interface GeneratedImage {
+ url?: string
+ b64Json?: string
+ revisedPrompt?: string
+}
+
+function ImagePage() {
+ const [prompt, setPrompt] = useState(
+ 'A cute baby sea otter wearing a beret and glasses, sitting at a small cafe table, sipping a cappuccino',
+ )
+ const [size, setSize] = useState('1024x1024')
+ const [numberOfImages, setNumberOfImages] = useState(1)
+ const [images, setImages] = useState>([])
+ const [isLoading, setIsLoading] = useState(false)
+ const [error, setError] = useState(null)
+
+ const handleGenerate = async () => {
+ setIsLoading(true)
+ setError(null)
+ setImages([])
+
+ try {
+ const response = await fetch('/demo/api/ai/image', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ prompt, size, numberOfImages }),
+ })
+
+ const data = await response.json()
+
+ if (!response.ok) {
+ throw new Error(data.error || 'Failed to generate image')
+ }
+
+ setImages(data.images)
+ } catch (err: any) {
+ setError(err.message)
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ const getImageSrc = (image: GeneratedImage) => {
+ if (image.url) return image.url
+ if (image.b64Json) return `data:image/png;base64,${image.b64Json}`
+ return ''
+ }
+
+ const handleDownload = async (image: GeneratedImage, index: number) => {
+ const src = getImageSrc(image)
+ if (!src) return
+
+ try {
+ const response = await fetch(src)
+ const blob = await response.blob()
+ const url = URL.createObjectURL(blob)
+ const a = document.createElement('a')
+ a.href = url
+ a.download = `generated-image-${index + 1}.png`
+ document.body.appendChild(a)
+ a.click()
+ document.body.removeChild(a)
+ URL.revokeObjectURL(url)
+ } catch (err) {
+ // Failed to download image
+ }
+ }
+
+ return (
+
+
+
+
+
Image Generation
+
+
+
+ {/* Input Panel */}
+
+
+
+
+ Size
+
+ setSize(e.target.value)}
+ disabled={isLoading}
+ className="w-full rounded-lg border border-orange-500/20 bg-gray-800 px-3 py-2 text-sm text-white focus:outline-none focus:ring-2 focus:ring-orange-500/50"
+ >
+ {SIZES.map((s) => (
+
+ {s}
+
+ ))}
+
+
+
+
+ Count
+
+
+ setNumberOfImages(
+ Math.max(1, Math.min(4, parseInt(e.target.value) || 1)),
+ )
+ }
+ min={1}
+ max={4}
+ disabled={isLoading}
+ className="w-full rounded-lg border border-orange-500/20 bg-gray-800 px-3 py-2 text-sm text-white focus:outline-none focus:ring-2 focus:ring-orange-500/50"
+ />
+
+
+
+
+
+ Prompt
+
+ setPrompt(e.target.value)}
+ disabled={isLoading}
+ rows={6}
+ className="w-full rounded-lg border border-orange-500/20 bg-gray-800 px-3 py-2 text-sm text-white focus:outline-none focus:ring-2 focus:ring-orange-500/50 resize-none"
+ placeholder="Describe the image you want to generate..."
+ />
+
+
+
+ {isLoading ? (
+ <>
+
+ Generating...
+ >
+ ) : (
+ 'Generate Image'
+ )}
+
+
+
+ {/* Output Panel */}
+
+
+ Generated Images
+
+
+ {error && (
+
+ {error}
+
+ )}
+
+ {images.length > 0 ? (
+
+
+ {images.map((image, index) => (
+
+
+
handleDownload(image, index)}
+ className="absolute top-2 right-2 p-2 bg-gray-900/80 hover:bg-gray-900 rounded-lg opacity-0 group-hover:opacity-100 transition-opacity"
+ title="Download image"
+ >
+
+
+ {image.revisedPrompt && (
+
+ Revised: {image.revisedPrompt}
+
+ )}
+
+ ))}
+
+
+ ) : !error && !isLoading ? (
+
+
+
+ Enter a prompt and click "Generate Image" to create an image.
+
+
+ ) : null}
+
+
+
+
+ )
+}
+
+export const Route = createFileRoute('/demo/ai-image')({
+ component: ImagePage,
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/ai-structured.tsx b/examples/react/bundling-repro/src/routes/demo/ai-structured.tsx
new file mode 100644
index 00000000..0ad11ad3
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/ai-structured.tsx
@@ -0,0 +1,310 @@
+import { useState } from 'react'
+import { createFileRoute } from '@tanstack/react-router'
+import { ChefHat, Clock, Users, Gauge } from 'lucide-react'
+import { Streamdown } from 'streamdown'
+
+import type { Recipe } from './api.ai.structured'
+
+type Mode = 'structured' | 'oneshot'
+
+const SAMPLE_RECIPES = [
+ 'Homemade Margherita Pizza',
+ 'Thai Green Curry',
+ 'Classic Beef Bourguignon',
+ 'Chocolate Lava Cake',
+ 'Crispy Korean Fried Chicken',
+ 'Fresh Spring Rolls with Peanut Sauce',
+ 'Creamy Mushroom Risotto',
+ 'Authentic Pad Thai',
+]
+
+function RecipeCard({ recipe }: { recipe: Recipe }) {
+ const difficultyColors = {
+ easy: 'bg-green-500/20 text-green-400',
+ medium: 'bg-yellow-500/20 text-yellow-400',
+ hard: 'bg-red-500/20 text-red-400',
+ }
+
+ return (
+
+ {/* Header */}
+
+
{recipe.name}
+
{recipe.description}
+
+
+ {/* Meta info */}
+
+
+
+ Prep: {recipe.prepTime}
+
+
+
+ Cook: {recipe.cookTime}
+
+
+
+ {recipe.servings} servings
+
+
+
+ {recipe.difficulty}
+
+
+
+ {/* Ingredients */}
+
+
Ingredients
+
+ {recipe.ingredients.map((ing, idx) => (
+
+ β’
+
+ {ing.amount} {ing.item}
+ {ing.notes && (
+ ({ing.notes})
+ )}
+
+
+ ))}
+
+
+
+ {/* Instructions */}
+
+
Instructions
+
+ {recipe.instructions.map((step, idx) => (
+
+
+ {idx + 1}
+
+ {step}
+
+ ))}
+
+
+
+ {/* Tips */}
+ {recipe.tips && recipe.tips.length > 0 && (
+
+
Tips
+
+ {recipe.tips.map((tip, idx) => (
+
+ *
+ {tip}
+
+ ))}
+
+
+ )}
+
+ {/* Nutrition */}
+ {recipe.nutritionPerServing && (
+
+
+ Nutrition (per serving)
+
+
+ {recipe.nutritionPerServing.calories && (
+
+ {recipe.nutritionPerServing.calories} cal
+
+ )}
+ {recipe.nutritionPerServing.protein && (
+
+ Protein: {recipe.nutritionPerServing.protein}
+
+ )}
+ {recipe.nutritionPerServing.carbs && (
+
+ Carbs: {recipe.nutritionPerServing.carbs}
+
+ )}
+ {recipe.nutritionPerServing.fat && (
+
+ Fat: {recipe.nutritionPerServing.fat}
+
+ )}
+
+
+ )}
+
+ )
+}
+
+function StructuredPage() {
+ const [recipeName, setRecipeName] = useState('')
+ const [result, setResult] = useState<{
+ mode: Mode
+ recipe?: Recipe
+ markdown?: string
+ provider: string
+ model: string
+ } | null>(null)
+ const [isLoading, setIsLoading] = useState(false)
+ const [error, setError] = useState(null)
+
+ const handleGenerate = async (mode: Mode) => {
+ if (!recipeName.trim()) return
+
+ setIsLoading(true)
+ setError(null)
+ setResult(null)
+
+ try {
+ const response = await fetch('/demo/api/ai/structured', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ recipeName, mode }),
+ })
+
+ const data = await response.json()
+
+ if (!response.ok) {
+ throw new Error(data.error || 'Failed to generate recipe')
+ }
+
+ setResult(data)
+ } catch (err: any) {
+ setError(err.message)
+ } finally {
+ setIsLoading(false)
+ }
+ }
+
+ const canExecute = !!(!isLoading && recipeName.trim() && !error)
+
+ return (
+
+
+
+
+
+ One-Shot & Structured Output
+
+
+
+
+ Compare two output modes:{' '}
+ One-Shot returns freeform
+ markdown, while{' '}
+ Structured returns
+ validated JSON conforming to a Zod schema.
+
+
+
+
+
+ Recipe Name
+
+
setRecipeName(e.target.value)}
+ disabled={isLoading}
+ placeholder="e.g., Chocolate Chip Cookies"
+ className="w-full rounded-lg border border-orange-500/20 bg-gray-800 px-3 py-2 text-sm text-white focus:outline-none focus:ring-2 focus:ring-orange-500/50"
+ />
+
+
+
+ Quick Picks
+
+
+ {SAMPLE_RECIPES.map((name) => (
+ setRecipeName(name)}
+ disabled={isLoading}
+ className="px-2 py-1 text-xs bg-gray-800 hover:bg-gray-700 text-gray-300 rounded-lg border border-gray-700 transition-colors"
+ >
+ {name}
+
+ ))}
+
+
+
+
+
+
+ handleGenerate('oneshot')}
+ disabled={!canExecute}
+ className={`px-4 py-2 rounded-lg text-sm font-medium transition-colors text-white ${
+ !canExecute ? 'bg-gray-600' : 'bg-orange-500'
+ }`}
+ >
+ One-Shot (Markdown)
+
+ handleGenerate('structured')}
+ disabled={!canExecute}
+ className={`px-4 py-2 rounded-lg text-sm font-medium transition-colors text-white ${
+ !canExecute ? 'bg-gray-600' : 'bg-blue-500'
+ }`}
+ >
+ Structured (JSON)
+
+
+
+
+
+ {/* Output Panel */}
+
+
+
+ Generated Recipe
+
+ {result && (
+
+ {result.mode === 'structured' ? 'Structured JSON' : 'Markdown'}
+
+ )}
+
+
+ {error && (
+
+ {error}
+
+ )}
+
+ {result ? (
+
+ {result.mode === 'structured' && result.recipe ? (
+
+ ) : result.markdown ? (
+
+ {result.markdown}
+
+ ) : null}
+
+ ) : !error && !isLoading ? (
+
+
+
+ Enter a recipe name and click "Generate Recipe" to get started.
+
+
+ ) : null}
+
+
+
+ )
+}
+
+export const Route = createFileRoute('/demo/ai-structured')({
+ component: StructuredPage,
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.ai.chat.ts b/examples/react/bundling-repro/src/routes/demo/api.ai.chat.ts
new file mode 100644
index 00000000..2bb1e4f2
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.ai.chat.ts
@@ -0,0 +1,99 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { chat, maxIterations, toServerSentEventsResponse } from '@tanstack/ai'
+import { anthropicText } from '@tanstack/ai-anthropic'
+import { openaiText } from '@tanstack/ai-openai'
+import { geminiText } from '@tanstack/ai-gemini'
+import { ollamaText } from '@tanstack/ai-ollama'
+
+import { getGuitars, recommendGuitarToolDef } from '@/feat/demo-guitar-tools'
+
+const SYSTEM_PROMPT = `You are a helpful assistant for a store that sells guitars.
+
+CRITICAL INSTRUCTIONS - YOU MUST FOLLOW THIS EXACT WORKFLOW:
+
+When a user asks for a guitar recommendation:
+1. FIRST: Use the getGuitars tool (no parameters needed)
+2. SECOND: Use the recommendGuitar tool with the ID of the guitar you want to recommend
+3. NEVER write a recommendation directly - ALWAYS use the recommendGuitar tool
+
+IMPORTANT:
+- The recommendGuitar tool will display the guitar in a special, appealing format
+- You MUST use recommendGuitar for ANY guitar recommendation
+- ONLY recommend guitars from our inventory (use getGuitars first)
+- The recommendGuitar tool has a buy button - this is how customers purchase
+- Do NOT describe the guitar yourself - let the recommendGuitar tool do it
+`
+
+export const Route = createFileRoute('/demo/api/ai/chat')({
+ server: {
+ handlers: {
+ POST: async ({ request }) => {
+ // Capture request signal before reading body (it may be aborted after body is consumed)
+ const requestSignal = request.signal
+
+ // If request is already aborted, return early
+ if (requestSignal.aborted) {
+ return new Response(null, { status: 499 }) // 499 = Client Closed Request
+ }
+
+ const abortController = new AbortController()
+
+ try {
+ const body = await request.json()
+ const { messages } = body
+
+ // Determine the best available provider
+ let provider: string = 'ollama'
+ let model: string = 'mistral:7b'
+ if (process.env.ANTHROPIC_API_KEY) {
+ provider = 'anthropic'
+ model = 'claude-haiku-4-5'
+ } else if (process.env.OPENAI_API_KEY) {
+ provider = 'openai'
+ model = 'gpt-4o'
+ } else if (process.env.GEMINI_API_KEY) {
+ provider = 'gemini'
+ model = 'gemini-2.0-flash-exp'
+ }
+
+ // Adapter factory pattern for multi-vendor support
+ const adapterConfig = {
+ anthropic: () =>
+ anthropicText((model || 'claude-haiku-4-5') as any),
+ openai: () => openaiText((model || 'gpt-4o') as any),
+ gemini: () => geminiText((model || 'gemini-2.0-flash-exp') as any),
+ ollama: () => ollamaText((model || 'mistral:7b') as any),
+ }
+
+ const adapter = adapterConfig[provider]()
+
+ const stream = chat({
+ adapter,
+ tools: [
+ getGuitars, // Server tool
+ recommendGuitarToolDef, // No server execute - client will handle
+ ],
+ systemPrompts: [SYSTEM_PROMPT],
+ agentLoopStrategy: maxIterations(5),
+ messages,
+ abortController,
+ })
+
+ return toServerSentEventsResponse(stream, { abortController })
+ } catch (error: any) {
+ // If request was aborted, return early (don't send error response)
+ if (error.name === 'AbortError' || abortController.signal.aborted) {
+ return new Response(null, { status: 499 }) // 499 = Client Closed Request
+ }
+ return new Response(
+ JSON.stringify({ error: 'Failed to process chat request' }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+ },
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.ai.image.ts b/examples/react/bundling-repro/src/routes/demo/api.ai.image.ts
new file mode 100644
index 00000000..4066f582
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.ai.image.ts
@@ -0,0 +1,72 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { generateImage, createImageOptions } from '@tanstack/ai'
+import { openaiImage } from '@tanstack/ai-openai'
+
+export const Route = createFileRoute('/demo/api/ai/image')({
+ server: {
+ handlers: {
+ POST: async ({ request }) => {
+ const body = await request.json()
+ const { prompt, numberOfImages = 1, size = '1024x1024' } = body
+
+ if (!prompt || prompt.trim().length === 0) {
+ return new Response(
+ JSON.stringify({
+ error: 'Prompt is required',
+ }),
+ {
+ status: 400,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ if (!process.env.OPENAI_API_KEY) {
+ return new Response(
+ JSON.stringify({
+ error: 'OPENAI_API_KEY is not configured',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ try {
+ const options = createImageOptions({
+ adapter: openaiImage('gpt-image-1'),
+ })
+
+ const result = await generateImage({
+ ...options,
+ prompt,
+ numberOfImages,
+ size,
+ })
+
+ return new Response(
+ JSON.stringify({
+ images: result.images,
+ model: 'gpt-image-1',
+ }),
+ {
+ status: 200,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ } catch (error: any) {
+ return new Response(
+ JSON.stringify({
+ error: error.message || 'An error occurred',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+ },
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.ai.structured.ts b/examples/react/bundling-repro/src/routes/demo/api.ai.structured.ts
new file mode 100644
index 00000000..a2d18b7f
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.ai.structured.ts
@@ -0,0 +1,136 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { chat } from '@tanstack/ai'
+import { openaiText } from '@tanstack/ai-openai'
+import { z } from 'zod'
+
+// Schema for structured recipe output
+const RecipeSchema = z.object({
+ name: z.string().describe('The name of the recipe'),
+ description: z.string().describe('A brief description of the dish'),
+ prepTime: z.string().describe('Preparation time (e.g., "15 minutes")'),
+ cookTime: z.string().describe('Cooking time (e.g., "30 minutes")'),
+ servings: z.number().describe('Number of servings'),
+ difficulty: z.enum(['easy', 'medium', 'hard']).describe('Difficulty level'),
+ ingredients: z
+ .array(
+ z.object({
+ item: z.string().describe('Ingredient name'),
+ amount: z.string().describe('Amount needed (e.g., "2 cups")'),
+ notes: z.string().optional().describe('Optional preparation notes'),
+ }),
+ )
+ .describe('List of ingredients'),
+ instructions: z
+ .array(z.string())
+ .describe('Step-by-step cooking instructions'),
+ tips: z.array(z.string()).optional().describe('Optional cooking tips'),
+ nutritionPerServing: z
+ .object({
+ calories: z.number().optional(),
+ protein: z.string().optional(),
+ carbs: z.string().optional(),
+ fat: z.string().optional(),
+ })
+ .optional()
+ .describe('Nutritional information per serving'),
+})
+
+export type Recipe = z.infer
+
+export const Route = createFileRoute('/demo/api/ai/structured')({
+ server: {
+ handlers: {
+ POST: async ({ request }) => {
+ const body = await request.json()
+ const { recipeName, mode = 'structured' } = body
+
+ if (!recipeName || recipeName.trim().length === 0) {
+ return new Response(
+ JSON.stringify({
+ error: 'Recipe name is required',
+ }),
+ {
+ status: 400,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ try {
+ if (mode === 'structured') {
+ // Structured output mode - returns validated object
+ const result = await chat({
+ adapter: openaiText('gpt-4o'),
+ messages: [
+ {
+ role: 'user',
+ content: `Generate a complete recipe for: ${recipeName}. Include all ingredients with amounts, step-by-step instructions, prep/cook times, and difficulty level.`,
+ },
+ ],
+ outputSchema: RecipeSchema,
+ } as any)
+
+ return new Response(
+ JSON.stringify({
+ mode: 'structured',
+ recipe: result,
+ provider: 'openai',
+ model: 'gpt-4o',
+ }),
+ {
+ status: 200,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ } else {
+ // One-shot markdown mode - returns text
+ const markdown = await chat({
+ adapter: openaiText('gpt-4o'),
+ stream: false,
+ messages: [
+ {
+ role: 'user',
+ content: `Generate a complete recipe for: ${recipeName}.
+
+Format the recipe in beautiful markdown with:
+- A title with the recipe name
+- A brief description
+- Prep time, cook time, and servings
+- Ingredients list with amounts
+- Numbered step-by-step instructions
+- Optional tips section
+- Nutritional info if applicable
+
+Make it detailed and easy to follow.`,
+ },
+ ],
+ } as any)
+
+ return new Response(
+ JSON.stringify({
+ mode: 'oneshot',
+ markdown,
+ provider: 'openai',
+ model: 'gpt-4o',
+ }),
+ {
+ status: 200,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+ } catch (error: any) {
+ return new Response(
+ JSON.stringify({
+ error: error.message || 'An error occurred',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+ },
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.ai.transcription.ts b/examples/react/bundling-repro/src/routes/demo/api.ai.transcription.ts
new file mode 100644
index 00000000..c7f1a413
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.ai.transcription.ts
@@ -0,0 +1,89 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { generateTranscription } from '@tanstack/ai'
+import { openaiTranscription } from '@tanstack/ai-openai'
+
+export const Route = createFileRoute('/demo/api/ai/transcription')({
+ server: {
+ handlers: {
+ POST: async ({ request }) => {
+ const formData = await request.formData()
+ const audioFile = formData.get('audio') as File | null
+ const audioBase64 = formData.get('audioBase64') as string | null
+ const model = (formData.get('model') as string) || 'whisper-1'
+ const language = formData.get('language') as string | null
+ const responseFormat = formData.get('responseFormat') as string | null
+
+ if (!audioFile && !audioBase64) {
+ return new Response(
+ JSON.stringify({
+ error: 'Audio file or base64 data is required',
+ }),
+ {
+ status: 400,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ if (!process.env.OPENAI_API_KEY) {
+ return new Response(
+ JSON.stringify({
+ error: 'OPENAI_API_KEY is not configured',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ try {
+ const adapter = openaiTranscription(model as any)
+
+ // Prepare audio data
+ let audioData: string | File
+ if (audioFile) {
+ audioData = audioFile
+ } else if (audioBase64) {
+ audioData = audioBase64
+ } else {
+ throw new Error('No audio data provided')
+ }
+
+ const result = await generateTranscription({
+ adapter,
+ audio: audioData,
+ language: language || undefined,
+ responseFormat: (responseFormat as any) || 'verbose_json',
+ })
+
+ return new Response(
+ JSON.stringify({
+ id: result.id,
+ model: result.model,
+ text: result.text,
+ language: result.language,
+ duration: result.duration,
+ segments: result.segments,
+ words: result.words,
+ }),
+ {
+ status: 200,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ } catch (error: any) {
+ return new Response(
+ JSON.stringify({
+ error: error.message || 'An error occurred',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+ },
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.ai.tts.ts b/examples/react/bundling-repro/src/routes/demo/api.ai.tts.ts
new file mode 100644
index 00000000..dbfc1497
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.ai.tts.ts
@@ -0,0 +1,81 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { generateSpeech } from '@tanstack/ai'
+import { openaiSpeech } from '@tanstack/ai-openai'
+
+export const Route = createFileRoute('/demo/api/ai/tts')({
+ server: {
+ handlers: {
+ POST: async ({ request }) => {
+ const body = await request.json()
+ const {
+ text,
+ voice = 'alloy',
+ model = 'tts-1',
+ format = 'mp3',
+ speed = 1.0,
+ } = body
+
+ if (!text || text.trim().length === 0) {
+ return new Response(
+ JSON.stringify({
+ error: 'Text is required',
+ }),
+ {
+ status: 400,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ if (!process.env.OPENAI_API_KEY) {
+ return new Response(
+ JSON.stringify({
+ error: 'OPENAI_API_KEY is not configured',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+
+ try {
+ const adapter = openaiSpeech(model)
+
+ const result = await generateSpeech({
+ adapter,
+ text,
+ voice,
+ format,
+ speed,
+ })
+
+ return new Response(
+ JSON.stringify({
+ id: result.id,
+ model: result.model,
+ audio: result.audio,
+ format: result.format,
+ contentType: result.contentType,
+ duration: result.duration,
+ }),
+ {
+ status: 200,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ } catch (error: any) {
+ return new Response(
+ JSON.stringify({
+ error: error.message || 'An error occurred',
+ }),
+ {
+ status: 500,
+ headers: { 'Content-Type': 'application/json' },
+ },
+ )
+ }
+ },
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.names.ts b/examples/react/bundling-repro/src/routes/demo/api.names.ts
new file mode 100644
index 00000000..a1e4a354
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.names.ts
@@ -0,0 +1,10 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { json } from '@tanstack/react-start'
+
+export const Route = createFileRoute('/demo/api/names')({
+ server: {
+ handlers: {
+ GET: () => json(['Alice', 'Bob', 'Charlie']),
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/api.tq-todos.ts b/examples/react/bundling-repro/src/routes/demo/api.tq-todos.ts
new file mode 100644
index 00000000..bd3b8bb6
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/api.tq-todos.ts
@@ -0,0 +1,35 @@
+import { createFileRoute } from '@tanstack/react-router'
+
+const todos = [
+ {
+ id: 1,
+ name: 'Buy groceries',
+ },
+ {
+ id: 2,
+ name: 'Buy mobile phone',
+ },
+ {
+ id: 3,
+ name: 'Buy laptop',
+ },
+]
+
+export const Route = createFileRoute('/demo/api/tq-todos')({
+ server: {
+ handlers: {
+ GET: () => {
+ return Response.json(todos)
+ },
+ POST: async ({ request }) => {
+ const name = await request.json()
+ const todo = {
+ id: todos.length + 1,
+ name,
+ }
+ todos.push(todo)
+ return Response.json(todo)
+ },
+ },
+ },
+})
diff --git a/examples/react/bundling-repro/src/routes/demo/guitars/$guitarId.tsx b/examples/react/bundling-repro/src/routes/demo/guitars/$guitarId.tsx
new file mode 100644
index 00000000..a7f45e9b
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/guitars/$guitarId.tsx
@@ -0,0 +1,51 @@
+import { Link, createFileRoute } from '@tanstack/react-router'
+
+import guitars from '@/data/demo-guitars'
+
+export const Route = createFileRoute('/demo/guitars/$guitarId')({
+ component: RouteComponent,
+ loader: async ({ params }) => {
+ const guitar = guitars.find((guitar) => guitar.id === +params.guitarId)
+ if (!guitar) {
+ throw new Error('Guitar not found')
+ }
+ return guitar
+ },
+})
+
+function RouteComponent() {
+ const guitar = Route.useLoaderData()
+
+ return (
+
+
+
+ ← Back to all guitars
+
+
{guitar.name}
+
{guitar.description}
+
+
+ ${guitar.price}
+
+
+ Add to Cart
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/guitars/index.tsx b/examples/react/bundling-repro/src/routes/demo/guitars/index.tsx
new file mode 100644
index 00000000..7251645a
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/guitars/index.tsx
@@ -0,0 +1,55 @@
+import { Link, createFileRoute } from '@tanstack/react-router'
+
+import guitars from '@/data/demo-guitars'
+
+export const Route = createFileRoute('/demo/guitars/')({
+ component: GuitarsIndex,
+})
+
+function GuitarsIndex() {
+ return (
+
+
Featured Guitars
+
+ {guitars.map((guitar) => (
+
+
+
+
+
+
+
+
+
+ View Details
+
+
+
+
+
{guitar.name}
+
+ {guitar.shortDescription}
+
+
+ ${guitar.price}
+
+
+
+
+ ))}
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/start.api-request.tsx b/examples/react/bundling-repro/src/routes/demo/start.api-request.tsx
new file mode 100644
index 00000000..9309b44d
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/start.api-request.tsx
@@ -0,0 +1,43 @@
+import { useQuery } from '@tanstack/react-query'
+
+import { createFileRoute } from '@tanstack/react-router'
+
+function getNames() {
+ return fetch('/demo/api/names').then((res) => res.json() as Promise)
+}
+
+export const Route = createFileRoute('/demo/start/api-request')({
+ component: Home,
+})
+
+function Home() {
+ const { data: names = [] } = useQuery({
+ queryKey: ['names'],
+ queryFn: getNames,
+ })
+
+ return (
+
+
+
Start API Request Demo - Names List
+
+ {names.map((name) => (
+
+ {name}
+
+ ))}
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/start.server-funcs.tsx b/examples/react/bundling-repro/src/routes/demo/start.server-funcs.tsx
new file mode 100644
index 00000000..cc6d5d71
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/start.server-funcs.tsx
@@ -0,0 +1,41 @@
+import { useState } from 'react'
+import { createFileRoute } from '@tanstack/react-router'
+import { createServerFn } from '@tanstack/react-start'
+
+const getCurrentServerTime = createServerFn({
+ method: 'GET',
+}).handler(async () => await new Date().toISOString())
+
+export const Route = createFileRoute('/demo/start/server-funcs')({
+ component: Home,
+ loader: async () => await getCurrentServerTime(),
+})
+
+function Home() {
+ const originalTime = Route.useLoaderData()
+ const [time, setTime] = useState(originalTime)
+
+ return (
+
+
+
Start Server Functions - Server Time
+
+
Starting Time: {originalTime}
+
Current Time: {time}
+
setTime(await getCurrentServerTime())}
+ >
+ Refresh
+
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/start.ssr.data-only.tsx b/examples/react/bundling-repro/src/routes/demo/start.ssr.data-only.tsx
new file mode 100644
index 00000000..ae97727e
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/start.ssr.data-only.tsx
@@ -0,0 +1,41 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { getPunkSongs } from '@/data/demo.punk-songs'
+
+export const Route = createFileRoute('/demo/start/ssr/data-only')({
+ ssr: 'data-only',
+ component: RouteComponent,
+ loader: async () => await getPunkSongs(),
+})
+
+function RouteComponent() {
+ const punkSongs = Route.useLoaderData()
+
+ return (
+
+
+
+ Data Only SSR - Punk Songs
+
+
+ {punkSongs.map((song) => (
+
+
+ {song.name}
+
+ - {song.artist}
+
+ ))}
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/start.ssr.full-ssr.tsx b/examples/react/bundling-repro/src/routes/demo/start.ssr.full-ssr.tsx
new file mode 100644
index 00000000..ce1ca445
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/start.ssr.full-ssr.tsx
@@ -0,0 +1,40 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { getPunkSongs } from '@/data/demo.punk-songs'
+
+export const Route = createFileRoute('/demo/start/ssr/full-ssr')({
+ component: RouteComponent,
+ loader: async () => await getPunkSongs(),
+})
+
+function RouteComponent() {
+ const punkSongs = Route.useLoaderData()
+
+ return (
+
+
+
+ Full SSR - Punk Songs
+
+
+ {punkSongs.map((song) => (
+
+
+ {song.name}
+
+ - {song.artist}
+
+ ))}
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/start.ssr.index.tsx b/examples/react/bundling-repro/src/routes/demo/start.ssr.index.tsx
new file mode 100644
index 00000000..7dcc7212
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/start.ssr.index.tsx
@@ -0,0 +1,43 @@
+import { createFileRoute, Link } from '@tanstack/react-router'
+
+export const Route = createFileRoute('/demo/start/ssr/')({
+ component: RouteComponent,
+})
+
+function RouteComponent() {
+ return (
+
+
+
+ SSR Demos
+
+
+
+ SPA Mode
+
+
+ Full SSR
+
+
+ Data Only
+
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/start.ssr.spa-mode.tsx b/examples/react/bundling-repro/src/routes/demo/start.ssr.spa-mode.tsx
new file mode 100644
index 00000000..b4e2e070
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/start.ssr.spa-mode.tsx
@@ -0,0 +1,47 @@
+import { useEffect, useState } from 'react'
+import { createFileRoute } from '@tanstack/react-router'
+import { getPunkSongs } from '@/data/demo.punk-songs'
+
+export const Route = createFileRoute('/demo/start/ssr/spa-mode')({
+ ssr: false,
+ component: RouteComponent,
+})
+
+function RouteComponent() {
+ const [punkSongs, setPunkSongs] = useState<
+ Awaited>
+ >([])
+
+ useEffect(() => {
+ getPunkSongs().then(setPunkSongs)
+ }, [])
+
+ return (
+
+
+
+ SPA Mode - Punk Songs
+
+
+ {punkSongs.map((song) => (
+
+
+ {song.name}
+
+ - {song.artist}
+
+ ))}
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/store.tsx b/examples/react/bundling-repro/src/routes/demo/store.tsx
new file mode 100644
index 00000000..b556d388
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/store.tsx
@@ -0,0 +1,64 @@
+import { createFileRoute } from '@tanstack/react-router'
+import { useStore } from '@tanstack/react-store'
+
+import { fullName, store } from '@/feat/demo-store'
+
+export const Route = createFileRoute('/demo/store')({
+ component: DemoStore,
+})
+
+function FirstName() {
+ const firstName = useStore(store, (state) => state.firstName)
+ return (
+
+ store.setState((state) => ({ ...state, firstName: e.target.value }))
+ }
+ className="bg-white/10 rounded-lg px-4 py-2 outline-none border border-white/20 hover:border-white/40 focus:border-white/60 transition-colors duration-200 placeholder-white/40"
+ />
+ )
+}
+
+function LastName() {
+ const lastName = useStore(store, (state) => state.lastName)
+ return (
+
+ store.setState((state) => ({ ...state, lastName: e.target.value }))
+ }
+ className="bg-white/10 rounded-lg px-4 py-2 outline-none border border-white/20 hover:border-white/40 focus:border-white/60 transition-colors duration-200 placeholder-white/40"
+ />
+ )
+}
+
+function FullName() {
+ const fName = useStore(fullName)
+ return (
+
+ {fName}
+
+ )
+}
+
+function DemoStore() {
+ return (
+
+
+
Store Example
+
+
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/demo/tanstack-query.tsx b/examples/react/bundling-repro/src/routes/demo/tanstack-query.tsx
new file mode 100644
index 00000000..eb0f7550
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/demo/tanstack-query.tsx
@@ -0,0 +1,81 @@
+import { useCallback, useState } from 'react'
+import { createFileRoute } from '@tanstack/react-router'
+import { useQuery, useMutation } from '@tanstack/react-query'
+
+export const Route = createFileRoute('/demo/tanstack-query')({
+ component: TanStackQueryDemo,
+})
+
+type Todo = {
+ id: number
+ name: string
+}
+
+function TanStackQueryDemo() {
+ const { data, refetch } = useQuery({
+ queryKey: ['todos'],
+ queryFn: () => fetch('/demo/api/tq-todos').then((res) => res.json()),
+ initialData: [],
+ })
+
+ const { mutate: addTodo } = useMutation({
+ mutationFn: (todo: string) =>
+ fetch('/demo/api/tq-todos', {
+ method: 'POST',
+ body: JSON.stringify(todo),
+ }).then((res) => res.json()),
+ onSuccess: () => refetch(),
+ })
+
+ const [todo, setTodo] = useState('')
+
+ const submitTodo = useCallback(async () => {
+ await addTodo(todo)
+ setTodo('')
+ }, [addTodo, todo])
+
+ return (
+
+
+
TanStack Query Todos list
+
+ {data?.map((t) => (
+
+ {t.name}
+
+ ))}
+
+
+ setTodo(e.target.value)}
+ onKeyDown={(e) => {
+ if (e.key === 'Enter') {
+ submitTodo()
+ }
+ }}
+ placeholder="Enter a new todo..."
+ className="w-full px-4 py-3 rounded-lg border border-white/20 bg-white/10 backdrop-blur-sm text-white placeholder-white/60 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:border-transparent"
+ />
+
+ Add todo
+
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/routes/index.tsx b/examples/react/bundling-repro/src/routes/index.tsx
new file mode 100644
index 00000000..c1109e13
--- /dev/null
+++ b/examples/react/bundling-repro/src/routes/index.tsx
@@ -0,0 +1,118 @@
+import { createFileRoute } from '@tanstack/react-router'
+import {
+ Route as RouteIcon,
+ Server,
+ Shield,
+ Sparkles,
+ Waves,
+ Zap,
+} from 'lucide-react'
+
+export const Route = createFileRoute('/')({ component: App })
+
+function App() {
+ const features = [
+ {
+ icon: ,
+ title: 'Powerful Server Functions',
+ description:
+ 'Write server-side code that seamlessly integrates with your client components. Type-safe, secure, and simple.',
+ },
+ {
+ icon: ,
+ title: 'Flexible Server Side Rendering',
+ description:
+ 'Full-document SSR, streaming, and progressive enhancement out of the box. Control exactly what renders where.',
+ },
+ {
+ icon: ,
+ title: 'API Routes',
+ description:
+ 'Build type-safe API endpoints alongside your application. No separate backend needed.',
+ },
+ {
+ icon: ,
+ title: 'Strongly Typed Everything',
+ description:
+ 'End-to-end type safety from server to client. Catch errors before they reach production.',
+ },
+ {
+ icon: ,
+ title: 'Full Streaming Support',
+ description:
+ 'Stream data from server to client progressively. Perfect for AI applications and real-time updates.',
+ },
+ {
+ icon: ,
+ title: 'Next Generation Ready',
+ description:
+ 'Built from the ground up for modern web applications. Deploy anywhere JavaScript runs.',
+ },
+ ]
+
+ return (
+
+
+
+
+
+
+
+ TANSTACK {' '}
+
+ START
+
+
+
+
+ The framework for next generation AI applications
+
+
+ Full-stack framework powered by TanStack Router for React and Solid.
+ Build modern applications with server functions, streaming, and type
+ safety.
+
+
+
+ Documentation
+
+
+ Begin your TanStack Start journey by editing{' '}
+
+ /src/routes/index.tsx
+
+
+
+
+
+
+
+
+ {features.map((feature, index) => (
+
+
{feature.icon}
+
+ {feature.title}
+
+
+ {feature.description}
+
+
+ ))}
+
+
+
+ )
+}
diff --git a/examples/react/bundling-repro/src/styles.css b/examples/react/bundling-repro/src/styles.css
new file mode 100644
index 00000000..8330aae9
--- /dev/null
+++ b/examples/react/bundling-repro/src/styles.css
@@ -0,0 +1,138 @@
+@import 'tailwindcss';
+
+@import 'tw-animate-css';
+
+@custom-variant dark (&:is(.dark *));
+
+body {
+ @apply m-0;
+ font-family:
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+ font-family:
+ source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
+}
+
+:root {
+ --background: oklch(1 0 0);
+ --foreground: oklch(0.141 0.005 285.823);
+ --card: oklch(1 0 0);
+ --card-foreground: oklch(0.141 0.005 285.823);
+ --popover: oklch(1 0 0);
+ --popover-foreground: oklch(0.141 0.005 285.823);
+ --primary: oklch(0.21 0.006 285.885);
+ --primary-foreground: oklch(0.985 0 0);
+ --secondary: oklch(0.967 0.001 286.375);
+ --secondary-foreground: oklch(0.21 0.006 285.885);
+ --muted: oklch(0.967 0.001 286.375);
+ --muted-foreground: oklch(0.552 0.016 285.938);
+ --accent: oklch(0.967 0.001 286.375);
+ --accent-foreground: oklch(0.21 0.006 285.885);
+ --destructive: oklch(0.577 0.245 27.325);
+ --destructive-foreground: oklch(0.577 0.245 27.325);
+ --border: oklch(0.92 0.004 286.32);
+ --input: oklch(0.92 0.004 286.32);
+ --ring: oklch(0.871 0.006 286.286);
+ --chart-1: oklch(0.646 0.222 41.116);
+ --chart-2: oklch(0.6 0.118 184.704);
+ --chart-3: oklch(0.398 0.07 227.392);
+ --chart-4: oklch(0.828 0.189 84.429);
+ --chart-5: oklch(0.769 0.188 70.08);
+ --radius: 0.625rem;
+ --sidebar: oklch(0.985 0 0);
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
+ --sidebar-primary: oklch(0.21 0.006 285.885);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.967 0.001 286.375);
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
+ --sidebar-border: oklch(0.92 0.004 286.32);
+ --sidebar-ring: oklch(0.871 0.006 286.286);
+}
+
+.dark {
+ --background: oklch(0.141 0.005 285.823);
+ --foreground: oklch(0.985 0 0);
+ --card: oklch(0.141 0.005 285.823);
+ --card-foreground: oklch(0.985 0 0);
+ --popover: oklch(0.141 0.005 285.823);
+ --popover-foreground: oklch(0.985 0 0);
+ --primary: oklch(0.985 0 0);
+ --primary-foreground: oklch(0.21 0.006 285.885);
+ --secondary: oklch(0.274 0.006 286.033);
+ --secondary-foreground: oklch(0.985 0 0);
+ --muted: oklch(0.274 0.006 286.033);
+ --muted-foreground: oklch(0.705 0.015 286.067);
+ --accent: oklch(0.274 0.006 286.033);
+ --accent-foreground: oklch(0.985 0 0);
+ --destructive: oklch(0.396 0.141 25.723);
+ --destructive-foreground: oklch(0.637 0.237 25.331);
+ --border: oklch(0.274 0.006 286.033);
+ --input: oklch(0.274 0.006 286.033);
+ --ring: oklch(0.442 0.017 285.786);
+ --chart-1: oklch(0.488 0.243 264.376);
+ --chart-2: oklch(0.696 0.17 162.48);
+ --chart-3: oklch(0.769 0.188 70.08);
+ --chart-4: oklch(0.627 0.265 303.9);
+ --chart-5: oklch(0.645 0.246 16.439);
+ --sidebar: oklch(0.21 0.006 285.885);
+ --sidebar-foreground: oklch(0.985 0 0);
+ --sidebar-primary: oklch(0.488 0.243 264.376);
+ --sidebar-primary-foreground: oklch(0.985 0 0);
+ --sidebar-accent: oklch(0.274 0.006 286.033);
+ --sidebar-accent-foreground: oklch(0.985 0 0);
+ --sidebar-border: oklch(0.274 0.006 286.033);
+ --sidebar-ring: oklch(0.442 0.017 285.786);
+}
+
+@theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-destructive: var(--destructive);
+ --color-destructive-foreground: var(--destructive-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --color-chart-1: var(--chart-1);
+ --color-chart-2: var(--chart-2);
+ --color-chart-3: var(--chart-3);
+ --color-chart-4: var(--chart-4);
+ --color-chart-5: var(--chart-5);
+ --radius-sm: calc(var(--radius) - 4px);
+ --radius-md: calc(var(--radius) - 2px);
+ --radius-lg: var(--radius);
+ --radius-xl: calc(var(--radius) + 4px);
+ --color-sidebar: var(--sidebar);
+ --color-sidebar-foreground: var(--sidebar-foreground);
+ --color-sidebar-primary: var(--sidebar-primary);
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
+ --color-sidebar-accent: var(--sidebar-accent);
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
+ --color-sidebar-border: var(--sidebar-border);
+ --color-sidebar-ring: var(--sidebar-ring);
+}
+
+@layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
diff --git a/examples/react/bundling-repro/tsconfig.json b/examples/react/bundling-repro/tsconfig.json
new file mode 100644
index 00000000..477479fb
--- /dev/null
+++ b/examples/react/bundling-repro/tsconfig.json
@@ -0,0 +1,28 @@
+{
+ "include": ["**/*.ts", "**/*.tsx"],
+ "compilerOptions": {
+ "target": "ES2022",
+ "jsx": "react-jsx",
+ "module": "ESNext",
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "types": ["vite/client"],
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": false,
+ "noEmit": true,
+
+ /* Linting */
+ "skipLibCheck": true,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true,
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/examples/react/bundling-repro/vite.config.ts b/examples/react/bundling-repro/vite.config.ts
new file mode 100644
index 00000000..928c83b1
--- /dev/null
+++ b/examples/react/bundling-repro/vite.config.ts
@@ -0,0 +1,34 @@
+import { defineConfig } from 'vite'
+import { devtools } from '@tanstack/devtools-vite'
+import { tanstackStart } from '@tanstack/react-start/plugin/vite'
+import viteReact from '@vitejs/plugin-react'
+import viteTsConfigPaths from 'vite-tsconfig-paths'
+import { fileURLToPath, URL } from 'url'
+
+import tailwindcss from '@tailwindcss/vite'
+import { cloudflare } from '@cloudflare/vite-plugin'
+
+const config = defineConfig({
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
+ },
+ },
+ plugins: [
+ devtools(),
+ cloudflare({ viteEnvironment: { name: 'ssr' } }),
+ // this is the plugin that enables path aliases
+ viteTsConfigPaths({
+ projects: ['./tsconfig.json'],
+ }),
+ tailwindcss(),
+ tanstackStart(),
+ viteReact({
+ babel: {
+ plugins: ['babel-plugin-react-compiler'],
+ },
+ }),
+ ],
+})
+
+export default config
diff --git a/examples/react/bundling-repro/wrangler.jsonc b/examples/react/bundling-repro/wrangler.jsonc
new file mode 100644
index 00000000..3249f25e
--- /dev/null
+++ b/examples/react/bundling-repro/wrangler.jsonc
@@ -0,0 +1,7 @@
+{
+ "$schema": "node_modules/wrangler/config-schema.json",
+ "name": "tanstack-start-app",
+ "compatibility_date": "2025-09-02",
+ "compatibility_flags": ["nodejs_compat"],
+ "main": "@tanstack/react-start/server-entry",
+}
diff --git a/examples/react/https/package.json b/examples/react/https/package.json
index 3e1118d2..5d8cd92c 100644
--- a/examples/react/https/package.json
+++ b/examples/react/https/package.json
@@ -17,7 +17,7 @@
"@tanstack/react-router-devtools": "^1.132.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
- "zod": "^4.1.11"
+ "zod": "^4.3.5"
},
"devDependencies": {
"@tanstack/devtools-ui": "0.4.4",
diff --git a/examples/react/time-travel/package.json b/examples/react/time-travel/package.json
index 932cf285..aa24d3de 100644
--- a/examples/react/time-travel/package.json
+++ b/examples/react/time-travel/package.json
@@ -17,7 +17,7 @@
"@tanstack/react-router-devtools": "^1.132.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
- "zod": "^4.1.11",
+ "zod": "^4.3.5",
"zustand": "^5.0.8"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7a53b5ae..1fc952ef 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -82,7 +82,7 @@ importers:
version: 7.2.6(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.2.0(postcss@8.5.6))(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.2.0(postcss@8.5.6))(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
examples/angular/ssr: {}
@@ -101,8 +101,8 @@ importers:
specifier: ^10.28.0
version: 10.28.0
zod:
- specifier: ^4.1.11
- version: 4.1.13
+ specifier: ^4.3.5
+ version: 4.3.6
devDependencies:
'@preact/preset-vite':
specifier: ^2.10.2
@@ -175,8 +175,8 @@ importers:
specifier: ^19.2.0
version: 19.2.3(react@19.2.3)
zod:
- specifier: ^4.1.11
- version: 4.1.13
+ specifier: ^4.3.5
+ version: 4.3.6
devDependencies:
'@tanstack/devtools-ui':
specifier: 0.4.4
@@ -206,6 +206,154 @@ importers:
specifier: 11.3.3
version: 11.3.3(vite@7.2.6(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ examples/react/bundling-repro:
+ dependencies:
+ '@cloudflare/vite-plugin':
+ specifier: ^1.13.8
+ version: 1.22.0(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20260124.0)(wrangler@4.61.0)
+ '@tailwindcss/vite':
+ specifier: ^4.0.6
+ version: 4.1.18(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ '@tanstack/ai':
+ specifier: latest
+ version: 0.2.2
+ '@tanstack/ai-anthropic':
+ specifier: latest
+ version: 0.2.0(@tanstack/ai@0.2.2)(zod@4.3.6)
+ '@tanstack/ai-client':
+ specifier: latest
+ version: 0.2.2
+ '@tanstack/ai-gemini':
+ specifier: latest
+ version: 0.3.2(@tanstack/ai@0.2.2)
+ '@tanstack/ai-ollama':
+ specifier: latest
+ version: 0.3.0(@tanstack/ai@0.2.2)(zod@4.3.6)
+ '@tanstack/ai-openai':
+ specifier: latest
+ version: 0.3.0(@tanstack/ai@0.2.2)(ws@8.18.3)(zod@4.3.6)
+ '@tanstack/ai-react':
+ specifier: latest
+ version: 0.2.2(@tanstack/ai@0.2.2)(@types/react@19.2.7)(react@19.2.3)
+ '@tanstack/react-ai-devtools':
+ specifier: latest
+ version: 0.2.1(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(solid-js@1.9.10)(vue@3.5.25(typescript@5.9.3))
+ '@tanstack/react-devtools':
+ specifier: latest
+ version: link:../../../packages/react-devtools
+ '@tanstack/react-query':
+ specifier: ^5.90.1
+ version: 5.90.12(react@19.2.3)
+ '@tanstack/react-query-devtools':
+ specifier: ^5.90.1
+ version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.3))(react@19.2.3)
+ '@tanstack/react-router':
+ specifier: ^1.132.0
+ version: 1.143.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/react-router-devtools':
+ specifier: ^1.132.0
+ version: 1.143.11(@tanstack/react-router@1.143.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.143.6)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(solid-js@1.9.10)
+ '@tanstack/react-router-ssr-query':
+ specifier: ^1.131.7
+ version: 1.143.11(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.3))(@tanstack/react-router@1.143.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.143.6)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/react-start':
+ specifier: ^1.132.0
+ version: 1.143.11(crossws@0.4.1(srvx@0.9.8))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)))(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ '@tanstack/react-store':
+ specifier: ^0.8.0
+ version: 0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/router-plugin':
+ specifier: ^1.132.0
+ version: 1.143.11(@tanstack/react-router@1.143.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(solid-js@1.9.10)(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)))(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ '@tanstack/store':
+ specifier: ^0.8.0
+ version: 0.8.0
+ class-variance-authority:
+ specifier: ^0.7.1
+ version: 0.7.1
+ clsx:
+ specifier: ^2.1.1
+ version: 2.1.1
+ highlight.js:
+ specifier: ^11.11.1
+ version: 11.11.1
+ lucide-react:
+ specifier: ^0.561.0
+ version: 0.561.0(react@19.2.3)
+ react:
+ specifier: ^19.2.0
+ version: 19.2.3
+ react-dom:
+ specifier: ^19.2.0
+ version: 19.2.3(react@19.2.3)
+ streamdown:
+ specifier: ^1.6.5
+ version: 1.6.11(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(react@19.2.3)
+ tailwind-merge:
+ specifier: ^3.0.2
+ version: 3.4.0
+ tailwindcss:
+ specifier: ^4.0.6
+ version: 4.1.18
+ tw-animate-css:
+ specifier: ^1.3.6
+ version: 1.4.0
+ vite-tsconfig-paths:
+ specifier: ^6.0.2
+ version: 6.0.3(typescript@5.9.3)(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ zod:
+ specifier: ^4.3.5
+ version: 4.3.6
+ devDependencies:
+ '@biomejs/biome':
+ specifier: 2.2.4
+ version: 2.2.4
+ '@tanstack/devtools-event-client':
+ specifier: latest
+ version: link:../../../packages/event-bus-client
+ '@tanstack/devtools-vite':
+ specifier: latest
+ version: link:../../../packages/devtools-vite
+ '@testing-library/dom':
+ specifier: ^10.4.0
+ version: 10.4.1
+ '@testing-library/react':
+ specifier: ^16.2.0
+ version: 16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@types/node':
+ specifier: ^22.15.2
+ version: 22.15.2
+ '@types/react':
+ specifier: ^19.2.0
+ version: 19.2.7
+ '@types/react-dom':
+ specifier: ^19.2.0
+ version: 19.2.3(@types/react@19.2.7)
+ '@vitejs/plugin-react':
+ specifier: ^5.0.4
+ version: 5.1.2(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))
+ babel-plugin-react-compiler:
+ specifier: ^1.0.0
+ version: 1.0.0
+ jsdom:
+ specifier: ^27.0.0
+ version: 27.4.0
+ typescript:
+ specifier: ~5.9.2
+ version: 5.9.3
+ vite:
+ specifier: ^7.1.7
+ version: 7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ vitest:
+ specifier: ^3.2.4
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ web-vitals:
+ specifier: ^5.1.0
+ version: 5.1.0
+ wrangler:
+ specifier: ^4.40.3
+ version: 4.61.0
+
examples/react/custom-devtools:
dependencies:
'@tanstack/devtools-event-client':
@@ -313,8 +461,8 @@ importers:
specifier: ^19.2.0
version: 19.2.3(react@19.2.3)
zod:
- specifier: ^4.1.11
- version: 4.1.13
+ specifier: ^4.3.5
+ version: 4.3.6
devDependencies:
'@tanstack/devtools-ui':
specifier: 0.4.4
@@ -418,7 +566,7 @@ importers:
version: 7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
web-vitals:
specifier: ^5.1.0
version: 5.1.0
@@ -450,8 +598,8 @@ importers:
specifier: ^19.2.0
version: 19.2.3(react@19.2.3)
zod:
- specifier: ^4.1.11
- version: 4.1.13
+ specifier: ^4.3.5
+ version: 4.3.6
zustand:
specifier: ^5.0.8
version: 5.0.9(@types/react@19.2.7)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3))
@@ -801,6 +949,18 @@ packages:
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
+ '@antfu/install-pkg@1.1.0':
+ resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==}
+
+ '@anthropic-ai/sdk@0.71.2':
+ resolution: {integrity: sha512-TGNDEUuEstk/DKu0/TflXAEt+p+p/WhTlFzEnoosvbaDU2LTjm42igSdlL0VijrKpWejtOKxX0b8A7uc+XiSAQ==}
+ hasBin: true
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+ peerDependenciesMeta:
+ zod:
+ optional: true
+
'@asamuzakjp/css-color@4.0.4':
resolution: {integrity: sha512-cKjSKvWGmAziQWbCouOsFwb14mp1betm8Y7Fn+yglDMUUu3r9DCbJ9iJbeFDenLMqFbIMC0pQP8K+B8LAxX3OQ==}
@@ -992,6 +1152,62 @@ packages:
resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
+ '@biomejs/biome@2.2.4':
+ resolution: {integrity: sha512-TBHU5bUy/Ok6m8c0y3pZiuO/BZoY/OcGxoLlrfQof5s8ISVwbVBdFINPQZyFfKwil8XibYWb7JMwnT8wT4WVPg==}
+ engines: {node: '>=14.21.3'}
+ hasBin: true
+
+ '@biomejs/cli-darwin-arm64@2.2.4':
+ resolution: {integrity: sha512-RJe2uiyaloN4hne4d2+qVj3d3gFJFbmrr5PYtkkjei1O9c+BjGXgpUPVbi8Pl8syumhzJjFsSIYkcLt2VlVLMA==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@biomejs/cli-darwin-x64@2.2.4':
+ resolution: {integrity: sha512-cFsdB4ePanVWfTnPVaUX+yr8qV8ifxjBKMkZwN7gKb20qXPxd/PmwqUH8mY5wnM9+U0QwM76CxFyBRJhC9tQwg==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@biomejs/cli-linux-arm64-musl@2.2.4':
+ resolution: {integrity: sha512-7TNPkMQEWfjvJDaZRSkDCPT/2r5ESFPKx+TEev+I2BXDGIjfCZk2+b88FOhnJNHtksbOZv8ZWnxrA5gyTYhSsQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@biomejs/cli-linux-arm64@2.2.4':
+ resolution: {integrity: sha512-M/Iz48p4NAzMXOuH+tsn5BvG/Jb07KOMTdSVwJpicmhN309BeEyRyQX+n1XDF0JVSlu28+hiTQ2L4rZPvu7nMw==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@biomejs/cli-linux-x64-musl@2.2.4':
+ resolution: {integrity: sha512-m41nFDS0ksXK2gwXL6W6yZTYPMH0LughqbsxInSKetoH6morVj43szqKx79Iudkp8WRT5SxSh7qVb8KCUiewGg==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+
+ '@biomejs/cli-linux-x64@2.2.4':
+ resolution: {integrity: sha512-orr3nnf2Dpb2ssl6aihQtvcKtLySLta4E2UcXdp7+RTa7mfJjBgIsbS0B9GC8gVu0hjOu021aU8b3/I1tn+pVQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [linux]
+
+ '@biomejs/cli-win32-arm64@2.2.4':
+ resolution: {integrity: sha512-NXnfTeKHDFUWfxAefa57DiGmu9VyKi0cDqFpdI+1hJWQjGJhJutHPX0b5m+eXvTKOaf+brU+P0JrQAZMb5yYaQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@biomejs/cli-win32-x64@2.2.4':
+ resolution: {integrity: sha512-3Y4V4zVRarVh/B/eSHczR4LYoSVyv3Dfuvm3cWs5w/HScccS0+Wt/lHOcDTRYeHjQmMYVC3rIRWqyN2EI52+zg==}
+ engines: {node: '>=14.21.3'}
+ cpu: [x64]
+ os: [win32]
+
+ '@braintree/sanitize-url@7.1.1':
+ resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==}
+
'@changesets/apply-release-plan@7.0.14':
resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==}
@@ -1053,23 +1269,91 @@ packages:
'@chevrotain/cst-dts-gen@10.5.0':
resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==}
+ '@chevrotain/cst-dts-gen@11.0.3':
+ resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==}
+
'@chevrotain/gast@10.5.0':
resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==}
+ '@chevrotain/gast@11.0.3':
+ resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==}
+
+ '@chevrotain/regexp-to-ast@11.0.3':
+ resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==}
+
'@chevrotain/types@10.5.0':
resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==}
+ '@chevrotain/types@11.0.3':
+ resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==}
+
'@chevrotain/utils@10.5.0':
resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==}
+ '@chevrotain/utils@11.0.3':
+ resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==}
+
'@cloudflare/kv-asset-handler@0.4.0':
resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==}
engines: {node: '>=18.0.0'}
+ '@cloudflare/kv-asset-handler@0.4.2':
+ resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@cloudflare/unenv-preset@2.11.0':
+ resolution: {integrity: sha512-z3hxFajL765VniNPGV0JRStZolNz63gU3B3AktwoGdDlnQvz5nP+Ah4RL04PONlZQjwmDdGHowEStJ94+RsaJg==}
+ peerDependencies:
+ unenv: 2.0.0-rc.24
+ workerd: ^1.20260115.0
+ peerDependenciesMeta:
+ workerd:
+ optional: true
+
+ '@cloudflare/vite-plugin@1.22.0':
+ resolution: {integrity: sha512-fB/4g0Rq0UJMtElaeAW2Wi5vFR8YrZfwPlNLx/D15Je2sJCPlSOF4ozHTK8Yf66SrNK8AQHwOBBW5Biyo3gqYQ==}
+ peerDependencies:
+ vite: ^6.1.0 || ^7.0.0
+ wrangler: ^4.61.0
+
+ '@cloudflare/workerd-darwin-64@1.20260124.0':
+ resolution: {integrity: sha512-VuqscLhiiVIf7t/dcfkjtT0LKJH+a06KUFwFTHgdTcqyLbFZ44u1SLpOONu5fyva4A9MdaKh9a+Z/tBC1d76nw==}
+ engines: {node: '>=16'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@cloudflare/workerd-darwin-arm64@1.20260124.0':
+ resolution: {integrity: sha512-PfnjoFooPgRKFUIZcEP9irnn5Y7OgXinjM+IMlKTdEyLWjMblLsbsqAgydf75+ii0715xAeUlWQjZrWdyOZjMw==}
+ engines: {node: '>=16'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@cloudflare/workerd-linux-64@1.20260124.0':
+ resolution: {integrity: sha512-KSkZl4kwcWeFXI7qsaLlMnKwjgdZwI0OEARjyZpiHCxJCqAqla9XxQKNDscL2Z3qUflIo30i+uteGbFrhzuVGQ==}
+ engines: {node: '>=16'}
+ cpu: [x64]
+ os: [linux]
+
+ '@cloudflare/workerd-linux-arm64@1.20260124.0':
+ resolution: {integrity: sha512-61xjSUNk745EVV4vXZP0KGyLCatcmamfBB+dcdQ8kDr6PrNU4IJ1kuQFSJdjybyDhJRm4TpGVywq+9hREuF7xA==}
+ engines: {node: '>=16'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@cloudflare/workerd-windows-64@1.20260124.0':
+ resolution: {integrity: sha512-j9O11pwQQV6Vi3peNrJoyIas3SrZHlPj0Ah+z1hDW9o1v35euVBQJw/PuzjPOXxTFUlGQoMJdfzPsO9xP86g7A==}
+ engines: {node: '>=16'}
+ cpu: [x64]
+ os: [win32]
+
'@colors/colors@1.6.0':
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
engines: {node: '>=0.1.90'}
+ '@cspotcode/source-map-support@0.8.1':
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+
'@csstools/color-helpers@5.1.0':
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
engines: {node: '>=18'}
@@ -1144,6 +1428,9 @@ packages:
'@emnapi/runtime@1.5.0':
resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==}
+ '@emnapi/runtime@1.8.1':
+ resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
+
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
@@ -1840,6 +2127,15 @@ packages:
'@gerrit0/mini-shiki@1.27.2':
resolution: {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==}
+ '@google/genai@1.38.0':
+ resolution: {integrity: sha512-V/4CQVQGovvGHuS73lwJwHKR9x33kCij3zz/ReEQ4A7RJaV0U7m4k1mvYhFk55cGZdF5JLKu2S9BTaFuEs5xTA==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ '@modelcontextprotocol/sdk': ^1.25.2
+ peerDependenciesMeta:
+ '@modelcontextprotocol/sdk':
+ optional: true
+
'@hono/node-server@1.19.6':
resolution: {integrity: sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==}
engines: {node: '>=18.14.1'}
@@ -1866,6 +2162,149 @@ packages:
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
engines: {node: '>=18.18'}
+ '@iconify/types@2.0.0':
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+
+ '@iconify/utils@3.1.0':
+ resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==}
+
+ '@img/colour@1.0.0':
+ resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
+ engines: {node: '>=18'}
+
+ '@img/sharp-darwin-arm64@0.34.5':
+ resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-darwin-x64@0.34.5':
+ resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-arm64@1.2.4':
+ resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-x64@1.2.4':
+ resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-linux-arm64@1.2.4':
+ resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-arm@1.2.4':
+ resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-ppc64@1.2.4':
+ resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-riscv64@1.2.4':
+ resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-s390x@1.2.4':
+ resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-x64@1.2.4':
+ resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-linux-arm64@0.34.5':
+ resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-linux-arm@0.34.5':
+ resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-linux-ppc64@0.34.5':
+ resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@img/sharp-linux-riscv64@0.34.5':
+ resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@img/sharp-linux-s390x@0.34.5':
+ resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [s390x]
+ os: [linux]
+
+ '@img/sharp-linux-x64@0.34.5':
+ resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-linuxmusl-arm64@0.34.5':
+ resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-linuxmusl-x64@0.34.5':
+ resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-wasm32@0.34.5':
+ resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [wasm32]
+
+ '@img/sharp-win32-arm64@0.34.5':
+ resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@img/sharp-win32-ia32@0.34.5':
+ resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@img/sharp-win32-x64@0.34.5':
+ resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [win32]
+
'@inquirer/external-editor@1.0.2':
resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==}
engines: {node: '>=18'}
@@ -1917,6 +2356,9 @@ packages:
'@jridgewell/trace-mapping@0.3.29':
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
+ '@jridgewell/trace-mapping@0.3.9':
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+
'@manypkg/find-root@1.1.0':
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
@@ -1928,6 +2370,9 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ '@mermaid-js/parser@0.6.3':
+ resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==}
+
'@microsoft/api-extractor-model@7.29.6':
resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==}
@@ -2540,17 +2985,47 @@ packages:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
- '@publint/pack@0.1.2':
- resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==}
- engines: {node: '>=18'}
+ '@protobufjs/aspromise@1.1.2':
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
- '@rolldown/binding-android-arm64@1.0.0-beta.32':
- resolution: {integrity: sha512-Gs+313LfR4Ka3hvifdag9r44WrdKQaohya7ZXUXzARF7yx0atzFlVZjsvxtKAw1Vmtr4hB/RjUD1jf73SW7zDw==}
- cpu: [arm64]
- os: [android]
+ '@protobufjs/base64@1.1.2':
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
- '@rolldown/binding-darwin-arm64@1.0.0-beta.32':
- resolution: {integrity: sha512-W8oMqzGcI7wKPXUtS3WJNXzbghHfNiuM1UBAGpVb+XlUCgYRQJd2PRGP7D3WGql3rR3QEhUvSyAuCBAftPQw6Q==}
+ '@protobufjs/codegen@2.0.4':
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
+
+ '@protobufjs/eventemitter@1.1.0':
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
+
+ '@protobufjs/fetch@1.1.0':
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
+
+ '@protobufjs/float@1.0.2':
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
+
+ '@protobufjs/inquire@1.1.0':
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
+
+ '@protobufjs/path@1.1.2':
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
+
+ '@protobufjs/pool@1.1.0':
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
+
+ '@protobufjs/utf8@1.1.0':
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
+
+ '@publint/pack@0.1.2':
+ resolution: {integrity: sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==}
+ engines: {node: '>=18'}
+
+ '@rolldown/binding-android-arm64@1.0.0-beta.32':
+ resolution: {integrity: sha512-Gs+313LfR4Ka3hvifdag9r44WrdKQaohya7ZXUXzARF7yx0atzFlVZjsvxtKAw1Vmtr4hB/RjUD1jf73SW7zDw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.0-beta.32':
+ resolution: {integrity: sha512-W8oMqzGcI7wKPXUtS3WJNXzbghHfNiuM1UBAGpVb+XlUCgYRQJd2PRGP7D3WGql3rR3QEhUvSyAuCBAftPQw6Q==}
cpu: [arm64]
os: [darwin]
@@ -2827,21 +3302,39 @@ packages:
'@shikijs/core@1.29.2':
resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==}
+ '@shikijs/core@3.21.0':
+ resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
+
'@shikijs/engine-javascript@1.29.2':
resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
+ '@shikijs/engine-javascript@3.21.0':
+ resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
+
'@shikijs/engine-oniguruma@1.29.2':
resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
+ '@shikijs/engine-oniguruma@3.21.0':
+ resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
+
'@shikijs/langs@1.29.2':
resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
+ '@shikijs/langs@3.21.0':
+ resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
+
'@shikijs/themes@1.29.2':
resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==}
+ '@shikijs/themes@3.21.0':
+ resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
+
'@shikijs/types@1.29.2':
resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
+ '@shikijs/types@3.21.0':
+ resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
+
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -3064,16 +3557,81 @@ packages:
peerDependencies:
vite: ^5.2.0 || ^6 || ^7
+ '@tanstack/ai-anthropic@0.2.0':
+ resolution: {integrity: sha512-52uwfHGmclhFQx+xOlaNnqLUfh1O1arcAIPlenzFp8infqgG9wVPwtDfvGRlr8zUkYlEKlXsZSpUxRbT21RYuA==}
+ peerDependencies:
+ '@tanstack/ai': ^0.2.0
+ zod: ^4.0.0
+
+ '@tanstack/ai-client@0.2.2':
+ resolution: {integrity: sha512-7WVYzMas6ACtt4NMGqnduWbKwDr1syYrmgQoy+hw3Iu5lEEIqdI/tG4koJJROtOM7ogUjKQBpIgsX4Tej+fPWA==}
+
+ '@tanstack/ai-devtools-core@0.2.1':
+ resolution: {integrity: sha512-E9Yuqu/ij6bQ4YyoHj8aQwYiUtKlAEtLFeWQeQV/6h1/cwPTtAiVEgsOk8TrgmV8vhHXvb1TlQSKRii2hgyEmQ==}
+
+ '@tanstack/ai-gemini@0.3.2':
+ resolution: {integrity: sha512-5s4lcmGJAb8G7lKGxkn/8soDLn/+Ao5IEh+2ADmd9PTuyOrwgdAus5n3I672GYW4EI/i2eXcMuTxe50DGAsVnw==}
+ peerDependencies:
+ '@tanstack/ai': ^0.2.2
+
+ '@tanstack/ai-ollama@0.3.0':
+ resolution: {integrity: sha512-u/68bLsRehmFsfEcvmMS09yq5vuqOVJs51q1QvBLwxKwBoSzSIKFHArRSVW8W5RcBPdsYxnLyz9d0hcqUy2NjQ==}
+ peerDependencies:
+ '@tanstack/ai': ^0.2.1
+ zod: ^4.0.0
+
+ '@tanstack/ai-openai@0.3.0':
+ resolution: {integrity: sha512-ZaMYUiU97LLDhJFbCQgtTVzCitMQSXFe4j1WGsXrz5fPe9ZUqYzMFSJRozONluM+vuI6z02XF2PJPzQldGKbMQ==}
+ peerDependencies:
+ '@tanstack/ai': ^0.2.2
+ zod: ^4.0.0
+
+ '@tanstack/ai-react@0.2.2':
+ resolution: {integrity: sha512-CNSOOoAUjre5lQxbQVqsXIJEJsTEdyPfyuvAFtgBGvbAJAVn5+6AZyOJzZZz1YKO3F05yD4hMkygelvoSPTUJA==}
+ peerDependencies:
+ '@tanstack/ai': ^0.2.2
+ '@types/react': '>=18.0.0'
+ react: '>=18.0.0'
+
+ '@tanstack/ai@0.2.2':
+ resolution: {integrity: sha512-qqnUSKYMuJnGhiL6t8BAu3Joc9QhQTJIxUIWgQlObDhdY+dCJMLyv+Z7Zw+WqzCCjDfvWmHgLNWDI8+f3KkOPw==}
+ engines: {node: '>=18'}
+
'@tanstack/devtools-event-client@0.3.5':
resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==}
engines: {node: '>=18'}
+ '@tanstack/devtools-event-client@0.4.0':
+ resolution: {integrity: sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==}
+ engines: {node: '>=18'}
+
'@tanstack/devtools-ui@0.4.4':
resolution: {integrity: sha512-5xHXFyX3nom0UaNfiOM92o6ziaHjGo3mcSGe2HD5Xs8dWRZNpdZ0Smd0B9ddEhy0oB+gXyMzZgUJb9DmrZV0Mg==}
engines: {node: '>=18'}
peerDependencies:
solid-js: '>=1.9.7'
+ '@tanstack/devtools-utils@0.3.0':
+ resolution: {integrity: sha512-JgApXVrgtgSLIPrm/QWHx0u6c9Ji0MNMDWhwujapj8eMzux5aOfi+2Ycwzj0A0qITXA12SEPYV3HC568mDtYmQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@types/react': '>=17.0.0'
+ preact: '>=10.0.0'
+ react: '>=17.0.0'
+ solid-js: '>=1.9.7'
+ vue: '>=3.2.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ preact:
+ optional: true
+ react:
+ optional: true
+ solid-js:
+ optional: true
+ vue:
+ optional: true
+
'@tanstack/directive-functions-plugin@1.121.21':
resolution: {integrity: sha512-B9z/HbF7gJBaRHieyX7f2uQ4LpLLAVAEutBZipH6w+CYD6RHRJvSVPzECGHF7icFhNWTiJQL2QR6K07s59yzEw==}
engines: {node: '>=12'}
@@ -3120,6 +3678,12 @@ packages:
'@tanstack/query-devtools@5.91.1':
resolution: {integrity: sha512-l8bxjk6BMsCaVQH6NzQEE/bEgFy1hAs5qbgXl0xhzezlaQbPk6Mgz9BqEg2vTLPOHD8N4k+w/gdgCbEzecGyNg==}
+ '@tanstack/react-ai-devtools@0.2.1':
+ resolution: {integrity: sha512-m2VRloYOzQ5K7F2zsfC6eHAyu3IQULK3gb/ohvtZiD4d/5XcwFkvqSIrY+IGUmU5KfbhJP9HsSSW/iunMBWXHA==}
+ peerDependencies:
+ '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+
'@tanstack/react-form-devtools@0.1.8':
resolution: {integrity: sha512-FwXYLzLIGpqhHcg3sv81ioBBP+3+d2DPS8F+srXBZHuaJAHh6yhwDPAjhe5FlCK8X8+RlVtEbbD+4JXyWao8EQ==}
peerDependencies:
@@ -3428,24 +3992,132 @@ packages:
'@types/chai@5.2.2':
resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==}
+ '@types/d3-array@3.2.2':
+ resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
+
+ '@types/d3-axis@3.0.6':
+ resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==}
+
+ '@types/d3-brush@3.0.6':
+ resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==}
+
+ '@types/d3-chord@3.0.6':
+ resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==}
+
+ '@types/d3-color@3.1.3':
+ resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
+
+ '@types/d3-contour@3.0.6':
+ resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==}
+
+ '@types/d3-delaunay@6.0.4':
+ resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==}
+
+ '@types/d3-dispatch@3.0.7':
+ resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==}
+
+ '@types/d3-drag@3.0.7':
+ resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==}
+
+ '@types/d3-dsv@3.0.7':
+ resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==}
+
+ '@types/d3-ease@3.0.2':
+ resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
+
+ '@types/d3-fetch@3.0.7':
+ resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==}
+
+ '@types/d3-force@3.0.10':
+ resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==}
+
+ '@types/d3-format@3.0.4':
+ resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==}
+
+ '@types/d3-geo@3.1.0':
+ resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==}
+
+ '@types/d3-hierarchy@3.1.7':
+ resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==}
+
+ '@types/d3-interpolate@3.0.4':
+ resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
+
+ '@types/d3-path@3.1.1':
+ resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==}
+
+ '@types/d3-polygon@3.0.2':
+ resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==}
+
+ '@types/d3-quadtree@3.0.6':
+ resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==}
+
+ '@types/d3-random@3.0.3':
+ resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==}
+
+ '@types/d3-scale-chromatic@3.1.0':
+ resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==}
+
+ '@types/d3-scale@4.0.9':
+ resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==}
+
+ '@types/d3-selection@3.0.11':
+ resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==}
+
+ '@types/d3-shape@3.1.8':
+ resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==}
+
+ '@types/d3-time-format@4.0.3':
+ resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==}
+
+ '@types/d3-time@3.0.4':
+ resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==}
+
+ '@types/d3-timer@3.0.2':
+ resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
+
+ '@types/d3-transition@3.0.9':
+ resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==}
+
+ '@types/d3-zoom@3.0.8':
+ resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==}
+
+ '@types/d3@7.4.3':
+ resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==}
+
+ '@types/debug@4.1.12':
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+
'@types/deep-eql@4.0.2':
resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+ '@types/geojson@7946.0.16':
+ resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==}
+
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/katex@0.16.8':
+ resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==}
+
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
'@types/micromatch@4.0.9':
resolution: {integrity: sha512-7V+8ncr22h4UoYRLnLXSpTxjQrNUXtWHGeMPRJt1nULXI57G9bIcpyrHlmrQ7QK24EyyuXvYcSSWAM8GA9nqCg==}
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
+
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
@@ -3478,6 +4150,12 @@ packages:
'@types/triple-beam@1.3.5':
resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
@@ -3965,6 +4643,9 @@ packages:
peerDependencies:
'@babel/core': ^7.20.12
+ babel-plugin-react-compiler@1.0.0:
+ resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==}
+
babel-plugin-transform-hook-names@1.0.2:
resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==}
peerDependencies:
@@ -3975,6 +4656,9 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -3995,6 +4679,9 @@ packages:
bidi-js@1.0.3:
resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
+ bignumber.js@9.3.1:
+ resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
+
binary-extensions@2.3.0:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
@@ -4011,6 +4698,9 @@ packages:
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+ blake3-wasm@2.1.5:
+ resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
+
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -4040,6 +4730,9 @@ packages:
resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
engines: {node: '>=8.0.0'}
+ buffer-equal-constant-time@1.0.1:
+ resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==}
+
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -4130,6 +4823,12 @@ packages:
character-entities-legacy@3.0.0:
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+ character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
chardet@2.1.0:
resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
@@ -4144,9 +4843,17 @@ packages:
resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==}
engines: {node: '>=20.18.1'}
+ chevrotain-allstar@0.3.1:
+ resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==}
+ peerDependencies:
+ chevrotain: ^11.0.0
+
chevrotain@10.5.0:
resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==}
+ chevrotain@11.0.3:
+ resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==}
+
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -4166,6 +4873,9 @@ packages:
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+ class-variance-authority@0.7.1:
+ resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
+
cli-boxes@3.0.0:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
@@ -4242,6 +4952,14 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
+ commander@7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+
+ commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+
comment-parser@1.4.1:
resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
engines: {node: '>= 12.0.0'}
@@ -4298,6 +5016,12 @@ packages:
core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+ cose-base@1.0.3:
+ resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
+
+ cose-base@2.2.0:
+ resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==}
+
crc-32@1.2.2:
resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
engines: {node: '>=0.8'}
@@ -4360,6 +5084,162 @@ packages:
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+ cytoscape-cose-bilkent@4.1.0:
+ resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==}
+ peerDependencies:
+ cytoscape: ^3.2.0
+
+ cytoscape-fcose@2.2.0:
+ resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==}
+ peerDependencies:
+ cytoscape: ^3.2.0
+
+ cytoscape@3.33.1:
+ resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==}
+ engines: {node: '>=0.10'}
+
+ d3-array@2.12.1:
+ resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==}
+
+ d3-array@3.2.4:
+ resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
+ engines: {node: '>=12'}
+
+ d3-axis@3.0.0:
+ resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
+ engines: {node: '>=12'}
+
+ d3-brush@3.0.0:
+ resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
+ engines: {node: '>=12'}
+
+ d3-chord@3.0.1:
+ resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
+ engines: {node: '>=12'}
+
+ d3-color@3.1.0:
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
+
+ d3-contour@4.0.2:
+ resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
+ engines: {node: '>=12'}
+
+ d3-delaunay@6.0.4:
+ resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
+ engines: {node: '>=12'}
+
+ d3-dispatch@3.0.1:
+ resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+ engines: {node: '>=12'}
+
+ d3-drag@3.0.0:
+ resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
+ engines: {node: '>=12'}
+
+ d3-dsv@3.0.1:
+ resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ d3-ease@3.0.1:
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+ engines: {node: '>=12'}
+
+ d3-fetch@3.0.1:
+ resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
+ engines: {node: '>=12'}
+
+ d3-force@3.0.0:
+ resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
+ engines: {node: '>=12'}
+
+ d3-format@3.1.2:
+ resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==}
+ engines: {node: '>=12'}
+
+ d3-geo@3.1.1:
+ resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==}
+ engines: {node: '>=12'}
+
+ d3-hierarchy@3.1.2:
+ resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
+ engines: {node: '>=12'}
+
+ d3-interpolate@3.0.1:
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
+
+ d3-path@1.0.9:
+ resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
+
+ d3-path@3.1.0:
+ resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
+ engines: {node: '>=12'}
+
+ d3-polygon@3.0.1:
+ resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
+ engines: {node: '>=12'}
+
+ d3-quadtree@3.0.1:
+ resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+ engines: {node: '>=12'}
+
+ d3-random@3.0.1:
+ resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
+ engines: {node: '>=12'}
+
+ d3-sankey@0.12.3:
+ resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==}
+
+ d3-scale-chromatic@3.1.0:
+ resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==}
+ engines: {node: '>=12'}
+
+ d3-scale@4.0.2:
+ resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
+ engines: {node: '>=12'}
+
+ d3-selection@3.0.0:
+ resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+ engines: {node: '>=12'}
+
+ d3-shape@1.3.7:
+ resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
+
+ d3-shape@3.2.0:
+ resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
+ engines: {node: '>=12'}
+
+ d3-time-format@4.1.0:
+ resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
+ engines: {node: '>=12'}
+
+ d3-time@3.1.0:
+ resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
+ engines: {node: '>=12'}
+
+ d3-timer@3.0.1:
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+ engines: {node: '>=12'}
+
+ d3-transition@3.0.1:
+ resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ d3-selection: 2 - 3
+
+ d3-zoom@3.0.0:
+ resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
+ engines: {node: '>=12'}
+
+ d3@7.9.0:
+ resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==}
+ engines: {node: '>=12'}
+
+ dagre-d3-es@7.0.13:
+ resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==}
+
data-uri-to-buffer@4.0.1:
resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
engines: {node: '>= 12'}
@@ -4457,6 +5337,9 @@ packages:
decimal.js@10.6.0:
resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
+ decode-named-character-reference@1.3.0:
+ resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
+
deep-eql@5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@@ -4494,6 +5377,9 @@ packages:
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+ delaunator@5.0.1:
+ resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
+
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -4530,6 +5416,10 @@ packages:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
detective-amd@6.0.1:
resolution: {integrity: sha512-TtyZ3OhwUoEEIhTFoc1C9IyJIud3y+xYkSRjmvCt65+ycQuc3VcBrPRTMWoO/AnuCyOB8T5gky+xf7Igxtjd3g==}
engines: {node: '>=18'}
@@ -4600,6 +5490,9 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
+ dompurify@3.3.1:
+ resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
+
domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
@@ -4729,6 +5622,9 @@ packages:
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ ecdsa-sig-formatter@1.0.11:
+ resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==}
+
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
@@ -5068,6 +5964,9 @@ packages:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
@@ -5104,6 +6003,9 @@ packages:
exsolve@1.0.7:
resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
extendable-error@0.1.7:
resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
@@ -5265,6 +6167,14 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ gaxios@7.1.3:
+ resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==}
+ engines: {node: '>=18'}
+
+ gcp-metadata@8.1.2:
+ resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==}
+ engines: {node: '>=18'}
+
generate-function@2.3.1:
resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==}
@@ -5358,6 +6268,14 @@ packages:
peerDependencies:
csstype: ^3.0.10
+ google-auth-library@10.5.0:
+ resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==}
+ engines: {node: '>=18'}
+
+ google-logging-utils@1.1.3:
+ resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==}
+ engines: {node: '>=14'}
+
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
@@ -5371,6 +6289,10 @@ packages:
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ gtoken@8.0.0:
+ resolution: {integrity: sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==}
+ engines: {node: '>=18'}
+
gzip-size@7.0.0:
resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -5399,6 +6321,9 @@ packages:
crossws:
optional: true
+ hachure-fill@0.5.2:
+ resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==}
+
happy-dom@18.0.1:
resolution: {integrity: sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==}
engines: {node: '>=20.0.0'}
@@ -5419,12 +6344,52 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ hast-util-from-dom@5.0.1:
+ resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==}
+
+ hast-util-from-html-isomorphic@2.0.0:
+ resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==}
+
+ hast-util-from-html@2.0.3:
+ resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
+
+ hast-util-from-parse5@8.0.3:
+ resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
+
+ hast-util-is-element@3.0.0:
+ resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
+
+ hast-util-parse-selector@4.0.0:
+ resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
+
+ hast-util-raw@9.1.0:
+ resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
+
+ hast-util-sanitize@5.0.2:
+ resolution: {integrity: sha512-3yTWghByc50aGS7JlGhk61SPenfE/p1oaFeNwkOOyrscaOkMGrcW9+Cy/QAIOBpZxP1yqDIzFMR0+Np0i0+usg==}
+
hast-util-to-html@9.0.5:
resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
+ hast-util-to-jsx-runtime@2.3.6:
+ resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
+
+ hast-util-to-parse5@8.0.1:
+ resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==}
+
+ hast-util-to-text@4.0.2:
+ resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
+
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+ hast@1.0.0:
+ resolution: {integrity: sha512-vFUqlRV5C+xqP76Wwq2SrM0kipnmpxJm7OfvVXpB35Fp+Fn4MV+ozr+JZr5qFvyR1q/U+Foim2x+3P+x9S1PLA==}
+ deprecated: Renamed to rehype
+
+ hastscript@9.0.1:
+ resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
+
he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
@@ -5435,6 +6400,10 @@ packages:
hermes-parser@0.25.1:
resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+ highlight.js@11.11.1:
+ resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
+ engines: {node: '>=12.0.0'}
+
hono@4.10.6:
resolution: {integrity: sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==}
engines: {node: '>=16.9.0'}
@@ -5463,6 +6432,9 @@ packages:
html-to-image@1.11.13:
resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==}
+ html-url-attributes@3.0.1:
+ resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
+
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
@@ -5548,6 +6520,16 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ inline-style-parser@0.2.7:
+ resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
+
+ internmap@1.0.1:
+ resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==}
+
+ internmap@2.0.3:
+ resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
+ engines: {node: '>=12'}
+
ioredis@5.6.1:
resolution: {integrity: sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==}
engines: {node: '>=12.22.0'}
@@ -5555,6 +6537,12 @@ packages:
iron-webcrypto@1.2.1:
resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
@@ -5570,6 +6558,9 @@ packages:
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
engines: {node: '>= 0.4'}
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
@@ -5592,6 +6583,9 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
is-immutable-type@5.0.1:
resolution: {integrity: sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==}
peerDependencies:
@@ -5622,6 +6616,10 @@ packages:
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
engines: {node: '>=8'}
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -5754,9 +6752,16 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ json-bigint@1.0.0:
+ resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==}
+
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ json-schema-to-ts@3.1.1:
+ resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==}
+ engines: {node: '>=16'}
+
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -5781,13 +6786,26 @@ packages:
resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==}
engines: {node: '>=12.20'}
+ jwa@2.0.1:
+ resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==}
+
+ jws@4.0.1:
+ resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==}
+
jwt-decode@4.0.0:
resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==}
engines: {node: '>=18'}
+ katex@0.16.28:
+ resolution: {integrity: sha512-YHzO7721WbmAL6Ov1uzN/l5mY5WWWhJBSW+jq4tkfZfsxmo1hu6frS0EOswvjBUnWE6NtjEs48SFn5CQESRLZg==}
+ hasBin: true
+
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ khroma@2.1.0:
+ resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==}
+
kleur@4.1.5:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
@@ -5818,9 +6836,19 @@ packages:
engines: {node: '>=8'}
hasBin: true
+ langium@3.3.1:
+ resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==}
+ engines: {node: '>=16.0.0'}
+
launch-editor@2.12.0:
resolution: {integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==}
+ layout-base@1.0.2:
+ resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
+
+ layout-base@2.0.1:
+ resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==}
+
lazystream@1.0.1:
resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
engines: {node: '>= 0.6.3'}
@@ -5980,6 +7008,9 @@ packages:
long@5.3.2:
resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
loupe@3.2.1:
resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==}
@@ -6005,6 +7036,11 @@ packages:
resolution: {integrity: sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q==}
engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'}
+ lucide-react@0.542.0:
+ resolution: {integrity: sha512-w3hD8/SQB7+lzU2r4VdFyzzOzKnUjTZIF/MQJGSSvni7Llewni4vuViRppfRAa2guOsY5k4jZyxw/i9DQHv+dw==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
lucide-react@0.561.0:
resolution: {integrity: sha512-Y59gMY38tl4/i0qewcqohPdEbieBy7SovpBL9IFebhc2mDd8x4PZSOsiFRkpPcOq6bj1r/mjH/Rk73gSlIJP2A==}
peerDependencies:
@@ -6037,6 +7073,14 @@ packages:
markdown-link-extractor@4.0.3:
resolution: {integrity: sha512-aEltJiQ4/oC0h6Jbw/uuATGSHZPkcH8DIunNH1A0e+GSFkvZ6BbBkdvBTVfIV8r6HapCU3yTd0eFdi3ZeM1eAQ==}
+ markdown-table@3.0.4:
+ resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
+
+ marked@16.4.2:
+ resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==}
+ engines: {node: '>= 20'}
+ hasBin: true
+
marked@17.0.1:
resolution: {integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==}
engines: {node: '>= 20'}
@@ -6046,9 +7090,54 @@ packages:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
+ mdast-util-find-and-replace@3.0.2:
+ resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
+
+ mdast-util-from-markdown@2.0.2:
+ resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+
+ mdast-util-gfm-autolink-literal@2.0.1:
+ resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
+
+ mdast-util-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
+
+ mdast-util-gfm-table@2.0.0:
+ resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
+
+ mdast-util-gfm@3.1.0:
+ resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
+
+ mdast-util-math@3.0.0:
+ resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==}
+
+ mdast-util-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
+
+ mdast-util-mdx-jsx@3.2.0:
+ resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
+
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
+ mdast-util-phrasing@4.1.0:
+ resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
+
mdast-util-to-hast@13.2.0:
resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
+ mdast-util-to-markdown@2.1.2:
+ resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
+
+ mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
mdn-data@2.12.2:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
@@ -6070,24 +7159,128 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ mermaid@11.12.2:
+ resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==}
+
micro-api-client@3.3.0:
resolution: {integrity: sha512-y0y6CUB9RLVsy3kfgayU28746QrNMpSm9O/AYGNsBgOkJr/X/Jk0VLGoO8Ude7Bpa8adywzF+MzXNZRFRsNPhg==}
+ micromark-core-commonmark@2.0.3:
+ resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
+
+ micromark-extension-cjk-friendly-gfm-strikethrough@1.2.3:
+ resolution: {integrity: sha512-gSPnxgHDDqXYOBvQRq6lerrq9mjDhdtKn+7XETuXjxWcL62yZEfUdA28Ml1I2vDIPfAOIKLa0h2XDSGkInGHFQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ micromark: ^4.0.0
+ micromark-util-types: ^2.0.0
+ peerDependenciesMeta:
+ micromark-util-types:
+ optional: true
+
+ micromark-extension-cjk-friendly-util@2.1.1:
+ resolution: {integrity: sha512-egs6+12JU2yutskHY55FyR48ZiEcFOJFyk9rsiyIhcJ6IvWB6ABBqVrBw8IobqJTDZ/wdSr9eoXDPb5S2nW1bg==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ micromark-util-types: '*'
+ peerDependenciesMeta:
+ micromark-util-types:
+ optional: true
+
+ micromark-extension-cjk-friendly@1.2.3:
+ resolution: {integrity: sha512-gRzVLUdjXBLX6zNPSnHGDoo+ZTp5zy+MZm0g3sv+3chPXY7l9gW+DnrcHcZh/jiPR6MjPKO4AEJNp4Aw6V9z5Q==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ micromark: ^4.0.0
+ micromark-util-types: ^2.0.0
+ peerDependenciesMeta:
+ micromark-util-types:
+ optional: true
+
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
+
+ micromark-extension-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
+
+ micromark-extension-gfm-table@2.1.1:
+ resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
+
+ micromark-extension-gfm@3.0.0:
+ resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
+
+ micromark-extension-math@3.1.0:
+ resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==}
+
+ micromark-factory-destination@2.0.1:
+ resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
+
+ micromark-factory-label@2.0.1:
+ resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
+
+ micromark-factory-space@2.0.1:
+ resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
+
+ micromark-factory-title@2.0.1:
+ resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
+
+ micromark-factory-whitespace@2.0.1:
+ resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
micromark-util-character@2.1.1:
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+ micromark-util-chunked@2.0.1:
+ resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+ micromark-util-classify-character@2.0.1:
+ resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+ micromark-util-combine-extensions@2.0.1:
+ resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+ micromark-util-decode-string@2.0.1:
+ resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
+
micromark-util-encode@2.0.1:
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+ micromark-util-html-tag-name@2.0.1:
+ resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+ micromark-util-normalize-identifier@2.0.1:
+ resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+ micromark-util-resolve-all@2.0.1:
+ resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
micromark-util-sanitize-uri@2.0.1:
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+ micromark-util-subtokenize@2.1.0:
+ resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
+
micromark-util-symbol@2.0.1:
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
micromark-util-types@2.0.2:
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+ micromark@4.0.2:
+ resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -6135,6 +7328,11 @@ packages:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
+ miniflare@4.20260124.0:
+ resolution: {integrity: sha512-Co8onUh+POwOuLty4myQg+Nzg9/xZ5eAJc1oqYBzRovHd/XIpb5WAnRVaubcfAQJ85awWtF3yXUHCDx6cIaN3w==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
minimatch@10.0.1:
resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
engines: {node: 20 || >=22}
@@ -6176,6 +7374,9 @@ packages:
mlly@1.7.4:
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
+ mlly@1.8.0:
+ resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+
module-definition@6.0.1:
resolution: {integrity: sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g==}
engines: {node: '>=18'}
@@ -6376,6 +7577,9 @@ packages:
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
+ ollama@0.6.3:
+ resolution: {integrity: sha512-KEWEhIqE5wtfzEIZbDCLH51VFZ6Z3ZSa6sIOg/E/tBV8S51flyqBOXi+bRxlOYKDf8i327zG9eSTb8IJxvm3Zg==}
+
on-finished@2.4.1:
resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
engines: {node: '>= 0.8'}
@@ -6394,9 +7598,15 @@ packages:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
+ oniguruma-parser@0.12.1:
+ resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==}
+
oniguruma-to-es@2.3.0:
resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==}
+ oniguruma-to-es@4.3.4:
+ resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==}
+
open@10.2.0:
resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
engines: {node: '>=18'}
@@ -6405,6 +7615,18 @@ packages:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
engines: {node: '>=12'}
+ openai@6.16.0:
+ resolution: {integrity: sha512-fZ1uBqjFUjXzbGc35fFtYKEOxd20kd9fDpFeqWtsOZWiubY8CZ1NAlXHW3iathaFvqmNtCWMIsosCuyeI7Joxg==}
+ hasBin: true
+ peerDependencies:
+ ws: ^8.18.0
+ zod: ^3.25 || ^4.0
+ peerDependenciesMeta:
+ ws:
+ optional: true
+ zod:
+ optional: true
+
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -6492,6 +7714,9 @@ packages:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
+ parse-entities@4.0.2:
+ resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+
parse-gitignore@2.0.0:
resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==}
engines: {node: '>=14'}
@@ -6516,9 +7741,15 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
+ partial-json@0.1.7:
+ resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==}
+
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+ path-data-parser@0.1.0:
+ resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}
+
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -6631,6 +7862,12 @@ packages:
pkg-types@2.2.0:
resolution: {integrity: sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==}
+ points-on-curve@0.2.0:
+ resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==}
+
+ points-on-path@0.2.1:
+ resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==}
+
postcss-load-config@6.0.1:
resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
engines: {node: '>= 18'}
@@ -6754,6 +7991,10 @@ packages:
property-information@7.1.0:
resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+ protobufjs@7.5.4:
+ resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
+ engines: {node: '>=12.0.0'}
+
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
@@ -6883,18 +8124,74 @@ packages:
regex-recursion@5.1.1:
resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==}
+ regex-recursion@6.0.2:
+ resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
+
regex-utilities@2.3.0:
resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
regex@5.1.1:
resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==}
+ regex@6.1.0:
+ resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
+
regexp-to-ast@0.5.0:
resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==}
+ rehype-harden@1.1.7:
+ resolution: {integrity: sha512-j5DY0YSK2YavvNGV+qBHma15J9m0WZmRe8posT5AtKDS6TNWtMVTo6RiqF8SidfcASYz8f3k2J/1RWmq5zTXUw==}
+
+ rehype-katex@7.0.1:
+ resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==}
+
+ rehype-raw@7.0.0:
+ resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
+
+ rehype-sanitize@6.0.0:
+ resolution: {integrity: sha512-CsnhKNsyI8Tub6L4sm5ZFsme4puGfc6pYylvXo1AeqaGbjOYyzNv3qZPwvs0oMJ39eryyeOdmxwUIo94IpEhqg==}
+
+ remark-cjk-friendly-gfm-strikethrough@1.2.3:
+ resolution: {integrity: sha512-bXfMZtsaomK6ysNN/UGRIcasQAYkC10NtPmP0oOHOV8YOhA2TXmwRXCku4qOzjIFxAPfish5+XS0eIug2PzNZA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@types/mdast': ^4.0.0
+ unified: ^11.0.0
+ peerDependenciesMeta:
+ '@types/mdast':
+ optional: true
+
+ remark-cjk-friendly@1.2.3:
+ resolution: {integrity: sha512-UvAgxwlNk+l9Oqgl/9MWK2eWRS7zgBW/nXX9AthV7nd/3lNejF138E7Xbmk9Zs4WjTJGs721r7fAEc7tNFoH7g==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ '@types/mdast': ^4.0.0
+ unified: ^11.0.0
+ peerDependenciesMeta:
+ '@types/mdast':
+ optional: true
+
+ remark-gfm@4.0.1:
+ resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
+
+ remark-math@6.0.0:
+ resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==}
+
+ remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+ remark-rehype@11.1.2:
+ resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
+
+ remark-stringify@11.0.0:
+ resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+
remeda@2.21.3:
resolution: {integrity: sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg==}
+ remend@1.0.1:
+ resolution: {integrity: sha512-152puVH0qMoRJQFnaMG+rVDdf01Jq/CaED+MBuXExurJgdbkLp0c3TIe4R12o28Klx8uyGsjvFNG05aFG69G9w==}
+
remove-accents@0.5.0:
resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==}
@@ -6951,6 +8248,13 @@ packages:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ rimraf@5.0.10:
+ resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
+ hasBin: true
+
+ robust-predicates@3.0.2:
+ resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
+
rolldown@1.0.0-beta.32:
resolution: {integrity: sha512-vxI2sPN07MMaoYKlFrVva5qZ1Y7DAZkgp7MQwTnyHt4FUMz9Sh+YeCzNFV9JYHI6ZNwoGWLCfCViE3XVsRC1cg==}
hasBin: true
@@ -6981,6 +8285,9 @@ packages:
rou3@0.7.10:
resolution: {integrity: sha512-aoFj6f7MJZ5muJ+Of79nrhs9N3oLGqi2VEMe94Zbkjb6Wupha46EuoYgpWSOZlXww3bbd8ojgXTAA2mzimX5Ww==}
+ roughjs@4.6.6:
+ resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==}
+
run-applescript@7.0.0:
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
engines: {node: '>=18'}
@@ -6988,6 +8295,9 @@ packages:
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ rw@1.3.3:
+ resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
+
sade@1.8.1:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
@@ -7089,6 +8399,10 @@ packages:
setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+ sharp@0.34.5:
+ resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -7148,6 +8462,9 @@ packages:
shiki@1.29.2:
resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==}
+ shiki@3.21.0:
+ resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
+
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
engines: {node: '>= 0.4'}
@@ -7303,6 +8620,11 @@ packages:
std-env@3.9.0:
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+ streamdown@1.6.11:
+ resolution: {integrity: sha512-Y38fwRx5kCKTluwM+Gf27jbbi9q6Qy+WC9YrC1YbCpMkktT3PsRBJHMWiqYeF8y/JzLpB1IzDoeaB6qkQEDnAA==}
+ peerDependencies:
+ react: ^18.0.0 || ^19.0.0
+
streamx@2.22.1:
resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==}
@@ -7365,6 +8687,15 @@ packages:
strip-literal@3.0.0:
resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
+ style-to-js@1.1.21:
+ resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
+
+ style-to-object@1.0.14:
+ resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
+
+ stylis@4.3.6:
+ resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
+
sucrase@3.35.0:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -7397,6 +8728,9 @@ packages:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'}
+ tailwind-merge@3.4.0:
+ resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==}
+
tailwindcss@4.1.18:
resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
@@ -7525,6 +8859,12 @@ packages:
resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==}
engines: {node: '>= 14.0.0'}
+ trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
+ ts-algebra@2.0.0:
+ resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==}
+
ts-api-utils@2.1.0:
resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==}
engines: {node: '>=18.12'}
@@ -7536,6 +8876,10 @@ packages:
peerDependencies:
typescript: '>=4.0.0'
+ ts-dedent@2.2.0:
+ resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
+ engines: {node: '>=6.10'}
+
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
@@ -7588,6 +8932,9 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
+ tw-animate-css@1.4.0:
+ resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==}
+
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -7663,6 +9010,10 @@ packages:
resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
engines: {node: '>=20.18.1'}
+ undici@7.18.2:
+ resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==}
+ engines: {node: '>=20.18.1'}
+
unenv@1.10.0:
resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==}
@@ -7680,16 +9031,25 @@ packages:
resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
+ unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
unimport@5.2.0:
resolution: {integrity: sha512-bTuAMMOOqIAyjV4i4UH7P07pO+EsVxmhOzQ2YJ290J6mkLUdozNhb5I/YoOEheeNADC03ent3Qj07X0fWfUpmw==}
engines: {node: '>=18.12.0'}
+ unist-util-find-after@5.0.0:
+ resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
+
unist-util-is@6.0.0:
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
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@4.0.0:
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
@@ -7914,6 +9274,9 @@ packages:
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ vfile-location@5.0.3:
+ resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
+
vfile-message@4.0.3:
resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
@@ -8157,6 +9520,26 @@ packages:
jsdom:
optional: true
+ vscode-jsonrpc@8.2.0:
+ resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-languageserver-protocol@3.17.5:
+ resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
+
+ vscode-languageserver-textdocument@1.0.12:
+ resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+
+ vscode-languageserver-types@3.17.5:
+ resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
+
+ vscode-languageserver@9.0.1:
+ resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
+ hasBin: true
+
+ vscode-uri@3.0.8:
+ resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
@@ -8196,6 +9579,9 @@ packages:
wcwidth@1.0.1:
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ web-namespaces@2.0.1:
+ resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+
web-streams-polyfill@3.3.3:
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
engines: {node: '>= 8'}
@@ -8217,6 +9603,9 @@ packages:
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
engines: {node: '>=18'}
+ whatwg-fetch@3.6.20:
+ resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==}
+
whatwg-mimetype@3.0.0:
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
engines: {node: '>=12'}
@@ -8263,6 +9652,21 @@ packages:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
+ workerd@1.20260124.0:
+ resolution: {integrity: sha512-JN6voV/fUQK342a39Rl+20YVmtIXZVbpxc7V/m809lUnlTGPy4aa5MI7PMoc+9qExgAEOw9cojvN5zOfqmMWLg==}
+ engines: {node: '>=16'}
+ hasBin: true
+
+ wrangler@4.61.0:
+ resolution: {integrity: sha512-Kb8NMe1B/HM7/ds3hU+fcV1U7T996vRKJ0UU/qqgNUMwdemTRA+sSaH3mQvQslIBbprHHU81s0huA6fDIcwiaQ==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ '@cloudflare/workers-types': ^4.20260124.0
+ peerDependenciesMeta:
+ '@cloudflare/workers-types':
+ optional: true
+
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -8282,6 +9686,18 @@ packages:
resolution: {integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==}
engines: {node: ^18.17.0 || >=20.5.0}
+ ws@8.18.0:
+ resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
ws@8.18.3:
resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
engines: {node: '>=10.0.0'}
@@ -8358,6 +9774,9 @@ packages:
youch-core@0.3.3:
resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
+ youch@4.1.0-beta.10:
+ resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==}
+
youch@4.1.0-beta.8:
resolution: {integrity: sha512-rY2A2lSF7zC+l7HH9Mq+83D1dLlsPnEvy8jTouzaptDZM6geqZ3aJe/b7ULCwRURPtWV3vbDjA2DDMdoBol0HQ==}
engines: {node: '>=18'}
@@ -8387,11 +9806,8 @@ packages:
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
- zod@4.1.13:
- resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==}
-
- zod@4.2.1:
- resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==}
+ zod@4.3.6:
+ resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
zustand@5.0.9:
resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==}
@@ -8427,6 +9843,17 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.12
'@jridgewell/trace-mapping': 0.3.29
+ '@antfu/install-pkg@1.1.0':
+ dependencies:
+ package-manager-detector: 1.3.0
+ tinyexec: 1.0.1
+
+ '@anthropic-ai/sdk@0.71.2(zod@4.3.6)':
+ dependencies:
+ json-schema-to-ts: 3.1.1
+ optionalDependencies:
+ zod: 4.3.6
+
'@asamuzakjp/css-color@4.0.4':
dependencies:
'@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
@@ -8700,6 +10127,43 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
+ '@biomejs/biome@2.2.4':
+ optionalDependencies:
+ '@biomejs/cli-darwin-arm64': 2.2.4
+ '@biomejs/cli-darwin-x64': 2.2.4
+ '@biomejs/cli-linux-arm64': 2.2.4
+ '@biomejs/cli-linux-arm64-musl': 2.2.4
+ '@biomejs/cli-linux-x64': 2.2.4
+ '@biomejs/cli-linux-x64-musl': 2.2.4
+ '@biomejs/cli-win32-arm64': 2.2.4
+ '@biomejs/cli-win32-x64': 2.2.4
+
+ '@biomejs/cli-darwin-arm64@2.2.4':
+ optional: true
+
+ '@biomejs/cli-darwin-x64@2.2.4':
+ optional: true
+
+ '@biomejs/cli-linux-arm64-musl@2.2.4':
+ optional: true
+
+ '@biomejs/cli-linux-arm64@2.2.4':
+ optional: true
+
+ '@biomejs/cli-linux-x64-musl@2.2.4':
+ optional: true
+
+ '@biomejs/cli-linux-x64@2.2.4':
+ optional: true
+
+ '@biomejs/cli-win32-arm64@2.2.4':
+ optional: true
+
+ '@biomejs/cli-win32-x64@2.2.4':
+ optional: true
+
+ '@braintree/sanitize-url@7.1.1': {}
+
'@changesets/apply-release-plan@7.0.14':
dependencies:
'@changesets/config': 3.1.2
@@ -8858,24 +10322,81 @@ snapshots:
lodash: 4.17.21
optional: true
+ '@chevrotain/cst-dts-gen@11.0.3':
+ dependencies:
+ '@chevrotain/gast': 11.0.3
+ '@chevrotain/types': 11.0.3
+ lodash-es: 4.17.21
+
'@chevrotain/gast@10.5.0':
dependencies:
'@chevrotain/types': 10.5.0
lodash: 4.17.21
optional: true
+ '@chevrotain/gast@11.0.3':
+ dependencies:
+ '@chevrotain/types': 11.0.3
+ lodash-es: 4.17.21
+
+ '@chevrotain/regexp-to-ast@11.0.3': {}
+
'@chevrotain/types@10.5.0':
optional: true
+ '@chevrotain/types@11.0.3': {}
+
'@chevrotain/utils@10.5.0':
optional: true
+ '@chevrotain/utils@11.0.3': {}
+
'@cloudflare/kv-asset-handler@0.4.0':
dependencies:
mime: 3.0.0
+ '@cloudflare/kv-asset-handler@0.4.2': {}
+
+ '@cloudflare/unenv-preset@2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260124.0)':
+ dependencies:
+ unenv: 2.0.0-rc.24
+ optionalDependencies:
+ workerd: 1.20260124.0
+
+ '@cloudflare/vite-plugin@1.22.0(vite@7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))(workerd@1.20260124.0)(wrangler@4.61.0)':
+ dependencies:
+ '@cloudflare/unenv-preset': 2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260124.0)
+ miniflare: 4.20260124.0
+ unenv: 2.0.0-rc.24
+ vite: 7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ wrangler: 4.61.0
+ ws: 8.18.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - workerd
+
+ '@cloudflare/workerd-darwin-64@1.20260124.0':
+ optional: true
+
+ '@cloudflare/workerd-darwin-arm64@1.20260124.0':
+ optional: true
+
+ '@cloudflare/workerd-linux-64@1.20260124.0':
+ optional: true
+
+ '@cloudflare/workerd-linux-arm64@1.20260124.0':
+ optional: true
+
+ '@cloudflare/workerd-windows-64@1.20260124.0':
+ optional: true
+
'@colors/colors@1.6.0': {}
+ '@cspotcode/source-map-support@0.8.1':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
'@csstools/color-helpers@5.1.0': {}
'@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)':
@@ -8944,6 +10465,11 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@emnapi/runtime@1.8.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/wasi-threads@1.1.0':
dependencies:
tslib: 2.8.1
@@ -9322,7 +10848,7 @@ snapshots:
'@eslint-react/eff': 1.53.1
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
ts-pattern: 5.8.0
- zod: 4.2.1
+ zod: 4.3.6
transitivePeerDependencies:
- eslint
- supports-color
@@ -9334,7 +10860,7 @@ snapshots:
'@eslint-react/kit': 1.53.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
ts-pattern: 5.8.0
- zod: 4.2.1
+ zod: 4.3.6
transitivePeerDependencies:
- eslint
- supports-color
@@ -9405,6 +10931,16 @@ snapshots:
'@shikijs/types': 1.29.2
'@shikijs/vscode-textmate': 10.0.2
+ '@google/genai@1.38.0':
+ dependencies:
+ google-auth-library: 10.5.0
+ protobufjs: 7.5.4
+ ws: 8.18.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
'@hono/node-server@1.19.6(hono@4.10.6)':
dependencies:
hono: 4.10.6
@@ -9423,37 +10959,141 @@ snapshots:
'@humanwhocodes/retry@0.4.2': {}
- '@inquirer/external-editor@1.0.2(@types/node@22.15.2)':
+ '@iconify/types@2.0.0': {}
+
+ '@iconify/utils@3.1.0':
dependencies:
- chardet: 2.1.0
- iconv-lite: 0.7.0
- optionalDependencies:
- '@types/node': 22.15.2
+ '@antfu/install-pkg': 1.1.0
+ '@iconify/types': 2.0.0
+ mlly: 1.8.0
- '@ioredis/commands@1.3.0': {}
+ '@img/colour@1.0.0': {}
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.0
- strip-ansi-cjs: strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: wrap-ansi@7.0.0
+ '@img/sharp-darwin-arm64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-arm64': 1.2.4
+ optional: true
- '@isaacs/fs-minipass@4.0.1':
- dependencies:
- minipass: 7.1.2
+ '@img/sharp-darwin-x64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.2.4
+ optional: true
- '@jest/diff-sequences@30.0.1': {}
+ '@img/sharp-libvips-darwin-arm64@1.2.4':
+ optional: true
- '@jest/get-type@30.1.0': {}
+ '@img/sharp-libvips-darwin-x64@1.2.4':
+ optional: true
- '@jest/schemas@30.0.5':
- dependencies:
- '@sinclair/typebox': 0.34.41
+ '@img/sharp-libvips-linux-arm64@1.2.4':
+ optional: true
- '@jridgewell/gen-mapping@0.3.12':
+ '@img/sharp-libvips-linux-arm@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-ppc64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-riscv64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-s390x@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-x64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.2.4
+ optional: true
+
+ '@img/sharp-linux-arm@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.2.4
+ optional: true
+
+ '@img/sharp-linux-ppc64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-ppc64': 1.2.4
+ optional: true
+
+ '@img/sharp-linux-riscv64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-riscv64': 1.2.4
+ optional: true
+
+ '@img/sharp-linux-s390x@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.2.4
+ optional: true
+
+ '@img/sharp-linux-x64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-x64': 1.2.4
+ optional: true
+
+ '@img/sharp-linuxmusl-arm64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ optional: true
+
+ '@img/sharp-linuxmusl-x64@0.34.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ optional: true
+
+ '@img/sharp-wasm32@0.34.5':
+ dependencies:
+ '@emnapi/runtime': 1.8.1
+ optional: true
+
+ '@img/sharp-win32-arm64@0.34.5':
+ optional: true
+
+ '@img/sharp-win32-ia32@0.34.5':
+ optional: true
+
+ '@img/sharp-win32-x64@0.34.5':
+ optional: true
+
+ '@inquirer/external-editor@1.0.2(@types/node@22.15.2)':
+ dependencies:
+ chardet: 2.1.0
+ iconv-lite: 0.7.0
+ optionalDependencies:
+ '@types/node': 22.15.2
+
+ '@ioredis/commands@1.3.0': {}
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@isaacs/fs-minipass@4.0.1':
+ dependencies:
+ minipass: 7.1.2
+
+ '@jest/diff-sequences@30.0.1': {}
+
+ '@jest/get-type@30.1.0': {}
+
+ '@jest/schemas@30.0.5':
+ dependencies:
+ '@sinclair/typebox': 0.34.41
+
+ '@jridgewell/gen-mapping@0.3.12':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.29
@@ -9477,6 +11117,11 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping@0.3.9':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
'@manypkg/find-root@1.1.0':
dependencies:
'@babel/runtime': 7.28.4
@@ -9506,6 +11151,10 @@ snapshots:
- encoding
- supports-color
+ '@mermaid-js/parser@0.6.3':
+ dependencies:
+ langium: 3.3.1
+
'@microsoft/api-extractor-model@7.29.6(@types/node@22.15.2)':
dependencies:
'@microsoft/tsdoc': 0.15.1
@@ -10145,6 +11794,29 @@ snapshots:
react-dom: 19.2.3(react@19.2.3)
optional: true
+ '@protobufjs/aspromise@1.1.2': {}
+
+ '@protobufjs/base64@1.1.2': {}
+
+ '@protobufjs/codegen@2.0.4': {}
+
+ '@protobufjs/eventemitter@1.1.0': {}
+
+ '@protobufjs/fetch@1.1.0':
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/inquire': 1.1.0
+
+ '@protobufjs/float@1.0.2': {}
+
+ '@protobufjs/inquire@1.1.0': {}
+
+ '@protobufjs/path@1.1.2': {}
+
+ '@protobufjs/pool@1.1.0': {}
+
+ '@protobufjs/utf8@1.1.0': {}
+
'@publint/pack@0.1.2': {}
'@rolldown/binding-android-arm64@1.0.0-beta.32':
@@ -10403,30 +12075,61 @@ snapshots:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
+ '@shikijs/core@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.5
+
'@shikijs/engine-javascript@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 2.3.0
+ '@shikijs/engine-javascript@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ oniguruma-to-es: 4.3.4
+
'@shikijs/engine-oniguruma@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
'@shikijs/vscode-textmate': 10.0.2
+ '@shikijs/engine-oniguruma@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+
'@shikijs/langs@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
+ '@shikijs/langs@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+
'@shikijs/themes@1.29.2':
dependencies:
'@shikijs/types': 1.29.2
+ '@shikijs/themes@3.21.0':
+ dependencies:
+ '@shikijs/types': 3.21.0
+
'@shikijs/types@1.29.2':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
+ '@shikijs/types@3.21.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
'@shikijs/vscode-textmate@10.0.2': {}
'@sinclair/typebox@0.34.41': {}
@@ -10672,8 +12375,70 @@ snapshots:
tailwindcss: 4.1.18
vite: 7.3.0(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
+ '@tanstack/ai-anthropic@0.2.0(@tanstack/ai@0.2.2)(zod@4.3.6)':
+ dependencies:
+ '@anthropic-ai/sdk': 0.71.2(zod@4.3.6)
+ '@tanstack/ai': 0.2.2
+ zod: 4.3.6
+
+ '@tanstack/ai-client@0.2.2':
+ dependencies:
+ '@tanstack/ai': 0.2.2
+
+ '@tanstack/ai-devtools-core@0.2.1(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@tanstack/ai': 0.2.2
+ '@tanstack/devtools-ui': 0.4.4(csstype@3.2.3)(solid-js@1.9.10)
+ '@tanstack/devtools-utils': 0.3.0(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(solid-js@1.9.10)(vue@3.5.25(typescript@5.9.3))
+ goober: 2.1.18(csstype@3.2.3)
+ solid-js: 1.9.10
+ transitivePeerDependencies:
+ - '@types/react'
+ - csstype
+ - preact
+ - react
+ - vue
+
+ '@tanstack/ai-gemini@0.3.2(@tanstack/ai@0.2.2)':
+ dependencies:
+ '@google/genai': 1.38.0
+ '@tanstack/ai': 0.2.2
+ transitivePeerDependencies:
+ - '@modelcontextprotocol/sdk'
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ '@tanstack/ai-ollama@0.3.0(@tanstack/ai@0.2.2)(zod@4.3.6)':
+ dependencies:
+ '@tanstack/ai': 0.2.2
+ ollama: 0.6.3
+ zod: 4.3.6
+
+ '@tanstack/ai-openai@0.3.0(@tanstack/ai@0.2.2)(ws@8.18.3)(zod@4.3.6)':
+ dependencies:
+ '@tanstack/ai': 0.2.2
+ openai: 6.16.0(ws@8.18.3)(zod@4.3.6)
+ zod: 4.3.6
+ transitivePeerDependencies:
+ - ws
+
+ '@tanstack/ai-react@0.2.2(@tanstack/ai@0.2.2)(@types/react@19.2.7)(react@19.2.3)':
+ dependencies:
+ '@tanstack/ai': 0.2.2
+ '@tanstack/ai-client': 0.2.2
+ '@types/react': 19.2.7
+ react: 19.2.3
+
+ '@tanstack/ai@0.2.2':
+ dependencies:
+ '@tanstack/devtools-event-client': 0.4.0
+ partial-json: 0.1.7
+
'@tanstack/devtools-event-client@0.3.5': {}
+ '@tanstack/devtools-event-client@0.4.0': {}
+
'@tanstack/devtools-ui@0.4.4(csstype@3.2.3)(solid-js@1.9.10)':
dependencies:
clsx: 2.1.1
@@ -10682,6 +12447,18 @@ snapshots:
transitivePeerDependencies:
- csstype
+ '@tanstack/devtools-utils@0.3.0(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(solid-js@1.9.10)(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@tanstack/devtools-ui': 0.4.4(csstype@3.2.3)(solid-js@1.9.10)
+ optionalDependencies:
+ '@types/react': 19.2.7
+ preact: 10.28.0
+ react: 19.2.3
+ solid-js: 1.9.10
+ vue: 3.5.25(typescript@5.9.3)
+ transitivePeerDependencies:
+ - csstype
+
'@tanstack/directive-functions-plugin@1.121.21(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.26.2
@@ -10753,6 +12530,18 @@ snapshots:
'@tanstack/query-devtools@5.91.1': {}
+ '@tanstack/react-ai-devtools@0.2.1(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(solid-js@1.9.10)(vue@3.5.25(typescript@5.9.3))':
+ dependencies:
+ '@tanstack/ai-devtools-core': 0.2.1(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(vue@3.5.25(typescript@5.9.3))
+ '@tanstack/devtools-utils': 0.3.0(@types/react@19.2.7)(csstype@3.2.3)(preact@10.28.0)(react@19.2.3)(solid-js@1.9.10)(vue@3.5.25(typescript@5.9.3))
+ '@types/react': 19.2.7
+ react: 19.2.3
+ transitivePeerDependencies:
+ - csstype
+ - preact
+ - solid-js
+ - vue
+
'@tanstack/react-form-devtools@0.1.8(csstype@3.2.3)(react@19.2.3)(solid-js@1.9.10)':
dependencies:
'@tanstack/form-devtools': 0.1.8(csstype@3.2.3)(solid-js@1.9.10)
@@ -10775,6 +12564,12 @@ snapshots:
'@tanstack/react-query': 5.90.11(react@19.2.3)
react: 19.2.3
+ '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.12(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@tanstack/query-devtools': 5.91.1
+ '@tanstack/react-query': 5.90.12(react@19.2.3)
+ react: 19.2.3
+
'@tanstack/react-query@5.90.11(react@19.2.3)':
dependencies:
'@tanstack/query-core': 5.90.11
@@ -11304,16 +13099,145 @@ snapshots:
dependencies:
'@types/deep-eql': 4.0.2
+ '@types/d3-array@3.2.2': {}
+
+ '@types/d3-axis@3.0.6':
+ dependencies:
+ '@types/d3-selection': 3.0.11
+
+ '@types/d3-brush@3.0.6':
+ dependencies:
+ '@types/d3-selection': 3.0.11
+
+ '@types/d3-chord@3.0.6': {}
+
+ '@types/d3-color@3.1.3': {}
+
+ '@types/d3-contour@3.0.6':
+ dependencies:
+ '@types/d3-array': 3.2.2
+ '@types/geojson': 7946.0.16
+
+ '@types/d3-delaunay@6.0.4': {}
+
+ '@types/d3-dispatch@3.0.7': {}
+
+ '@types/d3-drag@3.0.7':
+ dependencies:
+ '@types/d3-selection': 3.0.11
+
+ '@types/d3-dsv@3.0.7': {}
+
+ '@types/d3-ease@3.0.2': {}
+
+ '@types/d3-fetch@3.0.7':
+ dependencies:
+ '@types/d3-dsv': 3.0.7
+
+ '@types/d3-force@3.0.10': {}
+
+ '@types/d3-format@3.0.4': {}
+
+ '@types/d3-geo@3.1.0':
+ dependencies:
+ '@types/geojson': 7946.0.16
+
+ '@types/d3-hierarchy@3.1.7': {}
+
+ '@types/d3-interpolate@3.0.4':
+ dependencies:
+ '@types/d3-color': 3.1.3
+
+ '@types/d3-path@3.1.1': {}
+
+ '@types/d3-polygon@3.0.2': {}
+
+ '@types/d3-quadtree@3.0.6': {}
+
+ '@types/d3-random@3.0.3': {}
+
+ '@types/d3-scale-chromatic@3.1.0': {}
+
+ '@types/d3-scale@4.0.9':
+ dependencies:
+ '@types/d3-time': 3.0.4
+
+ '@types/d3-selection@3.0.11': {}
+
+ '@types/d3-shape@3.1.8':
+ dependencies:
+ '@types/d3-path': 3.1.1
+
+ '@types/d3-time-format@4.0.3': {}
+
+ '@types/d3-time@3.0.4': {}
+
+ '@types/d3-timer@3.0.2': {}
+
+ '@types/d3-transition@3.0.9':
+ dependencies:
+ '@types/d3-selection': 3.0.11
+
+ '@types/d3-zoom@3.0.8':
+ dependencies:
+ '@types/d3-interpolate': 3.0.4
+ '@types/d3-selection': 3.0.11
+
+ '@types/d3@7.4.3':
+ dependencies:
+ '@types/d3-array': 3.2.2
+ '@types/d3-axis': 3.0.6
+ '@types/d3-brush': 3.0.6
+ '@types/d3-chord': 3.0.6
+ '@types/d3-color': 3.1.3
+ '@types/d3-contour': 3.0.6
+ '@types/d3-delaunay': 6.0.4
+ '@types/d3-dispatch': 3.0.7
+ '@types/d3-drag': 3.0.7
+ '@types/d3-dsv': 3.0.7
+ '@types/d3-ease': 3.0.2
+ '@types/d3-fetch': 3.0.7
+ '@types/d3-force': 3.0.10
+ '@types/d3-format': 3.0.4
+ '@types/d3-geo': 3.1.0
+ '@types/d3-hierarchy': 3.1.7
+ '@types/d3-interpolate': 3.0.4
+ '@types/d3-path': 3.1.1
+ '@types/d3-polygon': 3.0.2
+ '@types/d3-quadtree': 3.0.6
+ '@types/d3-random': 3.0.3
+ '@types/d3-scale': 4.0.9
+ '@types/d3-scale-chromatic': 3.1.0
+ '@types/d3-selection': 3.0.11
+ '@types/d3-shape': 3.1.8
+ '@types/d3-time': 3.0.4
+ '@types/d3-time-format': 4.0.3
+ '@types/d3-timer': 3.0.2
+ '@types/d3-transition': 3.0.9
+ '@types/d3-zoom': 3.0.8
+
+ '@types/debug@4.1.12':
+ dependencies:
+ '@types/ms': 2.1.0
+
'@types/deep-eql@4.0.2': {}
+ '@types/estree-jsx@1.0.5':
+ dependencies:
+ '@types/estree': 1.0.8
+
'@types/estree@1.0.8': {}
+ '@types/geojson@7946.0.16': {}
+
'@types/hast@3.0.4':
dependencies:
'@types/unist': 3.0.3
'@types/json-schema@7.0.15': {}
+ '@types/katex@0.16.8': {}
+
'@types/mdast@4.0.4':
dependencies:
'@types/unist': 3.0.3
@@ -11322,6 +13246,8 @@ snapshots:
dependencies:
'@types/braces': 3.0.5
+ '@types/ms@2.1.0': {}
+
'@types/node@12.20.55': {}
'@types/node@20.19.11':
@@ -11353,6 +13279,11 @@ snapshots:
'@types/triple-beam@1.3.5': {}
+ '@types/trusted-types@2.0.7':
+ optional: true
+
+ '@types/unist@2.0.11': {}
+
'@types/unist@3.0.3': {}
'@types/whatwg-mimetype@3.0.2': {}
@@ -11972,6 +13903,10 @@ snapshots:
parse5: 7.3.0
validate-html-nesting: 1.2.2
+ babel-plugin-react-compiler@1.0.0:
+ dependencies:
+ '@babel/types': 7.28.5
+
babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.5):
dependencies:
'@babel/core': 7.28.5
@@ -11981,6 +13916,8 @@ snapshots:
'@babel/core': 7.28.5
babel-plugin-jsx-dom-expressions: 0.39.7(@babel/core@7.28.5)
+ bail@2.0.2: {}
+
balanced-match@1.0.2: {}
bare-events@2.6.0:
@@ -11998,6 +13935,8 @@ snapshots:
dependencies:
require-from-string: 2.0.2
+ bignumber.js@9.3.1: {}
+
binary-extensions@2.3.0: {}
bindings@1.5.0:
@@ -12014,6 +13953,8 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
+ blake3-wasm@2.1.5: {}
+
boolbase@1.0.0: {}
boxen@8.0.1:
@@ -12052,6 +13993,8 @@ snapshots:
buffer-crc32@1.0.0: {}
+ buffer-equal-constant-time@1.0.1: {}
+
buffer-from@1.1.2: {}
buffer@5.7.1:
@@ -12153,6 +14096,10 @@ snapshots:
character-entities-legacy@3.0.0: {}
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
chardet@2.1.0: {}
check-error@2.1.1: {}
@@ -12180,6 +14127,11 @@ snapshots:
undici: 7.13.0
whatwg-mimetype: 4.0.0
+ chevrotain-allstar@0.3.1(chevrotain@11.0.3):
+ dependencies:
+ chevrotain: 11.0.3
+ lodash-es: 4.17.21
+
chevrotain@10.5.0:
dependencies:
'@chevrotain/cst-dts-gen': 10.5.0
@@ -12190,6 +14142,15 @@ snapshots:
regexp-to-ast: 0.5.0
optional: true
+ chevrotain@11.0.3:
+ dependencies:
+ '@chevrotain/cst-dts-gen': 11.0.3
+ '@chevrotain/gast': 11.0.3
+ '@chevrotain/regexp-to-ast': 11.0.3
+ '@chevrotain/types': 11.0.3
+ '@chevrotain/utils': 11.0.3
+ lodash-es: 4.17.21
+
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
@@ -12214,6 +14175,10 @@ snapshots:
dependencies:
consola: 3.4.2
+ class-variance-authority@0.7.1:
+ dependencies:
+ clsx: 2.1.1
+
cli-boxes@3.0.0: {}
cli-cursor@3.1.0:
@@ -12281,6 +14246,10 @@ snapshots:
commander@4.1.1: {}
+ commander@7.2.0: {}
+
+ commander@8.3.0: {}
+
comment-parser@1.4.1: {}
common-path-prefix@3.0.0: {}
@@ -12324,6 +14293,14 @@ snapshots:
core-util-is@1.0.3: {}
+ cose-base@1.0.3:
+ dependencies:
+ layout-base: 1.0.2
+
+ cose-base@2.2.0:
+ dependencies:
+ layout-base: 2.0.1
+
crc-32@1.2.2: {}
crc32-stream@6.0.0:
@@ -12386,18 +14363,202 @@ snapshots:
csstype@3.2.3: {}
- data-uri-to-buffer@4.0.1: {}
+ cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1):
+ dependencies:
+ cose-base: 1.0.3
+ cytoscape: 3.33.1
- data-urls@6.0.0:
+ cytoscape-fcose@2.2.0(cytoscape@3.33.1):
dependencies:
- whatwg-mimetype: 4.0.0
- whatwg-url: 15.1.0
+ cose-base: 2.2.0
+ cytoscape: 3.33.1
- dataloader@1.4.0: {}
+ cytoscape@3.33.1: {}
- dax-sh@0.43.2:
+ d3-array@2.12.1:
dependencies:
- '@deno/shim-deno': 0.19.2
+ internmap: 1.0.1
+
+ d3-array@3.2.4:
+ dependencies:
+ internmap: 2.0.3
+
+ d3-axis@3.0.0: {}
+
+ d3-brush@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+
+ d3-chord@3.0.1:
+ dependencies:
+ d3-path: 3.1.0
+
+ d3-color@3.1.0: {}
+
+ d3-contour@4.0.2:
+ dependencies:
+ d3-array: 3.2.4
+
+ d3-delaunay@6.0.4:
+ dependencies:
+ delaunator: 5.0.1
+
+ d3-dispatch@3.0.1: {}
+
+ d3-drag@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-selection: 3.0.0
+
+ d3-dsv@3.0.1:
+ dependencies:
+ commander: 7.2.0
+ iconv-lite: 0.6.3
+ rw: 1.3.3
+
+ d3-ease@3.0.1: {}
+
+ d3-fetch@3.0.1:
+ dependencies:
+ d3-dsv: 3.0.1
+
+ d3-force@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-timer: 3.0.1
+
+ d3-format@3.1.2: {}
+
+ d3-geo@3.1.1:
+ dependencies:
+ d3-array: 3.2.4
+
+ d3-hierarchy@3.1.2: {}
+
+ d3-interpolate@3.0.1:
+ dependencies:
+ d3-color: 3.1.0
+
+ d3-path@1.0.9: {}
+
+ d3-path@3.1.0: {}
+
+ d3-polygon@3.0.1: {}
+
+ d3-quadtree@3.0.1: {}
+
+ d3-random@3.0.1: {}
+
+ d3-sankey@0.12.3:
+ dependencies:
+ d3-array: 2.12.1
+ d3-shape: 1.3.7
+
+ d3-scale-chromatic@3.1.0:
+ dependencies:
+ d3-color: 3.1.0
+ d3-interpolate: 3.0.1
+
+ d3-scale@4.0.2:
+ dependencies:
+ d3-array: 3.2.4
+ d3-format: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+
+ d3-selection@3.0.0: {}
+
+ d3-shape@1.3.7:
+ dependencies:
+ d3-path: 1.0.9
+
+ d3-shape@3.2.0:
+ dependencies:
+ d3-path: 3.1.0
+
+ d3-time-format@4.1.0:
+ dependencies:
+ d3-time: 3.1.0
+
+ d3-time@3.1.0:
+ dependencies:
+ d3-array: 3.2.4
+
+ d3-timer@3.0.1: {}
+
+ d3-transition@3.0.1(d3-selection@3.0.0):
+ dependencies:
+ d3-color: 3.1.0
+ d3-dispatch: 3.0.1
+ d3-ease: 3.0.1
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-timer: 3.0.1
+
+ d3-zoom@3.0.0:
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+
+ d3@7.9.0:
+ dependencies:
+ d3-array: 3.2.4
+ d3-axis: 3.0.0
+ d3-brush: 3.0.0
+ d3-chord: 3.0.1
+ d3-color: 3.1.0
+ d3-contour: 4.0.2
+ d3-delaunay: 6.0.4
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-dsv: 3.0.1
+ d3-ease: 3.0.1
+ d3-fetch: 3.0.1
+ d3-force: 3.0.0
+ d3-format: 3.1.2
+ d3-geo: 3.1.1
+ d3-hierarchy: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-path: 3.1.0
+ d3-polygon: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-random: 3.0.1
+ d3-scale: 4.0.2
+ d3-scale-chromatic: 3.1.0
+ d3-selection: 3.0.0
+ d3-shape: 3.2.0
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+ d3-timer: 3.0.1
+ d3-transition: 3.0.1(d3-selection@3.0.0)
+ d3-zoom: 3.0.0
+
+ dagre-d3-es@7.0.13:
+ dependencies:
+ d3: 7.9.0
+ lodash-es: 4.17.21
+
+ data-uri-to-buffer@4.0.1: {}
+
+ data-urls@6.0.0:
+ dependencies:
+ whatwg-mimetype: 4.0.0
+ whatwg-url: 15.1.0
+
+ dataloader@1.4.0: {}
+
+ dax-sh@0.43.2:
+ dependencies:
+ '@deno/shim-deno': 0.19.2
undici-types: 5.28.4
dayjs@1.11.18: {}
@@ -12435,6 +14596,10 @@ snapshots:
decimal.js@10.6.0: {}
+ decode-named-character-reference@1.3.0:
+ dependencies:
+ character-entities: 2.0.2
+
deep-eql@5.0.2: {}
deep-is@0.1.4: {}
@@ -12461,6 +14626,10 @@ snapshots:
defu@6.1.4: {}
+ delaunator@5.0.1:
+ dependencies:
+ robust-predicates: 3.0.2
+
delayed-stream@1.0.0: {}
denque@2.1.0: {}
@@ -12479,6 +14648,8 @@ snapshots:
detect-libc@2.0.4: {}
+ detect-libc@2.1.2: {}
+
detective-amd@6.0.1:
dependencies:
ast-module-types: 6.0.1
@@ -12561,6 +14732,10 @@ snapshots:
dependencies:
domelementtype: 2.3.0
+ dompurify@3.3.1:
+ optionalDependencies:
+ '@types/trusted-types': 2.0.7
+
domutils@3.2.2:
dependencies:
dom-serializer: 2.0.0
@@ -12610,6 +14785,10 @@ snapshots:
eastasianwidth@0.2.0: {}
+ ecdsa-sig-formatter@1.0.11:
+ dependencies:
+ safe-buffer: 5.2.1
+
ee-first@1.1.1: {}
effect@3.18.4:
@@ -12979,8 +15158,8 @@ snapshots:
'@babel/parser': 7.28.5
eslint: 9.39.1(jiti@2.6.1)
hermes-parser: 0.25.1
- zod: 4.2.1
- zod-validation-error: 4.0.2(zod@4.2.1)
+ zod: 4.3.6
+ zod-validation-error: 4.0.2(zod@4.3.6)
transitivePeerDependencies:
- supports-color
@@ -13140,6 +15319,8 @@ snapshots:
estraverse@5.3.0: {}
+ estree-util-is-identifier-name@3.0.0: {}
+
estree-walker@2.0.2: {}
estree-walker@3.0.3:
@@ -13172,6 +15353,8 @@ snapshots:
exsolve@1.0.7: {}
+ extend@3.0.2: {}
+
extendable-error@0.1.7: {}
extract-zip@2.0.1:
@@ -13331,6 +15514,23 @@ snapshots:
function-bind@1.1.2: {}
+ gaxios@7.1.3:
+ dependencies:
+ extend: 3.0.2
+ https-proxy-agent: 7.0.6
+ node-fetch: 3.3.2
+ rimraf: 5.0.10
+ transitivePeerDependencies:
+ - supports-color
+
+ gcp-metadata@8.1.2:
+ dependencies:
+ gaxios: 7.1.3
+ google-logging-utils: 1.1.3
+ json-bigint: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
generate-function@2.3.1:
dependencies:
is-property: 1.0.2
@@ -13440,6 +15640,20 @@ snapshots:
dependencies:
csstype: 3.2.3
+ google-auth-library@10.5.0:
+ dependencies:
+ base64-js: 1.5.1
+ ecdsa-sig-formatter: 1.0.11
+ gaxios: 7.1.3
+ gcp-metadata: 8.1.2
+ google-logging-utils: 1.1.3
+ gtoken: 8.0.0
+ jws: 4.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ google-logging-utils@1.1.3: {}
+
gopd@1.2.0: {}
graceful-fs@4.2.11: {}
@@ -13449,6 +15663,13 @@ snapshots:
graphemer@1.4.0: {}
+ gtoken@8.0.0:
+ dependencies:
+ gaxios: 7.1.3
+ jws: 4.0.1
+ transitivePeerDependencies:
+ - supports-color
+
gzip-size@7.0.0:
dependencies:
duplexer: 0.1.2
@@ -13491,6 +15712,8 @@ snapshots:
optionalDependencies:
crossws: 0.4.1(srvx@0.9.8)
+ hachure-fill@0.5.2: {}
+
happy-dom@18.0.1:
dependencies:
'@types/node': 20.19.11
@@ -13509,6 +15732,69 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ hast-util-from-dom@5.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ hastscript: 9.0.1
+ web-namespaces: 2.0.1
+
+ hast-util-from-html-isomorphic@2.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-from-dom: 5.0.1
+ hast-util-from-html: 2.0.3
+ unist-util-remove-position: 5.0.0
+
+ hast-util-from-html@2.0.3:
+ dependencies:
+ '@types/hast': 3.0.4
+ devlop: 1.1.0
+ hast-util-from-parse5: 8.0.3
+ parse5: 7.3.0
+ vfile: 6.0.3
+ vfile-message: 4.0.3
+
+ hast-util-from-parse5@8.0.3:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ devlop: 1.1.0
+ hastscript: 9.0.1
+ property-information: 7.1.0
+ vfile: 6.0.3
+ vfile-location: 5.0.3
+ web-namespaces: 2.0.1
+
+ hast-util-is-element@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-parse-selector@4.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-raw@9.1.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ '@ungap/structured-clone': 1.3.0
+ hast-util-from-parse5: 8.0.3
+ hast-util-to-parse5: 8.0.1
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.0
+ parse5: 7.3.0
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+
+ hast-util-sanitize@5.0.2:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@ungap/structured-clone': 1.3.0
+ unist-util-position: 5.0.0
+
hast-util-to-html@9.0.5:
dependencies:
'@types/hast': 3.0.4
@@ -13523,10 +15809,57 @@ snapshots:
stringify-entities: 4.0.4
zwitch: 2.0.4
+ hast-util-to-jsx-runtime@2.3.6:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-parse5@8.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+
+ hast-util-to-text@4.0.2:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ hast-util-is-element: 3.0.0
+ unist-util-find-after: 5.0.0
+
hast-util-whitespace@3.0.0:
dependencies:
'@types/hast': 3.0.4
+ hast@1.0.0: {}
+
+ hastscript@9.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 4.0.0
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+
he@1.2.0: {}
hermes-estree@0.25.1: {}
@@ -13535,6 +15868,8 @@ snapshots:
dependencies:
hermes-estree: 0.25.1
+ highlight.js@11.11.1: {}
+
hono@4.10.6:
optional: true
@@ -13562,6 +15897,8 @@ snapshots:
html-to-image@1.11.13: {}
+ html-url-attributes@3.0.1: {}
+
html-void-elements@3.0.0: {}
htmlparser2@10.0.0:
@@ -13644,6 +15981,12 @@ snapshots:
inherits@2.0.4: {}
+ inline-style-parser@0.2.7: {}
+
+ internmap@1.0.1: {}
+
+ internmap@2.0.3: {}
+
ioredis@5.6.1:
dependencies:
'@ioredis/commands': 1.3.0
@@ -13660,6 +16003,13 @@ snapshots:
iron-webcrypto@1.2.1: {}
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
is-arrayish@0.3.2: {}
is-binary-path@2.1.0:
@@ -13674,6 +16024,8 @@ snapshots:
dependencies:
hasown: 2.0.2
+ is-decimal@2.0.1: {}
+
is-docker@2.2.1: {}
is-docker@3.0.0: {}
@@ -13686,6 +16038,8 @@ snapshots:
dependencies:
is-extglob: 2.1.1
+ is-hexadecimal@2.0.1: {}
+
is-immutable-type@5.0.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
'@typescript-eslint/type-utils': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
@@ -13710,6 +16064,8 @@ snapshots:
is-plain-obj@2.1.0: {}
+ is-plain-obj@4.1.0: {}
+
is-potential-custom-element-name@1.0.1: {}
is-property@1.0.2:
@@ -13855,8 +16211,17 @@ snapshots:
jsesc@3.1.0: {}
+ json-bigint@1.0.0:
+ dependencies:
+ bignumber.js: 9.3.1
+
json-buffer@3.0.1: {}
+ json-schema-to-ts@3.1.1:
+ dependencies:
+ '@babel/runtime': 7.28.4
+ ts-algebra: 2.0.0
+
json-schema-traverse@0.4.1: {}
json-schema-traverse@1.0.0: {}
@@ -13873,12 +16238,29 @@ snapshots:
junk@4.0.1: {}
+ jwa@2.0.1:
+ dependencies:
+ buffer-equal-constant-time: 1.0.1
+ ecdsa-sig-formatter: 1.0.11
+ safe-buffer: 5.2.1
+
+ jws@4.0.1:
+ dependencies:
+ jwa: 2.0.1
+ safe-buffer: 5.2.1
+
jwt-decode@4.0.0: {}
+ katex@0.16.28:
+ dependencies:
+ commander: 8.3.0
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
+ khroma@2.1.0: {}
+
kleur@4.1.5: {}
klona@2.0.6: {}
@@ -13898,7 +16280,7 @@ snapshots:
smol-toml: 1.5.2
strip-json-comments: 5.0.3
typescript: 5.9.3
- zod: 4.2.1
+ zod: 4.3.6
knitwork@1.2.0: {}
@@ -13912,11 +16294,23 @@ snapshots:
dotenv: 16.6.1
winston: 3.17.0
+ langium@3.3.1:
+ dependencies:
+ chevrotain: 11.0.3
+ chevrotain-allstar: 0.3.1(chevrotain@11.0.3)
+ vscode-languageserver: 9.0.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+
launch-editor@2.12.0:
dependencies:
picocolors: 1.1.1
shell-quote: 1.8.3
+ layout-base@1.0.2: {}
+
+ layout-base@2.0.1: {}
+
lazystream@1.0.1:
dependencies:
readable-stream: 2.3.8
@@ -14064,8 +16458,9 @@ snapshots:
safe-stable-stringify: 2.5.0
triple-beam: 1.4.1
- long@5.3.2:
- optional: true
+ long@5.3.2: {}
+
+ longest-streak@3.1.0: {}
loupe@3.2.1: {}
@@ -14086,6 +16481,10 @@ snapshots:
lru.min@1.1.3:
optional: true
+ lucide-react@0.542.0(react@19.2.3):
+ dependencies:
+ react: 19.2.3
+
lucide-react@0.561.0(react@19.2.3):
dependencies:
react: 19.2.3
@@ -14106,66 +16505,433 @@ snapshots:
'@babel/types': 7.28.5
recast: 0.23.11
- magicast@0.3.5:
+ magicast@0.3.5:
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ source-map-js: 1.2.1
+
+ markdown-it@14.1.0:
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+
+ markdown-link-extractor@4.0.3:
+ dependencies:
+ html-link-extractor: 1.0.5
+ marked: 17.0.1
+
+ markdown-table@3.0.4: {}
+
+ marked@16.4.2: {}
+
+ marked@17.0.1: {}
+
+ math-intrinsics@1.1.0: {}
+
+ mdast-util-find-and-replace@3.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ escape-string-regexp: 5.0.0
+ unist-util-is: 6.0.0
+ unist-util-visit-parents: 6.0.1
+
+ mdast-util-from-markdown@2.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.2
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-decode-string: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-autolink-literal@2.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-find-and-replace: 3.0.2
+ micromark-util-character: 2.1.1
+
+ mdast-util-gfm-footnote@2.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ micromark-util-normalize-identifier: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-table@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ markdown-table: 3.0.4
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm@3.1.0:
+ dependencies:
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-gfm-autolink-literal: 2.0.1
+ mdast-util-gfm-footnote: 2.1.0
+ mdast-util-gfm-strikethrough: 2.0.0
+ mdast-util-gfm-table: 2.0.0
+ mdast-util-gfm-task-list-item: 2.0.0
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-math@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ longest-streak: 3.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ unist-util-remove-position: 5.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@3.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.2
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.2
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-phrasing@4.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ unist-util-is: 6.0.0
+
+ mdast-util-to-hast@13.2.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.3.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.0.0
+ vfile: 6.0.3
+
+ mdast-util-to-markdown@2.1.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.1.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-classify-character: 2.0.1
+ micromark-util-decode-string: 2.0.1
+ unist-util-visit: 5.0.0
+ zwitch: 2.0.4
+
+ mdast-util-to-string@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+
+ mdn-data@2.12.2: {}
+
+ mdurl@2.0.0: {}
+
+ merge-anything@5.1.7:
+ dependencies:
+ is-what: 4.1.16
+
+ merge-options@3.0.4:
+ dependencies:
+ is-plain-obj: 2.1.0
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ mermaid@11.12.2:
+ dependencies:
+ '@braintree/sanitize-url': 7.1.1
+ '@iconify/utils': 3.1.0
+ '@mermaid-js/parser': 0.6.3
+ '@types/d3': 7.4.3
+ cytoscape: 3.33.1
+ cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1)
+ cytoscape-fcose: 2.2.0(cytoscape@3.33.1)
+ d3: 7.9.0
+ d3-sankey: 0.12.3
+ dagre-d3-es: 7.0.13
+ dayjs: 1.11.18
+ dompurify: 3.3.1
+ katex: 0.16.28
+ khroma: 2.1.0
+ lodash-es: 4.17.21
+ marked: 16.4.2
+ roughjs: 4.6.6
+ stylis: 4.3.6
+ ts-dedent: 2.2.0
+ uuid: 11.1.0
+
+ micro-api-client@3.3.0: {}
+
+ micromark-core-commonmark@2.0.3:
+ dependencies:
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.1
+ micromark-factory-label: 2.0.1
+ micromark-factory-space: 2.0.1
+ micromark-factory-title: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-html-tag-name: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-cjk-friendly-gfm-strikethrough@1.2.3(micromark-util-types@2.0.2)(micromark@4.0.2):
+ dependencies:
+ devlop: 1.1.0
+ get-east-asian-width: 1.3.0
+ micromark: 4.0.2
+ micromark-extension-cjk-friendly-util: 2.1.1(micromark-util-types@2.0.2)
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-cjk-friendly-util@2.1.1(micromark-util-types@2.0.2):
+ dependencies:
+ get-east-asian-width: 1.3.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-cjk-friendly@1.2.3(micromark-util-types@2.0.2)(micromark@4.0.2):
+ dependencies:
+ devlop: 1.1.0
+ micromark: 4.0.2
+ micromark-extension-cjk-friendly-util: 2.1.1(micromark-util-types@2.0.2)
+ micromark-util-chunked: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ optionalDependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-footnote@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-table@2.1.1:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm@3.0.0:
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 2.1.0
+ micromark-extension-gfm-footnote: 2.1.0
+ micromark-extension-gfm-strikethrough: 2.1.0
+ micromark-extension-gfm-table: 2.1.1
+ micromark-extension-gfm-tagfilter: 2.0.0
+ micromark-extension-gfm-task-list-item: 2.1.0
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-math@3.1.0:
+ dependencies:
+ '@types/katex': 0.16.8
+ devlop: 1.1.0
+ katex: 0.16.28
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-destination@2.0.1:
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
- source-map-js: 1.2.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- markdown-it@14.1.0:
+ micromark-factory-label@2.0.1:
dependencies:
- argparse: 2.0.1
- entities: 4.5.0
- linkify-it: 5.0.0
- mdurl: 2.0.0
- punycode.js: 2.3.1
- uc.micro: 2.1.0
+ devlop: 1.1.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- markdown-link-extractor@4.0.3:
+ micromark-factory-space@2.0.1:
dependencies:
- html-link-extractor: 1.0.5
- marked: 17.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.2
- marked@17.0.1: {}
+ micromark-factory-title@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- math-intrinsics@1.1.0: {}
+ micromark-factory-whitespace@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- mdast-util-to-hast@13.2.0:
+ micromark-util-character@2.1.1:
dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.3.0
- devlop: 1.1.0
- micromark-util-sanitize-uri: 2.0.1
- trim-lines: 3.0.1
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.3
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- mdn-data@2.12.2: {}
+ micromark-util-chunked@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
- mdurl@2.0.0: {}
+ micromark-util-classify-character@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
- merge-anything@5.1.7:
+ micromark-util-combine-extensions@2.0.1:
dependencies:
- is-what: 4.1.16
+ micromark-util-chunked: 2.0.1
+ micromark-util-types: 2.0.2
- merge-options@3.0.4:
+ micromark-util-decode-numeric-character-reference@2.0.2:
dependencies:
- is-plain-obj: 2.1.0
+ micromark-util-symbol: 2.0.1
- merge-stream@2.0.0: {}
+ micromark-util-decode-string@2.0.1:
+ dependencies:
+ decode-named-character-reference: 1.3.0
+ micromark-util-character: 2.1.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-symbol: 2.0.1
- merge2@1.4.1: {}
+ micromark-util-encode@2.0.1: {}
- micro-api-client@3.3.0: {}
+ micromark-util-html-tag-name@2.0.1: {}
- micromark-util-character@2.1.1:
+ micromark-util-normalize-identifier@2.0.1:
dependencies:
micromark-util-symbol: 2.0.1
- micromark-util-types: 2.0.2
- micromark-util-encode@2.0.1: {}
+ micromark-util-resolve-all@2.0.1:
+ dependencies:
+ micromark-util-types: 2.0.2
micromark-util-sanitize-uri@2.0.1:
dependencies:
@@ -14173,10 +16939,39 @@ snapshots:
micromark-util-encode: 2.0.1
micromark-util-symbol: 2.0.1
+ micromark-util-subtokenize@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
micromark-util-symbol@2.0.1: {}
micromark-util-types@2.0.2: {}
+ micromark@4.0.2:
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.4.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-encode: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
@@ -14206,6 +17001,18 @@ snapshots:
min-indent@1.0.1: {}
+ miniflare@4.20260124.0:
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ sharp: 0.34.5
+ undici: 7.18.2
+ workerd: 1.20260124.0
+ ws: 8.18.0
+ youch: 4.1.0-beta.10
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
minimatch@10.0.1:
dependencies:
brace-expansion: 2.0.1
@@ -14247,6 +17054,13 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
+ mlly@1.8.0:
+ dependencies:
+ acorn: 8.15.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.1
+
module-definition@6.0.1:
dependencies:
ast-module-types: 6.0.1
@@ -14595,6 +17409,10 @@ snapshots:
ohash@2.0.11: {}
+ ollama@0.6.3:
+ dependencies:
+ whatwg-fetch: 3.6.20
+
on-finished@2.4.1:
dependencies:
ee-first: 1.1.1
@@ -14615,12 +17433,20 @@ snapshots:
dependencies:
mimic-fn: 4.0.0
+ oniguruma-parser@0.12.1: {}
+
oniguruma-to-es@2.3.0:
dependencies:
emoji-regex-xs: 1.0.0
regex: 5.1.1
regex-recursion: 5.1.1
+ oniguruma-to-es@4.3.4:
+ dependencies:
+ oniguruma-parser: 0.12.1
+ regex: 6.1.0
+ regex-recursion: 6.0.2
+
open@10.2.0:
dependencies:
default-browser: 5.2.1
@@ -14634,6 +17460,11 @@ snapshots:
is-docker: 2.2.1
is-wsl: 2.2.0
+ openai@6.16.0(ws@8.18.3)(zod@4.3.6):
+ optionalDependencies:
+ ws: 8.18.3
+ zod: 4.3.6
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -14770,6 +17601,16 @@ snapshots:
dependencies:
callsites: 3.1.0
+ parse-entities@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.3.0
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
parse-gitignore@2.0.0: {}
parse-json@8.3.0:
@@ -14797,8 +17638,12 @@ snapshots:
parseurl@1.3.3: {}
+ partial-json@0.1.7: {}
+
path-browserify@1.0.1: {}
+ path-data-parser@0.1.0: {}
+
path-exists@4.0.0: {}
path-exists@5.0.0: {}
@@ -14889,6 +17734,13 @@ snapshots:
exsolve: 1.0.7
pathe: 2.0.3
+ points-on-curve@0.2.0: {}
+
+ points-on-path@0.2.1:
+ dependencies:
+ path-data-parser: 0.1.0
+ points-on-curve: 0.2.0
+
postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.20.3)(yaml@2.8.1):
dependencies:
lilconfig: 3.1.3
@@ -15008,6 +17860,21 @@ snapshots:
property-information@7.1.0: {}
+ protobufjs@7.5.4:
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 22.15.2
+ long: 5.3.2
+
proxy-from-env@1.1.0: {}
publint@0.3.15:
@@ -15151,20 +18018,118 @@ snapshots:
regex: 5.1.1
regex-utilities: 2.3.0
+ regex-recursion@6.0.2:
+ dependencies:
+ regex-utilities: 2.3.0
+
regex-utilities@2.3.0: {}
regex@5.1.1:
dependencies:
regex-utilities: 2.3.0
+ regex@6.1.0:
+ dependencies:
+ regex-utilities: 2.3.0
+
regexp-to-ast@0.5.0:
optional: true
+ rehype-harden@1.1.7:
+ dependencies:
+ unist-util-visit: 5.0.0
+
+ rehype-katex@7.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/katex': 0.16.8
+ hast-util-from-html-isomorphic: 2.0.0
+ hast-util-to-text: 4.0.2
+ katex: 0.16.28
+ unist-util-visit-parents: 6.0.1
+ vfile: 6.0.3
+
+ rehype-raw@7.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-raw: 9.1.0
+ vfile: 6.0.3
+
+ rehype-sanitize@6.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-sanitize: 5.0.2
+
+ remark-cjk-friendly-gfm-strikethrough@1.2.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5):
+ dependencies:
+ micromark-extension-cjk-friendly-gfm-strikethrough: 1.2.3(micromark-util-types@2.0.2)(micromark@4.0.2)
+ unified: 11.0.5
+ optionalDependencies:
+ '@types/mdast': 4.0.4
+ transitivePeerDependencies:
+ - micromark
+ - micromark-util-types
+
+ remark-cjk-friendly@1.2.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5):
+ dependencies:
+ micromark-extension-cjk-friendly: 1.2.3(micromark-util-types@2.0.2)(micromark@4.0.2)
+ unified: 11.0.5
+ optionalDependencies:
+ '@types/mdast': 4.0.4
+ transitivePeerDependencies:
+ - micromark
+ - micromark-util-types
+
+ remark-gfm@4.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-gfm: 3.1.0
+ micromark-extension-gfm: 3.0.0
+ remark-parse: 11.0.0
+ remark-stringify: 11.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-math@6.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-math: 3.0.0
+ micromark-extension-math: 3.1.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-parse@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.2
+ micromark-util-types: 2.0.2
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-rehype@11.1.2:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.2.0
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ remark-stringify@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-to-markdown: 2.1.2
+ unified: 11.0.5
+
remeda@2.21.3:
dependencies:
type-fest: 4.41.0
optional: true
+ remend@1.0.1: {}
+
remove-accents@0.5.0: {}
remove-trailing-separator@1.1.0: {}
@@ -15207,6 +18172,12 @@ snapshots:
reusify@1.1.0: {}
+ rimraf@5.0.10:
+ dependencies:
+ glob: 10.4.5
+
+ robust-predicates@3.0.2: {}
+
rolldown@1.0.0-beta.32:
dependencies:
'@oxc-project/runtime': 0.81.0
@@ -15274,12 +18245,21 @@ snapshots:
rou3@0.7.10: {}
+ roughjs@4.6.6:
+ dependencies:
+ hachure-fill: 0.5.2
+ path-data-parser: 0.1.0
+ points-on-curve: 0.2.0
+ points-on-path: 0.2.1
+
run-applescript@7.0.0: {}
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
+ rw@1.3.3: {}
+
sade@1.8.1:
dependencies:
mri: 1.2.0
@@ -15402,6 +18382,37 @@ snapshots:
setprototypeof@1.2.0: {}
+ sharp@0.34.5:
+ dependencies:
+ '@img/colour': 1.0.0
+ detect-libc: 2.1.2
+ semver: 7.7.3
+ optionalDependencies:
+ '@img/sharp-darwin-arm64': 0.34.5
+ '@img/sharp-darwin-x64': 0.34.5
+ '@img/sharp-libvips-darwin-arm64': 1.2.4
+ '@img/sharp-libvips-darwin-x64': 1.2.4
+ '@img/sharp-libvips-linux-arm': 1.2.4
+ '@img/sharp-libvips-linux-arm64': 1.2.4
+ '@img/sharp-libvips-linux-ppc64': 1.2.4
+ '@img/sharp-libvips-linux-riscv64': 1.2.4
+ '@img/sharp-libvips-linux-s390x': 1.2.4
+ '@img/sharp-libvips-linux-x64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+ '@img/sharp-linux-arm': 0.34.5
+ '@img/sharp-linux-arm64': 0.34.5
+ '@img/sharp-linux-ppc64': 0.34.5
+ '@img/sharp-linux-riscv64': 0.34.5
+ '@img/sharp-linux-s390x': 0.34.5
+ '@img/sharp-linux-x64': 0.34.5
+ '@img/sharp-linuxmusl-arm64': 0.34.5
+ '@img/sharp-linuxmusl-x64': 0.34.5
+ '@img/sharp-wasm32': 0.34.5
+ '@img/sharp-win32-arm64': 0.34.5
+ '@img/sharp-win32-ia32': 0.34.5
+ '@img/sharp-win32-x64': 0.34.5
+
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
@@ -15456,6 +18467,17 @@ snapshots:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
+ shiki@3.21.0:
+ dependencies:
+ '@shikijs/core': 3.21.0
+ '@shikijs/engine-javascript': 3.21.0
+ '@shikijs/engine-oniguruma': 3.21.0
+ '@shikijs/langs': 3.21.0
+ '@shikijs/themes': 3.21.0
+ '@shikijs/types': 3.21.0
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
side-channel-list@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -15605,6 +18627,38 @@ snapshots:
std-env@3.9.0: {}
+ streamdown@1.6.11(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(react@19.2.3):
+ dependencies:
+ clsx: 2.1.1
+ hast: 1.0.0
+ hast-util-to-jsx-runtime: 2.3.6
+ html-url-attributes: 3.0.1
+ katex: 0.16.28
+ lucide-react: 0.542.0(react@19.2.3)
+ marked: 16.4.2
+ mermaid: 11.12.2
+ react: 19.2.3
+ rehype-harden: 1.1.7
+ rehype-katex: 7.0.1
+ rehype-raw: 7.0.0
+ rehype-sanitize: 6.0.0
+ remark-cjk-friendly: 1.2.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5)
+ remark-cjk-friendly-gfm-strikethrough: 1.2.3(@types/mdast@4.0.4)(micromark-util-types@2.0.2)(micromark@4.0.2)(unified@11.0.5)
+ remark-gfm: 4.0.1
+ remark-math: 6.0.0
+ remark-parse: 11.0.0
+ remark-rehype: 11.1.2
+ remend: 1.0.1
+ shiki: 3.21.0
+ tailwind-merge: 3.4.0
+ unified: 11.0.5
+ unist-util-visit: 5.0.0
+ transitivePeerDependencies:
+ - '@types/mdast'
+ - micromark
+ - micromark-util-types
+ - supports-color
+
streamx@2.22.1:
dependencies:
fast-fifo: 1.3.2
@@ -15671,6 +18725,16 @@ snapshots:
dependencies:
js-tokens: 9.0.1
+ style-to-js@1.1.21:
+ dependencies:
+ style-to-object: 1.0.14
+
+ style-to-object@1.0.14:
+ dependencies:
+ inline-style-parser: 0.2.7
+
+ stylis@4.3.6: {}
+
sucrase@3.35.0:
dependencies:
'@jridgewell/gen-mapping': 0.3.12
@@ -15714,6 +18778,8 @@ snapshots:
system-architecture@0.1.0: {}
+ tailwind-merge@3.4.0: {}
+
tailwindcss@4.1.18: {}
tapable@2.2.1: {}
@@ -15828,6 +18894,10 @@ snapshots:
triple-beam@1.4.1: {}
+ trough@2.2.0: {}
+
+ ts-algebra@2.0.0: {}
+
ts-api-utils@2.1.0(typescript@5.9.3):
dependencies:
typescript: 5.9.3
@@ -15837,6 +18907,8 @@ snapshots:
picomatch: 4.0.3
typescript: 5.9.3
+ ts-dedent@2.2.0: {}
+
ts-interface-checker@0.1.13: {}
ts-pattern@5.8.0: {}
@@ -15898,6 +18970,8 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ tw-animate-css@1.4.0: {}
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -15963,6 +19037,8 @@ snapshots:
undici@7.16.0: {}
+ undici@7.18.2: {}
+
unenv@1.10.0:
dependencies:
consola: 3.4.2
@@ -15987,6 +19063,16 @@ snapshots:
unicorn-magic@0.3.0: {}
+ unified@11.0.5:
+ dependencies:
+ '@types/unist': 3.0.3
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 6.0.3
+
unimport@5.2.0:
dependencies:
acorn: 8.15.0
@@ -16004,6 +19090,11 @@ snapshots:
unplugin: 2.3.5
unplugin-utils: 0.2.4
+ unist-util-find-after@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.0
+
unist-util-is@6.0.0:
dependencies:
'@types/unist': 3.0.3
@@ -16012,6 +19103,11 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
+ unist-util-remove-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-visit: 5.0.0
+
unist-util-stringify-position@4.0.0:
dependencies:
'@types/unist': 3.0.3
@@ -16161,6 +19257,11 @@ snapshots:
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
+ vfile-location@5.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile: 6.0.3
+
vfile-message@4.0.3:
dependencies:
'@types/unist': 3.0.3
@@ -16562,7 +19663,7 @@ snapshots:
optionalDependencies:
vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
- vitest@3.2.4(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.2.0(postcss@8.5.6))(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.2.0(postcss@8.5.6))(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1):
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
@@ -16588,6 +19689,7 @@ snapshots:
vite-node: 3.2.4(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
why-is-node-running: 2.3.0
optionalDependencies:
+ '@types/debug': 4.1.12
'@types/node': 22.15.2
happy-dom: 18.0.1
jsdom: 27.2.0(postcss@8.5.6)
@@ -16605,7 +19707,7 @@ snapshots:
- tsx
- yaml
- vitest@3.2.4(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.15.2)(happy-dom@18.0.1)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1):
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
@@ -16631,6 +19733,7 @@ snapshots:
vite-node: 3.2.4(@types/node@22.15.2)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.3)(yaml@2.8.1)
why-is-node-running: 2.3.0
optionalDependencies:
+ '@types/debug': 4.1.12
'@types/node': 22.15.2
happy-dom: 18.0.1
jsdom: 27.4.0
@@ -16648,6 +19751,23 @@ snapshots:
- tsx
- yaml
+ vscode-jsonrpc@8.2.0: {}
+
+ vscode-languageserver-protocol@3.17.5:
+ dependencies:
+ vscode-jsonrpc: 8.2.0
+ vscode-languageserver-types: 3.17.5
+
+ vscode-languageserver-textdocument@1.0.12: {}
+
+ vscode-languageserver-types@3.17.5: {}
+
+ vscode-languageserver@9.0.1:
+ dependencies:
+ vscode-languageserver-protocol: 3.17.5
+
+ vscode-uri@3.0.8: {}
+
vscode-uri@3.1.0: {}
vue-demi@0.14.10(vue@3.5.25(typescript@5.9.3)):
@@ -16686,6 +19806,8 @@ snapshots:
dependencies:
defaults: 1.0.4
+ web-namespaces@2.0.1: {}
+
web-streams-polyfill@3.3.3: {}
web-vitals@5.1.0: {}
@@ -16700,6 +19822,8 @@ snapshots:
dependencies:
iconv-lite: 0.6.3
+ whatwg-fetch@3.6.20: {}
+
whatwg-mimetype@3.0.0: {}
whatwg-mimetype@4.0.0: {}
@@ -16753,6 +19877,30 @@ snapshots:
word-wrap@1.2.5: {}
+ workerd@1.20260124.0:
+ optionalDependencies:
+ '@cloudflare/workerd-darwin-64': 1.20260124.0
+ '@cloudflare/workerd-darwin-arm64': 1.20260124.0
+ '@cloudflare/workerd-linux-64': 1.20260124.0
+ '@cloudflare/workerd-linux-arm64': 1.20260124.0
+ '@cloudflare/workerd-windows-64': 1.20260124.0
+
+ wrangler@4.61.0:
+ dependencies:
+ '@cloudflare/kv-asset-handler': 0.4.2
+ '@cloudflare/unenv-preset': 2.11.0(unenv@2.0.0-rc.24)(workerd@1.20260124.0)
+ blake3-wasm: 2.1.5
+ esbuild: 0.27.0
+ miniflare: 4.20260124.0
+ path-to-regexp: 6.3.0
+ unenv: 2.0.0-rc.24
+ workerd: 1.20260124.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -16778,6 +19926,8 @@ snapshots:
imurmurhash: 0.1.4
signal-exit: 4.1.0
+ ws@8.18.0: {}
+
ws@8.18.3: {}
wsl-utils@0.1.0:
@@ -16835,6 +19985,14 @@ snapshots:
'@poppinss/exception': 1.2.2
error-stack-parser-es: 1.0.5
+ youch@4.1.0-beta.10:
+ dependencies:
+ '@poppinss/colors': 4.1.5
+ '@poppinss/dumper': 0.6.4
+ '@speed-highlight/core': 1.2.7
+ cookie: 1.0.2
+ youch-core: 0.3.3
+
youch@4.1.0-beta.8:
dependencies:
'@poppinss/colors': 4.1.5
@@ -16860,15 +20018,13 @@ snapshots:
dependencies:
zod: 3.25.76
- zod-validation-error@4.0.2(zod@4.2.1):
+ zod-validation-error@4.0.2(zod@4.3.6):
dependencies:
- zod: 4.2.1
+ zod: 4.3.6
zod@3.25.76: {}
- zod@4.1.13: {}
-
- zod@4.2.1: {}
+ zod@4.3.6: {}
zustand@5.0.9(@types/react@19.2.7)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)):
optionalDependencies: