diff --git a/apps/rr7/app/content.tsx b/apps/rr7/app/content.tsx index 5433ba9fda..cfc6134824 100644 --- a/apps/rr7/app/content.tsx +++ b/apps/rr7/app/content.tsx @@ -1,40 +1,20 @@ -import type { LoaderArgs } from './routes/+types.home'; -import { - dehydrate, - QueryClient, - HydrationBoundary, - useQuery, - useQueryClient, -} from '@tanstack/react-query'; -import { useLoaderData, useLocation } from 'react-router'; -import type { MetaFunction } from 'react-router'; -import { usePloneClient } from '@plone/providers'; +import type { Route } from './+types/content'; +import { data, useLoaderData, useLocation } from 'react-router'; import PloneClient from '@plone/client'; import App from '@plone/slots/components/App'; -import { flattenToAppURL } from './utils'; import config from '@plone/registry'; -export const meta: MetaFunction = () => { +export const meta: Route.MetaFunction = ({ data }) => { return [ - { title: 'Plone on React Router 7' }, - { name: 'description', content: 'Welcome to Plone!' }, + { title: data?.title }, + { name: 'description', content: data?.description }, ]; }; const expand = ['navroot', 'breadcrumbs', 'navigation']; // eslint-disable-next-line @typescript-eslint/no-unused-vars -export async function loader({ params, request }: LoaderArgs) { - const queryClient = new QueryClient({ - defaultOptions: { - queries: { - // With SSR, we usually want to set some default staleTime - // above 0 to avoid refetching immediately on the client - staleTime: 60 * 1000, - }, - }, - }); - +export async function loader({ params, request }: Route.LoaderArgs) { const ploneClient = config .getUtility({ name: 'ploneClient', @@ -42,41 +22,36 @@ export async function loader({ params, request }: LoaderArgs) { }) .method(); - const { getContentQuery } = ploneClient as PloneClient; + const { getContent } = ploneClient as PloneClient; + + const path = new URL(request.url).pathname; - const path = flattenToAppURL(request.url); if ( !( /^https?:\/\//.test(path) || /^favicon.ico\/\//.test(path) || /expand/.test(path) || - /^\/@@images/.test(path) || - /^\/@@download/.test(path) || - /^\/assets/.test(path) + /\/@@images\//.test(path) || + /\/@@download\//.test(path) || + /^\/assets/.test(path) || + /\.(css|css\.map)$/.test(path) ) ) { - await queryClient.prefetchQuery(getContentQuery({ path, expand })); + console.log('prefetching', path); + try { + return await getContent({ path, expand }); + } catch (error) { + throw data('Content Not Found', { status: 404 }); + } + } else { + console.log('path not prefetched', path); + throw data('Content Not Found', { status: 404 }); } - - return { dehydratedState: dehydrate(queryClient) }; -} - -function Page() { - const { getContentQuery } = usePloneClient(); - const pathname = useLocation().pathname; - const { data } = useQuery(getContentQuery({ path: pathname, expand })); - - if (!data) return 'Loading...'; - return ; } export default function Content() { - const { dehydratedState } = useLoaderData(); - const queryClient = useQueryClient(); + const data = useLoaderData(); + const pathname = useLocation().pathname; - return ( - - - - ); + return ; } diff --git a/apps/rr7/app/root.tsx b/apps/rr7/app/root.tsx index d1c4bb5bae..7340c7627a 100644 --- a/apps/rr7/app/root.tsx +++ b/apps/rr7/app/root.tsx @@ -1,3 +1,5 @@ +import type { LinksFunction } from 'react-router'; +import type { Route } from './+types/root'; import { useState } from 'react'; import { Links, @@ -10,8 +12,8 @@ import { useNavigate as useRRNavigate, useParams, useLoaderData, + isRouteErrorResponse, } from 'react-router'; -import type { LinksFunction } from 'react-router'; import { QueryClient } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; @@ -24,8 +26,8 @@ import installSSR from './config.server'; install(); -import '@plone/theming/styles/main.css'; -import '@plone/slots/main.css'; +import themingMain from '@plone/theming/styles/main.css?url'; +import slotsMain from '@plone/slots/main.css?url'; function useNavigate() { const navigate = useRRNavigate(); @@ -37,6 +39,8 @@ function useHrefLocal(to: string) { } export const links: LinksFunction = () => [ + { rel: 'stylesheet', href: themingMain }, + { rel: 'stylesheet', href: slotsMain }, { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, { rel: 'preconnect', @@ -85,6 +89,34 @@ export function Layout({ children }: { children: React.ReactNode }) { ); } +export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { + let message = 'Oops!'; + let details = 'An unexpected error occurred.'; + let stack: string | undefined; + if (isRouteErrorResponse(error)) { + message = error.status === 404 ? '404' : 'Error'; + details = + error.status === 404 + ? 'The requested page could not be found.' + : error.statusText || details; + } else if (import.meta.env.DEV && error && error instanceof Error) { + details = error.message; + stack = error.stack; + } + + return ( +
+

{message}

+

{details}

+ {stack && ( +
+          {stack}
+        
+ )} +
+ ); +} + export default function App() { if (!import.meta.env.SSR) { config.settings.apiPath = window.env.PLONE_API_PATH; diff --git a/apps/rr7/app/routes.ts b/apps/rr7/app/routes.ts index 5feaf36e31..4d6b9ec32f 100644 --- a/apps/rr7/app/routes.ts +++ b/apps/rr7/app/routes.ts @@ -1,8 +1,10 @@ import type { RouteConfig } from '@react-router/dev/routes'; import { index, route } from '@react-router/dev/routes'; -export const routes: RouteConfig = [ +const routes: RouteConfig = [ index('content.tsx', { id: 'index' }), route('ok', 'okroute.tsx', { id: 'ok' }), - route('*', 'content.tsx', { id: 'splat' }), + route('*', 'content.tsx', { id: 'content' }), ]; + +export default routes; diff --git a/apps/rr7/package.json b/apps/rr7/package.json index 7f1fba7dcb..cd2c427301 100644 --- a/apps/rr7/package.json +++ b/apps/rr7/package.json @@ -11,16 +11,6 @@ "typegen": "react-router typegen" }, "dependencies": { - "@react-router/node": "7.0.0-pre.4", - "@react-router/serve": "7.0.0-pre.4", - "@tanstack/react-query": "^5.59.0", - "@tanstack/react-query-devtools": "^5.59.0", - "isbot": "^5.1.17", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-router": "7.0.0-pre.4" - }, - "devDependencies": { "@plone/blocks": "workspace:*", "@plone/client": "workspace:*", "@plone/components": "workspace:*", @@ -28,7 +18,17 @@ "@plone/registry": "workspace:*", "@plone/slots": "workspace:*", "@plone/theming": "workspace:*", - "@react-router/dev": "7.0.0-pre.4", + "@react-router/node": "7.1.1", + "@react-router/serve": "7.1.1", + "@tanstack/react-query": "^5.59.0", + "@tanstack/react-query-devtools": "^5.59.0", + "isbot": "^5.1.17", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router": "7.1.1" + }, + "devDependencies": { + "@react-router/dev": "7.1.1", "@types/react": "^18.3.9", "@types/react-dom": "^18.3.0", "typescript": "^5.6.3", diff --git a/apps/rr7/react-router.config.ts b/apps/rr7/react-router.config.ts new file mode 100644 index 0000000000..4f9a6ed522 --- /dev/null +++ b/apps/rr7/react-router.config.ts @@ -0,0 +1,7 @@ +import type { Config } from '@react-router/dev/config'; + +export default { + // Config options... + // Server-side render by default, to enable SPA mode set this to `false` + ssr: true, +} satisfies Config; diff --git a/apps/rr7/vite.config.ts b/apps/rr7/vite.config.ts index d8048ade95..ba4e42fef1 100644 --- a/apps/rr7/vite.config.ts +++ b/apps/rr7/vite.config.ts @@ -9,14 +9,7 @@ const prodServerName = : ''; export default defineConfig({ - plugins: [ - reactRouter({ - // Server-side render by default, to enable SPA mode set this to `false` - ssr: true, - }), - tsconfigPaths(), - PloneRegistryVitePlugin(), - ], + plugins: [PloneRegistryVitePlugin(), reactRouter(), tsconfigPaths()], server: { port: 3000, proxy: { @@ -29,7 +22,7 @@ export default defineConfig({ secure: false, }), rewrite: (path) => { - console.log(path); + console.log('rewritten path', path); return path.replace('/++api++', ''); }, }, diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 57c72746b1..5e2d83708e 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -8,6 +8,12 @@ +## 1.0.0-alpha.21 (2025-01-15) + +### Feature + +- Import `getContent` bare fetcher. @sneridagh [#6594](https://github.com/plone/volto/pull/6594) + ## 1.0.0-alpha.20 (2024-11-05) ### Internal diff --git a/packages/client/package.json b/packages/client/package.json index 327f15c87c..e4bce7a30d 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -8,7 +8,7 @@ } ], "license": "MIT", - "version": "1.0.0-alpha.20", + "version": "1.0.0-alpha.21", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index b0d5e5289a..a14033d7f2 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -4,6 +4,7 @@ import { } from './restapi/login/post'; import type { LoginArgs } from './restapi/login/post'; +import { getContent as _getContent } from './restapi/content/get'; import { getContentQuery as _getContentQuery } from './restapi/content/get'; import { createContentMutation as _createContentMutation } from './restapi/content/add'; import { updateContentMutation as _updateContentMutation } from './restapi/content/update'; @@ -150,6 +151,7 @@ export default class PloneClient { /* Content queries */ + getContent = queryWithConfig(_getContent, this.getConfig); getContentQuery = queryWithConfig(_getContentQuery, this.getConfig); createContentMutation = mutationWithConfig( _createContentMutation, diff --git a/packages/slots/components/Logo.tsx b/packages/slots/components/Logo.tsx index 3b17c02603..74e492cc3b 100644 --- a/packages/slots/components/Logo.tsx +++ b/packages/slots/components/Logo.tsx @@ -10,6 +10,7 @@ const Logo = (props: SlotComponentProps) => { name: 'translation', type: 'factory', }).method; + const navRootPath = content['@components'].navroot?.navroot?.['@id'] || '/'; const site = content['@components'].site; const siteTitle = site?.['plone.site_title'] || ''; diff --git a/packages/volto/.gitignore b/packages/volto/.gitignore index 6d1cc045b4..b013f1deae 100644 --- a/packages/volto/.gitignore +++ b/packages/volto/.gitignore @@ -60,3 +60,5 @@ docs/_build/ /.python-version /.tool-versions docs/source/news + +.registry.loader.js diff --git a/packages/volto/news/6585.bugfix b/packages/volto/news/6585.bugfix new file mode 100644 index 0000000000..5dbbf2f113 --- /dev/null +++ b/packages/volto/news/6585.bugfix @@ -0,0 +1 @@ +fix(useClipboard): Do not have a pending promise in a boolean state @nileshgulia1 \ No newline at end of file diff --git a/packages/volto/src/hooks/clipboard/useClipboard.js b/packages/volto/src/hooks/clipboard/useClipboard.js index eaabbf7a15..2d619fbe9b 100644 --- a/packages/volto/src/hooks/clipboard/useClipboard.js +++ b/packages/volto/src/hooks/clipboard/useClipboard.js @@ -13,9 +13,13 @@ export default function useClipboard(clipboardText = '') { } }; - const copyAction = useCallback(() => { - const copiedString = copyToClipboard(stringToCopy.current); - setCopied(copiedString); + const copyAction = useCallback(async () => { + try { + await copyToClipboard(stringToCopy.current); + setCopied(true); + } catch (error) { + setCopied(false); + } }, [stringToCopy]); useEffect(() => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae6dfec91f..ebecb8c205 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,31 +163,6 @@ importers: apps/rr7: dependencies: - '@react-router/node': - specifier: 7.0.0-pre.4 - version: 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) - '@react-router/serve': - specifier: 7.0.0-pre.4 - version: 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) - '@tanstack/react-query': - specifier: ^5.59.0 - version: 5.59.15(react@18.2.0) - '@tanstack/react-query-devtools': - specifier: ^5.59.0 - version: 5.59.15(@tanstack/react-query@5.59.15(react@18.2.0))(react@18.2.0) - isbot: - specifier: ^5.1.17 - version: 5.1.17 - react: - specifier: ^18.2.0 - version: 18.2.0 - react-dom: - specifier: ^18.2.0 - version: 18.2.0(react@18.2.0) - react-router: - specifier: 7.0.0-pre.4 - version: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - devDependencies: '@plone/blocks': specifier: workspace:* version: link:../../packages/blocks @@ -209,9 +184,34 @@ importers: '@plone/theming': specifier: workspace:* version: link:../../packages/theming + '@react-router/node': + specifier: 7.1.1 + version: 7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/serve': + specifier: 7.1.1 + version: 7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@tanstack/react-query': + specifier: ^5.59.0 + version: 5.59.15(react@18.2.0) + '@tanstack/react-query-devtools': + specifier: ^5.59.0 + version: 5.59.15(@tanstack/react-query@5.59.15(react@18.2.0))(react@18.2.0) + isbot: + specifier: ^5.1.17 + version: 5.1.17 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-router: + specifier: 7.1.1 + version: 7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + devDependencies: '@react-router/dev': - specifier: 7.0.0-pre.4 - version: 7.0.0-pre.4(@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.28.1)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3)) + specifier: 7.1.1 + version: 7.1.1(@react-router/serve@7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.28.1)(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3)) '@types/react': specifier: ^18.3.9 version: 18.3.12 @@ -4125,6 +4125,9 @@ packages: '@microsoft/tsdoc@0.14.2': resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + '@mjackson/node-fetch-server@0.2.0': + resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} + '@ndelangen/get-tarball@3.0.9': resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} @@ -4881,15 +4884,15 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - '@react-router/dev@7.0.0-pre.4': - resolution: {integrity: sha512-yuOXu7NsH8njE+zFIJBt+hVd8J1F6TqpJ19RQlM5uRkgwD8PMkAvBVz95yBi69C+88pRndM0G2aGgKxBJQpffQ==} + '@react-router/dev@7.1.1': + resolution: {integrity: sha512-+UCrQZBAmdRcC7Bx1ho89T/DeP+FzEErkzrTvdBCpstr8AzOQ6mKlaglXGty15o3fgihBSFF4/J67jGveYIR8Q==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@react-router/serve': ^7.0.0-pre.4 - react-router: ^7.0.0-pre.4 + '@react-router/serve': ^7.1.1 + react-router: ^7.1.1 typescript: ^5.1.0 - vite: ^5.1.0 + vite: ^5.1.0 || ^6.0.0 wrangler: ^3.28.2 peerDependenciesMeta: '@react-router/serve': @@ -4899,33 +4902,33 @@ packages: wrangler: optional: true - '@react-router/express@7.0.0-pre.4': - resolution: {integrity: sha512-uJG98BGHBO01utPZ668vZoPOn+M+TXW1XgRNCigF/d/XWK/uZjHV+4kzotfSAKdjE53GY9ZPcIit1MRNqX+Pyg==} + '@react-router/express@7.1.1': + resolution: {integrity: sha512-oiL2ADor3byuh7piajLTPr6007GmVPZ1Gh4HiN0uuZlz3vQ1rd0xZMSD9LnSrXhsrKEbPFaeCk8E2O67ZoABsg==} engines: {node: '>=20.0.0'} peerDependencies: express: ^4.17.1 - react-router: 7.0.0-pre.4 + react-router: 7.1.1 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/node@7.0.0-pre.4': - resolution: {integrity: sha512-8Jv/UMzHfUFxVrt1SS3csPBn932Uqh6OOQCITAWxfATnF9eeLABMc3qPA2PdF1qg06ZhykYLoSh3r2oo9Bnhow==} + '@react-router/node@7.1.1': + resolution: {integrity: sha512-5X79SfJ1IEEsttt0oo9rhO9kgxXyBTKdVBsz3h0WHTkRzbRk0VEpVpBW3PQ1RpkgEaAHwJ8obVl4k4brdDSExA==} engines: {node: '>=20.0.0'} peerDependencies: - react-router: 7.0.0-pre.4 + react-router: 7.1.1 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/serve@7.0.0-pre.4': - resolution: {integrity: sha512-Zh76x3X20PU7vt0t2DADsQxvpjcLxY29pJ/nF/uPG1KU+MwWM/EuQfIHWvKjng9FnlCgTKzYMjUu8essQpZKaw==} + '@react-router/serve@7.1.1': + resolution: {integrity: sha512-rhV1yp72ZZQn4giQUzUiLVo/7/7dhxD98Z5pdDm6mKOTJPGoQ8TBPccQaKxzJIFNRHcn0sEdehfLOxl5ydnUKw==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - react-router: 7.0.0-pre.4 + react-router: 7.1.1 '@react-spectrum/utils@3.12.0': resolution: {integrity: sha512-r3IAp9h766gATsYT6B66GmjgsTuhXSrEqKuPJenkPzshBeQPrD57ai0fyj5ihtiM3BINbkCQ+AXLrAmJunOV/A==} @@ -8743,6 +8746,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debuglog@1.0.1: resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -9261,6 +9273,9 @@ packages: es-module-lexer@1.5.0: resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -14642,8 +14657,8 @@ packages: peerDependencies: react: '>=16.8' - react-router@7.0.0-pre.4: - resolution: {integrity: sha512-MY2c3qzSdVgeAKOwDVgHrRvuJn8xV0LDrHDvO3/uUBNKlXCO+YVWYLdKNaFrdatYC9fs+rpTSdumhBc+mX1zSg==} + react-router@7.1.1: + resolution: {integrity: sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -16930,16 +16945,16 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - vite-node@2.1.3: resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true + vite-node@3.0.0-beta.2: + resolution: {integrity: sha512-ofTf6cfRdL30Wbl9n/BX81EyIR5s4PReLmSurrxQ+koLaWUNOEo8E0lCM53OJkb8vpa2URM2nSrxZsIFyvY1rg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + vite-plugin-babel@1.2.0: resolution: {integrity: sha512-ltAnq535Ubf9sDbVCkztAdkwx5aQbNrwPFs+iZTJ5FaAhTdxjqmLGpxsAaRfJWEKBJ/kFf9KwMoTdArm0IRUUw==} peerDependencies: @@ -18340,7 +18355,7 @@ snapshots: dependencies: '@babel/core': 7.25.8 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.25.7 '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.4)': dependencies: @@ -19145,9 +19160,9 @@ snapshots: dependencies: '@babel/compat-data': 7.24.4 '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-plugin-utils': 7.25.7 + '@babel/helper-validator-option': 7.25.7 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.4(@babel/core@7.25.8) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.25.8) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.25.8) @@ -20588,6 +20603,8 @@ snapshots: '@microsoft/tsdoc@0.14.2': {} + '@mjackson/node-fetch-server@0.2.0': {} + '@ndelangen/get-tarball@3.0.9': dependencies: gunzip-maybe: 1.4.2 @@ -21828,7 +21845,7 @@ snapshots: '@swc/helpers': 0.5.10 react: 18.2.0 - '@react-router/dev@7.0.0-pre.4(@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.28.1)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3))': + '@react-router/dev@7.1.1(@react-router/serve@7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3))(@types/node@20.12.7)(babel-plugin-macros@3.1.0)(less@3.11.1)(lightningcss@1.28.1)(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(sass@1.75.0)(terser@5.30.3)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3))': dependencies: '@babel/core': 7.25.8 '@babel/generator': 7.25.7 @@ -21839,10 +21856,9 @@ snapshots: '@babel/traverse': 7.25.7 '@babel/types': 7.25.8 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/node': 7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) arg: 5.0.2 babel-dead-code-elimination: 1.0.6 - chalk: 4.1.2 chokidar: 4.0.1 dedent: 1.5.3(babel-plugin-macros@3.1.0) es-module-lexer: 1.5.0 @@ -21856,14 +21872,14 @@ snapshots: picomatch: 2.3.1 prettier: 2.8.8 react-refresh: 0.14.0 - react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-router: 7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) semver: 7.6.3 set-cookie-parser: 2.6.0 valibot: 0.41.0(typescript@5.6.3) vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3) - vite-node: 1.6.0(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3) + vite-node: 3.0.0-beta.2(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3) optionalDependencies: - '@react-router/serve': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/serve': 7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - '@types/node' @@ -21878,33 +21894,33 @@ snapshots: - supports-color - terser - '@react-router/express@7.0.0-pre.4(express@4.19.2)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': + '@react-router/express@7.1.1(express@4.19.2)(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': dependencies: - '@react-router/node': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/node': 7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) express: 4.19.2 - react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-router: 7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) optionalDependencies: typescript: 5.6.3 - '@react-router/node@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': + '@react-router/node@7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': dependencies: - '@web3-storage/multipart-parser': 1.0.0 - react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mjackson/node-fetch-server': 0.2.0 + react-router: 7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) source-map-support: 0.5.21 stream-slice: 0.1.2 undici: 6.20.1 optionalDependencies: typescript: 5.6.3 - '@react-router/serve@7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': + '@react-router/serve@7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3)': dependencies: - '@react-router/express': 7.0.0-pre.4(express@4.19.2)(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) - '@react-router/node': 7.0.0-pre.4(react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/express': 7.1.1(express@4.19.2)(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) + '@react-router/node': 7.1.1(react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(typescript@5.6.3) compression: 1.7.4 express: 4.19.2 get-port: 5.1.1 morgan: 1.10.0 - react-router: 7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-router: 7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) source-map-support: 0.5.21 transitivePeerDependencies: - supports-color @@ -23549,12 +23565,12 @@ snapshots: '@storybook/react-vite@8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3)) - '@rollup/pluginutils': 5.1.2(rollup@4.24.0) + '@rollup/pluginutils': 5.1.0(rollup@4.24.0) '@storybook/builder-vite': 8.0.8(@preact/preset-vite@2.8.2(@babel/core@7.25.8)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3)))(encoding@0.1.13)(typescript@5.6.3)(vite@5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3)) '@storybook/node-logger': 8.0.8 '@storybook/react': 8.0.8(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.6.3) find-up: 5.0.0 - magic-string: 0.30.11 + magic-string: 0.30.10 react: 18.2.0 react-docgen: 7.0.3 react-dom: 18.2.0(react@18.2.0) @@ -27464,6 +27480,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + debuglog@1.0.1: {} decamelize@1.2.0: {} @@ -28014,6 +28034,8 @@ snapshots: es-module-lexer@1.5.0: {} + es-module-lexer@1.6.0: {} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 @@ -35497,14 +35519,12 @@ snapshots: '@remix-run/router': 1.20.0 react: 18.2.0 - react-router@7.0.0-pre.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-router@7.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@types/cookie': 0.6.0 - '@web3-storage/multipart-parser': 1.0.0 cookie: 1.0.1 react: 18.2.0 set-cookie-parser: 2.6.0 - source-map: 0.7.4 turbo-stream: 2.4.0 optionalDependencies: react-dom: 18.2.0(react@18.2.0) @@ -38374,13 +38394,12 @@ snapshots: - supports-color - terser - vite-node@1.6.0(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3): + vite-node@2.1.3(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3) + vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) transitivePeerDependencies: - '@types/node' - less @@ -38392,12 +38411,12 @@ snapshots: - supports-color - terser - vite-node@2.1.3(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3): + vite-node@2.1.3(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.24.1)(sass@1.75.0)(terser@5.30.3) + vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3) transitivePeerDependencies: - '@types/node' - less @@ -38409,10 +38428,11 @@ snapshots: - supports-color - terser - vite-node@2.1.3(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3): + vite-node@3.0.0-beta.2(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3): dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.4.0 + es-module-lexer: 1.6.0 pathe: 1.1.2 vite: 5.4.9(@types/node@20.12.7)(less@3.11.1)(lightningcss@1.28.1)(sass@1.75.0)(terser@5.30.3) transitivePeerDependencies: