Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/dull-walls-drive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@react-router/dev": patch
---

Added react-router/dom to Vite optimizeDeps and resolve.dedupe arrays
5 changes: 5 additions & 0 deletions .changeset/shiny-horses-pump.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"react-router": patch
---

Removed cyclic dependency on react-router
1 change: 1 addition & 0 deletions contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@
- petersendidit
- promet99
- pyitphyoaung
- redabacha
- refusado
- rimian
- robbtraister
Expand Down
2 changes: 2 additions & 0 deletions packages/react-router-dev/vite/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -831,6 +831,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = (_config) => {
// Pre-bundle router dependencies to avoid router duplicates.
// Mismatching routers cause `Error: You must render this element inside a <Remix> element`.
"react-router",
"react-router/dom",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should've been here already 🤷‍♂️

// Check to avoid "Failed to resolve dependency: react-router-dom, present in 'optimizeDeps.include'"
...(hasDependency("react-router-dom")
? ["react-router-dom"]
Expand All @@ -849,6 +850,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = (_config) => {

// see description for `optimizeDeps.include`
"react-router",
"react-router/dom",
"react-router-dom",
],
},
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/Route-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route } from "react-router";
import { MemoryRouter, Route, Routes } from "../index";

describe("A <Route>", () => {
it("renders its `element` prop", () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/Router-basename-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route } from "react-router";
import { MemoryRouter, Route, Routes } from "../index";

describe("<Router basename>", () => {
let consoleWarn: jest.SpyInstance;
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/Router-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, useLocation } from "react-router";
import { MemoryRouter, useLocation } from "../index";

describe("<Router>", () => {
let consoleError: jest.SpyInstance;
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/Routes-location-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Route, Routes, useParams } from "react-router";
import { MemoryRouter, Route, Routes, useParams } from "../index";

describe("<Routes> with a location", () => {
function Home() {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/Routes-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route } from "react-router";
import { MemoryRouter, Route, Routes } from "../index";

describe("<Routes>", () => {
let consoleWarn: jest.SpyInstance;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import type { RouteObject } from "react-router";
import { matchRoutes } from "react-router";
import { matchRoutes, type RouteObject } from "../index";

function pickPaths(routes: RouteObject[], pathname: string): string[] | null {
let matches = matchRoutes(routes, pathname);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from "react";
import { Route, createRoutesFromChildren } from "react-router";
import { Route, createRoutesFromChildren } from "../index";

describe("creating routes from JSX", () => {
it("creates a route config of nested JavaScript objects", () => {
Expand Down
10 changes: 4 additions & 6 deletions packages/react-router/__tests__/data-memory-router-test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,19 @@ import {
useActionData,
useAsyncError,
useAsyncValue,
useFetcher,
useLoaderData,
useLocation,
useMatches,
useNavigate,
useNavigation,
useRevalidator,
useRouteError,
useRouteLoaderData,
} from "react-router";

import {
useFetcher,
useNavigate,
useRevalidator,
useSubmit,
type ErrorResponse,
} from "../index";

import urlDataStrategy from "./router/utils/urlDataStrategy";
import { createDeferred } from "./router/utils/utils";
import MemoryNavigate from "./utils/MemoryNavigate";
Expand Down
4 changes: 2 additions & 2 deletions packages/react-router/__tests__/data-router-no-dom-test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

import * as React from "react";
import renderer from "react-test-renderer";
import { useFetcher } from "../lib/dom/lib";
import { RouterProvider } from "../lib/dom-export/dom-router-provider";
import { createMemoryRouter } from "../lib/components";
import { RouterProvider } from "../lib/dom-export/dom-router-provider";
import { useFetcher } from "../lib/dom/lib";
import { useLoaderData, useNavigate } from "../lib/hooks";

describe("RouterProvider works when no DOM APIs are available", () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route, useParams } from "react-router";
import { MemoryRouter, Route, Routes, useParams } from "../index";

describe("Descendant <Routes>", () => {
it("receive all params from ancestor <Routes>", () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Outlet, Routes, Route, useParams } from "react-router";
import type { InitialEntry } from "react-router";
import {
MemoryRouter,
Outlet,
Route,
Routes,
useParams,
type InitialEntry,
} from "../index";

describe("Descendant <Routes> splat matching", () => {
describe("when the parent route path ends with /*", () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Outlet, Routes, Route } from "react-router";
import { MemoryRouter, Outlet, Route, Routes } from "../index";

describe("Descendant <Routes>", () => {
let consoleWarn: jest.SpyInstance<void, any>;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import type { ErrorResponse, Fetcher, RouterState } from "react-router";
import "@testing-library/jest-dom";
import {
act,
Expand All @@ -9,7 +8,6 @@ import {
} from "@testing-library/react";
import { JSDOM } from "jsdom";
import * as React from "react";
import type { RouteObject } from "../../index";
import {
Await,
UNSAFE_DataRouterStateContext as DataRouterStateContext,
Expand All @@ -35,10 +33,14 @@ import {
useRouteError,
useSearchParams,
useSubmit,
type ErrorResponse,
type Fetcher,
type RouteObject,
type RouterState,
} from "../../index";

import getHtml from "../utils/getHtml";
import { createDeferred, tick } from "../router/utils/utils";
import getHtml from "../utils/getHtml";

testDomRouter("<DataBrowserRouter>", createBrowserRouter, (url) =>
getWindowImpl(url, false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@

import * as React from "react";
import * as ReactDOMServer from "react-dom/server";
import type { StaticHandlerContext } from "../../index";
import {
Form,
Link,
Outlet,
StaticRouterProvider,
createStaticHandler,
createStaticRouter,
useLoaderData,
useLocation,
useMatches,
createStaticHandler,
createStaticRouter,
StaticRouterProvider,
type StaticHandlerContext,
} from "../../index";

beforeEach(() => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import "@testing-library/jest-dom";
import { act, render, screen, waitFor } from "@testing-library/react";
import * as React from "react";
import type { LoaderFunction } from "react-router";
import {} from "react-router";
import { RouterProvider as ReactRouterDom_RouterProvider } from "../../dom-export";
import {
Outlet,
RouterProvider as ReactRouter_RouterProvider,
Expand All @@ -11,11 +10,11 @@ import {
createMemoryRouter,
useLoaderData,
useRouteError,
type LoaderFunction,
} from "../../index";
import { RouterProvider as ReactRouterDom_RouterProvider } from "../../dom-export";

import getHtml from "../utils/getHtml";
import { createDeferred, tick } from "../router/utils/utils";
import getHtml from "../utils/getHtml";

let didAssertMissingHydrateFallback = false;

Expand Down
13 changes: 7 additions & 6 deletions packages/react-router/__tests__/dom/scroll-restoration-test.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import "@testing-library/jest-dom";
import "@testing-library/jest-dom/extend-expect";
import { fireEvent, render, screen } from "@testing-library/react";
import { JSDOM } from "jsdom";
import * as React from "react";
import { render, fireEvent, screen } from "@testing-library/react";
import "@testing-library/jest-dom";

import getHtml from "../utils/getHtml";
import {
Link,
Outlet,
RouterProvider,
ScrollRestoration,
createBrowserRouter,
createMemoryRouter,
redirect,
} from "../../index";
import type { FrameworkContextObject } from "../../lib/dom/ssr/entry";
import { createMemoryRouter, redirect } from "react-router";
import { FrameworkContext, Scripts } from "../../lib/dom/ssr/components";
import "@testing-library/jest-dom/extend-expect";
import type { FrameworkContextObject } from "../../lib/dom/ssr/entry";
import getHtml from "../utils/getHtml";

describe(`ScrollRestoration`, () => {
it("restores the scroll position for a page when re-visited", () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/react-router/__tests__/dom/ssr/components-test.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { createStaticHandler } from "react-router";
import "@testing-library/jest-dom/extend-expect";
import { act, fireEvent, render } from "@testing-library/react";
import * as React from "react";

import {
createMemoryRouter,
createStaticHandler,
Link,
NavLink,
Outlet,
Expand All @@ -13,7 +14,6 @@ import { HydratedRouter } from "../../../lib/dom-export/hydrated-router";
import { FrameworkContext } from "../../../lib/dom/ssr/components";
import invariant from "../../../lib/dom/ssr/invariant";
import { ServerRouter } from "../../../lib/dom/ssr/server";
import "@testing-library/jest-dom/extend-expect";

const setIntentEvents = ["focus", "mouseEnter", "touchStart"] as const;
type PrefetchEventHandlerProps = {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/generatePath-test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { generatePath } from "react-router";
import { generatePath } from "../index";

describe("generatePath", () => {
describe("with no params", () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/gh-issue-8127-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route } from "../index";
import { MemoryRouter, Route, Routes } from "../index";

describe("GH Issue #8127", () => {
it("works", () => {
Expand Down
6 changes: 3 additions & 3 deletions packages/react-router/__tests__/gh-issue-8165-test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import {
MemoryRouter,
Routes,
Navigate,
Route,
useParams,
Routes,
useNavigate,
Navigate,
useParams,
} from "../index";

describe("GH Issue #8165", () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/greedy-matching-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route, Outlet } from "../index";
import { MemoryRouter, Outlet, Route, Routes } from "../index";

describe("greedy matching", () => {
let routes = (
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/index-routes-test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { matchRoutes } from "react-router";
import { matchRoutes } from "../index";

describe("index route matching", () => {
it("throws when the index route has children", () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/layout-routes-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route, Outlet } from "react-router";
import { MemoryRouter, Outlet, Route, Routes } from "../index";

describe("A layout route", () => {
it("does not match when none of its children do", () => {
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/matchPath-test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { matchPath } from "react-router";
import { matchPath } from "../index";

describe("matchPath", () => {
it("matches the root / URL", () => {
Expand Down
3 changes: 1 addition & 2 deletions packages/react-router/__tests__/matchRoutes-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as React from "react";
import type { RouteObject } from "react-router";
import { matchRoutes } from "react-router";
import { matchRoutes, type RouteObject } from "../index";

function pickPaths(
routes: RouteObject[],
Expand Down
6 changes: 3 additions & 3 deletions packages/react-router/__tests__/navigate-test.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import { render, screen, waitFor } from "@testing-library/react";
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import {
MemoryRouter,
Navigate,
Outlet,
Routes,
Route,
RouterProvider,
Routes,
createMemoryRouter,
useLocation,
} from "react-router";
import { render, screen, waitFor } from "@testing-library/react";
} from "../index";

import getHtml from "../../react-router/__tests__/utils/getHtml";

Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/params-decode-test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Routes, Route, useParams } from "react-router";
import { MemoryRouter, Route, Routes, useParams } from "../index";

describe("Decoding params", () => {
it("works", () => {
Expand Down
3 changes: 1 addition & 2 deletions packages/react-router/__tests__/path-matching-test.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import type { RouteObject } from "react-router";
import { matchRoutes } from "react-router";
import { matchRoutes, type RouteObject } from "../index";

function pickPaths(routes: RouteObject[], pathname: string): string[] | null {
let matches = matchRoutes(routes, pathname);
Expand Down
2 changes: 1 addition & 1 deletion packages/react-router/__tests__/resolvePath-test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { resolvePath } from "react-router";
import { resolvePath } from "../index";

describe("resolvePath", () => {
it('resolves absolute paths irrespective of the "from" pathname', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from "react";
import * as TestRenderer from "react-test-renderer";
import { MemoryRouter, Outlet, Routes, Route } from "react-router";
import { MemoryRouter, Outlet, Route, Routes } from "../index";

describe("nested routes with no path", () => {
it("matches them depth-first", () => {
Expand Down
Loading