From 23a8a92bc2557870a3eff33d77719521d03dccba Mon Sep 17 00:00:00 2001 From: David Di Biase <1168397+davedbase@users.noreply.github.com> Date: Sun, 5 Jul 2026 11:44:30 -0400 Subject: [PATCH 01/10] Redesigned createInfiniteScroll primitive --- .changeset/pagination-solid2-migration.md | 2 +- packages/pagination/README.md | 60 ++++- packages/pagination/src/index.ts | 220 ++++++++++++------ .../pagination/stories/pagination.stories.tsx | 84 ++++--- packages/pagination/test/index.test.ts | 180 +++++++++++++- packages/pagination/test/server.test.ts | 4 +- 6 files changed, 425 insertions(+), 125 deletions(-) diff --git a/.changeset/pagination-solid2-migration.md b/.changeset/pagination-solid2-migration.md index be2ae214b..b9d92cc35 100644 --- a/.changeset/pagination-solid2-migration.md +++ b/.changeset/pagination-solid2-migration.md @@ -12,6 +12,6 @@ Migrate to Solid.js v2.0 (beta.14) - `isServer` now imported from `@solidjs/web` (not `solid-js/web`) - `createPagination`: page clamping when pages count decreases is now implemented via a derived memo instead of `createComputed` (which was removed in Solid 2.0). The clamping is reactive and automatic. -- `createInfiniteScroll`: removed `createResource` dependency (removed in Solid 2.0). Fetching is now implemented with `createEffect` and a cancellation pattern. The `pages.loading` and `pages.error` resource properties are no longer available; use `end()` or wrap the fetcher to handle errors externally. +- `createInfiniteScroll`: redesigned around per-page async reads instead of a flat accumulated array (resolves #795). `pages()` now returns the requested page *indices* (`number[]`), not the flattened items — feed it to `` and call the new `getPage(i)` for each index to get that page's `{ content, fetching, error, retry }`. `content` is a genuine async value, so it also works inside ``/`` boundaries for consumers who prefer that over reading `fetching`/`error` directly. `page`/`setPage`/`setPages` are removed in favor of `pageCount`/`setPageCount`; `end` no longer folds in errors (a failed page pauses auto-loading until retried via `retry()`, rather than permanently ending the scroll); added `reset()` to dispose all cached pages and start over. - `batch()` calls removed — Solid 2.0 batches updates automatically via microtasks. Tests require `flush()` after signal writes to observe committed values. - All internal signals use `{ ownedWrite: true }` to allow setters to be called from reactive scopes and event handlers without triggering ownership warnings. diff --git a/packages/pagination/README.md b/packages/pagination/README.md index 27bca2ae8..9db699bec 100644 --- a/packages/pagination/README.md +++ b/packages/pagination/README.md @@ -142,15 +142,28 @@ return {item => }; Combines [`IntersectionObserver`](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API) with a page-based fetcher to provide an easy way to implement infinite scrolling. Browser-only: the loader and fetching are skipped on the server. +Each page is its own independent async unit, so it can be rendered with ``/`` for idiomatic suspense and retry, or read via plain `fetching`/`error` signals if you'd rather not use boundaries. + ### How to use it ```tsx // fetcher: (page: number) => Promise -const [pages, setEl, { end }] = createInfiniteScroll(fetcher); +const [pages, setEl, { getPage, end }] = createInfiniteScroll(fetcher); return (
- {item =>

{item}

}
+ + {i => { + const page = getPage(i); + return ( + }> + Loading…}> + {item =>

{item}

}
+
+
+ ); + }} +

Loading...

