react-router 8.0.1 → 8.1.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 +8 -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 +32 -7
- package/dist/development/index-react-server.js +180 -152
- 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.js +1 -1
- package/dist/development/lib/href.js +1 -1
- 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 +19 -19
- package/dist/development/lib/router/url.js +1 -1
- package/dist/development/lib/router/utils.js +17 -2
- 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.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 +32 -7
- package/dist/production/index-react-server.js +180 -152
- 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.js +1 -1
- package/dist/production/lib/href.js +1 -1
- 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 +19 -19
- package/dist/production/lib/router/url.js +1 -1
- package/dist/production/lib/router/utils.js +17 -2
- 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.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/how-to/instrumentation.md +131 -26
- package/docs/upgrading/component-routes.md +1 -1
- package/docs/upgrading/router-provider.md +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* react-router v8.0
|
|
2
|
+
* react-router v8.1.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,
|
|
@@ -1009,6 +1009,19 @@ type ClientInstrumentation = {
|
|
|
1009
1009
|
type InstrumentRequestHandlerFunction = (handler: InstrumentableRequestHandler) => void;
|
|
1010
1010
|
type InstrumentRouterFunction = (router: InstrumentableRouter) => void;
|
|
1011
1011
|
type InstrumentRouteFunction = (route: InstrumentableRoute) => void;
|
|
1012
|
+
/**
|
|
1013
|
+
* Route metadata available after React Router has matched an instrumented
|
|
1014
|
+
* request, navigation, or fetcher call.
|
|
1015
|
+
*/
|
|
1016
|
+
type InstrumentationResultMeta = {
|
|
1017
|
+
url: LoaderFunctionArgs["url"];
|
|
1018
|
+
pattern: string;
|
|
1019
|
+
params: LoaderFunctionArgs["params"];
|
|
1020
|
+
};
|
|
1021
|
+
/**
|
|
1022
|
+
* Result returned by route-level instrumented handler calls, such as
|
|
1023
|
+
* instrumented loaders, actions, middleware, and lazy route functions.
|
|
1024
|
+
*/
|
|
1012
1025
|
type InstrumentationHandlerResult = {
|
|
1013
1026
|
status: "success";
|
|
1014
1027
|
error: undefined;
|
|
@@ -1016,7 +1029,21 @@ type InstrumentationHandlerResult = {
|
|
|
1016
1029
|
status: "error";
|
|
1017
1030
|
error: Error;
|
|
1018
1031
|
};
|
|
1019
|
-
|
|
1032
|
+
/**
|
|
1033
|
+
* Result returned by client-side router instrumented navigation and fetcher
|
|
1034
|
+
* calls.
|
|
1035
|
+
*/
|
|
1036
|
+
type InstrumentationClientRouterResult = InstrumentationHandlerResult & {
|
|
1037
|
+
meta: InstrumentationResultMeta | undefined;
|
|
1038
|
+
};
|
|
1039
|
+
/**
|
|
1040
|
+
* Result returned by server request handler instrumentation.
|
|
1041
|
+
*/
|
|
1042
|
+
type InstrumentationServerHandlerResult = InstrumentationHandlerResult & {
|
|
1043
|
+
statusCode: number;
|
|
1044
|
+
meta: InstrumentationResultMeta | undefined;
|
|
1045
|
+
};
|
|
1046
|
+
type InstrumentFunction<T, TInnerResult = InstrumentationHandlerResult> = (handler: () => Promise<TInnerResult>, info: T) => Promise<void>;
|
|
1020
1047
|
type ReadonlyRequest = {
|
|
1021
1048
|
method: string;
|
|
1022
1049
|
url: string;
|
|
@@ -1039,18 +1066,16 @@ type RouteInstrumentations = {
|
|
|
1039
1066
|
action?: InstrumentFunction<RouteHandlerInstrumentationInfo>;
|
|
1040
1067
|
};
|
|
1041
1068
|
type RouteLazyInstrumentationInfo = undefined;
|
|
1042
|
-
type RouteHandlerInstrumentationInfo = Readonly<{
|
|
1069
|
+
type RouteHandlerInstrumentationInfo = Readonly<Omit<LoaderFunctionArgs, "request" | "context"> & {
|
|
1043
1070
|
request: ReadonlyRequest;
|
|
1044
|
-
params: LoaderFunctionArgs["params"];
|
|
1045
|
-
pattern: string;
|
|
1046
1071
|
context: ReadonlyContext;
|
|
1047
1072
|
}>;
|
|
1048
1073
|
type InstrumentableRouter = {
|
|
1049
1074
|
instrument(instrumentations: RouterInstrumentations): void;
|
|
1050
1075
|
};
|
|
1051
1076
|
type RouterInstrumentations = {
|
|
1052
|
-
navigate?: InstrumentFunction<RouterNavigationInstrumentationInfo>;
|
|
1053
|
-
fetch?: InstrumentFunction<RouterFetchInstrumentationInfo>;
|
|
1077
|
+
navigate?: InstrumentFunction<RouterNavigationInstrumentationInfo, InstrumentationClientRouterResult>;
|
|
1078
|
+
fetch?: InstrumentFunction<RouterFetchInstrumentationInfo, InstrumentationClientRouterResult>;
|
|
1054
1079
|
};
|
|
1055
1080
|
type RouterNavigationInstrumentationInfo = Readonly<{
|
|
1056
1081
|
to: string | number;
|
|
@@ -1073,7 +1098,7 @@ type InstrumentableRequestHandler = {
|
|
|
1073
1098
|
instrument(instrumentations: RequestHandlerInstrumentations): void;
|
|
1074
1099
|
};
|
|
1075
1100
|
type RequestHandlerInstrumentations = {
|
|
1076
|
-
request?: InstrumentFunction<RequestHandlerInstrumentationInfo>;
|
|
1101
|
+
request?: InstrumentFunction<RequestHandlerInstrumentationInfo, InstrumentationServerHandlerResult>;
|
|
1077
1102
|
};
|
|
1078
1103
|
type RequestHandlerInstrumentationInfo = Readonly<{
|
|
1079
1104
|
request: ReadonlyRequest;
|