react-router 8.0.1 → 8.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/development/dom-export.js +1 -1
- package/dist/development/index-react-server-client.js +1 -1
- package/dist/development/index-react-server.d.ts +35 -9
- package/dist/development/index-react-server.js +190 -157
- package/dist/development/index.d.ts +2 -2
- package/dist/development/index.js +1 -1
- package/dist/development/lib/actions.js +1 -1
- package/dist/development/lib/components.js +1 -1
- package/dist/development/lib/context.js +1 -1
- package/dist/development/lib/dom/dom.js +1 -1
- package/dist/development/lib/dom/lib.js +2 -2
- package/dist/development/lib/dom/server.js +1 -1
- package/dist/development/lib/dom/ssr/components.js +1 -1
- package/dist/development/lib/dom/ssr/data.js +1 -1
- package/dist/development/lib/dom/ssr/errorBoundaries.js +1 -1
- package/dist/development/lib/dom/ssr/fallback.js +1 -1
- package/dist/development/lib/dom/ssr/fog-of-war.js +1 -1
- package/dist/development/lib/dom/ssr/hydration.js +1 -1
- package/dist/development/lib/dom/ssr/invariant.js +1 -1
- package/dist/development/lib/dom/ssr/links.js +1 -1
- package/dist/development/lib/dom/ssr/markup.js +1 -1
- package/dist/development/lib/dom/ssr/routeModules.js +1 -1
- package/dist/development/lib/dom/ssr/routes-test-stub.js +1 -1
- package/dist/development/lib/dom/ssr/routes.js +1 -1
- package/dist/development/lib/dom/ssr/server.js +1 -1
- package/dist/development/lib/dom/ssr/single-fetch.js +1 -1
- package/dist/development/lib/dom-export/dom-router-provider.js +1 -1
- package/dist/development/lib/dom-export/hydrated-router.js +1 -1
- package/dist/development/lib/errors.js +1 -1
- package/dist/development/lib/hooks.d.ts +33 -6
- package/dist/development/lib/hooks.js +34 -7
- package/dist/development/lib/href.js +6 -3
- package/dist/development/lib/router/history.js +1 -1
- package/dist/development/lib/router/instrumentation.d.ts +33 -8
- package/dist/development/lib/router/instrumentation.js +176 -99
- package/dist/development/lib/router/router.js +20 -20
- package/dist/development/lib/router/url.js +1 -1
- package/dist/development/lib/router/utils.js +21 -4
- package/dist/development/lib/rsc/browser.js +1 -1
- package/dist/development/lib/rsc/errorBoundaries.js +1 -1
- package/dist/development/lib/rsc/html-stream/browser.js +1 -1
- package/dist/development/lib/rsc/html-stream/server.js +1 -1
- package/dist/development/lib/rsc/route-modules.js +1 -1
- package/dist/development/lib/rsc/server.rsc.d.ts +3 -2
- package/dist/development/lib/rsc/server.ssr.js +1 -1
- package/dist/development/lib/server-runtime/cookies.js +1 -1
- package/dist/development/lib/server-runtime/crypto.js +1 -1
- package/dist/development/lib/server-runtime/data.js +1 -1
- package/dist/development/lib/server-runtime/dev.js +1 -1
- package/dist/development/lib/server-runtime/entry.js +1 -1
- package/dist/development/lib/server-runtime/errors.js +1 -1
- package/dist/development/lib/server-runtime/headers.js +1 -1
- package/dist/development/lib/server-runtime/invariant.js +1 -1
- package/dist/development/lib/server-runtime/mode.js +1 -1
- package/dist/development/lib/server-runtime/routeMatching.js +1 -1
- package/dist/development/lib/server-runtime/routes.js +1 -1
- package/dist/development/lib/server-runtime/server.js +12 -5
- package/dist/development/lib/server-runtime/serverHandoff.js +1 -1
- package/dist/development/lib/server-runtime/sessions/cookieStorage.js +1 -1
- package/dist/development/lib/server-runtime/sessions/memoryStorage.js +1 -1
- package/dist/development/lib/server-runtime/sessions.js +1 -1
- package/dist/development/lib/server-runtime/single-fetch.js +1 -1
- package/dist/development/lib/server-runtime/urls.js +1 -1
- package/dist/development/lib/server-runtime/warnings.js +1 -1
- package/dist/development/lib/types/internal.js +1 -1
- package/dist/development/vendor/turbo-stream-v2/flatten.js +1 -1
- package/dist/development/vendor/turbo-stream-v2/turbo-stream.js +1 -1
- package/dist/development/vendor/turbo-stream-v2/unflatten.js +1 -1
- package/dist/development/vendor/turbo-stream-v2/utils.js +1 -1
- package/dist/production/dom-export.js +1 -1
- package/dist/production/index-react-server-client.js +1 -1
- package/dist/production/index-react-server.d.ts +35 -9
- package/dist/production/index-react-server.js +190 -157
- package/dist/production/index.d.ts +2 -2
- package/dist/production/index.js +1 -1
- package/dist/production/lib/actions.js +1 -1
- package/dist/production/lib/components.js +1 -1
- package/dist/production/lib/context.js +1 -1
- package/dist/production/lib/dom/dom.js +1 -1
- package/dist/production/lib/dom/lib.js +2 -2
- package/dist/production/lib/dom/server.js +1 -1
- package/dist/production/lib/dom/ssr/components.js +1 -1
- package/dist/production/lib/dom/ssr/data.js +1 -1
- package/dist/production/lib/dom/ssr/errorBoundaries.js +1 -1
- package/dist/production/lib/dom/ssr/fallback.js +1 -1
- package/dist/production/lib/dom/ssr/fog-of-war.js +1 -1
- package/dist/production/lib/dom/ssr/hydration.js +1 -1
- package/dist/production/lib/dom/ssr/invariant.js +1 -1
- package/dist/production/lib/dom/ssr/links.js +1 -1
- package/dist/production/lib/dom/ssr/markup.js +1 -1
- package/dist/production/lib/dom/ssr/routeModules.js +1 -1
- package/dist/production/lib/dom/ssr/routes-test-stub.js +1 -1
- package/dist/production/lib/dom/ssr/routes.js +1 -1
- package/dist/production/lib/dom/ssr/server.js +1 -1
- package/dist/production/lib/dom/ssr/single-fetch.js +1 -1
- package/dist/production/lib/dom-export/dom-router-provider.js +1 -1
- package/dist/production/lib/dom-export/hydrated-router.js +1 -1
- package/dist/production/lib/errors.js +1 -1
- package/dist/production/lib/hooks.d.ts +33 -6
- package/dist/production/lib/hooks.js +34 -7
- package/dist/production/lib/href.js +6 -3
- package/dist/production/lib/router/history.js +1 -1
- package/dist/production/lib/router/instrumentation.d.ts +33 -8
- package/dist/production/lib/router/instrumentation.js +176 -99
- package/dist/production/lib/router/router.js +20 -20
- package/dist/production/lib/router/url.js +1 -1
- package/dist/production/lib/router/utils.js +21 -4
- package/dist/production/lib/rsc/browser.js +1 -1
- package/dist/production/lib/rsc/errorBoundaries.js +1 -1
- package/dist/production/lib/rsc/html-stream/browser.js +1 -1
- package/dist/production/lib/rsc/html-stream/server.js +1 -1
- package/dist/production/lib/rsc/route-modules.js +1 -1
- package/dist/production/lib/rsc/server.rsc.d.ts +3 -2
- package/dist/production/lib/rsc/server.ssr.js +1 -1
- package/dist/production/lib/server-runtime/cookies.js +1 -1
- package/dist/production/lib/server-runtime/crypto.js +1 -1
- package/dist/production/lib/server-runtime/data.js +1 -1
- package/dist/production/lib/server-runtime/dev.js +1 -1
- package/dist/production/lib/server-runtime/entry.js +1 -1
- package/dist/production/lib/server-runtime/errors.js +1 -1
- package/dist/production/lib/server-runtime/headers.js +1 -1
- package/dist/production/lib/server-runtime/invariant.js +1 -1
- package/dist/production/lib/server-runtime/mode.js +1 -1
- package/dist/production/lib/server-runtime/routeMatching.js +1 -1
- package/dist/production/lib/server-runtime/routes.js +1 -1
- package/dist/production/lib/server-runtime/server.js +12 -5
- package/dist/production/lib/server-runtime/serverHandoff.js +1 -1
- package/dist/production/lib/server-runtime/sessions/cookieStorage.js +1 -1
- package/dist/production/lib/server-runtime/sessions/memoryStorage.js +1 -1
- package/dist/production/lib/server-runtime/sessions.js +1 -1
- package/dist/production/lib/server-runtime/single-fetch.js +1 -1
- package/dist/production/lib/server-runtime/urls.js +1 -1
- package/dist/production/lib/server-runtime/warnings.js +1 -1
- package/dist/production/lib/types/internal.js +1 -1
- package/dist/production/vendor/turbo-stream-v2/flatten.js +1 -1
- package/dist/production/vendor/turbo-stream-v2/turbo-stream.js +1 -1
- package/dist/production/vendor/turbo-stream-v2/unflatten.js +1 -1
- package/dist/production/vendor/turbo-stream-v2/utils.js +1 -1
- package/docs/explanation/hot-module-replacement.md +1 -1
- package/docs/how-to/data-strategy.md +1 -1
- package/docs/how-to/instrumentation.md +131 -26
- package/docs/start/framework/deploying.md +4 -0
- package/docs/upgrading/component-routes.md +2 -2
- package/docs/upgrading/future.md +33 -0
- package/docs/upgrading/router-provider.md +6 -6
- package/docs/upgrading/v7.md +39 -22
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* react-router v8.0
|
|
2
|
+
* react-router v8.2.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
|
-
import { ErrorResponseImpl, RouterContextProvider, defaultMapRouteProperties, isRouteErrorResponse, removeTrailingSlash, stripBasename } from "../router/utils.js";
|
|
12
|
-
import { instrumentHandler } from "../router/instrumentation.js";
|
|
11
|
+
import { ErrorResponseImpl, RouterContextProvider, createDataFunctionUrl, defaultMapRouteProperties, getRoutePattern, isRouteErrorResponse, removeTrailingSlash, stripBasename } from "../router/utils.js";
|
|
12
|
+
import { instrumentHandler, instrumentationResultMetaContext } from "../router/instrumentation.js";
|
|
13
13
|
import { createStaticHandler, getStaticContextFromError, isMutationMethod, isRedirectResponse, isResponse } from "../router/router.js";
|
|
14
14
|
import { getManifestPath } from "../dom/ssr/fog-of-war.js";
|
|
15
15
|
import { createEntryRouteModules } from "./entry.js";
|
|
@@ -36,6 +36,7 @@ function derive(build, mode) {
|
|
|
36
36
|
let errorHandler = build.entry.module.handleError || ((error, { request }) => {
|
|
37
37
|
if (serverMode !== "test" && !request.signal.aborted) console.error(isRouteErrorResponse(error) && error.error ? error.error : error);
|
|
38
38
|
});
|
|
39
|
+
let requestHandlerInstrumentations = build.entry.module.instrumentations?.map((i) => i.handler).filter(Boolean);
|
|
39
40
|
let requestHandler = async (request, initialContext) => {
|
|
40
41
|
let params = {};
|
|
41
42
|
let loadContext;
|
|
@@ -54,7 +55,8 @@ function derive(build, mode) {
|
|
|
54
55
|
}
|
|
55
56
|
loadContext = initialContext || new RouterContextProvider();
|
|
56
57
|
let requestUrl = new URL(request.url);
|
|
57
|
-
let
|
|
58
|
+
let normalizedPath = getNormalizedPath(request);
|
|
59
|
+
let normalizedPathname = normalizedPath.pathname;
|
|
58
60
|
let isSpaMode = getBuildTimeHeader(request, "X-React-Router-SPA-Mode") === "yes";
|
|
59
61
|
if (!build.ssr) {
|
|
60
62
|
let decodedPath = decodeURI(normalizedPathname);
|
|
@@ -95,6 +97,11 @@ function derive(build, mode) {
|
|
|
95
97
|
}
|
|
96
98
|
let matches = matchServerRoutes(build.routes, staticHandler.dataRoutes, staticHandler._internalRouteBranches, normalizedPathname, build.basename);
|
|
97
99
|
if (matches && matches.length > 0) Object.assign(params, matches[0].params);
|
|
100
|
+
if (requestHandlerInstrumentations?.length) loadContext.set(instrumentationResultMetaContext, {
|
|
101
|
+
url: createDataFunctionUrl(request, normalizedPath),
|
|
102
|
+
pattern: matches ? getRoutePattern(matches) : "",
|
|
103
|
+
params: matches?.[0]?.params ? { ...matches[0].params } : {}
|
|
104
|
+
});
|
|
98
105
|
let response;
|
|
99
106
|
if (requestUrl.pathname.endsWith(".data")) {
|
|
100
107
|
response = await handleSingleFetchRequest(serverMode, build, staticHandler, request, loadContext, handleError);
|
|
@@ -122,7 +129,7 @@ function derive(build, mode) {
|
|
|
122
129
|
});
|
|
123
130
|
return response;
|
|
124
131
|
};
|
|
125
|
-
if (
|
|
132
|
+
if (requestHandlerInstrumentations?.length) requestHandler = instrumentHandler(requestHandler, requestHandlerInstrumentations);
|
|
126
133
|
return {
|
|
127
134
|
serverMode,
|
|
128
135
|
staticHandler,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { CookieParseOptions, CookieParseOptions as CookieParseOptions$1, CookieSerializeOptions, CookieSerializeOptions as CookieSerializeOptions$1 } from "cookie-es";
|
|
4
4
|
import { BrowserRouter, Form, HashRouter, Link, Links, MemoryRouter, Meta, NavLink, Navigate, Outlet, Route, Router, RouterProvider, Routes, ScrollRestoration, StaticRouter, StaticRouterProvider, unstable_HistoryRouter } from "react-router/internal/react-server-client";
|
|
5
|
+
import { ReactFormState } from "react-dom/client";
|
|
5
6
|
|
|
6
7
|
//#region lib/router/history.d.ts
|
|
7
8
|
/**
|
|
@@ -1009,6 +1010,19 @@ type ClientInstrumentation = {
|
|
|
1009
1010
|
type InstrumentRequestHandlerFunction = (handler: InstrumentableRequestHandler) => void;
|
|
1010
1011
|
type InstrumentRouterFunction = (router: InstrumentableRouter) => void;
|
|
1011
1012
|
type InstrumentRouteFunction = (route: InstrumentableRoute) => void;
|
|
1013
|
+
/**
|
|
1014
|
+
* Route metadata available after React Router has matched an instrumented
|
|
1015
|
+
* request, navigation, or fetcher call.
|
|
1016
|
+
*/
|
|
1017
|
+
type InstrumentationResultMeta = {
|
|
1018
|
+
url: LoaderFunctionArgs["url"];
|
|
1019
|
+
pattern: string;
|
|
1020
|
+
params: LoaderFunctionArgs["params"];
|
|
1021
|
+
};
|
|
1022
|
+
/**
|
|
1023
|
+
* Result returned by route-level instrumented handler calls, such as
|
|
1024
|
+
* instrumented loaders, actions, middleware, and lazy route functions.
|
|
1025
|
+
*/
|
|
1012
1026
|
type InstrumentationHandlerResult = {
|
|
1013
1027
|
status: "success";
|
|
1014
1028
|
error: undefined;
|
|
@@ -1016,7 +1030,21 @@ type InstrumentationHandlerResult = {
|
|
|
1016
1030
|
status: "error";
|
|
1017
1031
|
error: Error;
|
|
1018
1032
|
};
|
|
1019
|
-
|
|
1033
|
+
/**
|
|
1034
|
+
* Result returned by client-side router instrumented navigation and fetcher
|
|
1035
|
+
* calls.
|
|
1036
|
+
*/
|
|
1037
|
+
type InstrumentationClientRouterResult = InstrumentationHandlerResult & {
|
|
1038
|
+
meta: InstrumentationResultMeta | undefined;
|
|
1039
|
+
};
|
|
1040
|
+
/**
|
|
1041
|
+
* Result returned by server request handler instrumentation.
|
|
1042
|
+
*/
|
|
1043
|
+
type InstrumentationServerHandlerResult = InstrumentationHandlerResult & {
|
|
1044
|
+
statusCode: number;
|
|
1045
|
+
meta: InstrumentationResultMeta | undefined;
|
|
1046
|
+
};
|
|
1047
|
+
type InstrumentFunction<T, TInnerResult = InstrumentationHandlerResult> = (handler: () => Promise<TInnerResult>, info: T) => Promise<void>;
|
|
1020
1048
|
type ReadonlyRequest = {
|
|
1021
1049
|
method: string;
|
|
1022
1050
|
url: string;
|
|
@@ -1039,18 +1067,16 @@ type RouteInstrumentations = {
|
|
|
1039
1067
|
action?: InstrumentFunction<RouteHandlerInstrumentationInfo>;
|
|
1040
1068
|
};
|
|
1041
1069
|
type RouteLazyInstrumentationInfo = undefined;
|
|
1042
|
-
type RouteHandlerInstrumentationInfo = Readonly<{
|
|
1070
|
+
type RouteHandlerInstrumentationInfo = Readonly<Omit<LoaderFunctionArgs, "request" | "context"> & {
|
|
1043
1071
|
request: ReadonlyRequest;
|
|
1044
|
-
params: LoaderFunctionArgs["params"];
|
|
1045
|
-
pattern: string;
|
|
1046
1072
|
context: ReadonlyContext;
|
|
1047
1073
|
}>;
|
|
1048
1074
|
type InstrumentableRouter = {
|
|
1049
1075
|
instrument(instrumentations: RouterInstrumentations): void;
|
|
1050
1076
|
};
|
|
1051
1077
|
type RouterInstrumentations = {
|
|
1052
|
-
navigate?: InstrumentFunction<RouterNavigationInstrumentationInfo>;
|
|
1053
|
-
fetch?: InstrumentFunction<RouterFetchInstrumentationInfo>;
|
|
1078
|
+
navigate?: InstrumentFunction<RouterNavigationInstrumentationInfo, InstrumentationClientRouterResult>;
|
|
1079
|
+
fetch?: InstrumentFunction<RouterFetchInstrumentationInfo, InstrumentationClientRouterResult>;
|
|
1054
1080
|
};
|
|
1055
1081
|
type RouterNavigationInstrumentationInfo = Readonly<{
|
|
1056
1082
|
to: string | number;
|
|
@@ -1073,7 +1099,7 @@ type InstrumentableRequestHandler = {
|
|
|
1073
1099
|
instrument(instrumentations: RequestHandlerInstrumentations): void;
|
|
1074
1100
|
};
|
|
1075
1101
|
type RequestHandlerInstrumentations = {
|
|
1076
|
-
request?: InstrumentFunction<RequestHandlerInstrumentationInfo>;
|
|
1102
|
+
request?: InstrumentFunction<RequestHandlerInstrumentationInfo, InstrumentationServerHandlerResult>;
|
|
1077
1103
|
};
|
|
1078
1104
|
type RequestHandlerInstrumentationInfo = Readonly<{
|
|
1079
1105
|
request: ReadonlyRequest;
|
|
@@ -2299,7 +2325,7 @@ type RSCRenderPayload = {
|
|
|
2299
2325
|
matches: RSCRouteMatch[];
|
|
2300
2326
|
patches?: Promise<RSCRouteManifest[]>;
|
|
2301
2327
|
nonce?: string;
|
|
2302
|
-
formState?:
|
|
2328
|
+
formState?: ReactFormState;
|
|
2303
2329
|
};
|
|
2304
2330
|
type RSCManifestPayload = {
|
|
2305
2331
|
type: "manifest";
|
|
@@ -2325,7 +2351,7 @@ type RSCMatch = {
|
|
|
2325
2351
|
payload: RSCPayload;
|
|
2326
2352
|
};
|
|
2327
2353
|
type DecodeActionFunction = (formData: FormData) => Promise<() => Promise<unknown>>;
|
|
2328
|
-
type DecodeFormStateFunction = (result: unknown, formData: FormData) =>
|
|
2354
|
+
type DecodeFormStateFunction = (result: unknown, formData: FormData) => Promise<ReactFormState | undefined>;
|
|
2329
2355
|
type DecodeReplyFunction = (reply: FormData | string, options: {
|
|
2330
2356
|
temporaryReferences: unknown;
|
|
2331
2357
|
}) => Promise<unknown[]>;
|