diff --git a/apps/react-vite/.storybook/preview.tsx b/apps/react-vite/.storybook/preview.tsx index d4949b16..1f086ba3 100644 --- a/apps/react-vite/.storybook/preview.tsx +++ b/apps/react-vite/.storybook/preview.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { BrowserRouter as Router } from 'react-router-dom'; +import { BrowserRouter as Router } from 'react-router'; import '../src/index.css'; export const parameters = { diff --git a/apps/react-vite/package.json b/apps/react-vite/package.json index 127b5073..c2a4bf48 100644 --- a/apps/react-vite/package.json +++ b/apps/react-vite/package.json @@ -42,8 +42,8 @@ "react-error-boundary": "^4.0.13", "react-helmet-async": "^2.0.4", "react-hook-form": "^7.51.3", - "react-query-auth": "^2.3.0", - "react-router-dom": "^6.23.0", + "react-query-auth": "^2.4.3", + "react-router": "^7.0.2", "tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7", "zod": "^3.23.4", diff --git a/apps/react-vite/src/app/router.tsx b/apps/react-vite/src/app/router.tsx index b37cb5e8..4ea857d3 100644 --- a/apps/react-vite/src/app/router.tsx +++ b/apps/react-vite/src/app/router.tsx @@ -1,34 +1,39 @@ import { QueryClient, useQueryClient } from '@tanstack/react-query'; import { useMemo } from 'react'; -import { RouterProvider, createBrowserRouter } from 'react-router-dom'; +import { createBrowserRouter } from 'react-router'; +import { RouterProvider } from 'react-router/dom'; import { paths } from '@/config/paths'; import { ProtectedRoute } from '@/lib/auth'; -import { AppRoot, AppRootErrorBoundary } from './routes/app/root'; +import { + default as AppRoot, + ErrorBoundary as AppRootErrorBoundary, +} from './routes/app/root'; + +const convert = (queryClient: QueryClient) => (m: any) => { + const { clientLoader, clientAction, default: Component, ...rest } = m; + return { + ...rest, + loader: clientLoader?.(queryClient), + action: clientAction?.(queryClient), + Component, + }; +}; export const createAppRouter = (queryClient: QueryClient) => createBrowserRouter([ { path: paths.home.path, - lazy: async () => { - const { LandingRoute } = await import('./routes/landing'); - return { Component: LandingRoute }; - }, + lazy: () => import('./routes/landing').then(convert(queryClient)), }, { path: paths.auth.register.path, - lazy: async () => { - const { RegisterRoute } = await import('./routes/auth/register'); - return { Component: RegisterRoute }; - }, + lazy: () => import('./routes/auth/register').then(convert(queryClient)), }, { path: paths.auth.login.path, - lazy: async () => { - const { LoginRoute } = await import('./routes/auth/login'); - return { Component: LoginRoute }; - }, + lazy: () => import('./routes/auth/login').then(convert(queryClient)), }, { path: paths.app.root.path, @@ -41,74 +46,36 @@ export const createAppRouter = (queryClient: QueryClient) => children: [ { path: paths.app.discussions.path, - lazy: async () => { - const { DiscussionsRoute, discussionsLoader } = await import( - './routes/app/discussions/discussions' - ); - return { - Component: DiscussionsRoute, - loader: discussionsLoader(queryClient), - }; - }, - ErrorBoundary: AppRootErrorBoundary, + lazy: () => + import('./routes/app/discussions/discussions').then( + convert(queryClient), + ), }, { path: paths.app.discussion.path, - lazy: async () => { - const { DiscussionRoute, discussionLoader } = await import( - './routes/app/discussions/discussion' - ); - return { - Component: DiscussionRoute, - loader: discussionLoader(queryClient), - }; - }, - ErrorBoundary: AppRootErrorBoundary, + lazy: () => + import('./routes/app/discussions/discussion').then( + convert(queryClient), + ), }, { path: paths.app.users.path, - lazy: async () => { - const { UsersRoute, usersLoader } = await import( - './routes/app/users' - ); - return { - Component: UsersRoute, - loader: usersLoader(queryClient), - }; - }, - ErrorBoundary: AppRootErrorBoundary, + lazy: () => import('./routes/app/users').then(convert(queryClient)), }, { path: paths.app.profile.path, - lazy: async () => { - const { ProfileRoute } = await import('./routes/app/profile'); - return { - Component: ProfileRoute, - }; - }, - ErrorBoundary: AppRootErrorBoundary, + lazy: () => import('./routes/app/profile').then(convert(queryClient)), }, { path: paths.app.dashboard.path, - lazy: async () => { - const { DashboardRoute } = await import('./routes/app/dashboard'); - return { - Component: DashboardRoute, - }; - }, - ErrorBoundary: AppRootErrorBoundary, + lazy: () => + import('./routes/app/dashboard').then(convert(queryClient)), }, ], }, { path: '*', - lazy: async () => { - const { NotFoundRoute } = await import('./routes/not-found'); - return { - Component: NotFoundRoute, - }; - }, - ErrorBoundary: AppRootErrorBoundary, + lazy: () => import('./routes/not-found').then(convert(queryClient)), }, ]); diff --git a/apps/react-vite/src/app/routes/app/dashboard.tsx b/apps/react-vite/src/app/routes/app/dashboard.tsx index 4f45d2ad..324e2f3a 100644 --- a/apps/react-vite/src/app/routes/app/dashboard.tsx +++ b/apps/react-vite/src/app/routes/app/dashboard.tsx @@ -2,7 +2,7 @@ import { ContentLayout } from '@/components/layouts'; import { useUser } from '@/lib/auth'; import { ROLES } from '@/lib/authorization'; -export const DashboardRoute = () => { +const DashboardRoute = () => { const user = useUser(); return ( @@ -31,3 +31,5 @@ export const DashboardRoute = () => { ); }; + +export default DashboardRoute; diff --git a/apps/react-vite/src/app/routes/app/discussions/__tests__/discussion.test.tsx b/apps/react-vite/src/app/routes/app/discussions/__tests__/discussion.test.tsx index 2b766eea..d84b155d 100644 --- a/apps/react-vite/src/app/routes/app/discussions/__tests__/discussion.test.tsx +++ b/apps/react-vite/src/app/routes/app/discussions/__tests__/discussion.test.tsx @@ -8,7 +8,7 @@ import { within, } from '@/testing/test-utils'; -import { DiscussionRoute } from '../discussion'; +import { default as DiscussionRoute } from '../discussion'; const renderDiscussion = async () => { const fakeUser = await createUser(); diff --git a/apps/react-vite/src/app/routes/app/discussions/__tests__/discussions.test.tsx b/apps/react-vite/src/app/routes/app/discussions/__tests__/discussions.test.tsx index 3afe2cb8..dbc08e6d 100644 --- a/apps/react-vite/src/app/routes/app/discussions/__tests__/discussions.test.tsx +++ b/apps/react-vite/src/app/routes/app/discussions/__tests__/discussions.test.tsx @@ -10,7 +10,7 @@ import { } from '@/testing/test-utils'; import { formatDate } from '@/utils/format'; -import { DiscussionsRoute } from '../discussions'; +import { default as DiscussionsRoute } from '../discussions'; beforeAll(() => { vi.spyOn(console, 'error').mockImplementation(() => {}); diff --git a/apps/react-vite/src/app/routes/app/discussions/discussion.tsx b/apps/react-vite/src/app/routes/app/discussions/discussion.tsx index db111d9e..035afd03 100644 --- a/apps/react-vite/src/app/routes/app/discussions/discussion.tsx +++ b/apps/react-vite/src/app/routes/app/discussions/discussion.tsx @@ -1,6 +1,6 @@ import { QueryClient } from '@tanstack/react-query'; import { ErrorBoundary } from 'react-error-boundary'; -import { useParams, LoaderFunctionArgs } from 'react-router-dom'; +import { useParams, LoaderFunctionArgs } from 'react-router'; import { ContentLayout } from '@/components/layouts'; import { Spinner } from '@/components/ui/spinner'; @@ -12,7 +12,7 @@ import { } from '@/features/discussions/api/get-discussion'; import { DiscussionView } from '@/features/discussions/components/discussion-view'; -export const discussionLoader = +export const clientLoader = (queryClient: QueryClient) => async ({ params }: LoaderFunctionArgs) => { const discussionId = params.discussionId as string; @@ -35,7 +35,7 @@ export const discussionLoader = }; }; -export const DiscussionRoute = () => { +const DiscussionRoute = () => { const params = useParams(); const discussionId = params.discussionId as string; const discussionQuery = useDiscussion({ @@ -71,3 +71,5 @@ export const DiscussionRoute = () => { ); }; + +export default DiscussionRoute; diff --git a/apps/react-vite/src/app/routes/app/discussions/discussions.tsx b/apps/react-vite/src/app/routes/app/discussions/discussions.tsx index 502faaa3..7d1f0f0d 100644 --- a/apps/react-vite/src/app/routes/app/discussions/discussions.tsx +++ b/apps/react-vite/src/app/routes/app/discussions/discussions.tsx @@ -1,5 +1,5 @@ import { QueryClient, useQueryClient } from '@tanstack/react-query'; -import { LoaderFunctionArgs } from 'react-router-dom'; +import { LoaderFunctionArgs } from 'react-router'; import { ContentLayout } from '@/components/layouts'; import { getInfiniteCommentsQueryOptions } from '@/features/comments/api/get-comments'; @@ -7,7 +7,7 @@ import { getDiscussionsQueryOptions } from '@/features/discussions/api/get-discu import { CreateDiscussion } from '@/features/discussions/components/create-discussion'; import { DiscussionsList } from '@/features/discussions/components/discussions-list'; -export const discussionsLoader = +export const clientLoader = (queryClient: QueryClient) => async ({ request }: LoaderFunctionArgs) => { const url = new URL(request.url); @@ -22,7 +22,7 @@ export const discussionsLoader = ); }; -export const DiscussionsRoute = () => { +const DiscussionsRoute = () => { const queryClient = useQueryClient(); return ( @@ -42,3 +42,5 @@ export const DiscussionsRoute = () => { ); }; + +export default DiscussionsRoute; diff --git a/apps/react-vite/src/app/routes/app/profile.tsx b/apps/react-vite/src/app/routes/app/profile.tsx index 4c22a485..a84b9a43 100644 --- a/apps/react-vite/src/app/routes/app/profile.tsx +++ b/apps/react-vite/src/app/routes/app/profile.tsx @@ -15,7 +15,7 @@ const Entry = ({ label, value }: EntryProps) => ( ); -export const ProfileRoute = () => { +const ProfileRoute = () => { const user = useUser(); if (!user.data) return null; @@ -47,3 +47,5 @@ export const ProfileRoute = () => { ); }; + +export default ProfileRoute; diff --git a/apps/react-vite/src/app/routes/app/root.tsx b/apps/react-vite/src/app/routes/app/root.tsx index 740f4499..a75c68f1 100644 --- a/apps/react-vite/src/app/routes/app/root.tsx +++ b/apps/react-vite/src/app/routes/app/root.tsx @@ -1,8 +1,12 @@ -import { Outlet } from 'react-router-dom'; +import { Outlet } from 'react-router'; import { DashboardLayout } from '@/components/layouts'; -export const AppRoot = () => { +export const ErrorBoundary = () => { + return
Something went wrong!
; +}; + +const AppRoot = () => { return ( @@ -10,6 +14,4 @@ export const AppRoot = () => { ); }; -export const AppRootErrorBoundary = () => { - return
Something went wrong!
; -}; +export default AppRoot; diff --git a/apps/react-vite/src/app/routes/app/users.tsx b/apps/react-vite/src/app/routes/app/users.tsx index d8038bce..77640dd1 100644 --- a/apps/react-vite/src/app/routes/app/users.tsx +++ b/apps/react-vite/src/app/routes/app/users.tsx @@ -5,7 +5,7 @@ import { getUsersQueryOptions } from '@/features/users/api/get-users'; import { UsersList } from '@/features/users/components/users-list'; import { Authorization, ROLES } from '@/lib/authorization'; -export const usersLoader = (queryClient: QueryClient) => async () => { +export const clientLoader = (queryClient: QueryClient) => async () => { const query = getUsersQueryOptions(); return ( @@ -14,7 +14,7 @@ export const usersLoader = (queryClient: QueryClient) => async () => { ); }; -export const UsersRoute = () => { +const UsersRoute = () => { return ( { ); }; + +export default UsersRoute; diff --git a/apps/react-vite/src/app/routes/auth/login.tsx b/apps/react-vite/src/app/routes/auth/login.tsx index dc01f50d..ffd28683 100644 --- a/apps/react-vite/src/app/routes/auth/login.tsx +++ b/apps/react-vite/src/app/routes/auth/login.tsx @@ -1,10 +1,10 @@ -import { useNavigate, useSearchParams } from 'react-router-dom'; +import { useNavigate, useSearchParams } from 'react-router'; import { AuthLayout } from '@/components/layouts/auth-layout'; import { paths } from '@/config/paths'; import { LoginForm } from '@/features/auth/components/login-form'; -export const LoginRoute = () => { +const LoginRoute = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const redirectTo = searchParams.get('redirectTo'); @@ -24,3 +24,5 @@ export const LoginRoute = () => { ); }; + +export default LoginRoute; diff --git a/apps/react-vite/src/app/routes/auth/register.tsx b/apps/react-vite/src/app/routes/auth/register.tsx index f9eeb26d..afee8a4d 100644 --- a/apps/react-vite/src/app/routes/auth/register.tsx +++ b/apps/react-vite/src/app/routes/auth/register.tsx @@ -1,12 +1,12 @@ import { useState } from 'react'; -import { useNavigate, useSearchParams } from 'react-router-dom'; +import { useNavigate, useSearchParams } from 'react-router'; import { AuthLayout } from '@/components/layouts/auth-layout'; import { paths } from '@/config/paths'; import { RegisterForm } from '@/features/auth/components/register-form'; import { useTeams } from '@/features/teams/api/get-teams'; -export const RegisterRoute = () => { +const RegisterRoute = () => { const navigate = useNavigate(); const [searchParams] = useSearchParams(); const redirectTo = searchParams.get('redirectTo'); @@ -36,3 +36,5 @@ export const RegisterRoute = () => { ); }; + +export default RegisterRoute; diff --git a/apps/react-vite/src/app/routes/landing.tsx b/apps/react-vite/src/app/routes/landing.tsx index 2b1dce28..4fb65409 100644 --- a/apps/react-vite/src/app/routes/landing.tsx +++ b/apps/react-vite/src/app/routes/landing.tsx @@ -1,4 +1,4 @@ -import { useNavigate } from 'react-router-dom'; +import { useNavigate } from 'react-router'; import logo from '@/assets/logo.svg'; import { Head } from '@/components/seo'; @@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button'; import { paths } from '@/config/paths'; import { useUser } from '@/lib/auth'; -export const LandingRoute = () => { +const LandingRoute = () => { const navigate = useNavigate(); const user = useUser(); @@ -84,3 +84,5 @@ export const LandingRoute = () => { ); }; + +export default LandingRoute; diff --git a/apps/react-vite/src/app/routes/not-found.tsx b/apps/react-vite/src/app/routes/not-found.tsx index 055a18ac..4f3ad7d5 100644 --- a/apps/react-vite/src/app/routes/not-found.tsx +++ b/apps/react-vite/src/app/routes/not-found.tsx @@ -1,7 +1,7 @@ import { Link } from '@/components/ui/link'; import { paths } from '@/config/paths'; -export const NotFoundRoute = () => { +const NotFoundRoute = () => { return (

404 - Not Found

@@ -12,3 +12,5 @@ export const NotFoundRoute = () => {
); }; + +export default NotFoundRoute; diff --git a/apps/react-vite/src/components/layouts/auth-layout.tsx b/apps/react-vite/src/components/layouts/auth-layout.tsx index 785bbba7..8390e118 100644 --- a/apps/react-vite/src/components/layouts/auth-layout.tsx +++ b/apps/react-vite/src/components/layouts/auth-layout.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { useEffect } from 'react'; -import { useNavigate, useSearchParams } from 'react-router-dom'; +import { useNavigate, useSearchParams } from 'react-router'; import logo from '@/assets/logo.svg'; import { Head } from '@/components/seo'; diff --git a/apps/react-vite/src/components/layouts/dashboard-layout.tsx b/apps/react-vite/src/components/layouts/dashboard-layout.tsx index f95cdab5..51823918 100644 --- a/apps/react-vite/src/components/layouts/dashboard-layout.tsx +++ b/apps/react-vite/src/components/layouts/dashboard-layout.tsx @@ -1,6 +1,6 @@ import { Home, PanelLeft, Folder, Users, User2 } from 'lucide-react'; import { useEffect, useState } from 'react'; -import { NavLink, useNavigate, useNavigation } from 'react-router-dom'; +import { NavLink, useNavigate, useNavigation } from 'react-router'; import logo from '@/assets/logo.svg'; import { Button } from '@/components/ui/button'; @@ -77,9 +77,11 @@ const Progress = () => { }; export function DashboardLayout({ children }: { children: React.ReactNode }) { - const logout = useLogout(); - const { checkAccess } = useAuthorization(); const navigate = useNavigate(); + const logout = useLogout({ + onSuccess: () => navigate(paths.auth.login.getHref(location.pathname)), + }); + const { checkAccess } = useAuthorization(); const navigation = [ { name: 'Dashboard', to: paths.app.dashboard.getHref(), icon: Home }, { name: 'Discussions', to: paths.app.discussions.getHref(), icon: Folder }, diff --git a/apps/react-vite/src/components/ui/link/link.tsx b/apps/react-vite/src/components/ui/link/link.tsx index f0f6a642..7d68abdf 100644 --- a/apps/react-vite/src/components/ui/link/link.tsx +++ b/apps/react-vite/src/components/ui/link/link.tsx @@ -1,4 +1,4 @@ -import { Link as RouterLink, LinkProps } from 'react-router-dom'; +import { Link as RouterLink, LinkProps } from 'react-router'; import { cn } from '@/utils/cn'; diff --git a/apps/react-vite/src/features/auth/components/login-form.tsx b/apps/react-vite/src/features/auth/components/login-form.tsx index 0a2e14dc..02ad0fce 100644 --- a/apps/react-vite/src/features/auth/components/login-form.tsx +++ b/apps/react-vite/src/features/auth/components/login-form.tsx @@ -1,4 +1,4 @@ -import { Link, useSearchParams } from 'react-router-dom'; +import { Link, useSearchParams } from 'react-router'; import { Button } from '@/components/ui/button'; import { Form, Input } from '@/components/ui/form'; diff --git a/apps/react-vite/src/features/auth/components/register-form.tsx b/apps/react-vite/src/features/auth/components/register-form.tsx index caa1c7fe..9eb4a030 100644 --- a/apps/react-vite/src/features/auth/components/register-form.tsx +++ b/apps/react-vite/src/features/auth/components/register-form.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Link, useSearchParams } from 'react-router-dom'; +import { Link, useSearchParams } from 'react-router'; import { Button } from '@/components/ui/button'; import { Form, Input, Select, Label, Switch } from '@/components/ui/form'; diff --git a/apps/react-vite/src/features/discussions/components/discussions-list.tsx b/apps/react-vite/src/features/discussions/components/discussions-list.tsx index 41d2c733..9aa5fbad 100644 --- a/apps/react-vite/src/features/discussions/components/discussions-list.tsx +++ b/apps/react-vite/src/features/discussions/components/discussions-list.tsx @@ -1,5 +1,5 @@ import { useQueryClient } from '@tanstack/react-query'; -import { useSearchParams } from 'react-router-dom'; +import { useSearchParams } from 'react-router'; import { Link } from '@/components/ui/link'; import { Spinner } from '@/components/ui/spinner'; diff --git a/apps/react-vite/src/lib/auth.tsx b/apps/react-vite/src/lib/auth.tsx index 9ab90a87..15379814 100644 --- a/apps/react-vite/src/lib/auth.tsx +++ b/apps/react-vite/src/lib/auth.tsx @@ -1,5 +1,5 @@ import { configureAuth } from 'react-query-auth'; -import { Navigate, useLocation } from 'react-router-dom'; +import { Navigate, useLocation } from 'react-router'; import { z } from 'zod'; import { paths } from '@/config/paths'; @@ -80,10 +80,6 @@ export const ProtectedRoute = ({ children }: { children: React.ReactNode }) => { const location = useLocation(); if (!user.data) { - console.log({ - pathname: location.pathname, - redirectTo: paths.auth.login.getHref(location.pathname), - }); return ( ); diff --git a/apps/react-vite/src/testing/test-utils.tsx b/apps/react-vite/src/testing/test-utils.tsx index 15ae9d3e..b50e3721 100644 --- a/apps/react-vite/src/testing/test-utils.tsx +++ b/apps/react-vite/src/testing/test-utils.tsx @@ -5,7 +5,7 @@ import { } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import Cookies from 'js-cookie'; -import { RouterProvider, createMemoryRouter } from 'react-router-dom'; +import { RouterProvider, createMemoryRouter } from 'react-router'; import { AppProvider } from '@/app/provider'; diff --git a/apps/react-vite/tsconfig.json b/apps/react-vite/tsconfig.json index 80ce14bb..ec0e7ca4 100644 --- a/apps/react-vite/tsconfig.json +++ b/apps/react-vite/tsconfig.json @@ -10,7 +10,7 @@ "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, "module": "esnext", - "moduleResolution": "Node", + "moduleResolution": "bundler", "resolveJsonModule": true, "noEmit": true, "jsx": "react-jsx", diff --git a/apps/react-vite/yarn.lock b/apps/react-vite/yarn.lock index bbf405ef..f673c893 100644 --- a/apps/react-vite/yarn.lock +++ b/apps/react-vite/yarn.lock @@ -1922,11 +1922,6 @@ dependencies: "@babel/runtime" "^7.13.10" -"@remix-run/router@1.16.0": - version "1.16.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.16.0.tgz#0e10181e5fec1434eb071a9bc4bdaac843f16dcc" - integrity sha512-Quz1KOffeEf/zwkCBM3kBtH4ZoZ+pT3xIXBG4PPW/XFtDP7EGhtTiC2+gpL9GnR7+Qdet5Oa6cYSvwKYg6kN9Q== - "@rollup/pluginutils@^5.0.2": version "5.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" @@ -4364,6 +4359,11 @@ cookie@^0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.0.2.tgz#27360701532116bd3f1f9416929d176afe1e4610" + integrity sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA== + core-js-compat@^3.31.0, core-js-compat@^3.36.1: version "3.37.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" @@ -8738,10 +8738,10 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-query-auth@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/react-query-auth/-/react-query-auth-2.3.0.tgz#2c03e4cd3c75a01bde0cfa97168b857906315449" - integrity sha512-42IvqDxnQMOCdPmf+H8hMscO+1EgDPMuNnJrYEJwe8Itsd2z96obtlm85PvBk8BgvOQrKGEGx1VDsAIzk6y7yw== +react-query-auth@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/react-query-auth/-/react-query-auth-2.4.3.tgz#63d0faf866a5844b18c89257f9c17121ac3b682c" + integrity sha512-sSDX4OZSyBTvTOItiWEH/SsTfKg7AEAc7qOL1qsxx+vIx5s82VeUyj4W1vNlHY9nFeU1accm1hRW1FVF2TzaiA== react-refresh@^0.14.0: version "0.14.2" @@ -8767,20 +8767,15 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" -react-router-dom@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.23.0.tgz#8b80ad92ad28f4dc38972e92d84b4c208150545a" - integrity sha512-Q9YaSYvubwgbal2c9DJKfx6hTNoBp3iJDsl+Duva/DwxoJH+OTXkxGpql4iUK2sla/8z4RpjAm6EWx1qUDuopQ== - dependencies: - "@remix-run/router" "1.16.0" - react-router "6.23.0" - -react-router@6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.23.0.tgz#2f2d7492c66a6bdf760be4c6bdf9e1d672fa154b" - integrity sha512-wPMZ8S2TuPadH0sF5irFGjkNLIcRvOSaEe7v+JER8508dyJumm6XZB1u5kztlX0RVq6AzRVndzqcUh6sFIauzA== +react-router@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.0.2.tgz#2820e107cb8cec8acc5db15a17470c056ea86022" + integrity sha512-m5AcPfTRUcjwmhBzOJGEl6Y7+Crqyju0+TgTQxoS4SO+BkWbhOrcfZNq6wSWdl2BBbJbsAoBUb8ZacOFT+/JlA== dependencies: - "@remix-run/router" "1.16.0" + "@types/cookie" "^0.6.0" + cookie "^1.0.1" + set-cookie-parser "^2.6.0" + turbo-stream "2.4.0" react-style-singleton@^2.2.1: version "2.2.1" @@ -9285,6 +9280,11 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-cookie-parser@^2.6.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943" + integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -10035,6 +10035,11 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +turbo-stream@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/turbo-stream/-/turbo-stream-2.4.0.tgz#1e4fca6725e90fa14ac4adb782f2d3759a5695f0" + integrity sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g== + tv4@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.3.0.tgz#d020c846fadd50c855abb25ebaecc68fc10f7963"