fix(web): show static template previews in gallery (#3302)

This commit is contained in:
Amruth Pillai
2026-08-10 12:18:47 +02:00
committed by GitHub
parent efd950bd93
commit 035d94183b
9 changed files with 141 additions and 255 deletions
+5 -5
View File
@@ -19,17 +19,17 @@
}, },
"dependencies": { "dependencies": {
"@ai-sdk/anthropic": "^4.0.36", "@ai-sdk/anthropic": "^4.0.36",
"@ai-sdk/cerebras": "^3.0.27", "@ai-sdk/cerebras": "^3.0.28",
"@ai-sdk/cohere": "^4.0.25", "@ai-sdk/cohere": "^4.0.25",
"@ai-sdk/deepseek": "^3.0.26", "@ai-sdk/deepseek": "^3.0.26",
"@ai-sdk/fireworks": "^3.0.29", "@ai-sdk/fireworks": "^3.0.30",
"@ai-sdk/google": "^4.0.39", "@ai-sdk/google": "^4.0.39",
"@ai-sdk/groq": "^4.0.26", "@ai-sdk/groq": "^4.0.26",
"@ai-sdk/mistral": "^4.0.27", "@ai-sdk/mistral": "^4.0.27",
"@ai-sdk/openai": "^4.0.36", "@ai-sdk/openai": "^4.0.36",
"@ai-sdk/openai-compatible": "^3.0.27", "@ai-sdk/openai-compatible": "^3.0.28",
"@ai-sdk/perplexity": "^4.0.27", "@ai-sdk/perplexity": "^4.0.27",
"@ai-sdk/togetherai": "^3.0.28", "@ai-sdk/togetherai": "^3.0.29",
"@ai-sdk/xai": "^4.0.33", "@ai-sdk/xai": "^4.0.33",
"@aws-sdk/client-s3": "^3.1106.0", "@aws-sdk/client-s3": "^3.1106.0",
"@better-auth/api-key": "^1.6.26", "@better-auth/api-key": "^1.6.26",
@@ -94,7 +94,7 @@
"@types/react": "^19.2.18", "@types/react": "^19.2.18",
"@typescript/native-preview": "7.0.0-dev.20260707.2", "@typescript/native-preview": "7.0.0-dev.20260707.2",
"tsdown": "^0.22.14", "tsdown": "^0.22.14",
"tsx": "^4.23.11", "tsx": "^4.23.12",
"typescript": "^7.0.2", "typescript": "^7.0.2",
"vitest": "^4.1.10" "vitest": "^4.1.10"
} }
+2 -2
View File
@@ -55,7 +55,7 @@
"@tanstack/react-form": "^1.33.4", "@tanstack/react-form": "^1.33.4",
"@tanstack/react-hotkeys": "^0.10.0", "@tanstack/react-hotkeys": "^0.10.0",
"@tanstack/react-query": "^5.101.4", "@tanstack/react-query": "^5.101.4",
"@tanstack/react-router": "^1.170.24", "@tanstack/react-router": "^1.170.25",
"@tiptap/extension-color": "^3.29.2", "@tiptap/extension-color": "^3.29.2",
"@tiptap/extension-highlight": "^3.29.2", "@tiptap/extension-highlight": "^3.29.2",
"@tiptap/extension-text-align": "^3.29.2", "@tiptap/extension-text-align": "^3.29.2",
@@ -106,7 +106,7 @@
"@tanstack/react-devtools": "^0.10.9", "@tanstack/react-devtools": "^0.10.9",
"@tanstack/react-query-devtools": "^5.101.4", "@tanstack/react-query-devtools": "^5.101.4",
"@tanstack/react-router-devtools": "^1.167.1", "@tanstack/react-router-devtools": "^1.167.1",
"@tanstack/router-plugin": "^1.168.28", "@tanstack/router-plugin": "^1.168.29",
"@types/babel__core": "^7.20.5", "@types/babel__core": "^7.20.5",
"@types/pg": "^8.21.0", "@types/pg": "^8.21.0",
"@types/react": "^19.2.18", "@types/react": "^19.2.18",
@@ -1,11 +1,9 @@
import type { ResumeData } from "@reactive-resume/schema/resume/data";
import type { Template } from "@reactive-resume/schema/templates"; import type { Template } from "@reactive-resume/schema/templates";
import type { DialogProps } from "@/dialogs/store"; import type { DialogProps } from "@/dialogs/store";
import type { TemplateMetadata } from "./data"; import type { TemplateMetadata } from "./data";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { Trans } from "@lingui/react/macro"; import { Trans } from "@lingui/react/macro";
import { SlideshowIcon } from "@phosphor-icons/react"; import { SlideshowIcon } from "@phosphor-icons/react";
import { lazy, Suspense } from "react";
import { toast } from "sonner"; import { toast } from "sonner";
import { Badge } from "@reactive-resume/ui/components/badge"; import { Badge } from "@reactive-resume/ui/components/badge";
import { DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@reactive-resume/ui/components/dialog"; import { DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@reactive-resume/ui/components/dialog";
@@ -16,14 +14,6 @@ import { useDialogStore } from "@/dialogs/store";
import { useCurrentResume, useUpdateResumeData } from "@/features/resume/builder/draft"; import { useCurrentResume, useUpdateResumeData } from "@/features/resume/builder/draft";
import { templates } from "./data"; import { templates } from "./data";
// Lazy so the browser PDF pipeline (pdf.js) loads only when the gallery opens.
// All visible tiles share the same lazy chunk; only one PDF renders at a time via the shared serial queue.
const TemplateLivePreview = lazy(() =>
import("@/features/resume/preview/template-live-preview").then((module) => ({
default: module.TemplateLivePreview,
})),
);
export function TemplateGalleryDialog(_: DialogProps<"resume.template.gallery">) { export function TemplateGalleryDialog(_: DialogProps<"resume.template.gallery">) {
const closeDialog = useDialogStore((state) => state.closeDialog); const closeDialog = useDialogStore((state) => state.closeDialog);
const resume = useCurrentResume(); const resume = useCurrentResume();
@@ -76,7 +66,6 @@ export function TemplateGalleryDialog(_: DialogProps<"resume.template.gallery">)
{Object.entries(templates).map(([template, metadata]) => ( {Object.entries(templates).map(([template, metadata]) => (
<TemplateCard <TemplateCard
key={template} key={template}
data={resume.data}
metadata={metadata} metadata={metadata}
id={template as Template} id={template as Template}
isActive={template === selectedTemplate} isActive={template === selectedTemplate}
@@ -91,13 +80,12 @@ export function TemplateGalleryDialog(_: DialogProps<"resume.template.gallery">)
type TemplateCardProps = { type TemplateCardProps = {
id: Template; id: Template;
data: ResumeData;
isActive?: boolean; isActive?: boolean;
metadata: TemplateMetadata; metadata: TemplateMetadata;
onSelect: (template: Template) => void; onSelect: (template: Template) => void;
}; };
function TemplateCard({ id, data, metadata, isActive, onSelect }: TemplateCardProps) { function TemplateCard({ id, metadata, isActive, onSelect }: TemplateCardProps) {
return ( return (
<CometCard translateDepth={3} rotateDepth={6} glareOpacity={0}> <CometCard translateDepth={3} rotateDepth={6} glareOpacity={0}>
<button <button
@@ -109,9 +97,7 @@ function TemplateCard({ id, data, metadata, isActive, onSelect }: TemplateCardPr
isActive && "ring-2 ring-ring ring-offset-4 ring-offset-background", isActive && "ring-2 ring-ring ring-offset-4 ring-offset-background",
)} )}
> >
<Suspense fallback={<img src={metadata.imageUrl} alt={metadata.name} className="size-full object-cover" />}> <img src={metadata.imageUrl} alt={metadata.name} className="size-full object-cover" />
<TemplateLivePreview data={data} template={id} fallbackSrc={metadata.imageUrl} alt={metadata.name} />
</Suspense>
</button> </button>
<div className="mt-1 flex items-center justify-center"> <div className="mt-1 flex items-center justify-center">
@@ -1,106 +0,0 @@
import type { ResumeData } from "@reactive-resume/schema/resume/data";
import type { Template } from "@reactive-resume/schema/templates";
import { useEffect, useRef, useState } from "react";
import { Spinner } from "@reactive-resume/ui/components/spinner";
import { cn } from "@reactive-resume/utils/style";
import { createResumePdfBlob } from "@/features/resume/export/pdf-document";
import { createPdfFirstPageImageUrl } from "./pdf-thumbnail";
// Bounded FIFO cache of generated object URLs keyed by (data, template) reference. Evicted entries are
// revoked so blobs don't leak; stale-data entries (a new `data` object after an edit) age out via the cap.
// ponytail: cap-24 linear scan — gallery can show ~20 templates at once.
const PREVIEW_CACHE_LIMIT = 24;
type PreviewCacheEntry = { data: ResumeData; template: Template; url: string };
const previewCache: PreviewCacheEntry[] = [];
const getCachedPreview = (data: ResumeData, template: Template) =>
previewCache.find((entry) => entry.data === data && entry.template === template)?.url;
const setCachedPreview = (data: ResumeData, template: Template, url: string) => {
previewCache.push({ data, template, url });
while (previewCache.length > PREVIEW_CACHE_LIMIT) {
const evicted = previewCache.shift();
if (evicted) URL.revokeObjectURL(evicted.url);
}
};
// Serial render pipeline shared across all instances: PDFs generate one-at-a-time on the main thread
// (serialized through `renderQueue`) so the gallery doesn't spike CPU/memory when all tiles mount at once.
// Per-instance `latestRenderRequestId` ref (not global) ensures that if a component re-renders with new
// props it discards its own superseded work without cancelling renders for other tiles.
let renderQueue: Promise<void> = Promise.resolve();
type TemplateLivePreviewProps = {
alt: string;
className?: string;
data: ResumeData;
fallbackSrc: string;
template: Template;
};
/**
* Renders the first page of the user's actual resume data through a given template, lazily.
* Reuses the browser PDF pipeline (`createResumePdfBlob` + pdf.js first-page render). Falls back to the
* static template image while generating or if generation fails. Intended to be mounted on demand (e.g.
* inside a hover/preview card) so the render stays off the hover critical path.
*/
export function TemplateLivePreview({ alt, className, data, fallbackSrc, template }: TemplateLivePreviewProps) {
const [imageUrl, setImageUrl] = useState<string | null>(() => getCachedPreview(data, template) ?? null);
const [hasError, setHasError] = useState(false);
// Per-instance counter: only the latest render request for THIS tile commits its result.
const latestRequestId = useRef(0);
useEffect(() => {
const cached = getCachedPreview(data, template);
if (cached) {
setImageUrl(cached);
return;
}
let cancelled = false;
const requestId = ++latestRequestId.current;
renderQueue = renderQueue.then(async () => {
if (cancelled || requestId !== latestRequestId.current) return;
// Another instance may have cached this exact preview while we were queued.
const existing = getCachedPreview(data, template);
if (existing) {
setImageUrl(existing);
return;
}
try {
const blob = await createResumePdfBlob(data, template);
const url = await createPdfFirstPageImageUrl(blob);
if (cancelled || requestId !== latestRequestId.current) {
URL.revokeObjectURL(url);
return;
}
setCachedPreview(data, template, url);
setImageUrl(url);
} catch {
if (!cancelled) setHasError(true);
}
});
return () => {
cancelled = true;
};
}, [data, template]);
const isLoading = !imageUrl && !hasError;
return (
<div className={cn("relative aspect-page w-full overflow-hidden rounded-md bg-white", className)}>
<img src={imageUrl ?? fallbackSrc} alt={alt} className="size-full object-contain" />
{isLoading ? (
<div className="absolute inset-0 flex items-center justify-center bg-white/40">
<Spinner className="size-8" />
</div>
) : null}
</div>
);
}
+3 -3
View File
@@ -13,7 +13,7 @@
"type": "git", "type": "git",
"url": "https://github.com/amruthpillai/reactive-resume.git" "url": "https://github.com/amruthpillai/reactive-resume.git"
}, },
"packageManager": "pnpm@11.20.0", "packageManager": "pnpm@11.21.0",
"workspaces": [ "workspaces": [
"apps/*", "apps/*",
"packages/*", "packages/*",
@@ -48,7 +48,7 @@
"@playwright/test": "^1.62.1", "@playwright/test": "^1.62.1",
"@reactive-resume/config": "workspace:*", "@reactive-resume/config": "workspace:*",
"@testing-library/dom": "^10.4.1", "@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^7.0.0", "@testing-library/jest-dom": "^7.0.1",
"@testing-library/react": "^16.3.2", "@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.3", "@testing-library/user-event": "^14.6.3",
"@types/node": "^26.2.0", "@types/node": "^26.2.0",
@@ -56,7 +56,7 @@
"@vitest/coverage-v8": "^4.1.10", "@vitest/coverage-v8": "^4.1.10",
"github-actionlint": "1.7.12", "github-actionlint": "1.7.12",
"happy-dom": "^20.11.2", "happy-dom": "^20.11.2",
"knip": "^6.32.0", "knip": "^6.32.1",
"lefthook": "^2.1.10", "lefthook": "^2.1.10",
"markdownlint-cli2": "0.23.2", "markdownlint-cli2": "0.23.2",
"pg": "^8.23.0", "pg": "^8.23.0",
+4 -4
View File
@@ -20,17 +20,17 @@
}, },
"dependencies": { "dependencies": {
"@ai-sdk/anthropic": "^4.0.36", "@ai-sdk/anthropic": "^4.0.36",
"@ai-sdk/cerebras": "^3.0.27", "@ai-sdk/cerebras": "^3.0.28",
"@ai-sdk/cohere": "^4.0.25", "@ai-sdk/cohere": "^4.0.25",
"@ai-sdk/deepseek": "^3.0.26", "@ai-sdk/deepseek": "^3.0.26",
"@ai-sdk/fireworks": "^3.0.29", "@ai-sdk/fireworks": "^3.0.30",
"@ai-sdk/google": "^4.0.39", "@ai-sdk/google": "^4.0.39",
"@ai-sdk/groq": "^4.0.26", "@ai-sdk/groq": "^4.0.26",
"@ai-sdk/mistral": "^4.0.27", "@ai-sdk/mistral": "^4.0.27",
"@ai-sdk/openai": "^4.0.36", "@ai-sdk/openai": "^4.0.36",
"@ai-sdk/openai-compatible": "^3.0.27", "@ai-sdk/openai-compatible": "^3.0.28",
"@ai-sdk/perplexity": "^4.0.27", "@ai-sdk/perplexity": "^4.0.27",
"@ai-sdk/togetherai": "^3.0.28", "@ai-sdk/togetherai": "^3.0.29",
"@ai-sdk/xai": "^4.0.33", "@ai-sdk/xai": "^4.0.33",
"@aws-sdk/client-s3": "^3.1106.0", "@aws-sdk/client-s3": "^3.1106.0",
"@orpc/client": "^1.15.0", "@orpc/client": "^1.15.0",
+1 -1
View File
@@ -32,7 +32,7 @@
"@reactive-resume/config": "workspace:*", "@reactive-resume/config": "workspace:*",
"@typescript/native-preview": "7.0.0-dev.20260707.2", "@typescript/native-preview": "7.0.0-dev.20260707.2",
"fast-check": "^4.9.0", "fast-check": "^4.9.0",
"tsx": "^4.23.11", "tsx": "^4.23.12",
"typescript": "^7.0.2" "typescript": "^7.0.2"
} }
} }
+123 -117
View File
@@ -37,8 +37,8 @@ importers:
specifier: ^10.4.1 specifier: ^10.4.1
version: 10.4.1 version: 10.4.1
'@testing-library/jest-dom': '@testing-library/jest-dom':
specifier: ^7.0.0 specifier: ^7.0.1
version: 7.0.0(@testing-library/dom@10.4.1) version: 7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10)
'@testing-library/react': '@testing-library/react':
specifier: ^16.3.2 specifier: ^16.3.2
version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
@@ -61,8 +61,8 @@ importers:
specifier: ^20.11.2 specifier: ^20.11.2
version: 20.11.2 version: 20.11.2
knip: knip:
specifier: ^6.32.0 specifier: ^6.32.1
version: 6.32.0 version: 6.32.1
lefthook: lefthook:
specifier: ^2.1.10 specifier: ^2.1.10
version: 2.1.10 version: 2.1.10
@@ -80,7 +80,7 @@ importers:
version: 7.0.2 version: 7.0.2
vitest: vitest:
specifier: ^4.1.10 specifier: ^4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
apps/server: apps/server:
dependencies: dependencies:
@@ -88,8 +88,8 @@ importers:
specifier: ^4.0.36 specifier: ^4.0.36
version: 4.0.36(zod@4.4.3) version: 4.0.36(zod@4.4.3)
'@ai-sdk/cerebras': '@ai-sdk/cerebras':
specifier: ^3.0.27 specifier: ^3.0.28
version: 3.0.27(zod@4.4.3) version: 3.0.28(zod@4.4.3)
'@ai-sdk/cohere': '@ai-sdk/cohere':
specifier: ^4.0.25 specifier: ^4.0.25
version: 4.0.25(zod@4.4.3) version: 4.0.25(zod@4.4.3)
@@ -97,8 +97,8 @@ importers:
specifier: ^3.0.26 specifier: ^3.0.26
version: 3.0.26(zod@4.4.3) version: 3.0.26(zod@4.4.3)
'@ai-sdk/fireworks': '@ai-sdk/fireworks':
specifier: ^3.0.29 specifier: ^3.0.30
version: 3.0.29(zod@4.4.3) version: 3.0.30(zod@4.4.3)
'@ai-sdk/google': '@ai-sdk/google':
specifier: ^4.0.39 specifier: ^4.0.39
version: 4.0.39(zod@4.4.3) version: 4.0.39(zod@4.4.3)
@@ -112,14 +112,14 @@ importers:
specifier: ^4.0.36 specifier: ^4.0.36
version: 4.0.36(zod@4.4.3) version: 4.0.36(zod@4.4.3)
'@ai-sdk/openai-compatible': '@ai-sdk/openai-compatible':
specifier: ^3.0.27 specifier: ^3.0.28
version: 3.0.27(zod@4.4.3) version: 3.0.28(zod@4.4.3)
'@ai-sdk/perplexity': '@ai-sdk/perplexity':
specifier: ^4.0.27 specifier: ^4.0.27
version: 4.0.27(zod@4.4.3) version: 4.0.27(zod@4.4.3)
'@ai-sdk/togetherai': '@ai-sdk/togetherai':
specifier: ^3.0.28 specifier: ^3.0.29
version: 3.0.28(zod@4.4.3) version: 3.0.29(zod@4.4.3)
'@ai-sdk/xai': '@ai-sdk/xai':
specifier: ^4.0.33 specifier: ^4.0.33
version: 4.0.33(zod@4.4.3) version: 4.0.33(zod@4.4.3)
@@ -306,16 +306,16 @@ importers:
version: 7.0.0-dev.20260707.2 version: 7.0.0-dev.20260707.2
tsdown: tsdown:
specifier: ^0.22.14 specifier: ^0.22.14
version: 0.22.14(@typescript/native-preview@7.0.0-dev.20260707.2)(oxc-resolver@11.24.2)(tsx@4.23.11)(typescript@7.0.2) version: 0.22.14(@typescript/native-preview@7.0.0-dev.20260707.2)(oxc-resolver@11.24.2)(tsx@4.23.12)(typescript@7.0.2)
tsx: tsx:
specifier: ^4.23.11 specifier: ^4.23.12
version: 4.23.11 version: 4.23.12
typescript: typescript:
specifier: ^7.0.2 specifier: ^7.0.2
version: 7.0.2 version: 7.0.2
vitest: vitest:
specifier: ^4.1.10 specifier: ^4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
apps/web: apps/web:
dependencies: dependencies:
@@ -426,7 +426,7 @@ importers:
version: link:../../packages/utils version: link:../../packages/utils
'@tailwindcss/vite': '@tailwindcss/vite':
specifier: ^4.3.3 specifier: ^4.3.3
version: 4.3.3(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 4.3.3(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@tanstack/react-form': '@tanstack/react-form':
specifier: ^1.33.4 specifier: ^1.33.4
version: 1.33.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8) version: 1.33.4(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
@@ -437,8 +437,8 @@ importers:
specifier: ^5.101.4 specifier: ^5.101.4
version: 5.101.4(react@19.2.8) version: 5.101.4(react@19.2.8)
'@tanstack/react-router': '@tanstack/react-router':
specifier: ^1.170.24 specifier: ^1.170.25
version: 1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8) version: 1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
'@tiptap/extension-color': '@tiptap/extension-color':
specifier: ^3.29.2 specifier: ^3.29.2
version: 3.29.2(@tiptap/extension-text-style@3.29.2(@tiptap/core@3.29.2(@tiptap/pm@3.29.2))) version: 3.29.2(@tiptap/extension-text-style@3.29.2(@tiptap/core@3.29.2(@tiptap/pm@3.29.2)))
@@ -565,16 +565,16 @@ importers:
version: 6.6.0 version: 6.6.0
'@lingui/vite-plugin': '@lingui/vite-plugin':
specifier: ^6.6.0 specifier: ^6.6.0
version: 6.6.0(@babel/core@8.0.1)(@lingui/babel-plugin-lingui-macro@6.6.0(@babel/core@8.0.1)(@babel/types@7.29.8))(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)))(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 6.6.0(@babel/core@8.0.1)(@lingui/babel-plugin-lingui-macro@6.6.0(@babel/core@8.0.1)(@babel/types@7.29.8))(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)))(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@reactive-resume/config': '@reactive-resume/config':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/config version: link:../../packages/config
'@rolldown/plugin-babel': '@rolldown/plugin-babel':
specifier: ^0.2.3 specifier: ^0.2.3
version: 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@tanstack/devtools-vite': '@tanstack/devtools-vite':
specifier: ^0.8.3 specifier: ^0.8.3
version: 0.8.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 0.8.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@tanstack/react-devtools': '@tanstack/react-devtools':
specifier: ^0.10.9 specifier: ^0.10.9
version: 0.10.9(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(csstype@3.2.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(solid-js@1.9.14) version: 0.10.9(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(csstype@3.2.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(solid-js@1.9.14)
@@ -583,10 +583,10 @@ importers:
version: 5.101.4(@tanstack/react-query@5.101.4(react@19.2.8))(react@19.2.8) version: 5.101.4(@tanstack/react-query@5.101.4(react@19.2.8))(react@19.2.8)
'@tanstack/react-router-devtools': '@tanstack/react-router-devtools':
specifier: ^1.167.1 specifier: ^1.167.1
version: 1.167.1(@tanstack/react-router@1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@tanstack/router-core@1.171.20)(csstype@3.2.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) version: 1.167.1(@tanstack/react-router@1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@tanstack/router-core@1.171.21)(csstype@3.2.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
'@tanstack/router-plugin': '@tanstack/router-plugin':
specifier: ^1.168.28 specifier: ^1.168.29
version: 1.168.28(@tanstack/react-router@1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 1.168.29(@tanstack/react-router@1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@types/babel__core': '@types/babel__core':
specifier: ^7.20.5 specifier: ^7.20.5
version: 7.20.5 version: 7.20.5
@@ -604,7 +604,7 @@ importers:
version: 7.0.0-dev.20260707.2 version: 7.0.0-dev.20260707.2
'@vitejs/plugin-react': '@vitejs/plugin-react':
specifier: ^6.0.5 specifier: ^6.0.5
version: 6.0.5(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 6.0.5(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
babel-plugin-macros: babel-plugin-macros:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0 version: 3.1.0
@@ -619,7 +619,7 @@ importers:
version: 7.0.2 version: 7.0.2
vite: vite:
specifier: ^8.2.1 specifier: ^8.2.1
version: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) version: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
packages/ai: packages/ai:
dependencies: dependencies:
@@ -658,8 +658,8 @@ importers:
specifier: ^4.0.36 specifier: ^4.0.36
version: 4.0.36(zod@4.4.3) version: 4.0.36(zod@4.4.3)
'@ai-sdk/cerebras': '@ai-sdk/cerebras':
specifier: ^3.0.27 specifier: ^3.0.28
version: 3.0.27(zod@4.4.3) version: 3.0.28(zod@4.4.3)
'@ai-sdk/cohere': '@ai-sdk/cohere':
specifier: ^4.0.25 specifier: ^4.0.25
version: 4.0.25(zod@4.4.3) version: 4.0.25(zod@4.4.3)
@@ -667,8 +667,8 @@ importers:
specifier: ^3.0.26 specifier: ^3.0.26
version: 3.0.26(zod@4.4.3) version: 3.0.26(zod@4.4.3)
'@ai-sdk/fireworks': '@ai-sdk/fireworks':
specifier: ^3.0.29 specifier: ^3.0.30
version: 3.0.29(zod@4.4.3) version: 3.0.30(zod@4.4.3)
'@ai-sdk/google': '@ai-sdk/google':
specifier: ^4.0.39 specifier: ^4.0.39
version: 4.0.39(zod@4.4.3) version: 4.0.39(zod@4.4.3)
@@ -682,14 +682,14 @@ importers:
specifier: ^4.0.36 specifier: ^4.0.36
version: 4.0.36(zod@4.4.3) version: 4.0.36(zod@4.4.3)
'@ai-sdk/openai-compatible': '@ai-sdk/openai-compatible':
specifier: ^3.0.27 specifier: ^3.0.28
version: 3.0.27(zod@4.4.3) version: 3.0.28(zod@4.4.3)
'@ai-sdk/perplexity': '@ai-sdk/perplexity':
specifier: ^4.0.27 specifier: ^4.0.27
version: 4.0.27(zod@4.4.3) version: 4.0.27(zod@4.4.3)
'@ai-sdk/togetherai': '@ai-sdk/togetherai':
specifier: ^3.0.28 specifier: ^3.0.29
version: 3.0.28(zod@4.4.3) version: 3.0.29(zod@4.4.3)
'@ai-sdk/xai': '@ai-sdk/xai':
specifier: ^4.0.33 specifier: ^4.0.33
version: 4.0.33(zod@4.4.3) version: 4.0.33(zod@4.4.3)
@@ -1036,7 +1036,7 @@ importers:
version: 7.0.2 version: 7.0.2
vitest: vitest:
specifier: ^4.1.10 specifier: ^4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
packages/pdf: packages/pdf:
dependencies: dependencies:
@@ -1127,8 +1127,8 @@ importers:
specifier: ^4.9.0 specifier: ^4.9.0
version: 4.9.0 version: 4.9.0
tsx: tsx:
specifier: ^4.23.11 specifier: ^4.23.12
version: 4.23.11 version: 4.23.12
typescript: typescript:
specifier: ^7.0.2 specifier: ^7.0.2
version: 7.0.2 version: 7.0.2
@@ -1290,11 +1290,11 @@ importers:
specifier: ^8.23.0 specifier: ^8.23.0
version: 8.23.0 version: 8.23.0
tsx: tsx:
specifier: ^4.23.11 specifier: ^4.23.12
version: 4.23.11 version: 4.23.12
vitest: vitest:
specifier: ^4.1.10 specifier: ^4.1.10
version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
packages: packages:
@@ -1307,8 +1307,8 @@ packages:
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/cerebras@3.0.27': '@ai-sdk/cerebras@3.0.28':
resolution: {integrity: sha512-DogkySI8n+x7nHaNgNGFH6GmCvOQLx2Tzfvr+EkJPT0bPN5z4eKdwFue3AOzRhZx0lU4bcIVBtPO5qYHBlZnhQ==} resolution: {integrity: sha512-tjRovnoOBCjG3q4OoOVhZgmj3R6/4MeiNksU9bluWkDRKgtk6iTzHqIUcJFJoTp2Z58Xjdfb/nMgg2yobdOdkQ==}
engines: {node: '>=22'} engines: {node: '>=22'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
@@ -1325,8 +1325,8 @@ packages:
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/fireworks@3.0.29': '@ai-sdk/fireworks@3.0.30':
resolution: {integrity: sha512-2pZgi/iS0Oqgo73VXG1wOXiJo2XOFpBqp8nXlJgdNQx0ZeI5BAkpJWrrR+9vVqRIgv50GHFnc+qvN2IbuYiVnA==} resolution: {integrity: sha512-hLv8LSAvbiS4GgJawUMW6juetNNMtCu87RTaqZRkbk7fR5MjosZU2owYI5tHltzYt5CJLQ/ZAKd777oQdGnS2g==}
engines: {node: '>=22'} engines: {node: '>=22'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
@@ -1361,8 +1361,8 @@ packages:
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
'@ai-sdk/openai-compatible@3.0.27': '@ai-sdk/openai-compatible@3.0.28':
resolution: {integrity: sha512-icGSoBDbFKZotUwehg7h/JjtD7arweeKfeDcsT9UsPY+YdwiT94JciD59bqAOAdNA3wlS+klW2vsaVLxTUUhbA==} resolution: {integrity: sha512-vF/852mCFiASq2fAPE1mA0E0w78NH68/X2Gukuh4TeJrMIp+CJfoR5QLuY2+pTx7UiLmuYWDpCQhWaupuM7+Xg==}
engines: {node: '>=22'} engines: {node: '>=22'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
@@ -1395,8 +1395,8 @@ packages:
peerDependencies: peerDependencies:
react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1 react: ^18 || ~19.0.1 || ~19.1.2 || ^19.2.1
'@ai-sdk/togetherai@3.0.28': '@ai-sdk/togetherai@3.0.29':
resolution: {integrity: sha512-VP0d4Z58eKnjQxK+wwbj3B59ISdBApoox+3flqdpZAS/kPIenKPbToLqpxxazDx1ex8o5g+Dlvjt7Ib6Ieo8Dw==} resolution: {integrity: sha512-xmbjtJu52IwfIztYwW0QI8NDPu9H88n2zyFPjtqbTr3RCv3C6oO+wWssD+48TjlqaDLIrEMmSiBHt6lAjoTVuw==}
engines: {node: '>=22'} engines: {node: '>=22'}
peerDependencies: peerDependencies:
zod: ^3.25.76 || ^4.1.8 zod: ^3.25.76 || ^4.1.8
@@ -4109,8 +4109,8 @@ packages:
'@tanstack/router-core': '@tanstack/router-core':
optional: true optional: true
'@tanstack/react-router@1.170.24': '@tanstack/react-router@1.170.25':
resolution: {integrity: sha512-gCeAtUAepQa1sncLUk6BxfH0oeGmHOHkx1ZsQeLnyZFNhRm19YIr3HfNQ7BFOLXpD8IeFm2o76WM6rCjyAQkyQ==} resolution: {integrity: sha512-XiWYvkLAGhcZHhV2xUvicpF/VfTVSnewP6CqviDONAjmD50tBob5x/93u2W8QZAc/JgkPd+jijCmu6t4NCzmew==}
engines: {node: '>=20.19'} engines: {node: '>=20.19'}
peerDependencies: peerDependencies:
react: '>=18.0.0 || >=19.0.0' react: '>=18.0.0 || >=19.0.0'
@@ -4128,8 +4128,8 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
'@tanstack/router-core@1.171.20': '@tanstack/router-core@1.171.21':
resolution: {integrity: sha512-zkqjM/AuC8ps6bKPlxp3jbSE8ZBeTRuqFg+mYPXzp+5lYiZBd1ppY/c5yM8y/SIxOGvKQjn3K+AmA/PDh2XzZg==} resolution: {integrity: sha512-t6xUHBO94nQDrPHPh6ag5UuKHWIkVjq9s63q2ctbxgzq3vtSoGKmAIdLD5o+NU6JUS1ppXRHgL0YGzEHvH32Ng==}
engines: {node: '>=20.19'} engines: {node: '>=20.19'}
'@tanstack/router-devtools-core@1.168.1': '@tanstack/router-devtools-core@1.168.1':
@@ -4142,16 +4142,16 @@ packages:
csstype: csstype:
optional: true optional: true
'@tanstack/router-generator@1.167.26': '@tanstack/router-generator@1.167.27':
resolution: {integrity: sha512-zanvGiOGPt3AOsUyBwfgPY/UV3wBuSFQOS/v8plE/KUKcZu8mztqqNevWcRUntDWul9WGEZ3SMIIuUehR6/ZKQ==} resolution: {integrity: sha512-bfV44Nyy7XeSCCuvQWGc3qudqXfOqAwKiWXNymAuK+hy24vs3E75Aw1zMz97ajHXMjxm4nFVVjEnwZ/cDR74ug==}
engines: {node: '>=20.19'} engines: {node: '>=20.19'}
'@tanstack/router-plugin@1.168.28': '@tanstack/router-plugin@1.168.29':
resolution: {integrity: sha512-4Tx5QHud3TbXa55E/6vqPc+7ymMHagzbA4LW7L+sQXEOaUkiP21iP9RIZIW04vX8LmY85OjbsBYHt09onkNgnQ==} resolution: {integrity: sha512-h1ZbnIvbAKIFeQ6JBRJ/xBP17tBdwjwzPBKVKUdVNYiob07SkrQLhqz+s41WtbNmHey5kQWN3HqP16Vl062bqg==}
engines: {node: '>=20.19'} engines: {node: '>=20.19'}
peerDependencies: peerDependencies:
'@rsbuild/core': '>=1.0.2 || ^2.0.0' '@rsbuild/core': '>=1.0.2 || ^2.0.0'
'@tanstack/react-router': ^1.170.24 '@tanstack/react-router': ^1.170.25
vite: '>=5.0.0 || >=6.0.0 || >=7.0.0 || >=8.0.0' vite: '>=5.0.0 || >=6.0.0 || >=7.0.0 || >=8.0.0'
vite-plugin-solid: ^2.11.10 || ^3.0.0-0 vite-plugin-solid: ^2.11.10 || ^3.0.0-0
webpack: '>=5.92.0' webpack: '>=5.92.0'
@@ -4185,11 +4185,15 @@ packages:
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
engines: {node: '>=18'} engines: {node: '>=18'}
'@testing-library/jest-dom@7.0.0': '@testing-library/jest-dom@7.0.1':
resolution: {integrity: sha512-HKAH9C6mBo5yBG6yRO5i43L2iisencAo5z+o5P/saHUoY+miC5ivXRxHBJcFyB5ypPNxHJdK3BoF/3O4DIptMg==} resolution: {integrity: sha512-oMDTC3oA+6CXSO2JZnvOI7CA6oVub6kij5ggk9ohwye5slmkwxYDXcPOVxgMw/RQlticjtO0C1RZkR97HgrWMw==}
engines: {node: '>=22', npm: '>=6', yarn: '>=1'} engines: {node: '>=22', npm: '>=6', yarn: '>=1'}
peerDependencies: peerDependencies:
'@testing-library/dom': '>=10 <11' '@testing-library/dom': '>=10 <11'
vitest: '>= 0.32'
peerDependenciesMeta:
vitest:
optional: true
'@testing-library/react@16.3.2': '@testing-library/react@16.3.2':
resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==} resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==}
@@ -6497,8 +6501,8 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
knip@6.32.0: knip@6.32.1:
resolution: {integrity: sha512-KDX9OmmOFmlvmxTkrx6Z0GHISMut+pXMSKR8eg84bovaxJKx2NdQD4JYCXveSbvieRe107W6vCD2xCpmz0qBYA==} resolution: {integrity: sha512-mIiIHMTJVUgSlz0mxEgPt7wg8DmfbCp1Txqab3WpbMCJF7YHvHtC9jeAHHXfISMl72N8WzhyG71SQlaqCOGZtg==}
engines: {node: ^20.19.0 || >=22.12.0} engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true hasBin: true
@@ -8239,8 +8243,8 @@ packages:
tslib@2.8.1: tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tsx@4.23.11: tsx@4.23.12:
resolution: {integrity: sha512-Ry2oTEUnhBdeEdWIztY8kf3/nBGnPnjMLVGL0YfdRXMORuPER5NlKmayqxtxRxwB1xBN+RivRaJfe7PM1rtiyw==} resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
hasBin: true hasBin: true
@@ -8697,9 +8701,9 @@ snapshots:
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
zod: 4.4.3 zod: 4.4.3
'@ai-sdk/cerebras@3.0.27(zod@4.4.3)': '@ai-sdk/cerebras@3.0.28(zod@4.4.3)':
dependencies: dependencies:
'@ai-sdk/openai-compatible': 3.0.27(zod@4.4.3) '@ai-sdk/openai-compatible': 3.0.28(zod@4.4.3)
'@ai-sdk/provider': 4.0.7 '@ai-sdk/provider': 4.0.7
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
zod: 4.4.3 zod: 4.4.3
@@ -8716,9 +8720,9 @@ snapshots:
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
zod: 4.4.3 zod: 4.4.3
'@ai-sdk/fireworks@3.0.29(zod@4.4.3)': '@ai-sdk/fireworks@3.0.30(zod@4.4.3)':
dependencies: dependencies:
'@ai-sdk/openai-compatible': 3.0.27(zod@4.4.3) '@ai-sdk/openai-compatible': 3.0.28(zod@4.4.3)
'@ai-sdk/provider': 4.0.7 '@ai-sdk/provider': 4.0.7
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
zod: 4.4.3 zod: 4.4.3
@@ -8755,7 +8759,7 @@ snapshots:
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
zod: 4.4.3 zod: 4.4.3
'@ai-sdk/openai-compatible@3.0.27(zod@4.4.3)': '@ai-sdk/openai-compatible@3.0.28(zod@4.4.3)':
dependencies: dependencies:
'@ai-sdk/provider': 4.0.7 '@ai-sdk/provider': 4.0.7
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
@@ -8798,9 +8802,9 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- zod - zod
'@ai-sdk/togetherai@3.0.28(zod@4.4.3)': '@ai-sdk/togetherai@3.0.29(zod@4.4.3)':
dependencies: dependencies:
'@ai-sdk/openai-compatible': 3.0.27(zod@4.4.3) '@ai-sdk/openai-compatible': 3.0.28(zod@4.4.3)
'@ai-sdk/provider': 4.0.7 '@ai-sdk/provider': 4.0.7
'@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3)
zod: 4.4.3 zod: 4.4.3
@@ -10152,15 +10156,15 @@ snapshots:
- '@babel/core' - '@babel/core'
- '@babel/types' - '@babel/types'
'@lingui/vite-plugin@6.6.0(@babel/core@8.0.1)(@lingui/babel-plugin-lingui-macro@6.6.0(@babel/core@8.0.1)(@babel/types@7.29.8))(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)))(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@lingui/vite-plugin@6.6.0(@babel/core@8.0.1)(@lingui/babel-plugin-lingui-macro@6.6.0(@babel/core@8.0.1)(@babel/types@7.29.8))(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)))(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@lingui/cli': 6.6.0(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0) '@lingui/cli': 6.6.0(babel-plugin-macros@3.1.0)(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)
'@lingui/conf': 6.6.0 '@lingui/conf': 6.6.0
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
optionalDependencies: optionalDependencies:
'@babel/core': 8.0.1 '@babel/core': 8.0.1
'@lingui/babel-plugin-lingui-macro': 6.6.0(@babel/core@8.0.1)(@babel/types@7.29.8) '@lingui/babel-plugin-lingui-macro': 6.6.0(@babel/core@8.0.1)(@babel/types@7.29.8)
'@rolldown/plugin-babel': 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) '@rolldown/plugin-babel': 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
rolldown: 1.2.3 rolldown: 1.2.3
transitivePeerDependencies: transitivePeerDependencies:
- babel-plugin-macros - babel-plugin-macros
@@ -11141,14 +11145,14 @@ snapshots:
'@rolldown/binding-win32-x64-msvc@1.2.3': '@rolldown/binding-win32-x64-msvc@1.2.3':
optional: true optional: true
'@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@babel/core': 8.0.1 '@babel/core': 8.0.1
picomatch: 4.0.5 picomatch: 4.0.5
rolldown: 1.2.3 rolldown: 1.2.3
optionalDependencies: optionalDependencies:
'@babel/runtime': 7.29.7 '@babel/runtime': 7.29.7
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
'@rolldown/pluginutils@1.0.1': {} '@rolldown/pluginutils@1.0.1': {}
@@ -11352,12 +11356,12 @@ snapshots:
postcss-selector-parser: 6.0.10 postcss-selector-parser: 6.0.10
tailwindcss: 4.3.3 tailwindcss: 4.3.3
'@tailwindcss/vite@4.3.3(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@tailwindcss/vite@4.3.3(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@tailwindcss/node': 4.3.3 '@tailwindcss/node': 4.3.3
'@tailwindcss/oxide': 4.3.3 '@tailwindcss/oxide': 4.3.3
tailwindcss: 4.3.3 tailwindcss: 4.3.3
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
'@tanstack/devtools-bundler-core@0.1.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)': '@tanstack/devtools-bundler-core@0.1.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)':
dependencies: dependencies:
@@ -11398,13 +11402,13 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- csstype - csstype
'@tanstack/devtools-vite@0.8.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@tanstack/devtools-vite@0.8.3(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@tanstack/devtools-bundler-core': 0.1.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3) '@tanstack/devtools-bundler-core': 0.1.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.3)
'@tanstack/devtools-client': 0.0.8 '@tanstack/devtools-client': 0.0.8
'@tanstack/devtools-event-bus': 0.4.2 '@tanstack/devtools-event-bus': 0.4.2
chalk: 5.6.2 chalk: 5.6.2
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@emnapi/core' - '@emnapi/core'
- '@emnapi/runtime' - '@emnapi/runtime'
@@ -11484,22 +11488,22 @@ snapshots:
'@tanstack/query-core': 5.101.4 '@tanstack/query-core': 5.101.4
react: 19.2.8 react: 19.2.8
'@tanstack/react-router-devtools@1.167.1(@tanstack/react-router@1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@tanstack/router-core@1.171.20)(csstype@3.2.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': '@tanstack/react-router-devtools@1.167.1(@tanstack/react-router@1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(@tanstack/router-core@1.171.21)(csstype@3.2.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies: dependencies:
'@tanstack/react-router': 1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-router': 1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
'@tanstack/router-devtools-core': 1.168.1(@tanstack/router-core@1.171.20)(csstype@3.2.3) '@tanstack/router-devtools-core': 1.168.1(@tanstack/router-core@1.171.21)(csstype@3.2.3)
react: 19.2.8 react: 19.2.8
react-dom: 19.2.8(react@19.2.8) react-dom: 19.2.8(react@19.2.8)
optionalDependencies: optionalDependencies:
'@tanstack/router-core': 1.171.20 '@tanstack/router-core': 1.171.21
transitivePeerDependencies: transitivePeerDependencies:
- csstype - csstype
'@tanstack/react-router@1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': '@tanstack/react-router@1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies: dependencies:
'@tanstack/history': 1.162.1 '@tanstack/history': 1.162.1
'@tanstack/react-store': 0.9.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-store': 0.9.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
'@tanstack/router-core': 1.171.20 '@tanstack/router-core': 1.171.21
isbot: 5.2.1 isbot: 5.2.1
react: 19.2.8 react: 19.2.8
react-dom: 19.2.8(react@19.2.8) react-dom: 19.2.8(react@19.2.8)
@@ -11518,25 +11522,25 @@ snapshots:
react-dom: 19.2.8(react@19.2.8) react-dom: 19.2.8(react@19.2.8)
use-sync-external-store: 1.6.0(react@19.2.8) use-sync-external-store: 1.6.0(react@19.2.8)
'@tanstack/router-core@1.171.20': '@tanstack/router-core@1.171.21':
dependencies: dependencies:
'@tanstack/history': 1.162.1 '@tanstack/history': 1.162.1
cookie-es: 3.1.1 cookie-es: 3.1.1
seroval: 1.6.2 seroval: 1.6.2
seroval-plugins: 1.6.2(seroval@1.6.2) seroval-plugins: 1.6.2(seroval@1.6.2)
'@tanstack/router-devtools-core@1.168.1(@tanstack/router-core@1.171.20)(csstype@3.2.3)': '@tanstack/router-devtools-core@1.168.1(@tanstack/router-core@1.171.21)(csstype@3.2.3)':
dependencies: dependencies:
'@tanstack/router-core': 1.171.20 '@tanstack/router-core': 1.171.21
clsx: 2.1.1 clsx: 2.1.1
goober: 2.1.19(csstype@3.2.3) goober: 2.1.19(csstype@3.2.3)
optionalDependencies: optionalDependencies:
csstype: 3.2.3 csstype: 3.2.3
'@tanstack/router-generator@1.167.26(supports-color@7.2.0)': '@tanstack/router-generator@1.167.27(supports-color@7.2.0)':
dependencies: dependencies:
'@babel/types': 7.29.8 '@babel/types': 7.29.8
'@tanstack/router-core': 1.171.20 '@tanstack/router-core': 1.171.21
'@tanstack/router-utils': 1.162.2(supports-color@7.2.0) '@tanstack/router-utils': 1.162.2(supports-color@7.2.0)
'@tanstack/virtual-file-routes': 1.162.0 '@tanstack/virtual-file-routes': 1.162.0
jiti: 2.7.0 jiti: 2.7.0
@@ -11546,20 +11550,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@tanstack/router-plugin@1.168.28(@tanstack/react-router@1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@tanstack/router-plugin@1.168.29(@tanstack/react-router@1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8))(esbuild@0.28.2)(rolldown@1.2.3)(supports-color@7.2.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@babel/core': 7.29.7(supports-color@7.2.0) '@babel/core': 7.29.7(supports-color@7.2.0)
'@babel/template': 7.29.7 '@babel/template': 7.29.7
'@babel/types': 7.29.8 '@babel/types': 7.29.8
'@tanstack/router-core': 1.171.20 '@tanstack/router-core': 1.171.21
'@tanstack/router-generator': 1.167.26(supports-color@7.2.0) '@tanstack/router-generator': 1.167.27(supports-color@7.2.0)
'@tanstack/router-utils': 1.162.2(supports-color@7.2.0) '@tanstack/router-utils': 1.162.2(supports-color@7.2.0)
chokidar: 5.0.0 chokidar: 5.0.0
unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
zod: 4.4.3 zod: 4.4.3
optionalDependencies: optionalDependencies:
'@tanstack/react-router': 1.170.24(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@tanstack/react-router': 1.170.25(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
transitivePeerDependencies: transitivePeerDependencies:
- '@farmfe/core' - '@farmfe/core'
- '@rspack/core' - '@rspack/core'
@@ -11600,7 +11604,7 @@ snapshots:
picocolors: 1.1.1 picocolors: 1.1.1
pretty-format: 27.5.1 pretty-format: 27.5.1
'@testing-library/jest-dom@7.0.0(@testing-library/dom@10.4.1)': '@testing-library/jest-dom@7.0.1(@testing-library/dom@10.4.1)(vitest@4.1.10)':
dependencies: dependencies:
'@adobe/css-tools': 4.5.0 '@adobe/css-tools': 4.5.0
'@testing-library/dom': 10.4.1 '@testing-library/dom': 10.4.1
@@ -11609,6 +11613,8 @@ snapshots:
dom-accessibility-api: 0.6.3 dom-accessibility-api: 0.6.3
picocolors: 1.1.1 picocolors: 1.1.1
redent: 3.0.0 redent: 3.0.0
optionalDependencies:
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.4(@types/react@19.2.18))(@types/react@19.2.18)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
dependencies: dependencies:
@@ -12113,12 +12119,12 @@ snapshots:
'@vercel/oidc@3.2.0': {} '@vercel/oidc@3.2.0': {}
'@vitejs/plugin-react@6.0.5(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@vitejs/plugin-react@6.0.5(@rolldown/plugin-babel@0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)))(babel-plugin-react-compiler@1.0.0)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@rolldown/pluginutils': 1.0.1 '@rolldown/pluginutils': 1.0.1
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
optionalDependencies: optionalDependencies:
'@rolldown/plugin-babel': 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) '@rolldown/plugin-babel': 0.2.3(@babel/core@8.0.1)(@babel/runtime@7.29.7)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
babel-plugin-react-compiler: 1.0.0 babel-plugin-react-compiler: 1.0.0
'@vitest/coverage-v8@4.1.10(vitest@4.1.10)': '@vitest/coverage-v8@4.1.10(vitest@4.1.10)':
@@ -12133,7 +12139,7 @@ snapshots:
obug: 2.1.4 obug: 2.1.4
std-env: 4.2.0 std-env: 4.2.0
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@vitest/expect@4.1.10': '@vitest/expect@4.1.10':
dependencies: dependencies:
@@ -12144,14 +12150,14 @@ snapshots:
chai: 6.2.2 chai: 6.2.2
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
'@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0))': '@vitest/mocker@4.1.10(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))':
dependencies: dependencies:
'@vitest/spy': 4.1.10 '@vitest/spy': 4.1.10
estree-walker: 3.0.3 estree-walker: 3.0.3
magic-string: 0.30.21 magic-string: 0.30.21
optionalDependencies: optionalDependencies:
msw: 2.14.6(@types/node@26.2.0)(typescript@7.0.2) msw: 2.14.6(@types/node@26.2.0)(typescript@7.0.2)
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
'@vitest/pretty-format@4.1.10': '@vitest/pretty-format@4.1.10':
dependencies: dependencies:
@@ -12406,7 +12412,7 @@ snapshots:
react: 19.2.8 react: 19.2.8
react-dom: 19.2.8(react@19.2.8) react-dom: 19.2.8(react@19.2.8)
solid-js: 1.9.14 solid-js: 1.9.14
vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
transitivePeerDependencies: transitivePeerDependencies:
- '@cloudflare/workers-types' - '@cloudflare/workers-types'
- '@opentelemetry/api' - '@opentelemetry/api'
@@ -13614,7 +13620,7 @@ snapshots:
kleur@4.1.5: {} kleur@4.1.5: {}
knip@6.32.0: knip@6.32.1:
dependencies: dependencies:
fdir: 6.5.0(picomatch@4.0.5) fdir: 6.5.0(picomatch@4.0.5)
formatly: 0.3.0 formatly: 0.3.0
@@ -15650,7 +15656,7 @@ snapshots:
minimist: 1.2.8 minimist: 1.2.8
strip-bom: 3.0.0 strip-bom: 3.0.0
tsdown@0.22.14(@typescript/native-preview@7.0.0-dev.20260707.2)(oxc-resolver@11.24.2)(tsx@4.23.11)(typescript@7.0.2): tsdown@0.22.14(@typescript/native-preview@7.0.0-dev.20260707.2)(oxc-resolver@11.24.2)(tsx@4.23.12)(typescript@7.0.2):
dependencies: dependencies:
ansis: 4.3.1 ansis: 4.3.1
cac: 7.0.0 cac: 7.0.0
@@ -15668,7 +15674,7 @@ snapshots:
unconfig-core: 7.5.0 unconfig-core: 7.5.0
verkit: 0.3.2 verkit: 0.3.2
optionalDependencies: optionalDependencies:
tsx: 4.23.11 tsx: 4.23.12
typescript: 7.0.2 typescript: 7.0.2
transitivePeerDependencies: transitivePeerDependencies:
- '@typescript/native-preview' - '@typescript/native-preview'
@@ -15680,7 +15686,7 @@ snapshots:
tslib@2.8.1: {} tslib@2.8.1: {}
tsx@4.23.11: tsx@4.23.12:
dependencies: dependencies:
esbuild: 0.28.2 esbuild: 0.28.2
optionalDependencies: optionalDependencies:
@@ -15808,7 +15814,7 @@ snapshots:
unpipe@1.0.0: {} unpipe@1.0.0: {}
unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)): unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)):
dependencies: dependencies:
'@jridgewell/remapping': 2.3.5 '@jridgewell/remapping': 2.3.5
picomatch: 4.0.5 picomatch: 4.0.5
@@ -15816,7 +15822,7 @@ snapshots:
optionalDependencies: optionalDependencies:
esbuild: 0.28.2 esbuild: 0.28.2
rolldown: 1.2.3 rolldown: 1.2.3
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
until-async@3.0.2: until-async@3.0.2:
optional: true optional: true
@@ -15877,7 +15883,7 @@ snapshots:
string_decoder: 1.3.0 string_decoder: 1.3.0
util-deprecate: 1.0.2 util-deprecate: 1.0.2
vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0): vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0):
dependencies: dependencies:
lightningcss: 1.33.0 lightningcss: 1.33.0
picomatch: 4.0.5 picomatch: 4.0.5
@@ -15889,13 +15895,13 @@ snapshots:
esbuild: 0.28.2 esbuild: 0.28.2
fsevents: 2.3.3 fsevents: 2.3.3
jiti: 2.7.0 jiti: 2.7.0
tsx: 4.23.11 tsx: 4.23.12
yaml: 2.9.0 yaml: 2.9.0
vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)): vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@26.2.0)(@vitest/coverage-v8@4.1.10)(happy-dom@20.11.2)(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)):
dependencies: dependencies:
'@vitest/expect': 4.1.10 '@vitest/expect': 4.1.10
'@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0)) '@vitest/mocker': 4.1.10(msw@2.14.6(@types/node@26.2.0)(typescript@7.0.2))(vite@8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.10 '@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.10 '@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10 '@vitest/snapshot': 4.1.10
@@ -15912,7 +15918,7 @@ snapshots:
tinyexec: 1.3.0 tinyexec: 1.3.0
tinyglobby: 0.2.17 tinyglobby: 0.2.17
tinyrainbow: 3.1.1 tinyrainbow: 3.1.1
vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.11)(yaml@2.9.0) vite: 8.2.1(@types/node@26.2.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.12)(yaml@2.9.0)
why-is-node-running: 2.3.0 why-is-node-running: 2.3.0
optionalDependencies: optionalDependencies:
'@opentelemetry/api': 1.9.1 '@opentelemetry/api': 1.9.1
+1 -1
View File
@@ -22,7 +22,7 @@
"@typescript/native-preview": "7.0.0-dev.20260707.2", "@typescript/native-preview": "7.0.0-dev.20260707.2",
"drizzle-orm": "1.0.0-rc.4", "drizzle-orm": "1.0.0-rc.4",
"pg": "^8.23.0", "pg": "^8.23.0",
"tsx": "^4.23.11", "tsx": "^4.23.12",
"vitest": "^4.1.10" "vitest": "^4.1.10"
} }
} }