@@ -158,24 +171,53 @@ return ( ); ``` +Prefer plain signals over boundaries? Skip ``/`` and use `fetching()`/`error()`/`retry()` directly: + +```tsx + + {i => { + const page = getPage(i); + return ( + Retry: {String(page.error())}} + > + Loading…}> + {item =>

{item}

}
+
+
+ ); + }} +
+``` + ### Definition ```ts +type InfiniteScrollPage = { + content: Accessor; + fetching: Accessor; + error: Accessor; + retry: () => void; +}; + function createInfiniteScroll(fetcher: (page: number) => Promise): [ - pages: Accessor, + pages: Accessor, loader: (el: Element) => void, options: { - page: Accessor; - setPage: Setter; - setPages: Setter; + pageCount: Accessor; + setPageCount: Setter; end: Accessor; - fetching: Accessor; - error: Accessor; + getPage: (index: number) => InfiniteScrollPage; + reset: () => void; }, ]; ``` -`end` is `true` when the fetcher returns an empty array or when an error occurs. +- `pages()` is the list of page indices requested so far — feed it directly to ``. +- `getPage(i)` returns (and caches) the `{ content, fetching, error, retry }` bundle for page `i`. `retry()` re-runs that page's fetcher and clears its error. +- `end` is `true` once a page fetch returns zero items. A failed page does **not** set `end` — the sentinel just pauses auto-loading until that page is retried. +- `reset()` disposes every cached page and starts over from the first page. ## Changelog diff --git a/packages/pagination/src/index.ts b/packages/pagination/src/index.ts index 04435369c..639beaee9 100644 --- a/packages/pagination/src/index.ts +++ b/packages/pagination/src/index.ts @@ -10,6 +10,7 @@ import { type Setter, createEffect, createMemo, + createRoot, createSignal, onCleanup, } from "solid-js"; @@ -362,49 +363,158 @@ declare module "solid-js" { export type _E = JSX.Element; +/** A single page's async fetch, gated independently of every other page. */ +export type InfiniteScrollPage = { + /** the fetched items for this page — read inside ``/`` to gate a subtree on it */ + content: Accessor; + /** true while this page's fetch is in flight */ + fetching: Accessor; + /** the error from this page's last failed fetch, or undefined */ + error: Accessor; + /** re-runs this page's fetcher, clearing its error */ + retry: () => void; +}; + /** - * Provides an easy way to implement infinite scrolling. + * Provides an easy way to implement infinite scrolling. Each page is its own + * independent async unit — render it with ``/`` for + * idiomatic suspense/retry, or read `fetching`/`error` directly for a + * boundary-free UI. * - * ```ts - * const [pages, loader, { page, setPage, setPages, end }] = createInfiniteScroll(fetcher); + * ```tsx + * const [pages, loader, { getPage, end }] = createInfiniteScroll(fetcher); + * + * + * {i => { + * const page = getPage(i); + * return ( + * }> + * }> + * {item => } + * + * + * ); + * }} + * + *
* ``` * @param fetcher `(page: number) => Promise` - * @return `pages()` is an accessor that contains the accumulated array of all fetched items - * @return `loader` is a ref function to attach to the sentinel element that triggers loading - * @method `page` is an accessor that contains the current page number - * @method `setPage` allows to manually change the page number - * @method `setPages` allows to manually replace the accumulated items - * @method `end` is true when content is exhausted or an error occurred - * @method `fetching` is true while a page fetch is in progress - * @method `error` contains the last fetch error, or undefined if the last fetch succeeded + * @return `pages()` is an accessor for the page indices requested so far — feed directly to `` + * @return `loader` is a ref function to attach to the sentinel element that triggers loading more + * @method `getPage` returns (and caches) the `{ content, fetching, error, retry }` bundle for a page index + * @method `pageCount` is an accessor for the number of pages requested + * @method `setPageCount` allows manually growing or jumping the requested page count + * @method `end` is true once a page fetch returns zero items + * @method `reset` disposes every cached page and starts over from the first page */ export function createInfiniteScroll(fetcher: (page: number) => Promise): [ - pages: Accessor, + pages: Accessor, loader: (el: Element) => void, options: { - page: Accessor; - setPage: Setter; - setPages: Setter; + pageCount: Accessor; + setPageCount: Setter; end: Accessor; - fetching: Accessor; - error: Accessor; + getPage: (index: number) => InfiniteScrollPage; + reset: () => void; }, ] { + const initialPageCount = isServer ? 0 : 1; // ownedWrite allows setters to be called from reactive scopes and event handlers - const [pages, setPages] = createSignal([], { ownedWrite: true }); - const [page, setPage] = createSignal(0, { ownedWrite: true }); - const [_end, _setEnd] = createSignal(false, { ownedWrite: true }); - const [fetching, setFetching] = createSignal(false, { ownedWrite: true }); - const [error, setError] = createSignal(undefined, { ownedWrite: true }); - const end = createMemo(() => _end() || !!error()); + const [pageCount, setPageCount] = createSignal(initialPageCount, { ownedWrite: true }); + const pages = createMemo(() => Array.from({ length: pageCount() }, (_, i) => i)); + const [end, setEnd] = createSignal(false, { ownedWrite: true }); + + const pageCache = new Map>(); + const pageDisposers = new Map void>(); + + // Set by the IO block below (browser only); re-observes the sentinel after + // a page resolves so IO fires again if it's still in the viewport — this + // auto-fills the viewport before handing off to the user's scroll. + let reobserve = noop; + + function getPage(index: number): InfiniteScrollPage { + const cached = pageCache.get(index); + if (cached) return cached; + + let entry!: InfiniteScrollPage; + const dispose = createRoot(disposePage => { + const [fetching, setFetching] = createSignal(true, { ownedWrite: true }); + const [error, setError] = createSignal(undefined, { ownedWrite: true }); + // Bumped on retry so `content` (below) re-reads the latest `request`. + const [attempt, setAttempt] = createSignal(0, { ownedWrite: true }); + + // The primitive owns the promise directly (rather than calling + // `fetcher` from inside an async `createMemo`) because the framework's + // `NotReadyError`/boundary plumbing for *rejections* relies on + // internal queueing that isn't part of the public API — a plain + // `.then`/`.catch` here is the reliable way to get `fetching`/`error`. + // `content` still hands back the same promise, so ``/ + // `` work normally for JSX consumers that want them. + let request!: Promise; + const startRequest = () => { + setFetching(true); + setError(undefined); + const thisRequest = fetcher(index); + request = thisRequest; + thisRequest + .then(value => { + if (thisRequest !== request) return; // superseded by a retry + setFetching(false); + if (value.length === 0) setEnd(true); + else if (index === pageCount() - 1) reobserve(); + }) + .catch(err => { + if (thisRequest !== request) return; + setFetching(false); + setError(err); + }); + }; + + // Runs before `content` below so its first, eager computation already + // sees a populated `request` — otherwise it caches a plain `undefined` + // (not yet a thenable) and never revisits it. + startRequest(); + + const content = createMemo(() => { + attempt(); + return request; + }); + + entry = { + content, + fetching, + error, + retry: () => { + startRequest(); + setAttempt(a => a + 1); + }, + }; + return disposePage; + }); + + pageCache.set(index, entry); + pageDisposers.set(index, dispose); + return entry; + } + + function reset() { + for (const dispose of pageDisposers.values()) dispose(); + pageCache.clear(); + pageDisposers.clear(); + setEnd(false); + setPageCount(initialPageCount); + } let add: (el: Element) => void = noop; if (!isServer) { let sentinelEl: Element | null = null; const io = new IntersectionObserver(e => { - if (e.length > 0 && e[0]!.isIntersecting && !end() && !fetching()) { - setPage(p => p + 1); - } + if (e.length === 0 || !e[0]!.isIntersecting || end()) return; + // Don't outrun the last requested page: wait for it to settle, and + // don't auto-advance past a failed one — call `retry` on it instead. + const last = getPage(pageCount() - 1); + if (last.fetching() || last.error()) return; + setPageCount(p => p + 1); }); onCleanup(() => io.disconnect()); add = (el: Element) => { @@ -415,55 +525,23 @@ export function createInfiniteScroll(fetcher: (page: number) => Promise) if (sentinelEl === el) sentinelEl = null; }); }; + reobserve = () => { + const el = sentinelEl; + if (el) { + io.unobserve(el); + io.observe(el); + } + }; + // Starts each page's fetch the moment it's requested, regardless of + // whether the consumer's JSX has rendered that page index yet. createEffect( - () => page(), - currentPage => { - let cancelled = false; - setFetching(true); - fetcher(currentPage) - .then(content => { - if (cancelled) return; - setError(undefined); - if (content.length === 0) { - _setEnd(true); - setFetching(false); - } else { - setPages(p => [...p, ...content]); - setFetching(false); - // IO only fires on intersection *changes*. After the DOM updates - // with new items, re-observe so IO fires again if the sentinel is - // still in the viewport — this auto-fills the viewport before - // handing off to the user's scroll. - const el = sentinelEl; - if (el && !end()) { - io.unobserve(el); - io.observe(el); - } - } - }) - .catch(err => { - if (cancelled) return; - setError(err); - setFetching(false); - }); - return () => { - cancelled = true; - }; + () => pageCount(), + count => { + if (count > 0) getPage(count - 1); }, ); } - return [ - pages, - add, - { - page, - setPage, - setPages, - end, - fetching, - error, - }, - ]; + return [pages, add, { pageCount, setPageCount, end, getPage, reset }]; } diff --git a/packages/pagination/stories/pagination.stories.tsx b/packages/pagination/stories/pagination.stories.tsx index 446f6ea87..b725a4742 100644 --- a/packages/pagination/stories/pagination.stories.tsx +++ b/packages/pagination/stories/pagination.stories.tsx @@ -57,7 +57,7 @@ const PaginationBar = (barProps: { ); export const CreatePaginationStory = meta.story({ - name: "createPagination", + name: "Pagination bar", parameters: { docs: { description: { @@ -109,7 +109,7 @@ export const CreatePaginationStory = meta.story({ }); export const CreateSegmentStory = meta.story({ - name: "createSegment", + name: "Paged item grid", parameters: { docs: { description: { @@ -175,21 +175,24 @@ export const CreateSegmentStory = meta.story({ }); export const CreateInfiniteScrollStory = meta.story({ - name: "createInfiniteScroll", + name: "Infinite scroll with per-page retry", parameters: { docs: { description: { story: - "`createInfiniteScroll` accumulates fetched pages and exposes `fetching`, `end`, and `error` signals. In production, attach `ref={sentinel}` to a DOM element at the bottom of the list — `IntersectionObserver` calls `setPage` automatically when it scrolls into view. This demo drives `setPage` manually to show the state machine.", + "`createInfiniteScroll` treats every page as its own independent async unit via `getPage(i)`, so one page failing doesn't block the rest of the list — it just pauses auto-loading until that page is retried. In production, attach `ref={sentinel}` to a DOM element at the bottom of the list — `IntersectionObserver` calls `setPageCount` automatically when it scrolls into view. This demo drives `setPageCount` manually to show the state machine, and always fails page 1 once to demonstrate per-page retry.", }, }, }, render: () => { - // 4 pages × 6 items = 24 items, page>=4 signals end. - // createInfiniteScroll starts page at 0; the deferred effect fires first - // so fetcher(0) is always the initial call regardless of IO timing. + // 4 pages × 6 items = 24 items, page>=4 signals end. Page 1 fails once. + let page1Failed = false; const mockFetcher = async (page: number): Promise => { await new Promise(resolve => setTimeout(resolve, 600)); + if (page === 1 && !page1Failed) { + page1Failed = true; + throw new Error("Network hiccup"); + } if (page >= 4) return []; return Array.from( { length: 6 }, @@ -199,11 +202,11 @@ export const CreateInfiniteScrollStory = meta.story({ // sentinel is intentionally unused — IO-based auto-loading needs a page-level // scroll context that Storybook's iframe doesn't provide. - const [pages, , { page, fetching, end, setPage, error }] = createInfiniteScroll(mockFetcher); + const [pages, , { pageCount, end, setPageCount, getPage }] = createInfiniteScroll(mockFetcher); return ( - +
- {item => ( -
- {item} -
- )} + {i => { + const page = getPage(i); + return ( + + {String(page.error())} + +
+ } + > + Loading page {i}…} + > + + {item => ( +
+ {item} +
+ )} +
+
+ + ); + }}
- - - {error() ? String(error()) : "All pages loaded"} - + All pages loaded - ); diff --git a/packages/pagination/test/index.test.ts b/packages/pagination/test/index.test.ts index 5d22ec361..7f56f5fd4 100644 --- a/packages/pagination/test/index.test.ts +++ b/packages/pagination/test/index.test.ts @@ -255,25 +255,181 @@ describe("createSegment", () => { }); }); +class MockIntersectionObserver { + static instances: MockIntersectionObserver[] = []; + observed = new Set(); + constructor(public callback: IntersectionObserverCallback) { + MockIntersectionObserver.instances.push(this); + } + observe(el: Element) { + this.observed.add(el); + } + unobserve(el: Element) { + this.observed.delete(el); + } + disconnect() { + this.observed.clear(); + } + trigger(isIntersecting: boolean) { + this.callback([{ isIntersecting } as IntersectionObserverEntry], this as never); + } +} //@ts-ignore -global.IntersectionObserver = class { - disconnect() {} +global.IntersectionObserver = MockIntersectionObserver; + +const settle = async () => { + flush(); + await Promise.resolve(); + await Promise.resolve(); + flush(); }; describe("createInfiniteScroll", () => { - const fetcher = async (page: number) => Array.from({ length: page + 1 }, (_, i) => i); + const fetcher = async (page: number) => Array.from({ length: page + 1 }, (_, i) => page * 10 + i); + + test("requests page 0 eagerly and resolves its content", async () => { + await createRoot(async dispose => { + const [pages, , { pageCount, getPage }] = createInfiniteScroll(fetcher); + expect(pages()).toEqual([0]); + expect(pageCount()).toBe(1); + + const page0 = getPage(0); + expect(page0.fetching(), "fetching until the effect's first pass resolves").toBe(true); + + await settle(); - test("createInfiniteScroll", () => { - const { pages, page, setPage, dispose } = createRoot(dispose => { - const [pages, , { page, setPage }] = createInfiniteScroll(fetcher); - return { pages, page, setPage, dispose }; + expect(page0.fetching()).toBe(false); + expect(page0.error()).toBeUndefined(); + expect(page0.content()).toEqual([0]); + + dispose(); }); - expect(pages(), "initial value should be []").toStrictEqual([]); + }); - setPage(1); - flush(); - expect(page(), "value should be 1").toStrictEqual(1); + test("setPageCount grows the page list and fetches the new page", async () => { + await createRoot(async dispose => { + const [pages, , { setPageCount, getPage }] = createInfiniteScroll(fetcher); + await settle(); - dispose(); + setPageCount(p => p + 1); + flush(); + expect(pages()).toEqual([0, 1]); + + await settle(); + expect(getPage(1).content()).toEqual([10, 11]); + + dispose(); + }); + }); + + test("a page returning an empty array sets end without touching earlier pages", async () => { + const fetchUntilEmpty = async (page: number) => (page >= 1 ? [] : [0]); + await createRoot(async dispose => { + const [, , { setPageCount, end, getPage }] = createInfiniteScroll(fetchUntilEmpty); + await settle(); + expect(end()).toBe(false); + + setPageCount(p => p + 1); + await settle(); + + expect(end()).toBe(true); + expect(getPage(0).content()).toEqual([0]); + dispose(); + }); + }); + + test("a failed fetch surfaces error() without setting end, and retry() recovers", async () => { + let shouldFail = true; + const flaky = async (page: number) => { + if (shouldFail) throw new Error("network down"); + return [page]; + }; + await createRoot(async dispose => { + const [, , { getPage, end }] = createInfiniteScroll(flaky); + const page0 = getPage(0); + await settle(); + + expect(page0.fetching()).toBe(false); + expect(page0.error()).toBeInstanceOf(Error); + expect(end(), "an error is not the same as running out of content").toBe(false); + + shouldFail = false; + page0.retry(); + await settle(); + + expect(page0.error()).toBeUndefined(); + expect(page0.content()).toEqual([0]); + + dispose(); + }); + }); + + test("the sentinel auto-advances once settled, but not while fetching or errored", async () => { + await createRoot(async dispose => { + const [pages, loader, { pageCount }] = createInfiniteScroll(fetcher); + const el = document.createElement("div"); + loader(el); + const io = MockIntersectionObserver.instances.at(-1)!; + + // page 0 hasn't resolved yet — must not advance + io.trigger(true); + flush(); + expect(pageCount()).toBe(1); + + await settle(); + + io.trigger(true); + flush(); + expect(pageCount()).toBe(2); + expect(pages()).toEqual([0, 1]); + + dispose(); + }); + }); + + test("the sentinel does not auto-advance past an errored page", async () => { + const failOnPage1 = async (page: number) => { + if (page === 1) throw new Error("boom"); + return [page]; + }; + await createRoot(async dispose => { + const [, loader, { pageCount }] = createInfiniteScroll(failOnPage1); + const el = document.createElement("div"); + loader(el); + const io = MockIntersectionObserver.instances.at(-1)!; + + await settle(); + io.trigger(true); + await settle(); + expect(pageCount()).toBe(2); + + io.trigger(true); + flush(); + expect(pageCount(), "page 1 errored, so IO should not advance to page 2").toBe(2); + + dispose(); + }); + }); + + test("reset disposes cached pages and starts over from page 0", async () => { + await createRoot(async dispose => { + const [pages, , { setPageCount, getPage, reset }] = createInfiniteScroll(fetcher); + await settle(); + setPageCount(p => p + 1); + await settle(); + expect(pages()).toEqual([0, 1]); + + const stalePage0 = getPage(0); + reset(); + flush(); + expect(pages()).toEqual([0]); + + const fresh = getPage(0); + expect(fresh).not.toBe(stalePage0); + await settle(); + expect(fresh.content()).toEqual([0]); + + dispose(); + }); }); }); diff --git a/packages/pagination/test/server.test.ts b/packages/pagination/test/server.test.ts index 7b910a171..3bead7336 100644 --- a/packages/pagination/test/server.test.ts +++ b/packages/pagination/test/server.test.ts @@ -79,9 +79,9 @@ describe("createInfiniteScroll", () => { test("createInfiniteScroll returns empty state on server", () => createRoot(dispose => { - const [pages, , { page, end }] = createInfiniteScroll(fetcher); + const [pages, , { pageCount, end }] = createInfiniteScroll(fetcher); expect(pages(), "initial pages should be empty").toEqual([]); - expect(page(), "initial page should be 0").toBe(0); + expect(pageCount(), "initial pageCount should be 0").toBe(0); expect(end(), "initial end should be false").toBe(false); dispose(); })); From 78fc47f7e732958512a14a626ac18d79c33757c4 Mon Sep 17 00:00:00 2001 From: David Di Biase <1168397+davedbase@users.noreply.github.com> Date: Sun, 5 Jul 2026 12:16:01 -0400 Subject: [PATCH 02/10] Patched storyboo --- package.json | 4 +- pnpm-lock.yaml | 781 ++++++++++++-------------------------------- pnpm-workspace.yaml | 4 + 3 files changed, 214 insertions(+), 575 deletions(-) diff --git a/package.json b/package.json index 19248e041..e6a2ef4f4 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@solid-primitives/a11y": "workspace:*", "@solidjs/signals": "2.0.0-beta.14", "@solidjs/web": "2.0.0-beta.15", - "@storybook/addon-docs": "^10.4.6", + "@storybook/addon-docs": "10.4.4", "@testing-library/jest-dom": "^6.9.1", "@types/jsdom": "^21.1.7", "@types/node": "^22.15.31", @@ -64,7 +64,7 @@ "rehype-slug": "^6.0.0", "remark-gfm": "^4.0.1", "solid-js": "2.0.0-beta.15", - "storybook": "^10.4.6", + "storybook": "10.4.4", "storybook-solidjs-vite": "^10.5.2", "typescript": "^6.0.3", "vite": "^6.4.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5dc2812b..3d6193546 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + react: 19.2.7 + react-dom: 19.2.7 + importers: .: @@ -27,8 +31,8 @@ importers: specifier: 2.0.0-beta.15 version: 2.0.0-beta.15(solid-js@2.0.0-beta.15) '@storybook/addon-docs': - specifier: ^10.4.6 - version: 10.4.6(@types/react@19.2.15)(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + specifier: 10.4.4 + version: 10.4.4(@types/react@19.2.15)(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@testing-library/jest-dom': specifier: ^6.9.1 version: 6.9.1 @@ -61,7 +65,7 @@ importers: version: 3.4.0 geist: specifier: ^1.7.2 - version: 1.7.2(next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)(sass@1.77.8)) + version: 1.7.2(next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.8)) jsdom: specifier: ^25.0.1 version: 25.0.1 @@ -93,11 +97,11 @@ importers: specifier: 2.0.0-beta.15 version: 2.0.0-beta.15 storybook: - specifier: ^10.4.6 - version: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + specifier: 10.4.4 + version: 10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) storybook-solidjs-vite: specifier: ^10.5.2 - version: 10.5.2(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(esbuild@0.28.1)(rollup@4.61.0)(solid-js@2.0.0-beta.15)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(typescript@6.0.3)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + version: 10.5.2(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(esbuild@0.28.1)(rollup@4.61.0)(solid-js@2.0.0-beta.15)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(typescript@6.0.3)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) typescript: specifier: ^6.0.3 version: 6.0.3 @@ -153,7 +157,7 @@ importers: version: link:../utils '@tanstack/start': specifier: '*' - version: 1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0) + version: 1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0) devDependencies: '@solidjs/web': specifier: 2.0.0-beta.14 @@ -1451,7 +1455,7 @@ importers: version: 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(solid-js@2.0.0-beta.15) '@tanstack/solid-start': specifier: ^2.0.0-beta.17 - version: 2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(solid-js@2.0.0-beta.15)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + version: 2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(solid-js@2.0.0-beta.15)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) clsx: specifier: ^2.0.0 version: 2.1.1 @@ -1499,7 +1503,7 @@ importers: specifier: ^8.5.16 version: 8.5.16 react: - specifier: ^19.2.7 + specifier: 19.2.7 version: 19.2.7 tailwindcss: specifier: 3.3.3 @@ -2021,12 +2025,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.28.0': - resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.28.1': resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} @@ -2057,12 +2055,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.28.0': - resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.28.1': resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} @@ -2093,12 +2085,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.28.0': - resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.28.1': resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} @@ -2129,12 +2115,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.28.0': - resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.28.1': resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} @@ -2165,12 +2145,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.28.0': - resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.28.1': resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} @@ -2201,12 +2175,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.28.0': - resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.28.1': resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} @@ -2237,12 +2205,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.28.0': - resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.28.1': resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} @@ -2273,12 +2235,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.0': - resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} @@ -2309,12 +2265,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.28.0': - resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.28.1': resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} @@ -2345,12 +2295,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.28.0': - resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.28.1': resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} @@ -2381,12 +2325,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.28.0': - resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.28.1': resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} @@ -2417,12 +2355,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.28.0': - resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.28.1': resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} @@ -2453,12 +2385,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.28.0': - resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.28.1': resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} @@ -2489,12 +2415,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.28.0': - resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.28.1': resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} @@ -2525,12 +2445,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.28.0': - resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.28.1': resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} @@ -2561,12 +2475,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.28.0': - resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.28.1': resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} @@ -2597,12 +2505,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.28.0': - resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.28.1': resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} @@ -2621,12 +2523,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.28.0': - resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.28.1': resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} @@ -2657,12 +2553,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.0': - resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} @@ -2681,12 +2571,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.28.0': - resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.28.1': resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} @@ -2717,12 +2601,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.0': - resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} @@ -2735,12 +2613,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.28.0': - resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.28.1': resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} @@ -2771,12 +2643,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.28.0': - resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.28.1': resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} @@ -2807,12 +2673,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.28.0': - resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.28.1': resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} @@ -2843,12 +2703,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.28.0': - resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.28.1': resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} @@ -2879,12 +2733,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.28.0': - resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.28.1': resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} @@ -3403,13 +3251,7 @@ packages: resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: '@types/react': '>=16' - react: '>=16' - - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + react: 19.2.7 '@napi-rs/wasm-runtime@1.1.6': resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} @@ -4008,7 +3850,7 @@ packages: '@reduxjs/toolkit@1.9.7': resolution: {integrity: sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==} peerDependencies: - react: ^16.9.0 || ^17.0.0 || ^18 + react: 19.2.7 react-redux: ^7.2.1 || ^8.0.2 peerDependenciesMeta: react: @@ -4570,11 +4412,11 @@ packages: '@speed-highlight/core@1.2.15': resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==} - '@storybook/addon-docs@10.4.6': - resolution: {integrity: sha512-aWAfP5JMiT5a3zBJizwroCRzOCqZwDTJmvsYvwMD3ilIEa/kT1vhf6Xrbk4XIPhDwbh8Hpb/Gfnka1xBYEISWg==} + '@storybook/addon-docs@10.4.4': + resolution: {integrity: sha512-yPshCvtmQTq52T2sXuXgjy7B/QbhA/WIZxLYggptNjBL8BJMvbOfp9bAfCKh7+KpRWGqDZ6Y6tWL1Q48Wj3vtw==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.4.6 + storybook: ^10.4.4 peerDependenciesMeta: '@types/react': optional: true @@ -4603,41 +4445,23 @@ packages: webpack: optional: true - '@storybook/csf-plugin@10.4.6': - resolution: {integrity: sha512-NILLxDqpA/JR/AazGWpsz+4fadJwRU4uhHephGtYpVOWnQA/DkJfKT6zpcJVq8+QA8A2zKMLX3GVKsXIrxjuDA==} - peerDependencies: - esbuild: '*' - rollup: '*' - storybook: ^10.4.6 - vite: '*' - webpack: '*' - peerDependenciesMeta: - esbuild: - optional: true - rollup: - optional: true - vite: - optional: true - webpack: - optional: true - '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} '@storybook/icons@2.0.2': resolution: {integrity: sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.7 + react-dom: 19.2.7 - '@storybook/react-dom-shim@10.4.6': - resolution: {integrity: sha512-iGNmKzrq9vgl2PDrYAnZKI+yvac3Ym+lJXXuQaqlFRS23zA5MNm4EBX+rAG7WulqchoK6NaZ0KQOs2mAgEpTMg==} + '@storybook/react-dom-shim@10.4.4': + resolution: {integrity: sha512-y6SObmoW78AydE6VfKQSUmCkuqiaMPy9LgMpMdMEyWfJ/pSxBDMIKycr9dlRMJP1cvNgByaJgrusWtA46ndSQw==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.4.6 + react: 19.2.7 + react-dom: 19.2.7 + storybook: ^10.4.4 peerDependenciesMeta: '@types/react': optional: true @@ -4707,15 +4531,15 @@ packages: resolution: {integrity: sha512-gVmWYq0ucWr+OB97Nud0YhKa9NOipB7/QrWI7wRZJJWEL0qUS8WPqAs0vA1f3IBXZpXmf8xxzf/tl5cmo4tlmA==} engines: {node: '>=20.19'} peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' + react: 19.2.7 + react-dom: 19.2.7 '@tanstack/react-start-client@1.168.7': resolution: {integrity: sha512-ldvWrNvXb/EXAY+8uj0XbkVlP0Uh6Ddm63NNNKWf5V2BcQ6KRxiZgANXLWlKRczmnklZiwN2eWFexEJFEzetLQ==} engines: {node: '>=22.12.0'} peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' + react: 19.2.7 + react-dom: 19.2.7 '@tanstack/react-start-plugin@1.131.50': resolution: {integrity: sha512-ys+sGvnnE8BUNjGsngg+MGn3F5lV4okL5CWEKFzjBSjQsrTN7apGfmqvBP3O6PkRPHpXZ8X3Z5QsFvSc0CaDRQ==} @@ -4732,14 +4556,14 @@ packages: resolution: {integrity: sha512-u/nfkW9M79HRx45uJipEi6txjfTJhYTFUirBSm7jqZfId7RRDfV+j38fipGhbIbCjCkHd6hPbUzJAnQFoM0uqg==} engines: {node: '>=22.12.0'} peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' + react: 19.2.7 + react-dom: 19.2.7 '@tanstack/react-store@0.9.3': resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.7 + react-dom: 19.2.7 '@tanstack/router-core@1.131.50': resolution: {integrity: sha512-eojd4JZ5ziUhGEmXZ4CaVX5mQdiTMiz56Sp8ZQ6r7deb55Q+5G4JQDkeuXpI7HMAvzr+4qlsFeLaDRXXjXyOqQ==} @@ -4877,8 +4701,8 @@ packages: resolution: {integrity: sha512-oH/mfTSHV8Qbil74tWicPLW6+kKmT3esXCnDzvrkhi3+N8ZuVUDr01Qpil0Wxf9lLPfM5L6VX03nF4hSU8vljg==} engines: {node: '>=12'} peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' + react: 19.2.7 + react-dom: 19.2.7 vite: ^6.0.0 '@tanstack/start-fn-stubs@1.161.6': @@ -4989,9 +4813,6 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@tybys/wasm-util@0.10.3': resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} @@ -5278,16 +5099,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.17.0: resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} engines: {node: '>=0.4.0'} @@ -6232,11 +6043,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.28.0: - resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.28.1: resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} @@ -7526,8 +7332,8 @@ packages: '@opentelemetry/api': ^1.1.0 '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' - react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 - react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react: 19.2.7 + react-dom: 19.2.7 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': @@ -8100,10 +7906,10 @@ packages: rc9@3.0.1: resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} - react-dom@19.2.6: - resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} + react-dom@19.2.7: + resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} peerDependencies: - react: ^19.2.6 + react: 19.2.7 react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} @@ -8112,10 +7918,6 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react@19.2.6: - resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} - engines: {node: '>=0.10.0'} - react@19.2.7: resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} @@ -8562,8 +8364,8 @@ packages: typescript: optional: true - storybook@10.4.6: - resolution: {integrity: sha512-6wkA6LxfDSSilloITsrFOJfsnw0mDUP2h8Ls+lRt8oRsudtz2RWFhLv+Toiwg6NW7hUpdTDc2hzR7DztJid6+A==} + storybook@10.4.4: + resolution: {integrity: sha512-Nn0qFRxU5fyABa6dGRftfL3lz0Y+HkKOaAkfytF8S4Q2K6Szwwq7TwPAEs3Wsj8hBQbYhsobrKADcPsyXQpJaA==} hasBin: true peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -8641,7 +8443,7 @@ packages: peerDependencies: '@babel/core': '*' babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + react: 19.2.7 peerDependenciesMeta: '@babel/core': optional: true @@ -9070,7 +8872,7 @@ packages: use-sync-external-store@1.6.0: resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react: 19.2.7 util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -10170,9 +9972,6 @@ snapshots: '@esbuild/aix-ppc64@0.25.5': optional: true - '@esbuild/aix-ppc64@0.28.0': - optional: true - '@esbuild/aix-ppc64@0.28.1': optional: true @@ -10188,9 +9987,6 @@ snapshots: '@esbuild/android-arm64@0.25.5': optional: true - '@esbuild/android-arm64@0.28.0': - optional: true - '@esbuild/android-arm64@0.28.1': optional: true @@ -10206,9 +10002,6 @@ snapshots: '@esbuild/android-arm@0.25.5': optional: true - '@esbuild/android-arm@0.28.0': - optional: true - '@esbuild/android-arm@0.28.1': optional: true @@ -10224,9 +10017,6 @@ snapshots: '@esbuild/android-x64@0.25.5': optional: true - '@esbuild/android-x64@0.28.0': - optional: true - '@esbuild/android-x64@0.28.1': optional: true @@ -10242,9 +10032,6 @@ snapshots: '@esbuild/darwin-arm64@0.25.5': optional: true - '@esbuild/darwin-arm64@0.28.0': - optional: true - '@esbuild/darwin-arm64@0.28.1': optional: true @@ -10260,9 +10047,6 @@ snapshots: '@esbuild/darwin-x64@0.25.5': optional: true - '@esbuild/darwin-x64@0.28.0': - optional: true - '@esbuild/darwin-x64@0.28.1': optional: true @@ -10278,9 +10062,6 @@ snapshots: '@esbuild/freebsd-arm64@0.25.5': optional: true - '@esbuild/freebsd-arm64@0.28.0': - optional: true - '@esbuild/freebsd-arm64@0.28.1': optional: true @@ -10296,9 +10077,6 @@ snapshots: '@esbuild/freebsd-x64@0.25.5': optional: true - '@esbuild/freebsd-x64@0.28.0': - optional: true - '@esbuild/freebsd-x64@0.28.1': optional: true @@ -10314,9 +10092,6 @@ snapshots: '@esbuild/linux-arm64@0.25.5': optional: true - '@esbuild/linux-arm64@0.28.0': - optional: true - '@esbuild/linux-arm64@0.28.1': optional: true @@ -10332,9 +10107,6 @@ snapshots: '@esbuild/linux-arm@0.25.5': optional: true - '@esbuild/linux-arm@0.28.0': - optional: true - '@esbuild/linux-arm@0.28.1': optional: true @@ -10350,9 +10122,6 @@ snapshots: '@esbuild/linux-ia32@0.25.5': optional: true - '@esbuild/linux-ia32@0.28.0': - optional: true - '@esbuild/linux-ia32@0.28.1': optional: true @@ -10368,9 +10137,6 @@ snapshots: '@esbuild/linux-loong64@0.25.5': optional: true - '@esbuild/linux-loong64@0.28.0': - optional: true - '@esbuild/linux-loong64@0.28.1': optional: true @@ -10386,9 +10152,6 @@ snapshots: '@esbuild/linux-mips64el@0.25.5': optional: true - '@esbuild/linux-mips64el@0.28.0': - optional: true - '@esbuild/linux-mips64el@0.28.1': optional: true @@ -10404,9 +10167,6 @@ snapshots: '@esbuild/linux-ppc64@0.25.5': optional: true - '@esbuild/linux-ppc64@0.28.0': - optional: true - '@esbuild/linux-ppc64@0.28.1': optional: true @@ -10422,9 +10182,6 @@ snapshots: '@esbuild/linux-riscv64@0.25.5': optional: true - '@esbuild/linux-riscv64@0.28.0': - optional: true - '@esbuild/linux-riscv64@0.28.1': optional: true @@ -10440,9 +10197,6 @@ snapshots: '@esbuild/linux-s390x@0.25.5': optional: true - '@esbuild/linux-s390x@0.28.0': - optional: true - '@esbuild/linux-s390x@0.28.1': optional: true @@ -10458,9 +10212,6 @@ snapshots: '@esbuild/linux-x64@0.25.5': optional: true - '@esbuild/linux-x64@0.28.0': - optional: true - '@esbuild/linux-x64@0.28.1': optional: true @@ -10470,9 +10221,6 @@ snapshots: '@esbuild/netbsd-arm64@0.25.5': optional: true - '@esbuild/netbsd-arm64@0.28.0': - optional: true - '@esbuild/netbsd-arm64@0.28.1': optional: true @@ -10488,9 +10236,6 @@ snapshots: '@esbuild/netbsd-x64@0.25.5': optional: true - '@esbuild/netbsd-x64@0.28.0': - optional: true - '@esbuild/netbsd-x64@0.28.1': optional: true @@ -10500,9 +10245,6 @@ snapshots: '@esbuild/openbsd-arm64@0.25.5': optional: true - '@esbuild/openbsd-arm64@0.28.0': - optional: true - '@esbuild/openbsd-arm64@0.28.1': optional: true @@ -10518,18 +10260,12 @@ snapshots: '@esbuild/openbsd-x64@0.25.5': optional: true - '@esbuild/openbsd-x64@0.28.0': - optional: true - '@esbuild/openbsd-x64@0.28.1': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.28.0': - optional: true - '@esbuild/openharmony-arm64@0.28.1': optional: true @@ -10545,9 +10281,6 @@ snapshots: '@esbuild/sunos-x64@0.25.5': optional: true - '@esbuild/sunos-x64@0.28.0': - optional: true - '@esbuild/sunos-x64@0.28.1': optional: true @@ -10563,9 +10296,6 @@ snapshots: '@esbuild/win32-arm64@0.25.5': optional: true - '@esbuild/win32-arm64@0.28.0': - optional: true - '@esbuild/win32-arm64@0.28.1': optional: true @@ -10581,9 +10311,6 @@ snapshots: '@esbuild/win32-ia32@0.25.5': optional: true - '@esbuild/win32-ia32@0.28.0': - optional: true - '@esbuild/win32-ia32@0.28.1': optional: true @@ -10599,9 +10326,6 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@esbuild/win32-x64@0.28.0': - optional: true - '@esbuild/win32-x64@0.28.1': optional: true @@ -11299,7 +11023,7 @@ snapshots: https-proxy-agent: 7.0.6 node-fetch: 2.7.0 nopt: 8.1.0 - semver: 7.8.1 + semver: 7.8.5 tar: 7.5.15 transitivePeerDependencies: - encoding @@ -11311,18 +11035,11 @@ snapshots: '@types/react': 19.2.15 react: 19.2.7 - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 - optional: true - - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': - dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 - '@tybys/wasm-util': 0.10.1 + '@tybys/wasm-util': 0.10.3 optional: true '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': @@ -11332,6 +11049,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.3 + optional: true + '@next/env@16.2.6': {} '@next/swc-darwin-arm64@16.2.6': @@ -11460,7 +11184,7 @@ snapshots: dependencies: '@emnapi/core': 1.9.2 '@emnapi/runtime': 1.9.2 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true '@oxc-parser/binding-win32-arm64-msvc@0.127.0': @@ -11528,7 +11252,7 @@ snapshots: dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': @@ -11632,7 +11356,7 @@ snapshots: '@parcel/watcher-wasm@2.5.6': dependencies: is-glob: 4.0.3 - picomatch: 4.0.4 + picomatch: 4.0.5 '@parcel/watcher-win32-arm64@2.5.6': optional: true @@ -11772,10 +11496,10 @@ snapshots: '@rollup/pluginutils': 5.4.0(rollup@4.61.0) commondir: 1.0.1 estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.5) is-reference: 1.2.1 magic-string: 0.30.17 - picomatch: 4.0.4 + picomatch: 4.0.5 optionalDependencies: rollup: 4.61.0 @@ -11822,7 +11546,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 4.0.5 optionalDependencies: rollup: 4.61.0 @@ -12120,15 +11844,15 @@ snapshots: '@speed-highlight/core@1.2.15': {} - '@storybook/addon-docs@10.4.6(@types/react@19.2.15)(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@storybook/addon-docs@10.4.4(@types/react@19.2.15)(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.15)(react@19.2.7) - '@storybook/csf-plugin': 10.4.6(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) - '@storybook/icons': 2.0.2(react-dom@19.2.6(react@19.2.7))(react@19.2.7) - '@storybook/react-dom-shim': 10.4.6(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)) + '@storybook/csf-plugin': 10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@storybook/icons': 2.0.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@storybook/react-dom-shim': 10.4.4(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)) react: 19.2.7 - react-dom: 19.2.6(react@19.2.7) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) + storybook: 10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) ts-dedent: 2.2.0 optionalDependencies: '@types/react': 19.2.15 @@ -12139,10 +11863,10 @@ snapshots: - vite - webpack - '@storybook/builder-vite@10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@storybook/builder-vite@10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: - '@storybook/csf-plugin': 10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + '@storybook/csf-plugin': 10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + storybook: 10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) ts-dedent: 2.2.0 vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) transitivePeerDependencies: @@ -12150,18 +11874,9 @@ snapshots: - rollup - webpack - '@storybook/csf-plugin@10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': - dependencies: - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) - unplugin: 2.3.11 - optionalDependencies: - esbuild: 0.28.1 - rollup: 4.61.0 - vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - - '@storybook/csf-plugin@10.4.6(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@storybook/csf-plugin@10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + storybook: 10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) unplugin: 2.3.11 optionalDependencies: esbuild: 0.28.1 @@ -12170,16 +11885,16 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/icons@2.0.2(react-dom@19.2.6(react@19.2.7))(react@19.2.7)': + '@storybook/icons@2.0.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: react: 19.2.7 - react-dom: 19.2.6(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) - '@storybook/react-dom-shim@10.4.6(@types/react@19.2.15)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))': + '@storybook/react-dom-shim@10.4.4(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))': dependencies: react: 19.2.7 - react-dom: 19.2.6(react@19.2.7) - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) + storybook: 10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) optionalDependencies: '@types/react': 19.2.15 @@ -12238,7 +11953,7 @@ snapshots: postcss-selector-parser: 6.0.10 tailwindcss: 3.3.3 - '@tanstack/directive-functions-plugin@1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/directive-functions-plugin@1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.0 @@ -12247,11 +11962,11 @@ snapshots: '@tanstack/router-utils': 1.131.2 babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) transitivePeerDependencies: - supports-color - '@tanstack/directive-functions-plugin@1.142.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/directive-functions-plugin@1.142.1(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.0 @@ -12261,7 +11976,7 @@ snapshots: babel-dead-code-elimination: 1.0.12 pathe: 2.0.3 tiny-invariant: 1.3.3 - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) transitivePeerDependencies: - supports-color @@ -12271,39 +11986,29 @@ snapshots: '@tanstack/history@1.162.0': {} - '@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@tanstack/history': 1.162.0 - '@tanstack/react-store': 0.9.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@tanstack/router-core': 1.171.8 - isbot: 5.1.39 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - - '@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7)': - dependencies: - '@tanstack/history': 1.162.0 - '@tanstack/react-store': 0.9.3(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + '@tanstack/react-store': 0.9.3(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-core': 1.171.8 isbot: 5.1.44 react: 19.2.7 - react-dom: 19.2.6(react@19.2.7) - optional: true + react-dom: 19.2.7(react@19.2.7) - '@tanstack/react-start-client@1.168.7(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@tanstack/react-start-client@1.168.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@tanstack/react-router': 1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-core': 1.171.8 '@tanstack/start-client-core': 1.170.6 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) - '@tanstack/react-start-plugin@1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@vitejs/plugin-react@4.7.0(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(oxc-parser@0.127.0)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/react-start-plugin@1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@vitejs/plugin-react@4.7.0(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(oxc-parser@0.127.0)(rolldown@1.1.4)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: - '@tanstack/start-plugin-core': 1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(oxc-parser@0.127.0)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) - '@vitejs/plugin-react': 4.7.0(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/start-plugin-core': 1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(oxc-parser@0.127.0)(rolldown@1.1.4)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@vitejs/plugin-react': 4.7.0(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) pathe: 2.0.3 - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) zod: 3.25.63 transitivePeerDependencies: - '@azure/app-configuration' @@ -12342,11 +12047,11 @@ snapshots: - webpack - xml2js - '@tanstack/react-start-router-manifest@1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)': + '@tanstack/react-start-router-manifest@1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)': dependencies: '@tanstack/router-core': 1.168.9 tiny-invariant: 1.3.3 - vinxi: 0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vinxi: 0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12394,32 +12099,24 @@ snapshots: - xml2js - yaml - '@tanstack/react-start-server@1.167.13(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@tanstack/react-start-server@1.167.13(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@tanstack/history': 1.162.0 - '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@tanstack/react-router': 1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/router-core': 1.171.8 '@tanstack/start-client-core': 1.170.6 '@tanstack/start-server-core': 1.169.8 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) transitivePeerDependencies: - crossws - '@tanstack/react-store@0.9.3(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - '@tanstack/store': 0.9.3 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - use-sync-external-store: 1.6.0(react@19.2.6) - - '@tanstack/react-store@0.9.3(react-dom@19.2.6(react@19.2.7))(react@19.2.7)': + '@tanstack/react-store@0.9.3(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@tanstack/store': 0.9.3 react: 19.2.7 - react-dom: 19.2.6(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) use-sync-external-store: 1.6.0(react@19.2.7) - optional: true '@tanstack/router-core@1.131.50': dependencies: @@ -12471,7 +12168,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/router-plugin@1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) @@ -12488,13 +12185,13 @@ snapshots: unplugin: 2.3.11 zod: 3.25.63 optionalDependencies: - '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/react-router': 1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) @@ -12510,13 +12207,13 @@ snapshots: unplugin: 2.3.11 zod: 3.25.63 optionalDependencies: - '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/react-router': 1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + vite: 8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) @@ -12532,9 +12229,9 @@ snapshots: unplugin: 2.3.11 zod: 3.25.63 optionalDependencies: - '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7) - vite: 8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/react-router': 1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) transitivePeerDependencies: - supports-color @@ -12576,7 +12273,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/server-functions-plugin@1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/server-functions-plugin@1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.0 @@ -12585,14 +12282,14 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@tanstack/directive-functions-plugin': 1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/directive-functions-plugin': 1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color - vite - '@tanstack/server-functions-plugin@1.142.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/server-functions-plugin@1.142.1(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.0 @@ -12601,7 +12298,7 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 - '@tanstack/directive-functions-plugin': 1.142.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/directive-functions-plugin': 1.142.1(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) babel-dead-code-elimination: 1.0.12 tiny-invariant: 1.3.3 transitivePeerDependencies: @@ -12639,14 +12336,14 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/solid-start@2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(solid-js@2.0.0-beta.15)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/solid-start@2.0.0-beta.18(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(solid-js@2.0.0-beta.15)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@solidjs/web': 2.0.0-beta.13(solid-js@2.0.0-beta.15) '@tanstack/solid-router': 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(solid-js@2.0.0-beta.15) '@tanstack/solid-start-client': 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(solid-js@2.0.0-beta.15) '@tanstack/solid-start-server': 2.0.0-beta.17(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(solid-js@2.0.0-beta.15) '@tanstack/start-client-core': 1.167.9 - '@tanstack/start-plugin-core': 1.167.17(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/start-plugin-core': 1.167.17(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/start-server-core': 1.167.9 pathe: 2.0.3 solid-js: 2.0.0-beta.15 @@ -12659,11 +12356,11 @@ snapshots: - vite-plugin-solid - webpack - '@tanstack/start-api-routes@1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)': + '@tanstack/start-api-routes@1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)': dependencies: '@tanstack/router-core': 1.168.9 '@tanstack/start-server-core': 1.167.9 - vinxi: 0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vinxi: 0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12734,22 +12431,22 @@ snapshots: '@tanstack/start-storage-context': 1.167.10 seroval: 1.5.4 - '@tanstack/start-config@1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0)': + '@tanstack/start-config@1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0)': dependencies: - '@tanstack/react-router': 1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@tanstack/react-start-plugin': 1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@vitejs/plugin-react@4.7.0(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(oxc-parser@0.127.0)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/react-router': 1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@tanstack/react-start-plugin': 1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@vitejs/plugin-react@4.7.0(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(oxc-parser@0.127.0)(rolldown@1.1.4)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/router-generator': 1.166.24 - '@tanstack/router-plugin': 1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) - '@tanstack/server-functions-plugin': 1.142.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/router-plugin': 1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/server-functions-plugin': 1.142.1(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/start-server-functions-handler': 1.120.19 - '@vitejs/plugin-react': 4.7.0(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@vitejs/plugin-react': 4.7.0(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) import-meta-resolve: 4.2.0 - nitropack: 2.13.4(oxc-parser@0.127.0) + nitropack: 2.13.4(oxc-parser@0.127.0)(rolldown@1.1.4) ofetch: 1.5.1 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - vinxi: 0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) + vinxi: 0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) zod: 3.25.63 transitivePeerDependencies: - '@azure/app-configuration' @@ -12806,27 +12503,27 @@ snapshots: '@tanstack/start-fn-stubs@1.162.0': {} - '@tanstack/start-plugin-core@1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(oxc-parser@0.127.0)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/start-plugin-core@1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(oxc-parser@0.127.0)(rolldown@1.1.4)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.29.0 '@babel/types': 7.29.0 '@tanstack/router-core': 1.131.50 '@tanstack/router-generator': 1.131.50 - '@tanstack/router-plugin': 1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/router-plugin': 1.131.50(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/router-utils': 1.131.2 - '@tanstack/server-functions-plugin': 1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/server-functions-plugin': 1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/start-server-core': 1.131.50 '@types/babel__code-frame': 7.27.0 '@types/babel__core': 7.20.5 babel-dead-code-elimination: 1.0.12 cheerio: 1.2.0 h3: 1.13.0 - nitropack: 2.13.4(oxc-parser@0.127.0) + nitropack: 2.13.4(oxc-parser@0.127.0)(rolldown@1.1.4) pathe: 2.0.3 ufo: 1.6.1 - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vitefu: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vitefu: 1.1.3(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) xmlbuilder2: 3.1.1 zod: 3.25.63 transitivePeerDependencies: @@ -12866,7 +12563,7 @@ snapshots: - webpack - xml2js - '@tanstack/start-plugin-core@1.167.17(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/start-plugin-core@1.167.17(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.29.0 @@ -12874,7 +12571,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.40 '@tanstack/router-core': 1.168.9 '@tanstack/router-generator': 1.166.24 - '@tanstack/router-plugin': 1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/router-plugin': 1.167.12(@tanstack/react-router@1.170.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.13(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@8.1.3(@types/node@22.15.31)(esbuild@0.28.1)(jiti@2.7.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/router-utils': 1.161.6 '@tanstack/start-client-core': 1.167.9 '@tanstack/start-server-core': 1.167.9 @@ -12933,9 +12630,9 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/start-server-functions-client@1.131.50(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/start-server-functions-client@1.131.50(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: - '@tanstack/server-functions-plugin': 1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/server-functions-plugin': 1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/start-server-functions-fetcher': 1.131.50 transitivePeerDependencies: - supports-color @@ -12955,17 +12652,17 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/start-server-functions-server@1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/start-server-functions-server@1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: - '@tanstack/server-functions-plugin': 1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/server-functions-plugin': 1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color - vite - '@tanstack/start-server-functions-ssr@1.120.19(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@tanstack/start-server-functions-ssr@1.120.19(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: - '@tanstack/server-functions-plugin': 1.142.1(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/server-functions-plugin': 1.142.1(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/start-client-core': 1.167.9 '@tanstack/start-server-core': 1.167.9 '@tanstack/start-server-functions-fetcher': 1.131.50 @@ -12987,17 +12684,17 @@ snapshots: dependencies: '@tanstack/router-core': 1.171.8 - '@tanstack/start@1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0)': + '@tanstack/start@1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0)': dependencies: - '@tanstack/react-start-client': 1.168.7(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@tanstack/react-start-router-manifest': 1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - '@tanstack/react-start-server': 1.167.13(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@tanstack/start-api-routes': 1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - '@tanstack/start-config': 1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0) - '@tanstack/start-server-functions-client': 1.131.50(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/react-start-client': 1.168.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@tanstack/react-start-router-manifest': 1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + '@tanstack/react-start-server': 1.167.13(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@tanstack/start-api-routes': 1.120.19(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + '@tanstack/start-config': 1.120.20(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))(yaml@2.5.0) + '@tanstack/start-server-functions-client': 1.131.50(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@tanstack/start-server-functions-handler': 1.120.19 - '@tanstack/start-server-functions-server': 1.131.2(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) - '@tanstack/start-server-functions-ssr': 1.120.19(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/start-server-functions-server': 1.131.2(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@tanstack/start-server-functions-ssr': 1.120.19(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13092,11 +12789,6 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true - '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 @@ -13280,7 +12972,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.62.1 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.8.1 + semver: 7.8.5 tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 @@ -13309,15 +13001,15 @@ snapshots: dependencies: '@mapbox/node-pre-gyp': 2.0.3 '@rollup/pluginutils': 5.4.0(rollup@4.61.0) - acorn: 8.16.0 - acorn-import-attributes: 1.9.5(acorn@8.16.0) + acorn: 8.17.0 + acorn-import-attributes: 1.9.5(acorn@8.17.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 glob: 13.0.6 graceful-fs: 4.2.11 node-gyp-build: 4.8.4 - picomatch: 4.0.4 + picomatch: 4.0.5 resolve-from: 5.0.0 transitivePeerDependencies: - encoding @@ -13344,7 +13036,7 @@ snapshots: untun: 0.1.3 uqr: 0.1.3 - '@vitejs/plugin-react@4.7.0(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': + '@vitejs/plugin-react@4.7.0(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.0) @@ -13352,7 +13044,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) + vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) transitivePeerDependencies: - supports-color @@ -13468,9 +13160,9 @@ snapshots: dependencies: event-target-shim: 5.0.1 - acorn-import-attributes@1.9.5(acorn@8.16.0): + acorn-import-attributes@1.9.5(acorn@8.17.0): dependencies: - acorn: 8.16.0 + acorn: 8.17.0 acorn-jsx@5.3.2(acorn@8.17.0): dependencies: @@ -13486,10 +13178,6 @@ snapshots: acorn@7.4.1: {} - acorn@8.15.0: {} - - acorn@8.16.0: {} - acorn@8.17.0: {} agent-base@7.1.3: {} @@ -14507,35 +14195,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.5 '@esbuild/win32-x64': 0.25.5 - esbuild@0.28.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.0 - '@esbuild/android-arm': 0.28.0 - '@esbuild/android-arm64': 0.28.0 - '@esbuild/android-x64': 0.28.0 - '@esbuild/darwin-arm64': 0.28.0 - '@esbuild/darwin-x64': 0.28.0 - '@esbuild/freebsd-arm64': 0.28.0 - '@esbuild/freebsd-x64': 0.28.0 - '@esbuild/linux-arm': 0.28.0 - '@esbuild/linux-arm64': 0.28.0 - '@esbuild/linux-ia32': 0.28.0 - '@esbuild/linux-loong64': 0.28.0 - '@esbuild/linux-mips64el': 0.28.0 - '@esbuild/linux-ppc64': 0.28.0 - '@esbuild/linux-riscv64': 0.28.0 - '@esbuild/linux-s390x': 0.28.0 - '@esbuild/linux-x64': 0.28.0 - '@esbuild/netbsd-arm64': 0.28.0 - '@esbuild/netbsd-x64': 0.28.0 - '@esbuild/openbsd-arm64': 0.28.0 - '@esbuild/openbsd-x64': 0.28.0 - '@esbuild/openharmony-arm64': 0.28.0 - '@esbuild/sunos-x64': 0.28.0 - '@esbuild/win32-arm64': 0.28.0 - '@esbuild/win32-ia32': 0.28.0 - '@esbuild/win32-x64': 0.28.0 - esbuild@0.28.1: optionalDependencies: '@esbuild/aix-ppc64': 0.28.1 @@ -14756,10 +14415,18 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.6(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -14844,9 +14511,9 @@ snapshots: fuse.js@7.4.2: {} - geist@1.7.2(next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)(sass@1.77.8)): + geist@1.7.2(next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.8)): dependencies: - next: 16.2.6(@babel/core@7.29.0)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)(sass@1.77.8) + next: 16.2.6(@babel/core@7.29.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.8) gensync@1.0.0-beta.2: {} @@ -15019,7 +14686,7 @@ snapshots: h3@2.0.1-rc.20: dependencies: rou3: 0.8.1 - srvx: 0.11.15 + srvx: 0.11.20 has-flag@3.0.0: {} @@ -15313,8 +14980,7 @@ snapshots: isbot@5.1.39: {} - isbot@5.1.44: - optional: true + isbot@5.1.44: {} isexe@2.0.0: {} @@ -15990,7 +15656,7 @@ snapshots: mlly@1.8.2: dependencies: - acorn: 8.16.0 + acorn: 8.17.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.4 @@ -16015,7 +15681,7 @@ snapshots: natural-compare@1.4.0: {} - next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.6(react@19.2.7))(react@19.2.7)(sass@1.77.8): + next@16.2.6(@babel/core@7.29.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(sass@1.77.8): dependencies: '@next/env': 16.2.6 '@swc/helpers': 0.5.15 @@ -16023,7 +15689,7 @@ snapshots: caniuse-lite: 1.0.30001800 postcss: 8.4.31 react: 19.2.7 - react-dom: 19.2.6(react@19.2.7) + react-dom: 19.2.7(react@19.2.7) styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.7) optionalDependencies: '@next/swc-darwin-arm64': 16.2.6 @@ -16040,7 +15706,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - nitropack@2.13.4(oxc-parser@0.127.0): + nitropack@2.13.4(oxc-parser@0.127.0)(rolldown@1.1.4): dependencies: '@cloudflare/kv-asset-handler': 0.4.2 '@rollup/plugin-alias': 6.0.0(rollup@4.61.0) @@ -16065,7 +15731,7 @@ snapshots: defu: 6.1.7 destr: 2.0.5 dot-prop: 10.1.0 - esbuild: 0.28.0 + esbuild: 0.28.1 escape-string-regexp: 5.0.0 etag: 1.8.1 exsolve: 1.0.8 @@ -16093,9 +15759,9 @@ snapshots: pretty-bytes: 7.1.0 radix3: 1.1.2 rollup: 4.61.0 - rollup-plugin-visualizer: 7.0.1(rollup@4.61.0) + rollup-plugin-visualizer: 7.0.1(rolldown@1.1.4)(rollup@4.61.0) scule: 1.3.0 - semver: 7.8.1 + semver: 7.8.5 serve-placeholder: 2.0.2 serve-static: 2.2.1 source-map: 0.7.6 @@ -16105,7 +15771,7 @@ snapshots: uncrypto: 0.1.3 unctx: 2.5.0 unenv: 2.0.0-rc.24 - unimport: 6.3.0(oxc-parser@0.127.0) + unimport: 6.3.0(oxc-parser@0.127.0)(rolldown@1.1.4) unplugin-utils: 0.3.1 unstorage: 1.17.5(db0@0.3.4)(ioredis@5.11.0) untyped: 2.0.0 @@ -16661,12 +16327,7 @@ snapshots: defu: 6.1.7 destr: 2.0.5 - react-dom@19.2.6(react@19.2.6): - dependencies: - react: 19.2.6 - scheduler: 0.27.0 - - react-dom@19.2.6(react@19.2.7): + react-dom@19.2.7(react@19.2.7): dependencies: react: 19.2.7 scheduler: 0.27.0 @@ -16675,8 +16336,6 @@ snapshots: react-refresh@0.17.0: {} - react@19.2.6: {} - react@19.2.7: {} read-cache@1.0.0: @@ -16898,13 +16557,14 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.1.4 '@rolldown/binding-win32-x64-msvc': 1.1.4 - rollup-plugin-visualizer@7.0.1(rollup@4.61.0): + rollup-plugin-visualizer@7.0.1(rolldown@1.1.4)(rollup@4.61.0): dependencies: open: 11.0.0 - picomatch: 4.0.4 + picomatch: 4.0.5 source-map: 0.7.6 yargs: 18.0.0 optionalDependencies: + rolldown: 1.1.4 rollup: 4.61.0 rollup@4.43.0: @@ -17008,8 +16668,7 @@ snapshots: semver@7.8.1: {} - semver@7.8.5: - optional: true + semver@7.8.5: {} send@0.19.2: dependencies: @@ -17254,15 +16913,15 @@ snapshots: std-env@4.1.0: {} - storybook-solidjs-vite@10.5.2(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(esbuild@0.28.1)(rollup@4.61.0)(solid-js@2.0.0-beta.15)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(typescript@6.0.3)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)): + storybook-solidjs-vite@10.5.2(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(esbuild@0.28.1)(rollup@4.61.0)(solid-js@2.0.0-beta.15)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(typescript@6.0.3)(vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)): dependencies: - '@storybook/builder-vite': 10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) + '@storybook/builder-vite': 10.4.4(esbuild@0.28.1)(rollup@4.61.0)(storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) '@storybook/global': 5.0.0 '@volar/language-core': 2.4.28 '@volar/typescript': 2.4.28 semver: 7.8.1 solid-js: 2.0.0-beta.15 - storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + storybook: 10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) vite-plugin-solid: 3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) optionalDependencies: @@ -17273,21 +16932,21 @@ snapshots: - rollup - webpack - storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.6(react@19.2.7))(react@19.2.7): + storybook@10.4.4(@testing-library/dom@10.4.1)(@types/react@19.2.15)(prettier@3.9.4)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 2.0.2(react-dom@19.2.6(react@19.2.7))(react@19.2.7) + '@storybook/icons': 2.0.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 '@vitest/spy': 3.2.4 '@webcontainer/env': 1.1.1 - esbuild: 0.28.1 + esbuild: 0.25.12 open: 10.2.0 oxc-parser: 0.127.0 oxc-resolver: 11.20.0 recast: 0.23.11 - semver: 7.8.1 + semver: 7.8.5 use-sync-external-store: 1.6.0(react@19.2.7) ws: 8.18.2 optionalDependencies: @@ -17533,8 +17192,8 @@ snapshots: tinyglobby@0.2.16: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tinyglobby@0.2.17: dependencies: @@ -17634,7 +17293,7 @@ snapshots: unctx@2.5.0: dependencies: - acorn: 8.15.0 + acorn: 8.17.0 estree-walker: 3.0.3 magic-string: 0.30.21 unplugin: 2.3.11 @@ -17675,16 +17334,16 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 - unimport@6.3.0(oxc-parser@0.127.0): + unimport@6.3.0(oxc-parser@0.127.0)(rolldown@1.1.4): dependencies: - acorn: 8.16.0 + acorn: 8.17.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 local-pkg: 1.2.1 magic-string: 0.30.21 mlly: 1.8.2 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.5 pkg-types: 2.3.1 scule: 1.3.0 strip-literal: 3.1.0 @@ -17693,6 +17352,7 @@ snapshots: unplugin-utils: 0.3.1 optionalDependencies: oxc-parser: 0.127.0 + rolldown: 1.1.4 unist-util-find-after@5.0.0: dependencies: @@ -17731,19 +17391,19 @@ snapshots: unplugin-utils@0.3.1: dependencies: pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.5 unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 - acorn: 8.16.0 + acorn: 8.17.0 picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 unplugin@3.0.0: dependencies: '@jridgewell/remapping': 2.3.5 - picomatch: 4.0.4 + picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 unstorage@1.17.5(db0@0.3.4)(ioredis@5.11.0): @@ -17813,10 +17473,6 @@ snapshots: urlpattern-polyfill@8.0.2: {} - use-sync-external-store@1.6.0(react@19.2.6): - dependencies: - react: 19.2.6 - use-sync-external-store@1.6.0(react@19.2.7): dependencies: react: 19.2.7 @@ -17837,7 +17493,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vinxi@0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0): + vinxi@0.5.3(@types/node@22.15.31)(db0@0.3.4)(ioredis@5.11.0)(jiti@2.7.0)(lightningcss@1.32.0)(oxc-parser@0.127.0)(rolldown@1.1.4)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0): dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.0) @@ -17859,7 +17515,7 @@ snapshots: hookable: 5.5.3 http-proxy: 1.18.1 micromatch: 4.0.8 - nitropack: 2.13.4(oxc-parser@0.127.0) + nitropack: 2.13.4(oxc-parser@0.127.0)(rolldown@1.1.4) node-fetch-native: 1.6.7 path-to-regexp: 6.3.0 pathe: 1.1.2 @@ -17954,23 +17610,6 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)): - dependencies: - '@babel/core': 7.29.0 - '@solidjs/web': 2.0.0-beta.15(solid-js@2.0.0-beta.15) - '@types/babel__core': 7.20.5 - babel-preset-solid: 2.0.0-beta.14(@babel/core@7.29.0)(solid-js@2.0.0-beta.15) - merge-anything: 5.1.7 - solid-js: 2.0.0-beta.15 - solid-refresh: 0.8.0-next.7(solid-js@2.0.0-beta.15) - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vitefu: 1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)) - optionalDependencies: - '@testing-library/jest-dom': 6.9.1 - transitivePeerDependencies: - - supports-color - optional: true - vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.15(solid-js@2.0.0-beta.15))(@testing-library/jest-dom@6.9.1)(solid-js@2.0.0-beta.15)(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)): dependencies: '@babel/core': 7.29.0 @@ -18001,9 +17640,9 @@ snapshots: vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0): dependencies: - esbuild: 0.25.5 - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + esbuild: 0.25.12 + fdir: 6.4.6(picomatch@4.0.5) + picomatch: 4.0.5 postcss: 8.5.5 rollup: 4.43.0 tinyglobby: 0.2.14 @@ -18052,10 +17691,6 @@ snapshots: tsx: 4.20.2 yaml: 2.5.0 - vitefu@1.1.3(vite@6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)): - optionalDependencies: - vite: 6.3.5(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) - vitefu@1.1.3(vite@6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0)): optionalDependencies: vite: 6.4.3(@types/node@22.15.31)(jiti@2.7.0)(lightningcss@1.32.0)(sass@1.77.8)(terser@5.48.0)(tsx@4.20.2)(yaml@2.5.0) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 17aef7d52..0a66226cb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,10 @@ packages: - packages/* - site +overrides: + react: 19.2.7 + react-dom: 19.2.7 + allowBuilds: '@parcel/watcher': true esbuild: true From f4d3a1c6d21f1fa9bedc76cac2f6ed2c44c73ae8 Mon Sep 17 00:00:00 2001 From: David Di Biase <1168397+davedbase@users.noreply.github.com> Date: Sun, 5 Jul 2026 12:20:39 -0400 Subject: [PATCH 03/10] Patched error state example --- packages/pagination/README.md | 13 +++++- .../pagination/stories/pagination.stories.tsx | 41 +++++++++++-------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/packages/pagination/README.md b/packages/pagination/README.md index 9db699bec..0d90bcce1 100644 --- a/packages/pagination/README.md +++ b/packages/pagination/README.md @@ -156,7 +156,18 @@ return ( {i => { const page = getPage(i); return ( - }> + // Note: use `page.retry`, not Errored's own `reset` — `content` only + // re-fetches when `retry()` bumps its internal version signal, so a + // bare `reset()` would just re-surface the same cached rejection. + // Errored also won't hand control back to while that retry + // is in flight, so the fallback watches `fetching()` itself. + ( + Retrying…}> + + + )} + > Loading…}> {item =>

