diff --git a/.agents/skills/typescript-monorepo/SKILL.md b/.agents/skills/typescript-monorepo/SKILL.md index 1a412f8b9..1598e5083 100644 --- a/.agents/skills/typescript-monorepo/SKILL.md +++ b/.agents/skills/typescript-monorepo/SKILL.md @@ -15,9 +15,11 @@ strict. - Shared compiler options live in `tsconfig.options.json`. - Root `tsconfig.json` manages project references across the monorepo. -- Typechecking uses `tsgo` and runs through moon: `moonx :typecheck` - (moon builds workspace dependencies first, since types resolve through each - dependency's built dist). +- Typechecking uses TypeScript 7's native `tsc` (the successor to the `tsgo` + preview) and runs through moon: `moonx :typecheck` (moon builds + workspace dependencies first, since types resolve through each dependency's + built dist). Next runs the same `tsc` for its build-time check through + `experimental.useTypeScriptCli`, which is on by default since Next 16.3. ## Project References diff --git a/.moon/tasks/bun-common.yml b/.moon/tasks/bun-common.yml index 8a2b9e169..b04318b92 100644 --- a/.moon/tasks/bun-common.yml +++ b/.moon/tasks/bun-common.yml @@ -11,7 +11,7 @@ inheritedBy: # defined in project moon.yml files): # - package.json: manifest changes (deps, exports) must re-trigger tasks. # - /tsconfig.options.json: every package tsconfig extends the shared root -# options, and several builds emit type declarations (tsgo --build, tsdown +# options, and several builds emit type declarations (tsc --build, tsdown # dts, next build), so compiler-option changes must re-key everything or # stale declarations get restored from cache. implicitInputs: @@ -30,7 +30,7 @@ tasks: # (no TypeScript project references between packages), so typechecking a # project requires its workspace dependencies to be built first. typecheck: - command: 'tsgo --noEmit --pretty' + command: 'tsc --noEmit --pretty' deps: - '^:build' inputs: diff --git a/.oxfmtrc.json b/.oxfmtrc.json index 3e743f85a..35b5f34a4 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -42,6 +42,8 @@ ".next", ".source", ".vercel", + "apps/**/AGENTS.md", + "apps/**/CLAUDE.md", "apps/docs/public/r/*", "apps/docs/next-env.d.ts", "packages/theme/themes/*.json", diff --git a/.oxlintrc.json b/.oxlintrc.json index 98a7e826d..3b720b670 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -19,6 +19,18 @@ { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" } ], + "react/error-boundaries": "error", + "react/globals": "error", + "react/immutability": "error", + "react/incompatible-library": "error", + "react/preserve-manual-memoization": "error", + "react/purity": "error", + "react/refs": "error", + "react/set-state-in-effect": "error", + "react/set-state-in-render": "error", + "react/static-components": "error", + "react/use-memo": "error", + "sort-imports": [ "error", { diff --git a/apps/diffshub/AGENTS.md b/apps/diffshub/AGENTS.md new file mode 100644 index 000000000..643577dfa --- /dev/null +++ b/apps/diffshub/AGENTS.md @@ -0,0 +1,9 @@ + + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices. + +This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. + + diff --git a/apps/diffshub/CLAUDE.md b/apps/diffshub/CLAUDE.md new file mode 100644 index 000000000..43c994c2d --- /dev/null +++ b/apps/diffshub/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/apps/diffshub/components/DiffUrlForm.tsx b/apps/diffshub/components/DiffUrlForm.tsx index c0d8f3082..e898939fd 100644 --- a/apps/diffshub/components/DiffUrlForm.tsx +++ b/apps/diffshub/components/DiffUrlForm.tsx @@ -49,6 +49,7 @@ export function DiffUrlForm({ }: DiffUrlFormProps) { const router = useRouter(); const [isPending, startTransition] = useTransition(); + const [previousInitialUrl, setPreviousInitialUrl] = useState(initialUrl); const [url, setURL] = useState(initialUrl); const [validationError, setValidationError] = useState(null); // Tracks the input's viewport position when an error is shown so the portal @@ -58,14 +59,15 @@ export function DiffUrlForm({ left: number; } | null>(null); // Preserves the last message so the popover still has content while fading out. - const lastErrorText = useRef(null); + const [lastErrorText, setLastErrorText] = useState(null); // Prevents the onBlur restore from firing when blur is caused by Enter. const isSubmittingRef = useRef(false); const inputRef = useRef(null); - useEffect(() => { + if (previousInitialUrl !== initialUrl) { + setPreviousInitialUrl(initialUrl); setURL(initialUrl); - }, [initialUrl]); + } useEffect(() => { onUrlChange?.(url); @@ -99,7 +101,7 @@ export function DiffUrlForm({ if (viewerHref == null) { const rect = inputRef.current?.getBoundingClientRect(); if (rect != null) setErrorAnchor({ top: rect.bottom, left: rect.left }); - lastErrorText.current = 'Please enter a valid URL'; + setLastErrorText('Please enter a valid URL'); setValidationError('Please enter a valid URL'); return; } @@ -193,7 +195,7 @@ export function DiffUrlForm({ }} >
- {lastErrorText.current} + {lastErrorText}
, document.body )} diff --git a/apps/diffshub/components/DiffsHubFileTree.tsx b/apps/diffshub/components/DiffsHubFileTree.tsx index fe3180f85..6460c2c66 100644 --- a/apps/diffshub/components/DiffsHubFileTree.tsx +++ b/apps/diffshub/components/DiffsHubFileTree.tsx @@ -11,6 +11,7 @@ import { type CSSProperties, memo, useEffect, useRef, useState } from 'react'; import type { FileTreePublicId } from '../../../packages/trees/dist/model/publicTypes'; import { ThemedFileTree } from './ThemedFileTree'; +import { useLatestValueRef } from './useLatestValueRef'; import { BASE_FILE_TREE_OPTIONS, CODE_VIEW_FILE_TREE_ITEM_HEIGHT, @@ -50,18 +51,18 @@ export const DiffsHubFileTree = memo(function DiffsHubFileTree({ onSelectItem, source, }: DiffsHubFileTreeProps) { - const sourceRef = useRef(source); + const sourceRef = useLatestValueRef(source); const previousSourceRef = useRef(source); const [initialVisibleRowCount] = useState(getInitialBatchSize); - sourceRef.current = source; // `source.paths` aliases the streaming accumulator's live array, so it keeps // growing on later publishes. The FileTree model consumes its path list // exactly once via useFileTree's useState initializer; capture a bounded // snapshot here so the first model build uses only what `pathCount` // describes and so subsequent streaming re-renders don't re-slice the // ever-growing live array. - const initialPathsRef = useRef(null); - initialPathsRef.current ??= source.paths.slice(0, source.pathCount); + const [initialPaths] = useState(() => + source.paths.slice(0, source.pathCount) + ); const onSelectionChange = useStableCallback( (selectedPaths: readonly FileTreePublicId[]) => { if (selectedPaths.length !== 1 || onSelectItem == null) { @@ -78,7 +79,7 @@ export const DiffsHubFileTree = memo(function DiffsHubFileTree({ const { model } = useFileTree({ ...BASE_FILE_TREE_OPTIONS, gitStatus: source.gitStatus, - paths: initialPathsRef.current, + paths: initialPaths, sort: PRESERVE_INPUT_ORDER_SORT, onSelectionChange, itemHeight: CODE_VIEW_FILE_TREE_ITEM_HEIGHT, diff --git a/apps/diffshub/components/DiffsHubHeader.tsx b/apps/diffshub/components/DiffsHubHeader.tsx index c7b090d13..a1246713d 100644 --- a/apps/diffshub/components/DiffsHubHeader.tsx +++ b/apps/diffshub/components/DiffsHubHeader.tsx @@ -325,10 +325,10 @@ export const DiffsHubHeader = memo(function DiffsHubHeader({ ); }); -function colorModeIcon(colorMode: ColorMode) { - if (colorMode === 'light') return IconColorLight; - if (colorMode === 'dark') return IconColorDark; - return IconColorAuto; +function renderColorModeIcon(colorMode: ColorMode, className: string) { + if (colorMode === 'light') return ; + if (colorMode === 'dark') return ; + return ; } interface ThemeDropdownProps { @@ -357,7 +357,6 @@ function ThemeDropdown({ setLightThemeName, themeDropdownStyle, }: ThemeDropdownProps) { - const TriggerIcon = colorModeIcon(colorMode); const [view, setView] = useState<'main' | 'light' | 'dark'>('main'); // Only offer a reset when at least one slot drifts from the default // pierre pair, so the link stays out of the way until it's useful. @@ -383,7 +382,7 @@ function ThemeDropdown({ title="Theme settings" className={CHROME_ICON_BUTTON_CLASS} > - + {renderColorModeIcon(colorMode, 'size-4 md:size-3')} void): () => void { + const mediaQuery = getMobileMediaQueryList(); + mediaQuery.addEventListener('change', onChange); + return () => mediaQuery.removeEventListener('change', onChange); +} + +function getMobileViewportSnapshot(): boolean { + return getMobileMediaQueryList().matches; +} + +function getServerMobileViewportSnapshot(): undefined { + return undefined; +} + interface DiffsHubSidebarProps { className?: string; commentSections: readonly DiffsHubSavedCommentItem[]; @@ -112,6 +136,13 @@ export const DiffsHubSidebar = memo(function DiffsHubSidebar({ ); const [activeStatusPanel, setActiveStatusPanel] = useState('diffStats'); + const isMobileViewport = useSyncExternalStore( + subscribeToMobileViewport, + getMobileViewportSnapshot, + getServerMobileViewportSnapshot + ); + const [previousMobileOverlayOpen, setPreviousMobileOverlayOpen] = + useState(false); const [fileTreeModel, setFileTreeModel] = useState(null); // Inclusion filter: the statuses the tree should show. Empty means "no // filter" — every file is shown — so the menu opens with nothing checked and @@ -162,14 +193,20 @@ export const DiffsHubSidebar = memo(function DiffsHubSidebar({ }); }, []); - useEffect(() => { - if (mobileOverlayOpen && window.matchMedia(MOBILE_MEDIA_QUERY).matches) { + // Reset the panel once when a mobile overlay opens, while still allowing the + // user to reopen it during that same overlay session. + if ( + isMobileViewport !== undefined && + previousMobileOverlayOpen !== mobileOverlayOpen + ) { + setPreviousMobileOverlayOpen(mobileOverlayOpen); + if (mobileOverlayOpen && isMobileViewport) { setActiveStatusPanel(null); } - }, [mobileOverlayOpen]); + } useEffect(() => { - if (!mobileOverlayOpen || !window.matchMedia(MOBILE_MEDIA_QUERY).matches) { + if (!mobileOverlayOpen || isMobileViewport !== true) { return undefined; } @@ -193,7 +230,7 @@ export const DiffsHubSidebar = memo(function DiffsHubSidebar({ codeViewScroll.style.overflow = previousCodeViewOverflow ?? ''; } }; - }, [mobileOverlayOpen, scrollRef]); + }, [isMobileViewport, mobileOverlayOpen, scrollRef]); return ( <> diff --git a/apps/diffshub/components/ReviewUI.tsx b/apps/diffshub/components/ReviewUI.tsx index 36c0b84a4..ea543a443 100644 --- a/apps/diffshub/components/ReviewUI.tsx +++ b/apps/diffshub/components/ReviewUI.tsx @@ -8,9 +8,9 @@ import { type ReactNode, useCallback, useEffect, - useMemo, useRef, useState, + useSyncExternalStore, } from 'react'; import { DiffsHubHeader } from './DiffsHubHeader'; @@ -18,6 +18,7 @@ import { DiffsHubSidebar } from './DiffsHubSidebar'; import { DiffsHubStatusPanel } from './DiffsHubStatusPanel'; import { DiffsHubViewer } from './DiffsHubViewer'; import { ThemeSourceProvider } from './ThemeSourceProvider'; +import { useGitHubDiffFileLoader } from './useGitHubDiffFileLoader'; import { useGitHubToken } from './useGitHubToken'; import { usePatchLoader } from './usePatchLoader'; import { useThemeCycle } from './useThemeCycle'; @@ -26,7 +27,6 @@ import { themeController, } from '@/components/themeController'; import { preloadAvatars } from '@/lib/annotation'; -import { createGitHubDiffFileLoader } from '@/lib/githubDiffFileLoader'; import { removeSavedCommentSidebarEntry } from '@/lib/removeSavedCommentSidebarEntry'; import type { DarkThemeName, LightThemeName } from '@/lib/themeNames'; import type { @@ -43,6 +43,20 @@ interface ReviewUIProps { path: string; } +// Hydration state changes only once, from the server snapshot to the client +// snapshot, so there is no external source to subscribe to. +function nullSubscription(): () => void { + return () => {}; +} + +function getClientHydrationState(): boolean { + return true; +} + +function getServerHydrationState(): boolean { + return false; +} + export function ReviewUI({ domain, initialUrl, path }: ReviewUIProps) { // Provide the diffshub-scoped theme context, then render the body BELOW it so // the diffs hook + selection hook can read the controller context. @@ -73,15 +87,13 @@ function ReviewUIInner({ domain, initialUrl, path }: ReviewUIProps) { token: githubToken, tokenVersion: githubTokenVersion, } = useGitHubToken(); - const githubTokenRef = useRef(githubToken); - const githubTokenVersionRef = useRef(githubTokenVersion); - useEffect(() => { - githubTokenRef.current = githubToken; - }, [githubToken]); - useEffect(() => { - githubTokenVersionRef.current = githubTokenVersion; - }, [githubTokenVersion]); - const getGitHubToken = useCallback(() => githubTokenRef.current, []); + const { getGitHubToken, loadDiffFiles } = useGitHubDiffFileLoader({ + domain, + hasGitHubToken, + path, + token: githubToken, + tokenVersion: githubTokenVersion, + }); // All theming state — color mode and the light/dark theme-name picks — lives // in the single @pierre/theming controller (the same instance the app-wide // ThemeProvider is bound to). Reading it here means picking Auto/Light/Dark @@ -93,14 +105,15 @@ function ReviewUIInner({ domain, initialUrl, path }: ReviewUIProps) { // on the client, so useSyncExternalStore would surface them on the very first // client render — but the server rendered the defaults. Gate every // theme-derived value (rendered into inline chrome styles + the CodeView - // themeType) behind a client-mounted flag so the first client render matches + // themeType) behind a hydration snapshot so the first client render matches // the SSR markup, then flips to the user's selection. This also keeps the // long-lived WorkerPool and the CodeView from mounting against the default // palette before the persisted values apply. - const [themesHydrated, setThemesHydrated] = useState(false); - useEffect(() => { - setThemesHydrated(true); - }, []); + const themesHydrated = useSyncExternalStore( + nullSubscription, + getClientHydrationState, + getServerHydrationState + ); const colorMode: ColorMode = themesHydrated ? themeState.mode : 'system'; const appResolvedTheme = themesHydrated @@ -138,16 +151,6 @@ function ReviewUIInner({ domain, initialUrl, path }: ReviewUIProps) { const viewerRef = useRef | null>( null ); - const loadDiffFiles = useMemo( - () => - domain == null && hasGitHubToken - ? createGitHubDiffFileLoader(path, { - getAuthVersion: () => githubTokenVersionRef.current, - getToken: () => githubTokenRef.current, - }) - : undefined, - [domain, hasGitHubToken, path] - ); const handlePatchLoadStart = useCallback(() => { setFileTreeOverlayOpen(false); }, []); diff --git a/apps/diffshub/components/ThemeProvider.tsx b/apps/diffshub/components/ThemeProvider.tsx index 233fae782..a3e0562d4 100644 --- a/apps/diffshub/components/ThemeProvider.tsx +++ b/apps/diffshub/components/ThemeProvider.tsx @@ -9,7 +9,7 @@ import { useContext, useEffect, useMemo, - useState, + useSyncExternalStore, } from 'react'; import { themeController } from './themeController'; @@ -31,6 +31,18 @@ interface ThemeContextValue { const COLOR_MODES: ColorMode[] = ['light', 'dark', 'system']; const COLOR_SCHEMES: ColorScheme[] = ['light', 'dark']; +function subscribeToHydration(): () => void { + return () => {}; +} + +function getClientHydrationSnapshot(): boolean { + return true; +} + +function getServerHydrationSnapshot(): boolean { + return false; +} + // Navbar tint (iOS Safari's ) for each resolved color // scheme. These match the global body `--background` (oklch(1)/oklch(0.145)) // that iOS samples at the top of the page, so the navbar blends with the page @@ -117,10 +129,11 @@ export function ThemeProvider({ // useTheme() matches the SSR markup first, then flips. The DOM application // below still uses the real resolved scheme (the pre-paint bootstrap script // already painted it), so this gate is invisible. - const [mounted, setMounted] = useState(false); - useEffect(() => { - setMounted(true); - }, []); + const mounted = useSyncExternalStore( + subscribeToHydration, + getClientHydrationSnapshot, + getServerHydrationSnapshot + ); const colorMode = mounted ? state.mode : undefined; const resolvedColorScheme = mounted ? state.resolvedColorScheme : undefined; diff --git a/apps/diffshub/components/ThemedFileTree.tsx b/apps/diffshub/components/ThemedFileTree.tsx index 57074d09f..27be81e12 100644 --- a/apps/diffshub/components/ThemedFileTree.tsx +++ b/apps/diffshub/components/ThemedFileTree.tsx @@ -1,7 +1,6 @@ 'use client'; import { FileTree, type FileTreeProps } from '@pierre/trees/react'; -import type { CSSProperties } from 'react'; import { useMemo } from 'react'; import { useTreeThemeProps } from './useTreeThemeProps'; @@ -25,7 +24,7 @@ export function ThemedFileTree({ reconcileForegroundFromChrome, }); const mergedStyle = useMemo( - () => ({ ...themeProps.style, ...style }) as CSSProperties, + () => ({ ...themeProps.style, ...style }), [themeProps.style, style] ); return ; diff --git a/apps/diffshub/components/Toaster.tsx b/apps/diffshub/components/Toaster.tsx index cf060329a..3722f887b 100644 --- a/apps/diffshub/components/Toaster.tsx +++ b/apps/diffshub/components/Toaster.tsx @@ -11,7 +11,7 @@ const Toaster = ({ ...props }: ToasterProps) => { return ( (undefined); useEffect(() => { if (pool == null) { - setStats(undefined); return undefined; - } else { - return pool.subscribeToStatChanges((newStats) => { - setStats((prevStats): WorkerStats | undefined => { - if (areWorkerStatsEqual(prevStats, newStats)) { - return prevStats; - } - return newStats; - }); - }); } + return pool.subscribeToStatChanges((newStats) => { + setStats((prevStats): WorkerStats | undefined => { + if (areWorkerStatsEqual(prevStats, newStats)) { + return prevStats; + } + return newStats; + }); + }); }, [pool]); + const visibleStats = pool == null ? undefined : stats; return ( - stats != null && ( + visibleStats != null && ( diff --git a/apps/diffshub/components/useGitHubDiffFileLoader.ts b/apps/diffshub/components/useGitHubDiffFileLoader.ts new file mode 100644 index 000000000..93e86c3d6 --- /dev/null +++ b/apps/diffshub/components/useGitHubDiffFileLoader.ts @@ -0,0 +1,52 @@ +'use client'; + +import { type FileDiffContentsLoader } from '@pierre/diffs'; +import { useCallback, useMemo } from 'react'; + +import { useLatestValueRef } from './useLatestValueRef'; +import { createGitHubDiffFileLoader } from '@/lib/githubDiffFileLoader'; + +interface UseGitHubDiffFileLoaderOptions { + domain?: string; + hasGitHubToken: boolean; + path: string; + token: string; + tokenVersion: number; +} + +interface UseGitHubDiffFileLoaderResult { + getGitHubToken(): string; + loadDiffFiles: FileDiffContentsLoader | undefined; +} + +// Keeps the loader and its cache stable while its deferred auth callbacks read +// the latest committed token. The token refs update in the insertion phase, so +// a load started from any effect in the same commit already sees the new token. +// Lives in its own hook so the ref reads the loader factory retains do not stop +// the React Compiler from compiling the calling component. +export function useGitHubDiffFileLoader({ + domain, + hasGitHubToken, + path, + token, + tokenVersion, +}: UseGitHubDiffFileLoaderOptions): UseGitHubDiffFileLoaderResult { + const tokenRef = useLatestValueRef(token); + const tokenVersionRef = useLatestValueRef(tokenVersion); + const getGitHubToken = useCallback(() => tokenRef.current, [tokenRef]); + /* oxlint-disable react/refs -- the factory retains these getters for the + * returned loader; it does not invoke them during render */ + const loadDiffFiles = useMemo( + () => + domain == null && hasGitHubToken + ? createGitHubDiffFileLoader(path, { + getAuthVersion: () => tokenVersionRef.current, + getToken: () => tokenRef.current, + }) + : undefined, + [domain, hasGitHubToken, path, tokenRef, tokenVersionRef] + ); + /* oxlint-enable react/refs */ + + return { getGitHubToken, loadDiffFiles }; +} diff --git a/apps/diffshub/components/useGitHubToken.ts b/apps/diffshub/components/useGitHubToken.ts index 7dc1a4ec2..47237ded8 100644 --- a/apps/diffshub/components/useGitHubToken.ts +++ b/apps/diffshub/components/useGitHubToken.ts @@ -1,6 +1,6 @@ 'use client'; -import { useCallback, useEffect, useState } from 'react'; +import { useCallback, useState, useSyncExternalStore } from 'react'; const GITHUB_TOKEN_STORAGE_KEY = 'diffshub.github.token'; @@ -12,25 +12,55 @@ export interface GitHubTokenState { tokenVersion: number; } +interface StoredTokenState { + hydrated: boolean; + token: string; + tokenVersion: number; +} + +function subscribeToHydration(): () => void { + return () => {}; +} + +function getClientHydrationSnapshot(): boolean { + return true; +} + +function getServerHydrationSnapshot(): boolean { + return false; +} + // Owns the optional user-provided GitHub token. The token is persisted only in // localStorage for this browser and is not sent anywhere until the loader // explicitly reads it. export function useGitHubToken(): GitHubTokenState { - const [token, setTokenState] = useState(''); - const [tokenVersion, setTokenVersion] = useState(0); + const hydrated = useSyncExternalStore( + subscribeToHydration, + getClientHydrationSnapshot, + getServerHydrationSnapshot + ); + const [state, setState] = useState({ + hydrated: false, + token: '', + tokenVersion: 0, + }); - useEffect(() => { + if (hydrated && !state.hydrated) { const storedToken = readStoredToken(); - if (storedToken !== '') { - setTokenState(storedToken); - setTokenVersion((version) => version + 1); - } - }, []); + setState({ + hydrated: true, + token: storedToken, + tokenVersion: storedToken === '' ? 0 : 1, + }); + } const setToken = useCallback((nextToken: string) => { const normalizedToken = nextToken.trim(); - setTokenState(normalizedToken); - setTokenVersion((version) => version + 1); + setState((current) => ({ + hydrated: true, + token: normalizedToken, + tokenVersion: current.tokenVersion + 1, + })); writeStoredToken(normalizedToken); }, []); @@ -40,10 +70,10 @@ export function useGitHubToken(): GitHubTokenState { return { clearToken, - hasToken: token !== '', + hasToken: state.token !== '', setToken, - token, - tokenVersion, + token: state.token, + tokenVersion: state.tokenVersion, }; } diff --git a/apps/diffshub/components/useLatestValueRef.ts b/apps/diffshub/components/useLatestValueRef.ts new file mode 100644 index 000000000..b2b3e8678 --- /dev/null +++ b/apps/diffshub/components/useLatestValueRef.ts @@ -0,0 +1,11 @@ +import { type RefObject, useInsertionEffect, useRef } from 'react'; + +// Keeps imperative callbacks on the latest committed value without changing +// the ref's identity or mutating it during render. +export function useLatestValueRef(value: T): RefObject { + const valueRef = useRef(value); + useInsertionEffect(() => { + valueRef.current = value; + }, [value]); + return valueRef; +} diff --git a/apps/diffshub/components/usePatchLoader.ts b/apps/diffshub/components/usePatchLoader.ts index 25745efa9..dd9eae9cd 100644 --- a/apps/diffshub/components/usePatchLoader.ts +++ b/apps/diffshub/components/usePatchLoader.ts @@ -17,6 +17,7 @@ import { useState, } from 'react'; +import { useLatestValueRef } from './useLatestValueRef'; import { CODE_VIEW_BATCH_COUNT, getInitialBatchSize } from '@/lib/constants'; import { appendFileDiffToDiffsHubData, @@ -117,8 +118,7 @@ export function usePatchLoader({ // Mirrors the latest collapse mode so the streaming code path (which lives // inside a long-lived effect/closure) can read the live value without us // having to re-bind it on every change. - const collapseModeRef = useRef(collapseMode); - collapseModeRef.current = collapseMode; + const collapseModeRef = useLatestValueRef(collapseMode); // Pre-mutates fresh items so they arrive in the viewer matching the current // collapse mode, then records their ids for later bulk updates. Diff items @@ -126,17 +126,18 @@ export function usePatchLoader({ // deleted-file diffs as collapsed by default — without an unconditional // overwrite, those would stay collapsed even when the user is in expanded // mode. - const prepareItemsForViewer = ( - items: readonly CodeViewItem[] - ): void => { - const targetCollapsed = collapseModeRef.current === 'collapsed'; - for (const item of items) { - loadedItemIdsRef.current.add(item.id); - if (item.type === 'diff') { - item.collapsed = targetCollapsed; + const prepareItemsForViewer = useCallback( + (items: readonly CodeViewItem[]): void => { + const targetCollapsed = collapseModeRef.current === 'collapsed'; + for (const item of items) { + loadedItemIdsRef.current.add(item.id); + if (item.type === 'diff') { + item.collapsed = targetCollapsed; + } } - } - }; + }, + [collapseModeRef] + ); const applyCollapseModeToLoaded = useStableCallback( (mode: 'expanded' | 'collapsed') => { @@ -491,6 +492,7 @@ export function usePatchLoader({ loadAttempt, onLoadStart, path, + prepareItemsForViewer, tryApplyLineHashTarget, viewerRef, ]); diff --git a/apps/diffshub/components/useThemeCycle.ts b/apps/diffshub/components/useThemeCycle.ts index 25d189570..95804931c 100644 --- a/apps/diffshub/components/useThemeCycle.ts +++ b/apps/diffshub/components/useThemeCycle.ts @@ -1,8 +1,9 @@ 'use client'; import { type ColorMode } from '@pierre/theming'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useLatestValueRef } from './useLatestValueRef'; import { docsThemeCatalog } from '@/components/themeCatalog'; import type { DarkThemeName, LightThemeName } from '@/lib/themeNames'; @@ -34,6 +35,12 @@ interface UseThemeCycleArgs { setColorMode: (mode: ColorMode) => void; } +interface ThemeCycleStartState { + darkThemeName: DarkThemeName; + lightThemeName: LightThemeName; + resolvedThemeMode: 'light' | 'dark' | undefined; +} + // Drives a sweep through every available Shiki theme — all the light // themes, then all the dark themes, then back around — so users can // preview the full catalog without manually picking each one. The @@ -55,12 +62,11 @@ export function useThemeCycle({ // Capture the latest theme state in refs so the cycle effect doesn't // restart its interval (and re-anchor the rotation order) every time // the cycle advances. Each tick reads the same captured sequence. - const lightThemeNameRef = useRef(lightThemeName); - const darkThemeNameRef = useRef(darkThemeName); - const resolvedModeRef = useRef(resolvedThemeMode); - lightThemeNameRef.current = lightThemeName; - darkThemeNameRef.current = darkThemeName; - resolvedModeRef.current = resolvedThemeMode; + const cycleStartStateRef = useLatestValueRef({ + darkThemeName, + lightThemeName, + resolvedThemeMode, + }); const bumpDuration = useCallback(() => { setStepSeconds((prev) => { @@ -77,7 +83,8 @@ export function useThemeCycle({ useEffect(() => { if (!cycling) return undefined; - const startMode = resolvedModeRef.current ?? 'light'; + const cycleStartState = cycleStartStateRef.current; + const startMode = cycleStartState.resolvedThemeMode ?? 'light'; // Snapshot the catalog once per cycle start; each tick reads the same // captured sequence. const lightThemes = docsThemeCatalog.getThemeNames({ @@ -86,11 +93,11 @@ export function useThemeCycle({ const darkThemes = docsThemeCatalog.getThemeNames({ colorScheme: 'dark' }); const lightStartIdx = Math.max( 0, - lightThemes.indexOf(lightThemeNameRef.current) + lightThemes.indexOf(cycleStartState.lightThemeName) ); const darkStartIdx = Math.max( 0, - darkThemes.indexOf(darkThemeNameRef.current) + darkThemes.indexOf(cycleStartState.darkThemeName) ); type Step = | { mode: 'light'; theme: LightThemeName } @@ -132,7 +139,14 @@ export function useThemeCycle({ tick(); const intervalId = window.setInterval(tick, stepSeconds * 1000); return () => window.clearInterval(intervalId); - }, [cycling, stepSeconds, setLightThemeName, setDarkThemeName, setColorMode]); + }, [ + cycleStartStateRef, + cycling, + stepSeconds, + setLightThemeName, + setDarkThemeName, + setColorMode, + ]); return useMemo( () => ({ cycling, stepSeconds, bumpDuration, toggleCycle }), diff --git a/apps/diffshub/lib/annotationThemeStyle.ts b/apps/diffshub/lib/annotationThemeStyle.ts index 9559db1ca..772c18144 100644 --- a/apps/diffshub/lib/annotationThemeStyle.ts +++ b/apps/diffshub/lib/annotationThemeStyle.ts @@ -33,5 +33,5 @@ export function buildAnnotationThemeStyle( } } - return Object.keys(style).length > 0 ? (style as CSSProperties) : undefined; + return Object.keys(style).length > 0 ? style : undefined; } diff --git a/apps/diffshub/lib/test/chromeThemeProps.test.ts b/apps/diffshub/lib/test/chromeThemeProps.test.ts index d2b3e1228..f1b23839b 100644 --- a/apps/diffshub/lib/test/chromeThemeProps.test.ts +++ b/apps/diffshub/lib/test/chromeThemeProps.test.ts @@ -1,6 +1,5 @@ import darkSoftTheme from '@pierre/theme/pierre-dark-soft'; import lightSoftTheme from '@pierre/theme/pierre-light-soft'; -import type { ThemeLike } from '@pierre/theming'; import { describe, expect, test } from 'bun:test'; import type { CSSProperties } from 'react'; @@ -142,7 +141,7 @@ const DARK_SOFT_CHROME: Record = { describe('chromeThemeProps + diffshubChromeMapping', () => { test('matches the pre-theming chrome byte-for-byte (pierre-light-soft)', () => { const { style } = chromeThemeProps( - { theme: lightSoftTheme as ThemeLike, colorScheme: 'light' }, + { theme: lightSoftTheme, colorScheme: 'light' }, diffshubChromeMapping ); expect(style).toEqual(LIGHT_SOFT_CHROME as CSSProperties); @@ -150,7 +149,7 @@ describe('chromeThemeProps + diffshubChromeMapping', () => { test('matches the pre-theming chrome byte-for-byte (pierre-dark-soft)', () => { const { style } = chromeThemeProps( - { theme: darkSoftTheme as ThemeLike, colorScheme: 'dark' }, + { theme: darkSoftTheme, colorScheme: 'dark' }, diffshubChromeMapping ); expect(style).toEqual(DARK_SOFT_CHROME as CSSProperties); diff --git a/apps/diffshub/lib/test/themeSource.test.ts b/apps/diffshub/lib/test/themeSource.test.ts index 49d6b732f..e016687dc 100644 --- a/apps/diffshub/lib/test/themeSource.test.ts +++ b/apps/diffshub/lib/test/themeSource.test.ts @@ -20,7 +20,7 @@ function makeResolver( const warm = new Map(); return { getResolvedTheme(name) { - return warm.get(name) as never; + return warm.get(name); }, resolveTheme(name) { const theme = themes[name]; @@ -30,7 +30,7 @@ function makeResolver( }, getResolvedOrResolveTheme(name) { const cached = warm.get(name); - if (cached != null) return cached as never; + if (cached != null) return cached; return this.resolveTheme(name); }, // Unused by the adapters; present to satisfy the interface. diff --git a/apps/diffshub/lib/theme/diffThemeProps.ts b/apps/diffshub/lib/theme/diffThemeProps.ts index b2a1d4467..20978fc39 100644 --- a/apps/diffshub/lib/theme/diffThemeProps.ts +++ b/apps/diffshub/lib/theme/diffThemeProps.ts @@ -6,7 +6,6 @@ // branch for CSS/color-scheme. When diffs accepts resolved objects, this is the // only mapping that changes. import { - type DiffsThemeNames, registerCustomTheme, type ThemeRegistrationResolved, type ThemesType, @@ -32,8 +31,8 @@ export function diffThemeProps(sel: ThemeNameSelection): { } { return { theme: { - dark: sel.darkThemeName as DiffsThemeNames, - light: sel.lightThemeName as DiffsThemeNames, + dark: sel.darkThemeName, + light: sel.lightThemeName, }, themeType: sel.colorScheme, }; diff --git a/apps/diffshub/lib/theme/diffshubChromeMapping.ts b/apps/diffshub/lib/theme/diffshubChromeMapping.ts index 56bdb8436..3c9e9799d 100644 --- a/apps/diffshub/lib/theme/diffshubChromeMapping.ts +++ b/apps/diffshub/lib/theme/diffshubChromeMapping.ts @@ -31,7 +31,7 @@ export const diffshubChromeMapping: ChromeMapping = (chrome, theme) => { // bg-only theme). Mirror the previous behavior: paint just the background when // we have one, otherwise contribute nothing. if (chrome == null) { - return bg != null ? ({ backgroundColor: bg } as CSSProperties) : undefined; + return bg != null ? { backgroundColor: bg } : undefined; } const fg = chrome.fg; @@ -108,5 +108,5 @@ export const diffshubChromeMapping: ChromeMapping = (chrome, theme) => { if (chrome.scrollbarTrack != null) { style['--diffshub-scrollbar-track-bg'] = chrome.scrollbarTrack; } - return style as CSSProperties; + return style; }; diff --git a/apps/diffshub/next.config.mjs b/apps/diffshub/next.config.mjs index 395019ca5..6b26ac012 100644 --- a/apps/diffshub/next.config.mjs +++ b/apps/diffshub/next.config.mjs @@ -26,9 +26,6 @@ const nextConfig = { reactStrictMode: false, reactCompiler: true, devIndicators: false, - experimental: { - cssChunking: 'strict', - }, // Resolve and transpile workspace packages so subpath exports (e.g. @pierre/trees/react) // resolve correctly when Next follows client-component imports from the server. transpilePackages: ['@pierre/trees', '@pierre/diffs'], diff --git a/apps/docs/AGENTS.md b/apps/docs/AGENTS.md new file mode 100644 index 000000000..643577dfa --- /dev/null +++ b/apps/docs/AGENTS.md @@ -0,0 +1,9 @@ + + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` (resolved from this file's directory; in monorepos the `next` package may not be visible from the repo root) before writing any code. Heed deprecation notices. + +This block is written and re-added by `next dev` — verify at `node_modules/next/dist/server/lib/generate-agent-files.js`. Removing it from a diff only re-creates the uncommitted change; committing it with your work keeps the tree clean. + + diff --git a/apps/docs/CLAUDE.md b/apps/docs/CLAUDE.md new file mode 100644 index 000000000..43c994c2d --- /dev/null +++ b/apps/docs/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/apps/docs/app/(diffs)/_edit/SelectionDemo.tsx b/apps/docs/app/(diffs)/_edit/SelectionDemo.tsx index 8873032be..130ed163b 100644 --- a/apps/docs/app/(diffs)/_edit/SelectionDemo.tsx +++ b/apps/docs/app/(diffs)/_edit/SelectionDemo.tsx @@ -21,6 +21,7 @@ import { } from 'react'; import { Button } from '@/components/ui/button'; +import { useLatestValueRef } from '@/lib/useLatestValueRef'; interface SelectionDemoProps { // Server-preloaded, highlighted File; hydrating from it avoids a highlight flash on load. @@ -121,8 +122,7 @@ export function SelectionDemo({ prerenderedFile }: SelectionDemoProps) { }, [prerenderedFile.file.name] ); - const addSnippetRef = useRef(addSnippet); - addSnippetRef.current = addSnippet; + const addSnippetRef = useLatestValueRef(addSnippet); const editorOptions = useMemo>( () => ({ @@ -163,7 +163,7 @@ export function SelectionDemo({ prerenderedFile }: SelectionDemoProps) { return container; }, }), - [] + [addSnippetRef] ); const clearChat = useCallback(() => setSnippets([]), []); diff --git a/apps/docs/app/(diffs)/_home/AgentUi.tsx b/apps/docs/app/(diffs)/_home/AgentUi.tsx index bd6b27f60..b136622f0 100644 --- a/apps/docs/app/(diffs)/_home/AgentUi.tsx +++ b/apps/docs/app/(diffs)/_home/AgentUi.tsx @@ -45,11 +45,12 @@ import { getSessionGitStatus, getSessionPaths, } from './mockData'; - type AgentUiEditorChangeEvent = | EditorChangeEvent<'file', undefined, undefined> | EditorChangeEvent<'file-diff', undefined, undefined>; +import { useLatestValueRef } from '@/lib/useLatestValueRef'; + // Added/removed line totals for a single file's diff. interface DiffStats { additions: number; @@ -132,6 +133,16 @@ function formatSelectionLineLabel( : `(${String(snippet.lineStart)}-${String(snippet.lineEnd)})`; } +// The edited-path set is intentionally imperative; isolate its render-time +// lookup so the surrounding demo component remains compiler-safe. +function useHasEditedPath( + editedPathsRef: { current: ReadonlySet }, + path: string | null +): boolean { + /* oxlint-disable-next-line react/refs -- preserves the existing prerender eligibility check */ + return path != null && editedPathsRef.current.has(path); +} + // Renders the active session's changed files as a @pierre/trees FileTree, with // git-status colours and per-row +/- decorations. The tree is an imperative web // component, so it's created in an effect and torn down on session change. @@ -148,13 +159,11 @@ function ChangesTree({ }) { const containerRef = useRef(null); const treeRef = useRef(null); - const onSelectRef = useRef(onSelect); - onSelectRef.current = onSelect; + const onSelectRef = useLatestValueRef(onSelect); // The FileTree lives for the whole session, so its renderRowDecoration closure // is created once. Reading the latest stats through a ref keeps the decoration // in sync with edits without recreating the tree. - const statsRef = useRef(statsByPath); - statsRef.current = statsByPath; + const statsRef = useLatestValueRef(statsByPath); useEffect(() => { const container = containerRef.current; @@ -225,7 +234,7 @@ function ChangesTree({ tree.cleanUp(); treeRef.current = null; }; - }, [session]); + }, [onSelectRef, session, statsRef]); // Inline color-scheme beats the tree's `:host { color-scheme: light dark }`, // pinning its light-dark() colours to the demo's dark mode. @@ -306,10 +315,12 @@ function FilesTree({ }) { const containerRef = useRef(null); const treeRef = useRef(null); - const onSelectRef = useRef(onSelect); - onSelectRef.current = onSelect; - const onModelReadyRef = useRef(onModelReady); - onModelReadyRef.current = onModelReady; + const onSelectRef = useLatestValueRef(onSelect); + const onModelReadyRef = useLatestValueRef(onModelReady); + const notifyModelReady = useCallback( + (model: FileTree | null) => onModelReadyRef.current(model), + [onModelReadyRef] + ); useEffect(() => { const container = containerRef.current; @@ -347,14 +358,14 @@ function FilesTree({ treeRef.current = tree; container.innerHTML = ''; tree.render({ fileTreeContainer: container }); - onModelReadyRef.current(tree); + notifyModelReady(tree); return () => { tree.cleanUp(); treeRef.current = null; - onModelReadyRef.current(null); + notifyModelReady(null); }; - }, [session]); + }, [notifyModelReady, onSelectRef, session]); // Inline color-scheme beats the tree's `:host { color-scheme: light dark }`, // pinning its light-dark() colours to the demo's dark mode. @@ -787,8 +798,7 @@ export function AgentUi({ >([]); // Mirror for the tree mutation handlers (whose closures would otherwise read a // stale snapshot) so they can tell explorer-created rows from anything else. - const creationsRef = useRef(explorerCreations); - creationsRef.current = explorerCreations; + const creationsRef = useLatestValueRef(explorerCreations); // New file / New folder: add a placeholder row, track it, and drop it into // inline rename (`removeIfCanceled` discards an unnamed row). Folder paths end @@ -857,7 +867,7 @@ export function AgentUi({ offMove(); offRemove(); }; - }, [filesModel]); + }, [creationsRef, filesModel]); // Files created in the explorer, surfaced in the Changes panel as added files // (whole contents counted as additions). @@ -898,8 +908,7 @@ export function AgentUi({ const [editedPlaceholders, setEditedPlaceholders] = useState([]); // Mirror the latest edits so the stable editor callback can rebuild a // placeholder's Changes entry without depending on edit state. - const editedPlaceholdersRef = useRef(editedPlaceholders); - editedPlaceholdersRef.current = editedPlaceholders; + const editedPlaceholdersRef = useLatestValueRef(editedPlaceholders); // Snippets sent from the selection action's "Add to chat" land here as // composer attachments. @@ -976,10 +985,9 @@ export function AgentUi({ filesModel?.applyGitStatusPatch({ remove: [target] }); } }, - [liveSession, filesModel] + [editedPlaceholdersRef, liveSession, filesModel] ); - const recordEditedStatsRef = useRef(recordEditedStats); - recordEditedStatsRef.current = recordEditedStats; + const recordEditedStatsRef = useLatestValueRef(recordEditedStats); // One external diff baseline per changed file, created up front for worker // priming and reused on every visit so its cache identity remains stable. @@ -1104,16 +1112,19 @@ export function AgentUi({ [addSnippet] ); - const handleEditChange = useCallback((event: AgentUiEditorChangeEvent) => { - const target = activeTargetRef.current; - if (target == null) { - return; - } - editedPathsRef.current.add(target); - // Recompute the edited file's diff against its original snapshot so the - // Changes tree's +/- totals reflect the live edits. - recordEditedStatsRef.current(target, event.file.contents); - }, []); + const handleEditChange = useCallback( + (event: AgentUiEditorChangeEvent) => { + const target = activeTargetRef.current; + if (target == null) { + return; + } + editedPathsRef.current.add(target); + // Recompute the edited file's diff against its original snapshot so the + // Changes tree's +/- totals reflect the live edits. + recordEditedStatsRef.current(target, event.file.contents); + }, + [recordEditedStatsRef] + ); const openFile = useCallback((path: string) => { setActivePath(path); @@ -1128,6 +1139,7 @@ export function AgentUi({ [liveSession, activePath] ); const fileDiff = activeFile != null ? diffs.get(activeFile.path) : undefined; + const activePathIsEdited = useHasEditedPath(editedPathsRef, activePath); // When the active path isn't a changed/added file (e.g. browsing the root // README or another explorer file), open editable placeholder contents @@ -1143,7 +1155,7 @@ export function AgentUi({ // Server-rendered, already-highlighted HTML for the active diff. Only safe // when the file is unedited so the markup matches `fileDiff`. const activePrerenderedHTML = - activePath != null && !editedPathsRef.current.has(activePath) + activePath != null && !activePathIsEdited ? prerenderedDiffs?.[activePath] : undefined; const fileDiffEditStateKey = diff --git a/apps/docs/app/(diffs)/playground/PlaygroundCodeView.tsx b/apps/docs/app/(diffs)/playground/PlaygroundCodeView.tsx index d5cdbb608..2dbf93473 100644 --- a/apps/docs/app/(diffs)/playground/PlaygroundCodeView.tsx +++ b/apps/docs/app/(diffs)/playground/PlaygroundCodeView.tsx @@ -101,6 +101,9 @@ export function PlaygroundCodeView({ }, [onEditingChange] ); + // Starts `true` so mounting with annotations hidden runs the same clearing + // pass as toggling them off later. + const [previousShowAnnotations, setPreviousShowAnnotations] = useState(true); // Item ids whose next completion should revert: Cancel marks the id here // before turning edit off, and the completion handler consumes the mark. @@ -272,19 +275,19 @@ export function PlaygroundCodeView({ // Annotations live on item data, so hiding them is a data change: turning // the toggle off clears any comments that were added. - useEffect(() => { - if (showAnnotations) { - return; + if (previousShowAnnotations !== showAnnotations) { + setPreviousShowAnnotations(showAnnotations); + if (!showAnnotations) { + setSelectedLines(null); + setItems((current) => + current.map((item) => + (item.annotations?.length ?? 0) > 0 + ? { ...item, annotations: [], version: (item.version ?? 0) + 1 } + : item + ) + ); } - setSelectedLines(null); - setItems((current) => - current.map((item) => - (item.annotations?.length ?? 0) > 0 - ? { ...item, annotations: [], version: (item.version ?? 0) + 1 } - : item - ) - ); - }, [showAnnotations]); + } // Match the direct views' precedence: an open comment form (neither a // thread nor a submitted comment) pauses the gutter utility so forms can't diff --git a/apps/docs/app/(diffs)/playground/PlaygroundVirtualizerElementView.tsx b/apps/docs/app/(diffs)/playground/PlaygroundVirtualizerElementView.tsx index 1c4596a6b..292746bc5 100644 --- a/apps/docs/app/(diffs)/playground/PlaygroundVirtualizerElementView.tsx +++ b/apps/docs/app/(diffs)/playground/PlaygroundVirtualizerElementView.tsx @@ -18,7 +18,7 @@ import { useStableCallback, Virtualizer, } from '@pierre/diffs/react'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useCallback, useMemo, useRef, useState } from 'react'; import type { PlaygroundAnnotationMetadata } from './constants'; import { ITEM_UNSAFE_CSS, LONG_README_FILE } from './constants'; @@ -123,6 +123,9 @@ function ElementVirtualizerFile({ const [selectedLines, setSelectedLines] = useState( null ); + // Starts `true` so mounting with annotations hidden clears the selection + // the same way toggling them off later does. + const [previousShowAnnotations, setPreviousShowAnnotations] = useState(true); const editorOptions = useMemo< EditorOptions<'file', PlaygroundAnnotationMetadata, undefined> @@ -196,11 +199,12 @@ function ElementVirtualizerFile({ [] ); - useEffect(() => { + if (previousShowAnnotations !== showAnnotations) { + setPreviousShowAnnotations(showAnnotations); if (!showAnnotations) { setSelectedLines(null); } - }, [showAnnotations]); + } const hasOpenCommentForm = annotations.some( (annotation) => annotation.metadata.body == null @@ -327,6 +331,9 @@ function ElementVirtualizerDiff({ const [selectedLines, setSelectedLines] = useState( null ); + // Starts `true` so mounting with annotations hidden clears the selection + // the same way toggling them off later does. + const [previousShowAnnotations, setPreviousShowAnnotations] = useState(true); const editorOptions = useMemo< EditorOptions<'file-diff', PlaygroundAnnotationMetadata, undefined> @@ -413,11 +420,12 @@ function ElementVirtualizerDiff({ [] ); - useEffect(() => { + if (previousShowAnnotations !== showAnnotations) { + setPreviousShowAnnotations(showAnnotations); if (!showAnnotations) { setSelectedLines(null); } - }, [showAnnotations]); + } // Match the other views' precedence: an open comment form (no submitted // body yet) pauses the gutter utility so another form cannot be opened diff --git a/apps/docs/app/(diffs)/theme/ThemeDemo.tsx b/apps/docs/app/(diffs)/theme/ThemeDemo.tsx index 024e2c48b..e766fe552 100644 --- a/apps/docs/app/(diffs)/theme/ThemeDemo.tsx +++ b/apps/docs/app/(diffs)/theme/ThemeDemo.tsx @@ -311,9 +311,14 @@ interface WorkingFile { export function ThemeDemo() { const { resolvedColorScheme } = useTheme(); - const [colorMode, setColorMode] = useState<'light' | 'dark'>('dark'); + // Seed from the resolved scheme when it is already known (a fresh client + // mount); the change tracking below covers hydration and later flips. + const [colorMode, setColorMode] = useState<'light' | 'dark'>( + () => resolvedColorScheme ?? 'dark' + ); + const [previousResolvedColorScheme, setPreviousResolvedColorScheme] = + useState(resolvedColorScheme); const [activeTab, setActiveTab] = useState('typescript'); - const [mounted, setMounted] = useState(false); const [dropdownOpen, setDropdownOpen] = useState(false); const dropdownRef = useRef(null); @@ -348,13 +353,12 @@ export function ThemeDemo() { [workingFiles] ); - // Sync with system theme on mount - useEffect(() => { - setMounted(true); + if (previousResolvedColorScheme !== resolvedColorScheme) { + setPreviousResolvedColorScheme(resolvedColorScheme); if (resolvedColorScheme === 'light' || resolvedColorScheme === 'dark') { setColorMode(resolvedColorScheme); } - }, [resolvedColorScheme]); + } // Close dropdown when clicking outside useEffect(() => { @@ -460,7 +464,7 @@ export function ThemeDemo() { ); }; - if (!mounted) { + if (resolvedColorScheme == null) { return (
); diff --git a/apps/docs/app/(diffs)/theme/ThemeScreenshots.tsx b/apps/docs/app/(diffs)/theme/ThemeScreenshots.tsx index 71a12cefb..bb3b8f319 100644 --- a/apps/docs/app/(diffs)/theme/ThemeScreenshots.tsx +++ b/apps/docs/app/(diffs)/theme/ThemeScreenshots.tsx @@ -2,7 +2,7 @@ import { IconColorDark, IconColorLight } from '@pierre/icons'; import Image, { type StaticImageData } from 'next/image'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; import pierreDark from '../pierre-dark.png'; import pierreLight from '../pierre-light.png'; @@ -11,17 +11,22 @@ import { ButtonGroup, ButtonGroupItem } from '@/components/ui/button-group'; export function ThemeScreenshots() { const { resolvedColorScheme } = useTheme(); - const [activeTheme, setActiveTheme] = useState<'light' | 'dark'>('dark'); - const [mounted, setMounted] = useState(false); + // Seed from the resolved scheme when it is already known (a fresh client + // mount); the change tracking below covers hydration and later flips. + const [activeTheme, setActiveTheme] = useState<'light' | 'dark'>( + () => resolvedColorScheme ?? 'dark' + ); + const [previousResolvedColorScheme, setPreviousResolvedColorScheme] = + useState(resolvedColorScheme); - useEffect(() => { - setMounted(true); + if (previousResolvedColorScheme !== resolvedColorScheme) { + setPreviousResolvedColorScheme(resolvedColorScheme); if (resolvedColorScheme === 'light' || resolvedColorScheme === 'dark') { setActiveTheme(resolvedColorScheme); } - }, [resolvedColorScheme]); + } - if (!mounted) { + if (resolvedColorScheme == null) { return (
); diff --git a/apps/docs/app/(diffs)/theme/gallery/page.tsx b/apps/docs/app/(diffs)/theme/gallery/page.tsx index 21a352c8a..2b36e41ec 100644 --- a/apps/docs/app/(diffs)/theme/gallery/page.tsx +++ b/apps/docs/app/(diffs)/theme/gallery/page.tsx @@ -182,9 +182,7 @@ export default async function ThemeGalleryPage() { const resolvedThemes = await Promise.all( THEMES.map(async (themeName) => { try { - const theme = await resolveTheme( - themeName as Parameters[0] - ); + const theme = await resolveTheme(themeName); return { name: themeName, type: theme.type, diff --git a/apps/docs/app/(trees)/_components/DemoContextMenuClient.tsx b/apps/docs/app/(trees)/_components/DemoContextMenuClient.tsx index 370d0c71a..4cb2727eb 100644 --- a/apps/docs/app/(trees)/_components/DemoContextMenuClient.tsx +++ b/apps/docs/app/(trees)/_components/DemoContextMenuClient.tsx @@ -9,7 +9,7 @@ import { type FileTreePreloadedData, useFileTree } from '@pierre/trees/react'; import { TreeApp } from '@trees/_components/TreeApp'; import Link from 'next/link'; import type { CSSProperties } from 'react'; -import { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState, useSyncExternalStore } from 'react'; import { sampleFileList } from '../_lib/demo-data'; import { TREE_NEW_VIEWPORT_HEIGHTS } from '../_lib/dimensions'; @@ -80,19 +80,35 @@ function buildContextMenuComposition( }; } +// The portal node is part of the root layout and does not change while the app +// is mounted, so there are no updates to subscribe to after hydration. +function subscribeToPortalContainer(): () => void { + return () => {}; +} + +function getPortalContainer(): HTMLElement | null { + return document.getElementById('dark-mode-portal-container'); +} + +function getServerPortalContainer(): null { + return null; +} + +function usePortalContainer(): HTMLElement | null { + return useSyncExternalStore( + subscribeToPortalContainer, + getPortalContainer, + getServerPortalContainer + ); +} + export function DemoContextMenuClient({ preloadedDataById, }: DemoContextMenuClientProps) { const [activeMode, setActiveMode] = useState('both'); - const [portalContainer, setPortalContainer] = useState( - null - ); + const portalContainer = usePortalContainer(); const [hasMutated, setHasMutated] = useState(false); - useEffect(() => { - setPortalContainer(document.getElementById('dark-mode-portal-container')); - }, []); - const modeByName = useMemo( () => new Map( diff --git a/apps/docs/app/(trees)/_components/DemoDragDropClient.tsx b/apps/docs/app/(trees)/_components/DemoDragDropClient.tsx index 074fe95a5..72f4e534f 100644 --- a/apps/docs/app/(trees)/_components/DemoDragDropClient.tsx +++ b/apps/docs/app/(trees)/_components/DemoDragDropClient.tsx @@ -76,7 +76,6 @@ export function DemoDragDropClient({ preloadedData }: DemoDragDropClientProps) { useEffect(() => { activeModel.resetPaths(sampleFileList); - setHasDragged(false); }, [activeModel]); return ( @@ -107,7 +106,10 @@ export function DemoDragDropClient({ preloadedData }: DemoDragDropClientProps) { { await flushDom(); expect(host.querySelector('[slot="header"]')).toBeNull(); + expect( + host.querySelector('[slot="context-menu"] [data-test-menu]')?.textContent + ).toBe('README.md'); + + await actAndFlush(() => { + dispatchClick(toggleMenuButton); + }); + await flushDom(); + + expect(host.querySelector('[slot="context-menu"]')).toBeNull(); await actAndFlush(() => { dispatchClick(toggleMenuButton); @@ -744,6 +756,20 @@ describe('file-tree React lane', () => { await flushDom(); expect(host.querySelector('[slot="context-menu"]')).toBeNull(); + + await actAndFlush(() => { + readmeButton.dispatchEvent( + new dom.window.MouseEvent('contextmenu', { + bubbles: true, + clientX: 24, + clientY: 36, + }) + ); + }); + + expect( + host.querySelector('[slot="context-menu"] [data-test-menu]')?.textContent + ).toBe('README.md'); }); test('renderContextMenu preserves baseline context-menu trigger settings and handlers', async () => { diff --git a/packages/trees/tsdown.config.ts b/packages/trees/tsdown.config.ts index 703e94f49..2c59676ae 100644 --- a/packages/trees/tsdown.config.ts +++ b/packages/trees/tsdown.config.ts @@ -17,7 +17,7 @@ const config: UserConfig[] = defineConfig([ }, unbundle: true, platform: 'neutral', - noExternal: ['@pierre/path-store', '@pierre/theming'], + deps: { alwaysBundle: ['@pierre/path-store', '@pierre/theming'] }, plugins: [ { name: 'postcss-autoprefixer', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 104fd311b..6a22b55d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,8 +70,8 @@ catalogs: specifier: 4.1.13 version: 4.1.13 '@tsdown/css': - specifier: 0.22.3 - version: 0.22.3 + specifier: 0.22.14 + version: 0.22.14 '@types/bun': specifier: 1.4.0 version: 1.4.0 @@ -90,9 +90,6 @@ catalogs: '@types/node': specifier: 20.19.41 version: 20.19.41 - '@typescript/native-preview': - specifier: 7.0.0-dev.20260622.1 - version: 7.0.0-dev.20260622.1 '@vercel/analytics': specifier: 2.0.1 version: 2.0.1 @@ -169,11 +166,11 @@ catalogs: specifier: 0.55.0 version: 0.55.0 oxlint: - specifier: 1.70.0 - version: 1.70.0 + specifier: 1.80.0 + version: 1.80.0 oxlint-tsgolint: - specifier: 0.23.0 - version: 0.23.0 + specifier: 7.0.2001 + version: 7.0.2001 postcss: specifier: 8.5.6 version: 8.5.6 @@ -220,11 +217,14 @@ catalogs: specifier: 4.1.13 version: 4.1.13 tsdown: - specifier: 0.22.3 - version: 0.22.3 + specifier: 0.22.14 + version: 0.22.14 tw-animate-css: specifier: 1.4.0 version: 1.4.0 + typescript: + specifier: 7.0.2 + version: 7.0.2 unist-util-visit: specifier: 5.0.0 version: 5.0.0 @@ -245,11 +245,10 @@ overrides: '@rolldown/binding-wasm32-wasi>@napi-rs/wasm-runtime': 1.1.5 '@tybys/wasm-util': 0.10.2 baseline-browser-mapping: 2.10.33 - next: 16.2.9 + next: 16.3.3 react: 19.2.7 react-dom: 19.2.7 shiki: 4.4.1 - typescript: 6.0.3 importers: @@ -268,9 +267,6 @@ importers: '@types/bun': specifier: 'catalog:' version: 1.4.0 - '@typescript/native-preview': - specifier: 'catalog:' - version: 7.0.0-dev.20260622.1 lint-staged: specifier: 'catalog:' version: 16.2.7 @@ -279,25 +275,25 @@ importers: version: 0.55.0 oxlint: specifier: 'catalog:' - version: 1.70.0(oxlint-tsgolint@0.23.0) + version: 1.80.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: 'catalog:' - version: 0.23.0 + version: 7.0.2001 postcss-html: specifier: 'catalog:' version: 1.8.1 stylelint: specifier: 'catalog:' - version: 17.13.0(typescript@6.0.3) + version: 17.13.0(typescript@7.0.2) stylelint-config-standard: specifier: 'catalog:' - version: 40.0.0(stylelint@17.13.0(typescript@6.0.3)) + version: 40.0.0(stylelint@17.13.0(typescript@7.0.2)) svgo: specifier: 'catalog:' version: 4.0.1 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 apps/demo: dependencies: @@ -330,8 +326,8 @@ importers: specifier: 'catalog:' version: 5.0.3(vite@8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0)) typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 vite: specifier: 'catalog:' version: 8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0) @@ -364,10 +360,10 @@ importers: version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@vercel/analytics': specifier: 'catalog:' - version: 2.0.1(next@16.2.9(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) + version: 2.0.1(next@16.3.3(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) '@vercel/speed-insights': specifier: 'catalog:' - version: 2.0.0(next@16.2.9(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) + version: 2.0.0(next@16.3.3(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) babel-plugin-react-compiler: specifier: 'catalog:' version: 1.0.0 @@ -381,8 +377,8 @@ importers: specifier: 'catalog:' version: 0.545.0(react@19.2.7) next: - specifier: 16.2.9 - version: 16.2.9(@babel/core@7.29.7)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: 16.3.3 + version: 16.3.3(@babel/core@7.29.7)(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) postcss: specifier: 'catalog:' version: 8.5.6 @@ -427,8 +423,8 @@ importers: specifier: 'catalog:' version: 26.1.0 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 apps/docs: dependencies: @@ -500,13 +496,13 @@ importers: version: 4.4.1 '@vercel/analytics': specifier: 'catalog:' - version: 2.0.1(next@16.2.9(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) + version: 2.0.1(next@16.3.3(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) '@vercel/firewall': specifier: 'catalog:' version: 1.2.1 '@vercel/speed-insights': specifier: 'catalog:' - version: 2.0.0(next@16.2.9(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) + version: 2.0.0(next@16.3.3(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) '@vscode/web-custom-data': specifier: 'catalog:' version: 0.6.3 @@ -532,8 +528,8 @@ importers: specifier: 'catalog:' version: 0.545.0(react@19.2.7) next: - specifier: 16.2.9 - version: 16.2.9(@babel/core@7.29.7)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: 16.3.3 + version: 16.3.3(@babel/core@7.29.7)(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) next-mdx-remote: specifier: 'catalog:' version: 6.0.0(@types/react@19.2.7)(react@19.2.7) @@ -554,7 +550,7 @@ importers: version: 4.0.1 shadcn: specifier: 'catalog:' - version: 3.3.1(@types/node@20.19.41)(typescript@6.0.3) + version: 3.3.1(@types/node@20.19.41)(typescript@7.0.2) shiki: specifier: 4.4.1 version: 4.4.1 @@ -605,8 +601,8 @@ importers: specifier: 'catalog:' version: 26.1.0 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 packages/diffs: dependencies: @@ -640,7 +636,7 @@ importers: version: 1.51.1 '@tsdown/css': specifier: 'catalog:' - version: 0.22.3(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.3)(yaml@2.9.0) + version: 0.22.14(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.14)(yaml@2.9.0) '@types/hast': specifier: 'catalog:' version: 3.0.4 @@ -679,10 +675,10 @@ importers: version: 19.2.7(react@19.2.7) tsdown: specifier: 'catalog:' - version: 0.22.3(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.3)(@typescript/native-preview@7.0.0-dev.20260622.1)(typescript@6.0.3) + version: 0.22.14(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.14)(typescript@7.0.2) typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 vite: specifier: 'catalog:' version: 8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0) @@ -699,8 +695,8 @@ importers: specifier: 'catalog:' version: 1.0.34 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 vite: specifier: 'catalog:' version: 8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0) @@ -709,10 +705,10 @@ importers: devDependencies: tsdown: specifier: 'catalog:' - version: 0.22.3(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.3)(@typescript/native-preview@7.0.0-dev.20260622.1)(typescript@6.0.3) + version: 0.22.14(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.14)(typescript@7.0.2) typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 vite: specifier: 'catalog:' version: 8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0) @@ -735,8 +731,8 @@ importers: specifier: 'catalog:' version: 1.0.0 typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 packages/theming: devDependencies: @@ -763,10 +759,10 @@ importers: version: 4.4.1 tsdown: specifier: 'catalog:' - version: 0.22.3(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.3)(@typescript/native-preview@7.0.0-dev.20260622.1)(typescript@6.0.3) + version: 0.22.14(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.14)(typescript@7.0.2) typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 packages/tree-test-data: {} @@ -802,7 +798,7 @@ importers: version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tsdown/css': specifier: 'catalog:' - version: 0.22.3(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.3)(yaml@2.9.0) + version: 0.22.14(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.14)(yaml@2.9.0) '@types/jsdom': specifier: 'catalog:' version: 28.0.1 @@ -829,10 +825,10 @@ importers: version: 19.2.7(react@19.2.7) tsdown: specifier: 'catalog:' - version: 0.22.3(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.3)(@typescript/native-preview@7.0.0-dev.20260622.1)(typescript@6.0.3) + version: 0.22.14(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.14)(typescript@7.0.2) typescript: - specifier: 6.0.3 - version: 6.0.3 + specifier: 'catalog:' + version: 7.0.2 vite: specifier: 'catalog:' version: 8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0) @@ -923,10 +919,6 @@ packages: resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} - '@babel/generator@8.0.0': - resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-annotate-as-pure@7.29.7': resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} engines: {node: '>=6.9.0'} @@ -981,18 +973,10 @@ packages: resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@8.0.0': - resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-identifier@7.29.7': resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@8.0.0': - resolution: {integrity: sha512-kXxQVZHNOctSJJsqzmcbPSCEkM6oHNnDIkua7g9RCO9xRHj2eCiKvRx2KPdfWR9QxcGWnK/oArrtunmie3rL9g==} - engines: {node: ^22.18.0 || >=24.11.0} - '@babel/helper-validator-option@7.29.7': resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} @@ -1006,11 +990,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@8.0.0': - resolution: {integrity: sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==} - engines: {node: ^22.18.0 || >=24.11.0} - hasBin: true - '@babel/plugin-syntax-jsx@7.29.7': resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} engines: {node: '>=6.9.0'} @@ -1065,10 +1044,6 @@ packages: resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} - '@babel/types@8.0.0': - resolution: {integrity: sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==} - engines: {node: ^22.18.0 || >=24.11.0} - '@braidai/lang@1.1.2': resolution: {integrity: sha512-qBcknbBufNHlui137Hft8xauQMTZDKdophmLFv05r2eNmdIv/MlPuP4TdUknHG68UdWLgVZwgxVe735HzJNIwA==} @@ -1199,152 +1174,161 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-arm64@0.35.3': + resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-x64@0.35.3': + resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + '@img/sharp-freebsd-wasm32@0.35.3': + resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.2': + resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + '@img/sharp-libvips-darwin-x64@1.3.2': + resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + '@img/sharp-libvips-linux-arm64@1.3.2': + resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + '@img/sharp-libvips-linux-arm@1.3.2': + resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + '@img/sharp-libvips-linux-ppc64@1.3.2': + resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + '@img/sharp-libvips-linux-riscv64@1.3.2': + resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + '@img/sharp-libvips-linux-s390x@1.3.2': + resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + '@img/sharp-libvips-linux-x64@1.3.2': + resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm64@0.35.3': + resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm@0.35.3': + resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} + engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-ppc64@0.35.3': + resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} + engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-riscv64@0.35.3': + resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} + engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-s390x@0.35.3': + resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} + engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-x64@0.35.3': + resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-arm64@0.35.3': + resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-x64@0.35.3': + resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-wasm32@0.35.3': + resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.3': + resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} + engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-arm64@0.35.3': + resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-ia32@0.35.3': + resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} + engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-x64@0.35.3': + resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] @@ -1494,57 +1478,57 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@next/env@16.2.9': - resolution: {integrity: sha512-ki5VxxXfzD/9TDe13wyeTKIjQTAwBVpnr8KhRDUr8ltMUq1/NBpWNT5tiPoxiGl+PHM4X2ahSOiPk6iAimIzPg==} + '@next/env@16.3.3': + resolution: {integrity: sha512-U2eYQRwXj+dsqxV79zFqExDdatnNY/ZWc2nsJU1p/OgT7fd3dXwlF6OjYaFQCfMoeTA19PWq+wVmYgimVA+V+g==} - '@next/swc-darwin-arm64@16.2.9': - resolution: {integrity: sha512-HkfxNYUCmcct0Xsqib5KxqMSHV4AHJq857BNRchyBDs4YS19aHzVfn1kDuBYKqLLQBjXgnkIsjV2Kd4d2wzYhw==} + '@next/swc-darwin-arm64@16.3.3': + resolution: {integrity: sha512-8Hiv32QJPwdV6KYJ8meR9SBA061tQqnIKTJDocvOXlEQqib0xMFpzArosuffFUUc0sslbh7QQ8a3Yey1QV8EIw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.2.9': - resolution: {integrity: sha512-7IAtK4MeybpqRV9GRABWEhJ62mOS+rzWOzOTFie4cSEtm12xsoOMJRcECoZx3FHPzFAqN/IJtHqWAFOLfl152w==} + '@next/swc-darwin-x64@16.3.3': + resolution: {integrity: sha512-A1lgKgwVchRYmSe467zdwhxT9040dd8lH+o65sL5Jet8fjB4kegw/rDyPIpYVRb6jAqwXFOJpjIXJLxQKLiE3A==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.2.9': - resolution: {integrity: sha512-hBD75iWpUtkL9SmQmcRhmLomn9jgkPzCEkbOcLgHymPEKzv+6ONy13RRiIEz/iEObjkS2Jlb5gYS2XGoS3X4rw==} + '@next/swc-linux-arm64-gnu@16.3.3': + resolution: {integrity: sha512-bf0FIssMFueU2dm7vQEWWxk0c8UjKTdW0yzuh0sQsD8pf1+KCLDdaqhYZNMYGmXwEOiHAUzgBKudovIlcvvBjg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.2.9': - resolution: {integrity: sha512-qZTI3pf9SGc/obr8NkQAekBxmp1QK+kVm+VAf3BALLfFAj+1kUhkTxmrWpVos9R/UYIA8AWX2p6cGI5WdwzVUA==} + '@next/swc-linux-arm64-musl@16.3.3': + resolution: {integrity: sha512-W7viwCk9JY/cAkdz/A273rd5bb3RgT/IHwR7Upv90tunjBWNtAAhGhoecHh+teRNRSinuAFmE+l7fwZ4YKkrXg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.2.9': - resolution: {integrity: sha512-xm0HfRNX+UkH4R3c18ynswjj5o5uEj/7iI9p9omdtTSIsRCzQqkGMA+10nzJ4EHnYC3as65IMhbbl5fWRUWHYg==} + '@next/swc-linux-x64-gnu@16.3.3': + resolution: {integrity: sha512-0W46zw1N3ODpI6n0GeivHvvob1pooozgZVqy65k0mh4/7vr+FbY9+WpHzNVXjHipJf/A3FDheBG19H1s5A25rA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.2.9': - resolution: {integrity: sha512-QumimHkGEG6vM3PfEDWKyKen03NcqLOkeKB1EfcPe7VxzmEiCa4jNnMyBn/US5zcd/VE1CI+O8Ovb3lfjVHfGw==} + '@next/swc-linux-x64-musl@16.3.3': + resolution: {integrity: sha512-H4mBso8ZTMBPtdT0PN0pBx2ayTvQuTuvS6qT13d77yVFJXAPCxkyIhLTmdMaGTJs0krQYI/qpzdHijCeihXhbg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.2.9': - resolution: {integrity: sha512-hzQpKZvw8rAwI6A2uQh6SacCSvNAXaIkPNsWwzqqfRiIMiXMfH936skDhz1OO6KpvdKkJrgHHtqQOq5PIXOvdQ==} + '@next/swc-win32-arm64-msvc@16.3.3': + resolution: {integrity: sha512-cTMUJpcEGmeywofCUfhR+rSsoE33+rVPnPEYNTNdLNlsOeEg/vktOsKUSTb28vUGqD2jkm4Zaskcwn7OCI6FQg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.2.9': - resolution: {integrity: sha512-qr2VL3Ce5QrwgO2yh1ujSBawrimjVKX8FGF/cOynmdYKJY0BdHpGVNIRK1tqONB10Vkm25Ub1BD2bkjWs4+96w==} + '@next/swc-win32-x64-msvc@16.3.3': + resolution: {integrity: sha512-2VR4cTBzHXaBjnGsuH6GyJjENzQOmHeAh11uY1iUhjm3j5dEUrVJuUj+VL78jaGi/Dik8xS76zEj18BsFhlVZQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1679,6 +1663,9 @@ packages: '@oxc-project/types@0.137.0': resolution: {integrity: sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==} + '@oxc-project/types@0.147.0': + resolution: {integrity: sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==} + '@oxfmt/binding-android-arm-eabi@0.55.0': resolution: {integrity: sha512-+rFDOqQe5LOWgxrAJaZgLRudr6GQm0wGI6gtu7vVkrdLGjNMUSGbAlaCr8j7F2H2Er97vYQCU8WDb30onqMM1g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1801,154 +1788,154 @@ packages: cpu: [x64] os: [win32] - '@oxlint-tsgolint/darwin-arm64@0.23.0': - resolution: {integrity: sha512-gOs9PVr2wEg4ox9z0aJo+RKhhImW86YL5N6yav8BK/rgPsIrwN/igSZ+pbRr723NFvUNKde9fgMhRA6JrXAOZw==} + '@oxlint-tsgolint/darwin-arm64@7.0.2001': + resolution: {integrity: sha512-CUJEdbSZ54+Xy9OXqOhWLTKZKV0BBiV7C2i/ygyVmXtkUNXx5YCzN8DpSSshTAKktoL7S+tnQ/ftFG/i7X896w==} cpu: [arm64] os: [darwin] - '@oxlint-tsgolint/darwin-x64@0.23.0': - resolution: {integrity: sha512-kjJ8B+7n4tB9VJdxS5A9GdJt6/bYpzbu4lXp2uO1S3sRmCB5gDEABlGoiePNApRWaW+xqL4b4xgiE727jSLhuA==} + '@oxlint-tsgolint/darwin-x64@7.0.2001': + resolution: {integrity: sha512-pXfBb5BqONCcgrXQNUZWXgiYmRSWJzd97S8i41VVOh6ut0tyo+cJ5FKFpczDHxiVNfj/3e7c9B4MtztNdpIVCw==} cpu: [x64] os: [darwin] - '@oxlint-tsgolint/linux-arm64@0.23.0': - resolution: {integrity: sha512-6dCZuKNu135seMXilkRk9SpCx6i1XgmiipYGalLij5WVRX6ZYS8c4xI7preN/zv9fCXhsQclTIMDu2Y/cytTjw==} + '@oxlint-tsgolint/linux-arm64@7.0.2001': + resolution: {integrity: sha512-roP7zujb/QDPzDwEKsFFpzNHHy91/Y7oX9vQXk78ekyZtcQj1QXDIMH33gjDdHBfRl4K9pZ36xhRgrP4Zr+R8A==} cpu: [arm64] os: [linux] - '@oxlint-tsgolint/linux-x64@0.23.0': - resolution: {integrity: sha512-3bdilnyA7kmSTjK27rvjIjSxL5SIg3wt7vwNiRkouWB83ytssyKnuGvxSYJxgMEmFpSutzaBzcCUM2jDtPGcgA==} + '@oxlint-tsgolint/linux-x64@7.0.2001': + resolution: {integrity: sha512-UDezNqdECVmngu2TPnjaS1YoAmcTaBoI5lV9vk3VahBxoi+I5r9k3iJTT7qZoYWOXTD/7T7bNcwRgrocR6BscQ==} cpu: [x64] os: [linux] - '@oxlint-tsgolint/win32-arm64@0.23.0': - resolution: {integrity: sha512-j+OEp44SVYiQ+ZD+uttsX7u6L9SvmbbQ77SO1pSFCcJlsVMeCk8qZsjhKfGKuT/jIA+ipOJMVs/+pqUfObBWNw==} + '@oxlint-tsgolint/win32-arm64@7.0.2001': + resolution: {integrity: sha512-uJZhqB6pdXLuN+AD1F5082byyQti/NPmJA77GtcFlmT2HzRelqbNls3SaIqxpjdFgvSBF9g0yOKGBkGFg7kX8Q==} cpu: [arm64] os: [win32] - '@oxlint-tsgolint/win32-x64@0.23.0': - resolution: {integrity: sha512-5MyjFuqf+g8OUPJBSGWHJtmoWnzFJYyOg4To9WMQshZYEWig/vtu7JtJ03VWnzHv9LJkAUeApY0gVCOywFR/iQ==} + '@oxlint-tsgolint/win32-x64@7.0.2001': + resolution: {integrity: sha512-FkDRm8hx9OwzGQqyWG1tO5QrTLRApff9DzSgpz9QZau37BR8d1VYKOxMLGf6shPZntJFoTwIIJYT68VndYDCog==} cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.70.0': - resolution: {integrity: sha512-zFh0P4cswmRvw6nkyb89dr18rRanuaCPAsEXsFDoQY8WdaquI8Pt4NWFjaMJg6L23cy5NeN8J9cBnREbWzZhaw==} + '@oxlint/binding-android-arm-eabi@1.80.0': + resolution: {integrity: sha512-RM3Plj+biQpxa5d1GOOX6ciDlcUROmm4OZ/pLTpitkQt2mJv4jhtY4cbgaetOm5UKWZe05/TGQ6o1Vl8EOHkrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.70.0': - resolution: {integrity: sha512-qI8o4HZjeGiBrWv+pJv4lH0Yi2Gl/JSp/EumBUApezJprIKa5PS4nU0lQsQngtky8k+SplQIOjv6hwu0SSxeyg==} + '@oxlint/binding-android-arm64@1.80.0': + resolution: {integrity: sha512-YlO5JEf0Yr2bUUlu8O8daVcUxtcGGbcSmyV7E7nSbJbfAdxTE0PFPwgnIlw7wXJaTYjb+qs5hI5q3jxUkI7cAw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.70.0': - resolution: {integrity: sha512-8KjgVVHI5F9nVwHCRwwA78Ty7zNKP4Wd9OeN5PSv3iu/F/u1RVXoOCgLhWqust6HmwQG6xc8c+RCyaWENy24+w==} + '@oxlint/binding-darwin-arm64@1.80.0': + resolution: {integrity: sha512-BULDOyO3AhsmdWfQeIUCykDt3dd7XZBGLhp1eIh56skRv01O+cNjNPwXMIbeW1x4+pxcln5if72wcRgViVo7PA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.70.0': - resolution: {integrity: sha512-WVydssv5PSUBXFJTdNBWlmGkbNmvPGaFt/2SUT/EZRB6bq6bEOHmMlbnupZD5jmlEvi9+mZJHi8TCw15lyfSfQ==} + '@oxlint/binding-darwin-x64@1.80.0': + resolution: {integrity: sha512-YJ4JzLw7N5TDSQFlA0hAQGHvnDZgyypm1yunObVWcWiF9KM7eGCJKYKLgTC2Fi/57OdnBhbj4OkzPGdFQJ6HyA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.70.0': - resolution: {integrity: sha512-hJucmUf8OlinHNb1R7fI4Fw6WsAstOz7i8nmkWQfiHoZXtbufNm+MxiDTIMk1ggh2Ro4vLzgQ+bKvRY54MZoRA==} + '@oxlint/binding-freebsd-x64@1.80.0': + resolution: {integrity: sha512-AYUIk5QnL0s8oWAYsREZwkRYy1SupJTXALo93J1TgzHywxQtdM99FecRMQ87MXEdPQ0j1TmEpeeq3fGNkpvMqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.70.0': - resolution: {integrity: sha512-1BnS7wbCYDSXwWzJJ+mc3NURoha6m6m6RT5c6vgAY3oz7C3OVXP+S0awo2mRq97arrJkVvO3qRQfyAHL+76xtQ==} + '@oxlint/binding-linux-arm-gnueabihf@1.80.0': + resolution: {integrity: sha512-9hBZVANupQ89W9dXyE0n8doCyaW5pDyGn3y6XlIMPZ+rIKuyqkr3SNUXmVJIhuvUq0NBU3RBiSXXE69l4XI6KA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.70.0': - resolution: {integrity: sha512-yKy/UdbR55+M2yEcuiV5DCNC/gdQAjr/GioUy50QwBzSrKm8ueWADqyRLS9Xk+qjNeCYGg6A8FvUBds56ttfqg==} + '@oxlint/binding-linux-arm-musleabihf@1.80.0': + resolution: {integrity: sha512-SvS2uKqzY+pbfuvAHzH4338R6Zwo805GAwrIMVvK1KxoOWCIjZUdfzTCvilD7z6JK91v011+zYMryabhDo2AsQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.70.0': - resolution: {integrity: sha512-0A5XJ4alvmqFUFP/4oYSyaO+qLto/HrKEWTSaegiVl+HOufFngK2BjYw9x4RbwBt/du5QG6l5q1zeWiJYYG5yg==} + '@oxlint/binding-linux-arm64-gnu@1.80.0': + resolution: {integrity: sha512-tCLadyqRVL3pQTRPNg7cjXKvcvS4fbyXeQHhKk5BTJ1oftQln5/yIIWbu/Xom/DX41zv2P9QGt6+D/TtQVtY3A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.70.0': - resolution: {integrity: sha512-JiylyurlB0CLSedNtx1gzv3FvfWPF1h/2Y3BJszPLNt5XQFlBsH5ke0Jle3iJb3uqu5m2e7A/DwzpuCAHdiU+A==} + '@oxlint/binding-linux-arm64-musl@1.80.0': + resolution: {integrity: sha512-XfpCNRlOPcLlJl4Bn/FUhjqlR6BVavEykERBf/MV7YA9VZDa5g5znVqYhyviMafcxS9Pe/i/kPvHNO0U6svEHQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.70.0': - resolution: {integrity: sha512-J8VPG7I3/HmgaU4u8pNU2kFx2+0U+vPLS1dXFxXOaR/2TQ0f8AC7DRz0SRGRI1bfphnX2hVYTTtLuhL4nYKL+Q==} + '@oxlint/binding-linux-ppc64-gnu@1.80.0': + resolution: {integrity: sha512-3I4yMwcFG9NeO8ioY6JBBuKsIm5GL/x7MATt1S4tVWaxPu5HcJ+XnLUbcVBTxG8q2Wu56HSj+NmXQiVYb1lp6A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.70.0': - resolution: {integrity: sha512-N2+4lV2KLN+oXTIIIwmWDhwkrnvqf5oX7Hw0zPjk+RuIVgiBQSOlJWF7uQoFx2siEYX0ZQ5cfSbEAHm+J3t7Wg==} + '@oxlint/binding-linux-riscv64-gnu@1.80.0': + resolution: {integrity: sha512-E1wAKymkpe1/E8helzBKdm81OBOF+ezxRyXRMEuik3ZpWDER5CPOKZwF66RsdwW98uwZv8UTFremUQtC1CzdJA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.70.0': - resolution: {integrity: sha512-1e2L7cFCvx9QDzq6NPP+0tABKb5z6nWHyddWTNKprEsjO9xNrAtPowuCGpjNXxkTdsMiZ4jc8YQ5SstZd4XK6g==} + '@oxlint/binding-linux-riscv64-musl@1.80.0': + resolution: {integrity: sha512-+gLRGD4sIo3+VA++iham5UxD9tKSoJ/VOrROCEXIcknrYtQg6iIQgvjN0cpiRF7N6UYC7pJbvHJlDnMge5LRpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.70.0': - resolution: {integrity: sha512-Kwu/l/8GcYibCWA9m9N5pRXMIKVSsL/YbgpLzYkqDhWTiqdRfnNJ/+nqIKRKQiFbHWsdlHEhzMwruJK+qcEruA==} + '@oxlint/binding-linux-s390x-gnu@1.80.0': + resolution: {integrity: sha512-aR0PrzHj9leW3NmzBAAP4EzdoBNoJcs9sjnIQPIwyRnBGYrRbXUIpEB5Q39AqK3PLY5JK5uEhDQDiUa1QSAstw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.70.0': - resolution: {integrity: sha512-tap04CsHYOl0nSAQJfPNIuBxqEPB2HnhQqwaOXLg1jnp2XfRo8Fa814dA4QC4zpvTWXCjAAaCY1W5LOORkEQuQ==} + '@oxlint/binding-linux-x64-gnu@1.80.0': + resolution: {integrity: sha512-vSVh5cSo3Xxs6ghBCcFJlpbkbENzDog1qXtoXLa/HC3aCrR4XO76GZbXmQoCPHnu99nQpdCeC3H9tdNICfDh7A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.70.0': - resolution: {integrity: sha512-hzJa/WgvtJpbBD9rgfy0qe+MjbxOXNUT0bfR1S6EQQzfTtBFA9xg5q8KSwRrQ2QfSS+TaP4j+4mVPQrfNc6UNg==} + '@oxlint/binding-linux-x64-musl@1.80.0': + resolution: {integrity: sha512-FfzBXpNQ8u7/ZI/p8bl73MeZ508Ax3hxWp3SiJpEFiC+BB9XcXy5FAZHTLKDPSzrUpxQZSZJAVdDmuJp/+HDBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.70.0': - resolution: {integrity: sha512-xbsaNSNzVSnaJACCUYr1HQMyY/Q/Q1LkePmHG3UvZPvGCYGNxrsZp9OmtA6ick8xH47ltRRbRrPCM1YXYcyC+A==} + '@oxlint/binding-openharmony-arm64@1.80.0': + resolution: {integrity: sha512-zMzbkumtmprCgRwoYNzcB3iC39fXdJIMLMU33KdCjEGLlJGOEt1+LwQ4LF8ndLzAEKVz4BR0y3V6Xrkk3Nm3yA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.70.0': - resolution: {integrity: sha512-icAEsUI7JbW1TMRdEXV83mVAInhRVQYuuAlPpxdGwJ95chNdnCzjloRW8GglT0WvzOEZSio6fnYSk2DJ2Hv7LQ==} + '@oxlint/binding-win32-arm64-msvc@1.80.0': + resolution: {integrity: sha512-ib6iRcrXsk4t1fm3iKcwksyWh1ZkZXC/2mEzakl0ai2+6HZunf1WWMZ/xP9EJAvw9g9K4UVTC3NF/+G2qLrbTQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.70.0': - resolution: {integrity: sha512-FHMSWbVsPVs/f+Jcl04ws4JJ2wUnauyTzlpxWRG/lSO/8GpX08Fo2gQZqdA6CrRFI+zvkxl+N/KwJGWfUwYVZA==} + '@oxlint/binding-win32-ia32-msvc@1.80.0': + resolution: {integrity: sha512-xhRWBMpLxZvgKAH6+DJZmpP+W8Y8UdQOSU1JfxSWNXsaBaRGW77j+1hCuNHlzj7OH4SPN8fYd1q0o2qrDtoVyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.70.0': - resolution: {integrity: sha512-ptOlKwCz7n4AKs5VweMqG6DAg677FmKOK+vBkkL9DMNgFATIQ+upqUYBTOEwRQyRAx1ncGlPlXleV2hIcm3z4g==} + '@oxlint/binding-win32-x64-msvc@1.80.0': + resolution: {integrity: sha512-yAnO7lwBYQnz2pcfBPIGQQZWIX5zd5R/1aAKIF3oE+TVj7IhoHcROjOkz3sRDngzqhfPKfFaXqug5j5rE5dn6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -2462,36 +2449,72 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@rolldown/binding-android-arm-eabi@1.2.6': + resolution: {integrity: sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + '@rolldown/binding-android-arm64@1.1.3': resolution: {integrity: sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.2.6': + resolution: {integrity: sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.1.3': resolution: {integrity: sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.2.6': + resolution: {integrity: sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.1.3': resolution: {integrity: sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.2.6': + resolution: {integrity: sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.1.3': resolution: {integrity: sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.2.6': + resolution: {integrity: sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.1.3': resolution: {integrity: sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.2.6': + resolution: {integrity: sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.1.3': resolution: {integrity: sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2499,6 +2522,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.2.6': + resolution: {integrity: sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.1.3': resolution: {integrity: sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2506,6 +2536,13 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.2.6': + resolution: {integrity: sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rolldown/binding-linux-ppc64-gnu@1.1.3': resolution: {integrity: sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2513,6 +2550,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-ppc64-gnu@1.2.6': + resolution: {integrity: sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.1.3': resolution: {integrity: sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2520,6 +2564,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.2.6': + resolution: {integrity: sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.1.3': resolution: {integrity: sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2527,6 +2578,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.2.6': + resolution: {integrity: sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.1.3': resolution: {integrity: sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2534,12 +2592,25 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.2.6': + resolution: {integrity: sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.1.3': resolution: {integrity: sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.2.6': + resolution: {integrity: sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.1.3': resolution: {integrity: sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2551,12 +2622,24 @@ packages: cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.2.6': + resolution: {integrity: sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.1.3': resolution: {integrity: sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.2.6': + resolution: {integrity: sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.35': resolution: {integrity: sha512-slYrCpoxJUqzFDDNlvrOYRazQUNRvWPjXA17dAOISY3rDMxX6k8K4cj2H+hEYMHF81HO3uNd5rHVigAWRM5dSg==} @@ -2654,8 +2737,8 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@swc/helpers@0.5.15': - resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} '@tailwindcss/node@4.1.13': resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} @@ -2767,8 +2850,8 @@ packages: '@ts-morph/common@0.27.0': resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} - '@tsdown/css@0.22.3': - resolution: {integrity: sha512-kmb/31lcI/Pk26WeWJxQDLy8qkvoyfBkw3n9aN6bflKkoeLqnV2BRbndzfPRJY+Ziahi796gfgDVc+ftLIgWVw==} + '@tsdown/css@0.22.14': + resolution: {integrity: sha512-0NpbgqfhfjaAoLdY3DxjrMo08vKFEtvlybCS42Gtolx8OPoKUdZZDyls0qgNEqea0c7XGjlF0NIE1tIxgU8RqA==} engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: postcss: ^8.4.0 @@ -2776,7 +2859,7 @@ packages: postcss-modules: ^6.0.0 sass: '*' sass-embedded: '*' - tsdown: 0.22.3 + tsdown: 0.22.14 peerDependenciesMeta: postcss: optional: true @@ -2828,9 +2911,6 @@ packages: '@types/jsdom@28.0.1': resolution: {integrity: sha512-GJq2QE4TAZ5ajSoCasn5DOFm8u1mI3tIFvM5tIq3W5U/RTB6gsHwc6Yhpl91X9VSDOUVblgXmG+2+sSvFQrdlw==} - '@types/jsesc@2.5.1': - resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -2875,52 +2955,125 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-g/fjmdh/i/ngSmUeWNHh98iuONzW+kUaqwZRaZCmGkssBJ6ZrJAsyg85cm1t4aK9ne5nNjbjNPzJFTZ+QNMSRw==} + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-AqRrnPQCR+7j6u6uC6eQpacJ/btxZW6ktpWxPj7byoyk6kGSSgUb0YNcZ2Iao2brdbYw4LOxVcrVW4mP+K7sxg==} + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} engines: {node: '>=16.20.0'} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-sxo7AlhQiX5J5WYWBxSBjJ02nA2kiO8j+K51fuF24nmbQRtSLjTa8/BimpYbBywTAsSps8vgnJjsLONf243HYw==} + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-XnDHJZWFY2M8DCzxXj598Ql9op+zYpk6k5X3FYB4KeOXpdzjAke2H9wKW7UKeYfvPJyAgvyS+IapcvogCwx13A==} + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} engines: {node: '>=16.20.0'} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-41TR69UuB1be2DmjcavcUMoFipIQNVpqsm1FvVCtGnscL41pDa/ijXHnSwzn7v8EbCgAI7hRUhRsPNPGY3OCKQ==} + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} engines: {node: '>=16.20.0'} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-TMdYylCqBvQOVz6x5dT1HQ/49eLBijNE/uMGD2CA3YR4Hp4NkG+Rqg46NZiaO48D2+sjZws2uoNtPhfefN9IdA==} + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} engines: {node: '>=16.20.0'} cpu: [arm64] - os: [win32] + os: [netbsd] - '@typescript/native-preview-win32-x64@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-ROz8ncFZsMC2nn8ClBZ3wLNXpea6BbdMYyNTWx8xYrikhOIgFlkmAdc10PA/MiOh78RraUbdWvwbXNe19He+iQ==} + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} engines: {node: '>=16.20.0'} cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20260622.1': - resolution: {integrity: sha512-t4XoYz/Jr1Jt7wkaHwe4e/r3OcYgKxvL0dqfZsnBmqG8HsJ57VpOwd0PINU5b5umcb4g9akVto028L70lAJUpA==} + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} engines: {node: '>=16.20.0'} - hasBin: true + cpu: [x64] + os: [win32] '@typespec/ts-http-runtime@0.3.6': resolution: {integrity: sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==} @@ -2934,7 +3087,7 @@ packages: peerDependencies: '@remix-run/react': ^2 '@sveltejs/kit': ^1 || ^2 - next: 16.2.9 + next: 16.3.3 nuxt: '>= 3' react: 19.2.7 svelte: '>= 4' @@ -2966,7 +3119,7 @@ packages: resolution: {integrity: sha512-jwkNcrTeafWxjmWq4AHBaptSqZiJkYU5adLC9QBSqeim0GcqDMgN5Ievh8OG1rJ6W3A4l1oiP7qr9CWxGuzu3w==} peerDependencies: '@sveltejs/kit': ^1 || ^2 - next: 16.2.9 + next: 16.3.3 nuxt: '>= 3' react: 19.2.7 svelte: '>= 4' @@ -3055,6 +3208,141 @@ packages: '@vscode/web-custom-data@0.6.3': resolution: {integrity: sha512-3pDUAPGVkra1KjR2L5m3b7BgzLTlWdep4ijsRoqeLcrp+e7cJcyjnae8IkAdF/xS6Zo3B1YZSmIBIhRAEYBIog==} + '@yuku-codegen/binding-android-arm64@0.8.7': + resolution: {integrity: sha512-C/0zV5IhgVdYhGJTwrY0v8dknxlhiKwtVJkMUaexu9/QvRmzlV4vfU3hZlUSgqc2BxQHntL1mCVbDq8j0FRFDw==} + cpu: [arm64] + os: [android] + + '@yuku-codegen/binding-darwin-arm64@0.8.7': + resolution: {integrity: sha512-/u+REDMI4a0/lsJXTM4c53/w31OGZLOReZIyg62uhgLs0kc8NHsj/nOcxTdlQjq5gi0zhdkccD9LaLTXcdzPvw==} + cpu: [arm64] + os: [darwin] + + '@yuku-codegen/binding-darwin-x64@0.8.7': + resolution: {integrity: sha512-sMMzFOwCo4WXR+/6zIBThOocSC50iIIZZdfiIDbaLvj0Ax/rWt/iavyfEAqajyvzydLyCqR/ZItdLWSRlu1umw==} + cpu: [x64] + os: [darwin] + + '@yuku-codegen/binding-freebsd-x64@0.8.7': + resolution: {integrity: sha512-MpdpKXix9P+Y1rKgjvcNeNtGjXeL1CmttNhYINrWls8kRpm4xM/oBGTmn6w7to8lAlwj5jm8q03dQPl5mRv4Qw==} + cpu: [x64] + os: [freebsd] + + '@yuku-codegen/binding-linux-arm-gnu@0.8.7': + resolution: {integrity: sha512-rr1srFLlPAmC1vtxfc9C1YLDe3iH09YjfSeeIidBqKhzx1MATjOAq4mjlRUOnhr/L27MotWIYOFKwVsd5JZFOg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-arm-musl@0.8.7': + resolution: {integrity: sha512-eAufXh8qBRpiSO6ueaMDL+yyoXIGLhpUce72YbcACtZU2qhExwBIJyEtQf5kH2Ki0X2aqkSjSfog4OPtKXan3Q==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-linux-arm64-gnu@0.8.7': + resolution: {integrity: sha512-gw4w6wPoHObBrdIC4duVWLmJOvpdE25j5D7yrM5mACNlK4klRz/lv8hK+ssQk9EJHBgZjSaqZIJVFgqNYbfv7A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-arm64-musl@0.8.7': + resolution: {integrity: sha512-L68N6Y4XkqcIaKo3Ra88JEvBEH4AHff44A4INcrxeVWZ8CZtu2tCpfVxe3hR8qQQMcvBSQlDn24KpkCKEhVvfA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-linux-x64-gnu@0.8.7': + resolution: {integrity: sha512-dzyAbltJmf3Cqlb8HcFuYIf5Yn0fl1vTr3XJ9HiVNNvOlhqPSArOqtw9vI1p6/VTXTjrMLXlU+s+/kNHiIy/Cw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-x64-musl@0.8.7': + resolution: {integrity: sha512-Otw4MH3404q0Bbvl+YTdW9aoUV5vXmUw8260bWvt1XlaoIX/ceSgI4ygheRDMfBPoHt6FDayQaO9OLVUZAgkFA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-win32-arm64@0.8.7': + resolution: {integrity: sha512-qo/jyrzryiBuKEsFiuWaBCBe3tRMynQ0qFWFgOEjcCMQeZfBm+wKiVEUEFXXLc7bh8YezguAWp0Mtnhq4ARNyA==} + cpu: [arm64] + os: [win32] + + '@yuku-codegen/binding-win32-x64@0.8.7': + resolution: {integrity: sha512-D5lDsVDx6m00E6bWySlWdH72Ca4TPSaphDqB6QjU6MpuNLIJqoGoatYyq2rOmBE8Zv/kunot/o58KGL03P3eiA==} + cpu: [x64] + os: [win32] + + '@yuku-parser/binding-android-arm64@0.8.7': + resolution: {integrity: sha512-eGKYiUDX7Y0V7tDTmg+JTVnXnjMqfXXsorZ+EDf5kxwchQ3Or1HS14MzI2fw+jFhHR85fCWt+mtX33Yao73hIQ==} + cpu: [arm64] + os: [android] + + '@yuku-parser/binding-darwin-arm64@0.8.7': + resolution: {integrity: sha512-Re0RHelKLnjEURulY2/KxW+Ngb8zuNA4BRZuMwgGQNzVumT6u4U2N2hc01oeYVNVof0i7GrXE4UCNBgbpRRnjQ==} + cpu: [arm64] + os: [darwin] + + '@yuku-parser/binding-darwin-x64@0.8.7': + resolution: {integrity: sha512-Hn8DROtQkjlA1ACbPgj4a7eP9IuVOI504oiTwpkWPbpaDWD9KdmnVYCqW+1LfenNK/g7O9NhWGpXEdaCNX7lIA==} + cpu: [x64] + os: [darwin] + + '@yuku-parser/binding-freebsd-x64@0.8.7': + resolution: {integrity: sha512-bAP2OV8wRuzplX/jYxv9+vvqQT8JxyNphI8fLfXGL054Xs+4/J5u33cIm3y4rxY8rdoLmmdiJs2Tq7r7lrDRfA==} + cpu: [x64] + os: [freebsd] + + '@yuku-parser/binding-linux-arm-gnu@0.8.7': + resolution: {integrity: sha512-kTYwJQQgmZeAWdDIWabiReIZMpmfLueIj1tCmjStUtFGhR1Z0qwxonKVfUC4N7h/VhGGzLZ//7O1kgt1QKqgCg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm-musl@0.8.7': + resolution: {integrity: sha512-uL4jE8HPT2BLlxAXyD10LqgPuXa9eDa0BKpCdSANmzIJghq/2eZo3/gQNtaxPZMupWoxjYzSad9IXrwu7aYPXQ==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-arm64-gnu@0.8.7': + resolution: {integrity: sha512-3gVN4pWSKZmXiNX7cU164dR9MPvesCHnlH6nPfpK+yQsCuYphjKKplcb4SnZBrhiqmXbgb2HR0c2TS0IZUPhgA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm64-musl@0.8.7': + resolution: {integrity: sha512-S0mwfEjoLpxzXeZw802Wa4RaELsQiPtWqG6INcy8j4GtvNFtl4LCX3eGO1XLn9pyLAISLzTRyU3zUCBUPin8lg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-x64-gnu@0.8.7': + resolution: {integrity: sha512-lnbWdPmerE5D1uH1G4IEZKnPzCrWCStRGrtgpSIe1RibAo5bZIjDbbbPYXmMHCEh4F+x/JaJpElh26a3r+BPbg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-x64-musl@0.8.7': + resolution: {integrity: sha512-769uwndMvMzUvATWbAcEvyLHKA+DzhHSCl/obBUrRdYfRo26yxui6S8y3z7uJ+Naup7UKrDxrpK7OnQkxkl9KQ==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-win32-arm64@0.8.7': + resolution: {integrity: sha512-mEB/9PlaAkisJ6KWGz0zvywXoU6+80dTlR2LwS7s/jcXXoU6fm2+sitBZXtqu3+Q4DcDgPxM45uWMCzPs0TSRw==} + cpu: [arm64] + os: [win32] + + '@yuku-parser/binding-win32-x64@0.8.7': + resolution: {integrity: sha512-8vNB2DP0ou61nGb8tc/qfi41gfyDXz1MHr2zqL3nR+cJ6CEbiuWV/l/a/vv151gCgiZLLAyGkQGENpozdg716w==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.8.7': + resolution: {integrity: sha512-2Z53dNxAJL6UvFoIrDZvYf3zlO8s4VJK4O2hhaB4mXVwwpX/7ajtss3cmfqKvamlNLWyt9FSWs4eoYdlbxpnHA==} + accepts@2.0.0: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} @@ -3131,10 +3419,6 @@ packages: resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} engines: {node: '>=10'} - ast-kit@3.0.0: - resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} - engines: {node: ^22.18.0 || >=24.11.0} - ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -3189,9 +3473,6 @@ packages: resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==} engines: {node: '>=4'} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -3440,7 +3721,7 @@ packages: resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==} engines: {node: '>=14'} peerDependencies: - typescript: 6.0.3 + typescript: '>=4.9.5' peerDependenciesMeta: typescript: optional: true @@ -4403,6 +4684,12 @@ packages: cpu: [arm64] os: [android] + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + lightningcss-darwin-arm64@1.30.1: resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} @@ -4415,6 +4702,12 @@ packages: cpu: [arm64] os: [darwin] + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-x64@1.30.1: resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} engines: {node: '>= 12.0.0'} @@ -4427,6 +4720,12 @@ packages: cpu: [x64] os: [darwin] + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-freebsd-x64@1.30.1: resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} engines: {node: '>= 12.0.0'} @@ -4439,6 +4738,12 @@ packages: cpu: [x64] os: [freebsd] + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.30.1: resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} engines: {node: '>= 12.0.0'} @@ -4451,6 +4756,12 @@ packages: cpu: [arm] os: [linux] + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm64-gnu@1.30.1: resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} engines: {node: '>= 12.0.0'} @@ -4465,6 +4776,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + lightningcss-linux-arm64-musl@1.30.1: resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} engines: {node: '>= 12.0.0'} @@ -4479,6 +4797,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + lightningcss-linux-x64-gnu@1.30.1: resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} engines: {node: '>= 12.0.0'} @@ -4493,6 +4818,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + lightningcss-linux-x64-musl@1.30.1: resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} engines: {node: '>= 12.0.0'} @@ -4507,6 +4839,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + lightningcss-win32-arm64-msvc@1.30.1: resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} engines: {node: '>= 12.0.0'} @@ -4519,6 +4858,12 @@ packages: cpu: [arm64] os: [win32] + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + lightningcss-win32-x64-msvc@1.30.1: resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} engines: {node: '>= 12.0.0'} @@ -4531,6 +4876,12 @@ packages: cpu: [x64] os: [win32] + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss@1.30.1: resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} engines: {node: '>= 12.0.0'} @@ -4539,6 +4890,10 @@ packages: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -4897,7 +5252,7 @@ packages: engines: {node: '>=18'} hasBin: true peerDependencies: - typescript: 6.0.3 + typescript: '>= 4.8.x' peerDependenciesMeta: typescript: optional: true @@ -4913,8 +5268,8 @@ packages: resolution: {integrity: sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA==} engines: {node: '>=20.17'} - nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + nanoid@3.3.18: + resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -4931,8 +5286,8 @@ packages: peerDependencies: react: 19.2.7 - next@16.2.9: - resolution: {integrity: sha512-MEOJiq/UvuezAdqVSceHbqDgZt1kDw2tpGVOlsdIoJsQdbN2JY2hpVG4xnXGkbdJUOEWhnRfiu/O4Hpc9Juwww==} + next@16.3.3: + resolution: {integrity: sha512-tuRTx1nQ/yVw83cwJBo9F+njGUgMn3UHQycreWHB8XsStvvAh1AthbI8/4IpKnFaF58F+iSiHejYOlMQ/eq83g==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -5018,8 +5373,8 @@ packages: resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} engines: {node: '>= 10'} - obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} engines: {node: '>=12.20.0'} on-finished@2.4.1: @@ -5076,16 +5431,16 @@ packages: vite-plus: optional: true - oxlint-tsgolint@0.23.0: - resolution: {integrity: sha512-3mBv3CoPbh8dFbzfDGIWa2ytZjn2v+3EX4aKRXjIhsoGFzG8GCjfRirz3rwZf1wYbZzsNLTSgpw8VjQuWdp/jA==} + oxlint-tsgolint@7.0.2001: + resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==} hasBin: true - oxlint@1.70.0: - resolution: {integrity: sha512-D6JgHtzkhRwvEC+A0Nw5AEc5bk8x5i1pHzvZIEf/a0C4hOzmAACNGtkDGPyFaxxX3ZVGxCPeig3P3rMM8XU3/g==} + oxlint@1.80.0: + resolution: {integrity: sha512-5nTiSps4qdbCWLbxzuO00alHkEO2exR9YMN/ig6QXWrLsYSG0KaObOAM+l6oU2LcKPWoSAGYbkZIGEu1ViiWKA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=0.22.1' + oxlint-tsgolint: '>=7.0.2001' vite-plus: '*' peerDependenciesMeta: oxlint-tsgolint: @@ -5182,9 +5537,6 @@ packages: resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} engines: {node: '>=18'} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -5195,8 +5547,8 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} engines: {node: '>=12'} pidtree@0.6.1: @@ -5292,12 +5644,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.5.15: - resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} engines: {node: ^10 || ^12 || >=14} postcss@8.5.6: @@ -5510,20 +5858,20 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rolldown-plugin-dts@0.26.0: - resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} + rolldown-plugin-dts@0.27.14: + resolution: {integrity: sha512-ZvuDDwoIpRK9RPxDXratCpklFO9QZZWndf/sd0VBFb4LEj0jj07UcHK9OCh7V4XiFz2Z89ziyBC2K6tJiDjrbw==} engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: - '@ts-macro/tsc': ^0.3.6 - '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 rolldown: ^1.0.0 - typescript: 6.0.3 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 vue-tsc: ~3.2.0 || ~3.3.0 peerDependenciesMeta: - '@ts-macro/tsc': - optional: true '@typescript/native-preview': optional: true + '@volar/typescript': + optional: true typescript: optional: true vue-tsc: @@ -5534,6 +5882,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.2.6: + resolution: {integrity: sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + router@2.2.0: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} @@ -5578,8 +5931,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.8.4: - resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} hasBin: true @@ -5601,9 +5954,14 @@ packages: resolution: {integrity: sha512-sgai5gahy/TiyTiqJEwIFpAuPhmkpt7sGVdRfcmNH53Yc3yI57+zFVmIaqbTST0jP/7tSqZuI0aSllXL2HIw5w==} hasBin: true - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.35.3: + resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -5953,18 +6311,18 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tsdown@0.22.3: - resolution: {integrity: sha512-louqbfA8Qf//B9jTTL0FPtXTNpjCWv1VPkbcmQMph2pTpzs+LnB1tbe4tDDRVpo2BjF5SgUXaTZe45SxB8pWHg==} + tsdown@0.22.14: + resolution: {integrity: sha512-ule7Y+fsAN2iZbLDoo7C4KYljFJNJJ+fLshyn+9gozeTspVersWHxwdGB+Dm2hzA38s6muFnUTl0jK3vJm9ifQ==} engines: {node: ^22.18.0 || >=24.11.0} hasBin: true peerDependencies: '@arethetypeswrong/core': ^0.18.1 - '@tsdown/css': 0.22.3 - '@tsdown/exe': 0.22.3 + '@tsdown/css': 0.22.14 + '@tsdown/exe': 0.22.14 '@vitejs/devtools': '*' publint: ^0.3.8 tsx: '*' - typescript: 6.0.3 + typescript: ^5.0.0 || ^6.0.0 || ^7.0.0 unplugin-unused: ^0.5.0 unrun: '*' peerDependenciesMeta: @@ -6015,11 +6373,16 @@ packages: typed-rest-client@1.8.11: resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} - typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + typescript@5.6.1-rc: + resolution: {integrity: sha512-E3b2+1zEFu84jB0YQi9BORDjz9+jGbwwy1Zi3G0LUNw7a7cePUrHMRNy8aPh53nXpkFGVHSxIZo5vKTfYaFiBQ==} engines: {node: '>=14.17'} hasBin: true + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} @@ -6140,6 +6503,10 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + verkit@0.3.2: + resolution: {integrity: sha512-zj/ob3UsvJGN0whEAKFp53REA5X66hvffVqoCtVQAakJKnKlH+/PcOfMoFwIG/o4rElqLv/ycAFlx8ZlXUorCg==} + engines: {node: '>=18.12.0'} + version-range@4.15.0: resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==} engines: {node: '>=4'} @@ -6330,6 +6697,15 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + yuku-ast@0.8.7: + resolution: {integrity: sha512-h6+4bDfyootiMB9vckk5uKo5r5j0GHrkr17FQTDNfEsFT3DWlN9uu1HJwQwc64pgmLCI945fWM3lbTIqxjT3GQ==} + + yuku-codegen@0.8.7: + resolution: {integrity: sha512-adwDZSh8oVDzhE6Du9PwVWxcOxeV0e2EVhUuMKWfhSY4wkrDq9eqixlxFF3l/XGUV1E7UFzhpz9393MUumkyNw==} + + yuku-parser@0.8.7: + resolution: {integrity: sha512-vRD9nwt4L3aYpxNqeSC4WqLv58xrXef0Ong1Mc45CTXTIpvLafx7JO05sczmQZwdLEZvywrLOGdNC5+Rp5N1BQ==} + zod-to-json-schema@3.25.2: resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: @@ -6364,8 +6740,8 @@ snapshots: cjs-module-lexer: 1.4.3 fflate: 0.8.3 lru-cache: 11.5.1 - semver: 7.8.4 - typescript: 6.0.3 + semver: 7.8.5 + typescript: 5.6.1-rc validate-npm-package-name: 5.0.1 '@asamuzakjp/css-color@3.2.0': @@ -6500,15 +6876,6 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@8.0.0': - dependencies: - '@babel/parser': 8.0.0 - '@babel/types': 8.0.0 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.29.7': dependencies: '@babel/types': 7.29.7 @@ -6583,12 +6950,8 @@ snapshots: '@babel/helper-string-parser@7.29.7': {} - '@babel/helper-string-parser@8.0.0': {} - '@babel/helper-validator-identifier@7.29.7': {} - '@babel/helper-validator-identifier@8.0.0': {} - '@babel/helper-validator-option@7.29.7': {} '@babel/helpers@7.29.7': @@ -6600,10 +6963,6 @@ snapshots: dependencies: '@babel/types': 7.29.7 - '@babel/parser@8.0.0': - dependencies: - '@babel/types': 8.0.0 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -6677,11 +7036,6 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 - '@babel/types@8.0.0': - dependencies: - '@babel/helper-string-parser': 8.0.0 - '@babel/helper-validator-identifier': 8.0.0 - '@braidai/lang@1.1.2': {} '@cacheable/memory@2.0.9': @@ -6753,11 +7107,11 @@ snapshots: enquirer: 2.4.1 env-paths: 2.2.1 execa: 5.1.1 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.7) ignore: 5.3.2 object-treeify: 1.1.33 open: 8.4.2 - picomatch: 4.0.4 + picomatch: 4.0.7 systeminformation: 5.31.7 undici: 7.28.0 which: 4.0.0 @@ -6811,98 +7165,108 @@ snapshots: '@img/colour@1.1.0': optional: true - '@img/sharp-darwin-arm64@0.34.5': + '@img/sharp-darwin-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-arm64': 1.3.2 optional: true - '@img/sharp-darwin-x64@0.34.5': + '@img/sharp-darwin-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.3.2 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': + '@img/sharp-libvips-darwin-arm64@1.3.2': optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': + '@img/sharp-libvips-darwin-x64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': + '@img/sharp-libvips-linux-arm64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': + '@img/sharp-libvips-linux-arm@1.3.2': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': + '@img/sharp-libvips-linux-ppc64@1.3.2': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': + '@img/sharp-libvips-linux-riscv64@1.3.2': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.2': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': + '@img/sharp-libvips-linux-x64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-x64@1.3.2': optional: true - '@img/sharp-linux-arm64@0.34.5': + '@img/sharp-linux-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.3.2 optional: true - '@img/sharp-linux-arm@0.34.5': + '@img/sharp-linux-arm@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.3.2 optional: true - '@img/sharp-linux-ppc64@0.34.5': + '@img/sharp-linux-ppc64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.3.2 optional: true - '@img/sharp-linux-riscv64@0.34.5': + '@img/sharp-linux-riscv64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.3.2 optional: true - '@img/sharp-linux-s390x@0.34.5': + '@img/sharp-linux-s390x@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.3.2 optional: true - '@img/sharp-linux-x64@0.34.5': + '@img/sharp-linux-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.3.2 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': + '@img/sharp-linuxmusl-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': + '@img/sharp-linuxmusl-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 optional: true - '@img/sharp-wasm32@0.34.5': + '@img/sharp-wasm32@0.35.3': dependencies: '@emnapi/runtime': 1.11.1 optional: true - '@img/sharp-win32-arm64@0.34.5': + '@img/sharp-webcontainers-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 + optional: true + + '@img/sharp-win32-arm64@0.35.3': optional: true - '@img/sharp-win32-ia32@0.34.5': + '@img/sharp-win32-ia32@0.35.3': optional: true - '@img/sharp-win32-x64@0.34.5': + '@img/sharp-win32-x64@0.35.3': optional: true '@inquirer/ansi@2.0.7': {} @@ -7083,30 +7447,30 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true - '@next/env@16.2.9': {} + '@next/env@16.3.3': {} - '@next/swc-darwin-arm64@16.2.9': + '@next/swc-darwin-arm64@16.3.3': optional: true - '@next/swc-darwin-x64@16.2.9': + '@next/swc-darwin-x64@16.3.3': optional: true - '@next/swc-linux-arm64-gnu@16.2.9': + '@next/swc-linux-arm64-gnu@16.3.3': optional: true - '@next/swc-linux-arm64-musl@16.2.9': + '@next/swc-linux-arm64-musl@16.3.3': optional: true - '@next/swc-linux-x64-gnu@16.2.9': + '@next/swc-linux-x64-gnu@16.3.3': optional: true - '@next/swc-linux-x64-musl@16.2.9': + '@next/swc-linux-x64-musl@16.3.3': optional: true - '@next/swc-win32-arm64-msvc@16.2.9': + '@next/swc-win32-arm64-msvc@16.3.3': optional: true - '@next/swc-win32-x64-msvc@16.2.9': + '@next/swc-win32-x64-msvc@16.3.3': optional: true '@noble/ciphers@1.3.0': {} @@ -7203,6 +7567,8 @@ snapshots: '@oxc-project/types@0.137.0': {} + '@oxc-project/types@0.147.0': {} + '@oxfmt/binding-android-arm-eabi@0.55.0': optional: true @@ -7260,79 +7626,79 @@ snapshots: '@oxfmt/binding-win32-x64-msvc@0.55.0': optional: true - '@oxlint-tsgolint/darwin-arm64@0.23.0': + '@oxlint-tsgolint/darwin-arm64@7.0.2001': optional: true - '@oxlint-tsgolint/darwin-x64@0.23.0': + '@oxlint-tsgolint/darwin-x64@7.0.2001': optional: true - '@oxlint-tsgolint/linux-arm64@0.23.0': + '@oxlint-tsgolint/linux-arm64@7.0.2001': optional: true - '@oxlint-tsgolint/linux-x64@0.23.0': + '@oxlint-tsgolint/linux-x64@7.0.2001': optional: true - '@oxlint-tsgolint/win32-arm64@0.23.0': + '@oxlint-tsgolint/win32-arm64@7.0.2001': optional: true - '@oxlint-tsgolint/win32-x64@0.23.0': + '@oxlint-tsgolint/win32-x64@7.0.2001': optional: true - '@oxlint/binding-android-arm-eabi@1.70.0': + '@oxlint/binding-android-arm-eabi@1.80.0': optional: true - '@oxlint/binding-android-arm64@1.70.0': + '@oxlint/binding-android-arm64@1.80.0': optional: true - '@oxlint/binding-darwin-arm64@1.70.0': + '@oxlint/binding-darwin-arm64@1.80.0': optional: true - '@oxlint/binding-darwin-x64@1.70.0': + '@oxlint/binding-darwin-x64@1.80.0': optional: true - '@oxlint/binding-freebsd-x64@1.70.0': + '@oxlint/binding-freebsd-x64@1.80.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.70.0': + '@oxlint/binding-linux-arm-gnueabihf@1.80.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.70.0': + '@oxlint/binding-linux-arm-musleabihf@1.80.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.70.0': + '@oxlint/binding-linux-arm64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.70.0': + '@oxlint/binding-linux-arm64-musl@1.80.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.70.0': + '@oxlint/binding-linux-ppc64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.70.0': + '@oxlint/binding-linux-riscv64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.70.0': + '@oxlint/binding-linux-riscv64-musl@1.80.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.70.0': + '@oxlint/binding-linux-s390x-gnu@1.80.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.70.0': + '@oxlint/binding-linux-x64-gnu@1.80.0': optional: true - '@oxlint/binding-linux-x64-musl@1.70.0': + '@oxlint/binding-linux-x64-musl@1.80.0': optional: true - '@oxlint/binding-openharmony-arm64@1.70.0': + '@oxlint/binding-openharmony-arm64@1.80.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.70.0': + '@oxlint/binding-win32-arm64-msvc@1.80.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.70.0': + '@oxlint/binding-win32-ia32-msvc@1.80.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.70.0': + '@oxlint/binding-win32-x64-msvc@1.80.0': optional: true '@pierre/icons@0.7.1(react@19.2.7)': @@ -7836,42 +8202,81 @@ snapshots: '@radix-ui/rect@1.1.1': {} + '@rolldown/binding-android-arm-eabi@1.2.6': + optional: true + '@rolldown/binding-android-arm64@1.1.3': optional: true + '@rolldown/binding-android-arm64@1.2.6': + optional: true + '@rolldown/binding-darwin-arm64@1.1.3': optional: true + '@rolldown/binding-darwin-arm64@1.2.6': + optional: true + '@rolldown/binding-darwin-x64@1.1.3': optional: true + '@rolldown/binding-darwin-x64@1.2.6': + optional: true + '@rolldown/binding-freebsd-x64@1.1.3': optional: true + '@rolldown/binding-freebsd-x64@1.2.6': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.1.3': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.2.6': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.1.3': optional: true + '@rolldown/binding-linux-arm64-gnu@1.2.6': + optional: true + '@rolldown/binding-linux-arm64-musl@1.1.3': optional: true + '@rolldown/binding-linux-arm64-musl@1.2.6': + optional: true + '@rolldown/binding-linux-ppc64-gnu@1.1.3': optional: true + '@rolldown/binding-linux-ppc64-gnu@1.2.6': + optional: true + '@rolldown/binding-linux-s390x-gnu@1.1.3': optional: true + '@rolldown/binding-linux-s390x-gnu@1.2.6': + optional: true + '@rolldown/binding-linux-x64-gnu@1.1.3': optional: true + '@rolldown/binding-linux-x64-gnu@1.2.6': + optional: true + '@rolldown/binding-linux-x64-musl@1.1.3': optional: true + '@rolldown/binding-linux-x64-musl@1.2.6': + optional: true + '@rolldown/binding-openharmony-arm64@1.1.3': optional: true + '@rolldown/binding-openharmony-arm64@1.2.6': + optional: true + '@rolldown/binding-wasm32-wasi@1.1.3': dependencies: '@emnapi/core': 1.11.1 @@ -7882,9 +8287,15 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.1.3': optional: true + '@rolldown/binding-win32-arm64-msvc@1.2.6': + optional: true + '@rolldown/binding-win32-x64-msvc@1.1.3': optional: true + '@rolldown/binding-win32-x64-msvc@1.2.6': + optional: true + '@rolldown/pluginutils@1.0.0-beta.35': {} '@rolldown/pluginutils@1.0.1': {} @@ -8014,7 +8425,7 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@swc/helpers@0.5.15': + '@swc/helpers@0.5.23': dependencies: tslib: 2.8.1 @@ -8087,7 +8498,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.1.13 '@tailwindcss/oxide': 4.1.13 - postcss: 8.5.15 + postcss: 8.5.23 tailwindcss: 4.1.13 '@textlint/ast-node-types@15.7.1': {} @@ -8125,12 +8536,12 @@ snapshots: minimatch: 10.2.5 path-browserify: 1.0.1 - '@tsdown/css@0.22.3(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.3)(yaml@2.9.0)': + '@tsdown/css@0.22.14(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.14)(yaml@2.9.0)': dependencies: - lightningcss: 1.32.0 + lightningcss: 1.33.0 postcss-load-config: 6.0.1(jiti@2.7.0)(postcss@8.5.6)(yaml@2.9.0) - rolldown: 1.1.3 - tsdown: 0.22.3(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.3)(@typescript/native-preview@7.0.0-dev.20260622.1)(typescript@6.0.3) + rolldown: 1.2.6 + tsdown: 0.22.14(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.14)(typescript@7.0.2) optionalDependencies: postcss: 8.5.6 postcss-import: 16.1.1(postcss@8.5.6) @@ -8196,8 +8607,6 @@ snapshots: parse5: 7.3.0 undici-types: 7.28.0 - '@types/jsesc@2.5.1': {} - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -8238,36 +8647,65 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260622.1': + '@typescript/typescript-aix-ppc64@7.0.2': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260622.1': + '@typescript/typescript-darwin-arm64@7.0.2': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260622.1': + '@typescript/typescript-darwin-x64@7.0.2': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20260622.1': + '@typescript/typescript-freebsd-arm64@7.0.2': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20260622.1': + '@typescript/typescript-freebsd-x64@7.0.2': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260622.1': + '@typescript/typescript-linux-arm64@7.0.2': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20260622.1': + '@typescript/typescript-linux-arm@7.0.2': optional: true - '@typescript/native-preview@7.0.0-dev.20260622.1': - optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260622.1 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260622.1 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20260622.1 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260622.1 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20260622.1 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260622.1 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20260622.1 + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true '@typespec/ts-http-runtime@0.3.6': dependencies: @@ -8279,16 +8717,16 @@ snapshots: '@ungap/structured-clone@1.3.1': {} - '@vercel/analytics@2.0.1(next@16.2.9(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': + '@vercel/analytics@2.0.1(next@16.3.3(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': optionalDependencies: - next: 16.2.9(@babel/core@7.29.7)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + next: 16.3.3(@babel/core@7.29.7)(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 '@vercel/firewall@1.2.1': {} - '@vercel/speed-insights@2.0.0(next@16.2.9(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': + '@vercel/speed-insights@2.0.0(next@16.3.3(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': optionalDependencies: - next: 16.2.9(@babel/core@7.29.7)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + next: 16.3.3(@babel/core@7.29.7)(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react: 19.2.7 '@vitejs/plugin-react@5.0.3(vite@8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0))': @@ -8361,7 +8799,7 @@ snapshots: minimatch: 3.1.5 parse-semver: 1.1.1 read: 1.0.7 - semver: 7.8.4 + semver: 7.8.5 tmp: 0.2.7 typed-rest-client: 1.8.11 url-join: 4.0.1 @@ -8397,7 +8835,7 @@ snapshots: parse-semver: 1.1.1 read: 1.0.7 secretlint: 10.2.2 - semver: 7.8.4 + semver: 7.8.5 tmp: 0.2.7 typed-rest-client: 1.8.11 url-join: 4.0.1 @@ -8411,6 +8849,80 @@ snapshots: '@vscode/web-custom-data@0.6.3': {} + '@yuku-codegen/binding-android-arm64@0.8.7': + optional: true + + '@yuku-codegen/binding-darwin-arm64@0.8.7': + optional: true + + '@yuku-codegen/binding-darwin-x64@0.8.7': + optional: true + + '@yuku-codegen/binding-freebsd-x64@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm-gnu@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm-musl@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm64-gnu@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-arm64-musl@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-x64-gnu@0.8.7': + optional: true + + '@yuku-codegen/binding-linux-x64-musl@0.8.7': + optional: true + + '@yuku-codegen/binding-win32-arm64@0.8.7': + optional: true + + '@yuku-codegen/binding-win32-x64@0.8.7': + optional: true + + '@yuku-parser/binding-android-arm64@0.8.7': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.8.7': + optional: true + + '@yuku-parser/binding-darwin-x64@0.8.7': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.8.7': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.8.7': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.8.7': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.8.7': + optional: true + + '@yuku-parser/binding-win32-arm64@0.8.7': + optional: true + + '@yuku-parser/binding-win32-x64@0.8.7': + optional: true + + '@yuku-toolchain/types@0.8.7': {} + accepts@2.0.0: dependencies: mime-types: 3.0.2 @@ -8467,12 +8979,6 @@ snapshots: dependencies: tslib: 2.8.1 - ast-kit@3.0.0: - dependencies: - '@babel/parser': 8.0.0 - estree-walker: 3.0.3 - pathe: 2.0.3 - ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -8519,8 +9025,6 @@ snapshots: dependencies: editions: 6.22.0 - birpc@4.0.0: {} - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -8754,7 +9258,7 @@ snapshots: json-schema-typed: 7.0.3 onetime: 5.1.2 pkg-up: 3.1.0 - semver: 7.8.4 + semver: 7.8.5 content-disposition@1.1.0: {} @@ -8775,14 +9279,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.2(typescript@6.0.3): + cosmiconfig@9.0.2(typescript@7.0.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.2.0 parse-json: 5.2.0 optionalDependencies: - typescript: 6.0.3 + typescript: 7.0.2 cross-spawn@7.0.6: dependencies: @@ -9180,9 +9684,9 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.7): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.7 fetch-blob@3.2.0: dependencies: @@ -9735,7 +10239,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.8.4 + semver: 7.8.5 jwa@2.0.1: dependencies: @@ -9769,66 +10273,99 @@ snapshots: lightningcss-android-arm64@1.32.0: optional: true + lightningcss-android-arm64@1.33.0: + optional: true + lightningcss-darwin-arm64@1.30.1: optional: true lightningcss-darwin-arm64@1.32.0: optional: true + lightningcss-darwin-arm64@1.33.0: + optional: true + lightningcss-darwin-x64@1.30.1: optional: true lightningcss-darwin-x64@1.32.0: optional: true + lightningcss-darwin-x64@1.33.0: + optional: true + lightningcss-freebsd-x64@1.30.1: optional: true lightningcss-freebsd-x64@1.32.0: optional: true + lightningcss-freebsd-x64@1.33.0: + optional: true + lightningcss-linux-arm-gnueabihf@1.30.1: optional: true lightningcss-linux-arm-gnueabihf@1.32.0: optional: true + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + lightningcss-linux-arm64-gnu@1.30.1: optional: true lightningcss-linux-arm64-gnu@1.32.0: optional: true + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + lightningcss-linux-arm64-musl@1.30.1: optional: true lightningcss-linux-arm64-musl@1.32.0: optional: true + lightningcss-linux-arm64-musl@1.33.0: + optional: true + lightningcss-linux-x64-gnu@1.30.1: optional: true lightningcss-linux-x64-gnu@1.32.0: optional: true + lightningcss-linux-x64-gnu@1.33.0: + optional: true + lightningcss-linux-x64-musl@1.30.1: optional: true lightningcss-linux-x64-musl@1.32.0: optional: true + lightningcss-linux-x64-musl@1.33.0: + optional: true + lightningcss-win32-arm64-msvc@1.30.1: optional: true lightningcss-win32-arm64-msvc@1.32.0: optional: true + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + lightningcss-win32-x64-msvc@1.30.1: optional: true lightningcss-win32-x64-msvc@1.32.0: optional: true + lightningcss-win32-x64-msvc@1.33.0: + optional: true + lightningcss@1.30.1: dependencies: detect-libc: 2.1.2 @@ -9860,6 +10397,22 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -10458,7 +11011,7 @@ snapshots: ms@2.1.3: {} - msw@2.14.6(@types/node@20.19.41)(typescript@6.0.3): + msw@2.14.6(@types/node@20.19.41)(typescript@7.0.2): dependencies: '@inquirer/confirm': 6.1.1(@types/node@20.19.41) '@mswjs/interceptors': 0.41.9 @@ -10479,7 +11032,7 @@ snapshots: until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: - typescript: 6.0.3 + typescript: 7.0.2 transitivePeerDependencies: - '@types/node' @@ -10489,7 +11042,7 @@ snapshots: nano-spawn@2.1.0: {} - nanoid@3.3.12: {} + nanoid@3.3.18: {} napi-build-utils@2.0.0: optional: true @@ -10510,35 +11063,36 @@ snapshots: - '@types/react' - supports-color - next@16.2.9(@babel/core@7.29.7)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + next@16.3.3(@babel/core@7.29.7)(@playwright/test@1.51.1)(@types/node@20.19.41)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - '@next/env': 16.2.9 - '@swc/helpers': 0.5.15 + '@next/env': 16.3.3 + '@swc/helpers': 0.5.23 baseline-browser-mapping: 2.10.33 caniuse-lite: 1.0.30001799 - postcss: 8.4.31 + postcss: 8.5.23 react: 19.2.7 react-dom: 19.2.7(react@19.2.7) styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.7) optionalDependencies: - '@next/swc-darwin-arm64': 16.2.9 - '@next/swc-darwin-x64': 16.2.9 - '@next/swc-linux-arm64-gnu': 16.2.9 - '@next/swc-linux-arm64-musl': 16.2.9 - '@next/swc-linux-x64-gnu': 16.2.9 - '@next/swc-linux-x64-musl': 16.2.9 - '@next/swc-win32-arm64-msvc': 16.2.9 - '@next/swc-win32-x64-msvc': 16.2.9 + '@next/swc-darwin-arm64': 16.3.3 + '@next/swc-darwin-x64': 16.3.3 + '@next/swc-linux-arm64-gnu': 16.3.3 + '@next/swc-linux-arm64-musl': 16.3.3 + '@next/swc-linux-x64-gnu': 16.3.3 + '@next/swc-linux-x64-musl': 16.3.3 + '@next/swc-win32-arm64-msvc': 16.3.3 + '@next/swc-win32-x64-msvc': 16.3.3 '@playwright/test': 1.51.1 babel-plugin-react-compiler: 1.0.0 - sharp: 0.34.5 + sharp: 0.35.3(@types/node@20.19.41) transitivePeerDependencies: - '@babel/core' + - '@types/node' - babel-plugin-macros node-abi@3.92.0: dependencies: - semver: 7.8.4 + semver: 7.8.5 optional: true node-addon-api@4.3.0: @@ -10562,7 +11116,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.8.4 + semver: 7.8.5 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -10592,7 +11146,7 @@ snapshots: object-treeify@1.1.33: {} - obug@2.1.3: {} + obug@2.1.4: {} on-finished@2.4.1: dependencies: @@ -10652,7 +11206,7 @@ snapshots: follow-redirects: 1.16.0 is-ci: 2.0.0 leven: 3.1.0 - semver: 7.8.4 + semver: 7.8.5 tmp: 0.2.7 yauzl-promise: 4.0.0 transitivePeerDependencies: @@ -10683,37 +11237,37 @@ snapshots: '@oxfmt/binding-win32-ia32-msvc': 0.55.0 '@oxfmt/binding-win32-x64-msvc': 0.55.0 - oxlint-tsgolint@0.23.0: + oxlint-tsgolint@7.0.2001: optionalDependencies: - '@oxlint-tsgolint/darwin-arm64': 0.23.0 - '@oxlint-tsgolint/darwin-x64': 0.23.0 - '@oxlint-tsgolint/linux-arm64': 0.23.0 - '@oxlint-tsgolint/linux-x64': 0.23.0 - '@oxlint-tsgolint/win32-arm64': 0.23.0 - '@oxlint-tsgolint/win32-x64': 0.23.0 - - oxlint@1.70.0(oxlint-tsgolint@0.23.0): + '@oxlint-tsgolint/darwin-arm64': 7.0.2001 + '@oxlint-tsgolint/darwin-x64': 7.0.2001 + '@oxlint-tsgolint/linux-arm64': 7.0.2001 + '@oxlint-tsgolint/linux-x64': 7.0.2001 + '@oxlint-tsgolint/win32-arm64': 7.0.2001 + '@oxlint-tsgolint/win32-x64': 7.0.2001 + + oxlint@1.80.0(oxlint-tsgolint@7.0.2001): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.70.0 - '@oxlint/binding-android-arm64': 1.70.0 - '@oxlint/binding-darwin-arm64': 1.70.0 - '@oxlint/binding-darwin-x64': 1.70.0 - '@oxlint/binding-freebsd-x64': 1.70.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.70.0 - '@oxlint/binding-linux-arm-musleabihf': 1.70.0 - '@oxlint/binding-linux-arm64-gnu': 1.70.0 - '@oxlint/binding-linux-arm64-musl': 1.70.0 - '@oxlint/binding-linux-ppc64-gnu': 1.70.0 - '@oxlint/binding-linux-riscv64-gnu': 1.70.0 - '@oxlint/binding-linux-riscv64-musl': 1.70.0 - '@oxlint/binding-linux-s390x-gnu': 1.70.0 - '@oxlint/binding-linux-x64-gnu': 1.70.0 - '@oxlint/binding-linux-x64-musl': 1.70.0 - '@oxlint/binding-openharmony-arm64': 1.70.0 - '@oxlint/binding-win32-arm64-msvc': 1.70.0 - '@oxlint/binding-win32-ia32-msvc': 1.70.0 - '@oxlint/binding-win32-x64-msvc': 1.70.0 - oxlint-tsgolint: 0.23.0 + '@oxlint/binding-android-arm-eabi': 1.80.0 + '@oxlint/binding-android-arm64': 1.80.0 + '@oxlint/binding-darwin-arm64': 1.80.0 + '@oxlint/binding-darwin-x64': 1.80.0 + '@oxlint/binding-freebsd-x64': 1.80.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.80.0 + '@oxlint/binding-linux-arm-musleabihf': 1.80.0 + '@oxlint/binding-linux-arm64-gnu': 1.80.0 + '@oxlint/binding-linux-arm64-musl': 1.80.0 + '@oxlint/binding-linux-ppc64-gnu': 1.80.0 + '@oxlint/binding-linux-riscv64-gnu': 1.80.0 + '@oxlint/binding-linux-riscv64-musl': 1.80.0 + '@oxlint/binding-linux-s390x-gnu': 1.80.0 + '@oxlint/binding-linux-x64-gnu': 1.80.0 + '@oxlint/binding-linux-x64-musl': 1.80.0 + '@oxlint/binding-openharmony-arm64': 1.80.0 + '@oxlint/binding-win32-arm64-msvc': 1.80.0 + '@oxlint/binding-win32-ia32-msvc': 1.80.0 + '@oxlint/binding-win32-x64-msvc': 1.80.0 + oxlint-tsgolint: 7.0.2001 p-limit@2.3.0: dependencies: @@ -10800,15 +11354,13 @@ snapshots: path-type@6.0.0: {} - pathe@2.0.3: {} - pend@1.2.0: {} picocolors@1.1.1: {} picomatch@2.3.2: {} - picomatch@4.0.4: {} + picomatch@4.0.7: {} pidtree@0.6.1: {} @@ -10842,8 +11394,8 @@ snapshots: dependencies: htmlparser2: 8.0.2 js-tokens: 9.0.1 - postcss: 8.5.15 - postcss-safe-parser: 6.0.0(postcss@8.5.15) + postcss: 8.5.23 + postcss-safe-parser: 6.0.0(postcss@8.5.23) postcss-import@16.1.1(postcss@8.5.6): dependencies: @@ -10867,13 +11419,13 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 7.1.4 - postcss-safe-parser@6.0.0(postcss@8.5.15): + postcss-safe-parser@6.0.0(postcss@8.5.23): dependencies: - postcss: 8.5.15 + postcss: 8.5.23 - postcss-safe-parser@7.0.1(postcss@8.5.15): + postcss-safe-parser@7.0.1(postcss@8.5.23): dependencies: - postcss: 8.5.15 + postcss: 8.5.23 postcss-selector-parser@7.1.4: dependencies: @@ -10882,21 +11434,15 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.31: + postcss@8.5.23: dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - postcss@8.5.15: - dependencies: - nanoid: 3.3.12 + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.1 postcss@8.5.6: dependencies: - nanoid: 3.3.12 + nanoid: 3.3.18 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -11167,20 +11713,17 @@ snapshots: rfdc@1.4.1: {} - rolldown-plugin-dts@0.26.0(@typescript/native-preview@7.0.0-dev.20260622.1)(rolldown@1.1.3)(typescript@6.0.3): + rolldown-plugin-dts@0.27.14(rolldown@1.2.6)(typescript@7.0.2): dependencies: - '@babel/generator': 8.0.0 - '@babel/helper-validator-identifier': 8.0.0 - '@babel/parser': 8.0.0 - ast-kit: 3.0.0 - birpc: 4.0.0 dts-resolver: 3.0.0 get-tsconfig: 5.0.0-beta.5 - obug: 2.1.3 - rolldown: 1.1.3 + obug: 2.1.4 + rolldown: 1.2.6 + yuku-ast: 0.8.7 + yuku-codegen: 0.8.7 + yuku-parser: 0.8.7 optionalDependencies: - '@typescript/native-preview': 7.0.0-dev.20260622.1 - typescript: 6.0.3 + typescript: 7.0.2 transitivePeerDependencies: - oxc-resolver @@ -11205,6 +11748,27 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.3 '@rolldown/binding-win32-x64-msvc': 1.1.3 + rolldown@1.2.6: + dependencies: + '@oxc-project/types': 0.147.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm-eabi': 1.2.6 + '@rolldown/binding-android-arm64': 1.2.6 + '@rolldown/binding-darwin-arm64': 1.2.6 + '@rolldown/binding-darwin-x64': 1.2.6 + '@rolldown/binding-freebsd-x64': 1.2.6 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.6 + '@rolldown/binding-linux-arm64-gnu': 1.2.6 + '@rolldown/binding-linux-arm64-musl': 1.2.6 + '@rolldown/binding-linux-ppc64-gnu': 1.2.6 + '@rolldown/binding-linux-s390x-gnu': 1.2.6 + '@rolldown/binding-linux-x64-gnu': 1.2.6 + '@rolldown/binding-linux-x64-musl': 1.2.6 + '@rolldown/binding-openharmony-arm64': 1.2.6 + '@rolldown/binding-win32-arm64-msvc': 1.2.6 + '@rolldown/binding-win32-x64-msvc': 1.2.6 + router@2.2.0: dependencies: debug: 4.4.3 @@ -11251,7 +11815,7 @@ snapshots: semver@6.3.1: {} - semver@7.8.4: {} + semver@7.8.5: {} send@1.2.1: dependencies: @@ -11282,7 +11846,7 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@3.3.1(@types/node@20.19.41)(typescript@6.0.3): + shadcn@3.3.1(@types/node@20.19.41)(typescript@7.0.2): dependencies: '@antfu/ni': 25.0.0 '@babel/core': 7.29.7 @@ -11293,7 +11857,7 @@ snapshots: '@modelcontextprotocol/sdk': 1.29.0(zod@3.25.76) browserslist: 4.28.2 commander: 14.0.3 - cosmiconfig: 9.0.2(typescript@6.0.3) + cosmiconfig: 9.0.2(typescript@7.0.2) dedent: 1.7.2 deepmerge: 4.3.1 diff: 8.0.4 @@ -11303,10 +11867,10 @@ snapshots: fuzzysort: 3.1.0 https-proxy-agent: 7.0.6 kleur: 4.1.5 - msw: 2.14.6(@types/node@20.19.41)(typescript@6.0.3) + msw: 2.14.6(@types/node@20.19.41)(typescript@7.0.2) node-fetch: 3.3.2 ora: 8.2.0 - postcss: 8.5.15 + postcss: 8.5.23 prompts: 2.4.2 recast: 0.23.11 stringify-object: 5.0.0 @@ -11321,36 +11885,38 @@ snapshots: - supports-color - typescript - sharp@0.34.5: + sharp@0.35.3(@types/node@20.19.41): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.8.4 + semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 + '@img/sharp-darwin-arm64': 0.35.3 + '@img/sharp-darwin-x64': 0.35.3 + '@img/sharp-freebsd-wasm32': 0.35.3 + '@img/sharp-libvips-darwin-arm64': 1.3.2 + '@img/sharp-libvips-darwin-x64': 1.3.2 + '@img/sharp-libvips-linux-arm': 1.3.2 + '@img/sharp-libvips-linux-arm64': 1.3.2 + '@img/sharp-libvips-linux-ppc64': 1.3.2 + '@img/sharp-libvips-linux-riscv64': 1.3.2 + '@img/sharp-libvips-linux-s390x': 1.3.2 + '@img/sharp-libvips-linux-x64': 1.3.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + '@img/sharp-linux-arm': 0.35.3 + '@img/sharp-linux-arm64': 0.35.3 + '@img/sharp-linux-ppc64': 0.35.3 + '@img/sharp-linux-riscv64': 0.35.3 + '@img/sharp-linux-s390x': 0.35.3 + '@img/sharp-linux-x64': 0.35.3 + '@img/sharp-linuxmusl-arm64': 0.35.3 + '@img/sharp-linuxmusl-x64': 0.35.3 + '@img/sharp-webcontainers-wasm32': 0.35.3 + '@img/sharp-win32-arm64': 0.35.3 + '@img/sharp-win32-ia32': 0.35.3 + '@img/sharp-win32-x64': 0.35.3 + '@types/node': 20.19.41 optional: true shebang-command@2.0.0: @@ -11538,16 +12104,16 @@ snapshots: optionalDependencies: '@babel/core': 7.29.7 - stylelint-config-recommended@18.0.0(stylelint@17.13.0(typescript@6.0.3)): + stylelint-config-recommended@18.0.0(stylelint@17.13.0(typescript@7.0.2)): dependencies: - stylelint: 17.13.0(typescript@6.0.3) + stylelint: 17.13.0(typescript@7.0.2) - stylelint-config-standard@40.0.0(stylelint@17.13.0(typescript@6.0.3)): + stylelint-config-standard@40.0.0(stylelint@17.13.0(typescript@7.0.2)): dependencies: - stylelint: 17.13.0(typescript@6.0.3) - stylelint-config-recommended: 18.0.0(stylelint@17.13.0(typescript@6.0.3)) + stylelint: 17.13.0(typescript@7.0.2) + stylelint-config-recommended: 18.0.0(stylelint@17.13.0(typescript@7.0.2)) - stylelint@17.13.0(typescript@6.0.3): + stylelint@17.13.0(typescript@7.0.2): dependencies: '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) @@ -11557,7 +12123,7 @@ snapshots: '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.4) '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.4) colord: 2.9.3 - cosmiconfig: 9.0.2(typescript@6.0.3) + cosmiconfig: 9.0.2(typescript@7.0.2) css-functions-list: 3.3.3 css-tree: 3.2.1 debug: 4.4.3 @@ -11575,8 +12141,8 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.15 - postcss-safe-parser: 7.0.1(postcss@8.5.15) + postcss: 8.5.23 + postcss-safe-parser: 7.0.1(postcss@8.5.23) postcss-selector-parser: 7.1.4 postcss-value-parser: 4.2.0 string-width: 8.2.1 @@ -11684,8 +12250,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 tinypool@2.1.0: {} @@ -11738,7 +12304,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.22.3(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.3)(@typescript/native-preview@7.0.0-dev.20260622.1)(typescript@6.0.3): + tsdown@0.22.14(@arethetypeswrong/core@0.18.2)(@tsdown/css@0.22.14)(typescript@7.0.2): dependencies: ansis: 4.3.1 cac: 7.0.0 @@ -11746,22 +12312,22 @@ snapshots: empathic: 2.0.1 hookable: 6.1.1 import-without-cache: 0.4.0 - obug: 2.1.3 - picomatch: 4.0.4 - rolldown: 1.1.3 - rolldown-plugin-dts: 0.26.0(@typescript/native-preview@7.0.0-dev.20260622.1)(rolldown@1.1.3)(typescript@6.0.3) - semver: 7.8.4 + obug: 2.1.4 + picomatch: 4.0.7 + rolldown: 1.2.6 + rolldown-plugin-dts: 0.27.14(rolldown@1.2.6)(typescript@7.0.2) tinyexec: 1.2.4 tinyglobby: 0.2.17 tree-kill: 1.2.2 unconfig-core: 7.5.0 + verkit: 0.3.2 optionalDependencies: '@arethetypeswrong/core': 0.18.2 - '@tsdown/css': 0.22.3(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.3)(yaml@2.9.0) - typescript: 6.0.3 + '@tsdown/css': 0.22.14(jiti@2.7.0)(postcss-import@16.1.1(postcss@8.5.6))(postcss@8.5.6)(tsdown@0.22.14)(yaml@2.9.0) + typescript: 7.0.2 transitivePeerDependencies: - - '@ts-macro/tsc' - '@typescript/native-preview' + - '@volar/typescript' - oxc-resolver - vue-tsc @@ -11794,7 +12360,30 @@ snapshots: tunnel: 0.0.6 underscore: 1.13.8 - typescript@6.0.3: {} + typescript@5.6.1-rc: {} + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 uc.micro@2.1.0: {} @@ -11912,6 +12501,8 @@ snapshots: vary@1.1.2: {} + verkit@0.3.2: {} + version-range@4.15.0: {} vfile-matter@5.0.1: @@ -11931,9 +12522,9 @@ snapshots: vite@8.1.0(@types/node@25.9.3)(jiti@2.7.0)(yaml@2.9.0): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.15 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.23 rolldown: 1.1.3 tinyglobby: 0.2.17 optionalDependencies: @@ -12055,6 +12646,45 @@ snapshots: yoctocolors@2.1.2: {} + yuku-ast@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + + yuku-codegen@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + optionalDependencies: + '@yuku-codegen/binding-android-arm64': 0.8.7 + '@yuku-codegen/binding-darwin-arm64': 0.8.7 + '@yuku-codegen/binding-darwin-x64': 0.8.7 + '@yuku-codegen/binding-freebsd-x64': 0.8.7 + '@yuku-codegen/binding-linux-arm-gnu': 0.8.7 + '@yuku-codegen/binding-linux-arm-musl': 0.8.7 + '@yuku-codegen/binding-linux-arm64-gnu': 0.8.7 + '@yuku-codegen/binding-linux-arm64-musl': 0.8.7 + '@yuku-codegen/binding-linux-x64-gnu': 0.8.7 + '@yuku-codegen/binding-linux-x64-musl': 0.8.7 + '@yuku-codegen/binding-win32-arm64': 0.8.7 + '@yuku-codegen/binding-win32-x64': 0.8.7 + + yuku-parser@0.8.7: + dependencies: + '@yuku-toolchain/types': 0.8.7 + yuku-ast: 0.8.7 + optionalDependencies: + '@yuku-parser/binding-android-arm64': 0.8.7 + '@yuku-parser/binding-darwin-arm64': 0.8.7 + '@yuku-parser/binding-darwin-x64': 0.8.7 + '@yuku-parser/binding-freebsd-x64': 0.8.7 + '@yuku-parser/binding-linux-arm-gnu': 0.8.7 + '@yuku-parser/binding-linux-arm-musl': 0.8.7 + '@yuku-parser/binding-linux-arm64-gnu': 0.8.7 + '@yuku-parser/binding-linux-arm64-musl': 0.8.7 + '@yuku-parser/binding-linux-x64-gnu': 0.8.7 + '@yuku-parser/binding-linux-x64-musl': 0.8.7 + '@yuku-parser/binding-win32-arm64': 0.8.7 + '@yuku-parser/binding-win32-x64': 0.8.7 + zod-to-json-schema@3.25.2(zod@3.25.76): dependencies: zod: 3.25.76 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 37d71074c..1a5da72d7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -16,6 +16,7 @@ minimumReleaseAgeExclude: - '@moonrepo/core-macos-x64' - '@moonrepo/core-windows-x64-msvc' - '@oxc-project/types' + - '@rolldown/binding-android-arm-eabi' - '@rolldown/binding-android-arm64' - '@rolldown/binding-darwin-arm64' - '@rolldown/binding-darwin-x64' @@ -31,14 +32,6 @@ minimumReleaseAgeExclude: - '@rolldown/binding-wasm32-wasi' - '@rolldown/binding-win32-arm64-msvc' - '@rolldown/binding-win32-x64-msvc' - - '@typescript/native-preview' - - '@typescript/native-preview-darwin-arm64' - - '@typescript/native-preview-darwin-x64' - - '@typescript/native-preview-linux-arm' - - '@typescript/native-preview-linux-arm64' - - '@typescript/native-preview-linux-x64' - - '@typescript/native-preview-win32-arm64' - - '@typescript/native-preview-win32-x64' - 'rolldown' - 'vite' - '@shikijs/core@4.4.1' @@ -83,7 +76,7 @@ catalog: '@shikijs/themes': '4.4.1' '@shikijs/transformers': '4.4.1' '@tailwindcss/postcss': '4.1.13' - '@tsdown/css': '0.22.3' + '@tsdown/css': '0.22.14' '@types/bun': '1.4.0' '@types/culori': '4.0.1' '@types/hast': '3.0.4' @@ -96,7 +89,6 @@ catalog: '@vercel/firewall': '1.2.1' '@vercel/speed-insights': '2.0.0' '@vscode/vsce': '3.2.2' - '@typescript/native-preview': '7.0.0-dev.20260622.1' '@vscode/web-custom-data': '0.6.3' '@vitejs/plugin-react': '5.0.3' 'autoprefixer': '10.4.22' @@ -117,12 +109,12 @@ catalog: 'lru_map': '0.4.1' 'lucide-react': '0.545.0' 'mitata': '1.0.34' - 'next': '16.2.9' + 'next': '16.3.3' 'next-mdx-remote': '6.0.0' 'ovsx': '1.0.0' 'oxfmt': '0.55.0' - 'oxlint': '1.70.0' - 'oxlint-tsgolint': '0.23.0' + 'oxlint': '1.80.0' + 'oxlint-tsgolint': '7.0.2001' 'postcss': '8.5.6' 'postcss-calc': '10.1.1' 'postcss-html': '1.8.1' @@ -141,9 +133,9 @@ catalog: 'svgo': '4.0.1' 'tailwind-merge': '3.3.1' 'tailwindcss': '4.1.13' - 'tsdown': '0.22.3' + 'tsdown': '0.22.14' 'tw-animate-css': '1.4.0' - 'typescript': '6.0.3' + 'typescript': '7.0.2' 'unist-util-visit': '5.0.0' 'vite': '8.1.0' 'zod': '4.1.11' @@ -162,7 +154,6 @@ overrides: 'react': 'catalog:' 'react-dom': 'catalog:' 'shiki': 'catalog:' - 'typescript': 'catalog:' allowBuilds: '@tailwindcss/oxide': true