diff --git a/.pnpmfile.cjs b/.pnpmfile.cjs
new file mode 100644
index 000000000..f154da33d
--- /dev/null
+++ b/.pnpmfile.cjs
@@ -0,0 +1,25 @@
+function readPackage(pkg, context) {
+ // Force all @tanstack/db dependencies to resolve to workspace version
+ if (pkg.dependencies && pkg.dependencies["@tanstack/db"]) {
+ pkg.dependencies["@tanstack/db"] = "workspace:*"
+ context.log(`Overriding @tanstack/db dependency in ${pkg.name}`)
+ }
+
+ if (pkg.devDependencies && pkg.devDependencies["@tanstack/db"]) {
+ pkg.devDependencies["@tanstack/db"] = "workspace:*"
+ context.log(`Overriding @tanstack/db devDependency in ${pkg.name}`)
+ }
+
+ if (pkg.peerDependencies && pkg.peerDependencies["@tanstack/db"]) {
+ pkg.peerDependencies["@tanstack/db"] = "workspace:*"
+ context.log(`Overriding @tanstack/db peerDependency in ${pkg.name}`)
+ }
+
+ return pkg
+}
+
+module.exports = {
+ hooks: {
+ readPackage,
+ },
+}
diff --git a/examples/react/offline-transactions/.env.example b/examples/react/offline-transactions/.env.example
new file mode 100644
index 000000000..e7f34f35d
--- /dev/null
+++ b/examples/react/offline-transactions/.env.example
@@ -0,0 +1,3 @@
+# Honeycomb API Key
+# Get your API key from https://ui.honeycomb.io/account
+HONEYCOMB_API_KEY=your_api_key_here
diff --git a/examples/react/offline-transactions/.gitignore b/examples/react/offline-transactions/.gitignore
new file mode 100644
index 000000000..6ab0517d9
--- /dev/null
+++ b/examples/react/offline-transactions/.gitignore
@@ -0,0 +1,20 @@
+node_modules
+package-lock.json
+yarn.lock
+
+.DS_Store
+.cache
+.env
+.vercel
+.output
+.nitro
+/build/
+/api/
+/server/build
+/public/build# Sentry Config File
+.env.sentry-build-plugin
+/test-results/
+/playwright-report/
+/blob-report/
+/playwright/.cache/
+.tanstack
\ No newline at end of file
diff --git a/examples/react/offline-transactions/.prettierignore b/examples/react/offline-transactions/.prettierignore
new file mode 100644
index 000000000..2be5eaa6e
--- /dev/null
+++ b/examples/react/offline-transactions/.prettierignore
@@ -0,0 +1,4 @@
+**/build
+**/public
+pnpm-lock.yaml
+routeTree.gen.ts
\ No newline at end of file
diff --git a/examples/react/offline-transactions/README.md b/examples/react/offline-transactions/README.md
new file mode 100644
index 000000000..90cba4aac
--- /dev/null
+++ b/examples/react/offline-transactions/README.md
@@ -0,0 +1,72 @@
+# Welcome to TanStack.com!
+
+This site is built with TanStack Router!
+
+- [TanStack Router Docs](https://tanstack.com/router)
+
+It's deployed automagically with Netlify!
+
+- [Netlify](https://netlify.com/)
+
+## Development
+
+From your terminal:
+
+```sh
+pnpm install
+pnpm dev
+```
+
+This starts your app in development mode, rebuilding assets on file changes.
+
+## Editing and previewing the docs of TanStack projects locally
+
+The documentations for all TanStack projects except for `React Charts` are hosted on [https://tanstack.com](https://tanstack.com), powered by this TanStack Router app.
+In production, the markdown doc pages are fetched from the GitHub repos of the projects, but in development they are read from the local file system.
+
+Follow these steps if you want to edit the doc pages of a project (in these steps we'll assume it's [`TanStack/form`](https://github.com/tanstack/form)) and preview them locally :
+
+1. Create a new directory called `tanstack`.
+
+```sh
+mkdir tanstack
+```
+
+2. Enter the directory and clone this repo and the repo of the project there.
+
+```sh
+cd tanstack
+git clone git@github.com:TanStack/tanstack.com.git
+git clone git@github.com:TanStack/form.git
+```
+
+> [!NOTE]
+> Your `tanstack` directory should look like this:
+>
+> ```
+> tanstack/
+> |
+> +-- form/
+> |
+> +-- tanstack.com/
+> ```
+
+> [!WARNING]
+> Make sure the name of the directory in your local file system matches the name of the project's repo. For example, `tanstack/form` must be cloned into `form` (this is the default) instead of `some-other-name`, because that way, the doc pages won't be found.
+
+3. Enter the `tanstack/tanstack.com` directory, install the dependencies and run the app in dev mode:
+
+```sh
+cd tanstack.com
+pnpm i
+# The app will run on https://localhost:3000 by default
+pnpm dev
+```
+
+4. Now you can visit http://localhost:3000/form/latest/docs/overview in the browser and see the changes you make in `tanstack/form/docs`.
+
+> [!NOTE]
+> The updated pages need to be manually reloaded in the browser.
+
+> [!WARNING]
+> You will need to update the `docs/config.json` file (in the project's repo) if you add a new doc page!
diff --git a/examples/react/offline-transactions/README.otel.md b/examples/react/offline-transactions/README.otel.md
new file mode 100644
index 000000000..d081be87f
--- /dev/null
+++ b/examples/react/offline-transactions/README.otel.md
@@ -0,0 +1,102 @@
+# OpenTelemetry Setup
+
+This example includes OpenTelemetry instrumentation for observability of offline transactions.
+
+## Quick Start
+
+### 1. Set up Honeycomb API Key
+
+```bash
+cp .env.example .env
+# Edit .env and add your Honeycomb API key
+```
+
+Get your API key from https://ui.honeycomb.io/account
+
+### 2. Start the OpenTelemetry Collector
+
+```bash
+docker-compose up -d
+```
+
+This starts the OpenTelemetry Collector with CORS support on port 4318.
+
+### 3. Enable Tracing in the App
+
+Uncomment the tracing configuration in `src/routes/indexeddb.tsx` or `src/routes/localstorage.tsx`:
+
+```typescript
+const offlineExecutor = createIndexedDBOfflineExecutor({
+ endpoint: "http://localhost:4318/v1/traces",
+})
+```
+
+### 4. View Traces in Honeycomb
+
+1. Go to https://ui.honeycomb.io
+2. Navigate to your environment
+3. You should see traces from `@tanstack/offline-transactions-example`
+
+## What Gets Traced
+
+The offline transactions package instruments:
+
+- **Transaction execution**: Full lifecycle from persistence to completion
+- **Outbox operations**: add, get, update, remove transactions
+- **Retry logic**: Failed transactions with retry attempts and delays
+- **Error handling**: Failed spans with error details and stack traces
+- **Scheduler operations**: Transaction queuing and batching
+
+## Configuration Options
+
+### Using Jaeger (Local Development)
+
+If you prefer Jaeger for local development:
+
+1. Uncomment the `jaeger` service in `docker-compose.yml`
+2. Update `otel-collector-config.yaml` to use the Jaeger exporter
+3. Access Jaeger UI at http://localhost:16686
+
+### Custom Honeycomb Configuration
+
+You can pass headers for Honeycomb configuration:
+
+```typescript
+const offlineExecutor = createIndexedDBOfflineExecutor({
+ endpoint: "http://localhost:4318/v1/traces",
+ headers: {
+ // Optional: specify dataset
+ "x-honeycomb-dataset": "my-dataset",
+ },
+})
+```
+
+## Troubleshooting
+
+### CORS Errors
+
+If you see CORS errors, verify:
+
+- The collector is running: `docker-compose ps`
+- Port 4318 is accessible: `curl http://localhost:4318`
+- The `allowed_origins` in `otel-collector-config.yaml` matches your app's origin
+
+### No Traces Appearing
+
+Check collector logs:
+
+```bash
+docker-compose logs otel-collector
+```
+
+Verify your Honeycomb API key is correct:
+
+```bash
+docker-compose exec otel-collector env | grep HONEYCOMB
+```
+
+### Stopping the Collector
+
+```bash
+docker-compose down
+```
diff --git a/examples/react/offline-transactions/docker-compose.yml b/examples/react/offline-transactions/docker-compose.yml
new file mode 100644
index 000000000..999857852
--- /dev/null
+++ b/examples/react/offline-transactions/docker-compose.yml
@@ -0,0 +1,24 @@
+services:
+ # OpenTelemetry Collector - handles CORS and forwards traces to Honeycomb
+ otel-collector:
+ image: otel/opentelemetry-collector:latest
+ command: ["--config=/etc/otel-collector-config.yaml"]
+ environment:
+ # Set your Honeycomb API key here or via .env file
+ - HONEYCOMB_API_KEY=${HONEYCOMB_API_KEY}
+ volumes:
+ - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
+ ports:
+ - "4318:4318" # OTLP HTTP endpoint with CORS support
+ restart: unless-stopped
+
+ # Optional: Local Jaeger for development
+ # Uncomment this and update otel-collector-config.yaml to use Jaeger instead
+ # jaeger:
+ # image: jaegertracing/all-in-one:latest
+ # environment:
+ # - COLLECTOR_OTLP_ENABLED=true
+ # ports:
+ # - "16686:16686" # Jaeger UI
+ # - "4317:4317" # OTLP gRPC
+ # restart: unless-stopped
diff --git a/examples/react/offline-transactions/otel-collector-config.yaml b/examples/react/offline-transactions/otel-collector-config.yaml
new file mode 100644
index 000000000..436a2c1e7
--- /dev/null
+++ b/examples/react/offline-transactions/otel-collector-config.yaml
@@ -0,0 +1,35 @@
+receivers:
+ otlp:
+ protocols:
+ http:
+ endpoint: 0.0.0.0:4318
+ cors:
+ allowed_origins:
+ - "http://localhost:*"
+ - "http://127.0.0.1:*"
+ allowed_headers:
+ - "*"
+ max_age: 7200
+
+exporters:
+ # Honeycomb exporter
+ otlp/honeycomb:
+ endpoint: api.honeycomb.io:443
+ headers:
+ x-honeycomb-team: "${HONEYCOMB_API_KEY}"
+
+ # Jaeger exporter (optional - uncomment to use local Jaeger instead)
+ # otlp/jaeger:
+ # endpoint: jaeger:4317
+ # tls:
+ # insecure: true
+
+ # Debug exporter for troubleshooting
+ debug:
+ verbosity: detailed
+
+service:
+ pipelines:
+ traces:
+ receivers: [otlp]
+ exporters: [otlp/honeycomb, debug]
diff --git a/examples/react/offline-transactions/package.json b/examples/react/offline-transactions/package.json
new file mode 100644
index 000000000..291841139
--- /dev/null
+++ b/examples/react/offline-transactions/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "tanstack-start-example-basic",
+ "private": true,
+ "sideEffects": false,
+ "type": "module",
+ "scripts": {
+ "dev": "vite dev",
+ "build": "vite build && tsc --noEmit",
+ "start": "node .output/server/index.mjs"
+ },
+ "dependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@opentelemetry/exporter-trace-otlp-http": "^0.56.0",
+ "@opentelemetry/instrumentation": "^0.56.0",
+ "@opentelemetry/instrumentation-fetch": "^0.56.0",
+ "@opentelemetry/resources": "^1.29.0",
+ "@opentelemetry/sdk-trace-web": "^1.29.0",
+ "@opentelemetry/semantic-conventions": "^1.29.0",
+ "@tanstack/offline-transactions": "workspace:*",
+ "@tanstack/query-db-collection": "workspace:*",
+ "@tanstack/react-db": "workspace:*",
+ "@tanstack/react-query": "^5.89.0",
+ "@tanstack/react-router": "^1.131.47",
+ "@tanstack/react-router-devtools": "^1.131.47",
+ "@tanstack/react-start": "^1.131.47",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "tailwind-merge": "^2.6.0",
+ "zod": "^3.24.2"
+ },
+ "devDependencies": {
+ "@types/node": "^22.5.4",
+ "@types/react": "^19.0.8",
+ "@types/react-dom": "^19.0.3",
+ "@vitejs/plugin-react": "^5.0.3",
+ "autoprefixer": "^10.4.20",
+ "chokidar": "^4.0.3",
+ "postcss": "^8.5.1",
+ "tailwindcss": "^3.4.17",
+ "typescript": "^5.7.2",
+ "vite": "^7.1.7",
+ "vite-tsconfig-paths": "^5.1.4"
+ }
+}
diff --git a/examples/react/offline-transactions/postcss.config.mjs b/examples/react/offline-transactions/postcss.config.mjs
new file mode 100644
index 000000000..2e7af2b7f
--- /dev/null
+++ b/examples/react/offline-transactions/postcss.config.mjs
@@ -0,0 +1,6 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/examples/react/offline-transactions/public/android-chrome-192x192.png b/examples/react/offline-transactions/public/android-chrome-192x192.png
new file mode 100644
index 000000000..09c8324f8
Binary files /dev/null and b/examples/react/offline-transactions/public/android-chrome-192x192.png differ
diff --git a/examples/react/offline-transactions/public/android-chrome-512x512.png b/examples/react/offline-transactions/public/android-chrome-512x512.png
new file mode 100644
index 000000000..11d626ea3
Binary files /dev/null and b/examples/react/offline-transactions/public/android-chrome-512x512.png differ
diff --git a/examples/react/offline-transactions/public/apple-touch-icon.png b/examples/react/offline-transactions/public/apple-touch-icon.png
new file mode 100644
index 000000000..5a9423cc0
Binary files /dev/null and b/examples/react/offline-transactions/public/apple-touch-icon.png differ
diff --git a/examples/react/offline-transactions/public/favicon-16x16.png b/examples/react/offline-transactions/public/favicon-16x16.png
new file mode 100644
index 000000000..e3389b004
Binary files /dev/null and b/examples/react/offline-transactions/public/favicon-16x16.png differ
diff --git a/examples/react/offline-transactions/public/favicon-32x32.png b/examples/react/offline-transactions/public/favicon-32x32.png
new file mode 100644
index 000000000..900c77d44
Binary files /dev/null and b/examples/react/offline-transactions/public/favicon-32x32.png differ
diff --git a/examples/react/offline-transactions/public/favicon.ico b/examples/react/offline-transactions/public/favicon.ico
new file mode 100644
index 000000000..1a1751676
Binary files /dev/null and b/examples/react/offline-transactions/public/favicon.ico differ
diff --git a/examples/react/offline-transactions/public/favicon.png b/examples/react/offline-transactions/public/favicon.png
new file mode 100644
index 000000000..1e77bc060
Binary files /dev/null and b/examples/react/offline-transactions/public/favicon.png differ
diff --git a/examples/react/offline-transactions/public/site.webmanifest b/examples/react/offline-transactions/public/site.webmanifest
new file mode 100644
index 000000000..fa99de77d
--- /dev/null
+++ b/examples/react/offline-transactions/public/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/examples/react/offline-transactions/src/components/DefaultCatchBoundary.tsx b/examples/react/offline-transactions/src/components/DefaultCatchBoundary.tsx
new file mode 100644
index 000000000..63e20524f
--- /dev/null
+++ b/examples/react/offline-transactions/src/components/DefaultCatchBoundary.tsx
@@ -0,0 +1,53 @@
+import {
+ ErrorComponent,
+ Link,
+ rootRouteId,
+ useMatch,
+ useRouter,
+} from "@tanstack/react-router"
+import type { ErrorComponentProps } from "@tanstack/react-router"
+
+export function DefaultCatchBoundary({ error }: ErrorComponentProps) {
+ const router = useRouter()
+ const isRoot = useMatch({
+ strict: false,
+ select: (state) => state.id === rootRouteId,
+ })
+
+ console.error(`DefaultCatchBoundary Error:`, error)
+
+ return (
+
+
+
+
+ {isRoot ? (
+
+ Home
+
+ ) : (
+ {
+ e.preventDefault()
+ window.history.back()
+ }}
+ >
+ Go Back
+
+ )}
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/components/NotFound.tsx b/examples/react/offline-transactions/src/components/NotFound.tsx
new file mode 100644
index 000000000..b29bf8dc7
--- /dev/null
+++ b/examples/react/offline-transactions/src/components/NotFound.tsx
@@ -0,0 +1,25 @@
+import { Link } from "@tanstack/react-router"
+
+export function NotFound({ children }: { children?: any }) {
+ return (
+
+
+ {children ||
The page you are looking for does not exist.
}
+
+
+
+
+ Start Over
+
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/components/TodoDemo.tsx b/examples/react/offline-transactions/src/components/TodoDemo.tsx
new file mode 100644
index 000000000..4a4bd3259
--- /dev/null
+++ b/examples/react/offline-transactions/src/components/TodoDemo.tsx
@@ -0,0 +1,272 @@
+import React, { useEffect, useMemo, useState } from "react"
+import { useLiveQuery } from "@tanstack/react-db"
+import { createTodoActions, todoCollection } from "~/db/todos"
+
+interface TodoDemoProps {
+ title: string
+ description: string
+ storageType: `indexeddb` | `localstorage`
+ offline: any
+}
+
+export function TodoDemo({
+ title,
+ description,
+ storageType,
+ offline,
+}: TodoDemoProps) {
+ const [newTodoText, setNewTodoText] = useState(``)
+ const [error, setError] = useState(null)
+ const [isOnline, setIsOnline] = useState(navigator.onLine)
+ const [pendingCount, setPendingCount] = useState(0)
+
+ // Create actions based on offline executor
+ const actions = useMemo(() => createTodoActions(offline), [offline])
+ console.log({ offline, actions })
+
+ // Use live query to get todos
+ const { data: todoList = [], isLoading } = useLiveQuery((q) =>
+ q
+ .from({ todo: todoCollection })
+ .orderBy(({ todo }) => todo.createdAt, `desc`)
+ )
+
+ // Monitor online status
+ useEffect(() => {
+ const handleOnline = () => {
+ setIsOnline(true)
+ if (offline) {
+ offline.notifyOnline()
+ }
+ }
+ const handleOffline = () => setIsOnline(false)
+
+ window.addEventListener(`online`, handleOnline)
+ window.addEventListener(`offline`, handleOffline)
+
+ return () => {
+ window.removeEventListener(`online`, handleOnline)
+ window.removeEventListener(`offline`, handleOffline)
+ }
+ }, [offline])
+
+ // Monitor pending transactions
+ useEffect(() => {
+ if (!offline) return
+
+ const interval = setInterval(() => {
+ setPendingCount(offline.getPendingCount())
+ }, 100)
+
+ return () => clearInterval(interval)
+ }, [offline])
+
+ const handleAddTodo = async () => {
+ if (!newTodoText.trim()) return
+
+ try {
+ setError(null)
+ if (typeof actions.addTodo === `function`) {
+ await actions.addTodo(newTodoText)
+ } else {
+ actions.addTodo(newTodoText)
+ }
+ setNewTodoText(``)
+ } catch (err) {
+ setError(err instanceof Error ? err.message : `Failed to add todo`)
+ }
+ }
+
+ const handleToggleTodo = async (id: string) => {
+ try {
+ setError(null)
+ if (typeof actions.toggleTodo === `function`) {
+ await actions.toggleTodo(id)
+ } else {
+ actions.toggleTodo(id)
+ }
+ } catch (err) {
+ setError(err instanceof Error ? err.message : `Failed to toggle todo`)
+ }
+ }
+
+ const handleDeleteTodo = async (id: string) => {
+ try {
+ setError(null)
+ if (typeof actions.deleteTodo === `function`) {
+ await actions.deleteTodo(id)
+ } else {
+ actions.deleteTodo(id)
+ }
+ } catch (err) {
+ setError(err instanceof Error ? err.message : `Failed to delete todo`)
+ }
+ }
+
+ const handleKeyPress = (e: React.KeyboardEvent) => {
+ if (e.key === `Enter`) {
+ handleAddTodo()
+ }
+ }
+
+ const getStorageIcon = () => {
+ switch (storageType) {
+ case `indexeddb`:
+ return `🗄️`
+ case `localstorage`:
+ return `💾`
+ default:
+ return `💿`
+ }
+ }
+
+ return (
+
+
+
+
{getStorageIcon()}
+
+
{title}
+
{description}
+
+
+
+ {/* Status indicators */}
+
+
+
+ {isOnline ? `Online` : `Offline`}
+
+
+
+
+ {offline?.isOfflineEnabled ? `Offline Mode Enabled` : `Online Only`}
+
+
+ {pendingCount > 0 && (
+
+
+ {pendingCount} pending sync{pendingCount !== 1 ? `s` : ``}
+
+ )}
+
+
+ {/* Error display */}
+ {error && (
+
+ )}
+
+ {/* Add new todo */}
+
+ setNewTodoText(e.target.value)}
+ onKeyPress={handleKeyPress}
+ placeholder="Add a new todo..."
+ className="flex-1 px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"
+ disabled={isLoading}
+ />
+
+
+
+ {/* Todo list */}
+
+ {isLoading && todoList.length === 0 ? (
+
+ ) : todoList.length === 0 ? (
+
+ No todos yet. Add one above to get started!
+
+
+ Try going offline to see how it works
+
+
+ ) : (
+ todoList.map((todo) => {
+ return (
+
+
+
+ {todo.text}
+
+
+ {new Date(todo.createdAt).toLocaleDateString()}
+
+
+
+ )
+ })
+ )}
+
+
+ {/* Instructions */}
+
+
Try this:
+
+ - 1. Add some todos while online
+ - 3. Add more todos (they'll be stored locally)
+ - 4. Go back online to see them sync
+ -
+ 5. Open this page in another tab to test multi-tab coordination
+
+
+
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/db/todos.ts b/examples/react/offline-transactions/src/db/todos.ts
new file mode 100644
index 000000000..57989df1b
--- /dev/null
+++ b/examples/react/offline-transactions/src/db/todos.ts
@@ -0,0 +1,314 @@
+import { createCollection } from "@tanstack/react-db"
+import { queryCollectionOptions } from "@tanstack/query-db-collection"
+import {
+ IndexedDBAdapter,
+ LocalStorageAdapter,
+ startOfflineExecutor,
+} from "@tanstack/offline-transactions"
+import { z } from "zod"
+import type { PendingMutation } from "@tanstack/db"
+import type { Todo } from "~/utils/todos"
+import { queryClient } from "~/utils/queryClient"
+
+/**
+ * A utility function to fetch data from a URL with built-in retry logic for non-200 responses.
+ *
+ * This function will automatically retry HTTP requests a specified number of times if the initial
+ * fetch fails or returns a non-200 OK status. It uses an exponential backoff strategy to increase
+ * the delay between retries, reducing the load on the server.
+ *
+ * @param url The URL to fetch.
+ * @param options A standard `RequestInit` object for the fetch request. Supports all HTTP methods.
+ * @param retryConfig An object with retry configuration.
+ * @param retryConfig.retries The number of times to retry the request (default: 6).
+ * @param retryConfig.delay The initial delay in milliseconds before the first retry (default: 1000).
+ * @param retryConfig.backoff The backoff multiplier for subsequent retries (default: 2).
+ * @returns A promise that resolves to the `Response` object if the fetch is successful.
+ * @throws An error if the maximum number of retries is exceeded.
+ */
+export async function fetchWithRetry(
+ url: string,
+ options: RequestInit = {},
+ retryConfig: { retries?: number; delay?: number; backoff?: number } = {}
+): Promise {
+ const { retries = 6, delay = 1000, backoff = 2 } = retryConfig
+
+ // Loop for the specified number of retries
+ for (let i = 0; i <= retries; i++) {
+ try {
+ const response = await fetch(url, options)
+
+ // If the response is OK, return it immediately
+ if (response.ok) {
+ return response
+ }
+
+ // If it's a non-200 response, log the status and prepare to retry
+ console.warn(
+ `Fetch attempt ${i + 1} failed with status: ${response.status}. Retrying...`
+ )
+
+ // Wait before the next attempt, with exponential backoff
+ if (i < retries) {
+ const currentDelay = delay * Math.pow(backoff, i)
+ await new Promise((resolve) => setTimeout(resolve, currentDelay))
+ }
+ } catch (error) {
+ // Catch network errors and log a message
+ console.error(
+ `Fetch attempt ${i + 1} failed due to a network error:`,
+ error
+ )
+
+ // Wait before the next attempt, with exponential backoff
+ if (i < retries) {
+ const currentDelay = delay * Math.pow(backoff, i)
+ await new Promise((resolve) => setTimeout(resolve, currentDelay))
+ } else {
+ // If all retries have failed, re-throw the original error
+ throw error
+ }
+ }
+ }
+
+ // If the loop completes without a successful response, throw a final error
+ throw new Error(`Failed to fetch ${url} after ${retries} retries.`)
+}
+
+// Define schema
+const todoSchema = z.object({
+ id: z.string(),
+ text: z.string(),
+ completed: z.boolean(),
+ createdAt: z.date(),
+ updatedAt: z.date(),
+})
+
+// Create the todo collection
+export const todoCollection = createCollection(
+ queryCollectionOptions({
+ queryClient,
+ queryKey: [`todos`],
+ queryFn: async (): Promise> => {
+ const response = await fetchWithRetry(`/api/todos`)
+ if (!response.ok) {
+ throw new Error(`Failed to fetch todos`)
+ }
+ const data = await response.json()
+ const res = data.map((todo: any) => ({
+ ...todo,
+ createdAt: new Date(todo.createdAt),
+ updatedAt: new Date(todo.updatedAt),
+ }))
+ return res
+ },
+ getKey: (item) => item.id,
+ schema: todoSchema,
+ })
+)
+
+// API client functions
+export const todoAPI = {
+ async syncTodos({
+ transaction,
+ idempotencyKey,
+ }: {
+ transaction: { mutations: Array }
+ idempotencyKey: string
+ }) {
+ const mutations = transaction.mutations
+
+ console.log(`sync todos`, mutations[0].changes, mutations[0].original.text)
+ for (const mutation of mutations) {
+ try {
+ switch (mutation.type) {
+ case `insert`: {
+ const todoData = mutation.modified as Todo
+ const response = await fetchWithRetry(`/api/todos`, {
+ method: `POST`,
+ headers: {
+ "Content-Type": `application/json`,
+ "Idempotency-Key": idempotencyKey,
+ },
+ body: JSON.stringify({
+ text: todoData.text,
+ completed: todoData.completed,
+ }),
+ })
+
+ if (!response.ok) {
+ throw new Error(`Failed to sync insert: ${response.statusText}`)
+ }
+ break
+ }
+
+ case `update`: {
+ const todoData = mutation.modified as Partial
+ const response = await fetch(
+ `/api/todos/${(mutation.modified as Todo).id}`,
+ {
+ method: `PUT`,
+ headers: {
+ "Content-Type": `application/json`,
+ "Idempotency-Key": idempotencyKey,
+ },
+ body: JSON.stringify({
+ text: todoData.text,
+ completed: todoData.completed,
+ }),
+ }
+ )
+
+ if (!response.ok) {
+ throw new Error(`Failed to sync update: ${response.statusText}`)
+ }
+ break
+ }
+
+ case `delete`: {
+ const response = await fetchWithRetry(
+ `/api/todos/${(mutation.original as Todo).id}`,
+ {
+ method: `DELETE`,
+ headers: {
+ "Idempotency-Key": idempotencyKey,
+ },
+ }
+ )
+
+ if (!response.ok) {
+ throw new Error(`Failed to sync delete: ${response.statusText}`)
+ }
+ break
+ }
+ }
+ } catch (error) {
+ console.error(`Sync error for mutation:`, mutation, error)
+ throw error
+ }
+ }
+ const start = performance.now()
+ console.time(`refresh collection ${start}`)
+ await todoCollection.utils.refetch()
+ console.timeEnd(`refresh collection ${start}`)
+ },
+}
+
+// Helper functions to create offline actions
+export function createTodoActions(offline: any) {
+ const addTodoAction = offline?.createOfflineAction({
+ mutationFnName: `syncTodos`,
+ onMutate: (text: string) => {
+ const newTodo = {
+ id: crypto.randomUUID(),
+ text: text.trim(),
+ completed: false,
+ createdAt: new Date(),
+ updatedAt: new Date(),
+ }
+ todoCollection.insert(newTodo)
+ return newTodo
+ },
+ })
+
+ const toggleTodoAction = offline?.createOfflineAction({
+ mutationFnName: `syncTodos`,
+ onMutate: (id: string) => {
+ const todo = todoCollection.get(id)
+ if (!todo) return
+ todoCollection.update(id, (draft) => {
+ draft.completed = !draft.completed
+ draft.updatedAt = new Date()
+ })
+ return todo
+ },
+ })
+
+ const deleteTodoAction = offline?.createOfflineAction({
+ mutationFnName: `syncTodos`,
+ onMutate: (id: string) => {
+ const todo = todoCollection.get(id)
+ if (todo) {
+ todoCollection.delete(id)
+ }
+ return todo
+ },
+ })
+
+ console.log(`creating offline actions`)
+
+ return {
+ addTodo: addTodoAction,
+ toggleTodo: toggleTodoAction,
+ deleteTodo: deleteTodoAction,
+ }
+}
+
+// IndexedDB offline executor
+export async function createIndexedDBOfflineExecutor(otel?: {
+ endpoint: string
+ headers?: Record
+}) {
+ const executor = startOfflineExecutor({
+ collections: { todos: todoCollection },
+ storage: new IndexedDBAdapter(`offline-todos-indexeddb`, `transactions`),
+ mutationFns: {
+ syncTodos: todoAPI.syncTodos,
+ },
+ onLeadershipChange: (isLeader) => {
+ console.log({ isLeader })
+ if (!isLeader) {
+ console.warn(`Running in online-only mode (another tab is the leader)`)
+ }
+ },
+ otel,
+ })
+
+ // Initialize OpenTelemetry AFTER creating the executor so we can pass the online detector
+ if (otel?.endpoint) {
+ const { initWebTracing } = await import(`~/otel-web`)
+ await initWebTracing({
+ endpoint: otel.endpoint,
+ headers: otel.headers,
+ onlineDetector: executor.getOnlineDetector(),
+ }).catch((error) => {
+ console.error(`Failed to initialize OpenTelemetry:`, error)
+ })
+ }
+
+ return executor
+}
+
+// localStorage offline executor
+export async function createLocalStorageOfflineExecutor(otel?: {
+ endpoint: string
+ headers?: Record
+}) {
+ const executor = startOfflineExecutor({
+ collections: { todos: todoCollection },
+ storage: new LocalStorageAdapter(`offline-todos-ls:`),
+ mutationFns: {
+ syncTodos: todoAPI.syncTodos,
+ },
+ onLeadershipChange: (isLeader) => {
+ if (!isLeader) {
+ console.warn(`Running in online-only mode (another tab is the leader)`)
+ }
+ },
+ otel,
+ })
+
+ // Initialize OpenTelemetry AFTER creating the executor so we can pass the online detector
+ if (otel?.endpoint) {
+ const { initWebTracing } = await import(`~/otel-web`)
+ await initWebTracing({
+ endpoint: otel.endpoint,
+ headers: otel.headers,
+ onlineDetector: executor.getOnlineDetector(),
+ }).catch((error) => {
+ console.error(`Failed to initialize OpenTelemetry:`, error)
+ })
+ }
+
+ return executor
+}
diff --git a/examples/react/offline-transactions/src/otel-offline-processor.ts b/examples/react/offline-transactions/src/otel-offline-processor.ts
new file mode 100644
index 000000000..d7a9664c6
--- /dev/null
+++ b/examples/react/offline-transactions/src/otel-offline-processor.ts
@@ -0,0 +1,161 @@
+import {
+ OTelSpanStorage,
+ deserializeSpan,
+ serializeSpan,
+} from "./otel-span-storage"
+import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base"
+
+/**
+ * Custom span processor that persists failed spans to IndexedDB
+ * and retries sending them when back online
+ */
+export class OfflineRetrySpanProcessor {
+ private storage: OTelSpanStorage
+ private exporter: SpanExporter
+ private isShutdown = false
+ private retryTimer: ReturnType | null = null
+
+ constructor(exporter: SpanExporter) {
+ this.exporter = exporter
+ this.storage = new OTelSpanStorage()
+ }
+
+ async forceFlush(): Promise {
+ // Attempt to retry all stored spans
+ await this.retryStoredSpans()
+ }
+
+ onStart(): void {
+ // No-op for this processor
+ }
+
+ async onEnd(span: ReadableSpan): Promise {
+ if (this.isShutdown) {
+ return
+ }
+
+ try {
+ // Try to export the span immediately
+ const result = await new Promise((resolve) => {
+ this.exporter.export([span], (result) => {
+ resolve(result)
+ })
+ })
+
+ if (!result || result.code !== 0) {
+ // Export failed, store for retry
+ console.warn(
+ `Failed to export span, storing for retry:`,
+ span.name,
+ result
+ )
+ await this.storage.store(serializeSpan(span))
+ }
+ } catch (error) {
+ // Network error or exporter failure, store for retry
+ console.warn(`Error exporting span, storing for retry:`, error)
+ await this.storage.store(serializeSpan(span))
+ }
+ }
+
+ async shutdown(): Promise {
+ if (this.isShutdown) {
+ return
+ }
+
+ this.isShutdown = true
+
+ if (this.retryTimer) {
+ clearTimeout(this.retryTimer)
+ this.retryTimer = null
+ }
+
+ // Final flush attempt
+ await this.forceFlush()
+ await this.exporter.shutdown()
+ }
+
+ /**
+ * Retry sending all stored spans
+ * Returns the number of spans successfully sent
+ */
+ async retryStoredSpans(): Promise {
+ if (this.isShutdown) {
+ return 0
+ }
+
+ const storedSpans = await this.storage.getAll()
+
+ if (storedSpans.length === 0) {
+ return 0
+ }
+
+ console.log(`Retrying ${storedSpans.length} stored spans`)
+ let successCount = 0
+
+ for (const stored of storedSpans) {
+ try {
+ const deserializedSpan = deserializeSpan(stored.span)
+ const result = await new Promise((resolve) => {
+ this.exporter.export([deserializedSpan], (result) => {
+ resolve(result)
+ })
+ })
+
+ if (result && result.code === 0) {
+ // Success! Remove from storage
+ await this.storage.remove(stored.id)
+ successCount++
+ } else {
+ // Still failing, increment retry count
+ await this.storage.incrementRetryCount(stored.id)
+ }
+ } catch (error) {
+ // Still can't send, increment retry count
+ console.warn(`Retry failed for span:`, error)
+ await this.storage.incrementRetryCount(stored.id)
+ }
+ }
+
+ console.log(
+ `Successfully retried ${successCount}/${storedSpans.length} spans`
+ )
+ return successCount
+ }
+
+ /**
+ * Start periodic retry attempts
+ */
+ startPeriodicRetry(intervalMs = 30000): void {
+ if (this.retryTimer) {
+ return
+ }
+
+ const retry = async () => {
+ await this.retryStoredSpans()
+
+ if (!this.isShutdown) {
+ this.retryTimer = setTimeout(retry, intervalMs)
+ }
+ }
+
+ this.retryTimer = setTimeout(retry, intervalMs)
+ }
+
+ /**
+ * Stop periodic retry attempts
+ */
+ stopPeriodicRetry(): void {
+ if (this.retryTimer) {
+ clearTimeout(this.retryTimer)
+ this.retryTimer = null
+ }
+ }
+
+ /**
+ * Get the number of spans waiting to be retried
+ */
+ async getPendingCount(): Promise {
+ return this.storage.getCount()
+ }
+}
diff --git a/examples/react/offline-transactions/src/otel-span-storage.ts b/examples/react/offline-transactions/src/otel-span-storage.ts
new file mode 100644
index 000000000..56a8ae05a
--- /dev/null
+++ b/examples/react/offline-transactions/src/otel-span-storage.ts
@@ -0,0 +1,207 @@
+/**
+ * IndexedDB storage for persisting OpenTelemetry spans when offline
+ */
+import type { ReadableSpan } from "@opentelemetry/sdk-trace-base"
+
+export interface SerializedSpan {
+ name: string
+ spanContext: {
+ traceId: string
+ spanId: string
+ traceFlags: number
+ }
+ parentSpanId?: string
+ startTime: [number, number]
+ endTime: [number, number]
+ status: { code: number; message?: string }
+ attributes: Record
+ events: Array
+ links: Array
+ kind: number
+ resource: Record
+ instrumentationLibrary: { name: string; version?: string }
+}
+
+interface StoredSpan {
+ id: string
+ span: SerializedSpan
+ timestamp: number
+ retryCount: number
+}
+
+export class OTelSpanStorage {
+ private dbName = `otel-spans`
+ private storeName = `failed-spans`
+ private db: IDBDatabase | null = null
+ private maxRetries = 5
+
+ async init(): Promise {
+ return new Promise((resolve, reject) => {
+ const request = indexedDB.open(this.dbName, 1)
+
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => {
+ this.db = request.result
+ resolve()
+ }
+
+ request.onupgradeneeded = (event) => {
+ const db = (event.target as IDBOpenDBRequest).result
+ if (!db.objectStoreNames.contains(this.storeName)) {
+ const store = db.createObjectStore(this.storeName, { keyPath: `id` })
+ store.createIndex(`timestamp`, `timestamp`, { unique: false })
+ store.createIndex(`retryCount`, `retryCount`, { unique: false })
+ }
+ }
+ })
+ }
+
+ async store(spanData: SerializedSpan): Promise {
+ if (!this.db) await this.init()
+
+ const storedSpan: StoredSpan = {
+ id: crypto.randomUUID(),
+ span: spanData,
+ timestamp: Date.now(),
+ retryCount: 0,
+ }
+
+ return new Promise((resolve, reject) => {
+ const transaction = this.db!.transaction([this.storeName], `readwrite`)
+ const store = transaction.objectStore(this.storeName)
+ const request = store.add(storedSpan)
+
+ request.onsuccess = () => resolve()
+ request.onerror = () => reject(request.error)
+ })
+ }
+
+ async getAll(): Promise> {
+ if (!this.db) await this.init()
+
+ return new Promise((resolve, reject) => {
+ const transaction = this.db!.transaction([this.storeName], `readonly`)
+ const store = transaction.objectStore(this.storeName)
+ const request = store.getAll()
+
+ request.onsuccess = () => resolve(request.result)
+ request.onerror = () => reject(request.error)
+ })
+ }
+
+ async remove(id: string): Promise {
+ if (!this.db) await this.init()
+
+ return new Promise((resolve, reject) => {
+ const transaction = this.db!.transaction([this.storeName], `readwrite`)
+ const store = transaction.objectStore(this.storeName)
+ const request = store.delete(id)
+
+ request.onsuccess = () => resolve()
+ request.onerror = () => reject(request.error)
+ })
+ }
+
+ async incrementRetryCount(id: string): Promise {
+ if (!this.db) await this.init()
+
+ return new Promise((resolve, reject) => {
+ const transaction = this.db!.transaction([this.storeName], `readwrite`)
+ const store = transaction.objectStore(this.storeName)
+ const getRequest = store.get(id)
+
+ getRequest.onsuccess = () => {
+ const storedSpan = getRequest.result as StoredSpan
+
+ storedSpan.retryCount++
+
+ // Remove if max retries exceeded
+ if (storedSpan.retryCount > this.maxRetries) {
+ console.warn(`Max retries exceeded for span ${id}, removing`)
+ this.remove(id).then(resolve).catch(reject)
+ return
+ }
+
+ const putRequest = store.put(storedSpan)
+ putRequest.onsuccess = () => resolve()
+ putRequest.onerror = () => reject(putRequest.error)
+ }
+
+ getRequest.onerror = () => reject(getRequest.error)
+ })
+ }
+
+ async clear(): Promise {
+ if (!this.db) await this.init()
+
+ return new Promise((resolve, reject) => {
+ const transaction = this.db!.transaction([this.storeName], `readwrite`)
+ const store = transaction.objectStore(this.storeName)
+ const request = store.clear()
+
+ request.onsuccess = () => resolve()
+ request.onerror = () => reject(request.error)
+ })
+ }
+
+ async getCount(): Promise {
+ if (!this.db) await this.init()
+
+ return new Promise((resolve, reject) => {
+ const transaction = this.db!.transaction([this.storeName], `readonly`)
+ const store = transaction.objectStore(this.storeName)
+ const request = store.count()
+
+ request.onsuccess = () => resolve(request.result)
+ request.onerror = () => reject(request.error)
+ })
+ }
+}
+
+/**
+ * Serialize a ReadableSpan to a plain object that can be stored in IndexedDB
+ */
+export function serializeSpan(span: ReadableSpan): SerializedSpan {
+ return {
+ name: span.name,
+ spanContext: {
+ traceId: span.spanContext().traceId,
+ spanId: span.spanContext().spanId,
+ traceFlags: span.spanContext().traceFlags,
+ },
+ parentSpanId: span.parentSpanId,
+ startTime: span.startTime,
+ endTime: span.endTime,
+ status: span.status,
+ attributes: span.attributes,
+ events: span.events,
+ links: span.links,
+ kind: span.kind,
+ resource: span.resource.attributes,
+ instrumentationLibrary: span.instrumentationLibrary,
+ }
+}
+
+/**
+ * Deserialize a stored span back into a format the exporter can use
+ */
+export function deserializeSpan(serialized: SerializedSpan): any {
+ return {
+ name: serialized.name,
+ spanContext: () => serialized.spanContext,
+ parentSpanId: serialized.parentSpanId,
+ startTime: serialized.startTime,
+ endTime: serialized.endTime,
+ status: serialized.status,
+ attributes: serialized.attributes,
+ events: serialized.events,
+ links: serialized.links,
+ kind: serialized.kind,
+ resource: {
+ attributes: serialized.resource,
+ },
+ instrumentationLibrary: serialized.instrumentationLibrary,
+ duration: serialized.endTime,
+ ended: true,
+ }
+}
diff --git a/examples/react/offline-transactions/src/otel-web.ts b/examples/react/offline-transactions/src/otel-web.ts
new file mode 100644
index 000000000..d77f050cc
--- /dev/null
+++ b/examples/react/offline-transactions/src/otel-web.ts
@@ -0,0 +1,100 @@
+import { OfflineRetrySpanProcessor } from "./otel-offline-processor"
+
+export interface InitWebTracingOptions {
+ endpoint: string
+ headers?: Record
+ serviceName?: string
+ sampleRatio?: number
+ onlineDetector?: {
+ subscribe: (callback: () => void) => () => void
+ }
+}
+
+let offlineProcessor: OfflineRetrySpanProcessor | null = null
+
+export async function initWebTracing(
+ options: InitWebTracingOptions
+): Promise {
+ const {
+ endpoint,
+ headers = {},
+ serviceName = `@tanstack/offline-transactions-example`,
+ sampleRatio = 1.0,
+ onlineDetector,
+ } = options
+
+ // Dynamic imports to keep bundle size minimal
+ const { WebTracerProvider } = await import(`@opentelemetry/sdk-trace-web`)
+ const { OTLPTraceExporter } = await import(
+ `@opentelemetry/exporter-trace-otlp-http`
+ )
+ const { BatchSpanProcessor } = await import(`@opentelemetry/sdk-trace-web`)
+ const { Resource } = await import(`@opentelemetry/resources`)
+ const { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } = await import(
+ `@opentelemetry/semantic-conventions`
+ )
+ const { registerInstrumentations } = await import(
+ `@opentelemetry/instrumentation`
+ )
+ const { TraceIdRatioBasedSampler } = await import(
+ `@opentelemetry/sdk-trace-web`
+ )
+
+ // Create resource with service identification
+ const resource = new Resource({
+ [ATTR_SERVICE_NAME]: serviceName,
+ [ATTR_SERVICE_VERSION]: `0.0.1`,
+ })
+
+ // Configure OTLP exporter
+ const exporter = new OTLPTraceExporter({
+ url: endpoint,
+ headers,
+ })
+
+ // Create tracer provider with sampling
+ const provider = new WebTracerProvider({
+ resource,
+ sampler: new TraceIdRatioBasedSampler(sampleRatio),
+ })
+
+ // Add batch span processor for efficient export
+ provider.addSpanProcessor(new BatchSpanProcessor(exporter))
+
+ // Add offline retry processor for storing failed spans
+ offlineProcessor = new OfflineRetrySpanProcessor(exporter)
+ provider.addSpanProcessor(offlineProcessor as any)
+
+ // Start periodic retry attempts
+ offlineProcessor.startPeriodicRetry(30000)
+
+ // If online detector provided, retry on connectivity change
+ if (onlineDetector) {
+ onlineDetector.subscribe(async () => {
+ console.log(`Connectivity changed, retrying stored spans`)
+ if (offlineProcessor) {
+ const count = await offlineProcessor.retryStoredSpans()
+ if (count > 0) {
+ console.log(`Successfully sent ${count} stored spans`)
+ }
+ }
+ })
+ }
+
+ // Register the provider globally
+ provider.register()
+
+ // Auto-instrument fetch calls
+ registerInstrumentations({
+ instrumentations: [],
+ })
+
+ const pendingCount = await offlineProcessor.getPendingCount()
+ console.log(
+ `OpenTelemetry initialized: ${endpoint} (${pendingCount} spans pending retry)`
+ )
+}
+
+export function getOfflineProcessor(): OfflineRetrySpanProcessor | null {
+ return offlineProcessor
+}
diff --git a/examples/react/offline-transactions/src/routeTree.gen.ts b/examples/react/offline-transactions/src/routeTree.gen.ts
new file mode 100644
index 000000000..def28e530
--- /dev/null
+++ b/examples/react/offline-transactions/src/routeTree.gen.ts
@@ -0,0 +1,226 @@
+/* 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 { createServerRootRoute } from '@tanstack/react-start/server'
+
+import { Route as rootRouteImport } from './routes/__root'
+import { Route as LocalstorageRouteImport } from './routes/localstorage'
+import { Route as IndexeddbRouteImport } from './routes/indexeddb'
+import { Route as IndexRouteImport } from './routes/index'
+import { ServerRoute as ApiUsersServerRouteImport } from './routes/api/users'
+import { ServerRoute as ApiTodosServerRouteImport } from './routes/api/todos'
+import { ServerRoute as ApiUsersUserIdServerRouteImport } from './routes/api/users.$userId'
+import { ServerRoute as ApiTodosTodoIdServerRouteImport } from './routes/api/todos.$todoId'
+
+const rootServerRouteImport = createServerRootRoute()
+
+const LocalstorageRoute = LocalstorageRouteImport.update({
+ id: '/localstorage',
+ path: '/localstorage',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const IndexeddbRoute = IndexeddbRouteImport.update({
+ id: '/indexeddb',
+ path: '/indexeddb',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const IndexRoute = IndexRouteImport.update({
+ id: '/',
+ path: '/',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const ApiUsersServerRoute = ApiUsersServerRouteImport.update({
+ id: '/api/users',
+ path: '/api/users',
+ getParentRoute: () => rootServerRouteImport,
+} as any)
+const ApiTodosServerRoute = ApiTodosServerRouteImport.update({
+ id: '/api/todos',
+ path: '/api/todos',
+ getParentRoute: () => rootServerRouteImport,
+} as any)
+const ApiUsersUserIdServerRoute = ApiUsersUserIdServerRouteImport.update({
+ id: '/$userId',
+ path: '/$userId',
+ getParentRoute: () => ApiUsersServerRoute,
+} as any)
+const ApiTodosTodoIdServerRoute = ApiTodosTodoIdServerRouteImport.update({
+ id: '/$todoId',
+ path: '/$todoId',
+ getParentRoute: () => ApiTodosServerRoute,
+} as any)
+
+export interface FileRoutesByFullPath {
+ '/': typeof IndexRoute
+ '/indexeddb': typeof IndexeddbRoute
+ '/localstorage': typeof LocalstorageRoute
+}
+export interface FileRoutesByTo {
+ '/': typeof IndexRoute
+ '/indexeddb': typeof IndexeddbRoute
+ '/localstorage': typeof LocalstorageRoute
+}
+export interface FileRoutesById {
+ __root__: typeof rootRouteImport
+ '/': typeof IndexRoute
+ '/indexeddb': typeof IndexeddbRoute
+ '/localstorage': typeof LocalstorageRoute
+}
+export interface FileRouteTypes {
+ fileRoutesByFullPath: FileRoutesByFullPath
+ fullPaths: '/' | '/indexeddb' | '/localstorage'
+ fileRoutesByTo: FileRoutesByTo
+ to: '/' | '/indexeddb' | '/localstorage'
+ id: '__root__' | '/' | '/indexeddb' | '/localstorage'
+ fileRoutesById: FileRoutesById
+}
+export interface RootRouteChildren {
+ IndexRoute: typeof IndexRoute
+ IndexeddbRoute: typeof IndexeddbRoute
+ LocalstorageRoute: typeof LocalstorageRoute
+}
+export interface FileServerRoutesByFullPath {
+ '/api/todos': typeof ApiTodosServerRouteWithChildren
+ '/api/users': typeof ApiUsersServerRouteWithChildren
+ '/api/todos/$todoId': typeof ApiTodosTodoIdServerRoute
+ '/api/users/$userId': typeof ApiUsersUserIdServerRoute
+}
+export interface FileServerRoutesByTo {
+ '/api/todos': typeof ApiTodosServerRouteWithChildren
+ '/api/users': typeof ApiUsersServerRouteWithChildren
+ '/api/todos/$todoId': typeof ApiTodosTodoIdServerRoute
+ '/api/users/$userId': typeof ApiUsersUserIdServerRoute
+}
+export interface FileServerRoutesById {
+ __root__: typeof rootServerRouteImport
+ '/api/todos': typeof ApiTodosServerRouteWithChildren
+ '/api/users': typeof ApiUsersServerRouteWithChildren
+ '/api/todos/$todoId': typeof ApiTodosTodoIdServerRoute
+ '/api/users/$userId': typeof ApiUsersUserIdServerRoute
+}
+export interface FileServerRouteTypes {
+ fileServerRoutesByFullPath: FileServerRoutesByFullPath
+ fullPaths:
+ | '/api/todos'
+ | '/api/users'
+ | '/api/todos/$todoId'
+ | '/api/users/$userId'
+ fileServerRoutesByTo: FileServerRoutesByTo
+ to: '/api/todos' | '/api/users' | '/api/todos/$todoId' | '/api/users/$userId'
+ id:
+ | '__root__'
+ | '/api/todos'
+ | '/api/users'
+ | '/api/todos/$todoId'
+ | '/api/users/$userId'
+ fileServerRoutesById: FileServerRoutesById
+}
+export interface RootServerRouteChildren {
+ ApiTodosServerRoute: typeof ApiTodosServerRouteWithChildren
+ ApiUsersServerRoute: typeof ApiUsersServerRouteWithChildren
+}
+
+declare module '@tanstack/react-router' {
+ interface FileRoutesByPath {
+ '/localstorage': {
+ id: '/localstorage'
+ path: '/localstorage'
+ fullPath: '/localstorage'
+ preLoaderRoute: typeof LocalstorageRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/indexeddb': {
+ id: '/indexeddb'
+ path: '/indexeddb'
+ fullPath: '/indexeddb'
+ preLoaderRoute: typeof IndexeddbRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/': {
+ id: '/'
+ path: '/'
+ fullPath: '/'
+ preLoaderRoute: typeof IndexRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ }
+}
+declare module '@tanstack/react-start/server' {
+ interface ServerFileRoutesByPath {
+ '/api/users': {
+ id: '/api/users'
+ path: '/api/users'
+ fullPath: '/api/users'
+ preLoaderRoute: typeof ApiUsersServerRouteImport
+ parentRoute: typeof rootServerRouteImport
+ }
+ '/api/todos': {
+ id: '/api/todos'
+ path: '/api/todos'
+ fullPath: '/api/todos'
+ preLoaderRoute: typeof ApiTodosServerRouteImport
+ parentRoute: typeof rootServerRouteImport
+ }
+ '/api/users/$userId': {
+ id: '/api/users/$userId'
+ path: '/$userId'
+ fullPath: '/api/users/$userId'
+ preLoaderRoute: typeof ApiUsersUserIdServerRouteImport
+ parentRoute: typeof ApiUsersServerRoute
+ }
+ '/api/todos/$todoId': {
+ id: '/api/todos/$todoId'
+ path: '/$todoId'
+ fullPath: '/api/todos/$todoId'
+ preLoaderRoute: typeof ApiTodosTodoIdServerRouteImport
+ parentRoute: typeof ApiTodosServerRoute
+ }
+ }
+}
+
+interface ApiTodosServerRouteChildren {
+ ApiTodosTodoIdServerRoute: typeof ApiTodosTodoIdServerRoute
+}
+
+const ApiTodosServerRouteChildren: ApiTodosServerRouteChildren = {
+ ApiTodosTodoIdServerRoute: ApiTodosTodoIdServerRoute,
+}
+
+const ApiTodosServerRouteWithChildren = ApiTodosServerRoute._addFileChildren(
+ ApiTodosServerRouteChildren,
+)
+
+interface ApiUsersServerRouteChildren {
+ ApiUsersUserIdServerRoute: typeof ApiUsersUserIdServerRoute
+}
+
+const ApiUsersServerRouteChildren: ApiUsersServerRouteChildren = {
+ ApiUsersUserIdServerRoute: ApiUsersUserIdServerRoute,
+}
+
+const ApiUsersServerRouteWithChildren = ApiUsersServerRoute._addFileChildren(
+ ApiUsersServerRouteChildren,
+)
+
+const rootRouteChildren: RootRouteChildren = {
+ IndexRoute: IndexRoute,
+ IndexeddbRoute: IndexeddbRoute,
+ LocalstorageRoute: LocalstorageRoute,
+}
+export const routeTree = rootRouteImport
+ ._addFileChildren(rootRouteChildren)
+ ._addFileTypes()
+const rootServerRouteChildren: RootServerRouteChildren = {
+ ApiTodosServerRoute: ApiTodosServerRouteWithChildren,
+ ApiUsersServerRoute: ApiUsersServerRouteWithChildren,
+}
+export const serverRouteTree = rootServerRouteImport
+ ._addFileChildren(rootServerRouteChildren)
+ ._addFileTypes()
diff --git a/examples/react/offline-transactions/src/router.tsx b/examples/react/offline-transactions/src/router.tsx
new file mode 100644
index 000000000..e15333a99
--- /dev/null
+++ b/examples/react/offline-transactions/src/router.tsx
@@ -0,0 +1,22 @@
+import { createRouter as createTanStackRouter } from "@tanstack/react-router"
+import { routeTree } from "./routeTree.gen"
+import { DefaultCatchBoundary } from "./components/DefaultCatchBoundary"
+import { NotFound } from "./components/NotFound"
+
+export function createRouter() {
+ const router = createTanStackRouter({
+ routeTree,
+ defaultPreload: `intent`,
+ defaultErrorComponent: DefaultCatchBoundary,
+ defaultNotFoundComponent: () => ,
+ scrollRestoration: true,
+ })
+
+ return router
+}
+
+declare module "@tanstack/react-router" {
+ interface Register {
+ router: ReturnType
+ }
+}
diff --git a/examples/react/offline-transactions/src/routes/__root.tsx b/examples/react/offline-transactions/src/routes/__root.tsx
new file mode 100644
index 000000000..ae2487fb4
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/__root.tsx
@@ -0,0 +1,124 @@
+///
+import {
+ HeadContent,
+ Link,
+ Scripts,
+ createRootRoute,
+} from "@tanstack/react-router"
+import { TanStackRouterDevtools } from "@tanstack/react-router-devtools"
+import { QueryClientProvider } from "@tanstack/react-query"
+import * as React from "react"
+import { DefaultCatchBoundary } from "~/components/DefaultCatchBoundary"
+import { NotFound } from "~/components/NotFound"
+import appCss from "~/styles/app.css?url"
+import { seo } from "~/utils/seo"
+import { queryClient } from "~/utils/queryClient"
+
+export const Route = createRootRoute({
+ head: () => ({
+ meta: [
+ {
+ charSet: `utf-8`,
+ },
+ {
+ name: `viewport`,
+ content: `width=device-width, initial-scale=1`,
+ },
+ ...seo({
+ title: `TanStack Start | Type-Safe, Client-First, Full-Stack React Framework`,
+ description: `TanStack Start is a type-safe, client-first, full-stack React framework. `,
+ }),
+ ],
+ links: [
+ { rel: `stylesheet`, href: appCss },
+ {
+ rel: `apple-touch-icon`,
+ sizes: `180x180`,
+ href: `/apple-touch-icon.png`,
+ },
+ {
+ rel: `icon`,
+ type: `image/png`,
+ sizes: `32x32`,
+ href: `/favicon-32x32.png`,
+ },
+ {
+ rel: `icon`,
+ type: `image/png`,
+ sizes: `16x16`,
+ href: `/favicon-16x16.png`,
+ },
+ { rel: `manifest`, href: `/site.webmanifest`, color: `#fffff` },
+ { rel: `icon`, href: `/favicon.ico` },
+ ],
+ scripts: [
+ {
+ src: `/customScript.js`,
+ type: `text/javascript`,
+ },
+ ],
+ }),
+ errorComponent: DefaultCatchBoundary,
+ notFoundComponent: () => ,
+ shellComponent: RootDocument,
+})
+
+function RootDocument({ children }: { children: React.ReactNode }) {
+ return (
+
+
+
+
+
+
+
+
+
+
+ ⚡
+
+ TanStack Offline Transactions
+
+
+
+
+ Home
+
+
+ 🗄️ IndexedDB
+
+
+ 💾 localStorage
+
+
+
+
+
+
+ {children}
+
+
+
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/routes/api/todos.$todoId.ts b/examples/react/offline-transactions/src/routes/api/todos.$todoId.ts
new file mode 100644
index 000000000..e55263518
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/api/todos.$todoId.ts
@@ -0,0 +1,80 @@
+import { createServerFileRoute } from "@tanstack/react-start/server"
+import { json } from "@tanstack/react-start"
+import type { TodoUpdate } from "~/utils/todos"
+import { todoService } from "~/utils/todos"
+
+export const ServerRoute = createServerFileRoute(`/api/todos/$todoId`).methods({
+ GET: async ({ params, request }) => {
+ console.info(`GET /api/todos/${params.todoId} @`, request.url)
+
+ try {
+ const todo = await todoService.withDelay(() => {
+ todoService.simulateFailure(0.1)
+ return todoService.getById(params.todoId)
+ })
+
+ if (!todo) {
+ return json({ error: `Todo not found` }, { status: 404 })
+ }
+
+ return json(todo)
+ } catch (error) {
+ console.error(`Error fetching todo:`, error)
+ return json({ error: `Failed to fetch todo` }, { status: 500 })
+ }
+ },
+
+ PUT: async ({ params, request }) => {
+ console.info(`PUT /api/todos/${params.todoId} @`, request.url)
+
+ try {
+ const body = (await request.json()) as TodoUpdate
+
+ const todo = await todoService.withDelay(() => {
+ todoService.simulateFailure(0.15)
+ return todoService.update(params.todoId, body)
+ })
+
+ if (!todo) {
+ return json({ error: `Todo not found` }, { status: 404 })
+ }
+
+ return json(todo)
+ } catch (error) {
+ console.error(`Error updating todo:`, error)
+ if (error instanceof Error && error.message.includes(`Simulated`)) {
+ return json(
+ { error: `Network error - please try again` },
+ { status: 503 }
+ )
+ }
+ return json({ error: `Failed to update todo` }, { status: 500 })
+ }
+ },
+
+ DELETE: async ({ params, request }) => {
+ console.info(`DELETE /api/todos/${params.todoId} @`, request.url)
+
+ try {
+ const success = await todoService.withDelay(() => {
+ todoService.simulateFailure(0.15)
+ return todoService.delete(params.todoId)
+ })
+
+ if (!success) {
+ return json({ error: `Todo not found` }, { status: 404 })
+ }
+
+ return json({ success: true })
+ } catch (error) {
+ console.error(`Error deleting todo:`, error)
+ if (error instanceof Error && error.message.includes(`Simulated`)) {
+ return json(
+ { error: `Network error - please try again` },
+ { status: 503 }
+ )
+ }
+ return json({ error: `Failed to delete todo` }, { status: 500 })
+ }
+ },
+})
diff --git a/examples/react/offline-transactions/src/routes/api/todos.ts b/examples/react/offline-transactions/src/routes/api/todos.ts
new file mode 100644
index 000000000..76623dd3c
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/api/todos.ts
@@ -0,0 +1,52 @@
+import { createServerFileRoute } from "@tanstack/react-start/server"
+import { json } from "@tanstack/react-start"
+import type { TodoInput } from "~/utils/todos"
+import { todoService } from "~/utils/todos"
+
+export const ServerRoute = createServerFileRoute(`/api/todos`).methods({
+ GET: async ({ request }) => {
+ console.info(`GET /api/todos @`, request.url)
+
+ try {
+ const todos = await todoService.withDelay(() => {
+ // Occasionally simulate failure for demo
+ todoService.simulateFailure(0.1)
+ return todoService.getAll()
+ })
+
+ return json(todos)
+ } catch (error) {
+ console.error(`Error fetching todos:`, error)
+ return json({ error: `Failed to fetch todos` }, { status: 500 })
+ }
+ },
+
+ POST: async ({ request }) => {
+ console.info(`POST /api/todos @`, request.url)
+
+ try {
+ const body = (await request.json()) as TodoInput
+
+ if (!body.text || body.text.trim() === ``) {
+ return json({ error: `Todo text is required` }, { status: 400 })
+ }
+
+ const todo = await todoService.withDelay(() => {
+ // Occasionally simulate failure for demo
+ todoService.simulateFailure(0.15)
+ return todoService.create(body)
+ })
+
+ return json(todo, { status: 201 })
+ } catch (error) {
+ console.error(`Error creating todo:`, error)
+ if (error instanceof Error && error.message.includes(`Simulated`)) {
+ return json(
+ { error: `Network error - please try again` },
+ { status: 503 }
+ )
+ }
+ return json({ error: `Failed to create todo` }, { status: 500 })
+ }
+ },
+})
diff --git a/examples/react/offline-transactions/src/routes/api/users.$userId.ts b/examples/react/offline-transactions/src/routes/api/users.$userId.ts
new file mode 100644
index 000000000..8f966de20
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/api/users.$userId.ts
@@ -0,0 +1,28 @@
+import { createServerFileRoute } from "@tanstack/react-start/server"
+import { json } from "@tanstack/react-start"
+import type { User } from "~/utils/users"
+
+export const ServerRoute = createServerFileRoute(`/api/users/$userId`).methods({
+ GET: async ({ params, request }) => {
+ console.info(`Fetching users by id=${params.userId}... @`, request.url)
+ try {
+ const res = await fetch(
+ `https://jsonplaceholder.typicode.com/users/` + params.userId
+ )
+ if (!res.ok) {
+ throw new Error(`Failed to fetch user`)
+ }
+
+ const user = (await res.json()) as User
+
+ return json({
+ id: user.id,
+ name: user.name,
+ email: user.email,
+ })
+ } catch (e) {
+ console.error(e)
+ return json({ error: `User not found` }, { status: 404 })
+ }
+ },
+})
diff --git a/examples/react/offline-transactions/src/routes/api/users.ts b/examples/react/offline-transactions/src/routes/api/users.ts
new file mode 100644
index 000000000..d92e39318
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/api/users.ts
@@ -0,0 +1,64 @@
+import {
+ createServerFileRoute,
+ getRequestHeaders,
+} from "@tanstack/react-start/server"
+import { createMiddleware, json } from "@tanstack/react-start"
+import type { User } from "~/utils/users"
+
+const userLoggerMiddleware = createMiddleware({ type: `request` }).server(
+ async ({ next, _request }) => {
+ console.info(`In: /users`)
+ console.info(`Request Headers:`, getRequestHeaders())
+ const result = await next()
+ result.response.headers.set(`x-users`, `true`)
+ console.info(`Out: /users`)
+ return result
+ }
+)
+
+const testParentMiddleware = createMiddleware({ type: `request` }).server(
+ async ({ next, _request }) => {
+ console.info(`In: testParentMiddleware`)
+ const result = await next()
+ result.response.headers.set(`x-test-parent`, `true`)
+ console.info(`Out: testParentMiddleware`)
+ return result
+ }
+)
+
+const testMiddleware = createMiddleware({ type: `request` })
+ .middleware([testParentMiddleware])
+ .server(async ({ next, _request }) => {
+ console.info(`In: testMiddleware`)
+ const result = await next()
+ result.response.headers.set(`x-test`, `true`)
+
+ // if (Math.random() > 0.5) {
+ // throw new Response(null, {
+ // status: 302,
+ // headers: { Location: 'https://www.google.com' },
+ // })
+ // }
+
+ console.info(`Out: testMiddleware`)
+ return result
+ })
+
+export const ServerRoute = createServerFileRoute(`/api/users`)
+ .middleware([testMiddleware, userLoggerMiddleware, testParentMiddleware])
+ .methods({
+ GET: async ({ request }) => {
+ console.info(`GET /api/users @`, request.url)
+ console.info(`Fetching users... @`, request.url)
+ const res = await fetch(`https://jsonplaceholder.typicode.com/users`)
+ if (!res.ok) {
+ throw new Error(`Failed to fetch users`)
+ }
+
+ const data = (await res.json()) as Array
+
+ const list = data.slice(0, 10)
+
+ return json(list.map((u) => ({ id: u.id, name: u.name, email: u.email })))
+ },
+ })
diff --git a/examples/react/offline-transactions/src/routes/index.tsx b/examples/react/offline-transactions/src/routes/index.tsx
new file mode 100644
index 000000000..bb1db6612
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/index.tsx
@@ -0,0 +1,125 @@
+import { Link, createFileRoute } from "@tanstack/react-router"
+
+export const Route = createFileRoute(`/`)({
+ component: Home,
+})
+
+function Home() {
+ return (
+
+
+
+
+ TanStack Offline Transactions Demo
+
+
+ Experience offline-first development with automatic data
+ persistence, multi-tab coordination, and seamless sync when
+ connectivity returns.
+
+
+
+
+
+
+
+ 🗄️
+
+ IndexedDB Storage
+
+
+
+ Persistent offline storage with IndexedDB. Best performance and
+ reliability for offline-first applications.
+
+
+
+ High Storage Limit
+
+
+ Structured Data
+
+
+ Async API
+
+
+
+
+
+
+
+
+ 💾
+
+ localStorage Fallback
+
+
+
+ Reliable fallback storage using localStorage. Works everywhere
+ but with storage limitations.
+
+
+
+ Universal Support
+
+
+ Sync API
+
+
+ Limited Storage
+
+
+
+
+
+
+
+
+ Features Demonstrated
+
+
+
+
+ 📦 Outbox Pattern
+
+
+ Mutations are persisted before being applied, ensuring zero data
+ loss during offline periods.
+
+
+
+
+
+ 🔄 Automatic Retry
+
+
+ Failed operations are retried with exponential backoff when
+ connectivity is restored.
+
+
+
+
+
+ 👥 Multi-tab Coordination
+
+
+ Leader election ensures only one tab manages offline storage,
+ preventing conflicts.
+
+
+
+
+
+ ⚡ Optimistic Updates
+
+
+ UI updates immediately while mutations sync in the background,
+ providing snappy user experience.
+
+
+
+
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/routes/indexeddb.tsx b/examples/react/offline-transactions/src/routes/indexeddb.tsx
new file mode 100644
index 000000000..6647e7b86
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/indexeddb.tsx
@@ -0,0 +1,50 @@
+import { createFileRoute } from "@tanstack/react-router"
+import { useEffect, useState } from "react"
+import { TodoDemo } from "~/components/TodoDemo"
+import { createIndexedDBOfflineExecutor } from "~/db/todos"
+
+export const Route = createFileRoute(`/indexeddb`)({
+ component: IndexedDBDemo,
+})
+
+function IndexedDBDemo() {
+ const [offline, setOffline] = useState(null)
+
+ useEffect(() => {
+ let offlineExecutor: any
+
+ // To enable OpenTelemetry tracing, pass otel config:
+ // Jaeger:
+ // createIndexedDBOfflineExecutor({
+ // endpoint: 'http://localhost:4318/v1/traces',
+ // }).then(setOffline)
+ // Honeycomb:
+ // createIndexedDBOfflineExecutor({
+ // endpoint: 'https://api.honeycomb.io/v1/traces',
+ // headers: { 'x-honeycomb-team': 'YOUR_API_KEY' },
+ // }).then(setOffline)
+
+ createIndexedDBOfflineExecutor({
+ endpoint: `http://localhost:4318/v1/traces`,
+ }).then((executor) => {
+ offlineExecutor = executor
+ console.log({ offlineExecutor })
+ setOffline(executor)
+ })
+
+ return () => {
+ offlineExecutor?.dispose()
+ }
+ }, [])
+
+ return (
+
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/routes/localstorage.tsx b/examples/react/offline-transactions/src/routes/localstorage.tsx
new file mode 100644
index 000000000..8741d4d81
--- /dev/null
+++ b/examples/react/offline-transactions/src/routes/localstorage.tsx
@@ -0,0 +1,47 @@
+import { createFileRoute } from "@tanstack/react-router"
+import { useEffect, useState } from "react"
+import { TodoDemo } from "~/components/TodoDemo"
+import { createLocalStorageOfflineExecutor } from "~/db/todos"
+
+export const Route = createFileRoute(`/localstorage`)({
+ component: LocalStorageDemo,
+})
+
+function LocalStorageDemo() {
+ const [offline, setOffline] = useState(null)
+
+ useEffect(() => {
+ let offlineExecutor: any
+
+ // To enable OpenTelemetry tracing, pass otel config:
+ // Jaeger:
+ // createLocalStorageOfflineExecutor({
+ // endpoint: 'http://localhost:4318/v1/traces',
+ // }).then(setOffline)
+ // Honeycomb:
+ // createLocalStorageOfflineExecutor({
+ // endpoint: 'https://api.honeycomb.io/v1/traces',
+ // headers: { 'x-honeycomb-team': 'YOUR_API_KEY' },
+ // }).then(setOffline)
+
+ createLocalStorageOfflineExecutor().then((executor) => {
+ offlineExecutor = executor
+ setOffline(executor)
+ })
+
+ return () => {
+ offlineExecutor?.dispose()
+ }
+ }, [])
+
+ return (
+
+
+
+ )
+}
diff --git a/examples/react/offline-transactions/src/styles/app.css b/examples/react/offline-transactions/src/styles/app.css
new file mode 100644
index 000000000..c53c87066
--- /dev/null
+++ b/examples/react/offline-transactions/src/styles/app.css
@@ -0,0 +1,22 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+ html {
+ color-scheme: light dark;
+ }
+
+ * {
+ @apply border-gray-200 dark:border-gray-800;
+ }
+
+ html,
+ body {
+ @apply text-gray-900 bg-gray-50 dark:bg-gray-950 dark:text-gray-200;
+ }
+
+ .using-mouse * {
+ outline: none !important;
+ }
+}
diff --git a/examples/react/offline-transactions/src/utils/loggingMiddleware.tsx b/examples/react/offline-transactions/src/utils/loggingMiddleware.tsx
new file mode 100644
index 000000000..2c516283b
--- /dev/null
+++ b/examples/react/offline-transactions/src/utils/loggingMiddleware.tsx
@@ -0,0 +1,41 @@
+import { createMiddleware } from "@tanstack/react-start"
+
+const preLogMiddleware = createMiddleware({ type: `function` })
+ .client(async (ctx) => {
+ const clientTime = new Date()
+
+ return ctx.next({
+ context: {
+ clientTime,
+ },
+ sendContext: {
+ clientTime,
+ },
+ })
+ })
+ .server(async (ctx) => {
+ const serverTime = new Date()
+
+ return ctx.next({
+ sendContext: {
+ serverTime,
+ durationToServer:
+ serverTime.getTime() - ctx.context.clientTime.getTime(),
+ },
+ })
+ })
+
+export const logMiddleware = createMiddleware({ type: `function` })
+ .middleware([preLogMiddleware])
+ .client(async (ctx) => {
+ const res = await ctx.next()
+
+ const now = new Date()
+ console.log(`Client Req/Res:`, {
+ duration: now.getTime() - res.context.clientTime.getTime(),
+ durationToServer: res.context.durationToServer,
+ durationFromServer: now.getTime() - res.context.serverTime.getTime(),
+ })
+
+ return res
+ })
diff --git a/examples/react/offline-transactions/src/utils/queryClient.ts b/examples/react/offline-transactions/src/utils/queryClient.ts
new file mode 100644
index 000000000..3706eed12
--- /dev/null
+++ b/examples/react/offline-transactions/src/utils/queryClient.ts
@@ -0,0 +1,10 @@
+import { QueryClient } from "@tanstack/react-query"
+
+export const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ staleTime: 1000 * 60 * 5, // 5 minutes
+ gcTime: 1000 * 60 * 30, // 30 minutes
+ },
+ },
+})
diff --git a/examples/react/offline-transactions/src/utils/seo.ts b/examples/react/offline-transactions/src/utils/seo.ts
new file mode 100644
index 000000000..bbbdd34ad
--- /dev/null
+++ b/examples/react/offline-transactions/src/utils/seo.ts
@@ -0,0 +1,33 @@
+export const seo = ({
+ title,
+ description,
+ keywords,
+ image,
+}: {
+ title: string
+ description?: string
+ image?: string
+ keywords?: string
+}) => {
+ const tags = [
+ { title },
+ { name: `description`, content: description },
+ { name: `keywords`, content: keywords },
+ { name: `twitter:title`, content: title },
+ { name: `twitter:description`, content: description },
+ { name: `twitter:creator`, content: `@tannerlinsley` },
+ { name: `twitter:site`, content: `@tannerlinsley` },
+ { name: `og:type`, content: `website` },
+ { name: `og:title`, content: title },
+ { name: `og:description`, content: description },
+ ...(image
+ ? [
+ { name: `twitter:image`, content: image },
+ { name: `twitter:card`, content: `summary_large_image` },
+ { name: `og:image`, content: image },
+ ]
+ : []),
+ ]
+
+ return tags
+}
diff --git a/examples/react/offline-transactions/src/utils/todos.ts b/examples/react/offline-transactions/src/utils/todos.ts
new file mode 100644
index 000000000..935a7f565
--- /dev/null
+++ b/examples/react/offline-transactions/src/utils/todos.ts
@@ -0,0 +1,92 @@
+export interface Todo {
+ id: string
+ text: string
+ completed: boolean
+ createdAt: Date
+ updatedAt: Date
+}
+
+export interface TodoInput {
+ text: string
+ completed?: boolean
+}
+
+export interface TodoUpdate {
+ text?: string
+ completed?: boolean
+}
+
+// In-memory storage for the demo
+const todosStore = new Map()
+
+// Helper function to generate IDs
+function generateId(): string {
+ return Math.random().toString(36).substring(2) + Date.now().toString(36)
+}
+
+export const todoService = {
+ getAll(): Array {
+ return Array.from(todosStore.values()).sort(
+ (a, b) =>
+ new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()
+ )
+ },
+
+ getById(id: string): Todo | undefined {
+ return todosStore.get(id)
+ },
+
+ create(input: TodoInput): Todo {
+ const now = new Date()
+ const todo: Todo = {
+ id: generateId(),
+ text: input.text,
+ completed: input.completed ?? false,
+ createdAt: now,
+ updatedAt: now,
+ }
+ todosStore.set(todo.id, todo)
+ return todo
+ },
+
+ update(id: string, updates: TodoUpdate): Todo | null {
+ const existing = todosStore.get(id)
+ if (!existing) {
+ return null
+ }
+
+ const updated: Todo = {
+ ...existing,
+ ...updates,
+ updatedAt: new Date(),
+ }
+ todosStore.set(id, updated)
+ return updated
+ },
+
+ delete(id: string): boolean {
+ return todosStore.delete(id)
+ },
+
+ clear(): void {
+ todosStore.clear()
+ },
+
+ // For demo purposes - simulate network delays
+ async withDelay(fn: () => T, delay = 500): Promise {
+ await new Promise((resolve) => setTimeout(resolve, delay))
+ return fn()
+ },
+
+ // For demo purposes - simulate random failures
+ simulateFailure(probability = 0.2): void {
+ if (Math.random() < probability) {
+ throw new Error(`Simulated network failure`)
+ }
+ },
+}
+
+// Add some initial data for demo
+todoService.create({ text: `Learn TanStack DB` })
+todoService.create({ text: `Build offline-first app` })
+todoService.create({ text: `Test multi-tab coordination`, completed: true })
diff --git a/examples/react/offline-transactions/tailwind.config.mjs b/examples/react/offline-transactions/tailwind.config.mjs
new file mode 100644
index 000000000..6765f75b2
--- /dev/null
+++ b/examples/react/offline-transactions/tailwind.config.mjs
@@ -0,0 +1,4 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["./src/**/*.{js,jsx,ts,tsx}"],
+}
diff --git a/examples/react/offline-transactions/tsconfig.json b/examples/react/offline-transactions/tsconfig.json
new file mode 100644
index 000000000..3a9fb7cd7
--- /dev/null
+++ b/examples/react/offline-transactions/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "include": ["**/*.ts", "**/*.tsx"],
+ "compilerOptions": {
+ "strict": true,
+ "esModuleInterop": true,
+ "jsx": "react-jsx",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "lib": ["DOM", "DOM.Iterable", "ES2022"],
+ "isolatedModules": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "target": "ES2022",
+ "allowJs": true,
+ "forceConsistentCasingInFileNames": true,
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["./src/*"]
+ },
+ "noEmit": true
+ }
+}
diff --git a/examples/react/offline-transactions/vite.config.ts b/examples/react/offline-transactions/vite.config.ts
new file mode 100644
index 000000000..f730c1bf5
--- /dev/null
+++ b/examples/react/offline-transactions/vite.config.ts
@@ -0,0 +1,78 @@
+import path from "node:path"
+import { tanstackStart } from "@tanstack/react-start/plugin/vite"
+import { defineConfig } from "vite"
+import tsConfigPaths from "vite-tsconfig-paths"
+import viteReact from "@vitejs/plugin-react"
+import chokidar from "chokidar"
+
+function watchWorkspacePackages() {
+ return {
+ name: `watch-workspace-packages`,
+ configureServer(server: any) {
+ const watchPaths = [
+ path.resolve(__dirname, `../../../packages/db/dist`),
+ path.resolve(__dirname, `../../../packages/offline-transactions/dist`),
+ ]
+
+ console.log(`[watch-workspace] Starting to watch paths:`)
+ watchPaths.forEach((p) => console.log(` - ${p}`))
+ console.log(`[watch-workspace] Current directory: ${__dirname}`)
+ console.log(`[watch-workspace] Resolved paths:`)
+ watchPaths.forEach((p) => console.log(` - ${path.resolve(p)}`))
+
+ const watcher = chokidar.watch(watchPaths, {
+ ignored: /node_modules/,
+ persistent: true,
+ })
+
+ watcher.on(`ready`, () => {
+ console.log(
+ `[watch-workspace] Initial scan complete. Watching for changes...`
+ )
+ const watchedPaths = watcher.getWatched()
+ console.log(`[watch-workspace] Currently watching:`, watchedPaths)
+ })
+
+ watcher.on(`add`, (filePath) => {
+ console.log(`[watch-workspace] File added: ${filePath}`)
+ server.ws.send({
+ type: `full-reload`,
+ })
+ })
+
+ watcher.on(`change`, (filePath) => {
+ console.log(`[watch-workspace] File changed: ${filePath}`)
+ server.ws.send({
+ type: `full-reload`,
+ })
+ })
+
+ watcher.on(`error`, (error) => {
+ console.error(`[watch-workspace] Watcher error:`, error)
+ })
+ },
+ }
+}
+
+export default defineConfig({
+ server: {
+ port: 3000,
+ watch: {
+ ignored: [`!**/node_modules/@tanstack/**`],
+ },
+ },
+ optimizeDeps: {
+ exclude: [`@tanstack/db`, `@tanstack/offline-transactions`],
+ },
+ plugins: [
+ watchWorkspacePackages(),
+ tsConfigPaths({
+ projects: [`./tsconfig.json`],
+ }),
+ tanstackStart({
+ customViteReactPlugin: true,
+ mode: `spa`, // SPA mode for client-side only offline features
+ }),
+ viteReact(),
+ ],
+})
diff --git a/examples/react/projects/package.json b/examples/react/projects/package.json
index c042a34e4..1d96e2aef 100644
--- a/examples/react/projects/package.json
+++ b/examples/react/projects/package.json
@@ -17,8 +17,8 @@
"dependencies": {
"@tailwindcss/vite": "^4.1.13",
"@tanstack/query-core": "^5.90.2",
- "@tanstack/query-db-collection": "^0.2.24",
- "@tanstack/react-db": "^0.1.25",
+ "@tanstack/query-db-collection": "workspace:*",
+ "@tanstack/react-db": "workspace:*",
"@tanstack/react-router": "^1.132.25",
"@tanstack/react-router-devtools": "^1.132.25",
"@tanstack/react-router-with-query": "^1.130.17",
diff --git a/examples/react/todo/src/routes/electric.tsx b/examples/react/todo/src/routes/electric.tsx
index 8d4f068f6..70b8816b7 100644
--- a/examples/react/todo/src/routes/electric.tsx
+++ b/examples/react/todo/src/routes/electric.tsx
@@ -1,3 +1,4 @@
+import * as React from "react"
import { createFileRoute } from "@tanstack/react-router"
import { useLiveQuery } from "@tanstack/react-db"
import {
diff --git a/examples/react/todo/src/routes/index.tsx b/examples/react/todo/src/routes/index.tsx
index 37a2a8798..0986beb69 100644
--- a/examples/react/todo/src/routes/index.tsx
+++ b/examples/react/todo/src/routes/index.tsx
@@ -1,3 +1,4 @@
+import * as React from "react"
import { Link, createFileRoute } from "@tanstack/react-router"
export const Route = createFileRoute(`/`)({
diff --git a/examples/react/todo/src/routes/query.tsx b/examples/react/todo/src/routes/query.tsx
index 129ab0cd4..52fe370b1 100644
--- a/examples/react/todo/src/routes/query.tsx
+++ b/examples/react/todo/src/routes/query.tsx
@@ -1,3 +1,4 @@
+import * as React from "react"
import { createFileRoute } from "@tanstack/react-router"
import { useLiveQuery } from "@tanstack/react-db"
import { queryConfigCollection, queryTodoCollection } from "../lib/collections"
diff --git a/examples/react/todo/src/routes/trailbase.tsx b/examples/react/todo/src/routes/trailbase.tsx
index 4ed7458f7..0df1ea677 100644
--- a/examples/react/todo/src/routes/trailbase.tsx
+++ b/examples/react/todo/src/routes/trailbase.tsx
@@ -1,3 +1,4 @@
+import * as React from "react"
import { createFileRoute } from "@tanstack/react-router"
import { useLiveQuery } from "@tanstack/react-db"
import {
diff --git a/examples/solid/todo/package.json b/examples/solid/todo/package.json
index 7d97d9fd9..052f9ed73 100644
--- a/examples/solid/todo/package.json
+++ b/examples/solid/todo/package.json
@@ -5,7 +5,7 @@
"dependencies": {
"@tanstack/electric-db-collection": "^0.1.25",
"@tanstack/query-core": "^5.90.2",
- "@tanstack/query-db-collection": "^0.2.22",
+ "@tanstack/query-db-collection": "workspace:*",
"@tanstack/solid-db": "^0.1.23",
"@tanstack/solid-router": "^1.132.25",
"@tanstack/solid-start": "^1.132.25",
@@ -37,7 +37,7 @@
"pg": "^8.16.3",
"tsx": "^4.20.6",
"typescript": "^5.9.2",
- "vite": "^6.3.6",
+ "vite": "^7.1.7",
"vite-plugin-solid": "^2.11.8"
},
"scripts": {
diff --git a/package.json b/package.json
index 863a4ff68..e2a1b6727 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
"@types/use-sync-external-store": "^1.5.0",
"@typescript-eslint/eslint-plugin": "^8.45.0",
"@typescript-eslint/parser": "^8.45.0",
- "@vitejs/plugin-react": "^4.7.0",
+ "@vitejs/plugin-react": "^5.0.3",
"eslint": "^9.36.0",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.4",
@@ -51,7 +51,7 @@
"shx": "^0.4.0",
"tinyglobby": "^0.2.15",
"typescript": "^5.9.2",
- "vite": "^6.3.6",
+ "vite": "^7.1.7",
"vitest": "^3.2.4",
"zod": "^3.25.76"
},
@@ -59,5 +59,24 @@
"*.{ts,tsx}": [
"eslint --fix"
]
+ },
+ "workspaces": [
+ "packages/*",
+ "examples/*",
+ "examples/react/*"
+ ],
+ "overrides": {
+ "@tanstack/db": "workspace:*",
+ "@tanstack/db-ivm": "workspace:*",
+ "@tanstack/react-db": "workspace:*",
+ "@tanstack/vue-db": "workspace:*"
+ },
+ "pnpm": {
+ "overrides": {
+ "@tanstack/db": "workspace:*",
+ "@tanstack/query-db-collection": "workspace:*",
+ "@tanstack/react-db": "workspace:*",
+ "@tanstack/offline-transactions": "workspace:*"
+ }
}
}
diff --git a/packages/offline-transactions/README.md b/packages/offline-transactions/README.md
new file mode 100644
index 000000000..635e19627
--- /dev/null
+++ b/packages/offline-transactions/README.md
@@ -0,0 +1,219 @@
+# @tanstack/offline-transactions
+
+Offline-first transaction capabilities for TanStack DB that provides durable persistence of mutations with automatic retry when connectivity is restored.
+
+## Features
+
+- **Outbox Pattern**: Persist mutations before dispatch for zero data loss
+- **Automatic Retry**: Exponential backoff with jitter for failed transactions
+- **Multi-tab Coordination**: Leader election ensures safe storage access
+- **FIFO Sequential Processing**: Transactions execute one at a time in creation order
+- **Flexible Storage**: IndexedDB with localStorage fallback
+- **Type Safe**: Full TypeScript support with TanStack DB integration
+
+## Installation
+
+```bash
+npm install @tanstack/offline-transactions
+```
+
+## Quick Start
+
+```typescript
+import { startOfflineExecutor } from "@tanstack/offline-transactions"
+
+// Setup offline executor
+const offline = startOfflineExecutor({
+ collections: { todos: todoCollection },
+ mutationFns: {
+ syncTodos: async ({ transaction, idempotencyKey }) => {
+ await api.saveBatch(transaction.mutations, { idempotencyKey })
+ },
+ },
+ onLeadershipChange: (isLeader) => {
+ if (!isLeader) {
+ console.warn("Running in online-only mode (another tab is the leader)")
+ }
+ },
+})
+
+// Create offline transactions
+const offlineTx = offline.createOfflineTransaction({
+ mutationFnName: "syncTodos",
+ autoCommit: false,
+})
+
+offlineTx.mutate(() => {
+ todoCollection.insert({
+ id: crypto.randomUUID(),
+ text: "Buy milk",
+ completed: false,
+ })
+})
+
+// Execute with automatic offline support
+await offlineTx.commit()
+```
+
+## Core Concepts
+
+### Outbox-First Persistence
+
+Mutations are persisted to a durable outbox before being applied, ensuring zero data loss during offline periods:
+
+1. Mutation is persisted to IndexedDB/localStorage
+2. Optimistic update is applied locally
+3. When online, mutation is sent to server
+4. On success, mutation is removed from outbox
+
+### Multi-tab Coordination
+
+Only one tab acts as the "leader" to safely manage the outbox:
+
+- **Leader tab**: Full offline support with outbox persistence
+- **Non-leader tabs**: Online-only mode for safety
+- **Leadership transfer**: Automatic failover when leader tab closes
+
+### FIFO Sequential Processing
+
+Transactions are processed one at a time in the order they were created:
+
+- **Sequential execution**: All transactions execute in FIFO order
+- **Dependency safety**: Avoids conflicts between transactions that may reference each other
+- **Predictable behavior**: Transactions complete in the exact order they were created
+
+## API Reference
+
+### startOfflineExecutor(config)
+
+Creates and starts an offline executor instance.
+
+```typescript
+interface OfflineConfig {
+ collections: Record
+ mutationFns: Record
+ storage?: StorageAdapter
+ maxConcurrency?: number
+ jitter?: boolean
+ beforeRetry?: (transactions: OfflineTransaction[]) => OfflineTransaction[]
+ onUnknownMutationFn?: (name: string, tx: OfflineTransaction) => void
+ onLeadershipChange?: (isLeader: boolean) => void
+}
+```
+
+### OfflineExecutor
+
+#### Properties
+
+- `isOfflineEnabled: boolean` - Whether this tab can persist offline transactions
+
+#### Methods
+
+- `createOfflineTransaction(options)` - Create a manual offline transaction
+- `waitForTransactionCompletion(id)` - Wait for a specific transaction to complete
+- `removeFromOutbox(id)` - Manually remove transaction from outbox
+- `peekOutbox()` - View all pending transactions
+- `notifyOnline()` - Manually trigger retry execution
+- `dispose()` - Clean up resources
+
+### Error Handling
+
+Use `NonRetriableError` for permanent failures:
+
+```typescript
+import { NonRetriableError } from "@tanstack/offline-transactions"
+
+const mutationFn = async ({ transaction }) => {
+ try {
+ await api.save(transaction.mutations)
+ } catch (error) {
+ if (error.status === 422) {
+ throw new NonRetriableError("Invalid data - will not retry")
+ }
+ throw error // Will retry with backoff
+ }
+}
+```
+
+## Advanced Usage
+
+### Custom Storage Adapter
+
+```typescript
+import {
+ IndexedDBAdapter,
+ LocalStorageAdapter,
+} from "@tanstack/offline-transactions"
+
+const executor = startOfflineExecutor({
+ // Use custom storage
+ storage: new IndexedDBAdapter("my-app", "transactions"),
+ // ... other config
+})
+```
+
+### Custom Retry Policy
+
+```typescript
+const executor = startOfflineExecutor({
+ maxConcurrency: 5,
+ jitter: true,
+ beforeRetry: (transactions) => {
+ // Filter out old transactions
+ const cutoff = Date.now() - 24 * 60 * 60 * 1000 // 24 hours
+ return transactions.filter((tx) => tx.createdAt.getTime() > cutoff)
+ },
+ // ... other config
+})
+```
+
+### Manual Transaction Control
+
+```typescript
+const tx = executor.createOfflineTransaction({
+ mutationFnName: "syncData",
+ autoCommit: false,
+})
+
+tx.mutate(() => {
+ collection.insert({ id: "1", text: "Item 1" })
+ collection.insert({ id: "2", text: "Item 2" })
+})
+
+// Commit when ready
+await tx.commit()
+```
+
+## Migration from TanStack DB
+
+This package uses explicit offline transactions to provide offline capabilities:
+
+```typescript
+// Before: Standard TanStack DB (online only)
+todoCollection.insert({ id: "1", text: "Buy milk" })
+
+// After: Explicit offline transactions
+const offline = startOfflineExecutor({
+ collections: { todos: todoCollection },
+ mutationFns: {
+ syncTodos: async ({ transaction }) => {
+ await api.sync(transaction.mutations)
+ },
+ },
+})
+
+const tx = offline.createOfflineTransaction({ mutationFnName: "syncTodos" })
+tx.mutate(() => todoCollection.insert({ id: "1", text: "Buy milk" }))
+await tx.commit() // Works offline!
+```
+
+## Browser Support
+
+- **IndexedDB**: Modern browsers (primary storage)
+- **localStorage**: Fallback for limited environments
+- **Web Locks API**: Chrome 69+, Firefox 96+ (preferred leader election)
+- **BroadcastChannel**: All modern browsers (fallback leader election)
+
+## License
+
+MIT
diff --git a/packages/offline-transactions/package.json b/packages/offline-transactions/package.json
new file mode 100644
index 000000000..36e200f32
--- /dev/null
+++ b/packages/offline-transactions/package.json
@@ -0,0 +1,66 @@
+{
+ "name": "@tanstack/offline-transactions",
+ "version": "0.0.0",
+ "description": "Offline-first transaction capabilities for TanStack DB",
+ "author": "TanStack",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/TanStack/db.git",
+ "directory": "packages/offline-transactions"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "keywords": [
+ "tanstack",
+ "database",
+ "offline",
+ "transactions",
+ "persistence",
+ "sync"
+ ],
+ "type": "module",
+ "sideEffects": false,
+ "exports": {
+ ".": {
+ "import": {
+ "types": "./dist/esm/index.d.ts",
+ "default": "./dist/esm/index.js"
+ },
+ "require": {
+ "types": "./dist/cjs/index.d.cts",
+ "default": "./dist/cjs/index.cjs"
+ }
+ },
+ "./package.json": "./package.json"
+ },
+ "main": "dist/cjs/index.cjs",
+ "module": "dist/esm/index.js",
+ "types": "dist/esm/index.d.ts",
+ "files": [
+ "dist",
+ "src"
+ ],
+ "scripts": {
+ "build": "vite build",
+ "dev": "vite build --watch",
+ "test": "vitest",
+ "test:watch": "vitest --watch",
+ "typecheck": "tsc --noEmit",
+ "lint": "eslint src"
+ },
+ "dependencies": {
+ "@opentelemetry/api": "^1.9.0",
+ "@tanstack/db": "workspace:*"
+ },
+ "devDependencies": {
+ "@types/node": "^20.0.0",
+ "eslint": "^8.57.0",
+ "typescript": "^5.5.4",
+ "vitest": "^3.2.4"
+ },
+ "peerDependencies": {
+ "@tanstack/db": "workspace:*"
+ }
+}
diff --git a/packages/offline-transactions/src/OfflineExecutor.ts b/packages/offline-transactions/src/OfflineExecutor.ts
new file mode 100644
index 000000000..95722b752
--- /dev/null
+++ b/packages/offline-transactions/src/OfflineExecutor.ts
@@ -0,0 +1,360 @@
+// Storage adapters
+import { createOptimisticAction, createTransaction } from "@tanstack/db"
+import { IndexedDBAdapter } from "./storage/IndexedDBAdapter"
+import { LocalStorageAdapter } from "./storage/LocalStorageAdapter"
+
+// Core components
+import { OutboxManager } from "./outbox/OutboxManager"
+import { KeyScheduler } from "./executor/KeyScheduler"
+import { TransactionExecutor } from "./executor/TransactionExecutor"
+
+// Coordination
+import { WebLocksLeader } from "./coordination/WebLocksLeader"
+import { BroadcastChannelLeader } from "./coordination/BroadcastChannelLeader"
+
+// Connectivity
+import { DefaultOnlineDetector } from "./connectivity/OnlineDetector"
+
+// API
+import { OfflineTransaction as OfflineTransactionAPI } from "./api/OfflineTransaction"
+import { createOfflineAction } from "./api/OfflineAction"
+
+// TanStack DB primitives
+
+// Replay
+import { withNestedSpan, withSpan } from "./telemetry/tracer"
+import type {
+ CreateOfflineActionOptions,
+ CreateOfflineTransactionOptions,
+ LeaderElection,
+ OfflineConfig,
+ OfflineTransaction,
+ StorageAdapter,
+} from "./types"
+import type { Transaction } from "@tanstack/db"
+
+export class OfflineExecutor {
+ private config: OfflineConfig
+ private storage: StorageAdapter
+ private outbox: OutboxManager
+ private scheduler: KeyScheduler
+ private executor: TransactionExecutor
+ private leaderElection: LeaderElection
+ private onlineDetector: DefaultOnlineDetector
+ private isLeaderState = false
+ private unsubscribeOnline: (() => void) | null = null
+ private unsubscribeLeadership: (() => void) | null = null
+
+ // Coordination mechanism for blocking transactions
+ private pendingTransactionPromises: Map<
+ string,
+ {
+ promise: Promise
+ resolve: (result: any) => void
+ reject: (error: Error) => void
+ }
+ > = new Map()
+
+ constructor(config: OfflineConfig) {
+ this.config = config
+ this.storage = this.createStorage()
+ this.outbox = new OutboxManager(this.storage, this.config.collections)
+ this.scheduler = new KeyScheduler()
+ this.executor = new TransactionExecutor(
+ this.scheduler,
+ this.outbox,
+ this.config,
+ this
+ )
+ this.leaderElection = this.createLeaderElection()
+ this.onlineDetector = new DefaultOnlineDetector()
+
+ this.setupEventListeners()
+ this.initialize()
+ }
+
+ private createStorage(): StorageAdapter {
+ if (this.config.storage) {
+ return this.config.storage
+ }
+
+ try {
+ return new IndexedDBAdapter()
+ } catch (error) {
+ console.warn(
+ `IndexedDB not available, falling back to localStorage:`,
+ error
+ )
+ return new LocalStorageAdapter()
+ }
+ }
+
+ private createLeaderElection(): LeaderElection {
+ if (this.config.leaderElection) {
+ return this.config.leaderElection
+ }
+
+ if (WebLocksLeader.isSupported()) {
+ return new WebLocksLeader()
+ } else if (BroadcastChannelLeader.isSupported()) {
+ return new BroadcastChannelLeader()
+ } else {
+ // Fallback: always be leader in environments without multi-tab support
+ return {
+ requestLeadership: () => Promise.resolve(true),
+ releaseLeadership: () => {},
+ isLeader: () => true,
+ onLeadershipChange: () => () => {},
+ }
+ }
+ }
+
+ private setupEventListeners(): void {
+ this.unsubscribeLeadership = this.leaderElection.onLeadershipChange(
+ (isLeader) => {
+ this.isLeaderState = isLeader
+
+ if (this.config.onLeadershipChange) {
+ this.config.onLeadershipChange(isLeader)
+ }
+
+ if (isLeader) {
+ this.loadAndReplayTransactions()
+ }
+ }
+ )
+
+ this.unsubscribeOnline = this.onlineDetector.subscribe(() => {
+ if (this.isOfflineEnabled) {
+ // Reset retry delays so transactions can execute immediately when back online
+ this.executor.resetRetryDelays()
+ this.executor.executeAll().catch((error) => {
+ console.warn(
+ `Failed to execute transactions on connectivity change:`,
+ error
+ )
+ })
+ }
+ })
+ }
+
+ private async initialize(): Promise {
+ return withSpan(`executor.initialize`, {}, async (span) => {
+ try {
+ const isLeader = await this.leaderElection.requestLeadership()
+ span.setAttribute(`isLeader`, isLeader)
+
+ if (isLeader) {
+ await this.loadAndReplayTransactions()
+ }
+ } catch (error) {
+ console.warn(`Failed to initialize offline executor:`, error)
+ }
+ })
+ }
+
+ private async loadAndReplayTransactions(): Promise {
+ try {
+ await this.executor.loadPendingTransactions()
+ await this.executor.executeAll()
+ } catch (error) {
+ console.warn(`Failed to load and replay transactions:`, error)
+ }
+ }
+
+ get isOfflineEnabled(): boolean {
+ return this.isLeaderState
+ }
+
+ createOfflineTransaction(
+ options: CreateOfflineTransactionOptions
+ ): Transaction | OfflineTransactionAPI {
+ const mutationFn = this.config.mutationFns[options.mutationFnName]
+
+ if (!mutationFn) {
+ throw new Error(`Unknown mutation function: ${options.mutationFnName}`)
+ }
+
+ // Check leadership immediately and use the appropriate primitive
+ if (!this.isOfflineEnabled) {
+ // Non-leader: use createTransaction directly with the resolved mutation function
+ // We need to wrap it to add the idempotency key
+ return createTransaction({
+ autoCommit: options.autoCommit ?? true,
+ mutationFn: (params) =>
+ mutationFn({
+ ...params,
+ idempotencyKey: options.idempotencyKey || crypto.randomUUID(),
+ }),
+ metadata: options.metadata,
+ })
+ }
+
+ // Leader: use OfflineTransaction wrapper for offline persistence
+ return new OfflineTransactionAPI(
+ options,
+ mutationFn,
+ this.persistTransaction.bind(this),
+ this
+ )
+ }
+
+ createOfflineAction(options: CreateOfflineActionOptions) {
+ const mutationFn = this.config.mutationFns[options.mutationFnName]
+
+ if (!mutationFn) {
+ throw new Error(`Unknown mutation function: ${options.mutationFnName}`)
+ }
+
+ // Return a wrapper that checks leadership status at call time
+ return (variables: T) => {
+ // Check leadership when action is called, not when it's created
+ if (!this.isOfflineEnabled) {
+ // Non-leader: use createOptimisticAction directly
+ const action = createOptimisticAction({
+ mutationFn: (vars, params) =>
+ mutationFn({
+ ...vars,
+ ...params,
+ idempotencyKey: crypto.randomUUID(),
+ }),
+ onMutate: options.onMutate,
+ })
+ return action(variables)
+ }
+
+ // Leader: use the offline action wrapper
+ const action = createOfflineAction(
+ options,
+ mutationFn,
+ this.persistTransaction.bind(this),
+ this
+ )
+ return action(variables)
+ }
+ }
+
+ private async persistTransaction(
+ transaction: OfflineTransaction
+ ): Promise {
+ return withNestedSpan(
+ `executor.persistTransaction`,
+ {
+ "transaction.id": transaction.id,
+ "transaction.mutationFnName": transaction.mutationFnName,
+ },
+ async (span) => {
+ if (!this.isOfflineEnabled) {
+ span.setAttribute(`result`, `skipped_not_leader`)
+ this.resolveTransaction(transaction.id, undefined)
+ return
+ }
+
+ try {
+ await this.outbox.add(transaction)
+ await this.executor.execute(transaction)
+ span.setAttribute(`result`, `persisted`)
+ } catch (error) {
+ console.error(
+ `Failed to persist offline transaction ${transaction.id}:`,
+ error
+ )
+ span.setAttribute(`result`, `failed`)
+ throw error
+ }
+ }
+ )
+ }
+
+ // Method for OfflineTransaction to wait for completion
+ async waitForTransactionCompletion(transactionId: string): Promise {
+ const existing = this.pendingTransactionPromises.get(transactionId)
+ if (existing) {
+ return existing.promise
+ }
+
+ const deferred: {
+ promise: Promise
+ resolve: (result: any) => void
+ reject: (error: Error) => void
+ } = {} as any
+
+ deferred.promise = new Promise((resolve, reject) => {
+ deferred.resolve = resolve
+ deferred.reject = reject
+ })
+
+ this.pendingTransactionPromises.set(transactionId, deferred)
+ return deferred.promise
+ }
+
+ // Method for TransactionExecutor to signal completion
+ resolveTransaction(transactionId: string, result: any): void {
+ const deferred = this.pendingTransactionPromises.get(transactionId)
+ if (deferred) {
+ deferred.resolve(result)
+ this.pendingTransactionPromises.delete(transactionId)
+ }
+ }
+
+ // Method for TransactionExecutor to signal failure
+ rejectTransaction(transactionId: string, error: Error): void {
+ const deferred = this.pendingTransactionPromises.get(transactionId)
+ if (deferred) {
+ deferred.reject(error)
+ this.pendingTransactionPromises.delete(transactionId)
+ }
+ }
+
+ async removeFromOutbox(id: string): Promise {
+ await this.outbox.remove(id)
+ }
+
+ async peekOutbox(): Promise> {
+ return this.outbox.getAll()
+ }
+
+ async clearOutbox(): Promise {
+ await this.outbox.clear()
+ this.executor.clear()
+ }
+
+ notifyOnline(): void {
+ this.onlineDetector.notifyOnline()
+ }
+
+ getPendingCount(): number {
+ return this.executor.getPendingCount()
+ }
+
+ getRunningCount(): number {
+ return this.executor.getRunningCount()
+ }
+
+ getOnlineDetector(): DefaultOnlineDetector {
+ return this.onlineDetector
+ }
+
+ dispose(): void {
+ if (this.unsubscribeOnline) {
+ this.unsubscribeOnline()
+ this.unsubscribeOnline = null
+ }
+
+ if (this.unsubscribeLeadership) {
+ this.unsubscribeLeadership()
+ this.unsubscribeLeadership = null
+ }
+
+ this.leaderElection.releaseLeadership()
+ this.onlineDetector.dispose()
+
+ if (`dispose` in this.leaderElection) {
+ ;(this.leaderElection as any).dispose()
+ }
+ }
+}
+
+export function startOfflineExecutor(config: OfflineConfig): OfflineExecutor {
+ return new OfflineExecutor(config)
+}
diff --git a/packages/offline-transactions/src/api/OfflineAction.ts b/packages/offline-transactions/src/api/OfflineAction.ts
new file mode 100644
index 000000000..7bd420958
--- /dev/null
+++ b/packages/offline-transactions/src/api/OfflineAction.ts
@@ -0,0 +1,68 @@
+import { SpanStatusCode, context, trace } from "@opentelemetry/api"
+import { OfflineTransaction } from "./OfflineTransaction"
+import type { Transaction } from "@tanstack/db"
+import type {
+ CreateOfflineActionOptions,
+ OfflineMutationFn,
+ OfflineTransaction as OfflineTransactionType,
+} from "../types"
+
+export function createOfflineAction(
+ options: CreateOfflineActionOptions,
+ mutationFn: OfflineMutationFn,
+ persistTransaction: (tx: OfflineTransactionType) => Promise,
+ executor: any
+): (variables: T) => Transaction {
+ const { mutationFnName, onMutate } = options
+ console.log(`createOfflineAction 2`, options)
+
+ return (variables: T): Transaction => {
+ const offlineTransaction = new OfflineTransaction(
+ {
+ mutationFnName,
+ autoCommit: false,
+ },
+ mutationFn,
+ persistTransaction,
+ executor
+ )
+
+ const transaction = offlineTransaction.mutate(() => {
+ console.log(`mutate`)
+ onMutate(variables)
+ })
+
+ // Immediately commit with span instrumentation
+ const tracer = trace.getTracer(`@tanstack/offline-transactions`, `0.0.1`)
+ const span = tracer.startSpan(`offlineAction.${mutationFnName}`)
+ const ctx = trace.setSpan(context.active(), span)
+ console.log(`starting offlineAction span`, { tracer, span, ctx })
+
+ // Execute the commit within the span context
+ // The key is to return the promise synchronously from context.with() so context binds to it
+ const commitPromise = context.with(ctx, () => {
+ // Return the promise synchronously - this is critical for context propagation in browsers
+ return (async () => {
+ try {
+ await transaction.commit()
+ span.setStatus({ code: SpanStatusCode.OK })
+ span.end()
+ console.log(`ended offlineAction span - success`)
+ } catch (error) {
+ span.recordException(error as Error)
+ span.setStatus({ code: SpanStatusCode.ERROR })
+ span.end()
+ console.log(`ended offlineAction span - error`)
+ }
+ })()
+ })
+
+ // Don't await - this is fire-and-forget for optimistic actions
+ // But catch to prevent unhandled rejection
+ commitPromise.catch(() => {
+ // Already handled in try/catch above
+ })
+
+ return transaction
+ }
+}
diff --git a/packages/offline-transactions/src/api/OfflineTransaction.ts b/packages/offline-transactions/src/api/OfflineTransaction.ts
new file mode 100644
index 000000000..25f4ca18a
--- /dev/null
+++ b/packages/offline-transactions/src/api/OfflineTransaction.ts
@@ -0,0 +1,134 @@
+import { context, trace } from "@opentelemetry/api"
+import { createTransaction } from "@tanstack/db"
+import { NonRetriableError } from "../types"
+import type { PendingMutation, Transaction } from "@tanstack/db"
+import type {
+ CreateOfflineTransactionOptions,
+ OfflineMutationFn,
+ OfflineTransaction as OfflineTransactionType,
+} from "../types"
+
+export class OfflineTransaction {
+ private offlineId: string
+ private mutationFnName: string
+ private autoCommit: boolean
+ private idempotencyKey: string
+ private metadata: Record
+ private transaction: Transaction | null = null
+ private persistTransaction: (tx: OfflineTransactionType) => Promise
+ private executor: any // Will be typed properly - reference to OfflineExecutor
+
+ constructor(
+ options: CreateOfflineTransactionOptions,
+ mutationFn: OfflineMutationFn,
+ persistTransaction: (tx: OfflineTransactionType) => Promise,
+ executor: any
+ ) {
+ this.offlineId = crypto.randomUUID()
+ this.mutationFnName = options.mutationFnName
+ this.autoCommit = options.autoCommit ?? true
+ this.idempotencyKey = options.idempotencyKey ?? crypto.randomUUID()
+ this.metadata = options.metadata ?? {}
+ this.persistTransaction = persistTransaction
+ this.executor = executor
+ }
+
+ mutate(callback: () => void): Transaction {
+ this.transaction = createTransaction({
+ id: this.offlineId,
+ autoCommit: false,
+ mutationFn: async () => {
+ // This is the blocking mutationFn that waits for the executor
+ // First persist the transaction to the outbox
+ const activeSpan = trace.getSpan(context.active())
+ const spanContext = activeSpan?.spanContext()
+
+ const offlineTransaction: OfflineTransactionType = {
+ id: this.offlineId,
+ mutationFnName: this.mutationFnName,
+ mutations: this.transaction!.mutations,
+ keys: this.extractKeys(this.transaction!.mutations),
+ idempotencyKey: this.idempotencyKey,
+ createdAt: new Date(),
+ retryCount: 0,
+ nextAttemptAt: Date.now(),
+ metadata: this.metadata,
+ spanContext: spanContext
+ ? {
+ traceId: spanContext.traceId,
+ spanId: spanContext.spanId,
+ traceFlags: spanContext.traceFlags,
+ traceState: spanContext.traceState?.serialize(),
+ }
+ : undefined,
+ version: 1,
+ }
+
+ const completionPromise = this.executor.waitForTransactionCompletion(
+ this.offlineId
+ )
+
+ try {
+ await this.persistTransaction(offlineTransaction)
+ // Now block and wait for the executor to complete the real mutation
+ await completionPromise
+ } catch (error) {
+ const normalizedError =
+ error instanceof Error ? error : new Error(String(error))
+ this.executor.rejectTransaction(this.offlineId, normalizedError)
+ throw error
+ }
+
+ return
+ },
+ metadata: this.metadata,
+ })
+
+ this.transaction.mutate(() => {
+ callback()
+ })
+
+ if (this.autoCommit) {
+ // Auto-commit for direct OfflineTransaction usage
+ this.commit().catch((error) => {
+ console.error(`Auto-commit failed:`, error)
+ throw error
+ })
+ }
+
+ return this.transaction
+ }
+
+ async commit(): Promise {
+ if (!this.transaction) {
+ throw new Error(`No mutations to commit. Call mutate() first.`)
+ }
+
+ try {
+ // Commit the TanStack DB transaction
+ // This will trigger the mutationFn which handles persistence and waiting
+ await this.transaction.commit()
+ return this.transaction
+ } catch (error) {
+ // Only rollback for NonRetriableError - other errors should allow retry
+ if (error instanceof NonRetriableError) {
+ this.transaction.rollback()
+ }
+ throw error
+ }
+ }
+
+ rollback(): void {
+ if (this.transaction) {
+ this.transaction.rollback()
+ }
+ }
+
+ private extractKeys(mutations: Array): Array {
+ return mutations.map((mutation) => mutation.globalKey)
+ }
+
+ get id(): string {
+ return this.offlineId
+ }
+}
diff --git a/packages/offline-transactions/src/connectivity/OnlineDetector.ts b/packages/offline-transactions/src/connectivity/OnlineDetector.ts
new file mode 100644
index 000000000..caef3a596
--- /dev/null
+++ b/packages/offline-transactions/src/connectivity/OnlineDetector.ts
@@ -0,0 +1,87 @@
+import type { OnlineDetector } from "../types"
+
+export class DefaultOnlineDetector implements OnlineDetector {
+ private listeners: Set<() => void> = new Set()
+ private isListening = false
+
+ constructor() {
+ this.startListening()
+ }
+
+ private startListening(): void {
+ if (this.isListening) {
+ return
+ }
+
+ this.isListening = true
+
+ if (typeof window !== `undefined`) {
+ window.addEventListener(`online`, this.handleOnline)
+ document.addEventListener(`visibilitychange`, this.handleVisibilityChange)
+ }
+ }
+
+ private stopListening(): void {
+ if (!this.isListening) {
+ return
+ }
+
+ this.isListening = false
+
+ if (typeof window !== `undefined`) {
+ window.removeEventListener(`online`, this.handleOnline)
+ document.removeEventListener(
+ `visibilitychange`,
+ this.handleVisibilityChange
+ )
+ }
+ }
+
+ private handleOnline = (): void => {
+ this.notifyListeners()
+ }
+
+ private handleVisibilityChange = (): void => {
+ if (document.visibilityState === `visible`) {
+ this.notifyListeners()
+ }
+ }
+
+ private notifyListeners(): void {
+ for (const listener of this.listeners) {
+ try {
+ listener()
+ } catch (error) {
+ console.warn(`OnlineDetector listener error:`, error)
+ }
+ }
+ }
+
+ subscribe(callback: () => void): () => void {
+ this.listeners.add(callback)
+
+ return () => {
+ this.listeners.delete(callback)
+
+ if (this.listeners.size === 0) {
+ this.stopListening()
+ }
+ }
+ }
+
+ notifyOnline(): void {
+ this.notifyListeners()
+ }
+
+ isOnline(): boolean {
+ if (typeof navigator !== `undefined`) {
+ return navigator.onLine
+ }
+ return true
+ }
+
+ dispose(): void {
+ this.stopListening()
+ this.listeners.clear()
+ }
+}
diff --git a/packages/offline-transactions/src/coordination/BroadcastChannelLeader.ts b/packages/offline-transactions/src/coordination/BroadcastChannelLeader.ts
new file mode 100644
index 000000000..474346171
--- /dev/null
+++ b/packages/offline-transactions/src/coordination/BroadcastChannelLeader.ts
@@ -0,0 +1,181 @@
+import { BaseLeaderElection } from "./LeaderElection"
+
+interface LeaderMessage {
+ type: `heartbeat` | `election` | `leadership-claim`
+ tabId: string
+ timestamp: number
+}
+
+export class BroadcastChannelLeader extends BaseLeaderElection {
+ private channelName: string
+ private tabId: string
+ private channel: BroadcastChannel | null = null
+ private heartbeatInterval: number | null = null
+ private electionTimeout: number | null = null
+ private lastLeaderHeartbeat = 0
+ private readonly heartbeatIntervalMs = 5000
+ private readonly electionTimeoutMs = 10000
+
+ constructor(channelName = `offline-executor-leader`) {
+ super()
+ this.channelName = channelName
+ this.tabId = crypto.randomUUID()
+ this.setupChannel()
+ }
+
+ private setupChannel(): void {
+ if (!this.isBroadcastChannelSupported()) {
+ return
+ }
+
+ this.channel = new BroadcastChannel(this.channelName)
+ this.channel.addEventListener(`message`, this.handleMessage)
+ }
+
+ private handleMessage = (event: MessageEvent): void => {
+ const { type, tabId, timestamp } = event.data
+
+ if (tabId === this.tabId) {
+ return
+ }
+
+ switch (type) {
+ case `heartbeat`:
+ if (this.isLeaderState && tabId < this.tabId) {
+ this.releaseLeadership()
+ } else if (!this.isLeaderState) {
+ this.lastLeaderHeartbeat = timestamp
+ this.cancelElection()
+ }
+ break
+
+ case `election`:
+ if (this.isLeaderState) {
+ this.sendHeartbeat()
+ } else if (tabId > this.tabId) {
+ this.startElection()
+ }
+ break
+
+ case `leadership-claim`:
+ if (this.isLeaderState && tabId < this.tabId) {
+ this.releaseLeadership()
+ }
+ break
+ }
+ }
+
+ async requestLeadership(): Promise {
+ if (!this.isBroadcastChannelSupported()) {
+ return false
+ }
+
+ if (this.isLeaderState) {
+ return true
+ }
+
+ this.startElection()
+
+ return new Promise((resolve) => {
+ setTimeout(() => {
+ resolve(this.isLeaderState)
+ }, 1000)
+ })
+ }
+
+ private startElection(): void {
+ if (this.electionTimeout) {
+ return
+ }
+
+ this.sendMessage({
+ type: `election`,
+ tabId: this.tabId,
+ timestamp: Date.now(),
+ })
+
+ this.electionTimeout = window.setTimeout(() => {
+ const timeSinceLastHeartbeat = Date.now() - this.lastLeaderHeartbeat
+
+ if (timeSinceLastHeartbeat > this.electionTimeoutMs) {
+ this.claimLeadership()
+ }
+
+ this.electionTimeout = null
+ }, this.electionTimeoutMs)
+ }
+
+ private cancelElection(): void {
+ if (this.electionTimeout) {
+ clearTimeout(this.electionTimeout)
+ this.electionTimeout = null
+ }
+ }
+
+ private claimLeadership(): void {
+ this.notifyLeadershipChange(true)
+ this.sendMessage({
+ type: `leadership-claim`,
+ tabId: this.tabId,
+ timestamp: Date.now(),
+ })
+ this.startHeartbeat()
+ }
+
+ private startHeartbeat(): void {
+ if (this.heartbeatInterval) {
+ return
+ }
+
+ this.sendHeartbeat()
+
+ this.heartbeatInterval = window.setInterval(() => {
+ this.sendHeartbeat()
+ }, this.heartbeatIntervalMs)
+ }
+
+ private stopHeartbeat(): void {
+ if (this.heartbeatInterval) {
+ clearInterval(this.heartbeatInterval)
+ this.heartbeatInterval = null
+ }
+ }
+
+ private sendHeartbeat(): void {
+ this.sendMessage({
+ type: `heartbeat`,
+ tabId: this.tabId,
+ timestamp: Date.now(),
+ })
+ }
+
+ private sendMessage(message: LeaderMessage): void {
+ if (this.channel) {
+ this.channel.postMessage(message)
+ }
+ }
+
+ releaseLeadership(): void {
+ this.stopHeartbeat()
+ this.cancelElection()
+ this.notifyLeadershipChange(false)
+ }
+
+ private isBroadcastChannelSupported(): boolean {
+ return typeof BroadcastChannel !== `undefined`
+ }
+
+ static isSupported(): boolean {
+ return typeof BroadcastChannel !== `undefined`
+ }
+
+ dispose(): void {
+ this.releaseLeadership()
+
+ if (this.channel) {
+ this.channel.removeEventListener(`message`, this.handleMessage)
+ this.channel.close()
+ this.channel = null
+ }
+ }
+}
diff --git a/packages/offline-transactions/src/coordination/LeaderElection.ts b/packages/offline-transactions/src/coordination/LeaderElection.ts
new file mode 100644
index 000000000..b33bca745
--- /dev/null
+++ b/packages/offline-transactions/src/coordination/LeaderElection.ts
@@ -0,0 +1,35 @@
+import type { LeaderElection } from "../types"
+
+export abstract class BaseLeaderElection implements LeaderElection {
+ protected isLeaderState = false
+ protected listeners: Set<(isLeader: boolean) => void> = new Set()
+
+ abstract requestLeadership(): Promise
+ abstract releaseLeadership(): void
+
+ isLeader(): boolean {
+ return this.isLeaderState
+ }
+
+ onLeadershipChange(callback: (isLeader: boolean) => void): () => void {
+ this.listeners.add(callback)
+
+ return () => {
+ this.listeners.delete(callback)
+ }
+ }
+
+ protected notifyLeadershipChange(isLeader: boolean): void {
+ if (this.isLeaderState !== isLeader) {
+ this.isLeaderState = isLeader
+
+ for (const listener of this.listeners) {
+ try {
+ listener(isLeader)
+ } catch (error) {
+ console.warn(`Leadership change listener error:`, error)
+ }
+ }
+ }
+ }
+}
diff --git a/packages/offline-transactions/src/coordination/WebLocksLeader.ts b/packages/offline-transactions/src/coordination/WebLocksLeader.ts
new file mode 100644
index 000000000..b7952a8be
--- /dev/null
+++ b/packages/offline-transactions/src/coordination/WebLocksLeader.ts
@@ -0,0 +1,82 @@
+import { BaseLeaderElection } from "./LeaderElection"
+
+export class WebLocksLeader extends BaseLeaderElection {
+ private lockName: string
+ private releaseLock: (() => void) | null = null
+
+ constructor(lockName = `offline-executor-leader`) {
+ super()
+ this.lockName = lockName
+ }
+
+ async requestLeadership(): Promise {
+ if (!this.isWebLocksSupported()) {
+ return false
+ }
+
+ if (this.isLeaderState) {
+ return true
+ }
+
+ try {
+ // First try to acquire the lock with ifAvailable
+ const available = await navigator.locks.request(
+ this.lockName,
+ {
+ mode: `exclusive`,
+ ifAvailable: true,
+ },
+ (lock) => {
+ return lock !== null
+ }
+ )
+
+ if (!available) {
+ return false
+ }
+
+ // Lock is available, now acquire it for real and hold it
+ navigator.locks.request(
+ this.lockName,
+ {
+ mode: `exclusive`,
+ },
+ async (lock) => {
+ if (lock) {
+ this.notifyLeadershipChange(true)
+ // Hold the lock until released
+ return new Promise((resolve) => {
+ this.releaseLock = () => {
+ this.notifyLeadershipChange(false)
+ resolve()
+ }
+ })
+ }
+ }
+ )
+
+ return true
+ } catch (error) {
+ if (error instanceof Error && error.name === `AbortError`) {
+ return false
+ }
+ console.warn(`Web Locks leadership request failed:`, error)
+ return false
+ }
+ }
+
+ releaseLeadership(): void {
+ if (this.releaseLock) {
+ this.releaseLock()
+ this.releaseLock = null
+ }
+ }
+
+ private isWebLocksSupported(): boolean {
+ return typeof navigator !== `undefined` && `locks` in navigator
+ }
+
+ static isSupported(): boolean {
+ return typeof navigator !== `undefined` && `locks` in navigator
+ }
+}
diff --git a/packages/offline-transactions/src/executor/KeyScheduler.ts b/packages/offline-transactions/src/executor/KeyScheduler.ts
new file mode 100644
index 000000000..506f423a2
--- /dev/null
+++ b/packages/offline-transactions/src/executor/KeyScheduler.ts
@@ -0,0 +1,123 @@
+import { withSyncSpan } from "../telemetry/tracer"
+import type { OfflineTransaction } from "../types"
+
+export class KeyScheduler {
+ private pendingTransactions: Array = []
+ private isRunning = false
+
+ schedule(transaction: OfflineTransaction): void {
+ withSyncSpan(
+ `scheduler.schedule`,
+ {
+ "transaction.id": transaction.id,
+ queueLength: this.pendingTransactions.length,
+ },
+ () => {
+ this.pendingTransactions.push(transaction)
+ // Sort by creation time to maintain FIFO order
+ this.pendingTransactions.sort(
+ (a, b) => a.createdAt.getTime() - b.createdAt.getTime()
+ )
+ }
+ )
+ }
+
+ getNextBatch(_maxConcurrency: number): Array {
+ return withSyncSpan(
+ `scheduler.getNextBatch`,
+ { pendingCount: this.pendingTransactions.length },
+ (span) => {
+ // For sequential processing, we ignore maxConcurrency and only process one transaction at a time
+ if (this.isRunning || this.pendingTransactions.length === 0) {
+ span.setAttribute(`result`, `empty`)
+ return []
+ }
+
+ // Find the first transaction that's ready to run
+ const readyTransaction = this.pendingTransactions.find((tx) =>
+ this.isReadyToRun(tx)
+ )
+
+ if (readyTransaction) {
+ span.setAttribute(`result`, `found`)
+ span.setAttribute(`transaction.id`, readyTransaction.id)
+ } else {
+ span.setAttribute(`result`, `none_ready`)
+ }
+
+ return readyTransaction ? [readyTransaction] : []
+ }
+ )
+ }
+
+ private isReadyToRun(transaction: OfflineTransaction): boolean {
+ return Date.now() >= transaction.nextAttemptAt
+ }
+
+ markStarted(_transaction: OfflineTransaction): void {
+ this.isRunning = true
+ }
+
+ markCompleted(transaction: OfflineTransaction): void {
+ this.removeTransaction(transaction)
+ this.isRunning = false
+ }
+
+ markFailed(_transaction: OfflineTransaction): void {
+ this.isRunning = false
+ }
+
+ private removeTransaction(transaction: OfflineTransaction): void {
+ const index = this.pendingTransactions.findIndex(
+ (tx) => tx.id === transaction.id
+ )
+ if (index >= 0) {
+ this.pendingTransactions.splice(index, 1)
+ }
+ }
+
+ updateTransaction(transaction: OfflineTransaction): void {
+ const index = this.pendingTransactions.findIndex(
+ (tx) => tx.id === transaction.id
+ )
+ if (index >= 0) {
+ this.pendingTransactions[index] = transaction
+ // Re-sort to maintain FIFO order after update
+ this.pendingTransactions.sort(
+ (a, b) => a.createdAt.getTime() - b.createdAt.getTime()
+ )
+ }
+ }
+
+ getPendingCount(): number {
+ return this.pendingTransactions.length
+ }
+
+ getRunningCount(): number {
+ return this.isRunning ? 1 : 0
+ }
+
+ clear(): void {
+ this.pendingTransactions = []
+ this.isRunning = false
+ }
+
+ getAllPendingTransactions(): Array {
+ return [...this.pendingTransactions]
+ }
+
+ updateTransactions(updatedTransactions: Array): void {
+ for (const updatedTx of updatedTransactions) {
+ const index = this.pendingTransactions.findIndex(
+ (tx) => tx.id === updatedTx.id
+ )
+ if (index >= 0) {
+ this.pendingTransactions[index] = updatedTx
+ }
+ }
+ // Re-sort to maintain FIFO order after updates
+ this.pendingTransactions.sort(
+ (a, b) => a.createdAt.getTime() - b.createdAt.getTime()
+ )
+ }
+}
diff --git a/packages/offline-transactions/src/executor/TransactionExecutor.ts b/packages/offline-transactions/src/executor/TransactionExecutor.ts
new file mode 100644
index 000000000..5d8cde116
--- /dev/null
+++ b/packages/offline-transactions/src/executor/TransactionExecutor.ts
@@ -0,0 +1,330 @@
+import { createTraceState } from "@opentelemetry/api"
+import { DefaultRetryPolicy } from "../retry/RetryPolicy"
+import { NonRetriableError } from "../types"
+import { withNestedSpan } from "../telemetry/tracer"
+import type { SpanContext } from "@opentelemetry/api"
+import type { KeyScheduler } from "./KeyScheduler"
+import type { OutboxManager } from "../outbox/OutboxManager"
+import type {
+ OfflineConfig,
+ OfflineTransaction,
+ SerializedSpanContext,
+} from "../types"
+
+const HANDLED_EXECUTION_ERROR = Symbol(`HandledExecutionError`)
+
+function toSpanContext(
+ serialized?: SerializedSpanContext
+): SpanContext | undefined {
+ if (!serialized) {
+ return undefined
+ }
+
+ return {
+ traceId: serialized.traceId,
+ spanId: serialized.spanId,
+ traceFlags: serialized.traceFlags,
+ traceState: serialized.traceState
+ ? createTraceState(serialized.traceState)
+ : undefined,
+ }
+}
+
+export class TransactionExecutor {
+ private scheduler: KeyScheduler
+ private outbox: OutboxManager
+ private config: OfflineConfig
+ private retryPolicy: DefaultRetryPolicy
+ private isExecuting = false
+ private executionPromise: Promise | null = null
+ private offlineExecutor: any // Reference to OfflineExecutor for signaling
+ private retryTimer: ReturnType | null = null
+
+ constructor(
+ scheduler: KeyScheduler,
+ outbox: OutboxManager,
+ config: OfflineConfig,
+ offlineExecutor: any
+ ) {
+ this.scheduler = scheduler
+ this.outbox = outbox
+ this.config = config
+ this.retryPolicy = new DefaultRetryPolicy(10, config.jitter ?? true)
+ this.offlineExecutor = offlineExecutor
+ }
+
+ async execute(transaction: OfflineTransaction): Promise {
+ this.scheduler.schedule(transaction)
+ await this.executeAll()
+ }
+
+ async executeAll(): Promise {
+ if (this.isExecuting) {
+ return this.executionPromise!
+ }
+
+ this.isExecuting = true
+ this.executionPromise = this.runExecution()
+
+ try {
+ await this.executionPromise
+ } finally {
+ this.isExecuting = false
+ this.executionPromise = null
+ }
+ }
+
+ private async runExecution(): Promise {
+ const maxConcurrency = this.config.maxConcurrency ?? 3
+
+ while (this.scheduler.getPendingCount() > 0) {
+ const batch = this.scheduler.getNextBatch(maxConcurrency)
+
+ if (batch.length === 0) {
+ break
+ }
+
+ const executions = batch.map((transaction) =>
+ this.executeTransaction(transaction)
+ )
+ await Promise.allSettled(executions)
+ }
+
+ // Schedule next retry after execution completes
+ this.scheduleNextRetry()
+ }
+
+ private async executeTransaction(
+ transaction: OfflineTransaction
+ ): Promise {
+ try {
+ await withNestedSpan(
+ `transaction.execute`,
+ {
+ "transaction.id": transaction.id,
+ "transaction.mutationFnName": transaction.mutationFnName,
+ "transaction.retryCount": transaction.retryCount,
+ "transaction.keyCount": transaction.keys.length,
+ },
+ async (span) => {
+ this.scheduler.markStarted(transaction)
+
+ if (transaction.retryCount > 0) {
+ span.setAttribute(`retry.attempt`, transaction.retryCount)
+ }
+
+ try {
+ const result = await this.runMutationFn(transaction)
+
+ this.scheduler.markCompleted(transaction)
+ await this.outbox.remove(transaction.id)
+
+ span.setAttribute(`result`, `success`)
+ this.offlineExecutor.resolveTransaction(transaction.id, result)
+ } catch (error) {
+ const err =
+ error instanceof Error ? error : new Error(String(error))
+
+ span.setAttribute(`result`, `error`)
+
+ await this.handleError(transaction, err)
+ ;(err as any)[HANDLED_EXECUTION_ERROR] = true
+ throw err
+ }
+ },
+ {
+ parentContext: toSpanContext(transaction.spanContext),
+ }
+ )
+ } catch (error) {
+ if (
+ error instanceof Error &&
+ (error as any)[HANDLED_EXECUTION_ERROR] === true
+ ) {
+ return
+ }
+
+ throw error
+ }
+ }
+
+ private async runMutationFn(transaction: OfflineTransaction): Promise {
+ const mutationFn = this.config.mutationFns[transaction.mutationFnName]
+
+ if (!mutationFn) {
+ const errorMessage = `Unknown mutation function: ${transaction.mutationFnName}`
+
+ if (this.config.onUnknownMutationFn) {
+ this.config.onUnknownMutationFn(transaction.mutationFnName, transaction)
+ }
+
+ throw new NonRetriableError(errorMessage)
+ }
+
+ // Mutations are already PendingMutation objects with collections attached
+ // from the deserializer, so we can use them directly
+ const transactionWithMutations = {
+ id: transaction.id,
+ mutations: transaction.mutations,
+ metadata: transaction.metadata ?? {},
+ }
+
+ await mutationFn({
+ transaction: transactionWithMutations as any,
+ idempotencyKey: transaction.idempotencyKey,
+ })
+ }
+
+ private async handleError(
+ transaction: OfflineTransaction,
+ error: Error
+ ): Promise {
+ return withNestedSpan(
+ `transaction.handleError`,
+ {
+ "transaction.id": transaction.id,
+ "error.name": error.name,
+ "error.message": error.message,
+ },
+ async (span) => {
+ const shouldRetry = this.retryPolicy.shouldRetry(
+ error,
+ transaction.retryCount
+ )
+
+ span.setAttribute(`shouldRetry`, shouldRetry)
+
+ if (!shouldRetry) {
+ this.scheduler.markCompleted(transaction)
+ await this.outbox.remove(transaction.id)
+ console.warn(
+ `Transaction ${transaction.id} failed permanently:`,
+ error
+ )
+
+ span.setAttribute(`result`, `permanent_failure`)
+ // Signal permanent failure to the waiting transaction
+ this.offlineExecutor.rejectTransaction(transaction.id, error)
+ return
+ }
+
+ const delay = this.retryPolicy.calculateDelay(transaction.retryCount)
+ const updatedTransaction: OfflineTransaction = {
+ ...transaction,
+ retryCount: transaction.retryCount + 1,
+ nextAttemptAt: Date.now() + delay,
+ lastError: {
+ name: error.name,
+ message: error.message,
+ stack: error.stack,
+ },
+ }
+
+ span.setAttribute(`retryDelay`, delay)
+ span.setAttribute(`nextRetryCount`, updatedTransaction.retryCount)
+
+ this.scheduler.markFailed(transaction)
+ this.scheduler.updateTransaction(updatedTransaction)
+
+ try {
+ await this.outbox.update(transaction.id, updatedTransaction)
+ span.setAttribute(`result`, `scheduled_retry`)
+ } catch (persistError) {
+ span.recordException(persistError as Error)
+ span.setAttribute(`result`, `persist_failed`)
+ throw persistError
+ }
+
+ // Schedule retry timer
+ this.scheduleNextRetry()
+ }
+ )
+ }
+
+ async loadPendingTransactions(): Promise {
+ const transactions = await this.outbox.getAll()
+ let filteredTransactions = transactions
+
+ if (this.config.beforeRetry) {
+ filteredTransactions = this.config.beforeRetry(transactions)
+ }
+
+ for (const transaction of filteredTransactions) {
+ this.scheduler.schedule(transaction)
+ }
+
+ // Reset retry delays for all loaded transactions so they can run immediately
+ this.resetRetryDelays()
+
+ // Schedule retry timer for loaded transactions
+ this.scheduleNextRetry()
+
+ const removedTransactions = transactions.filter(
+ (tx) => !filteredTransactions.some((filtered) => filtered.id === tx.id)
+ )
+
+ if (removedTransactions.length > 0) {
+ await this.outbox.removeMany(removedTransactions.map((tx) => tx.id))
+ }
+ }
+
+ clear(): void {
+ this.scheduler.clear()
+ this.clearRetryTimer()
+ }
+
+ getPendingCount(): number {
+ return this.scheduler.getPendingCount()
+ }
+
+ private scheduleNextRetry(): void {
+ // Clear existing timer
+ this.clearRetryTimer()
+
+ // Find the earliest retry time among pending transactions
+ const earliestRetryTime = this.getEarliestRetryTime()
+
+ if (earliestRetryTime === null) {
+ return // No transactions pending retry
+ }
+
+ const delay = Math.max(0, earliestRetryTime - Date.now())
+
+ this.retryTimer = setTimeout(() => {
+ this.executeAll().catch((error) => {
+ console.warn(`Failed to execute retry batch:`, error)
+ })
+ }, delay)
+ }
+
+ private getEarliestRetryTime(): number | null {
+ const allTransactions = this.scheduler.getAllPendingTransactions()
+
+ if (allTransactions.length === 0) {
+ return null
+ }
+
+ return Math.min(...allTransactions.map((tx) => tx.nextAttemptAt))
+ }
+
+ private clearRetryTimer(): void {
+ if (this.retryTimer) {
+ clearTimeout(this.retryTimer)
+ this.retryTimer = null
+ }
+ }
+
+ getRunningCount(): number {
+ return this.scheduler.getRunningCount()
+ }
+
+ resetRetryDelays(): void {
+ const allTransactions = this.scheduler.getAllPendingTransactions()
+ const updatedTransactions = allTransactions.map((transaction) => ({
+ ...transaction,
+ nextAttemptAt: Date.now(),
+ }))
+
+ this.scheduler.updateTransactions(updatedTransactions)
+ }
+}
diff --git a/packages/offline-transactions/src/index.ts b/packages/offline-transactions/src/index.ts
new file mode 100644
index 000000000..ca76ed259
--- /dev/null
+++ b/packages/offline-transactions/src/index.ts
@@ -0,0 +1,47 @@
+// Main API
+export { OfflineExecutor, startOfflineExecutor } from "./OfflineExecutor"
+
+// Types
+export type {
+ OfflineTransaction,
+ OfflineConfig,
+ StorageAdapter,
+ RetryPolicy,
+ LeaderElection,
+ OnlineDetector,
+ CreateOfflineTransactionOptions,
+ CreateOfflineActionOptions,
+ SerializedError,
+ SerializedMutation,
+} from "./types"
+
+export { NonRetriableError } from "./types"
+
+// Storage adapters
+export { IndexedDBAdapter } from "./storage/IndexedDBAdapter"
+export { LocalStorageAdapter } from "./storage/LocalStorageAdapter"
+
+// Retry policies
+export { DefaultRetryPolicy } from "./retry/RetryPolicy"
+export { BackoffCalculator } from "./retry/BackoffCalculator"
+
+// Coordination
+export { WebLocksLeader } from "./coordination/WebLocksLeader"
+export { BroadcastChannelLeader } from "./coordination/BroadcastChannelLeader"
+
+// Connectivity
+export { DefaultOnlineDetector } from "./connectivity/OnlineDetector"
+
+// API components
+export { OfflineTransaction as OfflineTransactionAPI } from "./api/OfflineTransaction"
+export { createOfflineAction } from "./api/OfflineAction"
+
+// Outbox management
+export { OutboxManager } from "./outbox/OutboxManager"
+export { TransactionSerializer } from "./outbox/TransactionSerializer"
+
+// Execution engine
+export { KeyScheduler } from "./executor/KeyScheduler"
+export { TransactionExecutor } from "./executor/TransactionExecutor"
+
+// Replay
diff --git a/packages/offline-transactions/src/outbox/OutboxManager.ts b/packages/offline-transactions/src/outbox/OutboxManager.ts
new file mode 100644
index 000000000..9f99195fc
--- /dev/null
+++ b/packages/offline-transactions/src/outbox/OutboxManager.ts
@@ -0,0 +1,141 @@
+import { withSpan } from "../telemetry/tracer"
+import { TransactionSerializer } from "./TransactionSerializer"
+import type { OfflineTransaction, StorageAdapter } from "../types"
+import type { Collection } from "@tanstack/db"
+
+export class OutboxManager {
+ private storage: StorageAdapter
+ private serializer: TransactionSerializer
+ private keyPrefix = `tx:`
+
+ constructor(
+ storage: StorageAdapter,
+ collections: Record
+ ) {
+ this.storage = storage
+ this.serializer = new TransactionSerializer(collections)
+ }
+
+ private getStorageKey(id: string): string {
+ return `${this.keyPrefix}${id}`
+ }
+
+ async add(transaction: OfflineTransaction): Promise {
+ return withSpan(
+ `outbox.add`,
+ {
+ "transaction.id": transaction.id,
+ "transaction.mutationFnName": transaction.mutationFnName,
+ "transaction.keyCount": transaction.keys.length,
+ },
+ async () => {
+ const key = this.getStorageKey(transaction.id)
+ const serialized = this.serializer.serialize(transaction)
+ await this.storage.set(key, serialized)
+ }
+ )
+ }
+
+ async get(id: string): Promise {
+ return withSpan(`outbox.get`, { "transaction.id": id }, async (span) => {
+ const key = this.getStorageKey(id)
+ const data = await this.storage.get(key)
+
+ if (!data) {
+ span.setAttribute(`result`, `not_found`)
+ return null
+ }
+
+ try {
+ const transaction = this.serializer.deserialize(data)
+ span.setAttribute(`result`, `found`)
+ return transaction
+ } catch (error) {
+ console.warn(`Failed to deserialize transaction ${id}:`, error)
+ span.setAttribute(`result`, `deserialize_error`)
+ return null
+ }
+ })
+ }
+
+ async getAll(): Promise> {
+ return withSpan(`outbox.getAll`, {}, async (span) => {
+ const keys = await this.storage.keys()
+ const transactionKeys = keys.filter((key) =>
+ key.startsWith(this.keyPrefix)
+ )
+
+ span.setAttribute(`transactionCount`, transactionKeys.length)
+
+ const transactions: Array = []
+
+ for (const key of transactionKeys) {
+ const data = await this.storage.get(key)
+ if (data) {
+ try {
+ const transaction = this.serializer.deserialize(data)
+ transactions.push(transaction)
+ } catch (error) {
+ console.warn(
+ `Failed to deserialize transaction from key ${key}:`,
+ error
+ )
+ }
+ }
+ }
+
+ return transactions.sort(
+ (a, b) => a.createdAt.getTime() - b.createdAt.getTime()
+ )
+ })
+ }
+
+ async getByKeys(keys: Array): Promise> {
+ const allTransactions = await this.getAll()
+ const keySet = new Set(keys)
+
+ return allTransactions.filter((transaction) =>
+ transaction.keys.some((key) => keySet.has(key))
+ )
+ }
+
+ async update(
+ id: string,
+ updates: Partial
+ ): Promise {
+ return withSpan(`outbox.update`, { "transaction.id": id }, async () => {
+ const existing = await this.get(id)
+ if (!existing) {
+ throw new Error(`Transaction ${id} not found`)
+ }
+
+ const updated = { ...existing, ...updates }
+ await this.add(updated)
+ })
+ }
+
+ async remove(id: string): Promise {
+ return withSpan(`outbox.remove`, { "transaction.id": id }, async () => {
+ const key = this.getStorageKey(id)
+ await this.storage.delete(key)
+ })
+ }
+
+ async removeMany(ids: Array): Promise {
+ return withSpan(`outbox.removeMany`, { count: ids.length }, async () => {
+ await Promise.all(ids.map((id) => this.remove(id)))
+ })
+ }
+
+ async clear(): Promise {
+ const keys = await this.storage.keys()
+ const transactionKeys = keys.filter((key) => key.startsWith(this.keyPrefix))
+
+ await Promise.all(transactionKeys.map((key) => this.storage.delete(key)))
+ }
+
+ async count(): Promise {
+ const keys = await this.storage.keys()
+ return keys.filter((key) => key.startsWith(this.keyPrefix)).length
+ }
+}
diff --git a/packages/offline-transactions/src/outbox/TransactionSerializer.ts b/packages/offline-transactions/src/outbox/TransactionSerializer.ts
new file mode 100644
index 000000000..f2a19bd7d
--- /dev/null
+++ b/packages/offline-transactions/src/outbox/TransactionSerializer.ts
@@ -0,0 +1,163 @@
+import type {
+ OfflineTransaction,
+ SerializedError,
+ SerializedMutation,
+ SerializedOfflineTransaction,
+} from "../types"
+import type { Collection, PendingMutation } from "@tanstack/db"
+
+export class TransactionSerializer {
+ private collections: Record
+ private collectionIdToKey: Map
+
+ constructor(collections: Record) {
+ this.collections = collections
+ // Create reverse lookup from collection.id to registry key
+ this.collectionIdToKey = new Map()
+ for (const [key, collection] of Object.entries(collections)) {
+ this.collectionIdToKey.set(collection.id, key)
+ }
+ }
+
+ serialize(transaction: OfflineTransaction): string {
+ const serialized: SerializedOfflineTransaction = {
+ ...transaction,
+ createdAt: transaction.createdAt,
+ mutations: transaction.mutations.map((mutation) =>
+ this.serializeMutation(mutation)
+ ),
+ }
+ // Convert the whole object to JSON, handling dates
+ return JSON.stringify(serialized, (key, value) => {
+ if (value instanceof Date) {
+ return value.toISOString()
+ }
+ return value
+ })
+ }
+
+ deserialize(data: string): OfflineTransaction {
+ const parsed: SerializedOfflineTransaction = JSON.parse(
+ data,
+ (key, value) => {
+ // Parse ISO date strings back to Date objects
+ if (
+ typeof value === `string` &&
+ /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(value)
+ ) {
+ return new Date(value)
+ }
+ return value
+ }
+ )
+
+ return {
+ ...parsed,
+ mutations: parsed.mutations.map((mutationData) =>
+ this.deserializeMutation(mutationData)
+ ),
+ }
+ }
+
+ private serializeMutation(mutation: PendingMutation): SerializedMutation {
+ const registryKey = this.collectionIdToKey.get(mutation.collection.id)
+ if (!registryKey) {
+ throw new Error(
+ `Collection with id ${mutation.collection.id} not found in registry`
+ )
+ }
+
+ return {
+ globalKey: mutation.globalKey,
+ type: mutation.type,
+ modified: this.serializeValue(mutation.modified),
+ original: this.serializeValue(mutation.original),
+ collectionId: registryKey, // Store registry key instead of collection.id
+ }
+ }
+
+ private deserializeMutation(data: SerializedMutation): PendingMutation {
+ const collection = this.collections[data.collectionId]
+ if (!collection) {
+ throw new Error(`Collection with id ${data.collectionId} not found`)
+ }
+
+ // Create a partial PendingMutation - we can't fully reconstruct it but
+ // we provide what we can. The executor will need to handle the rest.
+ return {
+ globalKey: data.globalKey,
+ type: data.type as any,
+ modified: this.deserializeValue(data.modified),
+ original: this.deserializeValue(data.original),
+ collection,
+ // These fields would need to be reconstructed by the executor
+ mutationId: ``, // Will be regenerated
+ key: null, // Will be extracted from the data
+ changes: {}, // Will be recalculated
+ metadata: undefined,
+ syncMetadata: {},
+ optimistic: true,
+ createdAt: new Date(),
+ updatedAt: new Date(),
+ } as PendingMutation
+ }
+
+ private serializeValue(value: any): any {
+ if (value === null || value === undefined) {
+ return value
+ }
+
+ if (value instanceof Date) {
+ return { __type: `Date`, value: value.toISOString() }
+ }
+
+ if (typeof value === `object`) {
+ const result: any = Array.isArray(value) ? [] : {}
+ for (const key in value) {
+ if (value.hasOwnProperty(key)) {
+ result[key] = this.serializeValue(value[key])
+ }
+ }
+ return result
+ }
+
+ return value
+ }
+
+ private deserializeValue(value: any): any {
+ if (value === null || value === undefined) {
+ return value
+ }
+
+ if (typeof value === `object` && value.__type === `Date`) {
+ return new Date(value.value)
+ }
+
+ if (typeof value === `object`) {
+ const result: any = Array.isArray(value) ? [] : {}
+ for (const key in value) {
+ if (value.hasOwnProperty(key)) {
+ result[key] = this.deserializeValue(value[key])
+ }
+ }
+ return result
+ }
+
+ return value
+ }
+
+ serializeError(error: Error): SerializedError {
+ return {
+ name: error.name,
+ message: error.message,
+ stack: error.stack,
+ }
+ }
+
+ deserializeError(data: SerializedError): Error {
+ const error = new Error(data.message)
+ error.name = data.name
+ error.stack = data.stack
+ return error
+ }
+}
diff --git a/packages/offline-transactions/src/retry/BackoffCalculator.ts b/packages/offline-transactions/src/retry/BackoffCalculator.ts
new file mode 100644
index 000000000..be2236278
--- /dev/null
+++ b/packages/offline-transactions/src/retry/BackoffCalculator.ts
@@ -0,0 +1,13 @@
+export class BackoffCalculator {
+ private jitter: boolean
+
+ constructor(jitter = true) {
+ this.jitter = jitter
+ }
+
+ calculate(retryCount: number): number {
+ const baseDelay = Math.min(1000 * Math.pow(2, retryCount), 60000)
+ const jitterMultiplier = this.jitter ? Math.random() * 0.3 : 0
+ return Math.floor(baseDelay * (1 + jitterMultiplier))
+ }
+}
diff --git a/packages/offline-transactions/src/retry/NonRetriableError.ts b/packages/offline-transactions/src/retry/NonRetriableError.ts
new file mode 100644
index 000000000..04253277c
--- /dev/null
+++ b/packages/offline-transactions/src/retry/NonRetriableError.ts
@@ -0,0 +1 @@
+export { NonRetriableError } from "../types"
diff --git a/packages/offline-transactions/src/retry/RetryPolicy.ts b/packages/offline-transactions/src/retry/RetryPolicy.ts
new file mode 100644
index 000000000..1730db8c4
--- /dev/null
+++ b/packages/offline-transactions/src/retry/RetryPolicy.ts
@@ -0,0 +1,41 @@
+import { NonRetriableError } from "../types"
+import { BackoffCalculator } from "./BackoffCalculator"
+import type { RetryPolicy } from "../types"
+
+export class DefaultRetryPolicy implements RetryPolicy {
+ private backoffCalculator: BackoffCalculator
+ private maxRetries: number
+
+ constructor(maxRetries = 10, jitter = true) {
+ this.backoffCalculator = new BackoffCalculator(jitter)
+ this.maxRetries = maxRetries
+ }
+
+ calculateDelay(retryCount: number): number {
+ return this.backoffCalculator.calculate(retryCount)
+ }
+
+ shouldRetry(error: Error, retryCount: number): boolean {
+ if (retryCount >= this.maxRetries) {
+ return false
+ }
+
+ if (error instanceof NonRetriableError) {
+ return false
+ }
+
+ if (error.name === `AbortError`) {
+ return false
+ }
+
+ if (error.message.includes(`401`) || error.message.includes(`403`)) {
+ return false
+ }
+
+ if (error.message.includes(`422`) || error.message.includes(`400`)) {
+ return false
+ }
+
+ return true
+ }
+}
diff --git a/packages/offline-transactions/src/storage/IndexedDBAdapter.ts b/packages/offline-transactions/src/storage/IndexedDBAdapter.ts
new file mode 100644
index 000000000..027ac4f11
--- /dev/null
+++ b/packages/offline-transactions/src/storage/IndexedDBAdapter.ts
@@ -0,0 +1,119 @@
+import { BaseStorageAdapter } from "./StorageAdapter"
+
+export class IndexedDBAdapter extends BaseStorageAdapter {
+ private dbName: string
+ private storeName: string
+ private db: IDBDatabase | null = null
+
+ constructor(dbName = `offline-transactions`, storeName = `transactions`) {
+ super()
+ this.dbName = dbName
+ this.storeName = storeName
+ }
+
+ private async openDB(): Promise {
+ if (this.db) {
+ return this.db
+ }
+
+ return new Promise((resolve, reject) => {
+ const request = indexedDB.open(this.dbName, 1)
+
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => {
+ this.db = request.result
+ resolve(this.db)
+ }
+
+ request.onupgradeneeded = (event) => {
+ const db = (event.target as IDBOpenDBRequest).result
+ if (!db.objectStoreNames.contains(this.storeName)) {
+ db.createObjectStore(this.storeName)
+ }
+ }
+ })
+ }
+
+ private async getStore(
+ mode: IDBTransactionMode = `readonly`
+ ): Promise {
+ const db = await this.openDB()
+ const transaction = db.transaction([this.storeName], mode)
+ return transaction.objectStore(this.storeName)
+ }
+
+ async get(key: string): Promise {
+ try {
+ const store = await this.getStore(`readonly`)
+ return new Promise((resolve, reject) => {
+ const request = store.get(key)
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => resolve(request.result ?? null)
+ })
+ } catch (error) {
+ console.warn(`IndexedDB get failed:`, error)
+ return null
+ }
+ }
+
+ async set(key: string, value: string): Promise {
+ try {
+ const store = await this.getStore(`readwrite`)
+ return new Promise((resolve, reject) => {
+ const request = store.put(value, key)
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => resolve()
+ })
+ } catch (error) {
+ if (
+ error instanceof DOMException &&
+ error.name === `QuotaExceededError`
+ ) {
+ throw new Error(
+ `Storage quota exceeded. Consider clearing old transactions.`
+ )
+ }
+ throw error
+ }
+ }
+
+ async delete(key: string): Promise {
+ try {
+ const store = await this.getStore(`readwrite`)
+ return new Promise((resolve, reject) => {
+ const request = store.delete(key)
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => resolve()
+ })
+ } catch (error) {
+ console.warn(`IndexedDB delete failed:`, error)
+ }
+ }
+
+ async keys(): Promise> {
+ try {
+ const store = await this.getStore(`readonly`)
+ return new Promise((resolve, reject) => {
+ const request = store.getAllKeys()
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => resolve(request.result as Array)
+ })
+ } catch (error) {
+ console.warn(`IndexedDB keys failed:`, error)
+ return []
+ }
+ }
+
+ async clear(): Promise {
+ try {
+ const store = await this.getStore(`readwrite`)
+ return new Promise((resolve, reject) => {
+ const request = store.clear()
+ request.onerror = () => reject(request.error)
+ request.onsuccess = () => resolve()
+ })
+ } catch (error) {
+ console.warn(`IndexedDB clear failed:`, error)
+ }
+ }
+}
diff --git a/packages/offline-transactions/src/storage/LocalStorageAdapter.ts b/packages/offline-transactions/src/storage/LocalStorageAdapter.ts
new file mode 100644
index 000000000..90daa83ee
--- /dev/null
+++ b/packages/offline-transactions/src/storage/LocalStorageAdapter.ts
@@ -0,0 +1,79 @@
+import { BaseStorageAdapter } from "./StorageAdapter"
+
+export class LocalStorageAdapter extends BaseStorageAdapter {
+ private prefix: string
+
+ constructor(prefix = `offline-tx:`) {
+ super()
+ this.prefix = prefix
+ }
+
+ private getKey(key: string): string {
+ return `${this.prefix}${key}`
+ }
+
+ get(key: string): Promise {
+ try {
+ return Promise.resolve(localStorage.getItem(this.getKey(key)))
+ } catch (error) {
+ console.warn(`localStorage get failed:`, error)
+ return Promise.resolve(null)
+ }
+ }
+
+ set(key: string, value: string): Promise {
+ try {
+ localStorage.setItem(this.getKey(key), value)
+ return Promise.resolve()
+ } catch (error) {
+ if (
+ error instanceof DOMException &&
+ error.name === `QuotaExceededError`
+ ) {
+ return Promise.reject(
+ new Error(
+ `Storage quota exceeded. Consider clearing old transactions.`
+ )
+ )
+ }
+ return Promise.reject(error)
+ }
+ }
+
+ delete(key: string): Promise {
+ try {
+ localStorage.removeItem(this.getKey(key))
+ return Promise.resolve()
+ } catch (error) {
+ console.warn(`localStorage delete failed:`, error)
+ return Promise.resolve()
+ }
+ }
+
+ keys(): Promise> {
+ try {
+ const keys: Array = []
+ for (let i = 0; i < localStorage.length; i++) {
+ const key = localStorage.key(i)
+ if (key && key.startsWith(this.prefix)) {
+ keys.push(key.slice(this.prefix.length))
+ }
+ }
+ return Promise.resolve(keys)
+ } catch (error) {
+ console.warn(`localStorage keys failed:`, error)
+ return Promise.resolve([])
+ }
+ }
+
+ async clear(): Promise {
+ try {
+ const keys = await this.keys()
+ for (const key of keys) {
+ localStorage.removeItem(this.getKey(key))
+ }
+ } catch (error) {
+ console.warn(`localStorage clear failed:`, error)
+ }
+ }
+}
diff --git a/packages/offline-transactions/src/storage/StorageAdapter.ts b/packages/offline-transactions/src/storage/StorageAdapter.ts
new file mode 100644
index 000000000..2f63aa4d7
--- /dev/null
+++ b/packages/offline-transactions/src/storage/StorageAdapter.ts
@@ -0,0 +1,11 @@
+import type { StorageAdapter } from "../types"
+
+export abstract class BaseStorageAdapter implements StorageAdapter {
+ abstract get(key: string): Promise
+ abstract set(key: string, value: string): Promise
+ abstract delete(key: string): Promise
+ abstract keys(): Promise>
+ abstract clear(): Promise
+}
+
+export { type StorageAdapter }
diff --git a/packages/offline-transactions/src/telemetry/tracer.ts b/packages/offline-transactions/src/telemetry/tracer.ts
new file mode 100644
index 000000000..d12acda2e
--- /dev/null
+++ b/packages/offline-transactions/src/telemetry/tracer.ts
@@ -0,0 +1,151 @@
+import { SpanStatusCode, context, trace } from "@opentelemetry/api"
+import type { Span, SpanContext } from "@opentelemetry/api"
+
+const TRACER = trace.getTracer(`@tanstack/offline-transactions`, `0.0.1`)
+
+export interface SpanAttrs {
+ [key: string]: string | number | boolean | undefined
+}
+
+interface WithSpanOptions {
+ parentContext?: SpanContext
+}
+
+function getParentContext(options?: WithSpanOptions) {
+ if (options?.parentContext) {
+ const parentSpan = trace.wrapSpanContext(options.parentContext)
+ return trace.setSpan(context.active(), parentSpan)
+ }
+
+ return context.active()
+}
+
+/**
+ * Lightweight span wrapper with error handling.
+ * Uses OpenTelemetry API which is no-op when tracing is disabled.
+ *
+ * By default, creates spans at the current context level (siblings).
+ * Use withNestedSpan if you want parent-child relationships.
+ */
+export async function withSpan(
+ name: string,
+ attrs: SpanAttrs,
+ fn: (span: Span) => Promise,
+ options?: WithSpanOptions
+): Promise {
+ const parentCtx = getParentContext(options)
+ const span = TRACER.startSpan(name, undefined, parentCtx)
+
+ // Filter out undefined attributes
+ const filteredAttrs: Record = {}
+ for (const [key, value] of Object.entries(attrs)) {
+ if (value !== undefined) {
+ filteredAttrs[key] = value
+ }
+ }
+
+ span.setAttributes(filteredAttrs)
+
+ try {
+ const result = await fn(span)
+ span.setStatus({ code: SpanStatusCode.OK })
+ return result
+ } catch (error) {
+ span.setStatus({
+ code: SpanStatusCode.ERROR,
+ message: error instanceof Error ? error.message : String(error),
+ })
+ span.recordException(error as Error)
+ throw error
+ } finally {
+ span.end()
+ }
+}
+
+/**
+ * Like withSpan but propagates context so child spans nest properly.
+ * Use this when you want operations inside fn to be child spans.
+ */
+export async function withNestedSpan(
+ name: string,
+ attrs: SpanAttrs,
+ fn: (span: Span) => Promise,
+ options?: WithSpanOptions
+): Promise {
+ const parentCtx = getParentContext(options)
+ const span = TRACER.startSpan(name, undefined, parentCtx)
+
+ // Filter out undefined attributes
+ const filteredAttrs: Record = {}
+ for (const [key, value] of Object.entries(attrs)) {
+ if (value !== undefined) {
+ filteredAttrs[key] = value
+ }
+ }
+
+ span.setAttributes(filteredAttrs)
+
+ // Set the span as active context so child spans nest properly
+ const ctx = trace.setSpan(parentCtx, span)
+
+ try {
+ // Execute the function within the span's context
+ const result = await context.with(ctx, () => fn(span))
+ span.setStatus({ code: SpanStatusCode.OK })
+ return result
+ } catch (error) {
+ span.setStatus({
+ code: SpanStatusCode.ERROR,
+ message: error instanceof Error ? error.message : String(error),
+ })
+ span.recordException(error as Error)
+ throw error
+ } finally {
+ span.end()
+ }
+}
+
+/**
+ * Creates a synchronous span for non-async operations
+ */
+export function withSyncSpan(
+ name: string,
+ attrs: SpanAttrs,
+ fn: (span: Span) => T,
+ options?: WithSpanOptions
+): T {
+ const parentCtx = getParentContext(options)
+ const span = TRACER.startSpan(name, undefined, parentCtx)
+
+ // Filter out undefined attributes
+ const filteredAttrs: Record = {}
+ for (const [key, value] of Object.entries(attrs)) {
+ if (value !== undefined) {
+ filteredAttrs[key] = value
+ }
+ }
+
+ span.setAttributes(filteredAttrs)
+
+ try {
+ const result = fn(span)
+ span.setStatus({ code: SpanStatusCode.OK })
+ return result
+ } catch (error) {
+ span.setStatus({
+ code: SpanStatusCode.ERROR,
+ message: error instanceof Error ? error.message : String(error),
+ })
+ span.recordException(error as Error)
+ throw error
+ } finally {
+ span.end()
+ }
+}
+
+/**
+ * Get the current tracer instance
+ */
+export function getTracer() {
+ return TRACER
+}
diff --git a/packages/offline-transactions/src/types.ts b/packages/offline-transactions/src/types.ts
new file mode 100644
index 000000000..4e58efcd7
--- /dev/null
+++ b/packages/offline-transactions/src/types.ts
@@ -0,0 +1,133 @@
+import type {
+ Collection,
+ MutationFnParams,
+ PendingMutation,
+} from "@tanstack/db"
+
+// Extended mutation function that includes idempotency key
+export type OfflineMutationFnParams<
+ T extends object = Record,
+> = MutationFnParams & {
+ idempotencyKey: string
+}
+
+export type OfflineMutationFn> = (
+ params: OfflineMutationFnParams
+) => Promise
+
+// Simplified mutation structure for serialization
+export interface SerializedMutation {
+ globalKey: string
+ type: string
+ modified: any
+ original: any
+ collectionId: string
+}
+
+export interface SerializedError {
+ name: string
+ message: string
+ stack?: string
+}
+
+export interface SerializedSpanContext {
+ traceId: string
+ spanId: string
+ traceFlags: number
+ traceState?: string
+}
+
+// In-memory representation with full PendingMutation objects
+export interface OfflineTransaction {
+ id: string
+ mutationFnName: string
+ mutations: Array
+ keys: Array
+ idempotencyKey: string
+ createdAt: Date
+ retryCount: number
+ nextAttemptAt: number
+ lastError?: SerializedError
+ metadata?: Record
+ spanContext?: SerializedSpanContext
+ version: 1
+}
+
+// Serialized representation for storage
+export interface SerializedOfflineTransaction {
+ id: string
+ mutationFnName: string
+ mutations: Array
+ keys: Array
+ idempotencyKey: string
+ createdAt: Date
+ retryCount: number
+ nextAttemptAt: number
+ lastError?: SerializedError
+ metadata?: Record
+ spanContext?: SerializedSpanContext
+ version: 1
+}
+
+export interface OfflineConfig {
+ collections: Record
+ mutationFns: Record
+ storage?: StorageAdapter
+ maxConcurrency?: number
+ jitter?: boolean
+ beforeRetry?: (
+ transactions: Array
+ ) => Array
+ onUnknownMutationFn?: (name: string, tx: OfflineTransaction) => void
+ onLeadershipChange?: (isLeader: boolean) => void
+ leaderElection?: LeaderElection
+ otel?: {
+ endpoint: string
+ headers?: Record
+ }
+}
+
+export interface StorageAdapter {
+ get: (key: string) => Promise
+ set: (key: string, value: string) => Promise
+ delete: (key: string) => Promise
+ keys: () => Promise>
+ clear: () => Promise
+}
+
+export interface RetryPolicy {
+ calculateDelay: (retryCount: number) => number
+ shouldRetry: (error: Error, retryCount: number) => boolean
+}
+
+export interface LeaderElection {
+ requestLeadership: () => Promise
+ releaseLeadership: () => void
+ isLeader: () => boolean
+ onLeadershipChange: (callback: (isLeader: boolean) => void) => () => void
+}
+
+export interface OnlineDetector {
+ subscribe: (callback: () => void) => () => void
+ notifyOnline: () => void
+}
+
+export interface CreateOfflineTransactionOptions {
+ id?: string
+ mutationFnName: string
+ autoCommit?: boolean
+ idempotencyKey?: string
+ metadata?: Record
+}
+
+export interface CreateOfflineActionOptions {
+ mutationFnName: string
+ onMutate: (variables: T) => void
+}
+
+export class NonRetriableError extends Error {
+ constructor(message: string) {
+ super(message)
+ this.name = `NonRetriableError`
+ }
+}
diff --git a/packages/offline-transactions/tests/OfflineExecutor.test.ts b/packages/offline-transactions/tests/OfflineExecutor.test.ts
new file mode 100644
index 000000000..da8c8bbb6
--- /dev/null
+++ b/packages/offline-transactions/tests/OfflineExecutor.test.ts
@@ -0,0 +1,76 @@
+import { beforeEach, describe, expect, it, vi } from "vitest"
+import { LocalStorageAdapter, startOfflineExecutor } from "../src/index"
+import type { OfflineConfig } from "../src/types"
+
+describe(`OfflineExecutor`, () => {
+ let mockCollection: any
+ let mockMutationFn: any
+ let config: OfflineConfig
+
+ beforeEach(() => {
+ mockCollection = {
+ id: `test-collection`,
+ insert: vi.fn(),
+ update: vi.fn(),
+ delete: vi.fn(),
+ }
+
+ mockMutationFn = vi.fn().mockResolvedValue(undefined)
+
+ config = {
+ collections: {
+ "test-collection": mockCollection,
+ },
+ mutationFns: {
+ syncData: mockMutationFn,
+ },
+ storage: new LocalStorageAdapter(),
+ }
+ })
+
+ it(`should create an offline executor`, () => {
+ const executor = startOfflineExecutor(config)
+
+ expect(executor).toBeDefined()
+ expect(executor.isOfflineEnabled).toBeDefined()
+ })
+
+ it(`should create offline transactions`, () => {
+ const executor = startOfflineExecutor(config)
+
+ const transaction = executor.createOfflineTransaction({
+ mutationFnName: `syncData`,
+ })
+
+ expect(transaction).toBeDefined()
+ expect(transaction.id).toBeDefined()
+ })
+
+ it(`should create offline actions`, () => {
+ const executor = startOfflineExecutor(config)
+
+ const action = executor.createOfflineAction({
+ mutationFnName: `syncData`,
+ onMutate: (data: any) => {
+ mockCollection.insert(data)
+ },
+ })
+
+ expect(action).toBeDefined()
+ expect(typeof action).toBe(`function`)
+ })
+
+ it(`should return empty outbox initially`, async () => {
+ const executor = startOfflineExecutor(config)
+
+ const transactions = await executor.peekOutbox()
+
+ expect(transactions).toEqual([])
+ })
+
+ it(`should dispose cleanly`, () => {
+ const executor = startOfflineExecutor(config)
+
+ expect(() => executor.dispose()).not.toThrow()
+ })
+})
diff --git a/packages/offline-transactions/tests/harness.ts b/packages/offline-transactions/tests/harness.ts
new file mode 100644
index 000000000..dd47153ac
--- /dev/null
+++ b/packages/offline-transactions/tests/harness.ts
@@ -0,0 +1,271 @@
+import { createCollection } from "@tanstack/db"
+import { startOfflineExecutor } from "../src/index"
+import type { ChangeMessage, Collection, PendingMutation } from "@tanstack/db"
+import type {
+ LeaderElection,
+ OfflineConfig,
+ OfflineMutationFnParams,
+ StorageAdapter,
+} from "../src/types"
+
+export class FakeStorageAdapter implements StorageAdapter {
+ private store = new Map()
+
+ async get(key: string): Promise {
+ return Promise.resolve(this.store.has(key) ? this.store.get(key)! : null)
+ }
+
+ async set(key: string, value: string): Promise {
+ this.store.set(key, value)
+ return Promise.resolve()
+ }
+
+ async delete(key: string): Promise {
+ this.store.delete(key)
+ return Promise.resolve()
+ }
+
+ async keys(): Promise> {
+ return Promise.resolve(Array.from(this.store.keys()))
+ }
+
+ async clear(): Promise {
+ this.store.clear()
+ return Promise.resolve()
+ }
+
+ snapshot(): Record {
+ return Object.fromEntries(this.store.entries())
+ }
+}
+
+export interface TestItem {
+ id: string
+ value: string
+ completed: boolean
+ updatedAt: Date
+}
+
+interface SyncController {
+ begin: () => void
+ write: (message: Omit, `key`>) => void
+ commit: () => void
+ markReady: () => void
+}
+
+class FakeLeaderElection implements LeaderElection {
+ private listeners = new Set<(isLeader: boolean) => void>()
+ private leader = true
+
+ // eslint-disable-next-line
+ async requestLeadership(): Promise {
+ this.notify(this.leader)
+ return this.leader
+ }
+
+ releaseLeadership(): void {
+ this.leader = false
+ this.notify(false)
+ }
+
+ isLeader(): boolean {
+ return this.leader
+ }
+
+ onLeadershipChange(callback: (isLeader: boolean) => void): () => void {
+ this.listeners.add(callback)
+ callback(this.leader)
+ return () => {
+ this.listeners.delete(callback)
+ }
+ }
+
+ setLeader(isLeader: boolean): void {
+ this.leader = isLeader
+ this.notify(isLeader)
+ }
+
+ private notify(isLeader: boolean): void {
+ for (const listener of this.listeners) {
+ listener(isLeader)
+ }
+ }
+}
+
+type TestMutationFn = (
+ params: OfflineMutationFnParams & { attempt: number }
+) => Promise
+
+interface TestOfflineEnvironmentOptions {
+ mutationFnName?: string
+ mutationFn?: TestMutationFn
+ storage?: FakeStorageAdapter
+ config?: Partial
+}
+
+function createDefaultCollection(): {
+ collection: Collection
+ controller: SyncController
+} {
+ let controller!: SyncController
+
+ const collection = createCollection({
+ id: `test-items`,
+ getKey: (item) => item.id,
+ startSync: true,
+ sync: {
+ sync: (params) => {
+ controller = {
+ begin: params.begin,
+ write: params.write,
+ commit: params.commit,
+ markReady: params.markReady,
+ }
+ params.markReady()
+ },
+ },
+ })
+
+ return { collection, controller }
+}
+
+export function createTestOfflineEnvironment(
+ options: TestOfflineEnvironmentOptions = {}
+): {
+ executor: ReturnType
+ storage: FakeStorageAdapter
+ collection: Collection
+ mutationFnName: string
+ mutationCalls: Array
+ waitForLeader: () => Promise
+ leader: FakeLeaderElection
+ serverState: Map
+ applyMutations: (mutations: Array>) => void
+} {
+ const mutationFnName = options.mutationFnName ?? `syncData`
+ const storage = options.storage ?? new FakeStorageAdapter()
+ const mutationCalls: Array = []
+ const attemptCounter = new Map()
+
+ const { collection, controller } = createDefaultCollection()
+ const serverState = new Map()
+
+ const applyMutations = (mutations: Array>) => {
+ controller.begin()
+
+ for (const mutation of mutations) {
+ switch (mutation.type) {
+ case `insert`: {
+ const value = mutation.modified
+ serverState.set(value.id, value)
+ controller.write({ type: `insert`, value })
+ break
+ }
+ case `update`: {
+ const value = mutation.modified
+ serverState.set(value.id, value)
+ controller.write({ type: `update`, value })
+ break
+ }
+ case `delete`: {
+ const original = mutation.original as TestItem | undefined
+ const fallbackIdFromKey =
+ (typeof mutation.key === `string` ? mutation.key : undefined) ??
+ mutation.globalKey.split(`:`).pop()
+ const id = original?.id ?? fallbackIdFromKey
+
+ if (!id) {
+ throw new Error(
+ `Unable to determine id for delete mutation ${mutation.globalKey}`
+ )
+ }
+
+ const previousValue = serverState.get(id)
+ serverState.delete(id)
+
+ const emittedValue: TestItem = previousValue ?? {
+ id,
+ value: original?.value ?? ``,
+ completed: original?.completed ?? false,
+ updatedAt: original?.updatedAt ?? new Date(),
+ }
+
+ controller.write({
+ type: `delete`,
+ value: emittedValue,
+ })
+ break
+ }
+ }
+ }
+
+ controller.commit()
+ controller.markReady()
+ }
+
+ const defaultMutation: TestMutationFn = (params) => {
+ const mutations = params.transaction.mutations as Array<
+ PendingMutation
+ >
+
+ applyMutations(mutations)
+
+ return { ok: true, mutations }
+ }
+
+ const mutationFn: TestMutationFn = options.mutationFn ?? defaultMutation
+
+ const leader = new FakeLeaderElection()
+
+ const wrappedMutation = async (
+ params: OfflineMutationFnParams
+ ): Promise => {
+ const currentAttempt = (attemptCounter.get(params.idempotencyKey) ?? 0) + 1
+ attemptCounter.set(params.idempotencyKey, currentAttempt)
+ const extendedParams = { ...params, attempt: currentAttempt }
+ mutationCalls.push(extendedParams)
+ return mutationFn(extendedParams)
+ }
+
+ const config: OfflineConfig = {
+ collections: {
+ ...(options.config?.collections ?? {}),
+ [collection.id]: collection,
+ },
+ mutationFns: {
+ ...(options.config?.mutationFns ?? {}),
+ [mutationFnName]: wrappedMutation,
+ },
+ storage,
+ maxConcurrency: options.config?.maxConcurrency,
+ jitter: options.config?.jitter,
+ beforeRetry: options.config?.beforeRetry,
+ onUnknownMutationFn: options.config?.onUnknownMutationFn,
+ onLeadershipChange: options.config?.onLeadershipChange,
+ leaderElection: options.config?.leaderElection ?? leader,
+ }
+
+ const executor = startOfflineExecutor(config)
+
+ const waitForLeader = async () => {
+ const start = Date.now()
+ while (!executor.isOfflineEnabled) {
+ if (Date.now() - start > 1000) {
+ throw new Error(`Executor did not become leader within timeout`)
+ }
+ await new Promise((resolve) => setTimeout(resolve, 10))
+ }
+ }
+
+ return {
+ executor,
+ storage,
+ collection,
+ mutationFnName,
+ mutationCalls,
+ waitForLeader,
+ leader,
+ serverState,
+ applyMutations,
+ }
+}
diff --git a/packages/offline-transactions/tests/offline-e2e.test.ts b/packages/offline-transactions/tests/offline-e2e.test.ts
new file mode 100644
index 000000000..57277d7bc
--- /dev/null
+++ b/packages/offline-transactions/tests/offline-e2e.test.ts
@@ -0,0 +1,443 @@
+import { describe, expect, it } from "vitest"
+import { NonRetriableError } from "../src/types"
+import { FakeStorageAdapter, createTestOfflineEnvironment } from "./harness"
+import type { TestItem } from "./harness"
+import type { OfflineMutationFnParams } from "../src/types"
+import type { PendingMutation } from "@tanstack/db"
+
+const flushMicrotasks = () => new Promise((resolve) => setTimeout(resolve, 0))
+
+const waitUntil = async (
+ predicate: () => boolean | Promise,
+ timeoutMs = 5000,
+ intervalMs = 20
+) => {
+ const deadline = Date.now() + timeoutMs
+ while (Date.now() < deadline) {
+ if (await predicate()) {
+ return
+ }
+ await new Promise((resolve) => setTimeout(resolve, intervalMs))
+ }
+ throw new Error(`Timed out waiting for condition`)
+}
+
+describe(`offline executor end-to-end`, () => {
+ it(`resolves waiting promises for successful transactions`, async () => {
+ const env = createTestOfflineEnvironment()
+
+ await env.waitForLeader()
+
+ const offlineTx = env.executor.createOfflineTransaction({
+ mutationFnName: env.mutationFnName,
+ autoCommit: false,
+ })
+
+ const waitPromise = env.executor.waitForTransactionCompletion(offlineTx.id)
+
+ const now = new Date()
+ offlineTx.mutate(() => {
+ env.collection.insert({
+ id: `item-1`,
+ value: `hello`,
+ completed: false,
+ updatedAt: now,
+ })
+ })
+
+ await offlineTx.commit()
+
+ await expect(waitPromise).resolves.toBeUndefined()
+
+ const outboxEntries = await env.executor.peekOutbox()
+ expect(outboxEntries).toEqual([])
+
+ expect(env.mutationCalls.length).toBeGreaterThanOrEqual(1)
+ const call = env.mutationCalls[env.mutationCalls.length - 1]!
+ expect(call.transaction.mutations).toHaveLength(1)
+ expect(call.transaction.mutations[0].key).toBe(`item-1`)
+ const stored = env.collection.get(`item-1`)
+ expect(stored?.value).toBe(`hello`)
+ expect(env.serverState.get(`item-1`)?.value).toBe(`hello`)
+
+ env.executor.dispose()
+ })
+
+ it(`retries queued transactions when backend resumes`, async () => {
+ let online = false
+ const env = createTestOfflineEnvironment({
+ mutationFn: (params) => {
+ const runtimeOnline = online
+ const mutations = params.transaction.mutations as Array<
+ PendingMutation
+ >
+ if (!runtimeOnline) {
+ throw new Error(`offline`)
+ }
+ env.applyMutations(mutations)
+ return { ok: true, mutations }
+ },
+ })
+
+ await env.waitForLeader()
+
+ const offlineTx = env.executor.createOfflineTransaction({
+ mutationFnName: env.mutationFnName,
+ autoCommit: false,
+ })
+
+ const now = new Date()
+ offlineTx.mutate(() => {
+ env.collection.insert({
+ id: `queued-item`,
+ value: `queued`,
+ completed: false,
+ updatedAt: now,
+ })
+ })
+
+ // Commit should not throw for retriable errors - it persists to outbox
+ const commitPromise = offlineTx.commit()
+
+ // Wait a bit for the transaction to be processed
+ await flushMicrotasks()
+
+ // Check that the transaction was attempted once
+ expect(env.mutationCalls.length).toBe(1)
+
+ // Check that the transaction is in the outbox (persisted for retry)
+ let outboxEntries = await env.executor.peekOutbox()
+ expect(outboxEntries.length).toBe(1)
+ expect(outboxEntries[0].id).toBe(offlineTx.id)
+
+ // Now bring the system back online
+ online = true
+ env.executor.notifyOnline()
+
+ // Wait for the retry to succeed
+ await waitUntil(() => env.mutationCalls.length >= 2)
+
+ // The original commit promise should now resolve
+ await expect(commitPromise).resolves.toBeDefined()
+
+ // Check that the transaction completed successfully
+ outboxEntries = await env.executor.peekOutbox()
+ expect(outboxEntries).toEqual([])
+
+ outboxEntries = await env.executor.peekOutbox()
+ expect(outboxEntries).toEqual([])
+ expect(env.mutationCalls.length).toBeGreaterThanOrEqual(2)
+ expect(env.serverState.get(`queued-item`)?.value).toBe(`queued`)
+
+ env.executor.dispose()
+ })
+
+ it(`rejects waiting promises for permanent failures and rolls back optimistic state`, async () => {
+ const error = new NonRetriableError(`permanent`)
+ const env = createTestOfflineEnvironment({
+ mutationFn: () => {
+ throw error
+ },
+ })
+
+ await env.waitForLeader()
+
+ const offlineTx = env.executor.createOfflineTransaction({
+ mutationFnName: env.mutationFnName,
+ autoCommit: false,
+ })
+
+ const waitPromise = env.executor.waitForTransactionCompletion(offlineTx.id)
+
+ offlineTx.mutate(() => {
+ env.collection.insert({
+ id: `perm-item`,
+ value: `nope`,
+ completed: false,
+ updatedAt: new Date(),
+ })
+ })
+
+ await expect(offlineTx.commit()).rejects.toThrow(`permanent`)
+ await expect(waitPromise).rejects.toThrow(`permanent`)
+
+ const outboxEntries = await env.executor.peekOutbox()
+ expect(outboxEntries).toEqual([])
+ expect(env.collection.get(`perm-item`)).toBeUndefined()
+ expect(env.serverState.get(`perm-item`)).toBeUndefined()
+
+ env.executor.dispose()
+ })
+
+ it(`replays persisted transactions on startup`, async () => {
+ const storage = new FakeStorageAdapter()
+
+ const offlineErrorEnv = createTestOfflineEnvironment({
+ storage,
+ mutationFn: () => {
+ throw new Error(`offline`)
+ },
+ })
+
+ await offlineErrorEnv.waitForLeader()
+
+ const offlineTx = offlineErrorEnv.executor.createOfflineTransaction({
+ mutationFnName: offlineErrorEnv.mutationFnName,
+ autoCommit: false,
+ })
+
+ offlineTx.mutate(() => {
+ offlineErrorEnv.collection.insert({
+ id: `persisted`,
+ value: `from-outbox`,
+ completed: false,
+ updatedAt: new Date(),
+ })
+ })
+
+ // Start the commit - it will persist to outbox and keep retrying
+ // We don't await it because it will never complete (mutation always fails)
+ offlineTx.commit()
+
+ // Wait for the transaction to be persisted to outbox
+ await waitUntil(async () => {
+ const pendingEntries = await offlineErrorEnv.executor.peekOutbox()
+ return pendingEntries.length === 1
+ }, 5000)
+
+ // Verify it's in the outbox
+ const outboxEntries = await offlineErrorEnv.executor.peekOutbox()
+ expect(outboxEntries.length).toBe(1)
+ expect(outboxEntries[0].id).toBe(offlineTx.id)
+
+ offlineErrorEnv.executor.dispose()
+
+ const replayEnv = createTestOfflineEnvironment({
+ storage,
+ mutationFn: (params: OfflineMutationFnParams & { attempt: number }) => {
+ const mutations = params.transaction.mutations as Array<
+ PendingMutation
+ >
+ replayEnv.applyMutations(mutations)
+ return { ok: true, mutations }
+ },
+ })
+
+ await replayEnv.waitForLeader()
+ await waitUntil(async () => {
+ const entries = await replayEnv.executor.peekOutbox()
+ return entries.length === 0
+ })
+ expect(replayEnv.serverState.get(`persisted`)?.value).toBe(`from-outbox`)
+
+ replayEnv.executor.dispose()
+ })
+
+ it(`serializes transactions targeting the same key`, async () => {
+ const pendingResolvers: Array<() => void> = []
+ const env = createTestOfflineEnvironment({
+ mutationFn: async (params) => {
+ const mutations = params.transaction.mutations as Array<
+ PendingMutation
+ >
+
+ await new Promise((resolve) => {
+ pendingResolvers.push(() => {
+ env.applyMutations(mutations)
+ resolve()
+ })
+ })
+
+ return { ok: true, mutations }
+ },
+ })
+
+ await env.waitForLeader()
+
+ const firstTx = env.executor.createOfflineTransaction({
+ mutationFnName: env.mutationFnName,
+ autoCommit: false,
+ })
+ const waitFirst = env.executor.waitForTransactionCompletion(firstTx.id)
+ firstTx.mutate(() => {
+ env.collection.insert({
+ id: `shared`,
+ value: `v1`,
+ completed: false,
+ updatedAt: new Date(),
+ })
+ })
+ const commitFirst = firstTx.commit()
+
+ await flushMicrotasks()
+ expect(env.mutationCalls.length).toBe(1)
+ expect(pendingResolvers.length).toBe(1)
+
+ const secondTx = env.executor.createOfflineTransaction({
+ mutationFnName: env.mutationFnName,
+ autoCommit: false,
+ })
+ const waitSecond = env.executor.waitForTransactionCompletion(secondTx.id)
+ secondTx.mutate(() => {
+ env.collection.update(`shared`, (draft) => {
+ draft.value = `v2`
+ draft.updatedAt = new Date()
+ })
+ })
+ const commitSecond = secondTx.commit()
+
+ await flushMicrotasks()
+ expect(env.mutationCalls.length).toBe(1)
+ expect(pendingResolvers.length).toBe(1)
+
+ pendingResolvers.shift()?.()
+ await commitFirst
+ await waitFirst
+ await waitUntil(() => env.mutationCalls.length >= 2)
+ expect(pendingResolvers.length).toBe(1)
+
+ pendingResolvers.shift()?.()
+ await commitSecond
+ await waitSecond
+ await waitUntil(() => env.serverState.get(`shared`)?.value === `v2`)
+
+ env.executor.dispose()
+ })
+
+ it(`processes mutations sequentially regardless of keys`, async () => {
+ const pendingResolvers: Array<() => void> = []
+ // eslint-disable-next-line prefer-const
+ let env: ReturnType | undefined
+
+ const deferredMutation = async (
+ params: OfflineMutationFnParams & { attempt: number }
+ ) => {
+ const runtimeEnv = env
+ if (!runtimeEnv) {
+ throw new Error(`env not initialized`)
+ }
+
+ const mutations = params.transaction.mutations as Array<
+ PendingMutation
+ >
+
+ await new Promise((resolve) => {
+ pendingResolvers.push(() => {
+ runtimeEnv.applyMutations(mutations)
+ resolve()
+ })
+ })
+
+ return { ok: true, mutations }
+ }
+
+ env = createTestOfflineEnvironment({
+ mutationFn: deferredMutation,
+ })
+
+ const runtimeEnv = env
+
+ await runtimeEnv.waitForLeader()
+
+ const firstTx = runtimeEnv.executor.createOfflineTransaction({
+ mutationFnName: runtimeEnv.mutationFnName,
+ autoCommit: false,
+ })
+ const waitFirst = runtimeEnv.executor.waitForTransactionCompletion(
+ firstTx.id
+ )
+ firstTx.mutate(() => {
+ runtimeEnv.collection.insert({
+ id: `first`,
+ value: `1`,
+ completed: false,
+ updatedAt: new Date(),
+ })
+ })
+ const commitFirst = firstTx.commit()
+
+ const secondTx = runtimeEnv.executor.createOfflineTransaction({
+ mutationFnName: runtimeEnv.mutationFnName,
+ autoCommit: false,
+ })
+ const waitSecond = runtimeEnv.executor.waitForTransactionCompletion(
+ secondTx.id
+ )
+ secondTx.mutate(() => {
+ runtimeEnv.collection.insert({
+ id: `second`,
+ value: `2`,
+ completed: false,
+ updatedAt: new Date(),
+ })
+ })
+ const commitSecond = secondTx.commit()
+
+ await flushMicrotasks()
+ // With sequential processing, only one transaction executes at a time
+ expect(runtimeEnv.mutationCalls.length).toBe(1)
+ expect(pendingResolvers.length).toBe(1)
+
+ // Resolve the first transaction
+ pendingResolvers.shift()?.()
+ // Wait for the second transaction to start
+ await waitUntil(() => runtimeEnv.mutationCalls.length >= 2)
+ expect(pendingResolvers.length).toBe(1)
+
+ // Resolve the second transaction
+ pendingResolvers.shift()?.()
+ await Promise.all([commitFirst, commitSecond, waitFirst, waitSecond])
+
+ expect(runtimeEnv.serverState.get(`first`)?.value).toBe(`1`)
+ expect(runtimeEnv.serverState.get(`second`)?.value).toBe(`2`)
+
+ runtimeEnv.executor.dispose()
+ })
+
+ it(`executes transactions online-only when not leader`, async () => {
+ const env = createTestOfflineEnvironment()
+
+ // Set this tab to not be leader
+ env.leader.setLeader(false)
+
+ // Give the executor a moment to react to leadership change
+ await flushMicrotasks()
+
+ // Should not be offline enabled when not leader
+ expect(env.executor.isOfflineEnabled).toBe(false)
+
+ const offlineTx = env.executor.createOfflineTransaction({
+ mutationFnName: env.mutationFnName,
+ autoCommit: false,
+ })
+
+ const now = new Date()
+ offlineTx.mutate(() => {
+ env.collection.insert({
+ id: `non-leader-item`,
+ value: `online-only`,
+ completed: false,
+ updatedAt: now,
+ })
+ })
+
+ // Should execute immediately online without persisting to outbox
+ await offlineTx.commit()
+
+ // Should have called the mutation function
+ expect(env.mutationCalls.length).toBe(1)
+ const call = env.mutationCalls[0]!
+ expect(call.transaction.mutations).toHaveLength(1)
+ expect(call.transaction.mutations[0].key).toBe(`non-leader-item`)
+
+ // Should have applied to both local and server state
+ expect(env.collection.get(`non-leader-item`)?.value).toBe(`online-only`)
+ expect(env.serverState.get(`non-leader-item`)?.value).toBe(`online-only`)
+
+ // Should NOT have persisted to outbox
+ const outboxEntries = await env.executor.peekOutbox()
+ expect(outboxEntries).toEqual([])
+
+ env.executor.dispose()
+ })
+})
diff --git a/packages/offline-transactions/tests/setup.ts b/packages/offline-transactions/tests/setup.ts
new file mode 100644
index 000000000..be67b1894
--- /dev/null
+++ b/packages/offline-transactions/tests/setup.ts
@@ -0,0 +1,67 @@
+import { vi } from "vitest"
+
+// Mock browser APIs that might not be available in test environment
+Object.defineProperty(global, `crypto`, {
+ value: {
+ randomUUID: () => Math.random().toString(36).substring(2, 15),
+ },
+})
+
+Object.defineProperty(global, `navigator`, {
+ value: {
+ onLine: true,
+ locks: {
+ request: vi.fn().mockResolvedValue(false),
+ },
+ },
+})
+
+Object.defineProperty(global, `BroadcastChannel`, {
+ value: vi.fn().mockImplementation(() => ({
+ addEventListener: vi.fn(),
+ removeEventListener: vi.fn(),
+ postMessage: vi.fn(),
+ close: vi.fn(),
+ })),
+})
+
+Object.defineProperty(global, `indexedDB`, {
+ value: {
+ open: vi.fn().mockReturnValue({
+ onerror: null,
+ onsuccess: null,
+ onupgradeneeded: null,
+ result: null,
+ error: new Error(`IndexedDB not available in test environment`),
+ }),
+ },
+})
+
+Object.defineProperty(global, `localStorage`, {
+ value: {
+ getItem: vi.fn(),
+ setItem: vi.fn(),
+ removeItem: vi.fn(),
+ key: vi.fn(),
+ length: 0,
+ },
+})
+
+Object.defineProperty(global, `document`, {
+ value: {
+ visibilityState: `visible`,
+ addEventListener: vi.fn(),
+ removeEventListener: vi.fn(),
+ },
+})
+
+Object.defineProperty(global, `window`, {
+ value: {
+ addEventListener: vi.fn(),
+ removeEventListener: vi.fn(),
+ setTimeout: global.setTimeout,
+ clearTimeout: global.clearTimeout,
+ setInterval: global.setInterval,
+ clearInterval: global.clearInterval,
+ },
+})
diff --git a/packages/offline-transactions/tsconfig.json b/packages/offline-transactions/tsconfig.json
new file mode 100644
index 000000000..648131b1e
--- /dev/null
+++ b/packages/offline-transactions/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist",
+ "rootDir": "."
+ },
+ "include": ["src/**/*", "tests/**/*", "*.ts"],
+ "exclude": ["dist", "node_modules"]
+}
diff --git a/packages/offline-transactions/vite.config.ts b/packages/offline-transactions/vite.config.ts
new file mode 100644
index 000000000..c7968f28a
--- /dev/null
+++ b/packages/offline-transactions/vite.config.ts
@@ -0,0 +1,21 @@
+import { defineConfig, mergeConfig } from "vitest/config"
+import { tanstackViteConfig } from "@tanstack/config/vite"
+import packageJson from "./package.json"
+
+const config = defineConfig({
+ test: {
+ name: packageJson.name,
+ dir: `./tests`,
+ environment: `jsdom`,
+ coverage: { enabled: true, provider: `istanbul`, include: [`src/**/*`] },
+ typecheck: { enabled: true },
+ },
+})
+
+export default mergeConfig(
+ config,
+ tanstackViteConfig({
+ entry: `./src/index.ts`,
+ srcDir: `./src`,
+ })
+)
diff --git a/packages/offline-transactions/vitest.config.ts b/packages/offline-transactions/vitest.config.ts
new file mode 100644
index 000000000..197dd46ae
--- /dev/null
+++ b/packages/offline-transactions/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config"
+
+export default defineConfig({
+ test: {
+ globals: true,
+ environment: `jsdom`,
+ setupFiles: [`./tests/setup.ts`],
+ },
+})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ee0d19ba2..01b098f65 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,64 +4,72 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
+overrides:
+ '@tanstack/db': workspace:*
+ '@tanstack/query-db-collection': workspace:*
+ '@tanstack/react-db': workspace:*
+ '@tanstack/offline-transactions': workspace:*
+
+pnpmfileChecksum: sha256-PWDKLEtYr7WAzwKAKmFednYERF5OFDKcRonW93aOwc8=
+
importers:
.:
devDependencies:
'@changesets/cli':
specifier: ^2.29.7
- version: 2.29.7(@types/node@22.18.8)
+ version: 2.29.7(@types/node@22.18.6)
'@eslint/js':
specifier: ^9.36.0
version: 9.36.0
'@stylistic/eslint-plugin':
specifier: ^4.4.1
- version: 4.4.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 4.4.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@svitejs/changesets-changelog-github-compact':
specifier: ^1.2.0
version: 1.2.0(encoding@0.1.13)
'@tanstack/config':
specifier: ^0.20.3
- version: 0.20.3(@types/node@22.18.8)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(rollup@4.52.3)(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 0.20.3(@types/node@22.18.6)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@testing-library/jest-dom':
specifier: ^6.8.0
- version: 6.9.0
+ version: 6.8.0
'@types/node':
specifier: ^22.18.1
- version: 22.18.8
+ version: 22.18.6
'@types/react':
specifier: ^19.1.15
- version: 19.1.16
+ version: 19.2.0
'@types/react-dom':
specifier: ^19.1.9
- version: 19.1.9(@types/react@19.1.16)
+ version: 19.1.9(@types/react@19.2.0)
'@types/use-sync-external-store':
specifier: ^1.5.0
version: 1.5.0
'@typescript-eslint/eslint-plugin':
specifier: ^8.45.0
- version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@typescript-eslint/parser':
specifier: ^8.45.0
- version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@vitejs/plugin-react':
- specifier: ^4.7.0
- version: 4.7.0(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ specifier: ^5.0.3
+ version: 5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
eslint:
specifier: ^9.36.0
- version: 9.36.0(jiti@2.6.0)
+ version: 9.36.0(jiti@2.6.1)
eslint-config-prettier:
specifier: ^10.1.8
- version: 10.1.8(eslint@9.36.0(jiti@2.6.0))
+ version: 10.1.8(eslint@9.36.0(jiti@2.6.1))
eslint-import-resolver-typescript:
specifier: ^4.4.4
- version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))
+ version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))
eslint-plugin-prettier:
specifier: ^5.5.4
- version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2)
+ version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2)
eslint-plugin-react:
specifier: ^7.37.5
- version: 7.37.5(eslint@9.36.0(jiti@2.6.0))
+ version: 7.37.5(eslint@9.36.0(jiti@2.6.1))
husky:
specifier: ^9.1.7
version: 9.1.7
@@ -70,7 +78,7 @@ importers:
version: 27.0.0(postcss@8.5.6)
knip:
specifier: ^5.64.1
- version: 5.64.1(@types/node@22.18.8)(typescript@5.9.3)
+ version: 5.64.1(@types/node@22.18.6)(typescript@5.9.2)
lint-staged:
specifier: ^15.5.2
version: 15.5.2
@@ -97,13 +105,13 @@ importers:
version: 0.2.15
typescript:
specifier: ^5.9.2
- version: 5.9.3
+ version: 5.9.2
vite:
- specifier: ^6.3.6
- version: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ specifier: ^7.1.7
+ version: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
zod:
specifier: ^3.25.76
version: 3.25.76
@@ -146,10 +154,10 @@ importers:
devDependencies:
'@angular/build':
specifier: ^20.3.3
- version: 20.3.3(@angular/compiler-cli@20.3.2(@angular/compiler@20.3.2)(typescript@5.8.3))(@angular/compiler@20.3.2)(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.2(@angular/common@20.3.2(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.6.1)(chokidar@4.0.3)(jiti@2.6.0)(karma@6.4.4)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.17)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)
+ version: 20.3.3(@angular/compiler-cli@20.3.2(@angular/compiler@20.3.2)(typescript@5.8.3))(@angular/compiler@20.3.2)(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.2(@angular/common@20.3.2(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.5.2)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.17)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)
'@angular/cli':
specifier: ^20.3.3
- version: 20.3.3(@types/node@24.6.1)(chokidar@4.0.3)
+ version: 20.3.3(@types/node@24.5.2)(chokidar@4.0.3)
'@angular/compiler-cli':
specifier: ^20.3.2
version: 20.3.2(@angular/compiler@20.3.2)(typescript@5.8.3)
@@ -187,53 +195,144 @@ importers:
specifier: ~5.8.2
version: 5.8.3
+ examples/react/offline-transactions:
+ dependencies:
+ '@opentelemetry/api':
+ specifier: ^1.9.0
+ version: 1.9.0
+ '@opentelemetry/exporter-trace-otlp-http':
+ specifier: ^0.56.0
+ version: 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation':
+ specifier: ^0.56.0
+ version: 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fetch':
+ specifier: ^0.56.0
+ version: 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources':
+ specifier: ^1.29.0
+ version: 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-web':
+ specifier: ^1.29.0
+ version: 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions':
+ specifier: ^1.29.0
+ version: 1.37.0
+ '@tanstack/offline-transactions':
+ specifier: workspace:*
+ version: link:../../../packages/offline-transactions
+ '@tanstack/query-db-collection':
+ specifier: workspace:*
+ version: link:../../../packages/query-db-collection
+ '@tanstack/react-db':
+ specifier: workspace:*
+ version: link:../../../packages/react-db
+ '@tanstack/react-query':
+ specifier: ^5.89.0
+ version: 5.89.0(react@19.1.1)
+ '@tanstack/react-router':
+ specifier: ^1.131.47
+ version: 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/react-router-devtools':
+ specifier: ^1.131.47
+ version: 1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.31)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)(tiny-invariant@1.3.3)
+ '@tanstack/react-start':
+ specifier: ^1.131.47
+ version: 1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rolldown@1.0.0-beta.38)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ react:
+ specifier: ^19.0.0
+ version: 19.1.1
+ react-dom:
+ specifier: ^19.0.0
+ version: 19.1.1(react@19.1.1)
+ tailwind-merge:
+ specifier: ^2.6.0
+ version: 2.6.0
+ zod:
+ specifier: ^3.24.2
+ version: 3.25.76
+ devDependencies:
+ '@types/node':
+ specifier: ^22.5.4
+ version: 22.18.6
+ '@types/react':
+ specifier: ^19.0.8
+ version: 19.1.13
+ '@types/react-dom':
+ specifier: ^19.0.3
+ version: 19.1.9(@types/react@19.1.13)
+ '@vitejs/plugin-react':
+ specifier: ^5.0.3
+ version: 5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ autoprefixer:
+ specifier: ^10.4.20
+ version: 10.4.21(postcss@8.5.6)
+ chokidar:
+ specifier: ^4.0.3
+ version: 4.0.3
+ postcss:
+ specifier: ^8.5.1
+ version: 8.5.6
+ tailwindcss:
+ specifier: ^3.4.17
+ version: 3.4.17
+ typescript:
+ specifier: ^5.7.2
+ version: 5.9.2
+ vite:
+ specifier: ^7.1.7
+ version: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-tsconfig-paths:
+ specifier: ^5.1.4
+ version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+
examples/react/projects:
dependencies:
'@tailwindcss/vite':
specifier: ^4.1.13
- version: 4.1.13(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 4.1.13(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@tanstack/query-core':
specifier: ^5.90.2
version: 5.90.2
'@tanstack/query-db-collection':
- specifier: ^0.2.24
+ specifier: workspace:*
version: link:../../../packages/query-db-collection
'@tanstack/react-db':
- specifier: ^0.1.25
+ specifier: workspace:*
version: link:../../../packages/react-db
'@tanstack/react-router':
specifier: ^1.132.25
- version: 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@tanstack/react-router-devtools':
specifier: ^1.132.25
- version: 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.27)(@types/node@24.6.1)(csstype@3.1.3)(jiti@2.6.0)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)(solid-js@1.9.9)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
+ version: 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.31)(@types/node@24.5.2)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)(solid-js@1.9.9)(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
'@tanstack/react-router-with-query':
specifier: ^1.130.17
- version: 1.130.17(@tanstack/react-query@5.90.2(react@19.1.1))(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.27)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.130.17(@tanstack/react-query@5.89.0(react@19.1.1))(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.31)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@tanstack/react-start':
specifier: ^1.132.25
- version: 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@tanstack/router-plugin':
specifier: ^1.132.25
- version: 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@trpc/client':
specifier: ^11.6.0
- version: 11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3)
+ version: 11.6.0(@trpc/server@11.6.0(typescript@5.9.2))(typescript@5.9.2)
'@trpc/server':
specifier: ^11.6.0
- version: 11.6.0(typescript@5.9.3)
+ version: 11.6.0(typescript@5.9.2)
better-auth:
specifier: ^1.3.23
version: 1.3.24(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)
dotenv:
specifier: ^17.2.2
- version: 17.2.3
+ version: 17.2.2
drizzle-orm:
specifier: ^0.44.5
- version: 0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
+ version: 0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
drizzle-zod:
specifier: ^0.8.3
- version: 0.8.3(drizzle-orm@0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11)
+ version: 0.8.3(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11)
pg:
specifier: ^8.16.3
version: 8.16.3
@@ -248,17 +347,17 @@ importers:
version: 4.1.13
vite:
specifier: ^7.1.7
- version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
vite-tsconfig-paths:
specifier: ^5.1.4
- version: 5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
zod:
specifier: ^4.1.11
version: 4.1.11
devDependencies:
'@eslint/compat':
specifier: ^1.4.0
- version: 1.4.0(eslint@9.36.0(jiti@2.6.0))
+ version: 1.4.0(eslint@9.36.0(jiti@2.6.1))
'@eslint/js':
specifier: ^9.36.0
version: 9.36.0
@@ -267,25 +366,25 @@ importers:
version: 10.4.1
'@testing-library/react':
specifier: ^16.3.0
- version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@types/pg':
specifier: ^8.15.5
version: 8.15.5
'@types/react':
specifier: ^19.1.15
- version: 19.1.16
+ version: 19.2.0
'@types/react-dom':
specifier: ^19.1.9
- version: 19.1.9(@types/react@19.1.16)
+ version: 19.1.9(@types/react@19.2.0)
'@typescript-eslint/eslint-plugin':
specifier: ^8.45.0
- version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@typescript-eslint/parser':
specifier: ^8.45.0
- version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@vitejs/plugin-react':
specifier: ^5.0.4
- version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 5.0.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
concurrently:
specifier: ^9.2.1
version: 9.2.1
@@ -294,16 +393,16 @@ importers:
version: 0.31.5
eslint:
specifier: ^9.36.0
- version: 9.36.0(jiti@2.6.0)
+ version: 9.36.0(jiti@2.6.1)
eslint-config-prettier:
specifier: ^10.1.8
- version: 10.1.8(eslint@9.36.0(jiti@2.6.0))
+ version: 10.1.8(eslint@9.36.0(jiti@2.6.1))
eslint-plugin-prettier:
specifier: ^5.5.4
- version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2)
+ version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2)
eslint-plugin-react:
specifier: ^7.37.5
- version: 7.37.5(eslint@9.36.0(jiti@2.6.0))
+ version: 7.37.5(eslint@9.36.0(jiti@2.6.1))
globals:
specifier: ^16.4.0
version: 16.4.0
@@ -318,10 +417,10 @@ importers:
version: 4.20.6
typescript:
specifier: ^5.9.2
- version: 5.9.3
+ version: 5.9.2
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
web-vitals:
specifier: ^5.1.0
version: 5.1.0
@@ -342,10 +441,10 @@ importers:
version: link:../../../packages/react-db
'@tanstack/react-router':
specifier: ^1.132.25
- version: 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@tanstack/react-start':
specifier: ^1.132.25
- version: 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@tanstack/trailbase-db-collection':
specifier: workspace:^
version: link:../../../packages/trailbase-db-collection
@@ -354,10 +453,10 @@ importers:
version: 2.8.5
drizzle-orm:
specifier: ^0.44.5
- version: 0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
+ version: 0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
drizzle-zod:
specifier: ^0.8.3
- version: 0.8.3(drizzle-orm@0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11)
+ version: 0.8.3(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11)
express:
specifier: ^4.21.2
version: 4.21.2
@@ -378,7 +477,7 @@ importers:
version: 0.7.4
vite-tsconfig-paths:
specifier: ^5.1.4
- version: 5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
zod:
specifier: ^4.1.11
version: 4.1.11
@@ -388,7 +487,7 @@ importers:
version: 9.36.0
'@tailwindcss/vite':
specifier: ^4.1.13
- version: 4.1.13(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 4.1.13(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@types/cors':
specifier: ^2.8.19
version: 2.8.19
@@ -397,43 +496,43 @@ importers:
version: 4.17.23
'@types/node':
specifier: ^24.5.2
- version: 24.6.1
+ version: 24.5.2
'@types/pg':
specifier: ^8.15.5
version: 8.15.5
'@types/react':
specifier: ^19.1.15
- version: 19.1.16
+ version: 19.2.0
'@types/react-dom':
specifier: ^19.1.9
- version: 19.1.9(@types/react@19.1.16)
+ version: 19.1.9(@types/react@19.2.0)
'@typescript-eslint/eslint-plugin':
specifier: ^8.45.0
- version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@typescript-eslint/parser':
specifier: ^8.45.0
- version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@vitejs/plugin-react':
specifier: ^5.0.3
- version: 5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 5.0.3(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
concurrently:
specifier: ^9.2.1
version: 9.2.1
dotenv:
specifier: ^17.2.2
- version: 17.2.3
+ version: 17.2.2
drizzle-kit:
specifier: ^0.31.5
version: 0.31.5
eslint:
specifier: ^9.36.0
- version: 9.36.0(jiti@2.6.0)
+ version: 9.36.0(jiti@2.6.1)
eslint-plugin-react-hooks:
specifier: ^5.2.0
- version: 5.2.0(eslint@9.36.0(jiti@2.6.0))
+ version: 5.2.0(eslint@9.36.0(jiti@2.6.1))
eslint-plugin-react-refresh:
specifier: ^0.4.22
- version: 0.4.22(eslint@9.36.0(jiti@2.6.0))
+ version: 0.4.23(eslint@9.36.0(jiti@2.6.1))
pg:
specifier: ^8.16.3
version: 8.16.3
@@ -442,10 +541,10 @@ importers:
version: 4.20.6
typescript:
specifier: ^5.9.2
- version: 5.9.3
+ version: 5.9.2
vite:
specifier: ^7.1.7
- version: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
examples/solid/todo:
dependencies:
@@ -456,17 +555,17 @@ importers:
specifier: ^5.90.2
version: 5.90.2
'@tanstack/query-db-collection':
- specifier: ^0.2.22
+ specifier: workspace:*
version: link:../../../packages/query-db-collection
'@tanstack/solid-db':
specifier: ^0.1.23
version: link:../../../packages/solid-db
'@tanstack/solid-router':
specifier: ^1.132.25
- version: 1.132.27(solid-js@1.9.9)
+ version: 1.132.31(solid-js@1.9.9)
'@tanstack/solid-start':
specifier: ^1.132.25
- version: 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(solid-js@1.9.9)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(solid-js@1.9.9)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@tanstack/trailbase-db-collection':
specifier: ^0.1.23
version: link:../../../packages/trailbase-db-collection
@@ -475,10 +574,10 @@ importers:
version: 2.8.5
drizzle-orm:
specifier: ^0.44.5
- version: 0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
+ version: 0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
drizzle-zod:
specifier: ^0.8.3
- version: 0.8.3(drizzle-orm@0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@3.25.76)
+ version: 0.8.3(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11)
express:
specifier: ^4.21.2
version: 4.21.2
@@ -496,14 +595,14 @@ importers:
version: 0.7.4
vite-tsconfig-paths:
specifier: ^5.1.4
- version: 5.1.4(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
devDependencies:
'@eslint/js':
specifier: ^9.36.0
version: 9.36.0
'@tailwindcss/vite':
specifier: ^4.1.13
- version: 4.1.13(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 4.1.13(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@types/cors':
specifier: ^2.8.19
version: 2.8.19
@@ -512,16 +611,16 @@ importers:
version: 4.17.23
'@types/node':
specifier: ^22.18.1
- version: 22.18.8
+ version: 22.18.6
'@types/pg':
specifier: ^8.15.5
version: 8.15.5
'@typescript-eslint/eslint-plugin':
specifier: ^8.45.0
- version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@typescript-eslint/parser':
specifier: ^8.45.0
- version: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
concurrently:
specifier: ^9.2.1
version: 9.2.1
@@ -533,10 +632,10 @@ importers:
version: 0.31.5
eslint:
specifier: ^9.36.0
- version: 9.36.0(jiti@2.6.0)
+ version: 9.36.0(jiti@2.6.1)
eslint-plugin-solid:
specifier: ^0.14.5
- version: 0.14.5(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ version: 0.14.5(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
pg:
specifier: ^8.16.3
version: 8.16.3
@@ -545,13 +644,13 @@ importers:
version: 4.20.6
typescript:
specifier: ^5.9.2
- version: 5.9.3
+ version: 5.9.2
vite:
- specifier: ^6.3.6
- version: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ specifier: ^7.1.7
+ version: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
vite-plugin-solid:
specifier: ^2.11.8
- version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
packages/angular-db:
dependencies:
@@ -576,7 +675,7 @@ importers:
version: 19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.15)(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.15(@angular/common@19.2.15(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.15(rxjs@7.8.2)(zone.js@0.15.1)))
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
rxjs:
specifier: ^7.8.2
version: 7.8.2
@@ -594,11 +693,11 @@ importers:
version: link:../db-ivm
typescript:
specifier: '>=4.7'
- version: 5.9.3
+ version: 5.9.2
devDependencies:
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
arktype:
specifier: ^2.1.22
version: 2.1.22
@@ -616,14 +715,14 @@ importers:
version: 1.8.1
typescript:
specifier: '>=4.7'
- version: 5.9.3
+ version: 5.9.2
devDependencies:
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
packages/electric-db-collection:
dependencies:
@@ -648,7 +747,29 @@ importers:
version: 4.1.12
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+
+ packages/offline-transactions:
+ dependencies:
+ '@opentelemetry/api':
+ specifier: ^1.9.0
+ version: 1.9.0
+ '@tanstack/db':
+ specifier: workspace:*
+ version: link:../db
+ devDependencies:
+ '@types/node':
+ specifier: ^20.0.0
+ version: 20.19.17
+ eslint:
+ specifier: ^8.57.0
+ version: 8.57.1
+ typescript:
+ specifier: ^5.5.4
+ version: 5.9.2
+ vitest:
+ specifier: ^3.2.4
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
packages/query-db-collection:
dependencies:
@@ -660,14 +781,14 @@ importers:
version: link:../db
typescript:
specifier: '>=4.7'
- version: 5.9.3
+ version: 5.9.2
devDependencies:
'@tanstack/query-core':
specifier: ^5.90.2
version: 5.90.2
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
packages/react-db:
dependencies:
@@ -683,19 +804,19 @@ importers:
version: 1.0.10
'@testing-library/react':
specifier: ^16.3.0
- version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@types/react':
specifier: ^19.1.15
- version: 19.1.16
+ version: 19.2.0
'@types/react-dom':
specifier: ^19.1.9
- version: 19.1.9(@types/react@19.1.16)
+ version: 19.1.9(@types/react@19.2.0)
'@types/use-sync-external-store':
specifier: ^1.5.0
version: 1.5.0
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
react:
specifier: ^19.1.1
version: 19.1.1
@@ -722,14 +843,14 @@ importers:
version: 16.19.1(rxjs@7.8.2)(socks@2.8.7)
typescript:
specifier: '>=4.7'
- version: 5.9.3
+ version: 5.9.2
devDependencies:
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
packages/solid-db:
dependencies:
@@ -748,7 +869,7 @@ importers:
version: 0.8.10(solid-js@1.9.9)
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
jsdom:
specifier: ^27.0.0
version: 27.0.0(postcss@8.5.6)
@@ -757,10 +878,10 @@ importers:
version: 1.9.9
vite-plugin-solid:
specifier: ^2.11.8
- version: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
packages/svelte-db:
dependencies:
@@ -770,22 +891,22 @@ importers:
devDependencies:
'@sveltejs/package':
specifier: ^2.5.4
- version: 2.5.4(svelte@5.39.7)(typescript@5.9.3)
+ version: 2.5.4(svelte@5.39.8)(typescript@5.9.2)
'@sveltejs/vite-plugin-svelte':
specifier: ^6.2.1
- version: 6.2.1(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 6.2.1(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
publint:
specifier: ^0.3.13
version: 0.3.13
svelte:
specifier: ^5.39.6
- version: 5.39.7
+ version: 5.39.8
svelte-check:
specifier: ^4.3.2
- version: 4.3.2(picomatch@4.0.3)(svelte@5.39.7)(typescript@5.9.3)
+ version: 4.3.2(picomatch@4.0.3)(svelte@5.39.8)(typescript@5.9.2)
packages/trailbase-db-collection:
dependencies:
@@ -806,14 +927,14 @@ importers:
version: 0.7.4
typescript:
specifier: '>=4.7'
- version: 5.9.3
+ version: 5.9.2
devDependencies:
'@types/debug':
specifier: ^4.1.12
version: 4.1.12
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
packages/vue-db:
dependencies:
@@ -826,13 +947,13 @@ importers:
version: 1.0.10
'@vitejs/plugin-vue':
specifier: ^5.2.4
- version: 5.2.4(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))
+ version: 5.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))
'@vitest/coverage-istanbul':
specifier: ^3.2.4
- version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
vue:
specifier: ^3.5.22
- version: 3.5.22(typescript@5.9.3)
+ version: 3.5.22(typescript@5.9.2)
packages:
@@ -1079,11 +1200,11 @@ packages:
'@ark/util@0.49.0':
resolution: {integrity: sha512-/BtnX7oCjNkxi2vi6y1399b+9xd1jnCrDYhZ61f0a+3X8x8DxlK52VgEEzyuC2UQMPACIfYrmHkhD3lGt2GaMA==}
- '@asamuzakjp/css-color@4.0.5':
- resolution: {integrity: sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==}
+ '@asamuzakjp/css-color@4.0.4':
+ resolution: {integrity: sha512-cKjSKvWGmAziQWbCouOsFwb14mp1betm8Y7Fn+yglDMUUu3r9DCbJ9iJbeFDenLMqFbIMC0pQP8K+B8LAxX3OQ==}
- '@asamuzakjp/dom-selector@6.5.7':
- resolution: {integrity: sha512-cvdTPsi2qC1c22UppvuVmx/PDwuc6+QQkwt9OnwQD6Uotbh//tb2XDF0OoK2V0F4b8d02LIwNp3BieaDMAhIhA==}
+ '@asamuzakjp/dom-selector@6.5.5':
+ resolution: {integrity: sha512-kI2MX9pmImjxWT8nxDZY+MuN6r1jJGe7WxizEbsAEPB/zxfW5wYLIiPG1v3UKgEOOP8EsDkp0ZL99oRFAdPM8g==}
'@asamuzakjp/nwsapi@2.3.9':
resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==}
@@ -1320,6 +1441,10 @@ packages:
'@changesets/write@0.4.0':
resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==}
+ '@cloudflare/kv-asset-handler@0.4.0':
+ resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==}
+ engines: {node: '>=18.0.0'}
+
'@colors/colors@1.5.0':
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
@@ -1868,10 +1993,18 @@ packages:
resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
'@eslint/eslintrc@3.3.1':
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@eslint/js@8.57.1':
+ resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
'@eslint/js@9.36.0':
resolution: {integrity: sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2117,10 +2250,19 @@ packages:
resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
engines: {node: '>=18.18.0'}
+ '@humanwhocodes/config-array@0.13.0':
+ resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+
'@humanwhocodes/module-importer@1.0.1':
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
+ '@humanwhocodes/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
'@humanwhocodes/retry@0.4.3':
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
@@ -2268,6 +2410,9 @@ packages:
'@types/node':
optional: true
+ '@ioredis/commands@1.4.0':
+ resolution: {integrity: sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==}
+
'@isaacs/balanced-match@4.0.1':
resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==}
engines: {node: 20 || >=22}
@@ -2298,6 +2443,9 @@ packages:
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
+ '@jridgewell/source-map@0.3.11':
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
+
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
@@ -2361,6 +2509,11 @@ packages:
'@manypkg/get-packages@1.1.3':
resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
+ '@mapbox/node-pre-gyp@2.0.0':
+ resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==}
+ engines: {node: '>=18'}
+ hasBin: true
+
'@microsoft/api-extractor-model@7.29.6':
resolution: {integrity: sha512-gC0KGtrZvxzf/Rt9oMYD2dHvtN/1KPEYsrQPyMKhLHnlVuO/f4AFN3E4toqZzD2pt4LhkKoYmL2H9tX3yCOyRw==}
@@ -2381,8 +2534,8 @@ packages:
resolution: {integrity: sha512-JPwUKWSsbzx+DLFznf/QZ32Qa+ptfbUlHhRLrBQBAFu9iI1iYvizM4p+zhhRDceSsPutXp4z+R/HPVphlIiclg==}
engines: {node: '>=18'}
- '@mongodb-js/saslprep@1.3.1':
- resolution: {integrity: sha512-6nZrq5kfAz0POWyhljnbWQQJQ5uT8oE2ddX303q1uY0tWsivWKgBDXBBvuFPwOqRRalXJuVO9EjOdVtuhLX0zg==}
+ '@mongodb-js/saslprep@1.3.0':
+ resolution: {integrity: sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==}
'@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==}
@@ -2526,12 +2679,12 @@ packages:
'@napi-rs/wasm-runtime@1.0.5':
resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==}
- '@noble/ciphers@2.0.1':
- resolution: {integrity: sha512-xHK3XHPUW8DTAobU+G0XT+/w+JLM7/8k1UFdB5xg/zTFPnFCobhftzw8wl4Lw2aq/Rvir5pxfZV5fEazmeCJ2g==}
+ '@noble/ciphers@2.0.0':
+ resolution: {integrity: sha512-j/l6jpnpaIBM87cAYPJzi/6TgqmBv9spkqPyCXvRYsu5uxqh6tPJZDnD85yo8VWqzTuTQPgfv7NgT63u7kbwAQ==}
engines: {node: '>= 20.19.0'}
- '@noble/hashes@2.0.1':
- resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==}
+ '@noble/hashes@2.0.0':
+ resolution: {integrity: sha512-h8VUBlE8R42+XIDO229cgisD287im3kdY6nbNZJFjc6ZvKIXPYXe6Vc/t+kyjFdMFyt5JpapzTsEg8n63w5/lw==}
engines: {node: '>= 20.19.0'}
'@nodelib/fs.scandir@2.1.5':
@@ -2602,6 +2755,112 @@ packages:
resolution: {integrity: sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==}
engines: {node: '>=8.0'}
+ '@opentelemetry/api-logs@0.56.0':
+ resolution: {integrity: sha512-Wr39+94UNNG3Ei9nv3pHd4AJ63gq5nSemMRpCd8fPwDL9rN3vK26lzxfH27mw16XzOSO+TpyQwBAMaLxaPWG0g==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/api@1.9.0':
+ resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
+ engines: {node: '>=8.0.0'}
+
+ '@opentelemetry/core@1.29.0':
+ resolution: {integrity: sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/core@1.30.1':
+ resolution: {integrity: sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/exporter-trace-otlp-http@0.56.0':
+ resolution: {integrity: sha512-vqVuJvcwameA0r0cNrRzrZqPLB0otS+95g0XkZdiKOXUo81wYdY6r4kyrwz4nSChqTBEFm0lqi/H2OWGboOa6g==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-fetch@0.56.0':
+ resolution: {integrity: sha512-jKlO8hPwId7I9dNyoBQSzSe5+q4j2cDvDHuM2pJUe6MITRKrATe9IqkJRFZ0+vdFG3gO5NMX4yFqNZ/E4zmLYg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.56.0':
+ resolution: {integrity: sha512-2KkGBKE+FPXU1F0zKww+stnlUxUTlBvLCiWdP63Z9sqXYeNI/ziNzsxAp4LAdUcTQmXjw1IWgvm5CAb/BHy99w==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/otlp-exporter-base@0.56.0':
+ resolution: {integrity: sha512-eURvv0fcmBE+KE1McUeRo+u0n18ZnUeSc7lDlW/dzlqFYasEbsztTK4v0Qf8C4vEY+aMTjPKUxBG0NX2Te3Pmw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/otlp-transformer@0.56.0':
+ resolution: {integrity: sha512-kVkH/W2W7EpgWWpyU5VnnjIdSD7Y7FljQYObAQSKdRcejiwMj2glypZtUdfq1LTJcv4ht0jyTrw1D3CCxssNtQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/resources@1.29.0':
+ resolution: {integrity: sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/resources@1.30.1':
+ resolution: {integrity: sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/sdk-logs@0.56.0':
+ resolution: {integrity: sha512-OS0WPBJF++R/cSl+terUjQH5PebloidB1Jbbecgg2rnCmQbTST9xsRes23bLfDQVRvmegmHqDh884h0aRdJyLw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.4.0 <1.10.0'
+
+ '@opentelemetry/sdk-metrics@1.29.0':
+ resolution: {integrity: sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
+
+ '@opentelemetry/sdk-trace-base@1.29.0':
+ resolution: {integrity: sha512-hEOpAYLKXF3wGJpXOtWsxEtqBgde0SCv+w+jvr3/UusR4ll3QrENEGnSl1WDCyRrpqOQ5NCNOvZch9UFVa7MnQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/sdk-trace-base@1.30.1':
+ resolution: {integrity: sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/sdk-trace-web@1.29.0':
+ resolution: {integrity: sha512-PQVtJ76dsZ7HYBSlgZGIuxFtnKXxNbyHzMnRUxww7V2/6V/qtQN+cvNkqwPVffrUfbvClOnejo08NezAE1y+6g==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/sdk-trace-web@1.30.1':
+ resolution: {integrity: sha512-AUo2e+1uyTGMB36VlbvBqnCogVzQhpC7dRcVVdCrt+cFHLpFRRJcd45J2obGTgs0XiAwNLyq5bhkW3JF2NZA+A==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/semantic-conventions@1.28.0':
+ resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==}
+ engines: {node: '>=14'}
+
+ '@opentelemetry/semantic-conventions@1.37.0':
+ resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==}
+ engines: {node: '>=14'}
+
'@oxc-project/types@0.89.0':
resolution: {integrity: sha512-yuo+ECPIW5Q9mSeNmCDC2im33bfKuwW18mwkaHMQh8KakHYDzj4ci/q7wxf2qS3dMlVVCIyrs3kFtH5LmnlYnw==}
@@ -2760,6 +3019,12 @@ packages:
cpu: [x64]
os: [linux]
+ '@parcel/watcher-wasm@2.5.1':
+ resolution: {integrity: sha512-RJxlQQLkaMMIuWRozy+z2vEqbaQlCuaCgVZIUCzQLYggY22LZbP5Y1+ia+FD724Ids9e+XIyOLXLrLgQSHIthw==}
+ engines: {node: '>= 10.0.0'}
+ bundledDependencies:
+ - napi-wasm
+
'@parcel/watcher-win32-arm64@2.5.1':
resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
engines: {node: '>= 10.0.0'}
@@ -2818,6 +3083,9 @@ packages:
'@peculiar/x509@1.14.0':
resolution: {integrity: sha512-Yc4PDxN3OrxUPiXgU63c+ZRXKGE8YKF2McTciYhUHFtHVB0KMnjeFSU0qpztGhsp4P0uKix4+J2xEpIEDu8oXg==}
+ '@petamoriken/float16@3.9.2':
+ resolution: {integrity: sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog==}
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -2826,6 +3094,15 @@ packages:
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ '@poppinss/colors@4.1.5':
+ resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==}
+
+ '@poppinss/dumper@0.6.4':
+ resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==}
+
+ '@poppinss/exception@1.2.2':
+ resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==}
+
'@protobufjs/aspromise@1.1.2':
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
@@ -2943,8 +3220,8 @@ packages:
cpu: [x64]
os: [win32]
- '@rolldown/pluginutils@1.0.0-beta.27':
- resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
+ '@rolldown/pluginutils@1.0.0-beta.35':
+ resolution: {integrity: sha512-slYrCpoxJUqzFDDNlvrOYRazQUNRvWPjXA17dAOISY3rDMxX6k8K4cj2H+hEYMHF81HO3uNd5rHVigAWRM5dSg==}
'@rolldown/pluginutils@1.0.0-beta.38':
resolution: {integrity: sha512-N/ICGKleNhA5nc9XXQG/kkKHJ7S55u0x0XUJbbkmdCnFuoRkM1Il12q9q0eX19+M7KKUEPw/daUPIRnxhcxAIw==}
@@ -2952,6 +3229,69 @@ packages:
'@rolldown/pluginutils@1.0.0-beta.40':
resolution: {integrity: sha512-s3GeJKSQOwBlzdUrj4ISjJj5SfSh+aqn0wjOar4Bx95iV1ETI7F6S/5hLcfAxZ9kXDcyrAkxPlqmd1ZITttf+w==}
+ '@rollup/plugin-alias@5.1.1':
+ resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-commonjs@28.0.6':
+ resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==}
+ engines: {node: '>=16.0.0 || 14 >= 14.17'}
+ peerDependencies:
+ rollup: ^2.68.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-inject@5.0.5':
+ resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-json@6.1.0':
+ resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-node-resolve@16.0.1':
+ resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.78.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-replace@6.0.2':
+ resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/plugin-terser@0.4.4':
+ resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
'@rollup/pluginutils@5.3.0':
resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
engines: {node: '>=14.0.0'}
@@ -2961,113 +3301,118 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.52.3':
- resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==}
+ '@rollup/rollup-android-arm-eabi@4.52.0':
+ resolution: {integrity: sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.52.3':
- resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==}
+ '@rollup/rollup-android-arm64@4.52.0':
+ resolution: {integrity: sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.52.3':
- resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==}
+ '@rollup/rollup-darwin-arm64@4.50.2':
+ resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-arm64@4.52.0':
+ resolution: {integrity: sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.52.3':
- resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==}
+ '@rollup/rollup-darwin-x64@4.52.0':
+ resolution: {integrity: sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.52.3':
- resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==}
+ '@rollup/rollup-freebsd-arm64@4.52.0':
+ resolution: {integrity: sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.52.3':
- resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==}
+ '@rollup/rollup-freebsd-x64@4.52.0':
+ resolution: {integrity: sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.52.3':
- resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.52.0':
+ resolution: {integrity: sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.52.3':
- resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==}
+ '@rollup/rollup-linux-arm-musleabihf@4.52.0':
+ resolution: {integrity: sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.52.3':
- resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==}
+ '@rollup/rollup-linux-arm64-gnu@4.52.0':
+ resolution: {integrity: sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.52.3':
- resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==}
+ '@rollup/rollup-linux-arm64-musl@4.52.0':
+ resolution: {integrity: sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.52.3':
- resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==}
+ '@rollup/rollup-linux-loong64-gnu@4.52.0':
+ resolution: {integrity: sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.52.3':
- resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==}
+ '@rollup/rollup-linux-ppc64-gnu@4.52.0':
+ resolution: {integrity: sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.52.3':
- resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.52.0':
+ resolution: {integrity: sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.52.3':
- resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==}
+ '@rollup/rollup-linux-riscv64-musl@4.52.0':
+ resolution: {integrity: sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.52.3':
- resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==}
+ '@rollup/rollup-linux-s390x-gnu@4.52.0':
+ resolution: {integrity: sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.52.3':
- resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==}
+ '@rollup/rollup-linux-x64-gnu@4.52.0':
+ resolution: {integrity: sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.52.3':
- resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==}
+ '@rollup/rollup-linux-x64-musl@4.52.0':
+ resolution: {integrity: sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openharmony-arm64@4.52.3':
- resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==}
+ '@rollup/rollup-openharmony-arm64@4.52.0':
+ resolution: {integrity: sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.52.3':
- resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==}
+ '@rollup/rollup-win32-arm64-msvc@4.52.0':
+ resolution: {integrity: sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.52.3':
- resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==}
+ '@rollup/rollup-win32-ia32-msvc@4.52.0':
+ resolution: {integrity: sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.52.3':
- resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==}
+ '@rollup/rollup-win32-x64-gnu@4.52.0':
+ resolution: {integrity: sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.52.3':
- resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==}
+ '@rollup/rollup-win32-x64-msvc@4.52.0':
+ resolution: {integrity: sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==}
cpu: [x64]
os: [win32]
@@ -3137,6 +3482,14 @@ packages:
resolution: {integrity: sha512-Inmfye5opZXe3HI0GaksqBnQiM7glcNySoG6DH1GgkO1Lh9dvuV4XSV9DK02DReUVX39HpcDob9nxHELjECoQw==}
engines: {node: '>=20.0.0'}
+ '@sindresorhus/is@7.1.0':
+ resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==}
+ engines: {node: '>=18'}
+
+ '@sindresorhus/merge-streams@2.3.0':
+ resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
+ engines: {node: '>=18'}
+
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
@@ -3235,6 +3588,9 @@ packages:
'@solidjs/router':
optional: true
+ '@speed-highlight/core@1.2.7':
+ resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==}
+
'@standard-schema/spec@1.0.0':
resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
@@ -3250,8 +3606,8 @@ packages:
peerDependencies:
eslint: '>=9.0.0'
- '@sveltejs/acorn-typescript@1.0.6':
- resolution: {integrity: sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==}
+ '@sveltejs/acorn-typescript@1.0.5':
+ resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==}
peerDependencies:
acorn: ^8.9.0
@@ -3375,8 +3731,14 @@ packages:
resolution: {integrity: sha512-RDz7vI1FSkocPda882nhEQoshU5F2bB5hTV/gXtB6krm/LTqMpK18ngvKtI1gbSd2RbsKCFtpJxqag3lvPgzgg==}
engines: {node: '>=18'}
- '@tanstack/directive-functions-plugin@1.132.21':
- resolution: {integrity: sha512-gNUBOtto6FpCtloBISnBK7OH0GJZsEom4L8IHoRdV2td9F9qodHuuewsOeExtNnCQXfL3b5CfCeFNDlREr/urg==}
+ '@tanstack/directive-functions-plugin@1.131.2':
+ resolution: {integrity: sha512-5Pz6aVPS0BW+0bLvMzWsoajfjI6ZeWqkbVBaQfIbSTm4DOBO05JuQ/pb7W7m3GbCb5TK1a/SKDhuTX6Ag5I7UQ==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ vite: '>=6.0.0'
+
+ '@tanstack/directive-functions-plugin@1.132.31':
+ resolution: {integrity: sha512-u6TaLhTmllnvINZAoc1r7TbZ0H1IgnqGpoN0pUvWrqpKuunAugZO7fwD1TeYApGyB/RmSWarHMMkNbDffvlJvQ==}
engines: {node: '>=12'}
peerDependencies:
vite: '>=6.0.0 || >=7.0.0'
@@ -3385,27 +3747,42 @@ packages:
resolution: {integrity: sha512-2g+PuGR3GuvvCiR3xZs+IMqAvnYU9bvH+jRml0BFBSxHBj22xFCTNvJWhvgj7uICFF9IchDkFUto91xDPMu5cg==}
engines: {node: '>=18'}
- '@tanstack/history@1.132.21':
- resolution: {integrity: sha512-5ziPz3YarKU5cBJoEJ4muV8cy+5W4oWdJMqW7qosMrK5fb9Qfm+QWX+kO3emKJMu4YOUofVu3toEuuD3x1zXKw==}
+ '@tanstack/history@1.131.2':
+ resolution: {integrity: sha512-cs1WKawpXIe+vSTeiZUuSBy8JFjEuDgdMKZFRLKwQysKo8y2q6Q1HvS74Yw+m5IhOW1nTZooa6rlgdfXcgFAaw==}
+ engines: {node: '>=12'}
+
+ '@tanstack/history@1.132.31':
+ resolution: {integrity: sha512-UCHM2uS0t/uSszqPEo+SBSSoQVeQ+LlOWAVBl5SA7+AedeAbKafIPjFn8huZCXNLAYb0WKV2+wETr7lDK9uz7g==}
engines: {node: '>=12'}
'@tanstack/publish-config@0.2.1':
resolution: {integrity: sha512-URVXmXwlZXL75AFyvyOORef1tv2f16dEaFntwLYnBHoKLQMxyWYRzQrnXooxO1xf+GidJuDSZSC6Rc9UX1aK7g==}
engines: {node: '>=18'}
+ '@tanstack/query-core@5.89.0':
+ resolution: {integrity: sha512-joFV1MuPhSLsKfTzwjmPDrp8ENfZ9N23ymFu07nLfn3JCkSHy0CFgsyhHTJOmWaumC/WiNIKM0EJyduCF/Ih/Q==}
+
'@tanstack/query-core@5.90.2':
resolution: {integrity: sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ==}
- '@tanstack/react-query@5.90.2':
- resolution: {integrity: sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw==}
+ '@tanstack/react-query@5.89.0':
+ resolution: {integrity: sha512-SXbtWSTSRXyBOe80mszPxpEbaN4XPRUp/i0EfQK1uyj3KCk/c8FuPJNIRwzOVe/OU3rzxrYtiNabsAmk1l714A==}
peerDependencies:
react: ^18 || ^19
- '@tanstack/react-router-devtools@1.132.27':
- resolution: {integrity: sha512-qLSRWw281HWg+QZtv3MCx3jIoKzY4t4XciWoLOcHZy9W1BKnFu3epI/jXMMvQ/VW9p0OzF69fQXtTFDx2ODCgA==}
+ '@tanstack/react-router-devtools@1.131.47':
+ resolution: {integrity: sha512-lbDUXLvShxC0cjIjzAAUtd+VzLPDJfiEAACykvGnW5dywBD/w20z7Hd8Jx8l/LrYOCI+EY8C6+0UxlnVqF5bdQ==}
engines: {node: '>=12'}
peerDependencies:
- '@tanstack/react-router': ^1.132.27
+ '@tanstack/react-router': ^1.131.47
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
+
+ '@tanstack/react-router-devtools@1.132.31':
+ resolution: {integrity: sha512-EiO+t6s1K8igqqtxCO0GLG6KoJgaIsv9JAZMcJV+z/BspElGQwGDBzTtWYcHd9NOP2Yw7OCkAhM8ihwMbzWJNQ==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ '@tanstack/react-router': ^1.132.31
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
@@ -3419,50 +3796,109 @@ packages:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
- '@tanstack/react-router@1.132.27':
- resolution: {integrity: sha512-fxSm1kxrtl3dQslqqKgYnIbQf7qW4fyWXKQhZYCWBFHO2GT11DWPZTNkTXw5YifOpw2RTmYJBH3C44t1HF95Cw==}
+ '@tanstack/react-router@1.131.47':
+ resolution: {integrity: sha512-yS5rUPjCvWRg+CZRnY7irKiNZEhLeIsNlwuhIdnIX2K7jU9gOc7pOIT8JI2Vo6IAhh/Mr+7aILKLPYxwTRnS5A==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
+
+ '@tanstack/react-router@1.132.31':
+ resolution: {integrity: sha512-bgYgffI9TQhi8Zc/I5DMQEO4WOcDNtSll66Eb3/+k3iuI59ovVB/CiVCGjqdT8+2YBBj2x0saRDjsF00vj5+Yg==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
+
+ '@tanstack/react-start-client@1.131.47':
+ resolution: {integrity: sha512-+UrOvMMK6nf2x9u5PEW8+shx++DdpuZtxVrxXotgiFlyTuDSjNslRP+inlxgrxAWo1lZAZ5ewwL1PCiK1rA3jg==}
engines: {node: '>=12'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
- '@tanstack/react-start-client@1.132.27':
- resolution: {integrity: sha512-Y7usVckKyxoSvToASs7iA48MDFHwdwWXcnWR3VrF7xE11BQX9FBZMC0zoj+mBEuew6tuRik7s4NOMT7FQQH0HQ==}
+ '@tanstack/react-start-client@1.132.31':
+ resolution: {integrity: sha512-yop9TMqLZ2GHLgjw7i5r/jye4PzOgsHMlJYw/wCvwnWiDv3wLDnfdNJaW4YEhaAsUvBvGgje/KuYPiCMhinNjA==}
engines: {node: '>=22.12.0'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
- '@tanstack/react-start-server@1.132.27':
- resolution: {integrity: sha512-ZdUQymY33X8B4pcuqEskVljN4TH3J1miJKd6hCsMLcuA4YoYhkUYsEi5JczjKdVSa8E8flXegt/0ACpc0la7rA==}
+ '@tanstack/react-start-plugin@1.131.47':
+ resolution: {integrity: sha512-NNXgw/JvEXDPoS43A7dONnuNSYDuN0/JtQMVqsQHiSyu/izsCZ3nOpJ43GjECdbvGyajOAlvRhPQ0JWDUTgHPA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ '@vitejs/plugin-react': '>=4.3.4'
+ vite: '>=6.0.0'
+
+ '@tanstack/react-start-server@1.131.47':
+ resolution: {integrity: sha512-eLrIzEy1DqlrGH7zuucUaID2PLsNeyi3KjcdxWD9Eb9/LfXbRRMqzExKqQrdixg03HhZVbXzmmCJS/rw+HaChw==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
+
+ '@tanstack/react-start-server@1.132.31':
+ resolution: {integrity: sha512-LYjYaR4SeapahBquP1RYL/kWL/BoFfTdIwGqxMT+ZjPmNST169k1vD1yUrcGiPL28bYL6Sw75lBRylDfQmNNnQ==}
engines: {node: '>=22.12.0'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
- '@tanstack/react-start@1.132.27':
- resolution: {integrity: sha512-fVpszyUtF982qhYjo899oCcUFcd2kb3Iu1X2DpoIHhqrOVUqwLzGNSQTTVEOKT6PFX2Q2/7ci3BKN1Awb/rdWw==}
+ '@tanstack/react-start@1.131.47':
+ resolution: {integrity: sha512-DrZvRD6gcPVcnV/zExczzhTNfwUhV4eZ9sWcahoI5Lb8xMGNu/Z1gmGxzi5HSLl50lHnDq2uy3aN66cO+YiFpQ==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ '@vitejs/plugin-react': '>=4.3.4'
+ react: '>=18.0.0 || >=19.0.0'
+ react-dom: '>=18.0.0 || >=19.0.0'
+ vite: '>=6.0.0'
+
+ '@tanstack/react-start@1.132.31':
+ resolution: {integrity: sha512-dv2XjvVQdFodMqjh7fIcTdYX75IdISpsz5Qd7KoKbmIZbLzRfFH3Tuas8gBB2aWAFTM14pLgx1uQ71Bbp9qDnA==}
engines: {node: '>=22.12.0'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
vite: '>=7.0.0'
+ '@tanstack/react-store@0.7.5':
+ resolution: {integrity: sha512-A+WZtEnHZpvbKXm8qR+xndNKywBLez2KKKKEQc7w0Qs45GvY1LpRI3BTZNmELwEVim8+Apf99iEDH2J+MUIzlQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
'@tanstack/react-store@0.7.7':
resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tanstack/router-core@1.132.27':
- resolution: {integrity: sha512-mNx+nba7mXc7sJdX+kYH4rSW8f7Jx/+0hPOkX4XAnqiq7I1ng3gGqmGuf4+2BYTG2aD+aTSPExUPczy9VNgRfQ==}
+ '@tanstack/router-core@1.131.47':
+ resolution: {integrity: sha512-ixwowt//SLvnuMoInSxSNCJ41J3S53FLgw8tu5MyXftZ9d7cVOnHoAuSOhKNJNyBDTC2JODC3w/4EH3KDMj6ew==}
engines: {node: '>=12'}
- '@tanstack/router-devtools-core@1.132.27':
- resolution: {integrity: sha512-TE+chd5aSx+tURjIFPhVYNh+hUuKWjoYcP0BYCkcKp3zLN9VfMZh+bKVn1b44jsFUr6gzkbbctBQRZ+Z6oUm6Q==}
+ '@tanstack/router-core@1.132.31':
+ resolution: {integrity: sha512-74W+J5N1NuPcuWDwsBAjCgK4ahtIRaB51KdegYrD1AeSNqiV4u8KzOzHKAAZD01UipQApUbpJbzFrHq0XQ9BHw==}
+ engines: {node: '>=12'}
+
+ '@tanstack/router-devtools-core@1.131.47':
+ resolution: {integrity: sha512-XKeTfZcy5RmlPUUYkidIeK/KIfjSWo1cFp0P9L+LleclbVa6pkIfjocSHqUiHM5wGlxkbC5EzZfLBqs2xTinuA==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ '@tanstack/router-core': ^1.131.47
+ csstype: ^3.0.10
+ solid-js: '>=1.9.5'
+ tiny-invariant: ^1.3.3
+ peerDependenciesMeta:
+ csstype:
+ optional: true
+
+ '@tanstack/router-devtools-core@1.132.31':
+ resolution: {integrity: sha512-GwymJRm21hkluQMjOkXn+mBNPMyWlpzQut8mqEObh1cnF3zUsYT5YkCFV8ePA0jb/YVdjK/AfCAgSlhyIa09IA==}
engines: {node: '>=12'}
peerDependencies:
- '@tanstack/router-core': ^1.132.27
+ '@tanstack/router-core': ^1.132.31
csstype: ^3.0.10
solid-js: '>=1.9.5'
tiny-invariant: ^1.3.3
@@ -3470,16 +3906,41 @@ packages:
csstype:
optional: true
- '@tanstack/router-generator@1.132.27':
- resolution: {integrity: sha512-dlW33RGxgG0mBF8vRqUs5CeId6wOf4qY6GmT2Pv6NgCVtrD7wsMSM1BasIRufNIxRT6FVnE7rztMy9wN7oCaKg==}
+ '@tanstack/router-generator@1.131.47':
+ resolution: {integrity: sha512-h0CAwc7s9MuU1awM8hAo/Iqfy33TtMCHuq40Ipq8bWUlElnp2qym0EkWEcQ6geDha1d/rgnu4pexlxEgwmKxbA==}
+ engines: {node: '>=12'}
+
+ '@tanstack/router-generator@1.132.31':
+ resolution: {integrity: sha512-6Ys47sBR3jxet3CaqnF/ykV44R8HLQoT5ZbDqi6f2At6TXYe/+VELRSApC+cq1yjVJwp6Ot5Hm6mYWewh69bdQ==}
+ engines: {node: '>=12'}
+
+ '@tanstack/router-plugin@1.131.47':
+ resolution: {integrity: sha512-YWdVzwikSJG6BaqOHPUzBCn5ePOBF8fBmR+hBvYp5GKvVRay99vyAIy5ANYWXbWFcIyR8WFUQrbGBk/ysdEmFA==}
engines: {node: '>=12'}
+ peerDependencies:
+ '@rsbuild/core': '>=1.0.2'
+ '@tanstack/react-router': ^1.131.47
+ vite: '>=5.0.0 || >=6.0.0'
+ vite-plugin-solid: ^2.11.2
+ webpack: '>=5.92.0'
+ peerDependenciesMeta:
+ '@rsbuild/core':
+ optional: true
+ '@tanstack/react-router':
+ optional: true
+ vite:
+ optional: true
+ vite-plugin-solid:
+ optional: true
+ webpack:
+ optional: true
- '@tanstack/router-plugin@1.132.27':
- resolution: {integrity: sha512-0mo+jdgO7L5hOPGyrmKtyy20ZUfX4LwN30IXS7mhsaSHbZub+XLS3Ta6mDxNLmOXAJLPI3Gc90yI8jVwhizv5Q==}
+ '@tanstack/router-plugin@1.132.31':
+ resolution: {integrity: sha512-5/n6VxA6tFLFyewjl1+Av0Qsxmr/WpnAR2UlccS7ZaYli3bvNPJSZd3dy9EphEAXeSbqvFT29nQ/ox8EmGTonQ==}
engines: {node: '>=12'}
peerDependencies:
'@rsbuild/core': '>=1.0.2'
- '@tanstack/react-router': ^1.132.27
+ '@tanstack/react-router': ^1.132.31
vite: '>=5.0.0 || >=6.0.0 || >=7.0.0'
vite-plugin-solid: ^2.11.8
webpack: '>=5.92.0'
@@ -3495,34 +3956,42 @@ packages:
webpack:
optional: true
- '@tanstack/router-utils@1.132.21':
- resolution: {integrity: sha512-d9MvyhdPaKN78hQOss89bayiv/HR/7FpVHuKTNGEzzYrBWDVIUBd0yMNaBxQBpTg6NuNxtZ01ZJS5VkbedbzJw==}
+ '@tanstack/router-utils@1.131.2':
+ resolution: {integrity: sha512-sr3x0d2sx9YIJoVth0QnfEcAcl+39sQYaNQxThtHmRpyeFYNyM2TTH+Ud3TNEnI3bbzmLYEUD+7YqB987GzhDA==}
engines: {node: '>=12'}
- '@tanstack/server-functions-plugin@1.132.21':
- resolution: {integrity: sha512-QV5sHy3yKMzDinWdRCeg/PwIys95myvxVRllopc0ht4WDOewZW/kNYBq8buvJUhgN4adj4YCV+HJsXwW4YrxZQ==}
+ '@tanstack/router-utils@1.132.31':
+ resolution: {integrity: sha512-uf8mQ3wV58K8TL5XXBoWhkYxmCV7LLWbbf6AvcxdhnCnBNmXBGlY+T8RdsRnXyI2Iyp2HfHaVZ+8H3CEQedXfw==}
engines: {node: '>=12'}
- '@tanstack/solid-router@1.132.27':
- resolution: {integrity: sha512-d1JfRvl53wJpoOsqStSX5ATCWegSWo7ygrwT+uRvXIebG3fsriGHWkL0u39U515fIYX9Br3PU2iKNk5eShCgtA==}
+ '@tanstack/server-functions-plugin@1.131.2':
+ resolution: {integrity: sha512-hWsaSgEZAVyzHg8+IcJWCEtfI9ZSlNELErfLiGHG9XCHEXMegFWsrESsKHlASzJqef9RsuOLDl+1IMPIskwdDw==}
engines: {node: '>=12'}
- peerDependencies:
- solid-js: ^1.9.5
- '@tanstack/solid-start-client@1.132.27':
- resolution: {integrity: sha512-z4l3GKornTJGKaxWN3P6Ah0Cz8O8OHwLEArz0aMk4/3qbWbSl9F+U72kdyuAwt9nLHOqPszBwuKLN2pjGaE1kw==}
- engines: {node: '>=22.12.0'}
+ '@tanstack/server-functions-plugin@1.132.31':
+ resolution: {integrity: sha512-XjkW0cE6bJXswJwncM8DImjqBqNG8v4GSR+ZFuYkmasXs26dNyS5cucMU4+egS3YC0sNyksCBdD35XrnGlRWLQ==}
+ engines: {node: '>=12'}
+
+ '@tanstack/solid-router@1.132.31':
+ resolution: {integrity: sha512-XcNA++HIOZdKndlfKQc+snOlV6eZ27vjFbWEZbOd9etM4uETRf6fqf6WH3cB956cN2Z+hEs8/ozbUM98r8WUhw==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ solid-js: ^1.9.5
+
+ '@tanstack/solid-start-client@1.132.31':
+ resolution: {integrity: sha512-8sxR0nff2SSaR4vNugBW00XUr4EaYlzFsR0lrI7YBHMBOfN6c0ZwgLYFxJMR9+8qcWrSS4kzIZsEYRsaSfGQ2g==}
+ engines: {node: '>=22.12.0'}
peerDependencies:
solid-js: '>=1.0.0'
- '@tanstack/solid-start-server@1.132.27':
- resolution: {integrity: sha512-O6gMoSB8pYKR5egw9GOI4zcvUwORgYh/iBOlFfRmSNupdJeTLKNxeb4KEmH7C+YI6qNoWtVlV0aiSO1bG8FKkg==}
+ '@tanstack/solid-start-server@1.132.31':
+ resolution: {integrity: sha512-PBgsW3By8E0/TyniMnymOcMgwt2Za+G7UTPH61rzD59AE0Jy/jZ8ZY/rzNq9v1LRCfSJMe2LXblOE+CK2/B3Jw==}
engines: {node: '>=22.12.0'}
peerDependencies:
solid-js: ^1.0.0
- '@tanstack/solid-start@1.132.27':
- resolution: {integrity: sha512-Z+xXtamLQCNxHI2xM3fXs31nW03wmxhGN+P2BpdZSeQ+6XtSTaYeZXAKdfpmQ4Yfzp5miWQXoN1w1rGGNU9Qjw==}
+ '@tanstack/solid-start@1.132.31':
+ resolution: {integrity: sha512-SsJq3gq6xzh98AyogRTIKFWsQK9f3aq3jiVM9PVx7W3a7RslgGLE6opIQkK6jRJ77qCnNwIrguqrj34zAOm6yA==}
engines: {node: '>=22.12.0'}
peerDependencies:
solid-js: '>=1.0.0'
@@ -3533,27 +4002,60 @@ packages:
peerDependencies:
solid-js: ^1.6.0
- '@tanstack/start-client-core@1.132.27':
- resolution: {integrity: sha512-YUqsdFT6YlYwXKO72ghvRBCzvX5OLdhW/KBP/rMVKcEzSbS/CEPbhds2ljmNQkKkCxsb/imJHsvdflM0waMrHA==}
+ '@tanstack/start-client-core@1.131.47':
+ resolution: {integrity: sha512-48pFszyEmO9RxA+MqGGL50/Eyase+nha4e3JOaYpVhHPUzybOWurURz2zF5OG6/DAQxQztUPOn0nHUS9qUXOxg==}
+ engines: {node: '>=12'}
+
+ '@tanstack/start-client-core@1.132.31':
+ resolution: {integrity: sha512-Zf2f2uUFr5bN8+AGp4pG8lws1tqkANjzjcKzsLGi+uyoe4R9+SavjlDLtqmRLkUqDFZvkVEDNumwCVMxKPeVBw==}
engines: {node: '>=22.12.0'}
- '@tanstack/start-plugin-core@1.132.27':
- resolution: {integrity: sha512-LxvOzFAiKRCHJ2+ebelByVc9fyAg+CLYue3V2IP4HNyjwLAvKHsbt+ljgs+gxJDPgvR/3KgEoqIzDWeMF5mumg==}
+ '@tanstack/start-plugin-core@1.131.47':
+ resolution: {integrity: sha512-X5k2JGNvh6blOlkYcFVDL2OE7UIDXvBodx2uir87woqhJlQnq5YNnbe/avrhSmXCuzkPEG4yw7wDe8o4gjdzww==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ vite: '>=6.0.0'
+
+ '@tanstack/start-plugin-core@1.132.31':
+ resolution: {integrity: sha512-JyRI0AgNDoY14KZeNLBj1gdX0uKdvY1bt0bBoZjDt8i7LEf5KKt0uA9s4To9KKHR8V0KORO9cNyrgNwxp7hwhg==}
engines: {node: '>=22.12.0'}
peerDependencies:
vite: '>=7.0.0'
- '@tanstack/start-server-core@1.132.27':
- resolution: {integrity: sha512-BIBFpmAqECur+5mbG6ZcGjlg93q4qpkwiwRDUmpiBRRWQxG4IYprjQ8ajzCar1yqedB1tqEhRpbkaBNnLIu+oQ==}
+ '@tanstack/start-server-core@1.131.47':
+ resolution: {integrity: sha512-VxTmJUiVAlKhlse58SWzx4ZqDZR8QTzoKp75woupoA+e1+c7T+odchhEyD4XSDT6GV9ssI6Eoy+bg+ZF45a2ig==}
+ engines: {node: '>=12'}
+
+ '@tanstack/start-server-core@1.132.31':
+ resolution: {integrity: sha512-Lujmr1mPRrXsXYgEbaOj5kxRYW6QKhma7w9/+7IoQxl8QTVHtIZ+b40BAt18rDZDn9c1M+fp7MGYmCTGDCMtOw==}
engines: {node: '>=22.12.0'}
- '@tanstack/start-storage-context@1.132.27':
- resolution: {integrity: sha512-4WomOGK7KPsnwoMXWT/bxNGRiaoyryEOm1ho44AsbRRD4IjpB+U5vWtT2Sho9grHMjlm4iaOrbklxKfeGhVqGg==}
+ '@tanstack/start-server-functions-client@1.131.47':
+ resolution: {integrity: sha512-xKuP8TTRSDBptC0uWtCkFQtBNi0dqdL/dUNbZZdjOBQczBZChBpyNP48a/wMfSTL4eE7rGidKOoiIkD+BqHrOQ==}
+ engines: {node: '>=12'}
+
+ '@tanstack/start-server-functions-fetcher@1.131.47':
+ resolution: {integrity: sha512-bHaetA5YJuCYDg5Qphkr5M4zn5ohe80Ih9DcN4m7AJrsB8GOnaSJrzyrU63BsT/xYpHOtrXRKfLTQlvBkZwDhQ==}
+ engines: {node: '>=12'}
+
+ '@tanstack/start-server-functions-server@1.131.2':
+ resolution: {integrity: sha512-u67d6XspczlC/dYki/Id28oWsTjkZMJhDqO4E23U3rHs8eYgxvMBHKqdeqWgOyC+QWT9k6ze1pJmbv+rmc3wOQ==}
+ engines: {node: '>=12'}
+
+ '@tanstack/start-storage-context@1.131.47':
+ resolution: {integrity: sha512-7ZPgCnUdLGnkoWSwHTc8l0T4aZ4a5/B3QPR6QVfbinwik+1HqGqFHKcq1/aTYISS0xJoH8reoB53x8ueVK1tHw==}
+ engines: {node: '>=12'}
+
+ '@tanstack/start-storage-context@1.132.31':
+ resolution: {integrity: sha512-CH+/SI+lHijZZw6P1VnOeoKDeUVzVZ1Wmhx4QrH8UYQNkTARFdkWOuLDItevDs91BrgtywV/N+Vs4YsOnNnjYw==}
engines: {node: '>=22.12.0'}
'@tanstack/store@0.7.0':
resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==}
+ '@tanstack/store@0.7.5':
+ resolution: {integrity: sha512-qd/OjkjaFRKqKU4Yjipaen/EOB9MyEg6Wr9fW103RBPACf1ZcKhbhcu2S5mj5IgdPib6xFIgCUti/mKVkl+fRw==}
+
'@tanstack/store@0.7.7':
resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==}
@@ -3561,8 +4063,12 @@ packages:
resolution: {integrity: sha512-3miLBNiyWX54bQKBNnh7Fj6otWX8ZDiU6/ffOsNnikwBdKjFkA7ddrBtC5/JQkLCE6CBIqcJvtNIwI+DZu4y1Q==}
engines: {node: '>=18'}
- '@tanstack/virtual-file-routes@1.132.21':
- resolution: {integrity: sha512-+eT+vxZnf2/QPr9ci5aPn7i3MnVyWYNG2DUqiKJXGi7EvuFrXV9r8zDK40QfUTNGdCg9F880YOVe3cTwMCO0zw==}
+ '@tanstack/virtual-file-routes@1.131.2':
+ resolution: {integrity: sha512-VEEOxc4mvyu67O+Bl0APtYjwcNRcL9it9B4HKbNgcBTIOEalhk+ufBl4kiqc8WP1sx1+NAaiS+3CcJBhrqaSRg==}
+ engines: {node: '>=12'}
+
+ '@tanstack/virtual-file-routes@1.132.31':
+ resolution: {integrity: sha512-rxS8Cm2nIXroLqkm9pE/8X2lFNuvcTIIiFi5VH4PwzvKscAuaW3YRMN1WmaGDI2mVEn+GLaoY6Kc3jOczL5i4w==}
engines: {node: '>=12'}
'@tanstack/vite-config@0.3.0':
@@ -3573,8 +4079,8 @@ packages:
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
engines: {node: '>=18'}
- '@testing-library/jest-dom@6.9.0':
- resolution: {integrity: sha512-QHdxYMJ0YPGKYofMc6zYvo7LOViVhdc6nPg/OtM2cf9MQrwEcTxFCs7d/GJ5eSyPkHzOiBkc/KfLdFJBHzldtQ==}
+ '@testing-library/jest-dom@6.8.0':
+ resolution: {integrity: sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
'@testing-library/react@16.3.0':
@@ -3620,6 +4126,9 @@ packages:
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+ '@types/babel__code-frame@7.0.6':
+ resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==}
+
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -3698,11 +4207,14 @@ packages:
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
- '@types/node@22.18.8':
- resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==}
+ '@types/node@20.19.17':
+ resolution: {integrity: sha512-gfehUI8N1z92kygssiuWvLiwcbOB3IRktR6hTDgJlXMYh5OvkPSRmgfoBUmfZt+vhwJtX7v1Yw4KvvAf7c5QKQ==}
- '@types/node@24.6.1':
- resolution: {integrity: sha512-ljvjjs3DNXummeIaooB4cLBKg2U6SPI6Hjra/9rRIy7CpM0HpLtG9HptkMKAb4HYWy5S7HUvJEuWgr/y0U8SHw==}
+ '@types/node@22.18.6':
+ resolution: {integrity: sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ==}
+
+ '@types/node@24.5.2':
+ resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==}
'@types/pg@8.15.5':
resolution: {integrity: sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==}
@@ -3718,8 +4230,14 @@ packages:
peerDependencies:
'@types/react': ^19.0.0
- '@types/react@19.1.16':
- resolution: {integrity: sha512-WBM/nDbEZmDUORKnh5i1bTnAz6vTohUf9b8esSMu+b24+srbaxa04UbJgWx78CVfNXA20sNu0odEIluZDFdCog==}
+ '@types/react@19.1.13':
+ resolution: {integrity: sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ==}
+
+ '@types/react@19.2.0':
+ resolution: {integrity: sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==}
+
+ '@types/resolve@1.20.2':
+ resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
'@types/send@0.17.5':
resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==}
@@ -3727,6 +4245,9 @@ packages:
'@types/serve-static@1.15.8':
resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==}
+ '@types/shimmer@1.2.0':
+ resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==}
+
'@types/simple-peer@9.11.8':
resolution: {integrity: sha512-rvqefdp2rvIA6wiomMgKWd2UZNPe6LM2EV5AuY3CPQJF+8TbdrL5TjYdMf0VAjGczzlkH4l1NjDkihwbj3Xodw==}
@@ -3745,6 +4266,14 @@ packages:
'@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
+ '@typescript-eslint/eslint-plugin@8.44.0':
+ resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.44.0
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/eslint-plugin@8.45.0':
resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3753,6 +4282,13 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/parser@8.44.0':
+ resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/parser@8.45.0':
resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3760,22 +4296,51 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/project-service@8.44.0':
+ resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/project-service@8.45.0':
resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/scope-manager@8.44.0':
+ resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/scope-manager@8.45.0':
resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/tsconfig-utils@8.44.0':
+ resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/tsconfig-utils@8.44.1':
+ resolution: {integrity: sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/tsconfig-utils@8.45.0':
resolution: {integrity: sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/type-utils@8.44.0':
+ resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/type-utils@8.45.0':
resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3783,16 +4348,37 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/types@8.44.0':
+ resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/types@8.44.1':
+ resolution: {integrity: sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/types@8.45.0':
resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/typescript-estree@8.44.0':
+ resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/typescript-estree@8.45.0':
resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/utils@8.44.0':
+ resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/utils@8.45.0':
resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3800,10 +4386,17 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
+ '@typescript-eslint/visitor-keys@8.44.0':
+ resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/visitor-keys@8.45.0':
resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@ungap/structured-clone@1.3.0':
+ resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
+
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
cpu: [arm]
@@ -3899,15 +4492,20 @@ packages:
cpu: [x64]
os: [win32]
+ '@vercel/nft@0.30.1':
+ resolution: {integrity: sha512-2mgJZv4AYBFkD/nJ4QmiX5Ymxi+AisPLPcS/KPXVqniyQNqKXX+wjieAbDXQP3HcogfEbpHoRMs49Cd4pfkk8g==}
+ engines: {node: '>=18'}
+ hasBin: true
+
'@vitejs/plugin-basic-ssl@2.1.0':
resolution: {integrity: sha512-dOxxrhgyDIEUADhb/8OlV9JIqYLgos03YorAueTIeOUskLJSEsfwCByjbu98ctXitUN3znXKp0bYD/WHSudCeA==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
peerDependencies:
vite: ^6.0.0 || ^7.0.0
- '@vitejs/plugin-react@4.7.0':
- resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
- engines: {node: ^14.18.0 || >=16.0.0}
+ '@vitejs/plugin-react@5.0.3':
+ resolution: {integrity: sha512-PFVHhosKkofGH0Yzrw1BipSedTH68BFF8ZWy1kfUpCtJcouXXY0+racG8sExw7hw0HoX36813ga5o3LTWZ4FUg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
@@ -3967,9 +4565,15 @@ packages:
'@volar/typescript@2.4.23':
resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==}
+ '@vue/compiler-core@3.5.21':
+ resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==}
+
'@vue/compiler-core@3.5.22':
resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==}
+ '@vue/compiler-dom@3.5.21':
+ resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==}
+
'@vue/compiler-dom@3.5.22':
resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==}
@@ -4004,6 +4608,9 @@ packages:
peerDependencies:
vue: 3.5.22
+ '@vue/shared@3.5.21':
+ resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==}
+
'@vue/shared@3.5.22':
resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==}
@@ -4018,6 +4625,10 @@ packages:
resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==}
engines: {node: ^18.17.0 || >=20.5.0}
+ abort-controller@3.0.0:
+ resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
+ engines: {node: '>=6.5'}
+
accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
@@ -4026,6 +4637,11 @@ packages:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
engines: {node: '>= 0.6'}
+ acorn-import-attributes@1.9.5:
+ resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
+ peerDependencies:
+ acorn: ^8
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -4076,8 +4692,8 @@ packages:
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
engines: {node: '>=6'}
- ansi-escapes@7.1.1:
- resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==}
+ ansi-escapes@7.1.0:
+ resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==}
engines: {node: '>=18'}
ansi-regex@5.0.1:
@@ -4100,8 +4716,8 @@ packages:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
- ansis@4.2.0:
- resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==}
+ ansis@4.1.0:
+ resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==}
engines: {node: '>=14'}
any-promise@1.3.0:
@@ -4111,6 +4727,14 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ archiver-utils@5.0.2:
+ resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==}
+ engines: {node: '>= 14'}
+
+ archiver@7.0.1:
+ resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==}
+ engines: {node: '>= 14'}
+
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -4190,6 +4814,12 @@ packages:
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
engines: {node: '>= 0.4'}
+ async-sema@3.1.1:
+ resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
+
+ async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+
autoprefixer@10.4.21:
resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==}
engines: {node: ^10 || ^12 || >=14}
@@ -4205,6 +4835,14 @@ packages:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
+ b4a@1.7.1:
+ resolution: {integrity: sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==}
+ peerDependencies:
+ react-native-b4a: '*'
+ peerDependenciesMeta:
+ react-native-b4a:
+ optional: true
+
babel-dead-code-elimination@1.0.10:
resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==}
@@ -4225,6 +4863,9 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ bare-events@2.7.0:
+ resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==}
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -4232,8 +4873,8 @@ packages:
resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==}
engines: {node: ^4.5.0 || >= 5.9}
- baseline-browser-mapping@2.8.9:
- resolution: {integrity: sha512-hY/u2lxLrbecMEWSB0IpGzGyDyeoMFQhCvZd2jGFSE5I17Fh01sYUBPCJtkWERw7zrac9+cIghxm/ytJa2X8iA==}
+ baseline-browser-mapping@2.8.6:
+ resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==}
hasBin: true
beasties@0.3.5:
@@ -4287,6 +4928,9 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
+ bindings@1.5.0:
+ resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
+
body-parser@1.20.3:
resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -4320,6 +4964,10 @@ packages:
resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==}
engines: {node: '>=16.20.1'}
+ buffer-crc32@1.0.0:
+ resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==}
+ engines: {node: '>=8.0.0'}
+
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -4330,6 +4978,14 @@ packages:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
+ c12@3.3.0:
+ resolution: {integrity: sha512-K9ZkuyeJQeqLEyqldbYLG3wjqwpw4BVaAqvmxq3GYKK0b1A/yYQdIcJxkzAOWcNVWhJpRXAPfZFueekiY/L8Dw==}
+ peerDependencies:
+ magicast: ^0.3.5
+ peerDependenciesMeta:
+ magicast:
+ optional: true
+
cac@6.7.14:
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
engines: {node: '>=8'}
@@ -4358,8 +5014,8 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- caniuse-lite@1.0.30001746:
- resolution: {integrity: sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==}
+ caniuse-lite@1.0.30001743:
+ resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==}
chai@5.3.3:
resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
@@ -4407,6 +5063,12 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
+ citty@0.1.6:
+ resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
+
+ cjs-module-lexer@1.4.3:
+ resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
+
cli-cursor@5.0.0:
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
engines: {node: '>=18'}
@@ -4423,6 +5085,10 @@ packages:
resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
engines: {node: '>= 12'}
+ clipboardy@4.0.0:
+ resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==}
+ engines: {node: '>=18'}
+
cliui@7.0.4:
resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
@@ -4438,6 +5104,10 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
+ cluster-key-slot@1.1.2:
+ resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
+ engines: {node: '>=0.10.0'}
+
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@@ -4456,6 +5126,9 @@ packages:
resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==}
engines: {node: '>=18'}
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
@@ -4468,12 +5141,22 @@ packages:
resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
engines: {node: '>=4.0.0'}
+ commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+
compare-func@2.0.0:
resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
compare-versions@6.1.1:
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
+ compatx@0.2.0:
+ resolution: {integrity: sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==}
+
+ compress-commons@6.0.2:
+ resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==}
+ engines: {node: '>= 14'}
+
computeds@0.0.1:
resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
@@ -4488,10 +5171,17 @@ packages:
confbox@0.1.8:
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+ confbox@0.2.2:
+ resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+
connect@3.7.0:
resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
engines: {node: '>= 0.10.0'}
+ consola@3.4.2:
+ resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+
content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
@@ -4519,6 +5209,9 @@ packages:
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ cookie-es@1.2.2:
+ resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
+
cookie-es@2.0.0:
resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==}
@@ -4537,10 +5230,30 @@ packages:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
+ cookie@1.0.2:
+ resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
+ engines: {node: '>=18'}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
cors@2.8.5:
resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==}
engines: {node: '>= 0.10'}
+ crc-32@1.2.2:
+ resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==}
+ engines: {node: '>=0.8'}
+ hasBin: true
+
+ crc32-stream@6.0.0:
+ resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==}
+ engines: {node: '>= 14'}
+
+ croner@9.1.0:
+ resolution: {integrity: sha512-p9nwwR4qyT5W996vBZhdvBCnMhicY5ytZkR4D1Xj0wuTDEiMnjwR57Q3RXYY/s0EpX6Ay3vgIcfaR+ewGHsi+g==}
+ engines: {node: '>=18.0'}
+
cross-spawn@6.0.6:
resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
engines: {node: '>=4.8'}
@@ -4549,6 +5262,9 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
+ crossws@0.3.5:
+ resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==}
+
crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
@@ -4614,6 +5330,29 @@ packages:
resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==}
engines: {node: '>=4.0'}
+ db0@0.3.2:
+ resolution: {integrity: sha512-xzWNQ6jk/+NtdfLyXEipbX55dmDSeteLFt/ayF+wZUU5bzKgmrDOxmInUTbyVRp46YwnJdkDA1KhB7WIXFofJw==}
+ peerDependencies:
+ '@electric-sql/pglite': '*'
+ '@libsql/client': '*'
+ better-sqlite3: '*'
+ drizzle-orm: '*'
+ mysql2: '*'
+ sqlite3: '*'
+ peerDependenciesMeta:
+ '@electric-sql/pglite':
+ optional: true
+ '@libsql/client':
+ optional: true
+ better-sqlite3:
+ optional: true
+ drizzle-orm:
+ optional: true
+ mysql2:
+ optional: true
+ sqlite3:
+ optional: true
+
de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
@@ -4668,6 +5407,10 @@ packages:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
+ define-lazy-prop@2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
define-properties@1.2.1:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
@@ -4675,6 +5418,10 @@ packages:
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+ denque@2.1.0:
+ resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==}
+ engines: {node: '>=0.10'}
+
depd@2.0.0:
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
engines: {node: '>= 0.8'}
@@ -4683,6 +5430,9 @@ packages:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
+ destr@2.0.5:
+ resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
+
destroy@1.2.0:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
@@ -4696,8 +5446,8 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
- detect-libc@2.1.1:
- resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==}
+ detect-libc@2.1.0:
+ resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==}
engines: {node: '>=8'}
dexie@4.0.10:
@@ -4724,6 +5474,10 @@ packages:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
dom-accessibility-api@0.5.16:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
@@ -4750,12 +5504,16 @@ packages:
resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
engines: {node: '>=8'}
+ dot-prop@9.0.0:
+ resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==}
+ engines: {node: '>=18'}
+
dotenv@16.6.1:
resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
engines: {node: '>=12'}
- dotenv@17.2.3:
- resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==}
+ dotenv@17.2.2:
+ resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==}
engines: {node: '>=12'}
drizzle-kit@0.31.5:
@@ -4864,14 +5622,17 @@ packages:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
+ duplexer@0.1.2:
+ resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
+
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron-to-chromium@1.5.228:
- resolution: {integrity: sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==}
+ electron-to-chromium@1.5.221:
+ resolution: {integrity: sha512-/1hFJ39wkW01ogqSyYoA4goOXOtMRy6B+yvA1u42nnsEGtHzIzmk93aPISumVQeblj47JUHLC9coCjUxb1EvtQ==}
emoji-regex@10.5.0:
resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==}
@@ -4931,6 +5692,10 @@ packages:
resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
engines: {node: '>=6'}
+ env-paths@3.0.0:
+ resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
environment@1.1.0:
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
engines: {node: '>=18'}
@@ -4941,6 +5706,9 @@ packages:
err-code@3.0.1:
resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==}
+ error-stack-parser-es@1.0.5:
+ resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
+
es-abstract@1.24.0:
resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
engines: {node: '>= 0.4'}
@@ -5007,6 +5775,10 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
eslint-compat-utils@0.5.1:
resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==}
engines: {node: '>=12'}
@@ -5086,8 +5858,8 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
- eslint-plugin-react-refresh@0.4.22:
- resolution: {integrity: sha512-atkAG6QaJMGoTLc4MDAP+rqZcfwQuTIh2IqHWFLy2TEjxr0MOK+5BSG4RzL2564AAPpZkDRsZXAUz68kjnU6Ug==}
+ eslint-plugin-react-refresh@0.4.23:
+ resolution: {integrity: sha512-G4j+rv0NmbIR45kni5xJOrYvCtyD3/7LjpVH8MPPcudXDcNu8gv+4ATTDXTtbRR8rTCM5HxECvCSsRmxKnWDsA==}
peerDependencies:
eslint: '>=8.40'
@@ -5104,6 +5876,10 @@ packages:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
typescript: '>=4.8.4'
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
eslint-scope@8.4.0:
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -5116,6 +5892,12 @@ packages:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ eslint@8.57.1:
+ resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
+
eslint@9.36.0:
resolution: {integrity: sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -5133,6 +5915,10 @@ packages:
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
@@ -5171,12 +5957,20 @@ packages:
resolution: {integrity: sha512-Vi6aIiAmakzx81JAwhw8L988aSX5a3ZqqVjHyZa9xFU6P4oT1IotoDreWtjNlS+fvEnASvyIQT565nmkOtns/Q==}
engines: {node: '>=16'}
+ event-target-shim@5.0.1:
+ resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
+ engines: {node: '>=6'}
+
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+ events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+
eventsource-parser@3.0.6:
resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==}
engines: {node: '>=18.0.0'}
@@ -5229,6 +6023,9 @@ packages:
fast-diff@1.3.0:
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
@@ -5264,10 +6061,17 @@ packages:
fetchdts@0.1.7:
resolution: {integrity: sha512-YoZjBdafyLIop9lSxXVI33oLD5kN31q4Td+CasofLLYeLXRFeOsuOw0Uo+XNRi9PZlbfdlN2GmRtm4tCEQ9/KA==}
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
+ file-uri-to-path@1.0.0:
+ resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
+
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@@ -5295,6 +6099,10 @@ packages:
firebase@11.10.0:
resolution: {integrity: sha512-nKBXoDzF0DrXTBQJlZa+sbC5By99ysYU1D6PkMRYknm0nCW7rJly47q492Ht7Ndz5MeYSBuboKuhS1e6mFC03w==}
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
flat-cache@4.0.1:
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
engines: {node: '>=16'}
@@ -5377,16 +6185,17 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ gel@2.1.1:
+ resolution: {integrity: sha512-Newg9X7mRYskoBjSw70l1YnJ/ZGbq64VPyR821H5WVkTGpHG2O0mQILxCeUhxdYERLFY9B4tUyKLyf3uMTjtKw==}
+ engines: {node: '>= 18.0.0'}
+ hasBin: true
+
generate-function@2.3.1:
resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==}
generate-object-property@1.2.0:
resolution: {integrity: sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==}
- generator-function@2.0.1:
- resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==}
- engines: {node: '>= 0.4'}
-
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -5410,6 +6219,9 @@ packages:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
+ get-port-please@3.2.0:
+ resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -5429,6 +6241,10 @@ packages:
get-tsconfig@4.10.1:
resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==}
+ giget@2.0.0:
+ resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==}
+ hasBin: true
+
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -5448,6 +6264,10 @@ packages:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
+ globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+
globals@14.0.0:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
@@ -5468,6 +6288,10 @@ packages:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
+ globby@14.1.0:
+ resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==}
+ engines: {node: '>=18'}
+
globrex@0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
@@ -5496,6 +6320,16 @@ packages:
resolution: {integrity: sha512-BL/Xd/T9baO6NFzoMpiMD7YUZ62R6viR5tp/MULVEnbYJXZA//kRNW7J0j1w/wXArgL0sCxhDfK5dczSKn3+cg==}
engines: {node: '>= 10.x'}
+ gzip-size@7.0.0:
+ resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ h3@1.13.0:
+ resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==}
+
+ h3@1.15.4:
+ resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==}
+
h3@2.0.0-beta.4:
resolution: {integrity: sha512-/JdwHUGuHjbBXAVxQN7T7QeI9cVlhsqMKVNFHebZVs9RoEYH85Ogh9O1DEy/1ZiJkmMwa1gNg6bBcGhc1Itjdg==}
engines: {node: '>=20.11.1'}
@@ -5536,6 +6370,9 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
+ hookable@5.5.3:
+ resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+
hosted-git-info@8.1.0:
resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -5582,10 +6419,17 @@ packages:
resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==}
engines: {node: '>=8.0.0'}
+ http-shutdown@1.2.2:
+ resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+
https-proxy-agent@7.0.6:
resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==}
engines: {node: '>= 14'}
+ httpxy@0.1.7:
+ resolution: {integrity: sha512-pXNx8gnANKAndgga5ahefxc++tJvNL87CXoRwxn1cJE2ZkWEojF3tNfQIEhZX/vfpt+wzeAzpUI4qkediX1MLQ==}
+
human-id@4.1.1:
resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==}
hasBin: true
@@ -5636,6 +6480,9 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
+ import-in-the-middle@1.14.4:
+ resolution: {integrity: sha512-eWjxh735SJLFJJDs5X82JQ2405OdJeAHDBnaoFCfdr5GVc7AWc9xU7KbrF+3Xd5F2ccP1aQFKtY+65X6EfKZ7A==}
+
import-lazy@4.0.0:
resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
engines: {node: '>=8'}
@@ -5670,6 +6517,10 @@ packages:
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
engines: {node: '>= 0.10'}
+ ioredis@5.7.0:
+ resolution: {integrity: sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g==}
+ engines: {node: '>=12.22.0'}
+
ip-address@10.0.1:
resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
engines: {node: '>= 12'}
@@ -5678,6 +6529,9 @@ packages:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
+ iron-webcrypto@1.2.1:
+ resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
+
is-arguments@1.2.0:
resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
engines: {node: '>= 0.4'}
@@ -5721,6 +6575,16 @@ packages:
resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
engines: {node: '>= 0.4'}
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -5741,8 +6605,8 @@ packages:
resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==}
engines: {node: '>=18'}
- is-generator-function@1.1.2:
- resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==}
+ is-generator-function@1.1.0:
+ resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
engines: {node: '>= 0.4'}
is-glob@4.0.3:
@@ -5753,6 +6617,11 @@ packages:
resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==}
engines: {node: '>=8'}
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
is-interactive@2.0.0:
resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
engines: {node: '>=12'}
@@ -5761,6 +6630,9 @@ packages:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
+ is-module@1.0.0:
+ resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
+
is-my-ip-valid@1.0.1:
resolution: {integrity: sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==}
@@ -5783,6 +6655,10 @@ packages:
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
engines: {node: '>=8'}
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -5792,6 +6668,9 @@ packages:
is-property@1.0.2:
resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==}
+ is-reference@1.2.1:
+ resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+
is-reference@3.0.3:
resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
@@ -5811,6 +6690,10 @@ packages:
resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
engines: {node: '>=0.10.0'}
+ is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+
is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -5863,6 +6746,21 @@ packages:
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
engines: {node: '>=0.10.0'}
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
+ is-wsl@3.1.0:
+ resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
+ engines: {node: '>=16'}
+
+ is64bit@2.0.0:
+ resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==}
+ engines: {node: '>=18'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
@@ -5870,6 +6768,10 @@ packages:
resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==}
engines: {node: '>= 8.0.0'}
+ isbot@5.1.30:
+ resolution: {integrity: sha512-3wVJEonAns1OETX83uWsk5IAne2S5zfDcntD2hbtU23LelSqNXzXs9zKjMPOLMzroCgIjCfjYAEHrd2D6FOkiA==}
+ engines: {node: '>=18'}
+
isbot@5.1.31:
resolution: {integrity: sha512-DPgQshehErHAqSCKDb3rNW03pa2wS/v5evvUqtxt6TTnHRqAG8FdzcSSJs9656pK6Y+NT7K9R4acEYXLHYfpUQ==}
engines: {node: '>=18'}
@@ -5931,8 +6833,12 @@ packages:
resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
hasBin: true
- jiti@2.6.0:
- resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==}
+ jiti@2.5.1:
+ resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
+ hasBin: true
+
+ jiti@2.6.1:
+ resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
jju@1.4.0:
@@ -6056,6 +6962,10 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
+ klona@2.0.6:
+ resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
+ engines: {node: '>= 8'}
+
knip@5.64.1:
resolution: {integrity: sha512-80XnLsyeXuyxj1F4+NBtQFHxaRH0xWRw8EKwfQ6EkVZZ0bSz/kqqan08k/Qg8ajWsFPhFq+0S2RbLCBGIQtuOg==}
engines: {node: '>=18.18.0'}
@@ -6064,6 +6974,9 @@ packages:
'@types/node': '>=18'
typescript: '>=5.0.4 <7'
+ knitwork@1.2.0:
+ resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==}
+
known-css-properties@0.30.0:
resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==}
@@ -6074,6 +6987,10 @@ packages:
resolution: {integrity: sha512-u/cAuTL4DRIiO2/g4vNGRgklEKNIj5Q3CG7RoUB5DV5SfEC2hMvPxKi0GWPmnzwL2ryIeud2VTcEEmqzTzEPNw==}
engines: {node: '>=20.0.0'}
+ lazystream@1.0.1:
+ resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==}
+ engines: {node: '>= 0.6.3'}
+
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -6157,6 +7074,10 @@ packages:
engines: {node: '>=18.12.0'}
hasBin: true
+ listhen@1.9.0:
+ resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==}
+ hasBin: true
+
listr2@8.3.3:
resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==}
engines: {node: '>=18.0.0'}
@@ -6173,6 +7094,10 @@ packages:
resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
engines: {node: '>=14'}
+ local-pkg@1.1.2:
+ resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
+ engines: {node: '>=14'}
+
locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
@@ -6187,10 +7112,16 @@ packages:
lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+ lodash.defaults@4.2.0:
+ resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==}
+
lodash.get@4.4.2:
resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
+ lodash.isarguments@3.1.0:
+ resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==}
+
lodash.isequal@4.5.0:
resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead.
@@ -6226,11 +7157,14 @@ packages:
loupe@3.2.1:
resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==}
+ lower-case@2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
- lru-cache@11.2.2:
- resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==}
+ lru-cache@11.2.1:
+ resolution: {integrity: sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ==}
engines: {node: 20 || >=22}
lru-cache@5.1.1:
@@ -6353,6 +7287,16 @@ packages:
engines: {node: '>=4.0.0'}
hasBin: true
+ mime@3.0.0:
+ resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+
+ mime@4.1.0:
+ resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==}
+ engines: {node: '>=16'}
+ hasBin: true
+
mimic-fn@4.0.0:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
@@ -6378,6 +7322,10 @@ packages:
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -6421,8 +7369,8 @@ packages:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
- minizlib@3.1.0:
- resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==}
+ minizlib@3.0.2:
+ resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==}
engines: {node: '>= 18'}
mitt@3.0.1:
@@ -6437,9 +7385,17 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ mkdirp@3.0.1:
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
mlly@1.8.0:
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+ module-details-from-path@1.0.4:
+ resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==}
+
mongodb-connection-string-url@3.0.2:
resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==}
@@ -6533,16 +7489,32 @@ packages:
nice-try@1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+ nitropack@2.12.6:
+ resolution: {integrity: sha512-DEq31s0SP4/Z5DIoVBRo9DbWFPWwIoYD4cQMEz7eE+iJMiAP+1k9A3B9kcc6Ihc0jDJmfUcHYyh6h2XlynCx6g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ xml2js: ^0.6.2
+ peerDependenciesMeta:
+ xml2js:
+ optional: true
+
nkeys.js@1.1.0:
resolution: {integrity: sha512-tB/a0shZL5UZWSwsoeyqfTszONTt4k2YS0tuQioMOD180+MbombYVgzDUYHlx+gejYK6rgf08n/2Df99WY0Sxg==}
engines: {node: '>=10.0.0'}
+ no-case@3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+
node-addon-api@6.1.0:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
node-addon-api@7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+ node-fetch-native@1.6.7:
+ resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==}
+
node-fetch@2.7.0:
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
@@ -6552,15 +7524,26 @@ packages:
encoding:
optional: true
+ node-forge@1.3.1:
+ resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
+ engines: {node: '>= 6.13.0'}
+
node-gyp-build-optional-packages@5.2.2:
resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==}
hasBin: true
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+
node-gyp@11.4.2:
resolution: {integrity: sha512-3gD+6zsrLQH7DyYOUIutaauuXrcyxeTPyQuZQCQoNPZMHMMS5m4y0xclNpvYzoK3VNzuyxT6eF4mkIL4WSZ1eQ==}
engines: {node: ^18.17.0 || >=20.5.0}
hasBin: true
+ node-mock-http@1.0.3:
+ resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==}
+
node-releases@2.0.21:
resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==}
@@ -6597,8 +7580,8 @@ packages:
resolution: {integrity: sha512-+t2etZAGcB7TbbLHfDwooV9ppB2LhhcT6A+L9cahsf9mEUAoQ6CktLEVvEnpD0N5CkX7zJqnPGaFtoQDy9EkHQ==}
engines: {node: ^20.17.0 || >=22.9.0}
- npm-packlist@10.0.2:
- resolution: {integrity: sha512-DrIWNiWT0FTdDRjGOYfEEZUNe1IzaSZ+up7qBTKnrQDySpdmuOQvytrqQlpK5QrCA4IThMvL4wTumqaa1ZvVIQ==}
+ npm-packlist@10.0.1:
+ resolution: {integrity: sha512-vaC03b2PqJA6QqmwHi1jNU8fAPXEnnyv4j/W4PVfgm24C4/zZGSVut3z0YUeN0WIFCo1oGOL02+6LbvFK7JL4Q==}
engines: {node: ^20.17.0 || >=22.9.0}
npm-pick-manifest@10.0.0:
@@ -6620,7 +7603,12 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
- object-assign@4.1.1:
+ nypm@0.6.2:
+ resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==}
+ engines: {node: ^14.16.0 || >=16.10.0}
+ hasBin: true
+
+ object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -6656,6 +7644,15 @@ packages:
resolution: {integrity: sha512-szyd0ou0T8nsAqHtprRcP3WidfsN1TnAR5yWXf2mFCEr5ek3LEOkT6EZ/92Xfs74HIdyhG5WkGxIssMU0jBaeg==}
engines: {node: '>=16'}
+ ofetch@1.4.1:
+ resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
+
+ ohash@1.1.6:
+ resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==}
+
+ ohash@2.0.11:
+ resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
+
on-finished@2.3.0:
resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
engines: {node: '>= 0.8'}
@@ -6675,6 +7672,10 @@ packages:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
+ open@8.4.2:
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
+
optionator@0.9.4:
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'}
@@ -6780,6 +7781,9 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
+ pascal-case@3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
@@ -6820,6 +7824,13 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+ path-type@6.0.0:
+ resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==}
+ engines: {node: '>=18'}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
@@ -6827,6 +7838,9 @@ packages:
resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==}
engines: {node: '>= 14.16'}
+ perfect-debounce@2.0.0:
+ resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==}
+
pg-cloudflare@1.2.7:
resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==}
@@ -6900,6 +7914,9 @@ packages:
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+ pkg-types@2.3.0:
+ resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+
possible-typed-array-names@1.1.0:
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
engines: {node: '>= 0.4'}
@@ -6986,6 +8003,10 @@ packages:
engines: {node: '>=14'}
hasBin: true
+ pretty-bytes@7.0.1:
+ resolution: {integrity: sha512-285/jRCYIbMGDciDdrw0KPNC4LKEEwz/bwErcYNxSJOi4CpGUuLpb9gQpg3XJP0XYj9ldSRluXxih4lX2YN8Xw==}
+ engines: {node: '>=20'}
+
pretty-format@27.5.1:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -6994,6 +8015,13 @@ packages:
resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==}
engines: {node: ^18.17.0 || >=20.5.0}
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ process@0.11.10:
+ resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
+ engines: {node: '>= 0.6.0'}
+
promise-retry@2.0.1:
resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
engines: {node: '>=10'}
@@ -7053,6 +8081,9 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ radix3@1.1.2:
+ resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
+
randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
@@ -7068,6 +8099,9 @@ packages:
resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
engines: {node: '>= 0.10'}
+ rc9@2.1.2:
+ resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
+
react-dom@19.1.1:
resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==}
peerDependencies:
@@ -7094,10 +8128,20 @@ packages:
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
engines: {node: '>=6'}
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
+ readable-stream@4.7.0:
+ resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ readdir-glob@1.1.3:
+ resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==}
+
readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -7121,6 +8165,14 @@ packages:
resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
engines: {node: '>=8'}
+ redis-errors@1.2.0:
+ resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==}
+ engines: {node: '>=4'}
+
+ redis-parser@3.0.0:
+ resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==}
+ engines: {node: '>=4'}
+
reflect-metadata@0.2.2:
resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==}
@@ -7143,6 +8195,10 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
+ require-in-the-middle@7.5.2:
+ resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==}
+ engines: {node: '>=8.6.0'}
+
requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
@@ -7196,8 +8252,21 @@ packages:
peerDependencies:
rollup: 2.x || 3.x || 4.x
- rollup@4.52.3:
- resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==}
+ rollup-plugin-visualizer@6.0.3:
+ resolution: {integrity: sha512-ZU41GwrkDcCpVoffviuM9Clwjy5fcUxlz0oMoTXTYsK+tcIFzbdacnrr2n8TXcHxbGKKXtOdjxM2HUS4HjkwIw==}
+ engines: {node: '>=18'}
+ hasBin: true
+ peerDependencies:
+ rolldown: 1.x || ^1.0.0-beta
+ rollup: 2.x || 3.x || 4.x
+ peerDependenciesMeta:
+ rolldown:
+ optional: true
+ rollup:
+ optional: true
+
+ rollup@4.52.0:
+ resolution: {integrity: sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -7234,6 +8303,9 @@ packages:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
@@ -7289,6 +8361,9 @@ packages:
resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
engines: {node: '>= 18'}
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+
seroval-plugins@1.3.3:
resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
engines: {node: '>=10'}
@@ -7299,6 +8374,9 @@ packages:
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
engines: {node: '>=10'}
+ serve-placeholder@2.0.2:
+ resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==}
+
serve-static@1.16.2:
resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
engines: {node: '>= 0.8.0'}
@@ -7384,6 +8462,9 @@ packages:
resolution: {integrity: sha512-ZnwyTnmXoUOPClkOA37JWIyFxCoozMGHmhk/p7XbTREI554XXCnBAn3BMX8UsqkhSzQ9eNQsq4U+jnImEIppsQ==}
hasBin: true
+ shimmer@1.2.1:
+ resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
+
shx@0.4.0:
resolution: {integrity: sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==}
engines: {node: '>=18'}
@@ -7429,6 +8510,10 @@ packages:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
+ slash@5.1.0:
+ resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
+ engines: {node: '>=14.16'}
+
slice-ansi@5.0.0:
resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
engines: {node: '>=12'}
@@ -7441,6 +8526,9 @@ packages:
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+ smob@1.5.0:
+ resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==}
+
smol-toml@1.4.2:
resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==}
engines: {node: '>= 18'}
@@ -7515,8 +8603,8 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
- srvx@0.8.9:
- resolution: {integrity: sha512-wYc3VLZHRzwYrWJhkEqkhLb31TI0SOkfYZDkUhXdp3NoCnNS0FqajiQszZZjfow/VYEuc6Q5sZh9nM6kPy2NBQ==}
+ srvx@0.8.7:
+ resolution: {integrity: sha512-g3+15LlwVOGL2QpoTPZlvRjg+9a5Tx/69CatXjFP6txvhIaW2FmGyzJfb8yft5wyfGddvJmP/Yx+e/uNDMRSLQ==}
engines: {node: '>=20.16.0'}
hasBin: true
@@ -7531,6 +8619,9 @@ packages:
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+ standard-as-callback@2.1.0:
+ resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==}
+
statuses@1.5.0:
resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
engines: {node: '>= 0.6'}
@@ -7558,6 +8649,9 @@ packages:
resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==}
engines: {node: '>=8.0'}
+ streamx@2.22.1:
+ resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==}
+
string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
@@ -7593,6 +8687,9 @@ packages:
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
engines: {node: '>= 0.4'}
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -7628,8 +8725,8 @@ packages:
resolution: {integrity: sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g==}
engines: {node: '>=14.16'}
- strip-literal@3.1.0:
- resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
+ strip-literal@3.0.0:
+ resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
style-to-object@1.0.9:
resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==}
@@ -7639,6 +8736,10 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
+ supports-color@10.2.2:
+ resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==}
+ engines: {node: '>=18'}
+
supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -7659,14 +8760,14 @@ packages:
svelte: ^4.0.0 || ^5.0.0-next.0
typescript: '>=5.0.0'
- svelte2tsx@0.7.44:
- resolution: {integrity: sha512-opuH+bCboss0/ncxnfAO+qt0IAprxc8OqwuC7otafWeO5CHjJ6UAAwvQmu/+xjpCSarX8pQKydXQuoJmbCDcTg==}
+ svelte2tsx@0.7.43:
+ resolution: {integrity: sha512-TtxMuk520th4ZEvUQrhbDAyyQ1I+kc5dZCA4ChOLlbVXZfqenrY45iTH27DpLyx/u4STEz8O3hkGm5goTS8JhQ==}
peerDependencies:
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
typescript: ^4.9.4 || ^5.0.0
- svelte@5.39.7:
- resolution: {integrity: sha512-lfeYLzyl4AWqd5ysgIoZ6lsY2D8C151+hF8eOU3Gsq1OqYdn6LJBh5FA1cCSbf9/rxCg5ETta8jhM9acrfELZg==}
+ svelte@5.39.8:
+ resolution: {integrity: sha512-KfZ3hCITdxIXTOvrea4nFZX2o+47HPTChKeocgj9BwJQYqWrviVCcPj4boXHF5yf8+eBKqhHY8xii//XaakKXA==}
engines: {node: '>=18'}
symbol-tree@3.2.4:
@@ -7676,6 +8777,13 @@ packages:
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
engines: {node: ^14.18.0 || >=16.0.0}
+ system-architecture@0.1.0:
+ resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
+ engines: {node: '>=18'}
+
+ tailwind-merge@2.6.0:
+ resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==}
+
tailwindcss@3.4.17:
resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
engines: {node: '>=14.0.0'}
@@ -7688,12 +8796,15 @@ packages:
resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==}
engines: {node: '>=6'}
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
tar@6.2.1:
resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==}
engines: {node: '>=10'}
- tar@7.5.1:
- resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==}
+ tar@7.4.3:
+ resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
engines: {node: '>=18'}
temporal-polyfill@0.3.0:
@@ -7706,14 +8817,25 @@ packages:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
+ terser@5.44.0:
+ resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==}
+ engines: {node: '>=10'}
+ hasBin: true
+
test-exclude@7.0.1:
resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
engines: {node: '>=18'}
+ text-decoder@1.2.3:
+ resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
+
text-extensions@2.4.0:
resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
engines: {node: '>=8'}
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
thenify-all@1.6.0:
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
engines: {node: '>=0.8'}
@@ -7736,6 +8858,9 @@ packages:
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+ tinyexec@1.0.1:
+ resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
+
tinyglobby@0.2.14:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
@@ -7847,6 +8972,14 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ type-fest@4.41.0:
+ resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
+ engines: {node: '>=16'}
+
type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
@@ -7889,8 +9022,8 @@ packages:
peerDependencies:
typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x
- typescript-eslint@8.45.0:
- resolution: {integrity: sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==}
+ typescript-eslint@8.44.0:
+ resolution: {integrity: sha512-ib7mCkYuIzYonCq9XWF5XNw+fkj2zg629PSa9KNIQ47RXFF763S5BIX4wqz1+FLPogTZoiw8KmCiRPRa8bL3qw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -7906,8 +9039,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
+ typescript@5.9.2:
+ resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
engines: {node: '>=14.17'}
hasBin: true
@@ -7921,6 +9054,9 @@ packages:
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+ ultrahtml@1.6.0:
+ resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
+
unbox-primitive@1.1.0:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
@@ -7928,16 +9064,33 @@ packages:
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
+ unctx@2.4.1:
+ resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==}
+
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
- undici-types@7.13.0:
- resolution: {integrity: sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==}
+ undici-types@7.12.0:
+ resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==}
undici@7.16.0:
resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==}
engines: {node: '>=20.18.1'}
+ unenv@1.10.0:
+ resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==}
+
+ unenv@2.0.0-rc.21:
+ resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==}
+
+ unicorn-magic@0.3.0:
+ resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
+ engines: {node: '>=18'}
+
+ unimport@5.3.0:
+ resolution: {integrity: sha512-cty7t1DESgm0OPfCy9oyn5u9B5t0tMW6tH6bXTjAGIO3SkJsbg/DXYHjrPrUKqultqbAAoltAfYsuu/FEDocjg==}
+ engines: {node: '>=18.12.0'}
+
unique-filename@4.0.0:
resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -7961,6 +9114,10 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
+ unplugin-utils@0.3.0:
+ resolution: {integrity: sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg==}
+ engines: {node: '>=20.19.0'}
+
unplugin@2.3.10:
resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==}
engines: {node: '>=18.12.0'}
@@ -7968,12 +9125,88 @@ packages:
unrs-resolver@1.11.1:
resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
+ unstorage@1.17.1:
+ resolution: {integrity: sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ==}
+ peerDependencies:
+ '@azure/app-configuration': ^1.8.0
+ '@azure/cosmos': ^4.2.0
+ '@azure/data-tables': ^13.3.0
+ '@azure/identity': ^4.6.0
+ '@azure/keyvault-secrets': ^4.9.0
+ '@azure/storage-blob': ^12.26.0
+ '@capacitor/preferences': ^6.0.3 || ^7.0.0
+ '@deno/kv': '>=0.9.0'
+ '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0
+ '@planetscale/database': ^1.19.0
+ '@upstash/redis': ^1.34.3
+ '@vercel/blob': '>=0.27.1'
+ '@vercel/functions': ^2.2.12 || ^3.0.0
+ '@vercel/kv': ^1.0.1
+ aws4fetch: ^1.0.20
+ db0: '>=0.2.1'
+ idb-keyval: ^6.2.1
+ ioredis: ^5.4.2
+ uploadthing: ^7.4.4
+ peerDependenciesMeta:
+ '@azure/app-configuration':
+ optional: true
+ '@azure/cosmos':
+ optional: true
+ '@azure/data-tables':
+ optional: true
+ '@azure/identity':
+ optional: true
+ '@azure/keyvault-secrets':
+ optional: true
+ '@azure/storage-blob':
+ optional: true
+ '@capacitor/preferences':
+ optional: true
+ '@deno/kv':
+ optional: true
+ '@netlify/blobs':
+ optional: true
+ '@planetscale/database':
+ optional: true
+ '@upstash/redis':
+ optional: true
+ '@vercel/blob':
+ optional: true
+ '@vercel/functions':
+ optional: true
+ '@vercel/kv':
+ optional: true
+ aws4fetch:
+ optional: true
+ db0:
+ optional: true
+ idb-keyval:
+ optional: true
+ ioredis:
+ optional: true
+ uploadthing:
+ optional: true
+
+ untun@0.1.3:
+ resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==}
+ hasBin: true
+
+ untyped@2.0.0:
+ resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==}
+ hasBin: true
+
+ unwasm@0.3.11:
+ resolution: {integrity: sha512-Vhp5gb1tusSQw5of/g3Q697srYgMXvwMgXMjcG4ZNga02fDX9coxJ9fAb0Ci38hM2Hv/U1FXRPGgjP2BYqhNoQ==}
+
update-browserslist-db@1.1.3:
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
+ uqr@0.1.2:
+ resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==}
+
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -8052,46 +9285,6 @@ packages:
vite:
optional: true
- vite@6.3.6:
- resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==}
- engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
- jiti: '>=1.21.0'
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
- tsx:
- optional: true
- yaml:
- optional: true
-
vite@7.1.5:
resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -8316,6 +9509,11 @@ packages:
engines: {node: '>= 8'}
hasBin: true
+ which@4.0.0:
+ resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==}
+ engines: {node: ^16.13.0 || >=18.0.0}
+ hasBin: true
+
which@5.0.0:
resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==}
engines: {node: ^18.17.0 || >=20.5.0}
@@ -8439,6 +9637,12 @@ packages:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
+ youch-core@0.3.3:
+ resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==}
+
+ youch@4.1.0-beta.11:
+ resolution: {integrity: sha512-sQi6PERyO/mT8w564ojOVeAlYTtVQmC2GaktQAf+IdI75/GKIggosBuvyVXvEV+FATAT6RbLdIjFoiIId4ozoQ==}
+
z-schema@6.0.2:
resolution: {integrity: sha512-9fQb2ZhpMD0ZQXYw0ll5ya6uLQm3Xtt4DXY2RV3QO1QVI4ihSzSWirlgkDsMgGg4qK0EV4tLOJgRSH2bn0cbIw==}
engines: {node: '>=16.0.0'}
@@ -8447,6 +9651,10 @@ packages:
zimmerframe@1.1.4:
resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
+ zip-stream@6.0.1:
+ resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
+ engines: {node: '>= 14'}
+
zod-to-json-schema@3.24.6:
resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==}
peerDependencies:
@@ -8584,7 +9792,7 @@ snapshots:
transitivePeerDependencies:
- chokidar
- '@angular/build@20.3.3(@angular/compiler-cli@20.3.2(@angular/compiler@20.3.2)(typescript@5.8.3))(@angular/compiler@20.3.2)(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.2(@angular/common@20.3.2(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.6.1)(chokidar@4.0.3)(jiti@2.6.0)(karma@6.4.4)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.17)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)':
+ '@angular/build@20.3.3(@angular/compiler-cli@20.3.2(@angular/compiler@20.3.2)(typescript@5.8.3))(@angular/compiler@20.3.2)(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.3.2(@angular/common@20.3.2(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@24.5.2)(chokidar@4.0.3)(jiti@2.6.1)(karma@6.4.4)(lightningcss@1.30.1)(postcss@8.5.6)(tailwindcss@3.4.17)(terser@5.44.0)(tslib@2.8.1)(tsx@4.20.6)(typescript@5.8.3)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(yaml@2.8.1)':
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.2003.3(chokidar@4.0.3)
@@ -8593,8 +9801,8 @@ snapshots:
'@babel/core': 7.28.3
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-split-export-declaration': 7.24.7
- '@inquirer/confirm': 5.1.14(@types/node@24.6.1)
- '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.5(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@inquirer/confirm': 5.1.14(@types/node@24.5.2)
+ '@vitejs/plugin-basic-ssl': 2.1.0(vite@7.1.5(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
beasties: 0.3.5
browserslist: 4.26.2
esbuild: 0.25.9
@@ -8614,7 +9822,7 @@ snapshots:
tinyglobby: 0.2.14
tslib: 2.8.1
typescript: 5.8.3
- vite: 7.1.5(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.5(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
watchpack: 2.4.4
optionalDependencies:
'@angular/core': 20.3.2(@angular/compiler@20.3.2)(rxjs@7.8.2)(zone.js@0.15.1)
@@ -8623,7 +9831,7 @@ snapshots:
lmdb: 3.4.2
postcss: 8.5.6
tailwindcss: 3.4.17
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@types/node'
- chokidar
@@ -8637,13 +9845,13 @@ snapshots:
- tsx
- yaml
- '@angular/cli@20.3.3(@types/node@24.6.1)(chokidar@4.0.3)':
+ '@angular/cli@20.3.3(@types/node@24.5.2)(chokidar@4.0.3)':
dependencies:
'@angular-devkit/architect': 0.2003.3(chokidar@4.0.3)
'@angular-devkit/core': 20.3.3(chokidar@4.0.3)
'@angular-devkit/schematics': 20.3.3(chokidar@4.0.3)
- '@inquirer/prompts': 7.8.2(@types/node@24.6.1)
- '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.6.1))(@types/node@24.6.1)(listr2@9.0.1)
+ '@inquirer/prompts': 7.8.2(@types/node@24.5.2)
+ '@listr2/prompt-adapter-inquirer': 3.0.1(@inquirer/prompts@7.8.2(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.1)
'@modelcontextprotocol/sdk': 1.17.3
'@schematics/angular': 20.3.3(chokidar@4.0.3)
'@yarnpkg/lockfile': 1.1.0
@@ -8754,21 +9962,20 @@ snapshots:
'@ark/util@0.49.0': {}
- '@asamuzakjp/css-color@4.0.5':
+ '@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)
'@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)
'@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4)
'@csstools/css-tokenizer': 3.0.4
- lru-cache: 11.2.2
+ lru-cache: 11.2.1
- '@asamuzakjp/dom-selector@6.5.7':
+ '@asamuzakjp/dom-selector@6.5.5':
dependencies:
'@asamuzakjp/nwsapi': 2.3.9
bidi-js: 1.0.3
css-tree: 3.1.0
is-potential-custom-element-name: 1.0.1
- lru-cache: 11.2.2
'@asamuzakjp/nwsapi@2.3.9': {}
@@ -9055,7 +10262,7 @@ snapshots:
dependencies:
'@changesets/types': 6.1.0
- '@changesets/cli@2.29.7(@types/node@22.18.8)':
+ '@changesets/cli@2.29.7(@types/node@22.18.6)':
dependencies:
'@changesets/apply-release-plan': 7.0.13
'@changesets/assemble-release-plan': 6.0.9
@@ -9071,7 +10278,7 @@ snapshots:
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
'@changesets/write': 0.4.0
- '@inquirer/external-editor': 1.0.2(@types/node@22.18.8)
+ '@inquirer/external-editor': 1.0.2(@types/node@22.18.6)
'@manypkg/get-packages': 1.1.3
ansi-colors: 4.1.3
ci-info: 3.9.0
@@ -9177,6 +10384,10 @@ snapshots:
human-id: 4.1.1
prettier: 2.8.8
+ '@cloudflare/kv-asset-handler@0.4.0':
+ dependencies:
+ mime: 3.0.0
+
'@colors/colors@1.5.0': {}
'@commitlint/parse@19.8.1':
@@ -9220,7 +10431,7 @@ snapshots:
dependencies:
'@microsoft/fetch-event-source': 2.0.1
optionalDependencies:
- '@rollup/rollup-darwin-arm64': 4.52.3
+ '@rollup/rollup-darwin-arm64': 4.50.2
'@emnapi/core@1.5.0':
dependencies:
@@ -9470,18 +10681,23 @@ snapshots:
'@esbuild/win32-x64@0.25.9':
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.0))':
+ '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)':
+ dependencies:
+ eslint: 8.57.1
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.6.1))':
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
- '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.6.0))':
+ '@eslint/compat@1.4.0(eslint@9.36.0(jiti@2.6.1))':
dependencies:
'@eslint/core': 0.16.0
optionalDependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
'@eslint/config-array@0.21.0':
dependencies:
@@ -9501,6 +10717,20 @@ snapshots:
dependencies:
'@types/json-schema': 7.0.15
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.3
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
'@eslint/eslintrc@3.3.1':
dependencies:
ajv: 6.12.6
@@ -9515,6 +10745,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@eslint/js@8.57.1': {}
+
'@eslint/js@9.36.0': {}
'@eslint/object-schema@2.1.6': {}
@@ -9851,7 +11083,7 @@ snapshots:
'@grpc/grpc-js@1.9.15':
dependencies:
'@grpc/proto-loader': 0.7.15
- '@types/node': 24.6.1
+ '@types/node': 22.18.6
'@grpc/proto-loader@0.7.15':
dependencies:
@@ -9869,148 +11101,160 @@ snapshots:
'@humanfs/core': 0.19.1
'@humanwhocodes/retry': 0.4.3
+ '@humanwhocodes/config-array@0.13.0':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.4.3
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
'@humanwhocodes/module-importer@1.0.1': {}
+ '@humanwhocodes/object-schema@2.0.3': {}
+
'@humanwhocodes/retry@0.4.3': {}
'@inquirer/ansi@1.0.0': {}
- '@inquirer/checkbox@4.2.4(@types/node@24.6.1)':
+ '@inquirer/checkbox@4.2.4(@types/node@24.5.2)':
dependencies:
'@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/confirm@5.1.14(@types/node@24.6.1)':
+ '@inquirer/confirm@5.1.14(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/confirm@5.1.18(@types/node@24.6.1)':
+ '@inquirer/confirm@5.1.18(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/core@10.2.2(@types/node@24.6.1)':
+ '@inquirer/core@10.2.2(@types/node@24.5.2)':
dependencies:
'@inquirer/ansi': 1.0.0
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/editor@4.2.20(@types/node@24.6.1)':
+ '@inquirer/editor@4.2.20(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/external-editor': 1.0.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/external-editor': 1.0.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/expand@4.0.20(@types/node@24.6.1)':
+ '@inquirer/expand@4.0.20(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/external-editor@1.0.2(@types/node@22.18.8)':
+ '@inquirer/external-editor@1.0.2(@types/node@22.18.6)':
dependencies:
chardet: 2.1.0
iconv-lite: 0.7.0
optionalDependencies:
- '@types/node': 22.18.8
+ '@types/node': 22.18.6
- '@inquirer/external-editor@1.0.2(@types/node@24.6.1)':
+ '@inquirer/external-editor@1.0.2(@types/node@24.5.2)':
dependencies:
chardet: 2.1.0
iconv-lite: 0.7.0
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@inquirer/figures@1.0.13': {}
- '@inquirer/input@4.2.4(@types/node@24.6.1)':
+ '@inquirer/input@4.2.4(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/number@3.0.20(@types/node@24.6.1)':
+ '@inquirer/number@3.0.20(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/password@4.0.20(@types/node@24.6.1)':
+ '@inquirer/password@4.0.20(@types/node@24.5.2)':
dependencies:
'@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
-
- '@inquirer/prompts@7.8.2(@types/node@24.6.1)':
- dependencies:
- '@inquirer/checkbox': 4.2.4(@types/node@24.6.1)
- '@inquirer/confirm': 5.1.18(@types/node@24.6.1)
- '@inquirer/editor': 4.2.20(@types/node@24.6.1)
- '@inquirer/expand': 4.0.20(@types/node@24.6.1)
- '@inquirer/input': 4.2.4(@types/node@24.6.1)
- '@inquirer/number': 3.0.20(@types/node@24.6.1)
- '@inquirer/password': 4.0.20(@types/node@24.6.1)
- '@inquirer/rawlist': 4.1.8(@types/node@24.6.1)
- '@inquirer/search': 3.1.3(@types/node@24.6.1)
- '@inquirer/select': 4.3.4(@types/node@24.6.1)
+ '@types/node': 24.5.2
+
+ '@inquirer/prompts@7.8.2(@types/node@24.5.2)':
+ dependencies:
+ '@inquirer/checkbox': 4.2.4(@types/node@24.5.2)
+ '@inquirer/confirm': 5.1.18(@types/node@24.5.2)
+ '@inquirer/editor': 4.2.20(@types/node@24.5.2)
+ '@inquirer/expand': 4.0.20(@types/node@24.5.2)
+ '@inquirer/input': 4.2.4(@types/node@24.5.2)
+ '@inquirer/number': 3.0.20(@types/node@24.5.2)
+ '@inquirer/password': 4.0.20(@types/node@24.5.2)
+ '@inquirer/rawlist': 4.1.8(@types/node@24.5.2)
+ '@inquirer/search': 3.1.3(@types/node@24.5.2)
+ '@inquirer/select': 4.3.4(@types/node@24.5.2)
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/rawlist@4.1.8(@types/node@24.6.1)':
+ '@inquirer/rawlist@4.1.8(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/search@3.1.3(@types/node@24.6.1)':
+ '@inquirer/search@3.1.3(@types/node@24.5.2)':
dependencies:
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/select@4.3.4(@types/node@24.6.1)':
+ '@inquirer/select@4.3.4(@types/node@24.5.2)':
dependencies:
'@inquirer/ansi': 1.0.0
- '@inquirer/core': 10.2.2(@types/node@24.6.1)
+ '@inquirer/core': 10.2.2(@types/node@24.5.2)
'@inquirer/figures': 1.0.13
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
- '@inquirer/type@3.0.8(@types/node@24.6.1)':
+ '@inquirer/type@3.0.8(@types/node@24.5.2)':
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
+
+ '@ioredis/commands@1.4.0': {}
'@isaacs/balanced-match@4.0.1': {}
@@ -10045,6 +11289,11 @@ snapshots:
'@jridgewell/resolve-uri@3.1.2': {}
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
@@ -10062,10 +11311,10 @@ snapshots:
'@levischuck/tiny-cbor@0.2.11': {}
- '@listr2/prompt-adapter-inquirer@3.0.1(@inquirer/prompts@7.8.2(@types/node@24.6.1))(@types/node@24.6.1)(listr2@9.0.1)':
+ '@listr2/prompt-adapter-inquirer@3.0.1(@inquirer/prompts@7.8.2(@types/node@24.5.2))(@types/node@24.5.2)(listr2@9.0.1)':
dependencies:
- '@inquirer/prompts': 7.8.2(@types/node@24.6.1)
- '@inquirer/type': 3.0.8(@types/node@24.6.1)
+ '@inquirer/prompts': 7.8.2(@types/node@24.5.2)
+ '@inquirer/type': 3.0.8(@types/node@24.5.2)
listr2: 9.0.1
transitivePeerDependencies:
- '@types/node'
@@ -10107,23 +11356,36 @@ snapshots:
globby: 11.1.0
read-yaml-file: 1.1.0
- '@microsoft/api-extractor-model@7.29.6(@types/node@22.18.8)':
+ '@mapbox/node-pre-gyp@2.0.0(encoding@0.1.13)':
+ dependencies:
+ consola: 3.4.2
+ detect-libc: 2.1.0
+ https-proxy-agent: 7.0.6
+ node-fetch: 2.7.0(encoding@0.1.13)
+ nopt: 8.1.0
+ semver: 7.7.2
+ tar: 7.4.3
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ '@microsoft/api-extractor-model@7.29.6(@types/node@22.18.6)':
dependencies:
'@microsoft/tsdoc': 0.15.1
'@microsoft/tsdoc-config': 0.17.1
- '@rushstack/node-core-library': 5.7.0(@types/node@22.18.8)
+ '@rushstack/node-core-library': 5.7.0(@types/node@22.18.6)
transitivePeerDependencies:
- '@types/node'
- '@microsoft/api-extractor@7.47.7(@types/node@22.18.8)':
+ '@microsoft/api-extractor@7.47.7(@types/node@22.18.6)':
dependencies:
- '@microsoft/api-extractor-model': 7.29.6(@types/node@22.18.8)
+ '@microsoft/api-extractor-model': 7.29.6(@types/node@22.18.6)
'@microsoft/tsdoc': 0.15.1
'@microsoft/tsdoc-config': 0.17.1
- '@rushstack/node-core-library': 5.7.0(@types/node@22.18.8)
+ '@rushstack/node-core-library': 5.7.0(@types/node@22.18.6)
'@rushstack/rig-package': 0.5.3
- '@rushstack/terminal': 0.14.0(@types/node@22.18.8)
- '@rushstack/ts-command-line': 4.22.6(@types/node@22.18.8)
+ '@rushstack/terminal': 0.14.0(@types/node@22.18.6)
+ '@rushstack/ts-command-line': 4.22.6(@types/node@22.18.6)
lodash: 4.17.21
minimatch: 3.0.8
resolve: 1.22.10
@@ -10161,7 +11423,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mongodb-js/saslprep@1.3.1':
+ '@mongodb-js/saslprep@1.3.0':
dependencies:
sparse-bitfield: 3.0.3
@@ -10269,9 +11531,9 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
- '@noble/ciphers@2.0.1': {}
+ '@noble/ciphers@2.0.0': {}
- '@noble/hashes@2.0.1': {}
+ '@noble/hashes@2.0.0': {}
'@nodelib/fs.scandir@2.1.5':
dependencies:
@@ -10363,6 +11625,127 @@ snapshots:
'@oozcitak/util@8.3.8': {}
+ '@opentelemetry/api-logs@0.56.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
+ '@opentelemetry/api@1.9.0': {}
+
+ '@opentelemetry/core@1.29.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/exporter-trace-otlp-http@0.56.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-exporter-base': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0)
+
+ '@opentelemetry/instrumentation-fetch@0.56.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-web': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.56.0
+ '@types/shimmer': 1.2.0
+ import-in-the-middle: 1.14.4
+ require-in-the-middle: 7.5.2
+ semver: 7.7.2
+ shimmer: 1.2.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@opentelemetry/otlp-exporter-base@0.56.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer': 0.56.0(@opentelemetry/api@1.9.0)
+
+ '@opentelemetry/otlp-transformer@0.56.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.56.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-metrics': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0)
+ protobufjs: 7.5.4
+
+ '@opentelemetry/resources@1.29.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/sdk-logs@0.56.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.56.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0)
+
+ '@opentelemetry/sdk-metrics@1.29.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0)
+
+ '@opentelemetry/sdk-trace-base@1.29.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/sdk-trace-web@1.29.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/sdk-trace-web@1.30.1(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.28.0
+
+ '@opentelemetry/semantic-conventions@1.28.0': {}
+
+ '@opentelemetry/semantic-conventions@1.37.0': {}
+
'@oxc-project/types@0.89.0': {}
'@oxc-resolver/binding-android-arm-eabi@11.8.4':
@@ -10454,6 +11837,11 @@ snapshots:
'@parcel/watcher-linux-x64-musl@2.5.1':
optional: true
+ '@parcel/watcher-wasm@2.5.1':
+ dependencies:
+ is-glob: 4.0.3
+ micromatch: 4.0.8
+
'@parcel/watcher-win32-arm64@2.5.1':
optional: true
@@ -10483,7 +11871,6 @@ snapshots:
'@parcel/watcher-win32-arm64': 2.5.1
'@parcel/watcher-win32-ia32': 2.5.1
'@parcel/watcher-win32-x64': 2.5.1
- optional: true
'@peculiar/asn1-android@2.5.0':
dependencies:
@@ -10581,11 +11968,26 @@ snapshots:
tslib: 2.8.1
tsyringe: 4.10.0
+ '@petamoriken/float16@3.9.2':
+ optional: true
+
'@pkgjs/parseargs@0.11.0':
optional: true
'@pkgr/core@0.2.9': {}
+ '@poppinss/colors@4.1.5':
+ dependencies:
+ kleur: 4.1.5
+
+ '@poppinss/dumper@0.6.4':
+ dependencies:
+ '@poppinss/colors': 4.1.5
+ '@sindresorhus/is': 7.1.0
+ supports-color: 10.2.2
+
+ '@poppinss/exception@1.2.2': {}
+
'@protobufjs/aspromise@1.1.2': {}
'@protobufjs/base64@1.1.2': {}
@@ -10655,87 +12057,145 @@ snapshots:
'@rolldown/binding-win32-x64-msvc@1.0.0-beta.38':
optional: true
- '@rolldown/pluginutils@1.0.0-beta.27': {}
+ '@rolldown/pluginutils@1.0.0-beta.35': {}
'@rolldown/pluginutils@1.0.0-beta.38': {}
'@rolldown/pluginutils@1.0.0-beta.40': {}
- '@rollup/pluginutils@5.3.0(rollup@4.52.3)':
+ '@rollup/plugin-alias@5.1.1(rollup@4.52.0)':
+ optionalDependencies:
+ rollup: 4.52.0
+
+ '@rollup/plugin-commonjs@28.0.6(rollup@4.52.0)':
dependencies:
- '@types/estree': 1.0.8
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
+ commondir: 1.0.1
estree-walker: 2.0.2
+ fdir: 6.5.0(picomatch@4.0.3)
+ is-reference: 1.2.1
+ magic-string: 0.30.19
picomatch: 4.0.3
optionalDependencies:
- rollup: 4.52.3
+ rollup: 4.52.0
- '@rollup/rollup-android-arm-eabi@4.52.3':
- optional: true
-
- '@rollup/rollup-android-arm64@4.52.3':
- optional: true
+ '@rollup/plugin-inject@5.0.5(rollup@4.52.0)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
+ estree-walker: 2.0.2
+ magic-string: 0.30.19
+ optionalDependencies:
+ rollup: 4.52.0
- '@rollup/rollup-darwin-arm64@4.52.3':
- optional: true
+ '@rollup/plugin-json@6.1.0(rollup@4.52.0)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
+ optionalDependencies:
+ rollup: 4.52.0
- '@rollup/rollup-darwin-x64@4.52.3':
- optional: true
+ '@rollup/plugin-node-resolve@16.0.1(rollup@4.52.0)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
+ '@types/resolve': 1.20.2
+ deepmerge: 4.3.1
+ is-module: 1.0.0
+ resolve: 1.22.10
+ optionalDependencies:
+ rollup: 4.52.0
- '@rollup/rollup-freebsd-arm64@4.52.3':
- optional: true
+ '@rollup/plugin-replace@6.0.2(rollup@4.52.0)':
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
+ magic-string: 0.30.19
+ optionalDependencies:
+ rollup: 4.52.0
+
+ '@rollup/plugin-terser@0.4.4(rollup@4.52.0)':
+ dependencies:
+ serialize-javascript: 6.0.2
+ smob: 1.5.0
+ terser: 5.44.0
+ optionalDependencies:
+ rollup: 4.52.0
+
+ '@rollup/pluginutils@5.3.0(rollup@4.52.0)':
+ dependencies:
+ '@types/estree': 1.0.8
+ estree-walker: 2.0.2
+ picomatch: 4.0.3
+ optionalDependencies:
+ rollup: 4.52.0
+
+ '@rollup/rollup-android-arm-eabi@4.52.0':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.52.0':
+ optional: true
- '@rollup/rollup-freebsd-x64@4.52.3':
+ '@rollup/rollup-darwin-arm64@4.50.2':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.52.3':
+ '@rollup/rollup-darwin-arm64@4.52.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.52.3':
+ '@rollup/rollup-darwin-x64@4.52.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.52.3':
+ '@rollup/rollup-freebsd-arm64@4.52.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.52.3':
+ '@rollup/rollup-freebsd-x64@4.52.0':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.52.3':
+ '@rollup/rollup-linux-arm-gnueabihf@4.52.0':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.52.3':
+ '@rollup/rollup-linux-arm-musleabihf@4.52.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.52.3':
+ '@rollup/rollup-linux-arm64-gnu@4.52.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.52.3':
+ '@rollup/rollup-linux-arm64-musl@4.52.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.52.3':
+ '@rollup/rollup-linux-loong64-gnu@4.52.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.52.3':
+ '@rollup/rollup-linux-ppc64-gnu@4.52.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.52.3':
+ '@rollup/rollup-linux-riscv64-gnu@4.52.0':
optional: true
- '@rollup/rollup-openharmony-arm64@4.52.3':
+ '@rollup/rollup-linux-riscv64-musl@4.52.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.52.3':
+ '@rollup/rollup-linux-s390x-gnu@4.52.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.52.3':
+ '@rollup/rollup-linux-x64-gnu@4.52.0':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.52.3':
+ '@rollup/rollup-linux-x64-musl@4.52.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.52.3':
+ '@rollup/rollup-openharmony-arm64@4.52.0':
optional: true
- '@rushstack/node-core-library@5.7.0(@types/node@22.18.8)':
+ '@rollup/rollup-win32-arm64-msvc@4.52.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.52.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.52.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.52.0':
+ optional: true
+
+ '@rushstack/node-core-library@5.7.0(@types/node@22.18.6)':
dependencies:
ajv: 8.13.0
ajv-draft-04: 1.0.0(ajv@8.13.0)
@@ -10746,23 +12206,23 @@ snapshots:
resolve: 1.22.10
semver: 7.5.4
optionalDependencies:
- '@types/node': 22.18.8
+ '@types/node': 22.18.6
'@rushstack/rig-package@0.5.3':
dependencies:
resolve: 1.22.10
strip-json-comments: 3.1.1
- '@rushstack/terminal@0.14.0(@types/node@22.18.8)':
+ '@rushstack/terminal@0.14.0(@types/node@22.18.6)':
dependencies:
- '@rushstack/node-core-library': 5.7.0(@types/node@22.18.8)
+ '@rushstack/node-core-library': 5.7.0(@types/node@22.18.6)
supports-color: 8.1.1
optionalDependencies:
- '@types/node': 22.18.8
+ '@types/node': 22.18.6
- '@rushstack/ts-command-line@4.22.6(@types/node@22.18.8)':
+ '@rushstack/ts-command-line@4.22.6(@types/node@22.18.6)':
dependencies:
- '@rushstack/terminal': 0.14.0(@types/node@22.18.8)
+ '@rushstack/terminal': 0.14.0(@types/node@22.18.6)
'@types/argparse': 1.0.38
argparse: 1.0.10
string-argv: 0.3.2
@@ -10834,6 +12294,10 @@ snapshots:
'@peculiar/asn1-x509': 2.5.0
'@peculiar/x509': 1.14.0
+ '@sindresorhus/is@7.1.0': {}
+
+ '@sindresorhus/merge-streams@2.3.0': {}
+
'@socket.io/component-emitter@3.1.2': {}
'@solid-devtools/debugger@0.28.1(solid-js@1.9.9)':
@@ -10954,12 +12418,14 @@ snapshots:
'@testing-library/dom': 10.4.1
solid-js: 1.9.9
+ '@speed-highlight/core@1.2.7': {}
+
'@standard-schema/spec@1.0.0': {}
- '@stylistic/eslint-plugin@4.4.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)':
+ '@stylistic/eslint-plugin@4.4.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- eslint: 9.36.0(jiti@2.6.0)
+ '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ eslint: 9.36.0(jiti@2.6.1)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
@@ -10968,49 +12434,49 @@ snapshots:
- supports-color
- typescript
- '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.0))':
+ '@stylistic/eslint-plugin@5.4.0(eslint@9.36.0(jiti@2.6.1))':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
- '@typescript-eslint/types': 8.45.0
- eslint: 9.36.0(jiti@2.6.0)
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1))
+ '@typescript-eslint/types': 8.44.1
+ eslint: 9.36.0(jiti@2.6.1)
eslint-visitor-keys: 4.2.1
espree: 10.4.0
estraverse: 5.3.0
picomatch: 4.0.3
- '@sveltejs/acorn-typescript@1.0.6(acorn@8.15.0)':
+ '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)':
dependencies:
acorn: 8.15.0
- '@sveltejs/package@2.5.4(svelte@5.39.7)(typescript@5.9.3)':
+ '@sveltejs/package@2.5.4(svelte@5.39.8)(typescript@5.9.2)':
dependencies:
chokidar: 4.0.3
kleur: 4.1.5
sade: 1.8.1
semver: 7.7.2
- svelte: 5.39.7
- svelte2tsx: 0.7.44(svelte@5.39.7)(typescript@5.9.3)
+ svelte: 5.39.8
+ svelte2tsx: 0.7.43(svelte@5.39.8)(typescript@5.9.2)
transitivePeerDependencies:
- typescript
- '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
debug: 4.4.3
- svelte: 5.39.7
- vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ svelte: 5.39.8
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.39.7)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.39.8)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
debug: 4.4.3
deepmerge: 4.3.1
magic-string: 0.30.19
- svelte: 5.39.7
- vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ svelte: 5.39.8
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitefu: 1.1.1(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
@@ -11025,7 +12491,7 @@ snapshots:
dependencies:
'@jridgewell/remapping': 2.3.5
enhanced-resolve: 5.18.3
- jiti: 2.6.0
+ jiti: 2.5.1
lightningcss: 1.30.1
magic-string: 0.30.19
source-map-js: 1.2.1
@@ -11069,8 +12535,8 @@ snapshots:
'@tailwindcss/oxide@4.1.13':
dependencies:
- detect-libc: 2.1.1
- tar: 7.5.1
+ detect-libc: 2.1.0
+ tar: 7.4.3
optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.1.13
'@tailwindcss/oxide-darwin-arm64': 4.1.13
@@ -11085,26 +12551,26 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.13
'@tailwindcss/oxide-win32-x64-msvc': 4.1.13
- '@tailwindcss/vite@4.1.13(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tailwindcss/vite@4.1.13(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@tailwindcss/node': 4.1.13
'@tailwindcss/oxide': 4.1.13
tailwindcss: 4.1.13
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
- '@tailwindcss/vite@4.1.13(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tailwindcss/vite@4.1.13(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@tailwindcss/node': 4.1.13
'@tailwindcss/oxide': 4.1.13
tailwindcss: 4.1.13
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
- '@tanstack/config@0.20.3(@types/node@22.18.8)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(rollup@4.52.3)(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/config@0.20.3(@types/node@22.18.6)(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ '@tanstack/eslint-config': 0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@tanstack/publish-config': 0.2.1
- '@tanstack/typedoc-config': 0.2.1(typescript@5.9.3)
- '@tanstack/vite-config': 0.3.0(@types/node@22.18.8)(rollup@4.52.3)(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/typedoc-config': 0.2.1(typescript@5.9.2)
+ '@tanstack/vite-config': 0.3.0(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- '@types/node'
- '@typescript-eslint/utils'
@@ -11115,41 +12581,54 @@ snapshots:
- typescript
- vite
- '@tanstack/directive-functions-plugin@1.132.21(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/directive-functions-plugin@1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/core': 7.28.4
+ '@babel/traverse': 7.28.4
+ '@babel/types': 7.28.4
+ '@tanstack/router-utils': 1.131.2
+ babel-dead-code-elimination: 1.0.10
+ tiny-invariant: 1.3.3
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@tanstack/directive-functions-plugin@1.132.31(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.28.4
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
- '@tanstack/router-utils': 1.132.21
+ '@tanstack/router-utils': 1.132.31
babel-dead-code-elimination: 1.0.10
tiny-invariant: 1.3.3
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- '@tanstack/directive-functions-plugin@1.132.21(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/directive-functions-plugin@1.132.31(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.28.4
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
- '@tanstack/router-utils': 1.132.21
+ '@tanstack/router-utils': 1.132.31
babel-dead-code-elimination: 1.0.10
tiny-invariant: 1.3.3
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- '@tanstack/eslint-config@0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)':
+ '@tanstack/eslint-config@0.3.2(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
'@eslint/js': 9.36.0
- '@stylistic/eslint-plugin': 5.4.0(eslint@9.36.0(jiti@2.6.0))
- eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))
- eslint-plugin-n: 17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ '@stylistic/eslint-plugin': 5.4.0(eslint@9.36.0(jiti@2.6.1))
+ eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))
+ eslint-plugin-n: 17.23.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
globals: 16.4.0
- typescript-eslint: 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- vue-eslint-parser: 10.2.0(eslint@9.36.0(jiti@2.6.0))
+ typescript-eslint: 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ vue-eslint-parser: 10.2.0(eslint@9.36.0(jiti@2.6.1))
transitivePeerDependencies:
- '@typescript-eslint/utils'
- eslint
@@ -11157,7 +12636,9 @@ snapshots:
- supports-color
- typescript
- '@tanstack/history@1.132.21': {}
+ '@tanstack/history@1.131.2': {}
+
+ '@tanstack/history@1.132.31': {}
'@tanstack/publish-config@0.2.1':
dependencies:
@@ -11168,20 +12649,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@tanstack/query-core@5.89.0': {}
+
'@tanstack/query-core@5.90.2': {}
- '@tanstack/react-query@5.90.2(react@19.1.1)':
+ '@tanstack/react-query@5.89.0(react@19.1.1)':
dependencies:
- '@tanstack/query-core': 5.90.2
+ '@tanstack/query-core': 5.89.0
react: 19.1.1
- '@tanstack/react-router-devtools@1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.27)(@types/node@24.6.1)(csstype@3.1.3)(jiti@2.6.0)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)(solid-js@1.9.9)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
+ '@tanstack/react-router-devtools@1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.31)(csstype@3.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(solid-js@1.9.9)(tiny-invariant@1.3.3)':
+ dependencies:
+ '@tanstack/react-router': 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-devtools-core': 1.131.47(@tanstack/router-core@1.132.31)(csstype@3.1.3)(solid-js@1.9.9)(tiny-invariant@1.3.3)
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+ transitivePeerDependencies:
+ - '@tanstack/router-core'
+ - csstype
+ - solid-js
+ - tiny-invariant
+
+ '@tanstack/react-router-devtools@1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.31)(@types/node@24.5.2)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)(solid-js@1.9.9)(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
dependencies:
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/router-devtools-core': 1.132.27(@tanstack/router-core@1.132.27)(@types/node@24.6.1)(csstype@3.1.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(solid-js@1.9.9)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-devtools-core': 1.132.31(@tanstack/router-core@1.132.31)(@types/node@24.5.2)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(solid-js@1.9.9)(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@tanstack/router-core'
- '@types/node'
@@ -11199,60 +12694,180 @@ snapshots:
- tsx
- yaml
- '@tanstack/react-router-with-query@1.130.17(@tanstack/react-query@5.90.2(react@19.1.1))(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.27)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-router-with-query@1.130.17(@tanstack/react-query@5.89.0(react@19.1.1))(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@tanstack/router-core@1.132.31)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ dependencies:
+ '@tanstack/react-query': 5.89.0(react@19.1.1)
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-core': 1.132.31
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+
+ '@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
dependencies:
- '@tanstack/react-query': 5.90.2(react@19.1.1)
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/router-core': 1.132.27
+ '@tanstack/history': 1.131.2
+ '@tanstack/react-store': 0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-core': 1.131.47
+ isbot: 5.1.30
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
- '@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
dependencies:
- '@tanstack/history': 1.132.21
+ '@tanstack/history': 1.132.31
'@tanstack/react-store': 0.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/router-core': 1.132.27
+ '@tanstack/router-core': 1.132.31
isbot: 5.1.31
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/react-start-client@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-start-client@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ dependencies:
+ '@tanstack/react-router': 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/start-client-core': 1.131.47
+ cookie-es: 1.2.2
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
+
+ '@tanstack/react-start-client@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
dependencies:
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/router-core': 1.132.27
- '@tanstack/start-client-core': 1.132.27
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/start-client-core': 1.132.31
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/react-start-server@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-start-plugin@1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(rolldown@1.0.0-beta.38)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@tanstack/start-plugin-core': 1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(rolldown@1.0.0-beta.38)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@vitejs/plugin-react': 5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ pathe: 2.0.3
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@rsbuild/core'
+ - '@tanstack/react-router'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - better-sqlite3
+ - drizzle-orm
+ - encoding
+ - idb-keyval
+ - mysql2
+ - react-native-b4a
+ - rolldown
+ - sqlite3
+ - supports-color
+ - uploadthing
+ - vite-plugin-solid
+ - webpack
+ - xml2js
+
+ '@tanstack/react-start-server@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
dependencies:
- '@tanstack/history': 1.132.21
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/router-core': 1.132.27
- '@tanstack/start-client-core': 1.132.27
- '@tanstack/start-server-core': 1.132.27
+ '@tanstack/history': 1.131.2
+ '@tanstack/react-router': 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/start-client-core': 1.131.47
+ '@tanstack/start-server-core': 1.131.47
+ h3: 1.13.0
+ isbot: 5.1.31
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+
+ '@tanstack/react-start-server@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ dependencies:
+ '@tanstack/history': 1.132.31
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/start-client-core': 1.132.31
+ '@tanstack/start-server-core': 1.132.31
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
transitivePeerDependencies:
- crossws
- '@tanstack/react-start@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/react-start@1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rolldown@1.0.0-beta.38)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@tanstack/react-start-client': 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/react-start-plugin': 1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(rolldown@1.0.0-beta.38)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/react-start-server': 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/start-server-functions-client': 1.131.47(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-functions-server': 1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@vitejs/plugin-react': 5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@rsbuild/core'
+ - '@tanstack/react-router'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - better-sqlite3
+ - drizzle-orm
+ - encoding
+ - idb-keyval
+ - mysql2
+ - react-native-b4a
+ - rolldown
+ - sqlite3
+ - supports-color
+ - uploadthing
+ - vite-plugin-solid
+ - webpack
+ - xml2js
+
+ '@tanstack/react-start@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/react-start-client': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/react-start-server': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/router-utils': 1.132.21
- '@tanstack/start-client-core': 1.132.27
- '@tanstack/start-plugin-core': 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- '@tanstack/start-server-core': 1.132.27
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/react-start-client': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/react-start-server': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@tanstack/router-utils': 1.132.31
+ '@tanstack/start-client-core': 1.132.31
+ '@tanstack/start-plugin-core': 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-core': 1.132.31
pathe: 2.0.3
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@rsbuild/core'
- crossws
@@ -11260,6 +12875,13 @@ snapshots:
- vite-plugin-solid
- webpack
+ '@tanstack/react-store@0.7.5(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ dependencies:
+ '@tanstack/store': 0.7.5
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+ use-sync-external-store: 1.5.0(react@19.1.1)
+
'@tanstack/react-store@0.7.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
dependencies:
'@tanstack/store': 0.7.7
@@ -11267,9 +12889,19 @@ snapshots:
react-dom: 19.1.1(react@19.1.1)
use-sync-external-store: 1.5.0(react@19.1.1)
- '@tanstack/router-core@1.132.27':
+ '@tanstack/router-core@1.131.47':
+ dependencies:
+ '@tanstack/history': 1.131.2
+ '@tanstack/store': 0.7.7
+ cookie-es: 1.2.2
+ seroval: 1.3.2
+ seroval-plugins: 1.3.3(seroval@1.3.2)
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
+
+ '@tanstack/router-core@1.132.31':
dependencies:
- '@tanstack/history': 1.132.21
+ '@tanstack/history': 1.132.31
'@tanstack/store': 0.7.7
cookie-es: 2.0.0
seroval: 1.3.2
@@ -11277,14 +12909,24 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/router-devtools-core@1.132.27(@tanstack/router-core@1.132.27)(@types/node@24.6.1)(csstype@3.1.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(solid-js@1.9.9)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
+ '@tanstack/router-devtools-core@1.131.47(@tanstack/router-core@1.132.31)(csstype@3.1.3)(solid-js@1.9.9)(tiny-invariant@1.3.3)':
+ dependencies:
+ '@tanstack/router-core': 1.132.31
+ clsx: 2.1.1
+ goober: 2.1.16(csstype@3.1.3)
+ solid-js: 1.9.9
+ tiny-invariant: 1.3.3
+ optionalDependencies:
+ csstype: 3.1.3
+
+ '@tanstack/router-devtools-core@1.132.31(@tanstack/router-core@1.132.31)(@types/node@24.5.2)(csstype@3.1.3)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(solid-js@1.9.9)(terser@5.44.0)(tiny-invariant@1.3.3)(tsx@4.20.6)(yaml@2.8.1)':
dependencies:
- '@tanstack/router-core': 1.132.27
+ '@tanstack/router-core': 1.132.31
clsx: 2.1.1
goober: 2.1.16(csstype@3.1.3)
solid-js: 1.9.9
tiny-invariant: 1.3.3
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
optionalDependencies:
csstype: 3.1.3
transitivePeerDependencies:
@@ -11300,11 +12942,24 @@ snapshots:
- tsx
- yaml
- '@tanstack/router-generator@1.132.27':
+ '@tanstack/router-generator@1.131.47':
+ dependencies:
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/router-utils': 1.131.2
+ '@tanstack/virtual-file-routes': 1.131.2
+ prettier: 3.6.2
+ recast: 0.23.11
+ source-map: 0.7.6
+ tsx: 4.20.6
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - supports-color
+
+ '@tanstack/router-generator@1.132.31':
dependencies:
- '@tanstack/router-core': 1.132.27
- '@tanstack/router-utils': 1.132.21
- '@tanstack/virtual-file-routes': 1.132.21
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/router-utils': 1.132.31
+ '@tanstack/virtual-file-routes': 1.132.31
prettier: 3.6.2
recast: 0.23.11
source-map: 0.7.6
@@ -11313,7 +12968,30 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tanstack/router-plugin@1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/router-plugin@1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@babel/core': 7.28.4
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4)
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.4
+ '@babel/types': 7.28.4
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/router-generator': 1.131.47
+ '@tanstack/router-utils': 1.131.2
+ '@tanstack/virtual-file-routes': 1.131.2
+ babel-dead-code-elimination: 1.0.10
+ chokidar: 3.6.0
+ unplugin: 2.3.10
+ zod: 3.25.76
+ optionalDependencies:
+ '@tanstack/react-router': 1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-plugin-solid: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ transitivePeerDependencies:
+ - supports-color
+
+ '@tanstack/router-plugin@1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
@@ -11321,22 +12999,22 @@ snapshots:
'@babel/template': 7.27.2
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
- '@tanstack/router-core': 1.132.27
- '@tanstack/router-generator': 1.132.27
- '@tanstack/router-utils': 1.132.21
- '@tanstack/virtual-file-routes': 1.132.21
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/router-generator': 1.132.31
+ '@tanstack/router-utils': 1.132.31
+ '@tanstack/virtual-file-routes': 1.132.31
babel-dead-code-elimination: 1.0.10
chokidar: 3.6.0
unplugin: 2.3.10
zod: 3.25.76
optionalDependencies:
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vite-plugin-solid: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-plugin-solid: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- supports-color
- '@tanstack/router-plugin@1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/router-plugin@1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
@@ -11344,35 +13022,62 @@ snapshots:
'@babel/template': 7.27.2
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
- '@tanstack/router-core': 1.132.27
- '@tanstack/router-generator': 1.132.27
- '@tanstack/router-utils': 1.132.21
- '@tanstack/virtual-file-routes': 1.132.21
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/router-generator': 1.132.31
+ '@tanstack/router-utils': 1.132.31
+ '@tanstack/virtual-file-routes': 1.132.31
babel-dead-code-elimination: 1.0.10
chokidar: 3.6.0
unplugin: 2.3.10
zod: 3.25.76
optionalDependencies:
- '@tanstack/react-router': 1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vite-plugin-solid: 2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/react-router': 1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-plugin-solid: 2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ transitivePeerDependencies:
+ - supports-color
+
+ '@tanstack/router-utils@1.131.2':
+ dependencies:
+ '@babel/core': 7.28.4
+ '@babel/generator': 7.28.3
+ '@babel/parser': 7.28.4
+ '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4)
+ ansis: 4.1.0
+ diff: 8.0.2
transitivePeerDependencies:
- supports-color
- '@tanstack/router-utils@1.132.21':
+ '@tanstack/router-utils@1.132.31':
dependencies:
'@babel/core': 7.28.4
'@babel/generator': 7.28.3
'@babel/parser': 7.28.4
'@babel/preset-typescript': 7.27.1(@babel/core@7.28.4)
- ansis: 4.2.0
+ ansis: 4.1.0
diff: 8.0.2
fast-glob: 3.3.3
pathe: 2.0.3
transitivePeerDependencies:
- supports-color
- '@tanstack/server-functions-plugin@1.132.21(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/server-functions-plugin@1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/core': 7.28.4
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4)
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.4
+ '@babel/types': 7.28.4
+ '@tanstack/directive-functions-plugin': 1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ babel-dead-code-elimination: 1.0.10
+ tiny-invariant: 1.3.3
+ transitivePeerDependencies:
+ - supports-color
+ - vite
+
+ '@tanstack/server-functions-plugin@1.132.31(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.28.4
@@ -11381,14 +13086,14 @@ snapshots:
'@babel/template': 7.27.2
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
- '@tanstack/directive-functions-plugin': 1.132.21(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/directive-functions-plugin': 1.132.31(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
babel-dead-code-elimination: 1.0.10
tiny-invariant: 1.3.3
transitivePeerDependencies:
- supports-color
- vite
- '@tanstack/server-functions-plugin@1.132.21(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/server-functions-plugin@1.132.31(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.28.4
@@ -11397,58 +13102,58 @@ snapshots:
'@babel/template': 7.27.2
'@babel/traverse': 7.28.4
'@babel/types': 7.28.4
- '@tanstack/directive-functions-plugin': 1.132.21(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/directive-functions-plugin': 1.132.31(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
babel-dead-code-elimination: 1.0.10
tiny-invariant: 1.3.3
transitivePeerDependencies:
- supports-color
- vite
- '@tanstack/solid-router@1.132.27(solid-js@1.9.9)':
+ '@tanstack/solid-router@1.132.31(solid-js@1.9.9)':
dependencies:
'@solid-devtools/logger': 0.9.11(solid-js@1.9.9)
'@solid-primitives/refs': 1.1.2(solid-js@1.9.9)
'@solidjs/meta': 0.29.4(solid-js@1.9.9)
- '@tanstack/history': 1.132.21
- '@tanstack/router-core': 1.132.27
+ '@tanstack/history': 1.132.31
+ '@tanstack/router-core': 1.132.31
'@tanstack/solid-store': 0.7.0(solid-js@1.9.9)
isbot: 5.1.31
solid-js: 1.9.9
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/solid-start-client@1.132.27(solid-js@1.9.9)':
+ '@tanstack/solid-start-client@1.132.31(solid-js@1.9.9)':
dependencies:
- '@tanstack/router-core': 1.132.27
- '@tanstack/solid-router': 1.132.27(solid-js@1.9.9)
- '@tanstack/start-client-core': 1.132.27
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/solid-router': 1.132.31(solid-js@1.9.9)
+ '@tanstack/start-client-core': 1.132.31
solid-js: 1.9.9
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/solid-start-server@1.132.27(solid-js@1.9.9)':
+ '@tanstack/solid-start-server@1.132.31(solid-js@1.9.9)':
dependencies:
'@solidjs/meta': 0.29.4(solid-js@1.9.9)
- '@tanstack/history': 1.132.21
- '@tanstack/router-core': 1.132.27
- '@tanstack/solid-router': 1.132.27(solid-js@1.9.9)
- '@tanstack/start-client-core': 1.132.27
- '@tanstack/start-server-core': 1.132.27
+ '@tanstack/history': 1.132.31
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/solid-router': 1.132.31(solid-js@1.9.9)
+ '@tanstack/start-client-core': 1.132.31
+ '@tanstack/start-server-core': 1.132.31
solid-js: 1.9.9
transitivePeerDependencies:
- crossws
- '@tanstack/solid-start@1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(solid-js@1.9.9)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/solid-start@1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(solid-js@1.9.9)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- '@tanstack/solid-router': 1.132.27(solid-js@1.9.9)
- '@tanstack/solid-start-client': 1.132.27(solid-js@1.9.9)
- '@tanstack/solid-start-server': 1.132.27(solid-js@1.9.9)
- '@tanstack/start-client-core': 1.132.27
- '@tanstack/start-plugin-core': 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- '@tanstack/start-server-core': 1.132.27
+ '@tanstack/solid-router': 1.132.31(solid-js@1.9.9)
+ '@tanstack/solid-start-client': 1.132.31(solid-js@1.9.9)
+ '@tanstack/solid-start-server': 1.132.31(solid-js@1.9.9)
+ '@tanstack/start-client-core': 1.132.31
+ '@tanstack/start-plugin-core': 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-core': 1.132.31
pathe: 2.0.3
solid-js: 1.9.9
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@rsbuild/core'
- '@tanstack/react-router'
@@ -11462,35 +13167,100 @@ snapshots:
'@tanstack/store': 0.7.0
solid-js: 1.9.9
- '@tanstack/start-client-core@1.132.27':
+ '@tanstack/start-client-core@1.131.47':
+ dependencies:
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/start-storage-context': 1.131.47
+ cookie-es: 1.2.2
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
+
+ '@tanstack/start-client-core@1.132.31':
dependencies:
- '@tanstack/router-core': 1.132.27
- '@tanstack/start-storage-context': 1.132.27
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/start-storage-context': 1.132.31
seroval: 1.3.2
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/start-plugin-core@1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/start-plugin-core@1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(rolldown@1.0.0-beta.38)(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/core': 7.28.4
+ '@babel/types': 7.28.4
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/router-generator': 1.131.47
+ '@tanstack/router-plugin': 1.131.47(@tanstack/react-router@1.131.47(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/router-utils': 1.131.2
+ '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-core': 1.131.47
+ '@types/babel__code-frame': 7.0.6
+ '@types/babel__core': 7.20.5
+ babel-dead-code-elimination: 1.0.10
+ cheerio: 1.1.2
+ h3: 1.13.0
+ nitropack: 2.12.6(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(rolldown@1.0.0-beta.38)
+ pathe: 2.0.3
+ ufo: 1.6.1
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitefu: 1.1.1(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ xmlbuilder2: 3.1.1
+ zod: 3.25.76
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@rsbuild/core'
+ - '@tanstack/react-router'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - better-sqlite3
+ - drizzle-orm
+ - encoding
+ - idb-keyval
+ - mysql2
+ - react-native-b4a
+ - rolldown
+ - sqlite3
+ - supports-color
+ - uploadthing
+ - vite-plugin-solid
+ - webpack
+ - xml2js
+
+ '@tanstack/start-plugin-core@1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.28.4
'@babel/types': 7.28.4
'@rolldown/pluginutils': 1.0.0-beta.40
- '@tanstack/router-core': 1.132.27
- '@tanstack/router-generator': 1.132.27
- '@tanstack/router-plugin': 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- '@tanstack/router-utils': 1.132.21
- '@tanstack/server-functions-plugin': 1.132.21(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- '@tanstack/start-server-core': 1.132.27
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/router-generator': 1.132.31
+ '@tanstack/router-plugin': 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/router-utils': 1.132.31
+ '@tanstack/server-functions-plugin': 1.132.31(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-core': 1.132.31
babel-dead-code-elimination: 1.0.10
cheerio: 1.1.2
exsolve: 1.0.7
pathe: 2.0.3
- srvx: 0.8.9
+ srvx: 0.8.7
tinyglobby: 0.2.15
ufo: 1.6.1
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitefu: 1.1.1(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
xmlbuilder2: 3.1.1
zod: 3.25.76
transitivePeerDependencies:
@@ -11501,27 +13271,27 @@ snapshots:
- vite-plugin-solid
- webpack
- '@tanstack/start-plugin-core@1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/start-plugin-core@1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.28.4
'@babel/types': 7.28.4
'@rolldown/pluginutils': 1.0.0-beta.40
- '@tanstack/router-core': 1.132.27
- '@tanstack/router-generator': 1.132.27
- '@tanstack/router-plugin': 1.132.27(@tanstack/react-router@1.132.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- '@tanstack/router-utils': 1.132.21
- '@tanstack/server-functions-plugin': 1.132.21(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- '@tanstack/start-server-core': 1.132.27
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/router-generator': 1.132.31
+ '@tanstack/router-plugin': 1.132.31(@tanstack/react-router@1.132.31(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)))(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/router-utils': 1.132.31
+ '@tanstack/server-functions-plugin': 1.132.31(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-core': 1.132.31
babel-dead-code-elimination: 1.0.10
cheerio: 1.1.2
exsolve: 1.0.7
pathe: 2.0.3
- srvx: 0.8.9
+ srvx: 0.8.7
tinyglobby: 0.2.15
ufo: 1.6.1
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitefu: 1.1.1(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
xmlbuilder2: 3.1.1
zod: 3.25.76
transitivePeerDependencies:
@@ -11532,42 +13302,83 @@ snapshots:
- vite-plugin-solid
- webpack
- '@tanstack/start-server-core@1.132.27':
+ '@tanstack/start-server-core@1.131.47':
+ dependencies:
+ '@tanstack/history': 1.131.2
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/start-client-core': 1.131.47
+ '@tanstack/start-storage-context': 1.131.47
+ h3: 1.13.0
+ isbot: 5.1.31
+ tiny-invariant: 1.3.3
+ tiny-warning: 1.0.3
+ unctx: 2.4.1
+
+ '@tanstack/start-server-core@1.132.31':
dependencies:
- '@tanstack/history': 1.132.21
- '@tanstack/router-core': 1.132.27
- '@tanstack/start-client-core': 1.132.27
- '@tanstack/start-storage-context': 1.132.27
+ '@tanstack/history': 1.132.31
+ '@tanstack/router-core': 1.132.31
+ '@tanstack/start-client-core': 1.132.31
+ '@tanstack/start-storage-context': 1.132.31
h3-v2: h3@2.0.0-beta.4
seroval: 1.3.2
tiny-invariant: 1.3.3
transitivePeerDependencies:
- crossws
- '@tanstack/start-storage-context@1.132.27':
+ '@tanstack/start-server-functions-client@1.131.47(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@tanstack/start-server-functions-fetcher': 1.131.47
+ transitivePeerDependencies:
+ - supports-color
+ - vite
+
+ '@tanstack/start-server-functions-fetcher@1.131.47':
+ dependencies:
+ '@tanstack/router-core': 1.131.47
+ '@tanstack/start-client-core': 1.131.47
+
+ '@tanstack/start-server-functions-server@1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ tiny-invariant: 1.3.3
+ transitivePeerDependencies:
+ - supports-color
+ - vite
+
+ '@tanstack/start-storage-context@1.131.47':
dependencies:
- '@tanstack/router-core': 1.132.27
+ '@tanstack/router-core': 1.131.47
+
+ '@tanstack/start-storage-context@1.132.31':
+ dependencies:
+ '@tanstack/router-core': 1.132.31
'@tanstack/store@0.7.0': {}
+ '@tanstack/store@0.7.5': {}
+
'@tanstack/store@0.7.7': {}
- '@tanstack/typedoc-config@0.2.1(typescript@5.9.3)':
+ '@tanstack/typedoc-config@0.2.1(typescript@5.9.2)':
dependencies:
- typedoc: 0.27.9(typescript@5.9.3)
- typedoc-plugin-frontmatter: 1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.3)))
- typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.3))
+ typedoc: 0.27.9(typescript@5.9.2)
+ typedoc-plugin-frontmatter: 1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2)))
+ typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.2))
transitivePeerDependencies:
- typescript
- '@tanstack/virtual-file-routes@1.132.21': {}
+ '@tanstack/virtual-file-routes@1.131.2': {}
+
+ '@tanstack/virtual-file-routes@1.132.31': {}
- '@tanstack/vite-config@0.3.0(@types/node@22.18.8)(rollup@4.52.3)(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@tanstack/vite-config@0.3.0(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- rollup-plugin-preserve-directives: 0.4.0(rollup@4.52.3)
- vite-plugin-dts: 4.2.3(@types/node@22.18.8)(rollup@4.52.3)(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- vite-plugin-externalize-deps: 0.9.0(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ rollup-plugin-preserve-directives: 0.4.0(rollup@4.52.0)
+ vite-plugin-dts: 4.2.3(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ vite-plugin-externalize-deps: 0.9.0(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ vite-tsconfig-paths: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
transitivePeerDependencies:
- '@types/node'
- rollup
@@ -11586,7 +13397,7 @@ snapshots:
picocolors: 1.1.1
pretty-format: 27.5.1
- '@testing-library/jest-dom@6.9.0':
+ '@testing-library/jest-dom@6.8.0':
dependencies:
'@adobe/css-tools': 4.4.4
aria-query: 5.3.2
@@ -11595,24 +13406,24 @@ snapshots:
picocolors: 1.1.1
redent: 3.0.0
- '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.9(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
dependencies:
'@babel/runtime': 7.28.4
'@testing-library/dom': 10.4.1
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
optionalDependencies:
- '@types/react': 19.1.16
- '@types/react-dom': 19.1.9(@types/react@19.1.16)
+ '@types/react': 19.2.0
+ '@types/react-dom': 19.1.9(@types/react@19.2.0)
- '@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.3))(typescript@5.9.3)':
+ '@trpc/client@11.6.0(@trpc/server@11.6.0(typescript@5.9.2))(typescript@5.9.2)':
dependencies:
- '@trpc/server': 11.6.0(typescript@5.9.3)
- typescript: 5.9.3
+ '@trpc/server': 11.6.0(typescript@5.9.2)
+ typescript: 5.9.2
- '@trpc/server@11.6.0(typescript@5.9.3)':
+ '@trpc/server@11.6.0(typescript@5.9.2)':
dependencies:
- typescript: 5.9.3
+ typescript: 5.9.2
'@tufjs/canonical-json@2.0.0': {}
@@ -11630,6 +13441,8 @@ snapshots:
'@types/aria-query@5.0.4': {}
+ '@types/babel__code-frame@7.0.6': {}
+
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.28.4
@@ -11654,7 +13467,7 @@ snapshots:
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@types/chai@5.2.2':
dependencies:
@@ -11666,15 +13479,15 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@types/conventional-commits-parser@5.0.1':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 22.18.6
'@types/cors@2.8.19':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@types/debug@4.1.12':
dependencies:
@@ -11686,14 +13499,14 @@ snapshots:
'@types/express-serve-static-core@4.19.6':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 0.17.5
'@types/express-serve-static-core@5.0.7':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 22.18.6
'@types/qs': 6.14.0
'@types/range-parser': 1.2.7
'@types/send': 0.17.5
@@ -11729,17 +13542,21 @@ snapshots:
'@types/node@12.20.55': {}
- '@types/node@22.18.8':
+ '@types/node@20.19.17':
+ dependencies:
+ undici-types: 6.21.0
+
+ '@types/node@22.18.6':
dependencies:
undici-types: 6.21.0
- '@types/node@24.6.1':
+ '@types/node@24.5.2':
dependencies:
- undici-types: 7.13.0
+ undici-types: 7.12.0
'@types/pg@8.15.5':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
pg-protocol: 1.10.3
pg-types: 2.2.0
@@ -11747,28 +13564,40 @@ snapshots:
'@types/range-parser@1.2.7': {}
- '@types/react-dom@19.1.9(@types/react@19.1.16)':
+ '@types/react-dom@19.1.9(@types/react@19.1.13)':
+ dependencies:
+ '@types/react': 19.1.13
+
+ '@types/react-dom@19.1.9(@types/react@19.2.0)':
+ dependencies:
+ '@types/react': 19.2.0
+
+ '@types/react@19.1.13':
dependencies:
- '@types/react': 19.1.16
+ csstype: 3.1.3
- '@types/react@19.1.16':
+ '@types/react@19.2.0':
dependencies:
csstype: 3.1.3
+ '@types/resolve@1.20.2': {}
+
'@types/send@0.17.5':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@types/serve-static@1.15.8':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
'@types/send': 0.17.5
+ '@types/shimmer@1.2.0': {}
+
'@types/simple-peer@9.11.8':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 22.18.6
'@types/unist@3.0.3': {}
@@ -11782,73 +13611,156 @@ snapshots:
'@types/ws@8.18.1':
dependencies:
- '@types/node': 24.6.1
+ '@types/node': 22.18.6
+
+ '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ '@typescript-eslint/scope-manager': 8.44.0
+ '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.44.0
+ eslint: 9.36.0(jiti@2.6.1)
+ graphemer: 1.4.0
+ ignore: 7.0.5
+ natural-compare: 1.4.0
+ ts-api-utils: 2.1.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
- '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
'@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@typescript-eslint/scope-manager': 8.45.0
- '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/type-utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
'@typescript-eslint/visitor-keys': 8.45.0
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5
natural-compare: 1.4.0
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
+ ts-api-utils: 2.1.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.44.0
+ '@typescript-eslint/types': 8.44.0
+ '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2)
+ '@typescript-eslint/visitor-keys': 8.44.0
+ debug: 4.4.3
+ eslint: 9.36.0(jiti@2.6.1)
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
'@typescript-eslint/scope-manager': 8.45.0
'@typescript-eslint/types': 8.45.0
- '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2)
'@typescript-eslint/visitor-keys': 8.45.0
debug: 4.4.3
- eslint: 9.36.0(jiti@2.6.0)
- typescript: 5.9.3
+ eslint: 9.36.0(jiti@2.6.1)
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.44.1(typescript@5.9.2)
+ '@typescript-eslint/types': 8.44.1
+ debug: 4.4.3
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.45.0(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2)
'@typescript-eslint/types': 8.45.0
debug: 4.4.3
- typescript: 5.9.3
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/scope-manager@8.44.0':
+ dependencies:
+ '@typescript-eslint/types': 8.44.0
+ '@typescript-eslint/visitor-keys': 8.44.0
+
'@typescript-eslint/scope-manager@8.45.0':
dependencies:
'@typescript-eslint/types': 8.45.0
'@typescript-eslint/visitor-keys': 8.45.0
- '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)':
+ dependencies:
+ typescript: 5.9.2
+
+ '@typescript-eslint/tsconfig-utils@8.44.1(typescript@5.9.2)':
+ dependencies:
+ typescript: 5.9.2
+
+ '@typescript-eslint/tsconfig-utils@8.45.0(typescript@5.9.2)':
+ dependencies:
+ typescript: 5.9.2
+
+ '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
- typescript: 5.9.3
+ '@typescript-eslint/types': 8.44.0
+ '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ debug: 4.4.3
+ eslint: 9.36.0(jiti@2.6.1)
+ ts-api-utils: 2.1.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
- '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
'@typescript-eslint/types': 8.45.0
- '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
debug: 4.4.3
- eslint: 9.36.0(jiti@2.6.0)
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
+ eslint: 9.36.0(jiti@2.6.1)
+ ts-api-utils: 2.1.0(typescript@5.9.2)
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/types@8.44.0': {}
+
+ '@typescript-eslint/types@8.44.1': {}
+
'@typescript-eslint/types@8.45.0': {}
- '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2)
+ '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2)
+ '@typescript-eslint/types': 8.44.0
+ '@typescript-eslint/visitor-keys': 8.44.0
+ debug: 4.4.3
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.2
+ ts-api-utils: 2.1.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.2)':
dependencies:
- '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3)
+ '@typescript-eslint/project-service': 8.45.0(typescript@5.9.2)
+ '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.2)
'@typescript-eslint/types': 8.45.0
'@typescript-eslint/visitor-keys': 8.45.0
debug: 4.4.3
@@ -11856,27 +13768,45 @@ snapshots:
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.7.2
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
+ ts-api-utils: 2.1.0(typescript@5.9.2)
+ typescript: 5.9.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1))
+ '@typescript-eslint/scope-manager': 8.44.0
+ '@typescript-eslint/types': 8.44.0
+ '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2)
+ eslint: 9.36.0(jiti@2.6.1)
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.45.0
'@typescript-eslint/types': 8.45.0
- '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
- eslint: 9.36.0(jiti@2.6.0)
- typescript: 5.9.3
+ '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.2)
+ eslint: 9.36.0(jiti@2.6.1)
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/visitor-keys@8.44.0':
+ dependencies:
+ '@typescript-eslint/types': 8.44.0
+ eslint-visitor-keys: 4.2.1
+
'@typescript-eslint/visitor-keys@8.45.0':
dependencies:
'@typescript-eslint/types': 8.45.0
eslint-visitor-keys: 4.2.1
+ '@ungap/structured-clone@1.3.0': {}
+
'@unrs/resolver-binding-android-arm-eabi@1.11.1':
optional: true
@@ -11936,23 +13866,54 @@ snapshots:
'@unrs/resolver-binding-win32-x64-msvc@1.11.1':
optional: true
- '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.5(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@vercel/nft@0.30.1(encoding@0.1.13)(rollup@4.52.0)':
+ dependencies:
+ '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13)
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
+ acorn: 8.15.0
+ acorn-import-attributes: 1.9.5(acorn@8.15.0)
+ async-sema: 3.1.1
+ bindings: 1.5.0
+ estree-walker: 2.0.2
+ glob: 10.4.5
+ graceful-fs: 4.2.11
+ node-gyp-build: 4.8.4
+ picomatch: 4.0.3
+ resolve-from: 5.0.0
+ transitivePeerDependencies:
+ - encoding
+ - rollup
+ - supports-color
+
+ '@vitejs/plugin-basic-ssl@2.1.0(vite@7.1.5(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
+ dependencies:
+ vite: 7.1.5(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+
+ '@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
- vite: 7.1.5(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ '@babel/core': 7.28.4
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4)
+ '@rolldown/pluginutils': 1.0.0-beta.35
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.17.0
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ transitivePeerDependencies:
+ - supports-color
- '@vitejs/plugin-react@4.7.0(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@vitejs/plugin-react@5.0.3(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
'@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4)
- '@rolldown/pluginutils': 1.0.0-beta.27
+ '@rolldown/pluginutils': 1.0.0-beta.35
'@types/babel__core': 7.20.5
react-refresh: 0.17.0
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@vitejs/plugin-react@5.0.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@babel/core': 7.28.4
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4)
@@ -11960,16 +13921,16 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.38
'@types/babel__core': 7.20.5
react-refresh: 0.17.0
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@5.2.4(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.3))':
+ '@vitejs/plugin-vue@5.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vue@3.5.22(typescript@5.9.2))':
dependencies:
- vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vue: 3.5.22(typescript@5.9.3)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vue: 3.5.22(typescript@5.9.2)
- '@vitest/coverage-istanbul@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@vitest/coverage-istanbul@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@istanbuljs/schema': 0.1.3
debug: 4.4.3
@@ -11981,7 +13942,7 @@ snapshots:
magicast: 0.3.5
test-exclude: 7.0.1
tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
@@ -11993,21 +13954,21 @@ snapshots:
chai: 5.3.3
tinyrainbow: 2.0.0
- '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.19
optionalDependencies:
- vite: 7.1.7(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
- '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))':
+ '@vitest/mocker@3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.19
optionalDependencies:
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
'@vitest/pretty-format@3.2.4':
dependencies:
@@ -12017,7 +13978,7 @@ snapshots:
dependencies:
'@vitest/utils': 3.2.4
pathe: 2.0.3
- strip-literal: 3.1.0
+ strip-literal: 3.0.0
'@vitest/snapshot@3.2.4':
dependencies:
@@ -12047,6 +14008,14 @@ snapshots:
path-browserify: 1.0.1
vscode-uri: 3.1.0
+ '@vue/compiler-core@3.5.21':
+ dependencies:
+ '@babel/parser': 7.28.4
+ '@vue/shared': 3.5.21
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
'@vue/compiler-core@3.5.22':
dependencies:
'@babel/parser': 7.28.4
@@ -12055,6 +14024,11 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.1
+ '@vue/compiler-dom@3.5.21':
+ dependencies:
+ '@vue/compiler-core': 3.5.21
+ '@vue/shared': 3.5.21
+
'@vue/compiler-dom@3.5.22':
dependencies:
'@vue/compiler-core': 3.5.22
@@ -12082,18 +14056,18 @@ snapshots:
de-indent: 1.0.2
he: 1.2.0
- '@vue/language-core@2.1.6(typescript@5.9.3)':
+ '@vue/language-core@2.1.6(typescript@5.9.2)':
dependencies:
'@volar/language-core': 2.4.23
- '@vue/compiler-dom': 3.5.22
+ '@vue/compiler-dom': 3.5.21
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.5.22
+ '@vue/shared': 3.5.21
computeds: 0.0.1
minimatch: 9.0.5
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
- typescript: 5.9.3
+ typescript: 5.9.2
'@vue/reactivity@3.5.22':
dependencies:
@@ -12111,11 +14085,13 @@ snapshots:
'@vue/shared': 3.5.22
csstype: 3.1.3
- '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.9.3))':
+ '@vue/server-renderer@3.5.22(vue@3.5.22(typescript@5.9.2))':
dependencies:
'@vue/compiler-ssr': 3.5.22
'@vue/shared': 3.5.22
- vue: 3.5.22(typescript@5.9.3)
+ vue: 3.5.22(typescript@5.9.2)
+
+ '@vue/shared@3.5.21': {}
'@vue/shared@3.5.22': {}
@@ -12128,6 +14104,10 @@ snapshots:
abbrev@3.0.1: {}
+ abort-controller@3.0.0:
+ dependencies:
+ event-target-shim: 5.0.1
+
accepts@1.3.8:
dependencies:
mime-types: 2.1.35
@@ -12138,6 +14118,10 @@ snapshots:
mime-types: 3.0.1
negotiator: 1.0.0
+ acorn-import-attributes@1.9.5(acorn@8.15.0):
+ dependencies:
+ acorn: 8.15.0
+
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
acorn: 8.15.0
@@ -12205,7 +14189,7 @@ snapshots:
ansi-colors@4.1.3: {}
- ansi-escapes@7.1.1:
+ ansi-escapes@7.1.0:
dependencies:
environment: 1.1.0
@@ -12221,7 +14205,7 @@ snapshots:
ansi-styles@6.2.3: {}
- ansis@4.2.0: {}
+ ansis@4.1.0: {}
any-promise@1.3.0: {}
@@ -12230,6 +14214,28 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.1
+ archiver-utils@5.0.2:
+ dependencies:
+ glob: 10.4.5
+ graceful-fs: 4.2.11
+ is-stream: 2.0.1
+ lazystream: 1.0.1
+ lodash: 4.17.21
+ normalize-path: 3.0.0
+ readable-stream: 4.7.0
+
+ archiver@7.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ async: 3.2.6
+ buffer-crc32: 1.0.0
+ readable-stream: 4.7.0
+ readdir-glob: 1.1.3
+ tar-stream: 3.1.7
+ zip-stream: 6.0.1
+ transitivePeerDependencies:
+ - react-native-b4a
+
arg@5.0.2: {}
argparse@1.0.10:
@@ -12330,10 +14336,14 @@ snapshots:
async-function@1.0.0: {}
+ async-sema@3.1.1: {}
+
+ async@3.2.6: {}
+
autoprefixer@10.4.21(postcss@8.5.6):
dependencies:
browserslist: 4.26.2
- caniuse-lite: 1.0.30001746
+ caniuse-lite: 1.0.30001743
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -12346,6 +14356,8 @@ snapshots:
axobject-query@4.1.0: {}
+ b4a@1.7.1: {}
+
babel-dead-code-elimination@1.0.10:
dependencies:
'@babel/core': 7.28.4
@@ -12374,11 +14386,14 @@ snapshots:
balanced-match@1.0.2: {}
+ bare-events@2.7.0:
+ optional: true
+
base64-js@1.5.1: {}
base64id@2.0.0: {}
- baseline-browser-mapping@2.8.9: {}
+ baseline-browser-mapping@2.8.6: {}
beasties@0.3.5:
dependencies:
@@ -12396,8 +14411,8 @@ snapshots:
'@better-auth/core': 1.3.24
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.18
- '@noble/ciphers': 2.0.1
- '@noble/hashes': 2.0.1
+ '@noble/ciphers': 2.0.0
+ '@noble/hashes': 2.0.0
'@simplewebauthn/browser': 13.2.0
'@simplewebauthn/server': 13.2.1
better-call: 1.0.19
@@ -12431,6 +14446,10 @@ snapshots:
binary-extensions@2.3.0: {}
+ bindings@1.5.0:
+ dependencies:
+ file-uri-to-path: 1.0.0
+
body-parser@1.20.3:
dependencies:
bytes: 3.1.2
@@ -12486,14 +14505,16 @@ snapshots:
browserslist@4.26.2:
dependencies:
- baseline-browser-mapping: 2.8.9
- caniuse-lite: 1.0.30001746
- electron-to-chromium: 1.5.228
+ baseline-browser-mapping: 2.8.6
+ caniuse-lite: 1.0.30001743
+ electron-to-chromium: 1.5.221
node-releases: 2.0.21
update-browserslist-db: 1.1.3(browserslist@4.26.2)
bson@6.10.4: {}
+ buffer-crc32@1.0.0: {}
+
buffer-from@1.1.2: {}
buffer@6.0.3:
@@ -12503,6 +14524,23 @@ snapshots:
bytes@3.1.2: {}
+ c12@3.3.0(magicast@0.3.5):
+ dependencies:
+ chokidar: 4.0.3
+ confbox: 0.2.2
+ defu: 6.1.4
+ dotenv: 17.2.2
+ exsolve: 1.0.7
+ giget: 2.0.0
+ jiti: 2.5.1
+ ohash: 2.0.11
+ pathe: 2.0.3
+ perfect-debounce: 2.0.0
+ pkg-types: 2.3.0
+ rc9: 2.1.2
+ optionalDependencies:
+ magicast: 0.3.5
+
cac@6.7.14: {}
cacache@19.0.1:
@@ -12517,7 +14555,7 @@ snapshots:
minipass-pipeline: 1.2.4
p-map: 7.0.3
ssri: 12.0.0
- tar: 7.5.1
+ tar: 7.4.3
unique-filename: 4.0.0
call-bind-apply-helpers@1.0.2:
@@ -12541,7 +14579,7 @@ snapshots:
camelcase-css@2.0.1: {}
- caniuse-lite@1.0.30001746: {}
+ caniuse-lite@1.0.30001743: {}
chai@5.3.3:
dependencies:
@@ -12607,6 +14645,12 @@ snapshots:
ci-info@3.9.0: {}
+ citty@0.1.6:
+ dependencies:
+ consola: 3.4.2
+
+ cjs-module-lexer@1.4.3: {}
+
cli-cursor@5.0.0:
dependencies:
restore-cursor: 5.1.0
@@ -12620,6 +14664,12 @@ snapshots:
cli-width@4.1.0: {}
+ clipboardy@4.0.0:
+ dependencies:
+ execa: 8.0.1
+ is-wsl: 3.1.0
+ is64bit: 2.0.0
+
cliui@7.0.4:
dependencies:
string-width: 4.2.3
@@ -12640,6 +14690,8 @@ snapshots:
clsx@2.1.1: {}
+ cluster-key-slot@1.1.2: {}
+
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
@@ -12653,12 +14705,16 @@ snapshots:
commander@13.1.0: {}
+ commander@2.20.3: {}
+
commander@4.1.1: {}
comment-parser@1.4.1: {}
common-tags@1.8.2: {}
+ commondir@1.0.1: {}
+
compare-func@2.0.0:
dependencies:
array-ify: 1.0.0
@@ -12666,6 +14722,16 @@ snapshots:
compare-versions@6.1.1: {}
+ compatx@0.2.0: {}
+
+ compress-commons@6.0.2:
+ dependencies:
+ crc-32: 1.2.2
+ crc32-stream: 6.0.0
+ is-stream: 2.0.1
+ normalize-path: 3.0.0
+ readable-stream: 4.7.0
+
computeds@0.0.1: {}
concat-map@0.0.1: {}
@@ -12681,6 +14747,8 @@ snapshots:
confbox@0.1.8: {}
+ confbox@0.2.2: {}
+
connect@3.7.0:
dependencies:
debug: 2.6.9
@@ -12690,6 +14758,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ consola@3.4.2: {}
+
content-disposition@0.5.4:
dependencies:
safe-buffer: 5.2.1
@@ -12715,6 +14785,8 @@ snapshots:
convert-source-map@2.0.0: {}
+ cookie-es@1.2.2: {}
+
cookie-es@2.0.0: {}
cookie-signature@1.0.6: {}
@@ -12725,11 +14797,24 @@ snapshots:
cookie@0.7.2: {}
+ cookie@1.0.2: {}
+
+ core-util-is@1.0.3: {}
+
cors@2.8.5:
dependencies:
object-assign: 4.1.1
vary: 1.1.2
+ crc-32@1.2.2: {}
+
+ crc32-stream@6.0.0:
+ dependencies:
+ crc-32: 1.2.2
+ readable-stream: 4.7.0
+
+ croner@9.1.0: {}
+
cross-spawn@6.0.6:
dependencies:
nice-try: 1.0.5
@@ -12744,6 +14829,10 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
+ crossws@0.3.5:
+ dependencies:
+ uncrypto: 0.1.3
+
crypto-js@4.2.0: {}
css-select@5.2.2:
@@ -12777,7 +14866,7 @@ snapshots:
cssstyle@5.3.1(postcss@8.5.6):
dependencies:
- '@asamuzakjp/css-color': 4.0.5
+ '@asamuzakjp/css-color': 4.0.4
'@csstools/css-syntax-patches-for-csstree': 1.0.14(postcss@8.5.6)
css-tree: 3.1.0
transitivePeerDependencies:
@@ -12816,6 +14905,10 @@ snapshots:
date-format@4.0.14: {}
+ db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)):
+ optionalDependencies:
+ drizzle-orm: 0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
+
de-indent@1.0.2: {}
debug@2.6.9:
@@ -12848,6 +14941,8 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
+ define-lazy-prop@2.0.0: {}
+
define-properties@1.2.1:
dependencies:
define-data-property: 1.1.4
@@ -12856,18 +14951,21 @@ snapshots:
defu@6.1.4: {}
+ denque@2.1.0: {}
+
depd@2.0.0: {}
dequal@2.0.3: {}
+ destr@2.0.5: {}
+
destroy@1.2.0: {}
detect-indent@6.1.0: {}
- detect-libc@1.0.3:
- optional: true
+ detect-libc@1.0.3: {}
- detect-libc@2.1.1: {}
+ detect-libc@2.1.0: {}
dexie@4.0.10: {}
@@ -12887,6 +14985,10 @@ snapshots:
dependencies:
esutils: 2.0.3
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
dom-accessibility-api@0.5.16: {}
dom-accessibility-api@0.6.3: {}
@@ -12920,9 +15022,13 @@ snapshots:
dependencies:
is-obj: 2.0.0
+ dot-prop@9.0.0:
+ dependencies:
+ type-fest: 4.41.0
+
dotenv@16.6.1: {}
- dotenv@17.2.3: {}
+ dotenv@17.2.2: {}
drizzle-kit@0.31.5:
dependencies:
@@ -12933,21 +15039,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7):
+ drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7):
optionalDependencies:
+ '@opentelemetry/api': 1.9.0
'@types/pg': 8.15.5
+ gel: 2.1.1
kysely: 0.28.7
pg: 8.16.3
postgres: 3.4.7
- drizzle-zod@0.8.3(drizzle-orm@0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@3.25.76):
- dependencies:
- drizzle-orm: 0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
- zod: 3.25.76
-
- drizzle-zod@0.8.3(drizzle-orm@0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11):
+ drizzle-zod@0.8.3(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(zod@4.1.11):
dependencies:
- drizzle-orm: 0.44.5(@types/pg@8.15.5)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
+ drizzle-orm: 0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)
zod: 4.1.11
dunder-proto@1.0.1:
@@ -12956,11 +15059,13 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
+ duplexer@0.1.2: {}
+
eastasianwidth@0.2.0: {}
ee-first@1.1.1: {}
- electron-to-chromium@1.5.228: {}
+ electron-to-chromium@1.5.221: {}
emoji-regex@10.5.0: {}
@@ -12991,7 +15096,7 @@ snapshots:
engine.io@6.6.4:
dependencies:
'@types/cors': 2.8.19
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.7.2
@@ -13027,12 +15132,17 @@ snapshots:
env-paths@2.2.1: {}
+ env-paths@3.0.0:
+ optional: true
+
environment@1.1.0: {}
err-code@2.0.3: {}
err-code@3.0.1: {}
+ error-stack-parser-es@1.0.5: {}
+
es-abstract@1.24.0:
dependencies:
array-buffer-byte-length: 1.0.2
@@ -13232,14 +15342,16 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-compat-utils@0.5.1(eslint@9.36.0(jiti@2.6.0)):
+ escape-string-regexp@5.0.0: {}
+
+ eslint-compat-utils@0.5.1(eslint@9.36.0(jiti@2.6.1)):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
semver: 7.7.2
- eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)):
+ eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
eslint-import-context@0.1.9(unrs-resolver@1.11.1):
dependencies:
@@ -13248,10 +15360,10 @@ snapshots:
optionalDependencies:
unrs-resolver: 1.11.1
- eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0)):
+ eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1)):
dependencies:
debug: 4.4.3
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
get-tsconfig: 4.10.1
is-bun-module: 2.0.0
@@ -13259,23 +15371,23 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))
+ eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
- eslint-plugin-es-x@7.8.0(eslint@9.36.0(jiti@2.6.0)):
+ eslint-plugin-es-x@7.8.0(eslint@9.36.0(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
- eslint: 9.36.0(jiti@2.6.0)
- eslint-compat-utils: 0.5.1(eslint@9.36.0(jiti@2.6.0))
+ eslint: 9.36.0(jiti@2.6.1)
+ eslint-compat-utils: 0.5.1(eslint@9.36.0(jiti@2.6.1))
- eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0)):
+ eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1)):
dependencies:
- '@typescript-eslint/types': 8.45.0
+ '@typescript-eslint/types': 8.44.1
comment-parser: 1.4.1
debug: 4.4.3
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
eslint-import-context: 0.1.9(unrs-resolver@1.11.1)
is-glob: 4.0.3
minimatch: 10.0.3
@@ -13283,43 +15395,43 @@ snapshots:
stable-hash-x: 0.2.0
unrs-resolver: 1.11.1
optionalDependencies:
- '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
transitivePeerDependencies:
- supports-color
- eslint-plugin-n@17.23.1(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3):
+ eslint-plugin-n@17.23.1(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1))
enhanced-resolve: 5.18.3
- eslint: 9.36.0(jiti@2.6.0)
- eslint-plugin-es-x: 7.8.0(eslint@9.36.0(jiti@2.6.0))
+ eslint: 9.36.0(jiti@2.6.1)
+ eslint-plugin-es-x: 7.8.0(eslint@9.36.0(jiti@2.6.1))
get-tsconfig: 4.10.1
globals: 15.15.0
globrex: 0.1.2
ignore: 5.3.2
semver: 7.7.2
- ts-declaration-location: 1.0.7(typescript@5.9.3)
+ ts-declaration-location: 1.0.7(typescript@5.9.2)
transitivePeerDependencies:
- typescript
- eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.0)))(eslint@9.36.0(jiti@2.6.0))(prettier@3.6.2):
+ eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.36.0(jiti@2.6.1)))(eslint@9.36.0(jiti@2.6.1))(prettier@3.6.2):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
prettier: 3.6.2
prettier-linter-helpers: 1.0.0
synckit: 0.11.11
optionalDependencies:
- eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.0))
+ eslint-config-prettier: 10.1.8(eslint@9.36.0(jiti@2.6.1))
- eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.0)):
+ eslint-plugin-react-hooks@5.2.0(eslint@9.36.0(jiti@2.6.1)):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
- eslint-plugin-react-refresh@0.4.22(eslint@9.36.0(jiti@2.6.0)):
+ eslint-plugin-react-refresh@0.4.23(eslint@9.36.0(jiti@2.6.1)):
dependencies:
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
- eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.0)):
+ eslint-plugin-react@7.37.5(eslint@9.36.0(jiti@2.6.1)):
dependencies:
array-includes: 3.1.9
array.prototype.findlast: 1.2.5
@@ -13327,7 +15439,7 @@ snapshots:
array.prototype.tosorted: 1.1.4
doctrine: 2.1.0
es-iterator-helpers: 1.2.1
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
estraverse: 5.3.0
hasown: 2.0.2
jsx-ast-utils: 3.3.5
@@ -13341,19 +15453,24 @@ snapshots:
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
- eslint-plugin-solid@0.14.5(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3):
+ eslint-plugin-solid@0.14.5(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2):
dependencies:
- '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- eslint: 9.36.0(jiti@2.6.0)
+ '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ eslint: 9.36.0(jiti@2.6.1)
estraverse: 5.3.0
is-html: 2.0.0
kebab-case: 1.0.2
known-css-properties: 0.30.0
style-to-object: 1.0.9
- typescript: 5.9.3
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
eslint-scope@8.4.0:
dependencies:
esrecurse: 4.3.0
@@ -13363,9 +15480,52 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
- eslint@9.36.0(jiti@2.6.0):
+ eslint@8.57.1:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@eslint-community/regexpp': 4.12.1
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.57.1
+ '@humanwhocodes/config-array': 0.13.0
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.3.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.3
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint@9.36.0(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.0))
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.21.0
'@eslint/config-helpers': 0.3.1
@@ -13401,7 +15561,7 @@ snapshots:
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
- jiti: 2.6.0
+ jiti: 2.6.1
transitivePeerDependencies:
- supports-color
@@ -13413,6 +15573,12 @@ snapshots:
acorn-jsx: 5.3.2(acorn@8.15.0)
eslint-visitor-keys: 4.2.1
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.15.0
+ acorn-jsx: 5.3.2(acorn@8.15.0)
+ eslint-visitor-keys: 3.4.3
+
esprima@4.0.1: {}
esquery@1.6.0:
@@ -13444,10 +15610,14 @@ snapshots:
array-push-at-sort-position: 4.0.1
binary-decision-diagram: 3.2.0
+ event-target-shim@5.0.1: {}
+
eventemitter3@4.0.7: {}
eventemitter3@5.0.1: {}
+ events@3.3.0: {}
+
eventsource-parser@3.0.6: {}
eventsource@3.0.7:
@@ -13562,6 +15732,8 @@ snapshots:
fast-diff@1.3.0: {}
+ fast-fifo@1.3.2: {}
+
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -13594,10 +15766,16 @@ snapshots:
fetchdts@0.1.7: {}
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
+ file-uri-to-path@1.0.0: {}
+
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@@ -13680,6 +15858,12 @@ snapshots:
transitivePeerDependencies:
- '@react-native-async-storage/async-storage'
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
flat-cache@4.0.1:
dependencies:
flatted: 3.3.3
@@ -13750,6 +15934,18 @@ snapshots:
functions-have-names@1.2.3: {}
+ gel@2.1.1:
+ dependencies:
+ '@petamoriken/float16': 3.9.2
+ debug: 4.4.3
+ env-paths: 3.0.0
+ semver: 7.7.2
+ shell-quote: 1.8.3
+ which: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ optional: true
+
generate-function@2.3.1:
dependencies:
is-property: 1.0.2
@@ -13758,8 +15954,6 @@ snapshots:
dependencies:
is-property: 1.0.2
- generator-function@2.0.1: {}
-
gensync@1.0.0-beta.2: {}
get-browser-rtc@1.1.0: {}
@@ -13788,6 +15982,8 @@ snapshots:
hasown: 2.0.2
math-intrinsics: 1.1.0
+ get-port-please@3.2.0: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
@@ -13809,6 +16005,15 @@ snapshots:
dependencies:
resolve-pkg-maps: 1.0.0
+ giget@2.0.0:
+ dependencies:
+ citty: 0.1.6
+ consola: 3.4.2
+ defu: 6.1.4
+ node-fetch-native: 1.6.7
+ nypm: 0.6.2
+ pathe: 2.0.3
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -13837,6 +16042,10 @@ snapshots:
once: 1.4.0
path-is-absolute: 1.0.1
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
globals@14.0.0: {}
globals@15.15.0: {}
@@ -13857,6 +16066,15 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
+ globby@14.1.0:
+ dependencies:
+ '@sindresorhus/merge-streams': 2.3.0
+ fast-glob: 3.3.3
+ ignore: 7.0.5
+ path-type: 6.0.0
+ slash: 5.1.0
+ unicorn-magic: 0.3.0
+
globrex@0.1.2: {}
goober@2.1.16(csstype@3.1.3):
@@ -13875,12 +16093,41 @@ snapshots:
graphql@15.10.1: {}
+ gzip-size@7.0.0:
+ dependencies:
+ duplexer: 0.1.2
+
+ h3@1.13.0:
+ dependencies:
+ cookie-es: 1.2.2
+ crossws: 0.3.5
+ defu: 6.1.4
+ destr: 2.0.5
+ iron-webcrypto: 1.2.1
+ ohash: 1.1.6
+ radix3: 1.1.2
+ ufo: 1.6.1
+ uncrypto: 0.1.3
+ unenv: 1.10.0
+
+ h3@1.15.4:
+ dependencies:
+ cookie-es: 1.2.2
+ crossws: 0.3.5
+ defu: 6.1.4
+ destr: 2.0.5
+ iron-webcrypto: 1.2.1
+ node-mock-http: 1.0.3
+ radix3: 1.1.2
+ ufo: 1.6.1
+ uncrypto: 0.1.3
+
h3@2.0.0-beta.4:
dependencies:
cookie-es: 2.0.0
fetchdts: 0.1.7
rou3: 0.7.5
- srvx: 0.8.9
+ srvx: 0.8.7
has-bigints@1.1.0: {}
@@ -13906,13 +16153,15 @@ snapshots:
he@1.2.0: {}
+ hookable@5.5.3: {}
+
hosted-git-info@8.1.0:
dependencies:
lru-cache: 10.4.3
hosted-git-info@9.0.0:
dependencies:
- lru-cache: 11.2.2
+ lru-cache: 11.2.1
html-encoding-sniffer@4.0.0:
dependencies:
@@ -13962,6 +16211,8 @@ snapshots:
transitivePeerDependencies:
- debug
+ http-shutdown@1.2.2: {}
+
https-proxy-agent@7.0.6:
dependencies:
agent-base: 7.1.4
@@ -13969,6 +16220,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ httpxy@0.1.7: {}
+
human-id@4.1.1: {}
human-signals@5.0.0: {}
@@ -14006,6 +16259,13 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
+ import-in-the-middle@1.14.4:
+ dependencies:
+ acorn: 8.15.0
+ acorn-import-attributes: 1.9.5(acorn@8.15.0)
+ cjs-module-lexer: 1.4.3
+ module-details-from-path: 1.0.4
+
import-lazy@4.0.0: {}
imurmurhash@0.1.4: {}
@@ -14031,10 +16291,26 @@ snapshots:
interpret@1.4.0: {}
+ ioredis@5.7.0:
+ dependencies:
+ '@ioredis/commands': 1.4.0
+ cluster-key-slot: 1.1.2
+ debug: 4.4.3
+ denque: 2.1.0
+ lodash.defaults: 4.2.0
+ lodash.isarguments: 3.1.0
+ redis-errors: 1.2.0
+ redis-parser: 3.0.0
+ standard-as-callback: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+
ip-address@10.0.1: {}
ipaddr.js@1.9.1: {}
+ iron-webcrypto@1.2.1: {}
+
is-arguments@1.2.0:
dependencies:
call-bound: 1.0.4
@@ -14088,6 +16364,10 @@ snapshots:
call-bound: 1.0.4
has-tostringtag: 1.0.2
+ is-docker@2.2.1: {}
+
+ is-docker@3.0.0: {}
+
is-extglob@2.1.1: {}
is-finalizationregistry@1.1.1:
@@ -14102,10 +16382,9 @@ snapshots:
dependencies:
get-east-asian-width: 1.4.0
- is-generator-function@1.1.2:
+ is-generator-function@1.1.0:
dependencies:
call-bound: 1.0.4
- generator-function: 2.0.1
get-proto: 1.0.1
has-tostringtag: 1.0.2
safe-regex-test: 1.1.0
@@ -14118,10 +16397,16 @@ snapshots:
dependencies:
html-tags: 3.3.1
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
is-interactive@2.0.0: {}
is-map@2.0.3: {}
+ is-module@1.0.0: {}
+
is-my-ip-valid@1.0.1: {}
is-my-json-valid@2.20.6:
@@ -14143,12 +16428,18 @@ snapshots:
is-obj@2.0.0: {}
+ is-path-inside@3.0.3: {}
+
is-potential-custom-element-name@1.0.1: {}
is-promise@4.0.0: {}
is-property@1.0.2: {}
+ is-reference@1.2.1:
+ dependencies:
+ '@types/estree': 1.0.8
+
is-reference@3.0.3:
dependencies:
'@types/estree': 1.0.8
@@ -14168,6 +16459,8 @@ snapshots:
is-stream@1.1.0: {}
+ is-stream@2.0.1: {}
+
is-stream@3.0.0: {}
is-string@1.1.1:
@@ -14212,10 +16505,26 @@ snapshots:
is-windows@1.0.2: {}
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
+ is-wsl@3.1.0:
+ dependencies:
+ is-inside-container: 1.0.0
+
+ is64bit@2.0.0:
+ dependencies:
+ system-architecture: 0.1.0
+
+ isarray@1.0.0: {}
+
isarray@2.0.5: {}
isbinaryfile@4.0.10: {}
+ isbot@5.1.30: {}
+
isbot@5.1.31: {}
isexe@2.0.0: {}
@@ -14296,7 +16605,9 @@ snapshots:
jiti@1.21.7: {}
- jiti@2.6.0: {}
+ jiti@2.5.1: {}
+
+ jiti@2.6.1: {}
jju@1.4.0: {}
@@ -14319,7 +16630,7 @@ snapshots:
jsdom@27.0.0(postcss@8.5.6):
dependencies:
- '@asamuzakjp/dom-selector': 6.5.7
+ '@asamuzakjp/dom-selector': 6.5.5
cssstyle: 5.3.1(postcss@8.5.6)
data-urls: 6.0.0
decimal.js: 10.6.0
@@ -14452,13 +16763,15 @@ snapshots:
kleur@4.1.5: {}
- knip@5.64.1(@types/node@22.18.8)(typescript@5.9.3):
+ klona@2.0.6: {}
+
+ knip@5.64.1(@types/node@22.18.6)(typescript@5.9.2):
dependencies:
'@nodelib/fs.walk': 1.2.8
- '@types/node': 22.18.8
+ '@types/node': 22.18.6
fast-glob: 3.3.3
formatly: 0.3.0
- jiti: 2.6.0
+ jiti: 2.6.1
js-yaml: 4.1.0
minimist: 1.2.8
oxc-resolver: 11.8.4
@@ -14466,15 +16779,21 @@ snapshots:
picomatch: 4.0.3
smol-toml: 1.4.2
strip-json-comments: 5.0.2
- typescript: 5.9.3
+ typescript: 5.9.2
zod: 4.1.11
+ knitwork@1.2.0: {}
+
known-css-properties@0.30.0: {}
kolorist@1.8.0: {}
kysely@0.28.7: {}
+ lazystream@1.0.1:
+ dependencies:
+ readable-stream: 2.3.8
+
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
@@ -14512,7 +16831,7 @@ snapshots:
lightningcss@1.30.1:
dependencies:
- detect-libc: 2.1.1
+ detect-libc: 2.1.0
optionalDependencies:
lightningcss-darwin-arm64: 1.30.1
lightningcss-darwin-x64: 1.30.1
@@ -14548,6 +16867,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ listhen@1.9.0:
+ dependencies:
+ '@parcel/watcher': 2.5.1
+ '@parcel/watcher-wasm': 2.5.1
+ citty: 0.1.6
+ clipboardy: 4.0.0
+ consola: 3.4.2
+ crossws: 0.3.5
+ defu: 6.1.4
+ get-port-please: 3.2.0
+ h3: 1.15.4
+ http-shutdown: 1.2.2
+ jiti: 2.5.1
+ mlly: 1.8.0
+ node-forge: 1.3.1
+ pathe: 1.1.2
+ std-env: 3.9.0
+ ufo: 1.6.1
+ untun: 0.1.3
+ uqr: 0.1.2
+
listr2@8.3.3:
dependencies:
cli-truncate: 4.0.0
@@ -14588,6 +16928,12 @@ snapshots:
mlly: 1.8.0
pkg-types: 1.3.1
+ local-pkg@1.1.2:
+ dependencies:
+ mlly: 1.8.0
+ pkg-types: 2.3.0
+ quansync: 0.2.11
+
locate-character@3.0.0: {}
locate-path@5.0.0:
@@ -14600,8 +16946,12 @@ snapshots:
lodash.camelcase@4.3.0: {}
+ lodash.defaults@4.2.0: {}
+
lodash.get@4.4.2: {}
+ lodash.isarguments@3.1.0: {}
+
lodash.isequal@4.5.0: {}
lodash.merge@4.6.2: {}
@@ -14617,7 +16967,7 @@ snapshots:
log-update@6.1.0:
dependencies:
- ansi-escapes: 7.1.1
+ ansi-escapes: 7.1.0
cli-cursor: 5.0.0
slice-ansi: 7.1.2
strip-ansi: 7.1.2
@@ -14641,9 +16991,13 @@ snapshots:
loupe@3.2.1: {}
+ lower-case@2.0.2:
+ dependencies:
+ tslib: 2.8.1
+
lru-cache@10.4.3: {}
- lru-cache@11.2.2: {}
+ lru-cache@11.2.1: {}
lru-cache@5.1.1:
dependencies:
@@ -14756,6 +17110,10 @@ snapshots:
mime@2.6.0: {}
+ mime@3.0.0: {}
+
+ mime@4.1.0: {}
+
mimic-fn@4.0.0: {}
mimic-function@5.0.1: {}
@@ -14776,6 +17134,10 @@ snapshots:
dependencies:
brace-expansion: 1.1.12
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.2
+
minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.2
@@ -14790,7 +17152,7 @@ snapshots:
dependencies:
minipass: 7.1.2
minipass-sized: 1.0.3
- minizlib: 3.1.0
+ minizlib: 3.0.2
optionalDependencies:
encoding: 0.1.13
@@ -14819,7 +17181,7 @@ snapshots:
minipass: 3.3.6
yallist: 4.0.0
- minizlib@3.1.0:
+ minizlib@3.0.2:
dependencies:
minipass: 7.1.2
@@ -14831,6 +17193,8 @@ snapshots:
mkdirp@1.0.4: {}
+ mkdirp@3.0.1: {}
+
mlly@1.8.0:
dependencies:
acorn: 8.15.0
@@ -14838,6 +17202,8 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
+ module-details-from-path@1.0.4: {}
+
mongodb-connection-string-url@3.0.2:
dependencies:
'@types/whatwg-url': 11.0.5
@@ -14845,7 +17211,7 @@ snapshots:
mongodb@6.18.0(socks@2.8.7):
dependencies:
- '@mongodb-js/saslprep': 1.3.1
+ '@mongodb-js/saslprep': 1.3.0
bson: 6.10.4
mongodb-connection-string-url: 3.0.2
optionalDependencies:
@@ -14904,15 +17270,122 @@ snapshots:
nice-try@1.0.5: {}
+ nitropack@2.12.6(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))(encoding@0.1.13)(rolldown@1.0.0-beta.38):
+ dependencies:
+ '@cloudflare/kv-asset-handler': 0.4.0
+ '@rollup/plugin-alias': 5.1.1(rollup@4.52.0)
+ '@rollup/plugin-commonjs': 28.0.6(rollup@4.52.0)
+ '@rollup/plugin-inject': 5.0.5(rollup@4.52.0)
+ '@rollup/plugin-json': 6.1.0(rollup@4.52.0)
+ '@rollup/plugin-node-resolve': 16.0.1(rollup@4.52.0)
+ '@rollup/plugin-replace': 6.0.2(rollup@4.52.0)
+ '@rollup/plugin-terser': 0.4.4(rollup@4.52.0)
+ '@vercel/nft': 0.30.1(encoding@0.1.13)(rollup@4.52.0)
+ archiver: 7.0.1
+ c12: 3.3.0(magicast@0.3.5)
+ chokidar: 4.0.3
+ citty: 0.1.6
+ compatx: 0.2.0
+ confbox: 0.2.2
+ consola: 3.4.2
+ cookie-es: 2.0.0
+ croner: 9.1.0
+ crossws: 0.3.5
+ db0: 0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))
+ defu: 6.1.4
+ destr: 2.0.5
+ dot-prop: 9.0.0
+ esbuild: 0.25.10
+ escape-string-regexp: 5.0.0
+ etag: 1.8.1
+ exsolve: 1.0.7
+ globby: 14.1.0
+ gzip-size: 7.0.0
+ h3: 1.15.4
+ hookable: 5.5.3
+ httpxy: 0.1.7
+ ioredis: 5.7.0
+ jiti: 2.5.1
+ klona: 2.0.6
+ knitwork: 1.2.0
+ listhen: 1.9.0
+ magic-string: 0.30.19
+ magicast: 0.3.5
+ mime: 4.1.0
+ mlly: 1.8.0
+ node-fetch-native: 1.6.7
+ node-mock-http: 1.0.3
+ ofetch: 1.4.1
+ ohash: 2.0.11
+ pathe: 2.0.3
+ perfect-debounce: 2.0.0
+ pkg-types: 2.3.0
+ pretty-bytes: 7.0.1
+ radix3: 1.1.2
+ rollup: 4.52.0
+ rollup-plugin-visualizer: 6.0.3(rolldown@1.0.0-beta.38)(rollup@4.52.0)
+ scule: 1.3.0
+ semver: 7.7.2
+ serve-placeholder: 2.0.2
+ serve-static: 2.2.0
+ source-map: 0.7.6
+ std-env: 3.9.0
+ ufo: 1.6.1
+ ultrahtml: 1.6.0
+ uncrypto: 0.1.3
+ unctx: 2.4.1
+ unenv: 2.0.0-rc.21
+ unimport: 5.3.0
+ unplugin-utils: 0.3.0
+ unstorage: 1.17.1(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0)
+ untyped: 2.0.0
+ unwasm: 0.3.11
+ youch: 4.1.0-beta.11
+ youch-core: 0.3.3
+ transitivePeerDependencies:
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@deno/kv'
+ - '@electric-sql/pglite'
+ - '@libsql/client'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/blob'
+ - '@vercel/functions'
+ - '@vercel/kv'
+ - aws4fetch
+ - better-sqlite3
+ - drizzle-orm
+ - encoding
+ - idb-keyval
+ - mysql2
+ - react-native-b4a
+ - rolldown
+ - sqlite3
+ - supports-color
+ - uploadthing
+
nkeys.js@1.1.0:
dependencies:
tweetnacl: 1.0.3
+ no-case@3.0.4:
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.8.1
+
node-addon-api@6.1.0:
optional: true
- node-addon-api@7.1.1:
- optional: true
+ node-addon-api@7.1.1: {}
+
+ node-fetch-native@1.6.7: {}
node-fetch@2.7.0(encoding@0.1.13):
dependencies:
@@ -14920,11 +17393,15 @@ snapshots:
optionalDependencies:
encoding: 0.1.13
+ node-forge@1.3.1: {}
+
node-gyp-build-optional-packages@5.2.2:
dependencies:
- detect-libc: 2.1.1
+ detect-libc: 2.1.0
optional: true
+ node-gyp-build@4.8.4: {}
+
node-gyp@11.4.2:
dependencies:
env-paths: 2.2.1
@@ -14934,12 +17411,14 @@ snapshots:
nopt: 8.1.0
proc-log: 5.0.0
semver: 7.7.2
- tar: 7.5.1
+ tar: 7.4.3
tinyglobby: 0.2.15
which: 5.0.0
transitivePeerDependencies:
- supports-color
+ node-mock-http@1.0.3: {}
+
node-releases@2.0.21: {}
nopt@8.1.0:
@@ -14974,10 +17453,9 @@ snapshots:
semver: 7.7.2
validate-npm-package-name: 6.0.2
- npm-packlist@10.0.2:
+ npm-packlist@10.0.1:
dependencies:
ignore-walk: 8.0.0
- proc-log: 5.0.0
npm-pick-manifest@10.0.0:
dependencies:
@@ -14993,7 +17471,7 @@ snapshots:
make-fetch-happen: 14.0.3
minipass: 7.1.2
minipass-fetch: 4.0.1
- minizlib: 3.1.0
+ minizlib: 3.0.2
npm-package-arg: 12.0.2
proc-log: 5.0.0
transitivePeerDependencies:
@@ -15011,6 +17489,14 @@ snapshots:
dependencies:
boolbase: 1.0.0
+ nypm@0.6.2:
+ dependencies:
+ citty: 0.1.6
+ consola: 3.4.2
+ pathe: 2.0.3
+ pkg-types: 2.3.0
+ tinyexec: 1.0.1
+
object-assign@4.1.1: {}
object-hash@3.0.0: {}
@@ -15051,6 +17537,16 @@ snapshots:
oblivious-set@1.4.0: {}
+ ofetch@1.4.1:
+ dependencies:
+ destr: 2.0.5
+ node-fetch-native: 1.6.7
+ ufo: 1.6.1
+
+ ohash@1.1.6: {}
+
+ ohash@2.0.11: {}
+
on-finished@2.3.0:
dependencies:
ee-first: 1.1.1
@@ -15071,6 +17567,12 @@ snapshots:
dependencies:
mimic-function: 5.0.1
+ open@8.4.2:
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
optionator@0.9.4:
dependencies:
deep-is: 0.1.4
@@ -15183,7 +17685,7 @@ snapshots:
fs-minipass: 3.0.3
minipass: 7.1.2
npm-package-arg: 12.0.2
- npm-packlist: 10.0.2
+ npm-packlist: 10.0.1
npm-pick-manifest: 10.0.0
npm-registry-fetch: 18.0.2
proc-log: 5.0.0
@@ -15227,6 +17729,11 @@ snapshots:
parseurl@1.3.3: {}
+ pascal-case@3.1.2:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.8.1
+
path-browserify@1.0.1: {}
path-exists@4.0.0: {}
@@ -15252,10 +17759,16 @@ snapshots:
path-type@4.0.0: {}
+ path-type@6.0.0: {}
+
+ pathe@1.1.2: {}
+
pathe@2.0.3: {}
pathval@2.0.1: {}
+ perfect-debounce@2.0.0: {}
+
pg-cloudflare@1.2.7:
optional: true
@@ -15317,6 +17830,12 @@ snapshots:
mlly: 1.8.0
pathe: 2.0.3
+ pkg-types@2.3.0:
+ dependencies:
+ confbox: 0.2.2
+ exsolve: 1.0.7
+ pathe: 2.0.3
+
possible-typed-array-names@1.1.0: {}
postcss-import@15.1.0(postcss@8.5.6):
@@ -15380,6 +17899,8 @@ snapshots:
prettier@3.6.2: {}
+ pretty-bytes@7.0.1: {}
+
pretty-format@27.5.1:
dependencies:
ansi-regex: 5.0.1
@@ -15388,6 +17909,10 @@ snapshots:
proc-log@5.0.0: {}
+ process-nextick-args@2.0.1: {}
+
+ process@0.11.10: {}
+
promise-retry@2.0.1:
dependencies:
err-code: 2.0.3
@@ -15411,7 +17936,7 @@ snapshots:
'@protobufjs/path': 1.1.2
'@protobufjs/pool': 1.1.0
'@protobufjs/utf8': 1.1.0
- '@types/node': 24.6.1
+ '@types/node': 22.18.6
long: 5.3.2
proxy-addr@2.0.7:
@@ -15457,6 +17982,8 @@ snapshots:
queue-microtask@1.2.3: {}
+ radix3@1.1.2: {}
+
randombytes@2.1.0:
dependencies:
safe-buffer: 5.2.1
@@ -15477,6 +18004,11 @@ snapshots:
iconv-lite: 0.7.0
unpipe: 1.0.0
+ rc9@2.1.2:
+ dependencies:
+ defu: 6.1.4
+ destr: 2.0.5
+
react-dom@19.1.1(react@19.1.1):
dependencies:
react: 19.1.1
@@ -15501,12 +18033,34 @@ snapshots:
pify: 4.0.1
strip-bom: 3.0.0
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
readable-stream@3.6.2:
dependencies:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
+ readable-stream@4.7.0:
+ dependencies:
+ abort-controller: 3.0.0
+ buffer: 6.0.3
+ events: 3.3.0
+ process: 0.11.10
+ string_decoder: 1.3.0
+
+ readdir-glob@1.1.3:
+ dependencies:
+ minimatch: 5.1.6
+
readdirp@3.6.0:
dependencies:
picomatch: 2.3.1
@@ -15532,6 +18086,12 @@ snapshots:
indent-string: 4.0.0
strip-indent: 3.0.0
+ redis-errors@1.2.0: {}
+
+ redis-parser@3.0.0:
+ dependencies:
+ redis-errors: 1.2.0
+
reflect-metadata@0.2.2: {}
reflect.getprototypeof@1.0.10:
@@ -15560,6 +18120,14 @@ snapshots:
require-from-string@2.0.2: {}
+ require-in-the-middle@7.5.2:
+ dependencies:
+ debug: 4.4.3
+ module-details-from-path: 1.0.4
+ resolve: 1.22.10
+ transitivePeerDependencies:
+ - supports-color
+
requires-port@1.0.0: {}
resolve-from@4.0.0: {}
@@ -15599,7 +18167,7 @@ snapshots:
dependencies:
'@oxc-project/types': 0.89.0
'@rolldown/pluginutils': 1.0.0-beta.38
- ansis: 4.2.0
+ ansis: 4.1.0
optionalDependencies:
'@rolldown/binding-android-arm64': 1.0.0-beta.38
'@rolldown/binding-darwin-arm64': 1.0.0-beta.38
@@ -15616,38 +18184,48 @@ snapshots:
'@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.38
'@rolldown/binding-win32-x64-msvc': 1.0.0-beta.38
- rollup-plugin-preserve-directives@0.4.0(rollup@4.52.3):
+ rollup-plugin-preserve-directives@0.4.0(rollup@4.52.0):
dependencies:
- '@rollup/pluginutils': 5.3.0(rollup@4.52.3)
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
magic-string: 0.30.19
- rollup: 4.52.3
+ rollup: 4.52.0
- rollup@4.52.3:
+ rollup-plugin-visualizer@6.0.3(rolldown@1.0.0-beta.38)(rollup@4.52.0):
+ dependencies:
+ open: 8.4.2
+ picomatch: 4.0.3
+ source-map: 0.7.6
+ yargs: 17.7.2
+ optionalDependencies:
+ rolldown: 1.0.0-beta.38
+ rollup: 4.52.0
+
+ rollup@4.52.0:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.52.3
- '@rollup/rollup-android-arm64': 4.52.3
- '@rollup/rollup-darwin-arm64': 4.52.3
- '@rollup/rollup-darwin-x64': 4.52.3
- '@rollup/rollup-freebsd-arm64': 4.52.3
- '@rollup/rollup-freebsd-x64': 4.52.3
- '@rollup/rollup-linux-arm-gnueabihf': 4.52.3
- '@rollup/rollup-linux-arm-musleabihf': 4.52.3
- '@rollup/rollup-linux-arm64-gnu': 4.52.3
- '@rollup/rollup-linux-arm64-musl': 4.52.3
- '@rollup/rollup-linux-loong64-gnu': 4.52.3
- '@rollup/rollup-linux-ppc64-gnu': 4.52.3
- '@rollup/rollup-linux-riscv64-gnu': 4.52.3
- '@rollup/rollup-linux-riscv64-musl': 4.52.3
- '@rollup/rollup-linux-s390x-gnu': 4.52.3
- '@rollup/rollup-linux-x64-gnu': 4.52.3
- '@rollup/rollup-linux-x64-musl': 4.52.3
- '@rollup/rollup-openharmony-arm64': 4.52.3
- '@rollup/rollup-win32-arm64-msvc': 4.52.3
- '@rollup/rollup-win32-ia32-msvc': 4.52.3
- '@rollup/rollup-win32-x64-gnu': 4.52.3
- '@rollup/rollup-win32-x64-msvc': 4.52.3
+ '@rollup/rollup-android-arm-eabi': 4.52.0
+ '@rollup/rollup-android-arm64': 4.52.0
+ '@rollup/rollup-darwin-arm64': 4.52.0
+ '@rollup/rollup-darwin-x64': 4.52.0
+ '@rollup/rollup-freebsd-arm64': 4.52.0
+ '@rollup/rollup-freebsd-x64': 4.52.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.52.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.52.0
+ '@rollup/rollup-linux-arm64-gnu': 4.52.0
+ '@rollup/rollup-linux-arm64-musl': 4.52.0
+ '@rollup/rollup-linux-loong64-gnu': 4.52.0
+ '@rollup/rollup-linux-ppc64-gnu': 4.52.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.52.0
+ '@rollup/rollup-linux-riscv64-musl': 4.52.0
+ '@rollup/rollup-linux-s390x-gnu': 4.52.0
+ '@rollup/rollup-linux-x64-gnu': 4.52.0
+ '@rollup/rollup-linux-x64-musl': 4.52.0
+ '@rollup/rollup-openharmony-arm64': 4.52.0
+ '@rollup/rollup-win32-arm64-msvc': 4.52.0
+ '@rollup/rollup-win32-ia32-msvc': 4.52.0
+ '@rollup/rollup-win32-x64-gnu': 4.52.0
+ '@rollup/rollup-win32-x64-msvc': 4.52.0
fsevents: 2.3.3
rou3@0.5.1: {}
@@ -15734,6 +18312,8 @@ snapshots:
has-symbols: 1.1.0
isarray: 2.0.5
+ safe-buffer@5.1.2: {}
+
safe-buffer@5.2.1: {}
safe-push-apply@1.0.0:
@@ -15809,12 +18389,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ serialize-javascript@6.0.2:
+ dependencies:
+ randombytes: 2.1.0
+
seroval-plugins@1.3.3(seroval@1.3.2):
dependencies:
seroval: 1.3.2
seroval@1.3.2: {}
+ serve-placeholder@2.0.2:
+ dependencies:
+ defu: 6.1.4
+
serve-static@1.16.2:
dependencies:
encodeurl: 2.0.0
@@ -15907,6 +18495,8 @@ snapshots:
sherif-windows-arm64: 1.6.1
sherif-windows-x64: 1.6.1
+ shimmer@1.2.1: {}
+
shx@0.4.0:
dependencies:
minimist: 1.2.8
@@ -15979,6 +18569,8 @@ snapshots:
slash@3.0.0: {}
+ slash@5.1.0: {}
+
slice-ansi@5.0.0:
dependencies:
ansi-styles: 6.2.3
@@ -15991,6 +18583,8 @@ snapshots:
smart-buffer@4.2.0: {}
+ smob@1.5.0: {}
+
smol-toml@1.4.2: {}
socket.io-adapter@2.5.5:
@@ -16091,7 +18685,7 @@ snapshots:
sprintf-js@1.0.3: {}
- srvx@0.8.9:
+ srvx@0.8.7:
dependencies:
cookie-es: 2.0.0
@@ -16103,6 +18697,8 @@ snapshots:
stackback@0.0.2: {}
+ standard-as-callback@2.1.0: {}
+
statuses@1.5.0: {}
statuses@2.0.1: {}
@@ -16126,6 +18722,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ streamx@2.22.1:
+ dependencies:
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.3
+ optionalDependencies:
+ bare-events: 2.7.0
+ transitivePeerDependencies:
+ - react-native-b4a
+
string-argv@0.3.2: {}
string-width@4.2.3:
@@ -16190,6 +18795,10 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
string_decoder@1.3.0:
dependencies:
safe-buffer: 5.2.1
@@ -16216,7 +18825,7 @@ snapshots:
strip-json-comments@5.0.2: {}
- strip-literal@3.1.0:
+ strip-literal@3.0.0:
dependencies:
js-tokens: 9.0.1
@@ -16234,6 +18843,8 @@ snapshots:
pirates: 4.0.7
ts-interface-checker: 0.1.13
+ supports-color@10.2.2: {}
+
supports-color@7.2.0:
dependencies:
has-flag: 4.0.0
@@ -16244,30 +18855,30 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svelte-check@4.3.2(picomatch@4.0.3)(svelte@5.39.7)(typescript@5.9.3):
+ svelte-check@4.3.2(picomatch@4.0.3)(svelte@5.39.8)(typescript@5.9.2):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
chokidar: 4.0.3
fdir: 6.5.0(picomatch@4.0.3)
picocolors: 1.1.1
sade: 1.8.1
- svelte: 5.39.7
- typescript: 5.9.3
+ svelte: 5.39.8
+ typescript: 5.9.2
transitivePeerDependencies:
- picomatch
- svelte2tsx@0.7.44(svelte@5.39.7)(typescript@5.9.3):
+ svelte2tsx@0.7.43(svelte@5.39.8)(typescript@5.9.2):
dependencies:
dedent-js: 1.0.1
- scule: 1.3.0
- svelte: 5.39.7
- typescript: 5.9.3
+ pascal-case: 3.1.2
+ svelte: 5.39.8
+ typescript: 5.9.2
- svelte@5.39.7:
+ svelte@5.39.8:
dependencies:
'@jridgewell/remapping': 2.3.5
'@jridgewell/sourcemap-codec': 1.5.5
- '@sveltejs/acorn-typescript': 1.0.6(acorn@8.15.0)
+ '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0)
'@types/estree': 1.0.8
acorn: 8.15.0
aria-query: 5.3.2
@@ -16286,6 +18897,10 @@ snapshots:
dependencies:
'@pkgr/core': 0.2.9
+ system-architecture@0.1.0: {}
+
+ tailwind-merge@2.6.0: {}
+
tailwindcss@3.4.17:
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -16317,6 +18932,14 @@ snapshots:
tapable@2.2.3: {}
+ tar-stream@3.1.7:
+ dependencies:
+ b4a: 1.7.1
+ fast-fifo: 1.3.2
+ streamx: 2.22.1
+ transitivePeerDependencies:
+ - react-native-b4a
+
tar@6.2.1:
dependencies:
chownr: 2.0.0
@@ -16326,12 +18949,13 @@ snapshots:
mkdirp: 1.0.4
yallist: 4.0.0
- tar@7.5.1:
+ tar@7.4.3:
dependencies:
'@isaacs/fs-minipass': 4.0.1
chownr: 3.0.0
minipass: 7.1.2
- minizlib: 3.1.0
+ minizlib: 3.0.2
+ mkdirp: 3.0.1
yallist: 5.0.0
temporal-polyfill@0.3.0:
@@ -16342,14 +18966,29 @@ snapshots:
term-size@2.2.1: {}
+ terser@5.44.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.15.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
test-exclude@7.0.1:
dependencies:
'@istanbuljs/schema': 0.1.3
glob: 10.4.5
minimatch: 9.0.5
+ text-decoder@1.2.3:
+ dependencies:
+ b4a: 1.7.1
+ transitivePeerDependencies:
+ - react-native-b4a
+
text-extensions@2.4.0: {}
+ text-table@0.2.0: {}
+
thenify-all@1.6.0:
dependencies:
thenify: 3.3.1
@@ -16368,6 +19007,8 @@ snapshots:
tinyexec@0.3.2: {}
+ tinyexec@1.0.1: {}
+
tinyglobby@0.2.14:
dependencies:
fdir: 6.5.0(picomatch@4.0.3)
@@ -16419,20 +19060,20 @@ snapshots:
tree-kill@1.2.2: {}
- ts-api-utils@2.1.0(typescript@5.9.3):
+ ts-api-utils@2.1.0(typescript@5.9.2):
dependencies:
- typescript: 5.9.3
+ typescript: 5.9.2
- ts-declaration-location@1.0.7(typescript@5.9.3):
+ ts-declaration-location@1.0.7(typescript@5.9.2):
dependencies:
picomatch: 4.0.3
- typescript: 5.9.3
+ typescript: 5.9.2
ts-interface-checker@0.1.13: {}
- tsconfck@3.1.6(typescript@5.9.3):
+ tsconfck@3.1.6(typescript@5.9.2):
optionalDependencies:
- typescript: 5.9.3
+ typescript: 5.9.2
tslib@1.14.1: {}
@@ -16463,6 +19104,10 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
+ type-fest@0.20.2: {}
+
+ type-fest@4.41.0: {}
+
type-is@1.6.18:
dependencies:
media-typer: 0.3.0
@@ -16507,32 +19152,32 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
- typedoc-plugin-frontmatter@1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.3))):
+ typedoc-plugin-frontmatter@1.2.1(typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2))):
dependencies:
- typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.3))
+ typedoc-plugin-markdown: 4.4.2(typedoc@0.27.9(typescript@5.9.2))
yaml: 2.8.1
- typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.3)):
+ typedoc-plugin-markdown@4.4.2(typedoc@0.27.9(typescript@5.9.2)):
dependencies:
- typedoc: 0.27.9(typescript@5.9.3)
+ typedoc: 0.27.9(typescript@5.9.2)
- typedoc@0.27.9(typescript@5.9.3):
+ typedoc@0.27.9(typescript@5.9.2):
dependencies:
'@gerrit0/mini-shiki': 1.27.2
lunr: 2.3.9
markdown-it: 14.1.0
minimatch: 9.0.5
- typescript: 5.9.3
+ typescript: 5.9.2
yaml: 2.8.1
- typescript-eslint@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3):
+ typescript-eslint@8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.45.0(eslint@9.36.0(jiti@2.6.0))(typescript@5.9.3)
- eslint: 9.36.0(jiti@2.6.0)
- typescript: 5.9.3
+ '@typescript-eslint/eslint-plugin': 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2)
+ '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.6.1))(typescript@5.9.2)
+ eslint: 9.36.0(jiti@2.6.1)
+ typescript: 5.9.2
transitivePeerDependencies:
- supports-color
@@ -16540,7 +19185,7 @@ snapshots:
typescript@5.8.3: {}
- typescript@5.9.3: {}
+ typescript@5.9.2: {}
ua-parser-js@0.7.41: {}
@@ -16548,6 +19193,8 @@ snapshots:
ufo@1.6.1: {}
+ ultrahtml@1.6.0: {}
+
unbox-primitive@1.1.0:
dependencies:
call-bound: 1.0.4
@@ -16557,12 +19204,54 @@ snapshots:
uncrypto@0.1.3: {}
+ unctx@2.4.1:
+ dependencies:
+ acorn: 8.15.0
+ estree-walker: 3.0.3
+ magic-string: 0.30.19
+ unplugin: 2.3.10
+
undici-types@6.21.0: {}
- undici-types@7.13.0: {}
+ undici-types@7.12.0: {}
undici@7.16.0: {}
+ unenv@1.10.0:
+ dependencies:
+ consola: 3.4.2
+ defu: 6.1.4
+ mime: 3.0.0
+ node-fetch-native: 1.6.7
+ pathe: 1.1.2
+
+ unenv@2.0.0-rc.21:
+ dependencies:
+ defu: 6.1.4
+ exsolve: 1.0.7
+ ohash: 2.0.11
+ pathe: 2.0.3
+ ufo: 1.6.1
+
+ unicorn-magic@0.3.0: {}
+
+ unimport@5.3.0:
+ dependencies:
+ acorn: 8.15.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ local-pkg: 1.1.2
+ magic-string: 0.30.19
+ mlly: 1.8.0
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ pkg-types: 2.3.0
+ scule: 1.3.0
+ strip-literal: 3.0.0
+ tinyglobby: 0.2.15
+ unplugin: 2.3.10
+ unplugin-utils: 0.3.0
+
unique-filename@4.0.0:
dependencies:
unique-slug: 5.0.0
@@ -16579,6 +19268,11 @@ snapshots:
unpipe@1.0.0: {}
+ unplugin-utils@0.3.0:
+ dependencies:
+ pathe: 2.0.3
+ picomatch: 4.0.3
+
unplugin@2.3.10:
dependencies:
'@jridgewell/remapping': 2.3.5
@@ -16610,12 +19304,51 @@ snapshots:
'@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
'@unrs/resolver-binding-win32-x64-msvc': 1.11.1
+ unstorage@1.17.1(db0@0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7)))(ioredis@5.7.0):
+ dependencies:
+ anymatch: 3.1.3
+ chokidar: 4.0.3
+ destr: 2.0.5
+ h3: 1.15.4
+ lru-cache: 10.4.3
+ node-fetch-native: 1.6.7
+ ofetch: 1.4.1
+ ufo: 1.6.1
+ optionalDependencies:
+ db0: 0.3.2(drizzle-orm@0.44.5(@opentelemetry/api@1.9.0)(@types/pg@8.15.5)(gel@2.1.1)(kysely@0.28.7)(pg@8.16.3)(postgres@3.4.7))
+ ioredis: 5.7.0
+
+ untun@0.1.3:
+ dependencies:
+ citty: 0.1.6
+ consola: 3.4.2
+ pathe: 1.1.2
+
+ untyped@2.0.0:
+ dependencies:
+ citty: 0.1.6
+ defu: 6.1.4
+ jiti: 2.5.1
+ knitwork: 1.2.0
+ scule: 1.3.0
+
+ unwasm@0.3.11:
+ dependencies:
+ knitwork: 1.2.0
+ magic-string: 0.30.19
+ mlly: 1.8.0
+ pathe: 2.0.3
+ pkg-types: 2.3.0
+ unplugin: 2.3.10
+
update-browserslist-db@1.1.3(browserslist@4.26.2):
dependencies:
browserslist: 4.26.2
escalade: 3.2.0
picocolors: 1.1.1
+ uqr@0.1.2: {}
+
uri-js@4.4.1:
dependencies:
punycode: 2.3.1
@@ -16630,7 +19363,7 @@ snapshots:
dependencies:
inherits: 2.0.4
is-arguments: 1.2.0
- is-generator-function: 1.1.2
+ is-generator-function: 1.1.0
is-typed-array: 1.1.15
which-typed-array: 1.1.19
@@ -16651,13 +19384,34 @@ snapshots:
vary@1.1.2: {}
- vite-node@3.2.4(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vite-node@3.2.4(@types/node@20.19.17)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: 7.1.7(@types/node@20.19.17)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ vite-node@3.2.4(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
cac: 6.7.14
debug: 4.4.3
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 7.1.7(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -16672,13 +19426,13 @@ snapshots:
- tsx
- yaml
- vite-node@3.2.4(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vite-node@3.2.4(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
cac: 6.7.14
debug: 4.4.3
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -16693,45 +19447,30 @@ snapshots:
- tsx
- yaml
- vite-plugin-dts@4.2.3(@types/node@22.18.8)(rollup@4.52.3)(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vite-plugin-dts@4.2.3(@types/node@22.18.6)(rollup@4.52.0)(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
- '@microsoft/api-extractor': 7.47.7(@types/node@22.18.8)
- '@rollup/pluginutils': 5.3.0(rollup@4.52.3)
+ '@microsoft/api-extractor': 7.47.7(@types/node@22.18.6)
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.0)
'@volar/typescript': 2.4.23
- '@vue/language-core': 2.1.6(typescript@5.9.3)
+ '@vue/language-core': 2.1.6(typescript@5.9.2)
compare-versions: 6.1.1
debug: 4.4.3
kolorist: 1.8.0
local-pkg: 0.5.1
magic-string: 0.30.19
- typescript: 5.9.3
+ typescript: 5.9.2
optionalDependencies:
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite-plugin-externalize-deps@0.9.0(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
- dependencies:
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
-
- vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vite-plugin-externalize-deps@0.9.0(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
- '@babel/core': 7.28.4
- '@types/babel__core': 7.20.5
- babel-preset-solid: 1.9.9(@babel/core@7.28.4)(solid-js@1.9.9)
- merge-anything: 5.1.7
- solid-js: 1.9.9
- solid-refresh: 0.6.3(solid-js@1.9.9)
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
- optionalDependencies:
- '@testing-library/jest-dom': 6.9.0
- transitivePeerDependencies:
- - supports-color
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
- vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
'@babel/core': 7.28.4
'@types/babel__core': 7.20.5
@@ -16739,14 +19478,14 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.9
solid-refresh: 0.6.3(solid-js@1.9.9)
- vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitefu: 1.1.1(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
optionalDependencies:
- '@testing-library/jest-dom': 6.9.0
+ '@testing-library/jest-dom': 6.8.0
transitivePeerDependencies:
- supports-color
- vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.9.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vite-plugin-solid@2.11.8(@testing-library/jest-dom@6.8.0)(solid-js@1.9.9)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
'@babel/core': 7.28.4
'@types/babel__core': 7.20.5
@@ -16754,138 +19493,163 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.9
solid-refresh: 0.6.3(solid-js@1.9.9)
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu: 1.1.1(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vitefu: 1.1.1(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
optionalDependencies:
- '@testing-library/jest-dom': 6.9.0
+ '@testing-library/jest-dom': 6.8.0
transitivePeerDependencies:
- supports-color
- optional: true
- vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
- tsconfck: 3.1.6(typescript@5.9.3)
+ tsconfck: 3.1.6(typescript@5.9.2)
optionalDependencies:
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- typescript
- vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vite-tsconfig-paths@5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
dependencies:
debug: 4.4.3
globrex: 0.1.2
- tsconfck: 3.1.6(typescript@5.9.3)
+ tsconfck: 3.1.6(typescript@5.9.2)
optionalDependencies:
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
transitivePeerDependencies:
- supports-color
- typescript
- vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
- dependencies:
- esbuild: 0.25.10
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.52.3
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 22.18.8
- fsevents: 2.3.3
- jiti: 2.6.0
- lightningcss: 1.30.1
- sass: 1.90.0
- tsx: 4.20.6
- yaml: 2.8.1
-
- vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vite@7.1.5(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.3
+ rollup: 4.52.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
fsevents: 2.3.3
- jiti: 2.6.0
+ jiti: 2.6.1
lightningcss: 1.30.1
sass: 1.90.0
+ terser: 5.44.0
tsx: 4.20.6
yaml: 2.8.1
- vite@7.1.5(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vite@7.1.7(@types/node@20.19.17)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.3
+ rollup: 4.52.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 20.19.17
fsevents: 2.3.3
- jiti: 2.6.0
+ jiti: 2.6.1
lightningcss: 1.30.1
sass: 1.90.0
+ terser: 5.44.0
tsx: 4.20.6
yaml: 2.8.1
- vite@7.1.7(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.3
+ rollup: 4.52.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 22.18.8
+ '@types/node': 22.18.6
fsevents: 2.3.3
- jiti: 2.6.0
+ jiti: 2.6.1
lightningcss: 1.30.1
sass: 1.90.0
+ terser: 5.44.0
tsx: 4.20.6
yaml: 2.8.1
- vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
esbuild: 0.25.10
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.52.3
+ rollup: 4.52.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
fsevents: 2.3.3
- jiti: 2.6.0
+ jiti: 2.6.1
lightningcss: 1.30.1
sass: 1.90.0
+ terser: 5.44.0
tsx: 4.20.6
yaml: 2.8.1
- vitefu@1.1.1(vite@6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vitefu@1.1.1(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
optionalDependencies:
- vite: 6.3.6(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu@1.1.1(vite@6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vitefu@1.1.1(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)):
optionalDependencies:
- vite: 6.3.6(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
- vitefu@1.1.1(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.17)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
+ dependencies:
+ '@types/chai': 5.2.2
+ '@vitest/expect': 3.2.4
+ '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@vitest/pretty-format': 3.2.4
+ '@vitest/runner': 3.2.4
+ '@vitest/snapshot': 3.2.4
+ '@vitest/spy': 3.2.4
+ '@vitest/utils': 3.2.4
+ chai: 5.3.3
+ debug: 4.4.3
+ expect-type: 1.2.2
+ magic-string: 0.30.19
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.9.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinyglobby: 0.2.15
+ tinypool: 1.1.1
+ tinyrainbow: 2.0.0
+ vite: 7.1.7(@types/node@20.19.17)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-node: 3.2.4(@types/node@20.19.17)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ why-is-node-running: 2.3.0
optionalDependencies:
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ '@types/debug': 4.1.12
+ '@types/node': 20.19.17
+ jsdom: 27.0.0(postcss@8.5.6)
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.6)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -16903,12 +19667,12 @@ snapshots:
tinyglobby: 0.2.15
tinypool: 1.1.1
tinyrainbow: 2.0.0
- vite: 7.1.7(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vite-node: 3.2.4(@types/node@22.18.8)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-node: 3.2.4(@types/node@22.18.6)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 22.18.8
+ '@types/node': 22.18.6
jsdom: 27.0.0(postcss@8.5.6)
transitivePeerDependencies:
- jiti
@@ -16924,11 +19688,11 @@ snapshots:
- tsx
- yaml
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.6.1)(jiti@2.6.0)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.5.2)(jiti@2.6.1)(jsdom@27.0.0(postcss@8.5.6))(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1):
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1))
+ '@vitest/mocker': 3.2.4(vite@7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -16946,12 +19710,12 @@ snapshots:
tinyglobby: 0.2.15
tinypool: 1.1.1
tinyrainbow: 2.0.0
- vite: 7.1.7(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
- vite-node: 3.2.4(@types/node@24.6.1)(jiti@2.6.0)(lightningcss@1.30.1)(sass@1.90.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite: 7.1.7(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
+ vite-node: 3.2.4(@types/node@24.5.2)(jiti@2.6.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 24.6.1
+ '@types/node': 24.5.2
jsdom: 27.0.0(postcss@8.5.6)
transitivePeerDependencies:
- jiti
@@ -16971,10 +19735,10 @@ snapshots:
vscode-uri@3.1.0: {}
- vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.0)):
+ vue-eslint-parser@10.2.0(eslint@9.36.0(jiti@2.6.1)):
dependencies:
debug: 4.4.3
- eslint: 9.36.0(jiti@2.6.0)
+ eslint: 9.36.0(jiti@2.6.1)
eslint-scope: 8.4.0
eslint-visitor-keys: 4.2.1
espree: 10.4.0
@@ -16983,15 +19747,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vue@3.5.22(typescript@5.9.3):
+ vue@3.5.22(typescript@5.9.2):
dependencies:
'@vue/compiler-dom': 3.5.22
'@vue/compiler-sfc': 3.5.22
'@vue/runtime-dom': 3.5.22
- '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.9.3))
+ '@vue/server-renderer': 3.5.22(vue@3.5.22(typescript@5.9.2))
'@vue/shared': 3.5.22
optionalDependencies:
- typescript: 5.9.3
+ typescript: 5.9.2
w3c-xmlserializer@5.0.0:
dependencies:
@@ -17064,7 +19828,7 @@ snapshots:
is-async-function: 2.1.1
is-date-object: 1.1.0
is-finalizationregistry: 1.1.1
- is-generator-function: 1.1.2
+ is-generator-function: 1.1.0
is-regex: 1.2.1
is-weakref: 1.1.1
isarray: 2.0.5
@@ -17097,6 +19861,11 @@ snapshots:
dependencies:
isexe: 2.0.0
+ which@4.0.0:
+ dependencies:
+ isexe: 3.1.1
+ optional: true
+
which@5.0.0:
dependencies:
isexe: 3.1.1
@@ -17200,6 +19969,19 @@ snapshots:
yoctocolors-cjs@2.1.3: {}
+ youch-core@0.3.3:
+ dependencies:
+ '@poppinss/exception': 1.2.2
+ error-stack-parser-es: 1.0.5
+
+ youch@4.1.0-beta.11:
+ 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
+
z-schema@6.0.2:
dependencies:
lodash.get: 4.4.2
@@ -17210,6 +19992,12 @@ snapshots:
zimmerframe@1.1.4: {}
+ zip-stream@6.0.1:
+ dependencies:
+ archiver-utils: 5.0.2
+ compress-commons: 6.0.2
+ readable-stream: 4.7.0
+
zod-to-json-schema@3.24.6(zod@3.25.76):
dependencies:
zod: 3.25.76