{item}

}
diff --git a/packages/pagination/stories/pagination.stories.tsx b/packages/pagination/stories/pagination.stories.tsx index b725a4742..e37e4a7c8 100644 --- a/packages/pagination/stories/pagination.stories.tsx +++ b/packages/pagination/stories/pagination.stories.tsx @@ -1,4 +1,5 @@ import { createSignal, For, Show } from "solid-js"; +import { Errored, Loading } from "@solidjs/web"; import preview from "../../../.storybook/preview.js"; import { createInfiniteScroll, createPagination, createSegment } from "../src/index.js"; import readme from "../README.md?raw"; @@ -180,7 +181,7 @@ export const CreateInfiniteScrollStory = meta.story({ docs: { description: { story: - "`createInfiniteScroll` treats every page as its own independent async unit via `getPage(i)`, so one page failing doesn't block the rest of the list — it just pauses auto-loading until that page is retried. In production, attach `ref={sentinel}` to a DOM element at the bottom of the list — `IntersectionObserver` calls `setPageCount` automatically when it scrolls into view. This demo drives `setPageCount` manually to show the state machine, and always fails page 1 once to demonstrate per-page retry.", + "`createInfiniteScroll` treats every page as its own independent async unit via `getPage(i)` — `page.content()` is a genuine async value, so each page is wrapped in its own ``/`` boundary rather than manual `fetching`/`error` checks. One page failing doesn't block the rest of the list; ``'s `reset` calls straight into `retry()` for that page. In production, attach `ref={sentinel}` to a DOM element at the bottom of the list — `IntersectionObserver` calls `setPageCount` automatically when it scrolls into view. This demo drives `setPageCount` manually to show the state machine, and always fails page 1 once to demonstrate per-page retry.", }, }, }, @@ -223,21 +224,27 @@ export const CreateInfiniteScrollStory = meta.story({ {i => { const page = getPage(i); return ( - - {String(page.error())} - -
- } + ( + // Errored's own `reset` just re-reads content() — since our memo + // only re-fetches when attempt() changes, retry() (not reset) is + // what actually kicks off a new request. Errored also doesn't + // hand control back to while that retry is in flight, + // so this fallback watches `fetching()` itself for feedback. + Retrying page {i}…} + > +
+ {String(err())} + +
+
+ )} > - Loading page {i}…} - > + Loading page {i}…}> {item => (
)} - - + + ); }} From e01fd20548b8696cc7f12faabdc37983c75072b3 Mon Sep 17 00:00:00 2001 From: David Di Biase <1168397+davedbase@users.noreply.github.com> Date: Sun, 5 Jul 2026 12:21:47 -0400 Subject: [PATCH 04/10] Patched sentinel loader --- packages/pagination/stories/pagination.stories.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/pagination/stories/pagination.stories.tsx b/packages/pagination/stories/pagination.stories.tsx index e37e4a7c8..12dcba64a 100644 --- a/packages/pagination/stories/pagination.stories.tsx +++ b/packages/pagination/stories/pagination.stories.tsx @@ -201,9 +201,8 @@ export const CreateInfiniteScrollStory = meta.story({ ); }; - // sentinel is intentionally unused — IO-based auto-loading needs a page-level - // scroll context that Storybook's iframe doesn't provide. - const [pages, , { pageCount, end, setPageCount, getPage }] = createInfiniteScroll(mockFetcher); + const [pages, loader, { pageCount, end, setPageCount, getPage }] = + createInfiniteScroll(mockFetcher); return ( @@ -267,6 +266,13 @@ export const CreateInfiniteScrollStory = meta.story({ ); }} + {/* IntersectionObserver clips the target's visibility against any + scrollable ancestor even with the default root (viewport), so + this sentinel correctly fires on scroll within this box — no + page-level scroll container needed. */} + +
+
- - )} - > - Loading…}> - {item =>

{item}

}
-
- - ); - }} + {page => ( + // Note: use `page.retry`, not Errored's own `reset` — `content` only + // re-fetches when `retry()` bumps its internal version signal, so a + // bare `reset()` would just re-surface the same cached rejection. + // Errored also won't hand control back to while that retry + // is in flight, so the fallback watches `fetching()` itself. + ( + Retrying…}> + + + )} + > + Loading…}> + {item =>

{item}

}
+
+
+ )}

