diff --git a/.fire-tools.json b/.fire-tools.json index f7c084b..8178f22 100644 --- a/.fire-tools.json +++ b/.fire-tools.json @@ -1,12 +1,36 @@ { - "fire_tools_version": "0.1.0", + "fire_tools_version": "1.13.2", "initialized_at": "2026-04-24T00:00:00Z", "profile": "other", - "features": ["pnpm", "biome", "vitest", "zod"], + "features": [ + "pnpm", + "turborepo", + "typescript", + "biome", + "vitest", + "zod", + "commitlint", + "semantic-release", + "husky", + "actionlint", + "github-actions", + "makefile" + ], "deviations": [ - "No SQL database (Honcho API handles persistence)", - "No turborepo (single package)", - "No commitlint/husky (small solo project)", - "No semantic-release (not publishing to npm)" + { + "tool": "drizzle", + "reason": "No SQL database — Honcho API handles all persistence; Drizzle is not applicable", + "suppressed_at": "2026-04-27T00:00:00Z" + }, + { + "tool": "playwright", + "reason": "Tauri desktop app — E2E testing approach uses Tauri's native test harness, not browser Playwright", + "suppressed_at": "2026-04-27T00:00:00Z" + }, + { + "tool": "typescript-version", + "reason": "Using TypeScript 6.0.3 (ahead of standard 5.9.x) — intentional, team is on leading edge for this solo project", + "suppressed_at": "2026-04-27T00:00:00Z" + } ] } diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 0000000..db5d3dd --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,15 @@ +name: Setup pnpm and Node.js +description: Configure pnpm and Node.js 24 with caching, then install dependencies + +runs: + using: composite + steps: + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version: "24" + cache: pnpm + + - run: pnpm install --frozen-lockfile + shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f7fa21..1596a4b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,15 +13,6 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: 9 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - - - run: pnpm install --frozen-lockfile + - uses: ./.github/actions/setup - run: pnpm turbo lint typecheck test build --filter=@openconcho/web diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d942f2d..502c612 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,20 +11,10 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - version: 9 - - - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'pnpm' + - uses: ./.github/actions/setup - uses: dtolnay/rust-toolchain@stable - - name: Install frontend dependencies - run: pnpm install --frozen-lockfile - - uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/semantic-release.yml b/.github/workflows/semantic-release.yml index 163f52f..e3cfae1 100644 --- a/.github/workflows/semantic-release.yml +++ b/.github/workflows/semantic-release.yml @@ -18,16 +18,7 @@ jobs: fetch-depth: 0 token: ${{ secrets.GH_TOKEN }} - - uses: pnpm/action-setup@v4 - with: - version: 9 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - - - run: pnpm install --frozen-lockfile + - uses: ./.github/actions/setup - run: pnpm exec semantic-release env: diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..d7da588 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1 @@ +pnpm exec commitlint --edit ${1} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..2e8d54e --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +STAGED=$(git diff --cached --name-only --diff-filter=ACMR | grep -E "\.(ts|tsx|js|jsx|css|json)$" || true) +[ -z "$STAGED" ] && exit 0 +pnpm exec biome check --write --staged diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5855d48 --- /dev/null +++ b/Makefile @@ -0,0 +1,22 @@ +.PHONY: dev build test lint lint-fix typecheck install + +dev: + pnpm --filter @openconcho/desktop dev + +build: + pnpm turbo run build + +test: + pnpm turbo run test + +lint: + pnpm turbo run lint + +lint-fix: + pnpm exec biome check --write packages/web/src/ + +typecheck: + pnpm turbo run typecheck + +install: + pnpm install diff --git a/biome.json b/biome.json index 5a1aa9a..e42237d 100644 --- a/biome.json +++ b/biome.json @@ -1,34 +1,43 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "files": { - "ignore": ["src/routeTree.gen.ts", "src/api/schema.d.ts"] - }, - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "style": { - "noNonNullAssertion": "warn" - } - } - }, - "formatter": { - "enabled": true, - "indentStyle": "tab", - "lineWidth": 100 - }, - "javascript": { - "formatter": { - "quoteStyle": "double", - "semicolons": "always" - } - } + "$schema": "https://biomejs.dev/schemas/2.4.13/schema.json", + "files": { + "includes": ["**", "!**/src/routeTree.gen.ts", "!**/src/api/schema.d.ts"] + }, + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "noNonNullAssertion": "warn" + } + } + }, + "formatter": { + "enabled": true, + "indentStyle": "tab", + "lineWidth": 100 + }, + "css": { + "parser": { + "tailwindDirectives": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double", + "semicolons": "always" + } + } } diff --git a/commitlint.config.mjs b/commitlint.config.mjs new file mode 100644 index 0000000..0616fb9 --- /dev/null +++ b/commitlint.config.mjs @@ -0,0 +1,3 @@ +export default { + extends: ['@commitlint/config-conventional'], +}; diff --git a/package.json b/package.json index 4377e32..e2aa922 100644 --- a/package.json +++ b/package.json @@ -8,17 +8,21 @@ "build": "turbo run build", "lint": "turbo run lint", "test": "turbo run test", - "typecheck": "turbo run typecheck" + "typecheck": "turbo run typecheck", + "prepare": "husky" }, "devDependencies": { - "@biomejs/biome": "^1.9.4", + "@biomejs/biome": "catalog:", + "@commitlint/cli": "~20.5.2", + "@commitlint/config-conventional": "~20.5.0", "@semantic-release/changelog": "^6.0.0", "@semantic-release/commit-analyzer": "^13.0.0", "@semantic-release/exec": "^7.1.0", "@semantic-release/git": "^10.0.0", "@semantic-release/github": "^10.0.0", "@semantic-release/release-notes-generator": "^14.0.0", - "semantic-release": "^24.0.0", + "husky": "~9.1.7", + "semantic-release": "catalog:", "turbo": "^2" } } diff --git a/packages/web/package.json b/packages/web/package.json index f89edeb..76d35fb 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -33,28 +33,28 @@ "lucide-react": "^1.11.0", "luxon": "^3.7.2", "openapi-fetch": "^0.13.5", - "react": "^19.2.5", - "react-dom": "^19.2.5", + "react": "catalog:", + "react-dom": "catalog:", "react-markdown": "^10.1.0", "remark-gfm": "^4.0.1", "tailwind-merge": "^3.5.0", "tailwindcss": "^4.2.4", - "zod": "^3.24.3" + "zod": "catalog:" }, "devDependencies": { "@tanstack/router-plugin": "^1.120.3", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "^14.6.1", + "@testing-library/jest-dom": "catalog:", + "@testing-library/react": "catalog:", + "@testing-library/user-event": "catalog:", "@types/luxon": "^3.7.1", "@types/node": "^25.6.0", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.1", - "jsdom": "^26.1.0", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@vitejs/plugin-react": "catalog:", + "jsdom": "catalog:", "openapi-typescript": "^7.8.0", - "typescript": "~6.0.2", - "vite": "^8.0.10", - "vitest": "^3.2.3" + "typescript": "catalog:", + "vite": "catalog:", + "vitest": "catalog:" } } diff --git a/packages/web/src/api/client.ts b/packages/web/src/api/client.ts index 69e4ff7..7652996 100644 --- a/packages/web/src/api/client.ts +++ b/packages/web/src/api/client.ts @@ -1,6 +1,6 @@ +import createClient from "openapi-fetch"; import { loadConfig } from "@/lib/config"; import { httpFetch } from "@/lib/http"; -import createClient from "openapi-fetch"; import type { paths } from "./schema.d.ts"; export function createHonchoClient() { diff --git a/packages/web/src/components/chat/ChatPage.tsx b/packages/web/src/components/chat/ChatPage.tsx index b87a12b..cbc3b69 100644 --- a/packages/web/src/components/chat/ChatPage.tsx +++ b/packages/web/src/components/chat/ChatPage.tsx @@ -1,12 +1,12 @@ +import { Link, useParams } from "@tanstack/react-router"; +import { AnimatePresence, motion } from "framer-motion"; +import { Brain, Send } from "lucide-react"; +import { useEffect, useRef, useState } from "react"; import { useChat } from "@/api/queries"; import { LoadingSpinner } from "@/components/shared/LoadingSpinner"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/input"; import { SectionHeading } from "@/components/ui/typography"; -import { Link, useParams } from "@tanstack/react-router"; -import { AnimatePresence, motion } from "framer-motion"; -import { Brain, Send } from "lucide-react"; -import { useEffect, useRef, useState } from "react"; interface Message { id: string; diff --git a/packages/web/src/components/conclusions/ConclusionBrowser.tsx b/packages/web/src/components/conclusions/ConclusionBrowser.tsx index 6dfddd4..2927315 100644 --- a/packages/web/src/components/conclusions/ConclusionBrowser.tsx +++ b/packages/web/src/components/conclusions/ConclusionBrowser.tsx @@ -1,3 +1,8 @@ +import { Link, useParams } from "@tanstack/react-router"; +import { AnimatePresence, motion } from "framer-motion"; +import { ArrowLeft, Eye, Lightbulb, Plus, Search, Trash2, X } from "lucide-react"; +import { useMemo, useState } from "react"; +import { z } from "zod"; import { useConclusions, useCreateConclusion, @@ -18,18 +23,13 @@ import { Input, Textarea } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Body, Caption, MonoCaption, Muted, PageTitle } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import { Link, useParams } from "@tanstack/react-router"; -import { AnimatePresence, motion } from "framer-motion"; -import { ArrowLeft, Eye, Lightbulb, Plus, Search, Trash2, X } from "lucide-react"; -import { useMemo, useState } from "react"; -import { z } from "zod"; type Conclusion = components["schemas"]["Conclusion"]; const createSchema = z.object({ - observer_id: z.string().min(1, "Observer peer ID is required"), - observed_id: z.string().min(1, "Observed peer ID is required"), - content: z.string().min(1, "Content is required"), + observer_id: z.string().min(1, { message: "Observer peer ID is required" }), + observed_id: z.string().min(1, { message: "Observed peer ID is required" }), + content: z.string().min(1, { message: "Content is required" }), session_id: z.string().optional(), }); @@ -348,7 +348,7 @@ function CreateConclusionModal({ const result = createSchema.safeParse(fields); if (!result.success) { const errs: Record = {}; - for (const issue of result.error.errors) errs[issue.path[0] as string] = issue.message; + for (const issue of result.error.issues) errs[issue.path[0] as string] = issue.message; setValidationErrors(errs); return; } diff --git a/packages/web/src/components/dashboard/Dashboard.tsx b/packages/web/src/components/dashboard/Dashboard.tsx index d991881..ba7c8fd 100644 --- a/packages/web/src/components/dashboard/Dashboard.tsx +++ b/packages/web/src/components/dashboard/Dashboard.tsx @@ -1,3 +1,7 @@ +import { Link } from "@tanstack/react-router"; +import { motion } from "framer-motion"; +import { Activity, Boxes, ChevronRight, CircleDot, LayoutDashboard } from "lucide-react"; +import { useState } from "react"; import { useQueueStatus, useWorkspaces } from "@/api/queries"; import type { components } from "@/api/schema.d.ts"; import { ErrorAlert } from "@/components/shared/ErrorAlert"; @@ -5,10 +9,6 @@ import { PageLoader } from "@/components/shared/LoadingSpinner"; import { Body, Muted, PageTitle, SectionHeading } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; import { formatCount } from "@/lib/utils"; -import { Link } from "@tanstack/react-router"; -import { motion } from "framer-motion"; -import { Activity, Boxes, ChevronRight, CircleDot, LayoutDashboard } from "lucide-react"; -import { useState } from "react"; type QueueStatus = components["schemas"]["QueueStatus"]; diff --git a/packages/web/src/components/layout/Sidebar.tsx b/packages/web/src/components/layout/Sidebar.tsx index 42c29db..4b94e68 100644 --- a/packages/web/src/components/layout/Sidebar.tsx +++ b/packages/web/src/components/layout/Sidebar.tsx @@ -1,9 +1,9 @@ -import { useTheme } from "@/hooks/useTheme"; -import { loadConfig } from "@/lib/config"; -import { COLOR } from "@/lib/constants"; import { Link, useMatchRoute } from "@tanstack/react-router"; import { motion } from "framer-motion"; import { Boxes, Brain, ChevronRight, LayoutDashboard, Moon, Settings, Sun } from "lucide-react"; +import { useTheme } from "@/hooks/useTheme"; +import { loadConfig } from "@/lib/config"; +import { COLOR } from "@/lib/constants"; const navItems = [ { to: "/" as const, label: "Dashboard", icon: LayoutDashboard, exact: true }, diff --git a/packages/web/src/components/peers/PeerDetail.tsx b/packages/web/src/components/peers/PeerDetail.tsx index 5c1e140..ce75bee 100644 --- a/packages/web/src/components/peers/PeerDetail.tsx +++ b/packages/web/src/components/peers/PeerDetail.tsx @@ -1,3 +1,17 @@ +import { Link, useNavigate, useParams } from "@tanstack/react-router"; +import { AnimatePresence, motion } from "framer-motion"; +import { + ChevronDown, + Eye, + EyeOff, + MessageCircle, + Save, + Search, + User, + Users, + X, +} from "lucide-react"; +import { useState } from "react"; import { usePeer, usePeerCard, @@ -23,20 +37,6 @@ import { SectionHeading, } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import { Link, useNavigate, useParams } from "@tanstack/react-router"; -import { AnimatePresence, motion } from "framer-motion"; -import { - ChevronDown, - Eye, - EyeOff, - MessageCircle, - Save, - Search, - User, - Users, - X, -} from "lucide-react"; -import { useState } from "react"; export function PeerDetail() { const { workspaceId, peerId } = useParams({ strict: false }) as { diff --git a/packages/web/src/components/peers/PeerList.tsx b/packages/web/src/components/peers/PeerList.tsx index f88dfbb..f4a7b05 100644 --- a/packages/web/src/components/peers/PeerList.tsx +++ b/packages/web/src/components/peers/PeerList.tsx @@ -1,3 +1,7 @@ +import { Link, useNavigate, useParams } from "@tanstack/react-router"; +import { motion, type Variants } from "framer-motion"; +import { ArrowLeft, ChevronRight, Clock, Eye, Users } from "lucide-react"; +import { useMemo, useState } from "react"; import { usePeers } from "@/api/queries"; import type { components } from "@/api/schema.d.ts"; import { EmptyState } from "@/components/shared/EmptyState"; @@ -8,10 +12,6 @@ import { Pagination } from "@/components/shared/Pagination"; import { SortControl, type SortDir } from "@/components/shared/SortControl"; import { MonoCaption, PageTitle } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import { Link, useNavigate, useParams } from "@tanstack/react-router"; -import { type Variants, motion } from "framer-motion"; -import { ArrowLeft, ChevronRight, Clock, Eye, Users } from "lucide-react"; -import { useMemo, useState } from "react"; type Peer = components["schemas"]["Peer"]; diff --git a/packages/web/src/components/sessions/SessionDetail.tsx b/packages/web/src/components/sessions/SessionDetail.tsx index 2192891..773745c 100644 --- a/packages/web/src/components/sessions/SessionDetail.tsx +++ b/packages/web/src/components/sessions/SessionDetail.tsx @@ -1,3 +1,7 @@ +import { Link, useNavigate, useParams } from "@tanstack/react-router"; +import { AnimatePresence, motion } from "framer-motion"; +import { AlignLeft, Clock, Copy, MessageSquare, Search, Trash2, Users, X } from "lucide-react"; +import { useState } from "react"; import { useAddPeersToSession, useCloneSession, @@ -26,10 +30,6 @@ import { PageTitle, SectionHeading, } from "@/components/ui/typography"; -import { Link, useNavigate, useParams } from "@tanstack/react-router"; -import { AnimatePresence, motion } from "framer-motion"; -import { AlignLeft, Clock, Copy, MessageSquare, Search, Trash2, Users, X } from "lucide-react"; -import { useState } from "react"; type Message = components["schemas"]["Message"]; type SessionSummaries = components["schemas"]["SessionSummaries"]; diff --git a/packages/web/src/components/sessions/SessionList.tsx b/packages/web/src/components/sessions/SessionList.tsx index ba3219a..63ef374 100644 --- a/packages/web/src/components/sessions/SessionList.tsx +++ b/packages/web/src/components/sessions/SessionList.tsx @@ -1,3 +1,7 @@ +import { Link, useNavigate, useParams } from "@tanstack/react-router"; +import { motion, type Variants } from "framer-motion"; +import { ArrowLeft, ChevronRight, CircleDot, Clock, MessageSquare } from "lucide-react"; +import { useMemo, useState } from "react"; import { useSessions } from "@/api/queries"; import type { components } from "@/api/schema.d.ts"; import { EmptyState } from "@/components/shared/EmptyState"; @@ -7,10 +11,6 @@ import { Pagination } from "@/components/shared/Pagination"; import { SortControl, type SortDir } from "@/components/shared/SortControl"; import { MonoCaption, PageTitle } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import { Link, useNavigate, useParams } from "@tanstack/react-router"; -import { type Variants, motion } from "framer-motion"; -import { ArrowLeft, ChevronRight, CircleDot, Clock, MessageSquare } from "lucide-react"; -import { useMemo, useState } from "react"; type Session = components["schemas"]["Session"]; diff --git a/packages/web/src/components/settings/SettingsForm.tsx b/packages/web/src/components/settings/SettingsForm.tsx index 8a74120..82908dc 100644 --- a/packages/web/src/components/settings/SettingsForm.tsx +++ b/packages/web/src/components/settings/SettingsForm.tsx @@ -1,19 +1,19 @@ +import { AnimatePresence, motion } from "framer-motion"; +import { AlertCircle, CheckCircle, Loader, Lock, LockOpen, Wifi, WifiOff } from "lucide-react"; +import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input, Textarea } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Muted } from "@/components/ui/typography"; import { type Config, - type HealthStatus, checkConnection, configSchema, + type HealthStatus, loadConfig, saveConfig, } from "@/lib/config"; import { COLOR } from "@/lib/constants"; -import { AnimatePresence, motion } from "framer-motion"; -import { AlertCircle, CheckCircle, Loader, Lock, LockOpen, Wifi, WifiOff } from "lucide-react"; -import { useState } from "react"; interface SettingsFormProps { onSaved?: () => void; diff --git a/packages/web/src/components/shared/ConfirmDialog.tsx b/packages/web/src/components/shared/ConfirmDialog.tsx index 0025f0b..4d993cf 100644 --- a/packages/web/src/components/shared/ConfirmDialog.tsx +++ b/packages/web/src/components/shared/ConfirmDialog.tsx @@ -1,3 +1,4 @@ +import { AlertTriangle } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -7,7 +8,6 @@ import { DialogTitle, } from "@/components/ui/dialog"; import { COLOR } from "@/lib/constants"; -import { AlertTriangle } from "lucide-react"; interface ConfirmDialogProps { open: boolean; diff --git a/packages/web/src/components/shared/EmptyState.tsx b/packages/web/src/components/shared/EmptyState.tsx index 8e2e587..1e6b208 100644 --- a/packages/web/src/components/shared/EmptyState.tsx +++ b/packages/web/src/components/shared/EmptyState.tsx @@ -1,7 +1,7 @@ -import { Body, Caption } from "@/components/ui/typography"; -import { COLOR } from "@/lib/constants"; import { motion } from "framer-motion"; import type { LucideIcon } from "lucide-react"; +import { Body, Caption } from "@/components/ui/typography"; +import { COLOR } from "@/lib/constants"; interface EmptyStateProps { icon?: LucideIcon; diff --git a/packages/web/src/components/shared/LoadingSpinner.tsx b/packages/web/src/components/shared/LoadingSpinner.tsx index 7ca3282..9436c46 100644 --- a/packages/web/src/components/shared/LoadingSpinner.tsx +++ b/packages/web/src/components/shared/LoadingSpinner.tsx @@ -1,5 +1,5 @@ -import { COLOR } from "@/lib/constants"; import { motion } from "framer-motion"; +import { COLOR } from "@/lib/constants"; interface LoadingSpinnerProps { size?: "sm" | "md" | "lg"; diff --git a/packages/web/src/components/shared/MarkdownRenderer.tsx b/packages/web/src/components/shared/MarkdownRenderer.tsx index 9654740..c9842d5 100644 --- a/packages/web/src/components/shared/MarkdownRenderer.tsx +++ b/packages/web/src/components/shared/MarkdownRenderer.tsx @@ -1,9 +1,9 @@ -import { TimestampChip } from "@/components/shared/TimestampChip"; -import { COLOR } from "@/lib/constants"; import { Link } from "@tanstack/react-router"; import { DateTime } from "luxon"; import ReactMarkdown, { type Components } from "react-markdown"; import remarkGfm from "remark-gfm"; +import { TimestampChip } from "@/components/shared/TimestampChip"; +import { COLOR } from "@/lib/constants"; // ─── Types ──────────────────────────────────────────────────────────────────── diff --git a/packages/web/src/components/shared/PeerCardViewer.tsx b/packages/web/src/components/shared/PeerCardViewer.tsx index 4d58742..7a61b12 100644 --- a/packages/web/src/components/shared/PeerCardViewer.tsx +++ b/packages/web/src/components/shared/PeerCardViewer.tsx @@ -1,8 +1,8 @@ +import { ChevronDown } from "lucide-react"; +import { useState } from "react"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; import { COLOR } from "@/lib/constants"; import { cn } from "@/lib/utils"; -import { ChevronDown } from "lucide-react"; -import { useState } from "react"; interface Props { lines: string[]; diff --git a/packages/web/src/components/shared/SortControl.tsx b/packages/web/src/components/shared/SortControl.tsx index a5f884e..6491b7b 100644 --- a/packages/web/src/components/shared/SortControl.tsx +++ b/packages/web/src/components/shared/SortControl.tsx @@ -1,5 +1,5 @@ -import { COLOR } from "@/lib/constants"; import { ArrowDown, ArrowUp } from "lucide-react"; +import { COLOR } from "@/lib/constants"; export type SortDir = "asc" | "desc"; diff --git a/packages/web/src/components/shared/TimestampChip.tsx b/packages/web/src/components/shared/TimestampChip.tsx index f89bb17..b7a7190 100644 --- a/packages/web/src/components/shared/TimestampChip.tsx +++ b/packages/web/src/components/shared/TimestampChip.tsx @@ -1,6 +1,6 @@ +import { DateTime } from "luxon"; import { COLOR } from "@/lib/constants"; import { cn } from "@/lib/utils"; -import { DateTime } from "luxon"; interface Props { /** ISO-like string: "2026-04-24 18:18:48" or any Luxon-parseable string */ diff --git a/packages/web/src/components/ui/badge.tsx b/packages/web/src/components/ui/badge.tsx index 9745913..dd9a69f 100644 --- a/packages/web/src/components/ui/badge.tsx +++ b/packages/web/src/components/ui/badge.tsx @@ -1,6 +1,6 @@ -import { cn } from "@/lib/utils"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import type { HTMLAttributes } from "react"; +import { cn } from "@/lib/utils"; const badgeVariants = cva( "inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium transition-colors", diff --git a/packages/web/src/components/ui/button.tsx b/packages/web/src/components/ui/button.tsx index 2472764..81c4775 100644 --- a/packages/web/src/components/ui/button.tsx +++ b/packages/web/src/components/ui/button.tsx @@ -1,7 +1,7 @@ -import { cn } from "@/lib/utils"; import { Slot } from "@radix-ui/react-slot"; -import { type VariantProps, cva } from "class-variance-authority"; +import { cva, type VariantProps } from "class-variance-authority"; import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; const buttonVariants = cva( [ diff --git a/packages/web/src/components/ui/card.tsx b/packages/web/src/components/ui/card.tsx index ddc43e0..a6bc774 100644 --- a/packages/web/src/components/ui/card.tsx +++ b/packages/web/src/components/ui/card.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/lib/utils"; import type { HTMLAttributes } from "react"; +import { cn } from "@/lib/utils"; export function Card({ className, ...props }: HTMLAttributes) { return ( diff --git a/packages/web/src/components/ui/collapsible.tsx b/packages/web/src/components/ui/collapsible.tsx index bd09ade..a54984b 100644 --- a/packages/web/src/components/ui/collapsible.tsx +++ b/packages/web/src/components/ui/collapsible.tsx @@ -6,4 +6,4 @@ const Collapsible = CollapsiblePrimitive.Root; const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger; const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent; -export { Collapsible, CollapsibleTrigger, CollapsibleContent }; +export { Collapsible, CollapsibleContent, CollapsibleTrigger }; diff --git a/packages/web/src/components/ui/dialog.tsx b/packages/web/src/components/ui/dialog.tsx index eda2e47..b318904 100644 --- a/packages/web/src/components/ui/dialog.tsx +++ b/packages/web/src/components/ui/dialog.tsx @@ -1,7 +1,7 @@ -import { cn } from "@/lib/utils"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { X } from "lucide-react"; import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; export const Dialog = DialogPrimitive.Root; export const DialogTrigger = DialogPrimitive.Trigger; diff --git a/packages/web/src/components/ui/input.tsx b/packages/web/src/components/ui/input.tsx index 47bed78..b2d6d12 100644 --- a/packages/web/src/components/ui/input.tsx +++ b/packages/web/src/components/ui/input.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/lib/utils"; import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; export type InputProps = React.InputHTMLAttributes; diff --git a/packages/web/src/components/ui/label.tsx b/packages/web/src/components/ui/label.tsx index 96a7016..ca78a0b 100644 --- a/packages/web/src/components/ui/label.tsx +++ b/packages/web/src/components/ui/label.tsx @@ -1,6 +1,6 @@ -import { cn } from "@/lib/utils"; import * as LabelPrimitive from "@radix-ui/react-label"; import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; export const Label = forwardRef< React.ComponentRef, diff --git a/packages/web/src/components/ui/separator.tsx b/packages/web/src/components/ui/separator.tsx index e81b53e..dd9a97e 100644 --- a/packages/web/src/components/ui/separator.tsx +++ b/packages/web/src/components/ui/separator.tsx @@ -1,6 +1,6 @@ -import { cn } from "@/lib/utils"; import * as SeparatorPrimitive from "@radix-ui/react-separator"; import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; export const Separator = forwardRef< React.ComponentRef, diff --git a/packages/web/src/components/ui/table.tsx b/packages/web/src/components/ui/table.tsx index a8e826e..554cdc1 100644 --- a/packages/web/src/components/ui/table.tsx +++ b/packages/web/src/components/ui/table.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/lib/utils"; import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; export const Table = forwardRef>( ({ className, ...props }, ref) => ( diff --git a/packages/web/src/components/ui/tooltip.tsx b/packages/web/src/components/ui/tooltip.tsx index edc9776..9b3273a 100644 --- a/packages/web/src/components/ui/tooltip.tsx +++ b/packages/web/src/components/ui/tooltip.tsx @@ -1,5 +1,5 @@ -import { cn } from "@/lib/utils"; import * as TooltipPrimitive from "@radix-ui/react-tooltip"; +import { cn } from "@/lib/utils"; export const TooltipProvider = TooltipPrimitive.Provider; export const Tooltip = TooltipPrimitive.Root; diff --git a/packages/web/src/components/workspaces/ScheduleDreamModal.tsx b/packages/web/src/components/workspaces/ScheduleDreamModal.tsx index 63ff64d..1f76b9a 100644 --- a/packages/web/src/components/workspaces/ScheduleDreamModal.tsx +++ b/packages/web/src/components/workspaces/ScheduleDreamModal.tsx @@ -1,15 +1,15 @@ +import type { UseMutationResult } from "@tanstack/react-query"; +import { useState } from "react"; +import { z } from "zod"; import { FormModal } from "@/components/shared/FormModal"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Caption } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import type { UseMutationResult } from "@tanstack/react-query"; -import { useState } from "react"; -import { z } from "zod"; const schema = z.object({ - observer: z.string().min(1, "Observer peer ID is required"), + observer: z.string().min(1, { message: "Observer peer ID is required" }), observed: z.string().optional(), session_id: z.string().optional(), }); @@ -46,7 +46,7 @@ export function ScheduleDreamModal({ open, onClose, mutation }: Props) { session_id: sessionId || undefined, }); if (!result.success) { - setValidationError(result.error.errors[0].message); + setValidationError(result.error.issues[0].message); return; } await mutation.mutateAsync({ diff --git a/packages/web/src/components/workspaces/WebhookManager.tsx b/packages/web/src/components/workspaces/WebhookManager.tsx index 9465fb1..459da22 100644 --- a/packages/web/src/components/workspaces/WebhookManager.tsx +++ b/packages/web/src/components/workspaces/WebhookManager.tsx @@ -1,3 +1,9 @@ +import { Link } from "@tanstack/react-router"; +import { open } from "@tauri-apps/plugin-shell"; +import { AnimatePresence, motion } from "framer-motion"; +import { ArrowLeft, ExternalLink, Plus, Trash2, Webhook, Zap } from "lucide-react"; +import { useState } from "react"; +import { z } from "zod"; import { useCreateWebhook, useDeleteWebhook, useTestWebhook, useWebhooks } from "@/api/queries"; import { ConfirmDialog } from "@/components/shared/ConfirmDialog"; import { ErrorAlert } from "@/components/shared/ErrorAlert"; @@ -6,14 +12,8 @@ import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Body, Muted, PageTitle, SectionHeading } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import { Link } from "@tanstack/react-router"; -import { open } from "@tauri-apps/plugin-shell"; -import { AnimatePresence, motion } from "framer-motion"; -import { ArrowLeft, ExternalLink, Plus, Trash2, Webhook, Zap } from "lucide-react"; -import { useState } from "react"; -import { z } from "zod"; -const urlSchema = z.string().url("Must be a valid URL"); +const urlSchema = z.string().url({ message: "Must be a valid URL" }); interface Props { workspaceId: string; @@ -34,7 +34,7 @@ export function WebhookManager({ workspaceId }: Props) { e.preventDefault(); const result = urlSchema.safeParse(url); if (!result.success) { - setUrlError(result.error.errors[0].message); + setUrlError(result.error.issues[0].message); return; } await createWebhook.mutateAsync(url); diff --git a/packages/web/src/components/workspaces/WorkspaceDetail.tsx b/packages/web/src/components/workspaces/WorkspaceDetail.tsx index 9c77f0c..a2ae2a4 100644 --- a/packages/web/src/components/workspaces/WorkspaceDetail.tsx +++ b/packages/web/src/components/workspaces/WorkspaceDetail.tsx @@ -1,12 +1,3 @@ -import { useDeleteWorkspace, useQueueStatus, useScheduleDream, useWorkspace } from "@/api/queries"; -import { ConfirmDialog } from "@/components/shared/ConfirmDialog"; -import { ErrorAlert } from "@/components/shared/ErrorAlert"; -import { JsonViewer } from "@/components/shared/JsonViewer"; -import { PageLoader } from "@/components/shared/LoadingSpinner"; -import { Button } from "@/components/ui/button"; -import { Body, Caption, PageTitle, SectionHeading } from "@/components/ui/typography"; -import { ScheduleDreamModal } from "@/components/workspaces/ScheduleDreamModal"; -import { COLOR } from "@/lib/constants"; import { Link, useNavigate, useParams } from "@tanstack/react-router"; import { AnimatePresence, motion } from "framer-motion"; import { @@ -22,6 +13,15 @@ import { Zap, } from "lucide-react"; import { useState } from "react"; +import { useDeleteWorkspace, useQueueStatus, useScheduleDream, useWorkspace } from "@/api/queries"; +import { ConfirmDialog } from "@/components/shared/ConfirmDialog"; +import { ErrorAlert } from "@/components/shared/ErrorAlert"; +import { JsonViewer } from "@/components/shared/JsonViewer"; +import { PageLoader } from "@/components/shared/LoadingSpinner"; +import { Button } from "@/components/ui/button"; +import { Body, Caption, PageTitle, SectionHeading } from "@/components/ui/typography"; +import { ScheduleDreamModal } from "@/components/workspaces/ScheduleDreamModal"; +import { COLOR } from "@/lib/constants"; const NAV_SECTIONS = [ { diff --git a/packages/web/src/components/workspaces/WorkspaceList.tsx b/packages/web/src/components/workspaces/WorkspaceList.tsx index 5d1afbf..1cb9c9f 100644 --- a/packages/web/src/components/workspaces/WorkspaceList.tsx +++ b/packages/web/src/components/workspaces/WorkspaceList.tsx @@ -1,3 +1,7 @@ +import { useNavigate } from "@tanstack/react-router"; +import { motion, type Variants } from "framer-motion"; +import { Boxes, ChevronRight, Clock } from "lucide-react"; +import { useMemo, useState } from "react"; import { useWorkspaces } from "@/api/queries"; import type { components } from "@/api/schema.d.ts"; import { EmptyState } from "@/components/shared/EmptyState"; @@ -7,10 +11,6 @@ import { Pagination } from "@/components/shared/Pagination"; import { SortControl, type SortDir } from "@/components/shared/SortControl"; import { MonoCaption, Muted, PageTitle } from "@/components/ui/typography"; import { COLOR } from "@/lib/constants"; -import { useNavigate } from "@tanstack/react-router"; -import { type Variants, motion } from "framer-motion"; -import { Boxes, ChevronRight, Clock } from "lucide-react"; -import { useMemo, useState } from "react"; type Workspace = components["schemas"]["Workspace"]; diff --git a/packages/web/src/hooks/useTheme.ts b/packages/web/src/hooks/useTheme.ts index ceb8a7f..7374c22 100644 --- a/packages/web/src/hooks/useTheme.ts +++ b/packages/web/src/hooks/useTheme.ts @@ -1,5 +1,5 @@ -import { type Theme, applyTheme, getStoredTheme } from "@/lib/theme"; import { useEffect, useState } from "react"; +import { applyTheme, getStoredTheme, type Theme } from "@/lib/theme"; export function useTheme() { const [theme, setTheme] = useState(() => getStoredTheme()); diff --git a/packages/web/src/index.css b/packages/web/src/index.css index 0616bc9..47566f0 100644 --- a/packages/web/src/index.css +++ b/packages/web/src/index.css @@ -87,7 +87,9 @@ body { background: var(--bg); color: var(--text-1); -webkit-font-smoothing: antialiased; - transition: background 0.2s ease, color 0.2s ease; + transition: + background 0.2s ease, + color 0.2s ease; } #root { @@ -101,7 +103,8 @@ body::before { content: ""; position: fixed; inset: 0; - background-image: linear-gradient(var(--grid-line) 1px, transparent 1px), + background-image: + linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px); background-size: 32px 32px; pointer-events: none; diff --git a/packages/web/src/lib/config.ts b/packages/web/src/lib/config.ts index 3092268..9c63fca 100644 --- a/packages/web/src/lib/config.ts +++ b/packages/web/src/lib/config.ts @@ -1,10 +1,10 @@ -import { httpFetch } from "@/lib/http"; import { z } from "zod"; +import { httpFetch } from "@/lib/http"; const CONFIG_KEY = "openconcho:config"; export const configSchema = z.object({ - baseUrl: z.string().url("Must be a valid URL"), + baseUrl: z.string().url({ message: "Must be a valid URL" }), token: z.string().optional().default(""), }); diff --git a/packages/web/src/main.tsx b/packages/web/src/main.tsx index 3c016bb..6dc7e15 100644 --- a/packages/web/src/main.tsx +++ b/packages/web/src/main.tsx @@ -1,5 +1,5 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { RouterProvider, createRouter } from "@tanstack/react-router"; +import { createRouter, RouterProvider } from "@tanstack/react-router"; import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import { routeTree } from "./routeTree.gen"; diff --git a/packages/web/src/routes/__root.tsx b/packages/web/src/routes/__root.tsx index 6b346ec..09d4a40 100644 --- a/packages/web/src/routes/__root.tsx +++ b/packages/web/src/routes/__root.tsx @@ -1,8 +1,8 @@ +import { createRootRoute, Outlet, useRouter } from "@tanstack/react-router"; +import { useEffect } from "react"; import { Sidebar } from "@/components/layout/Sidebar"; import { loadConfig } from "@/lib/config"; import { applyTheme, getStoredTheme } from "@/lib/theme"; -import { Outlet, createRootRoute, useRouter } from "@tanstack/react-router"; -import { useEffect } from "react"; function RootLayout() { const config = loadConfig(); diff --git a/packages/web/src/routes/index.tsx b/packages/web/src/routes/index.tsx index 5cc72d0..16d99bf 100644 --- a/packages/web/src/routes/index.tsx +++ b/packages/web/src/routes/index.tsx @@ -1,5 +1,5 @@ -import { Dashboard } from "@/components/dashboard/Dashboard"; import { createFileRoute } from "@tanstack/react-router"; +import { Dashboard } from "@/components/dashboard/Dashboard"; export const Route = createFileRoute("/")({ component: Dashboard, diff --git a/packages/web/src/routes/settings.tsx b/packages/web/src/routes/settings.tsx index 0edcc72..7d16b92 100644 --- a/packages/web/src/routes/settings.tsx +++ b/packages/web/src/routes/settings.tsx @@ -1,7 +1,7 @@ -import { SettingsForm } from "@/components/settings/SettingsForm"; import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { motion } from "framer-motion"; import { Brain } from "lucide-react"; +import { SettingsForm } from "@/components/settings/SettingsForm"; export const Route = createFileRoute("/settings")({ component: SettingsPage, diff --git a/packages/web/src/routes/workspaces.tsx b/packages/web/src/routes/workspaces.tsx index 29434fc..a117835 100644 --- a/packages/web/src/routes/workspaces.tsx +++ b/packages/web/src/routes/workspaces.tsx @@ -1,5 +1,5 @@ -import { WorkspaceList } from "@/components/workspaces/WorkspaceList"; import { createFileRoute } from "@tanstack/react-router"; +import { WorkspaceList } from "@/components/workspaces/WorkspaceList"; export const Route = createFileRoute("/workspaces")({ component: WorkspaceList, diff --git a/packages/web/src/routes/workspaces_.$workspaceId.tsx b/packages/web/src/routes/workspaces_.$workspaceId.tsx index 7422944..1bfdf14 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId.tsx @@ -1,5 +1,5 @@ -import { WorkspaceDetail } from "@/components/workspaces/WorkspaceDetail"; import { createFileRoute } from "@tanstack/react-router"; +import { WorkspaceDetail } from "@/components/workspaces/WorkspaceDetail"; export const Route = createFileRoute("/workspaces_/$workspaceId")({ component: WorkspaceDetail, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.conclusions.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.conclusions.tsx index 83e7be7..743f8c0 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.conclusions.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.conclusions.tsx @@ -1,5 +1,5 @@ -import { ConclusionBrowser } from "@/components/conclusions/ConclusionBrowser"; import { createFileRoute } from "@tanstack/react-router"; +import { ConclusionBrowser } from "@/components/conclusions/ConclusionBrowser"; export const Route = createFileRoute("/workspaces_/$workspaceId_/conclusions")({ component: ConclusionBrowser, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.peers.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.peers.tsx index 91d195c..9dc043f 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.peers.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.peers.tsx @@ -1,5 +1,5 @@ -import { PeerList } from "@/components/peers/PeerList"; import { createFileRoute } from "@tanstack/react-router"; +import { PeerList } from "@/components/peers/PeerList"; export const Route = createFileRoute("/workspaces_/$workspaceId_/peers")({ component: PeerList, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId.tsx index b82c90d..a679510 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId.tsx @@ -1,5 +1,5 @@ -import { PeerDetail } from "@/components/peers/PeerDetail"; import { createFileRoute } from "@tanstack/react-router"; +import { PeerDetail } from "@/components/peers/PeerDetail"; export const Route = createFileRoute("/workspaces_/$workspaceId_/peers_/$peerId")({ component: PeerDetail, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId_.chat.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId_.chat.tsx index a888163..9958b3e 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId_.chat.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.peers_.$peerId_.chat.tsx @@ -1,5 +1,5 @@ -import { ChatPage } from "@/components/chat/ChatPage"; import { createFileRoute } from "@tanstack/react-router"; +import { ChatPage } from "@/components/chat/ChatPage"; export const Route = createFileRoute("/workspaces_/$workspaceId_/peers_/$peerId_/chat")({ component: ChatPage, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.sessions.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.sessions.tsx index 4c3464f..4eaa1b9 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.sessions.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.sessions.tsx @@ -1,5 +1,5 @@ -import { SessionList } from "@/components/sessions/SessionList"; import { createFileRoute } from "@tanstack/react-router"; +import { SessionList } from "@/components/sessions/SessionList"; export const Route = createFileRoute("/workspaces_/$workspaceId_/sessions")({ component: SessionList, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.sessions_.$sessionId.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.sessions_.$sessionId.tsx index 612cba5..bf1918d 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.sessions_.$sessionId.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.sessions_.$sessionId.tsx @@ -1,5 +1,5 @@ -import { SessionDetail } from "@/components/sessions/SessionDetail"; import { createFileRoute } from "@tanstack/react-router"; +import { SessionDetail } from "@/components/sessions/SessionDetail"; export const Route = createFileRoute("/workspaces_/$workspaceId_/sessions_/$sessionId")({ component: SessionDetail, diff --git a/packages/web/src/routes/workspaces_.$workspaceId_.webhooks.tsx b/packages/web/src/routes/workspaces_.$workspaceId_.webhooks.tsx index 25fdae4..49992e2 100644 --- a/packages/web/src/routes/workspaces_.$workspaceId_.webhooks.tsx +++ b/packages/web/src/routes/workspaces_.$workspaceId_.webhooks.tsx @@ -1,5 +1,5 @@ -import { WebhookManager } from "@/components/workspaces/WebhookManager"; import { createFileRoute, useParams } from "@tanstack/react-router"; +import { WebhookManager } from "@/components/workspaces/WebhookManager"; export const Route = createFileRoute("/workspaces_/$workspaceId_/webhooks")({ component: WebhookManagerPage, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ecc1e47..efdafa2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,54 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + '@biomejs/biome': + specifier: ^2.4.0 + version: 2.4.13 + '@testing-library/jest-dom': + specifier: ^6.6.3 + version: 6.9.1 + '@testing-library/react': + specifier: ^16.3.0 + version: 16.3.2 + '@testing-library/user-event': + specifier: ^14.6.1 + version: 14.6.1 + '@types/react': + specifier: ^19.2.14 + version: 19.2.14 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3 + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.1 + jsdom: + specifier: ^26.1.0 + version: 26.1.0 + react: + specifier: ^19.2.5 + version: 19.2.5 + react-dom: + specifier: ^19.2.5 + version: 19.2.5 + semantic-release: + specifier: ^25.0.0 + version: 25.0.3 + typescript: + specifier: ~6.0.2 + version: 6.0.3 + vite: + specifier: ^8.0.10 + version: 8.0.10 + vitest: + specifier: ^4.0.0 + version: 4.1.5 + zod: + specifier: ^4.0.0 + version: 4.3.6 + pnpmfileChecksum: sha256-ydJTFr6FrOBc5jf3fgLrvekrIAakbLYehz+yIYEn1I0= importers: @@ -11,29 +59,38 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: ^1.9.4 - version: 1.9.4 + specifier: 'catalog:' + version: 2.4.13 + '@commitlint/cli': + specifier: ~20.5.2 + version: 20.5.2(@types/node@25.6.0)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3) + '@commitlint/config-conventional': + specifier: ~20.5.0 + version: 20.5.0 '@semantic-release/changelog': specifier: ^6.0.0 - version: 6.0.3(semantic-release@24.2.9(typescript@6.0.3)) + version: 6.0.3(semantic-release@25.0.3(typescript@6.0.3)) '@semantic-release/commit-analyzer': specifier: ^13.0.0 - version: 13.0.1(semantic-release@24.2.9(typescript@6.0.3)) + version: 13.0.1(semantic-release@25.0.3(typescript@6.0.3)) '@semantic-release/exec': specifier: ^7.1.0 - version: 7.1.0(semantic-release@24.2.9(typescript@6.0.3)) + version: 7.1.0(semantic-release@25.0.3(typescript@6.0.3)) '@semantic-release/git': specifier: ^10.0.0 - version: 10.0.1(semantic-release@24.2.9(typescript@6.0.3)) + version: 10.0.1(semantic-release@25.0.3(typescript@6.0.3)) '@semantic-release/github': specifier: ^10.0.0 - version: 10.3.5(semantic-release@24.2.9(typescript@6.0.3)) + version: 10.3.5(semantic-release@25.0.3(typescript@6.0.3)) '@semantic-release/release-notes-generator': specifier: ^14.0.0 - version: 14.1.0(semantic-release@24.2.9(typescript@6.0.3)) + version: 14.1.0(semantic-release@25.0.3(typescript@6.0.3)) + husky: + specifier: ~9.1.7 + version: 9.1.7 semantic-release: - specifier: ^24.0.0 - version: 24.2.9(typescript@6.0.3) + specifier: 'catalog:' + version: 25.0.3(typescript@6.0.3) turbo: specifier: ^2 version: 2.9.6 @@ -111,10 +168,10 @@ importers: specifier: ^0.13.5 version: 0.13.8 react: - specifier: ^19.2.5 + specifier: 'catalog:' version: 19.2.5 react-dom: - specifier: ^19.2.5 + specifier: 'catalog:' version: 19.2.5(react@19.2.5) react-markdown: specifier: ^10.1.0 @@ -129,20 +186,20 @@ importers: specifier: ^4.2.4 version: 4.2.4 zod: - specifier: ^3.24.3 - version: 3.25.76 + specifier: 'catalog:' + version: 4.3.6 devDependencies: '@tanstack/router-plugin': specifier: ^1.120.3 version: 1.167.23(@tanstack/react-router@1.168.23(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)) '@testing-library/jest-dom': - specifier: ^6.6.3 + specifier: 'catalog:' version: 6.9.1 '@testing-library/react': - specifier: ^16.3.0 + specifier: 'catalog:' version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@testing-library/user-event': - specifier: ^14.6.1 + specifier: 'catalog:' version: 14.6.1(@testing-library/dom@10.4.1) '@types/luxon': specifier: ^3.7.1 @@ -151,32 +208,44 @@ importers: specifier: ^25.6.0 version: 25.6.0 '@types/react': - specifier: ^19.2.14 + specifier: 'catalog:' version: 19.2.14 '@types/react-dom': - specifier: ^19.2.3 + specifier: 'catalog:' version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^6.0.1 + specifier: 'catalog:' version: 6.0.1(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)) jsdom: - specifier: ^26.1.0 + specifier: 'catalog:' version: 26.1.0 openapi-typescript: specifier: ^7.8.0 version: 7.13.0(typescript@6.0.3) typescript: - specifier: ~6.0.2 + specifier: 'catalog:' version: 6.0.3 vite: - specifier: ^8.0.10 + specifier: 'catalog:' version: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0) vitest: - specifier: ^3.2.3 - version: 3.2.4(@types/debug@4.1.13)(@types/node@25.6.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.32.0)(tsx@4.21.0) + specifier: 'catalog:' + version: 4.1.5(@types/node@25.6.0)(jsdom@26.1.0)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)) packages: + '@actions/core@3.0.1': + resolution: {integrity: sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==} + + '@actions/exec@3.0.0': + resolution: {integrity: sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==} + + '@actions/http-client@4.0.1': + resolution: {integrity: sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==} + + '@actions/io@3.0.2': + resolution: {integrity: sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==} + '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} @@ -270,59 +339,59 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.4.13': + resolution: {integrity: sha512-gLXOwkOBBg0tr7bDsqlkIh4uFeKuMjxvqsrb1Tukww1iDmHcfr4Uu8MoQxp0Rcte+69+osRNWXwHsu/zxT6XqA==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.4.13': + resolution: {integrity: sha512-2KImO1jhNFBa2oWConyr0x6flxbQpGKv6902uGXpYM62Xyem8U80j441SyUJ8KyngsmKbQjeIv1q2CQfDkNnYg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.4.13': + resolution: {integrity: sha512-BKrJklbaFN4p1Ts4kPBczo+PkbsHQg57kmJ+vON9u2t6uN5okYHaSr7h/MutPCWQgg2lglaWoSmm+zhYW+oOkg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.4.13': + resolution: {integrity: sha512-U5MsuBQW25dXaYtqWWSPM3P96H6Y+fHuja3TQpMNnylocHW0tEbtFTDlUj6oM+YJLntvEkQy4grBvQNUD4+RCg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.4.13': + resolution: {integrity: sha512-NzkUDSqfvMBrPplKgVr3aXLHZ2NEELvvF4vZxXulEylKWIGqlvNEcwUcj9OLrn75TD3lJ/GIqCVlBwd1MZCuYQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.4.13': + resolution: {integrity: sha512-Z601MienRgTBDza/+u2CH3RSrWoXo9rtr8NK6A4KJzqGgfxx+H3VlyLgTJ4sRo40T3pIsqpTmiOQEvYzQvBRvQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.4.13': + resolution: {integrity: sha512-Az3ZZedYRBo9EQzNnD9SxFcR1G5QsGo6VEc2hIyVPZ1rdKwee/7E9oeBBZFpE8Z44ekxsDQBqbiWGW5ShOhUSQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.4.13': + resolution: {integrity: sha512-Px9PS2B5/Q183bUwy/5VHqp3J2lzdOCeVGzMpphYfl8oSa7VDCqenBdqWpy6DCy/en4Rbf/Y1RieZF6dJPcc9A==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.4.13': + resolution: {integrity: sha512-tTcMkXyBrmHi9BfrD2VNHs/5rYIUKETqsBlYOvSAABwBkJhSDVb5e7wPukftsQbO3WzQkXe6kaztC6WtUOXSoQ==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -331,6 +400,87 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@commitlint/cli@20.5.2': + resolution: {integrity: sha512-IXr5xd3IX8SEG936P8gcpozRplkDeDSwJlt8UvoY1winwIy2udTbQ/cOCgbaaxcjdDqVoS29VUcz/wkwnSozbA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@20.5.0': + resolution: {integrity: sha512-t3Ni88rFw1XMa4nZHgOKJ8fIAT9M2j5TnKyTqJzsxea7FUetlNdYFus9dz+MhIRZmc16P0PPyEfh6X2d/qw8SA==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@20.5.0': + resolution: {integrity: sha512-T/Uh6iJUzyx7j35GmHWdIiGRQB+ouZDk0pwAaYq4SXgB54KZhFdJ0vYmxiW6AMYICTIWuyMxDBl1jK74oFp/Gw==} + engines: {node: '>=v18'} + + '@commitlint/ensure@20.5.0': + resolution: {integrity: sha512-IpHqAUesBeW1EDDdjzJeaOxU9tnogLAyXLRBn03SHlj1SGENn2JGZqSWGkFvBJkJzfXAuCNtsoYzax+ZPS+puw==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} + engines: {node: '>=v18'} + + '@commitlint/format@20.5.0': + resolution: {integrity: sha512-TI9EwFU/qZWSK7a5qyXMpKPPv3qta7FO4tKW+Wt2al7sgMbLWTsAcDpX1cU8k16TRdsiiet9aOw0zpvRXNJu7Q==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@20.5.0': + resolution: {integrity: sha512-JWLarAsurHJhPozbuAH6GbP4p/hdOCoqS9zJMfqwswne+/GPs5V0+rrsfOkP68Y8PSLphwtFXV0EzJ+GTXTTGg==} + engines: {node: '>=v18'} + + '@commitlint/lint@20.5.0': + resolution: {integrity: sha512-jiM3hNUdu04jFBf1VgPdjtIPvbuVfDTBAc6L98AWcoLjF5sYqkulBHBzlVWll4rMF1T5zeQFB6r//a+s+BBKlA==} + engines: {node: '>=v18'} + + '@commitlint/load@20.5.2': + resolution: {integrity: sha512-zmr0RGDz7vThxW1I8ohb9yBjnGuH9mqwJpn21hInjGla+IlLOkS9ey0+dD5HlkzFlY0lX2NYdA2lDW6/0rO7Gw==} + engines: {node: '>=v18'} + + '@commitlint/message@20.4.3': + resolution: {integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==} + engines: {node: '>=v18'} + + '@commitlint/parse@20.5.0': + resolution: {integrity: sha512-SeKWHBMk7YOTnnEWUhx+d1a9vHsjjuo6Uo1xRfPNfeY4bdYFasCH1dDpAv13Lyn+dDPOels+jP6D2GRZqzc5fA==} + engines: {node: '>=v18'} + + '@commitlint/read@20.5.0': + resolution: {integrity: sha512-JDEIJ2+GnWpK8QqwfmW7O42h0aycJEWNqcdkJnyzLD11nf9dW2dWLTVEa8Wtlo4IZFGLPATjR5neA5QlOvIH1w==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@20.5.2': + resolution: {integrity: sha512-8EhSCU9eNos/5cI1yg64GW79UH1c64O69AfStCsj4zqy6An/qIphVEXj4/+2M6056T8coz00f+UXFn4WUUP1HQ==} + engines: {node: '>=v18'} + + '@commitlint/rules@20.5.0': + resolution: {integrity: sha512-5NdQXQEdnDPT5pK8O39ZA7HohzPRHEsDGU23cyVCNPQy4WegAbAwrQk3nIu7p2sl3dutPk8RZd91yKTrMTnRkQ==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@20.0.0': + resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} + engines: {node: '>=v18'} + + '@commitlint/top-level@20.4.3': + resolution: {integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==} + engines: {node: '>=v18'} + + '@commitlint/types@20.5.0': + resolution: {integrity: sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==} + engines: {node: '>=v18'} + + '@conventional-changelog/git-client@2.7.0': + resolution: {integrity: sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.4.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} @@ -617,9 +767,6 @@ packages: '@octokit/openapi-types@25.1.0': resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==} - '@octokit/openapi-types@26.0.0': - resolution: {integrity: sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA==} - '@octokit/openapi-types@27.0.0': resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} @@ -629,8 +776,8 @@ packages: peerDependencies: '@octokit/core': '>=6' - '@octokit/plugin-paginate-rest@13.2.1': - resolution: {integrity: sha512-Tj4PkZyIL6eBMYcG/76QGsedF0+dWVeLhYprTmuFVVxzDW7PQh23tM0TP0z+1MvSkxB29YFZwnUX+cXfTiSdyw==} + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' @@ -681,9 +828,6 @@ packages: '@octokit/types@14.1.0': resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} - '@octokit/types@15.0.2': - resolution: {integrity: sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q==} - '@octokit/types@16.0.0': resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} @@ -1118,144 +1262,6 @@ packages: '@rolldown/pluginutils@1.0.0-rc.7': resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} - '@rollup/rollup-android-arm-eabi@4.60.2': - resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.60.2': - resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.60.2': - resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.60.2': - resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.60.2': - resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.60.2': - resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.60.2': - resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.60.2': - resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.60.2': - resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-loong64-musl@4.60.2': - resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-musl@4.60.2': - resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} - cpu: [ppc64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.60.2': - resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.60.2': - resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.60.2': - resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.60.2': - resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-openbsd-x64@4.60.2': - resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} - cpu: [x64] - os: [openbsd] - - '@rollup/rollup-openharmony-arm64@4.60.2': - resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.60.2': - resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.60.2': - resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.60.2': - resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.60.2': - resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==} - cpu: [x64] - os: [win32] - '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} @@ -1297,15 +1303,15 @@ packages: peerDependencies: semantic-release: '>=20.1.0' - '@semantic-release/github@11.0.6': - resolution: {integrity: sha512-ctDzdSMrT3H+pwKBPdyCPty6Y47X8dSrjd3aPZ5KKIKKWTwZBE9De8GtsH3TyAlw3Uyo2stegMx6rJMXKpJwJA==} - engines: {node: '>=20.8.1'} + '@semantic-release/github@12.0.6': + resolution: {integrity: sha512-aYYFkwHW3c6YtHwQF0t0+lAjlU+87NFOZuH2CvWFD0Ylivc7MwhZMiHOJ0FMpIgPpCVib/VUAcOwvrW0KnxQtA==} + engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=24.1.0' - '@semantic-release/npm@12.0.2': - resolution: {integrity: sha512-+M9/Lb35IgnlUO6OSJ40Ie+hUsZLuph2fqXC/qrKn0fMvUU/jiCjpoL6zEm69vzcmaZJ8yNKtMBEKHWN49WBbQ==} - engines: {node: '>=20.8.1'} + '@semantic-release/npm@13.1.5': + resolution: {integrity: sha512-Hq5UxzoatN3LHiq2rTsWS54nCdqJHlsssGERCo8WlvdfFA9LoN0vO+OuKVSjtNapIc/S8C2LBj206wKLHg62mg==} + engines: {node: ^22.14.0 || >= 24.10.0} peerDependencies: semantic-release: '>=20.1.0' @@ -1315,6 +1321,10 @@ packages: peerDependencies: semantic-release: '>=20.1.0' + '@simple-libs/child-process-utils@1.0.2': + resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} + engines: {node: '>=18'} + '@simple-libs/stream-utils@1.2.0': resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} engines: {node: '>=18'} @@ -1331,6 +1341,9 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@tailwindcss/node@4.2.4': resolution: {integrity: sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA==} @@ -1706,34 +1719,34 @@ packages: babel-plugin-react-compiler: optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.1.5': + resolution: {integrity: sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.1.5': + resolution: {integrity: sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.5': + resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.1.5': + resolution: {integrity: sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.1.5': + resolution: {integrity: sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.1.5': + resolution: {integrity: sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.1.5': + resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} @@ -1752,6 +1765,9 @@ packages: resolution: {integrity: sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==} engines: {node: '>=18'} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1780,6 +1796,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + ansis@4.2.0: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} @@ -1854,10 +1874,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1868,8 +1884,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@2.4.2: @@ -1903,10 +1919,6 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - check-error@2.1.3: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} - engines: {node: '>= 16'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -1938,6 +1950,10 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -1971,6 +1987,10 @@ packages: resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} engines: {node: '>=18'} + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} + engines: {node: '>=18'} + conventional-changelog-writer@8.4.0: resolution: {integrity: sha512-HHBFkk1EECxxmCi4CTu091iuDpQv5/OavuCUAuZmrkWpmYfyD816nom1CvtfXJ/uYfAAjavgHvXHX291tSLK8g==} engines: {node: '>=18'} @@ -1998,6 +2018,14 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cosmiconfig-typescript-loader@6.3.0: + resolution: {integrity: sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + cosmiconfig@9.0.1: resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} engines: {node: '>=14'} @@ -2044,10 +2072,6 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -2090,6 +2114,9 @@ packages: electron-to-chromium@1.5.344: resolution: {integrity: sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2119,8 +2146,8 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} @@ -2177,6 +2204,9 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2251,6 +2281,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} @@ -2277,10 +2311,19 @@ packages: git-log-parser@1.2.1: resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} + git-raw-commits@5.0.1: + resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} + engines: {node: '>=18'} + hasBin: true + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + global-directory@5.0.0: + resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} + engines: {node: '>=20'} + globby@14.1.0: resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} @@ -2321,9 +2364,9 @@ packages: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} - hosted-git-info@8.1.0: - resolution: {integrity: sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==} - engines: {node: ^18.17.0 || >=20.5.0} + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + engines: {node: ^20.17.0 || >=22.9.0} html-encoding-sniffer@4.0.0: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} @@ -2352,6 +2395,11 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} + engines: {node: '>=18'} + hasBin: true + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -2389,6 +2437,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} @@ -2487,9 +2539,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -2616,6 +2665,9 @@ packages: lodash-es@4.18.1: resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + lodash.capitalize@4.2.1: resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} @@ -2628,21 +2680,37 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash.uniqby@4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2882,13 +2950,17 @@ packages: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} + normalize-package-data@8.0.0: + resolution: {integrity: sha512-RWk+PI433eESQ7ounYxIp67CYuVsS1uYSonX3kA6ps/3LWfjVQa/ptEg6Y3T6uAMq1mWpX9PQ+qx+QaHpsc7gQ==} + engines: {node: ^20.17.0 || >=22.9.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-url@8.1.1: - resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} - engines: {node: '>=14.16'} + normalize-url@9.0.0: + resolution: {integrity: sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==} + engines: {node: '>=20'} npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -2902,9 +2974,9 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} - npm@10.9.8: - resolution: {integrity: sha512-fYwb6ODSmHkqrJQQaCxY3M2lPf/mpgC7ik0HSzzIwG5CGtabRp4bNqikatvCoT42b5INQSqudVH0R7yVmC9hVg==} - engines: {node: ^18.17.0 || >=20.5.0} + npm@11.13.0: + resolution: {integrity: sha512-cRmhaghDWA1lFgl3Ug4/VxDJdPBK/U+tNtnrl9kXunFqhWw1x4xL5txkNn7qzPuVfvXOmXyjHpMwsuk2uisbkg==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true bundledDependencies: - '@isaacs/string-locale-compare' @@ -2912,6 +2984,7 @@ packages: - '@npmcli/config' - '@npmcli/fs' - '@npmcli/map-workspaces' + - '@npmcli/metavuln-calculator' - '@npmcli/package-json' - '@npmcli/promise-spawn' - '@npmcli/redact' @@ -2922,7 +2995,6 @@ packages: - cacache - chalk - ci-info - - cli-columns - fastest-levenshtein - fs-minipass - glob @@ -2936,7 +3008,6 @@ packages: - libnpmdiff - libnpmexec - libnpmfund - - libnpmhook - libnpmorg - libnpmpack - libnpmpublish @@ -2950,7 +3021,6 @@ packages: - ms - node-gyp - nopt - - normalize-package-data - npm-audit-report - npm-install-checks - npm-package-arg @@ -2974,7 +3044,6 @@ packages: - treeverse - validate-npm-package-name - which - - write-file-atomic nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} @@ -2983,6 +3052,9 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -3105,10 +3177,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3221,6 +3289,14 @@ packages: resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} + read-package-up@12.0.0: + resolution: {integrity: sha512-Q5hMVBYur/eQNWDdbF4/Wqqr9Bjvtrw2kjGxxBbKLbx8bVCL8gcArjTy8zDUuLGQicftpMuU0riQNcAsbtOVsw==} + engines: {node: '>=20'} + + read-pkg@10.1.0: + resolution: {integrity: sha512-I8g2lArQiP78ll51UeMZojewtYgIRCKCWqZEgOO8c/uefTI+XDXvCSXu3+YNUaTNvZzobrL5+SqHjBrByRRTdg==} + engines: {node: '>=20'} + read-pkg@9.0.1: resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} @@ -3280,11 +3356,6 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.60.2: - resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - rrweb-cssom@0.8.0: resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} @@ -3304,16 +3375,11 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - semantic-release@24.2.9: - resolution: {integrity: sha512-phCkJ6pjDi9ANdhuF5ElS10GGdAKY6R1Pvt9lT3SFhOwM4T7QZE7MLpBDbNruUx/Q3gFD92/UOFringGipRqZA==} - engines: {node: '>=20.8.1'} + semantic-release@25.0.3: + resolution: {integrity: sha512-WRgl5GcypwramYX4HV+eQGzUbD7UUbljVmS+5G1uMwX/wLgYuJAxGeerXJDMO2xshng4+FXqCgyB5QfClV6WjA==} + engines: {node: ^22.14.0 || >= 24.10.0} hasBin: true - semver-diff@5.0.0: - resolution: {integrity: sha512-0HbGtOm+S7T6NGQ/pxJSJipJvc4DK3FcRVMRkhsIwJDJ4Jcz5DQC1cPPzB5GhzyHjwttW878HaWQq46CkL3cqg==} - engines: {node: '>=12'} - deprecated: Deprecated as the semver package now supports this built-in. - semver-regex@4.0.5: resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} engines: {node: '>=12'} @@ -3399,8 +3465,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} stream-combiner2@1.1.1: resolution: {integrity: sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==} @@ -3409,6 +3475,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -3419,6 +3489,10 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -3443,9 +3517,6 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -3475,6 +3546,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tailwind-merge@3.5.0: resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} @@ -3510,23 +3585,16 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.1.1: + resolution: {integrity: sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==} + engines: {node: '>=18'} tinyglobby@0.2.16: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} tldts-core@6.1.86: @@ -3566,6 +3634,10 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + turbo@2.9.6: resolution: {integrity: sha512-+v2QJey7ZUeUiuigkU+uFfklvNUyPI2VO2vBpMYJA+a1hKFLFiKtUYlRHdb3P9CrAvMzi0upbjI4WT+zKtqkBg==} hasBin: true @@ -3582,6 +3654,10 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} + engines: {node: '>=20'} + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -3595,6 +3671,14 @@ packages: undici-types@7.19.2: resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + undici@6.25.0: + resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==} + engines: {node: '>=18.17'} + + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} + unicode-emoji-modifier-base@1.0.0: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} @@ -3607,6 +3691,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -3690,51 +3778,6 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite@7.3.2: - resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - 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@8.0.10: resolution: {integrity: sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3778,26 +3821,39 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.5: + resolution: {integrity: sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.5 + '@vitest/browser-preview': 4.1.5 + '@vitest/browser-webdriverio': 4.1.5 + '@vitest/coverage-istanbul': 4.1.5 + '@vitest/coverage-v8': 4.1.5 + '@vitest/ui': 4.1.5 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': optional: true '@vitest/ui': optional: true @@ -3850,6 +3906,10 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + ws@8.20.0: resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} @@ -3891,6 +3951,10 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} @@ -3899,6 +3963,10 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yoctocolors@2.1.2: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} @@ -3906,11 +3974,30 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: + '@actions/core@3.0.1': + dependencies: + '@actions/exec': 3.0.0 + '@actions/http-client': 4.0.1 + + '@actions/exec@3.0.0': + dependencies: + '@actions/io': 3.0.2 + + '@actions/http-client@4.0.1': + dependencies: + tunnel: 0.0.6 + undici: 6.25.0 + + '@actions/io@3.0.2': {} + '@adobe/css-tools@4.4.4': {} '@asamuzakjp/css-color@3.2.0': @@ -4035,44 +4122,167 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.4.13': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 + '@biomejs/cli-darwin-arm64': 2.4.13 + '@biomejs/cli-darwin-x64': 2.4.13 + '@biomejs/cli-linux-arm64': 2.4.13 + '@biomejs/cli-linux-arm64-musl': 2.4.13 + '@biomejs/cli-linux-x64': 2.4.13 + '@biomejs/cli-linux-x64-musl': 2.4.13 + '@biomejs/cli-win32-arm64': 2.4.13 + '@biomejs/cli-win32-x64': 2.4.13 - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64@2.4.13': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.4.13': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.4.13': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.4.13': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.4.13': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.4.13': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.4.13': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.4.13': optional: true '@colors/colors@1.5.0': optional: true + '@commitlint/cli@20.5.2(@types/node@25.6.0)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3)': + dependencies: + '@commitlint/format': 20.5.0 + '@commitlint/lint': 20.5.0 + '@commitlint/load': 20.5.2(@types/node@25.6.0)(typescript@6.0.3) + '@commitlint/read': 20.5.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) + '@commitlint/types': 20.5.0 + tinyexec: 1.1.1 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - conventional-commits-filter + - conventional-commits-parser + - typescript + + '@commitlint/config-conventional@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + conventional-changelog-conventionalcommits: 9.3.1 + + '@commitlint/config-validator@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + ajv: 8.20.0 + + '@commitlint/ensure@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@20.0.0': {} + + '@commitlint/format@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + picocolors: 1.1.1 + + '@commitlint/is-ignored@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + semver: 7.7.4 + + '@commitlint/lint@20.5.0': + dependencies: + '@commitlint/is-ignored': 20.5.0 + '@commitlint/parse': 20.5.0 + '@commitlint/rules': 20.5.0 + '@commitlint/types': 20.5.0 + + '@commitlint/load@20.5.2(@types/node@25.6.0)(typescript@6.0.3)': + dependencies: + '@commitlint/config-validator': 20.5.0 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.5.2 + '@commitlint/types': 20.5.0 + cosmiconfig: 9.0.1(typescript@6.0.3) + cosmiconfig-typescript-loader: 6.3.0(@types/node@25.6.0)(cosmiconfig@9.0.1(typescript@6.0.3))(typescript@6.0.3) + is-plain-obj: 4.1.0 + lodash.mergewith: 4.6.2 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@20.4.3': {} + + '@commitlint/parse@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + conventional-changelog-angular: 8.3.1 + conventional-commits-parser: 6.4.0 + + '@commitlint/read@20.5.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)': + dependencies: + '@commitlint/top-level': 20.4.3 + '@commitlint/types': 20.5.0 + git-raw-commits: 5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) + minimist: 1.2.8 + tinyexec: 1.1.1 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + '@commitlint/resolve-extends@20.5.2': + dependencies: + '@commitlint/config-validator': 20.5.0 + '@commitlint/types': 20.5.0 + global-directory: 5.0.0 + import-meta-resolve: 4.2.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + + '@commitlint/rules@20.5.0': + dependencies: + '@commitlint/ensure': 20.5.0 + '@commitlint/message': 20.4.3 + '@commitlint/to-lines': 20.0.0 + '@commitlint/types': 20.5.0 + + '@commitlint/to-lines@20.0.0': {} + + '@commitlint/top-level@20.4.3': + dependencies: + escalade: 3.2.0 + + '@commitlint/types@20.5.0': + dependencies: + conventional-commits-parser: 6.4.0 + picocolors: 1.1.1 + + '@conventional-changelog/git-client@2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)': + dependencies: + '@simple-libs/child-process-utils': 1.0.2 + '@simple-libs/stream-utils': 1.2.0 + semver: 7.7.4 + optionalDependencies: + conventional-commits-filter: 5.0.0 + conventional-commits-parser: 6.4.0 + '@csstools/color-helpers@5.1.0': {} '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': @@ -4296,8 +4506,6 @@ snapshots: '@octokit/openapi-types@25.1.0': {} - '@octokit/openapi-types@26.0.0': {} - '@octokit/openapi-types@27.0.0': {} '@octokit/plugin-paginate-rest@11.6.0(@octokit/core@6.1.6)': @@ -4305,10 +4513,10 @@ snapshots: '@octokit/core': 6.1.6 '@octokit/types': 13.10.0 - '@octokit/plugin-paginate-rest@13.2.1(@octokit/core@7.0.6)': + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.6)': dependencies: '@octokit/core': 7.0.6 - '@octokit/types': 15.0.2 + '@octokit/types': 16.0.0 '@octokit/plugin-retry@7.2.1(@octokit/core@6.1.6)': dependencies: @@ -4369,10 +4577,6 @@ snapshots: dependencies: '@octokit/openapi-types': 25.1.0 - '@octokit/types@15.0.2': - dependencies: - '@octokit/openapi-types': 26.0.0 - '@octokit/types@16.0.0': dependencies: '@octokit/openapi-types': 27.0.0 @@ -4732,92 +4936,17 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.7': {} - '@rollup/rollup-android-arm-eabi@4.60.2': - optional: true - - '@rollup/rollup-android-arm64@4.60.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.60.2': - optional: true - - '@rollup/rollup-darwin-x64@4.60.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.60.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.60.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.60.2': - optional: true - - '@rollup/rollup-openbsd-x64@4.60.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.60.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.60.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.60.2': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.60.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.60.2': - optional: true - '@sec-ant/readable-stream@0.4.1': {} - '@semantic-release/changelog@6.0.3(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/changelog@6.0.3(semantic-release@25.0.3(typescript@6.0.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 fs-extra: 11.3.4 lodash: 4.18.1 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) - '@semantic-release/commit-analyzer@13.0.1(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/commit-analyzer@13.0.1(semantic-release@25.0.3(typescript@6.0.3))': dependencies: conventional-changelog-angular: 8.3.1 conventional-changelog-writer: 8.4.0 @@ -4827,7 +4956,7 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.18.1 micromatch: 4.0.8 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) transitivePeerDependencies: - supports-color @@ -4835,7 +4964,7 @@ snapshots: '@semantic-release/error@4.0.0': {} - '@semantic-release/exec@7.1.0(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/exec@7.1.0(semantic-release@25.0.3(typescript@6.0.3))': dependencies: '@semantic-release/error': 4.0.0 aggregate-error: 3.1.0 @@ -4843,11 +4972,11 @@ snapshots: execa: 9.6.1 lodash-es: 4.18.1 parse-json: 8.3.0 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) transitivePeerDependencies: - supports-color - '@semantic-release/git@10.0.1(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/git@10.0.1(semantic-release@25.0.3(typescript@6.0.3))': dependencies: '@semantic-release/error': 3.0.0 aggregate-error: 3.1.0 @@ -4857,11 +4986,11 @@ snapshots: lodash: 4.18.1 micromatch: 4.0.8 p-reduce: 2.1.0 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) transitivePeerDependencies: - supports-color - '@semantic-release/github@10.3.5(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/github@10.3.5(semantic-release@25.0.3(typescript@6.0.3))': dependencies: '@octokit/core': 6.1.6 '@octokit/plugin-paginate-rest': 11.6.0(@octokit/core@6.1.6) @@ -4878,15 +5007,15 @@ snapshots: lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/github@11.0.6(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/github@12.0.6(semantic-release@25.0.3(typescript@6.0.3))': dependencies: '@octokit/core': 7.0.6 - '@octokit/plugin-paginate-rest': 13.2.1(@octokit/core@7.0.6) + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.6) '@octokit/plugin-retry': 8.1.0(@octokit/core@7.0.6) '@octokit/plugin-throttling': 11.0.3(@octokit/core@7.0.6) '@semantic-release/error': 4.0.0 @@ -4899,30 +5028,33 @@ snapshots: lodash-es: 4.18.1 mime: 4.1.0 p-filter: 4.1.0 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) tinyglobby: 0.2.16 + undici: 7.25.0 url-join: 5.0.0 transitivePeerDependencies: - supports-color - '@semantic-release/npm@12.0.2(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/npm@13.1.5(semantic-release@25.0.3(typescript@6.0.3))': dependencies: + '@actions/core': 3.0.1 '@semantic-release/error': 4.0.0 aggregate-error: 5.0.0 + env-ci: 11.2.0 execa: 9.6.1 fs-extra: 11.3.4 lodash-es: 4.18.1 nerf-dart: 1.0.0 - normalize-url: 8.1.1 - npm: 10.9.8 + normalize-url: 9.0.0 + npm: 11.13.0 rc: 1.2.8 - read-pkg: 9.0.1 + read-pkg: 10.1.0 registry-auth-token: 5.1.1 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) semver: 7.7.4 tempy: 3.2.0 - '@semantic-release/release-notes-generator@14.1.0(semantic-release@24.2.9(typescript@6.0.3))': + '@semantic-release/release-notes-generator@14.1.0(semantic-release@25.0.3(typescript@6.0.3))': dependencies: conventional-changelog-angular: 8.3.1 conventional-changelog-writer: 8.4.0 @@ -4934,10 +5066,14 @@ snapshots: into-stream: 7.0.0 lodash-es: 4.18.1 read-package-up: 11.0.0 - semantic-release: 24.2.9(typescript@6.0.3) + semantic-release: 25.0.3(typescript@6.0.3) transitivePeerDependencies: - supports-color + '@simple-libs/child-process-utils@1.0.2': + dependencies: + '@simple-libs/stream-utils': 1.2.0 + '@simple-libs/stream-utils@1.2.0': {} '@sindresorhus/is@4.6.0': {} @@ -4946,6 +5082,8 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} + '@standard-schema/spec@1.1.0': {} + '@tailwindcss/node@4.2.4': dependencies: '@jridgewell/remapping': 2.3.5 @@ -5268,47 +5406,46 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.7 vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0) - '@vitest/expect@3.2.4': + '@vitest/expect@4.1.5': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vitest/mocker@3.2.4(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0))': + '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.1.5 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.1.5': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.1.0 - '@vitest/runner@3.2.4': + '@vitest/runner@4.1.5': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.1.5 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.1.5': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.1.5 + '@vitest/utils': 4.1.5 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.1.5': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.1.5': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.1.5 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 acorn@8.16.0: {} @@ -5324,6 +5461,13 @@ snapshots: clean-stack: 5.3.0 indent-string: 5.0.0 + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-colors@4.1.3: {} ansi-escapes@7.3.0: @@ -5344,6 +5488,8 @@ snapshots: ansi-styles@5.2.0: {} + ansi-styles@6.2.3: {} + ansis@4.2.0: {} any-promise@1.3.0: {} @@ -5410,21 +5556,13 @@ snapshots: node-releases: 2.0.38 update-browserslist-db: 1.2.3(browserslist@4.28.2) - cac@6.7.14: {} - callsites@3.1.0: {} caniuse-lite@1.0.30001790: {} ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.3 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.2: {} chalk@2.4.2: dependencies: @@ -5451,8 +5589,6 @@ snapshots: character-reference-invalid@2.0.1: {} - check-error@2.1.3: {} - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -5502,6 +5638,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + clsx@2.1.1: {} color-convert@1.9.3: @@ -5534,6 +5676,10 @@ snapshots: dependencies: compare-func: 2.0.0 + conventional-changelog-conventionalcommits@9.3.1: + dependencies: + compare-func: 2.0.0 + conventional-changelog-writer@8.4.0: dependencies: '@simple-libs/stream-utils': 1.2.0 @@ -5557,6 +5703,13 @@ snapshots: core-util-is@1.0.3: {} + cosmiconfig-typescript-loader@6.3.0(@types/node@25.6.0)(cosmiconfig@9.0.1(typescript@6.0.3))(typescript@6.0.3): + dependencies: + '@types/node': 25.6.0 + cosmiconfig: 9.0.1(typescript@6.0.3) + jiti: 2.6.1 + typescript: 6.0.3 + cosmiconfig@9.0.1(typescript@6.0.3): dependencies: env-paths: 2.2.1 @@ -5602,8 +5755,6 @@ snapshots: dependencies: character-entities: 2.0.2 - deep-eql@5.0.2: {} - deep-extend@0.6.0: {} dequal@2.0.3: {} @@ -5636,6 +5787,8 @@ snapshots: electron-to-chromium@1.5.344: {} + emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} emojilib@2.4.0: {} @@ -5660,7 +5813,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-module-lexer@1.7.0: {} + es-module-lexer@2.1.0: {} esbuild@0.27.7: optionalDependencies: @@ -5760,6 +5913,8 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-uri@3.1.0: {} + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -5820,6 +5975,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.5.0: {} + get-nonce@1.0.1: {} get-stream@6.0.1: {} @@ -5846,10 +6003,22 @@ snapshots: through2: 2.0.5 traverse: 0.6.8 + git-raw-commits@5.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0): + dependencies: + '@conventional-changelog/git-client': 2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 + global-directory@5.0.0: + dependencies: + ini: 6.0.0 + globby@14.1.0: dependencies: '@sindresorhus/merge-streams': 2.3.0 @@ -5908,9 +6077,9 @@ snapshots: dependencies: lru-cache: 10.4.3 - hosted-git-info@8.1.0: + hosted-git-info@9.0.2: dependencies: - lru-cache: 10.4.3 + lru-cache: 11.3.5 html-encoding-sniffer@4.0.0: dependencies: @@ -5938,6 +6107,8 @@ snapshots: human-signals@8.0.1: {} + husky@9.1.7: {} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 @@ -5968,6 +6139,8 @@ snapshots: ini@1.3.8: {} + ini@6.0.0: {} + inline-style-parser@0.2.7: {} into-stream@7.0.0: @@ -6038,8 +6211,6 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -6154,6 +6325,8 @@ snapshots: lodash-es@4.18.1: {} + lodash.camelcase@4.3.0: {} + lodash.capitalize@4.2.1: {} lodash.escaperegexp@4.1.2: {} @@ -6162,16 +6335,26 @@ snapshots: lodash.isstring@4.0.1: {} + lodash.kebabcase@4.1.1: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + lodash.uniqby@4.7.0: {} + lodash.upperfirst@4.3.1: {} + lodash@4.18.1: {} longest-streak@3.1.0: {} - loupe@3.2.1: {} - lru-cache@10.4.3: {} + lru-cache@11.3.5: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -6613,9 +6796,15 @@ snapshots: semver: 7.7.4 validate-npm-package-license: 3.0.4 + normalize-package-data@8.0.0: + dependencies: + hosted-git-info: 9.0.2 + semver: 7.7.4 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} - normalize-url@8.1.1: {} + normalize-url@9.0.0: {} npm-run-path@4.0.1: dependencies: @@ -6630,12 +6819,14 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 - npm@10.9.8: {} + npm@11.13.0: {} nwsapi@2.2.23: {} object-assign@4.1.1: {} + obug@2.1.1: {} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -6748,8 +6939,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - picocolors@1.1.1: {} picomatch@2.3.2: {} @@ -6860,6 +7049,20 @@ snapshots: read-pkg: 9.0.1 type-fest: 4.41.0 + read-package-up@12.0.0: + dependencies: + find-up-simple: 1.0.1 + read-pkg: 10.1.0 + type-fest: 5.6.0 + + read-pkg@10.1.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 8.0.0 + parse-json: 8.3.0 + type-fest: 5.6.0 + unicorn-magic: 0.4.0 + read-pkg@9.0.1: dependencies: '@types/normalize-package-data': 2.4.4 @@ -6958,37 +7161,6 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 - rollup@4.60.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.60.2 - '@rollup/rollup-android-arm64': 4.60.2 - '@rollup/rollup-darwin-arm64': 4.60.2 - '@rollup/rollup-darwin-x64': 4.60.2 - '@rollup/rollup-freebsd-arm64': 4.60.2 - '@rollup/rollup-freebsd-x64': 4.60.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.60.2 - '@rollup/rollup-linux-arm-musleabihf': 4.60.2 - '@rollup/rollup-linux-arm64-gnu': 4.60.2 - '@rollup/rollup-linux-arm64-musl': 4.60.2 - '@rollup/rollup-linux-loong64-gnu': 4.60.2 - '@rollup/rollup-linux-loong64-musl': 4.60.2 - '@rollup/rollup-linux-ppc64-gnu': 4.60.2 - '@rollup/rollup-linux-ppc64-musl': 4.60.2 - '@rollup/rollup-linux-riscv64-gnu': 4.60.2 - '@rollup/rollup-linux-riscv64-musl': 4.60.2 - '@rollup/rollup-linux-s390x-gnu': 4.60.2 - '@rollup/rollup-linux-x64-gnu': 4.60.2 - '@rollup/rollup-linux-x64-musl': 4.60.2 - '@rollup/rollup-openbsd-x64': 4.60.2 - '@rollup/rollup-openharmony-arm64': 4.60.2 - '@rollup/rollup-win32-arm64-msvc': 4.60.2 - '@rollup/rollup-win32-ia32-msvc': 4.60.2 - '@rollup/rollup-win32-x64-gnu': 4.60.2 - '@rollup/rollup-win32-x64-msvc': 4.60.2 - fsevents: 2.3.3 - rrweb-cssom@0.8.0: {} run-parallel@1.2.0: @@ -7005,13 +7177,13 @@ snapshots: scheduler@0.27.0: {} - semantic-release@24.2.9(typescript@6.0.3): + semantic-release@25.0.3(typescript@6.0.3): dependencies: - '@semantic-release/commit-analyzer': 13.0.1(semantic-release@24.2.9(typescript@6.0.3)) + '@semantic-release/commit-analyzer': 13.0.1(semantic-release@25.0.3(typescript@6.0.3)) '@semantic-release/error': 4.0.0 - '@semantic-release/github': 11.0.6(semantic-release@24.2.9(typescript@6.0.3)) - '@semantic-release/npm': 12.0.2(semantic-release@24.2.9(typescript@6.0.3)) - '@semantic-release/release-notes-generator': 14.1.0(semantic-release@24.2.9(typescript@6.0.3)) + '@semantic-release/github': 12.0.6(semantic-release@25.0.3(typescript@6.0.3)) + '@semantic-release/npm': 13.1.5(semantic-release@25.0.3(typescript@6.0.3)) + '@semantic-release/release-notes-generator': 14.1.0(semantic-release@25.0.3(typescript@6.0.3)) aggregate-error: 5.0.0 cosmiconfig: 9.0.1(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) @@ -7022,7 +7194,7 @@ snapshots: get-stream: 6.0.1 git-log-parser: 1.2.1 hook-std: 4.0.0 - hosted-git-info: 8.1.0 + hosted-git-info: 9.0.2 import-from-esm: 2.0.0 lodash-es: 4.18.1 marked: 15.0.12 @@ -7030,20 +7202,15 @@ snapshots: micromatch: 4.0.8 p-each-series: 3.0.0 p-reduce: 3.0.0 - read-package-up: 11.0.0 + read-package-up: 12.0.0 resolve-from: 5.0.0 semver: 7.7.4 - semver-diff: 5.0.0 signale: 1.4.0 - yargs: 17.7.2 + yargs: 18.0.0 transitivePeerDependencies: - supports-color - typescript - semver-diff@5.0.0: - dependencies: - semver: 7.7.4 - semver-regex@4.0.5: {} semver@6.3.1: {} @@ -7108,7 +7275,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.10.0: {} + std-env@4.1.0: {} stream-combiner2@1.1.1: dependencies: @@ -7121,6 +7288,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -7134,6 +7307,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + strip-bom@3.0.0: {} strip-final-newline@2.0.0: {} @@ -7148,10 +7325,6 @@ snapshots: strip-json-comments@2.0.1: {} - strip-literal@3.1.0: - dependencies: - js-tokens: 9.0.1 - style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -7183,6 +7356,8 @@ snapshots: symbol-tree@3.2.4: {} + tagged-tag@1.0.0: {} + tailwind-merge@3.5.0: {} tailwindcss@4.2.4: {} @@ -7217,18 +7392,14 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} + tinyexec@1.1.1: {} tinyglobby@0.2.16: dependencies: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.4: {} + tinyrainbow@3.1.0: {} tldts-core@6.1.86: {} @@ -7263,6 +7434,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tunnel@0.0.6: {} + turbo@2.9.6: optionalDependencies: '@turbo/darwin-64': 2.9.6 @@ -7278,6 +7451,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.6.0: + dependencies: + tagged-tag: 1.0.0 + typescript@6.0.3: {} uglify-js@3.19.3: @@ -7285,12 +7462,18 @@ snapshots: undici-types@7.19.2: {} + undici@6.25.0: {} + + undici@7.25.0: {} + unicode-emoji-modifier-base@1.0.0: {} unicorn-magic@0.1.0: {} unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -7385,42 +7568,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0): - dependencies: - cac: 6.7.14 - debug: 4.4.3(supports-color@10.2.2) - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0): - dependencies: - esbuild: 0.27.7 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - postcss: 8.5.10 - rollup: 4.60.2 - tinyglobby: 0.2.16 - optionalDependencies: - '@types/node': 25.6.0 - fsevents: 2.3.3 - jiti: 2.6.1 - lightningcss: 1.32.0 - tsx: 4.21.0 - vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0): dependencies: lightningcss: 1.32.0 @@ -7435,48 +7582,33 @@ snapshots: jiti: 2.6.1 tsx: 4.21.0 - vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.6.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.32.0)(tsx@4.21.0): + vitest@4.1.5(@types/node@25.6.0)(jsdom@26.1.0)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)): dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)) - '@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(supports-color@10.2.2) + '@vitest/expect': 4.1.5 + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)) + '@vitest/pretty-format': 4.1.5 + '@vitest/runner': 4.1.5 + '@vitest/snapshot': 4.1.5 + '@vitest/spy': 4.1.5 + '@vitest/utils': 4.1.5 + es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.4 - std-env: 3.10.0 + std-env: 4.1.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.1.1 tinyglobby: 0.2.16 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) - vite-node: 3.2.4(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0) + tinyrainbow: 3.1.0 + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.13 '@types/node': 25.6.0 jsdom: 26.1.0 transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml w3c-xmlserializer@5.0.0: dependencies: @@ -7516,6 +7648,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + ws@8.20.0: {} xml-name-validator@5.0.0: {} @@ -7534,6 +7672,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@16.2.0: dependencies: cliui: 7.0.4 @@ -7554,8 +7694,19 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yoctocolors@2.1.2: {} zod@3.25.76: {} + zod@4.3.6: {} + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 924b55f..c6ece1a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,28 @@ packages: - packages/* +allowBuilds: + esbuild: true + +catalog: + # Standard tooling + "@biomejs/biome": "^2.4.0" + + # Testing + "@testing-library/jest-dom": "^6.6.3" + "@testing-library/react": "^16.3.0" + "@testing-library/user-event": "^14.6.1" + "@types/react": "^19.2.14" + "@types/react-dom": "^19.2.3" + "@vitejs/plugin-react": "^6.0.1" + jsdom: "^26.1.0" + + # React + react: "^19.2.5" + react-dom: "^19.2.5" + semantic-release: "^25.0.0" + typescript: "~6.0.2" + + # Vite + vite: "^8.0.10" + vitest: "^4.0.0" + zod: "^4.0.0"