Loading...

@@ -186,19 +183,16 @@ Prefer plain signals over boundaries? Skip ``/`` and use `fetc ```tsx - {i => { - const page = getPage(i); - return ( - Retry: {String(page.error())}} - > - Loading…}> - {item =>

{item}

}
-
+ {page => ( + Retry: {String(page.error())}} + > + Loading…}> + {item =>

{item}

}
- ); - }} +
+ )}
``` @@ -213,22 +207,20 @@ type InfiniteScrollPage = { }; function createInfiniteScroll(fetcher: (page: number) => Promise): [ - pages: Accessor, + pages: Accessor[]>, loader: (el: Element) => void, options: { pageCount: Accessor; setPageCount: Setter; end: Accessor; - getPage: (index: number) => InfiniteScrollPage; reset: () => void; }, ]; ``` -- `pages()` is the list of page indices requested so far — feed it directly to ``. -- `getPage(i)` returns (and caches) the `{ content, fetching, error, retry }` bundle for page `i`. `retry()` re-runs that page's fetcher and clears its error. +- `pages()` is the `{ content, fetching, error, retry }` bundle for every page requested so far, in order — feed it directly to ``. `retry()` re-runs that page's fetcher and clears its error. - `end` is `true` once a page fetch returns zero items. A failed page does **not** set `end` — the sentinel just pauses auto-loading until that page is retried. -- `reset()` disposes every cached page and starts over from the first page. +- `reset()` disposes every page (including its in-flight request, if any) and starts over from the first page. ## Changelog diff --git a/packages/pagination/src/index.ts b/packages/pagination/src/index.ts index 639beaee9..0f20cc00f 100644 --- a/packages/pagination/src/index.ts +++ b/packages/pagination/src/index.ts @@ -8,10 +8,9 @@ import { import { type Accessor, type Setter, - createEffect, createMemo, - createRoot, createSignal, + mapArray, onCleanup, } from "solid-js"; import { isServer, type JSX } from "@solidjs/web"; @@ -382,126 +381,122 @@ export type InfiniteScrollPage = { * boundary-free UI. * * ```tsx - * const [pages, loader, { getPage, end }] = createInfiniteScroll(fetcher); + * const [pages, loader, { end }] = createInfiniteScroll(fetcher); * * - * {i => { - * const page = getPage(i); - * return ( - * }> - * }> - * {item => } - * - * - * ); - * }} + * {page => ( + * }> + * }> + * {item => } + * + * + * )} * *
* ``` * @param fetcher `(page: number) => Promise` - * @return `pages()` is an accessor for the page indices requested so far — feed directly to `` + * @return `pages()` is an accessor for the `{ content, fetching, error, retry }` bundle of every page requested so far, in order — feed directly to `` * @return `loader` is a ref function to attach to the sentinel element that triggers loading more - * @method `getPage` returns (and caches) the `{ content, fetching, error, retry }` bundle for a page index * @method `pageCount` is an accessor for the number of pages requested * @method `setPageCount` allows manually growing or jumping the requested page count * @method `end` is true once a page fetch returns zero items - * @method `reset` disposes every cached page and starts over from the first page + * @method `reset` disposes every page and starts over from the first page */ export function createInfiniteScroll(fetcher: (page: number) => Promise): [ - pages: Accessor, + pages: Accessor[]>, loader: (el: Element) => void, options: { pageCount: Accessor; setPageCount: Setter; end: Accessor; - getPage: (index: number) => InfiniteScrollPage; reset: () => void; }, ] { const initialPageCount = isServer ? 0 : 1; // ownedWrite allows setters to be called from reactive scopes and event handlers const [pageCount, setPageCount] = createSignal(initialPageCount, { ownedWrite: true }); - const pages = createMemo(() => Array.from({ length: pageCount() }, (_, i) => i)); const [end, setEnd] = createSignal(false, { ownedWrite: true }); - - const pageCache = new Map>(); - const pageDisposers = new Map void>(); + // Bumped by reset() so every page key changes shape — a page index alone + // wouldn't work as a mapArray key here, since going from e.g. 5 pages + // straight to 1 in a single write never makes index 0 "leave" the list, + // so mapArray would keep the stale, already-settled page cached. + const [generation, setGeneration] = createSignal(0, { ownedWrite: true }); // Set by the IO block below (browser only); re-observes the sentinel after // a page resolves so IO fires again if it's still in the viewport — this // auto-fills the viewport before handing off to the user's scroll. let reobserve = noop; - function getPage(index: number): InfiniteScrollPage { - const cached = pageCache.get(index); - if (cached) return cached; + const pageKeys = createMemo(() => { + const gen = generation(); + return Array.from({ length: pageCount() }, (_, i) => `${gen}:${i}`); + }); - let entry!: InfiniteScrollPage; - const dispose = createRoot(disposePage => { - const [fetching, setFetching] = createSignal(true, { ownedWrite: true }); - const [error, setError] = createSignal(undefined, { ownedWrite: true }); - // Bumped on retry so `content` (below) re-reads the latest `request`. - const [attempt, setAttempt] = createSignal(0, { ownedWrite: true }); + // mapArray (the primitive itself is built on) caches per key and + // disposes a key's whole reactive scope — including the effects below — + // the moment it drops out of the list, so shrinking pageCount can't leak. + // Its mapFn also runs eagerly on a list change rather than waiting for a + // read, so a page's fetch starts the instant it's requested regardless of + // whether the consumer's JSX has rendered `pages()` yet. + const pages = mapArray(pageKeys, key => { + const index = Number(key.slice(key.indexOf(":") + 1)); - // The primitive owns the promise directly (rather than calling - // `fetcher` from inside an async `createMemo`) because the framework's - // `NotReadyError`/boundary plumbing for *rejections* relies on - // internal queueing that isn't part of the public API — a plain - // `.then`/`.catch` here is the reliable way to get `fetching`/`error`. - // `content` still hands back the same promise, so ``/ - // `` work normally for JSX consumers that want them. - let request!: Promise; - const startRequest = () => { - setFetching(true); - setError(undefined); - const thisRequest = fetcher(index); - request = thisRequest; - thisRequest - .then(value => { - if (thisRequest !== request) return; // superseded by a retry - setFetching(false); - if (value.length === 0) setEnd(true); - else if (index === pageCount() - 1) reobserve(); - }) - .catch(err => { - if (thisRequest !== request) return; - setFetching(false); - setError(err); - }); - }; + const [fetching, setFetching] = createSignal(true, { ownedWrite: true }); + const [error, setError] = createSignal(undefined, { ownedWrite: true }); + // Bumped on retry so `content` (below) re-reads the latest `request`. + const [attempt, setAttempt] = createSignal(0, { ownedWrite: true }); - // Runs before `content` below so its first, eager computation already - // sees a populated `request` — otherwise it caches a plain `undefined` - // (not yet a thenable) and never revisits it. - startRequest(); + // The primitive owns the promise directly (rather than calling + // `fetcher` from inside an async `createMemo`) because the framework's + // `NotReadyError`/boundary plumbing for *rejections* relies on internal + // queueing that isn't part of the public API — a plain `.then`/`.catch` + // here is the reliable way to get `fetching`/`error`. `content` still + // hands back the same promise, so ``/`` work normally + // for JSX consumers that want them. + let request!: Promise; + const startRequest = () => { + setFetching(true); + setError(undefined); + const thisRequest = fetcher(index); + request = thisRequest; + thisRequest + .then(value => { + if (thisRequest !== request) return; // superseded by a retry + setFetching(false); + if (value.length === 0) setEnd(true); + else if (index === pageCount() - 1) reobserve(); + }) + .catch(err => { + if (thisRequest !== request) return; + setFetching(false); + setError(err); + }); + }; - const content = createMemo(() => { - attempt(); - return request; - }); + // Runs before `content` below so its first, eager computation already + // sees a populated `request` — otherwise it caches a plain `undefined` + // (not yet a thenable) and never revisits it. + startRequest(); - entry = { - content, - fetching, - error, - retry: () => { - startRequest(); - setAttempt(a => a + 1); - }, - }; - return disposePage; + const content = createMemo(() => { + attempt(); + return request; }); - pageCache.set(index, entry); - pageDisposers.set(index, dispose); - return entry; - } + return { + content, + fetching, + error, + retry: () => { + startRequest(); + setAttempt(a => a + 1); + }, + }; + }); function reset() { - for (const dispose of pageDisposers.values()) dispose(); - pageCache.clear(); - pageDisposers.clear(); setEnd(false); + setGeneration(g => g + 1); setPageCount(initialPageCount); } @@ -512,8 +507,8 @@ export function createInfiniteScroll(fetcher: (page: number) => Promise) if (e.length === 0 || !e[0]!.isIntersecting || end()) return; // Don't outrun the last requested page: wait for it to settle, and // don't auto-advance past a failed one — call `retry` on it instead. - const last = getPage(pageCount() - 1); - if (last.fetching() || last.error()) return; + const last = pages().at(-1); + if (!last || last.fetching() || last.error()) return; setPageCount(p => p + 1); }); onCleanup(() => io.disconnect()); @@ -532,16 +527,7 @@ export function createInfiniteScroll(fetcher: (page: number) => Promise) io.observe(el); } }; - - // Starts each page's fetch the moment it's requested, regardless of - // whether the consumer's JSX has rendered that page index yet. - createEffect( - () => pageCount(), - count => { - if (count > 0) getPage(count - 1); - }, - ); } - return [pages, add, { pageCount, setPageCount, end, getPage, reset }]; + return [pages, add, { pageCount, setPageCount, end, reset }]; } diff --git a/packages/pagination/stories/pagination.stories.tsx b/packages/pagination/stories/pagination.stories.tsx index f34ed3787..d4548e0d8 100644 --- a/packages/pagination/stories/pagination.stories.tsx +++ b/packages/pagination/stories/pagination.stories.tsx @@ -181,7 +181,7 @@ export const CreateInfiniteScrollStory = meta.story({ docs: { description: { story: - "`createInfiniteScroll` treats every page as its own independent async unit via `getPage(i)` — `page.content()` is a genuine async value, so each page is wrapped in its own ``/`` boundary rather than manual `fetching`/`error` checks. One page failing doesn't block the rest of the list; the retry button calls `page.retry()` directly (Errored's own `reset` only re-reads `content()`, which won't refetch on its own). Scroll to the bottom of the box below and `IntersectionObserver` loads the next page automatically via the sentinel — the manual button underneath does the same thing for convenience. Page 1 always fails once to demonstrate per-page retry.", + "`createInfiniteScroll` treats every page as its own independent async unit — `pages()` is an array of `{ content, fetching, error, retry }` bundles, ready to feed straight into ``. `content()` is a genuine async value, so each page is wrapped in its own ``/`` boundary rather than manual `fetching`/`error` checks. One page failing doesn't block the rest of the list; the retry button calls `page.retry()` directly (Errored's own `reset` only re-reads `content()`, which won't refetch on its own). Scroll to the bottom of the box below and `IntersectionObserver` loads the next page automatically via the sentinel — the manual button underneath does the same thing for convenience. Page 1 always fails once to demonstrate per-page retry.", }, }, }, @@ -201,8 +201,7 @@ export const CreateInfiniteScrollStory = meta.story({ ); }; - const [pages, loader, { pageCount, end, setPageCount, getPage }] = - createInfiniteScroll(mockFetcher); + const [pages, loader, { pageCount, end, setPageCount }] = createInfiniteScroll(mockFetcher); return ( @@ -220,8 +219,7 @@ export const CreateInfiniteScrollStory = meta.story({ }} > - {i => { - const page = getPage(i); + {(page, i) => { return ( ( @@ -232,7 +230,7 @@ export const CreateInfiniteScrollStory = meta.story({ // so this fallback watches `fetching()` itself for feedback. Retrying page {i}…} + fallback={Retrying page {i()}…} >
{String(err())} @@ -243,7 +241,7 @@ export const CreateInfiniteScrollStory = meta.story({ )} > - Loading page {i}…}> + Loading page {i()}…}> {item => (
{ test("requests page 0 eagerly and resolves its content", async () => { await createRoot(async dispose => { - const [pages, , { pageCount, getPage }] = createInfiniteScroll(fetcher); - expect(pages()).toEqual([0]); + const [pages, , { pageCount }] = createInfiniteScroll(fetcher); + expect(pages().length).toBe(1); expect(pageCount()).toBe(1); - const page0 = getPage(0); + const page0 = pages()[0]!; expect(page0.fetching(), "fetching until the effect's first pass resolves").toBe(true); await settle(); @@ -308,15 +308,15 @@ describe("createInfiniteScroll", () => { test("setPageCount grows the page list and fetches the new page", async () => { await createRoot(async dispose => { - const [pages, , { setPageCount, getPage }] = createInfiniteScroll(fetcher); + const [pages, , { setPageCount }] = createInfiniteScroll(fetcher); await settle(); setPageCount(p => p + 1); flush(); - expect(pages()).toEqual([0, 1]); + expect(pages().length).toBe(2); await settle(); - expect(getPage(1).content()).toEqual([10, 11]); + expect(pages()[1]!.content()).toEqual([10, 11]); dispose(); }); @@ -325,7 +325,7 @@ describe("createInfiniteScroll", () => { test("a page returning an empty array sets end without touching earlier pages", async () => { const fetchUntilEmpty = async (page: number) => (page >= 1 ? [] : [0]); await createRoot(async dispose => { - const [, , { setPageCount, end, getPage }] = createInfiniteScroll(fetchUntilEmpty); + const [pages, , { setPageCount, end }] = createInfiniteScroll(fetchUntilEmpty); await settle(); expect(end()).toBe(false); @@ -333,7 +333,7 @@ describe("createInfiniteScroll", () => { await settle(); expect(end()).toBe(true); - expect(getPage(0).content()).toEqual([0]); + expect(pages()[0]!.content()).toEqual([0]); dispose(); }); }); @@ -345,8 +345,8 @@ describe("createInfiniteScroll", () => { return [page]; }; await createRoot(async dispose => { - const [, , { getPage, end }] = createInfiniteScroll(flaky); - const page0 = getPage(0); + const [pages, , { end }] = createInfiniteScroll(flaky); + const page0 = pages()[0]!; await settle(); expect(page0.fetching()).toBe(false); @@ -381,7 +381,7 @@ describe("createInfiniteScroll", () => { io.trigger(true); flush(); expect(pageCount()).toBe(2); - expect(pages()).toEqual([0, 1]); + expect(pages().length).toBe(2); dispose(); }); @@ -411,21 +411,39 @@ describe("createInfiniteScroll", () => { }); }); - test("reset disposes cached pages and starts over from page 0", async () => { + test("shrinking pageCount disposes the pages that fall out of range", async () => { await createRoot(async dispose => { - const [pages, , { setPageCount, getPage, reset }] = createInfiniteScroll(fetcher); + const [pages, , { setPageCount }] = createInfiniteScroll(fetcher); + setPageCount(p => p + 2); // grow to 3 pages + await settle(); + expect(pages().length).toBe(3); + + setPageCount(1); + flush(); + expect(pages().length, "shrinking should drop the disposed pages from the list").toBe(1); + + dispose(); + }); + }); + + test("reset disposes every page and starts over with fresh instances", async () => { + await createRoot(async dispose => { + const [pages, , { setPageCount, reset }] = createInfiniteScroll(fetcher); await settle(); setPageCount(p => p + 1); await settle(); - expect(pages()).toEqual([0, 1]); + expect(pages().length).toBe(2); - const stalePage0 = getPage(0); + const stalePage0 = pages()[0]!; reset(); flush(); - expect(pages()).toEqual([0]); + expect(pages().length).toBe(1); - const fresh = getPage(0); - expect(fresh).not.toBe(stalePage0); + const fresh = pages()[0]!; + expect( + fresh, + "page 0 never structurally left the list across the reset, so without the generation key it would stay cached", + ).not.toBe(stalePage0); await settle(); expect(fresh.content()).toEqual([0]); From d72a897f8043ccd44582546993768429d67353f6 Mon Sep 17 00:00:00 2001 From: David Di Biase <1168397+davedbase@users.noreply.github.com> Date: Sun, 5 Jul 2026 19:18:58 -0400 Subject: [PATCH 07/10] Minor cleanup to the stories --- packages/pagination/README.md | 4 +- .../pagination/stories/pagination.stories.tsx | 87 +++++++++++-------- 2 files changed, 53 insertions(+), 38 deletions(-) diff --git a/packages/pagination/README.md b/packages/pagination/README.md index cfea363ff..1b040fe80 100644 --- a/packages/pagination/README.md +++ b/packages/pagination/README.md @@ -1,5 +1,5 @@

- Solid Primitives pagination + Solid Primitives pagination

# @solid-primitives/pagination @@ -7,7 +7,7 @@ [![docs](https://img.shields.io/badge/-docs%20%26%20demos-blue?style=for-the-badge)](https://primitives.solidjs.community/package/pagination) [![size](https://img.shields.io/badge/size-1.68_kB-blue?style=for-the-badge)](https://bundlephobia.com/package/@solid-primitives/pagination) [![version](https://img.shields.io/npm/v/@solid-primitives/pagination?style=for-the-badge)](https://www.npmjs.com/package/@solid-primitives/pagination) -[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-0.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) +[![stage](https://img.shields.io/endpoint?style=for-the-badge&url=https%3A%2F%2Fraw.githubusercontent.com%2Fsolidjs-community%2Fsolid-primitives%2Fmain%2Fassets%2Fbadges%2Fstage-3.json)](https://github.com/solidjs-community/solid-primitives#contribution-process) [![tested with vitest](https://img.shields.io/badge/tested_with-vitest-6E9F18?style=for-the-badge&logo=vitest)](https://vitest.dev) A primitive that creates all the reactive data to manage your pagination: diff --git a/packages/pagination/stories/pagination.stories.tsx b/packages/pagination/stories/pagination.stories.tsx index d4548e0d8..fbf25cf60 100644 --- a/packages/pagination/stories/pagination.stories.tsx +++ b/packages/pagination/stories/pagination.stories.tsx @@ -1,4 +1,4 @@ -import { createSignal, For, Show } from "solid-js"; +import { createSignal, For, Show, untrack } from "solid-js"; import { Errored, Loading } from "@solidjs/web"; import preview from "../../../.storybook/preview.js"; import { createInfiniteScroll, createPagination, createSegment } from "../src/index.js"; @@ -70,10 +70,19 @@ export const CreatePaginationStory = meta.story({ render: () => { const [totalPages, setTotalPages] = createSignal(20); const [maxVisible, setMaxVisible] = createSignal(7); - const [paginationProps, page, _setPage] = createPagination(() => ({ - pages: totalPages(), - maxPages: maxVisible(), - })); + // untrack: Storybook's Solid renderer wraps every story's render() in its + // own createMemo. Without this, createPagination's internal setup memo + // reading totalPages()/maxVisible() during its first synchronous compute + // leaks as a dependency of that outer memo, causing it to re-invoke this + // entire render() function (creating brand-new signals) whenever those + // values change — which breaks rendering. See + // https://github.com/solidjs-community/solid-primitives/issues/795 + const [paginationProps, page, _setPage] = untrack(() => + createPagination(() => ({ + pages: totalPages(), + maxPages: maxVisible(), + })), + ); return ( @@ -82,26 +91,30 @@ export const CreatePaginationStory = meta.story({
- {([5, 7, 10] as const).map(n => ( - - ))} + + {n => ( + + )} +
- {([10, 20, 50] as const).map(n => ( - - ))} + + {n => ( + + )} +
@@ -122,12 +135,15 @@ export const CreateSegmentStory = meta.story({ render: () => { const ITEMS = Array.from({ length: 50 }, (_, i) => `Item ${String(i + 1).padStart(2, "0")}`); const [limit, setLimit] = createSignal(8); - const [paginationProps, page] = createPagination(() => ({ - pages: Math.ceil(ITEMS.length / limit()), - maxPages: 5, - showFirst: false, - showLast: false, - })); + // untrack: see the note in CreatePaginationStory above. + const [paginationProps, page] = untrack(() => + createPagination(() => ({ + pages: Math.ceil(ITEMS.length / limit()), + maxPages: 5, + showFirst: false, + showLast: false, + })), + ); const segment = createSegment(ITEMS, limit, page); return ( @@ -163,11 +179,13 @@ export const CreateSegmentStory = meta.story({
- {([5, 8, 10, 25] as const).map(n => ( - - ))} + + {n => ( + + )} +
@@ -228,10 +246,7 @@ export const CreateInfiniteScrollStory = meta.story({ // what actually kicks off a new request. Errored also doesn't // hand control back to while that retry is in flight, // so this fallback watches `fetching()` itself for feedback. - Retrying page {i()}…} - > + Retrying page {i()}…}>
{String(err())}