react-router 8.0.0 → 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.
Files changed (143) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/development/dom-export.js +1 -1
  3. package/dist/development/index-react-server-client.js +1 -1
  4. package/dist/development/index-react-server.d.ts +32 -7
  5. package/dist/development/index-react-server.js +180 -152
  6. package/dist/development/index.d.ts +2 -3
  7. package/dist/development/index.js +1 -1
  8. package/dist/development/lib/actions.js +1 -1
  9. package/dist/development/lib/components.js +1 -1
  10. package/dist/development/lib/context.js +1 -1
  11. package/dist/development/lib/dom/dom.js +1 -1
  12. package/dist/development/lib/dom/lib.js +2 -2
  13. package/dist/development/lib/dom/server.js +1 -1
  14. package/dist/development/lib/dom/ssr/components.js +1 -1
  15. package/dist/development/lib/dom/ssr/data.js +1 -1
  16. package/dist/development/lib/dom/ssr/errorBoundaries.js +1 -1
  17. package/dist/development/lib/dom/ssr/fallback.js +1 -1
  18. package/dist/development/lib/dom/ssr/fog-of-war.js +1 -1
  19. package/dist/development/lib/dom/ssr/hydration.js +1 -1
  20. package/dist/development/lib/dom/ssr/invariant.js +1 -1
  21. package/dist/development/lib/dom/ssr/links.js +1 -1
  22. package/dist/development/lib/dom/ssr/markup.js +1 -1
  23. package/dist/development/lib/dom/ssr/routeModules.js +1 -1
  24. package/dist/development/lib/dom/ssr/routes-test-stub.js +1 -1
  25. package/dist/development/lib/dom/ssr/routes.js +1 -1
  26. package/dist/development/lib/dom/ssr/server.js +1 -1
  27. package/dist/development/lib/dom/ssr/single-fetch.js +1 -1
  28. package/dist/development/lib/dom-export/dom-router-provider.js +1 -1
  29. package/dist/development/lib/dom-export/hydrated-router.js +1 -1
  30. package/dist/development/lib/errors.js +1 -1
  31. package/dist/development/lib/hooks.js +1 -1
  32. package/dist/development/lib/href.js +1 -1
  33. package/dist/development/lib/router/history.js +1 -1
  34. package/dist/development/lib/router/instrumentation.d.ts +33 -8
  35. package/dist/development/lib/router/instrumentation.js +176 -99
  36. package/dist/development/lib/router/router.js +19 -19
  37. package/dist/development/lib/router/url.js +1 -1
  38. package/dist/development/lib/router/utils.js +17 -2
  39. package/dist/development/lib/rsc/browser.js +3 -4
  40. package/dist/development/lib/rsc/errorBoundaries.js +1 -1
  41. package/dist/development/lib/rsc/html-stream/browser.js +1 -1
  42. package/dist/development/lib/rsc/html-stream/server.js +1 -1
  43. package/dist/development/lib/rsc/route-modules.js +1 -1
  44. package/dist/development/lib/rsc/server.ssr.js +1 -1
  45. package/dist/development/lib/server-runtime/cookies.js +1 -1
  46. package/dist/development/lib/server-runtime/crypto.js +1 -1
  47. package/dist/development/lib/server-runtime/data.js +1 -1
  48. package/dist/development/lib/server-runtime/dev.js +1 -1
  49. package/dist/development/lib/server-runtime/entry.js +1 -1
  50. package/dist/development/lib/server-runtime/errors.js +1 -1
  51. package/dist/development/lib/server-runtime/headers.js +1 -1
  52. package/dist/development/lib/server-runtime/invariant.js +1 -1
  53. package/dist/development/lib/server-runtime/mode.js +1 -1
  54. package/dist/development/lib/server-runtime/routeMatching.js +1 -1
  55. package/dist/development/lib/server-runtime/routes.js +1 -1
  56. package/dist/development/lib/server-runtime/server.js +12 -5
  57. package/dist/development/lib/server-runtime/serverHandoff.js +1 -1
  58. package/dist/development/lib/server-runtime/sessions/cookieStorage.js +1 -1
  59. package/dist/development/lib/server-runtime/sessions/memoryStorage.js +1 -1
  60. package/dist/development/lib/server-runtime/sessions.js +1 -1
  61. package/dist/development/lib/server-runtime/single-fetch.js +1 -1
  62. package/dist/development/lib/server-runtime/urls.js +1 -1
  63. package/dist/development/lib/server-runtime/warnings.js +1 -1
  64. package/dist/development/lib/types/internal.js +1 -1
  65. package/dist/development/vendor/turbo-stream-v2/flatten.js +1 -1
  66. package/dist/development/vendor/turbo-stream-v2/turbo-stream.js +1 -1
  67. package/dist/development/vendor/turbo-stream-v2/unflatten.js +1 -1
  68. package/dist/development/vendor/turbo-stream-v2/utils.js +1 -1
  69. package/dist/production/dom-export.js +1 -1
  70. package/dist/production/index-react-server-client.js +1 -1
  71. package/dist/production/index-react-server.d.ts +32 -7
  72. package/dist/production/index-react-server.js +180 -152
  73. package/dist/production/index.d.ts +2 -3
  74. package/dist/production/index.js +1 -1
  75. package/dist/production/lib/actions.js +1 -1
  76. package/dist/production/lib/components.js +1 -1
  77. package/dist/production/lib/context.js +1 -1
  78. package/dist/production/lib/dom/dom.js +1 -1
  79. package/dist/production/lib/dom/lib.js +2 -2
  80. package/dist/production/lib/dom/server.js +1 -1
  81. package/dist/production/lib/dom/ssr/components.js +1 -1
  82. package/dist/production/lib/dom/ssr/data.js +1 -1
  83. package/dist/production/lib/dom/ssr/errorBoundaries.js +1 -1
  84. package/dist/production/lib/dom/ssr/fallback.js +1 -1
  85. package/dist/production/lib/dom/ssr/fog-of-war.js +1 -1
  86. package/dist/production/lib/dom/ssr/hydration.js +1 -1
  87. package/dist/production/lib/dom/ssr/invariant.js +1 -1
  88. package/dist/production/lib/dom/ssr/links.js +1 -1
  89. package/dist/production/lib/dom/ssr/markup.js +1 -1
  90. package/dist/production/lib/dom/ssr/routeModules.js +1 -1
  91. package/dist/production/lib/dom/ssr/routes-test-stub.js +1 -1
  92. package/dist/production/lib/dom/ssr/routes.js +1 -1
  93. package/dist/production/lib/dom/ssr/server.js +1 -1
  94. package/dist/production/lib/dom/ssr/single-fetch.js +1 -1
  95. package/dist/production/lib/dom-export/dom-router-provider.js +1 -1
  96. package/dist/production/lib/dom-export/hydrated-router.js +1 -1
  97. package/dist/production/lib/errors.js +1 -1
  98. package/dist/production/lib/hooks.js +1 -1
  99. package/dist/production/lib/href.js +1 -1
  100. package/dist/production/lib/router/history.js +1 -1
  101. package/dist/production/lib/router/instrumentation.d.ts +33 -8
  102. package/dist/production/lib/router/instrumentation.js +176 -99
  103. package/dist/production/lib/router/router.js +19 -19
  104. package/dist/production/lib/router/url.js +1 -1
  105. package/dist/production/lib/router/utils.js +17 -2
  106. package/dist/production/lib/rsc/browser.js +3 -4
  107. package/dist/production/lib/rsc/errorBoundaries.js +1 -1
  108. package/dist/production/lib/rsc/html-stream/browser.js +1 -1
  109. package/dist/production/lib/rsc/html-stream/server.js +1 -1
  110. package/dist/production/lib/rsc/route-modules.js +1 -1
  111. package/dist/production/lib/rsc/server.ssr.js +1 -1
  112. package/dist/production/lib/server-runtime/cookies.js +1 -1
  113. package/dist/production/lib/server-runtime/crypto.js +1 -1
  114. package/dist/production/lib/server-runtime/data.js +1 -1
  115. package/dist/production/lib/server-runtime/dev.js +1 -1
  116. package/dist/production/lib/server-runtime/entry.js +1 -1
  117. package/dist/production/lib/server-runtime/errors.js +1 -1
  118. package/dist/production/lib/server-runtime/headers.js +1 -1
  119. package/dist/production/lib/server-runtime/invariant.js +1 -1
  120. package/dist/production/lib/server-runtime/mode.js +1 -1
  121. package/dist/production/lib/server-runtime/routeMatching.js +1 -1
  122. package/dist/production/lib/server-runtime/routes.js +1 -1
  123. package/dist/production/lib/server-runtime/server.js +12 -5
  124. package/dist/production/lib/server-runtime/serverHandoff.js +1 -1
  125. package/dist/production/lib/server-runtime/sessions/cookieStorage.js +1 -1
  126. package/dist/production/lib/server-runtime/sessions/memoryStorage.js +1 -1
  127. package/dist/production/lib/server-runtime/sessions.js +1 -1
  128. package/dist/production/lib/server-runtime/single-fetch.js +1 -1
  129. package/dist/production/lib/server-runtime/urls.js +1 -1
  130. package/dist/production/lib/server-runtime/warnings.js +1 -1
  131. package/dist/production/lib/types/internal.js +1 -1
  132. package/dist/production/vendor/turbo-stream-v2/flatten.js +1 -1
  133. package/dist/production/vendor/turbo-stream-v2/turbo-stream.js +1 -1
  134. package/dist/production/vendor/turbo-stream-v2/unflatten.js +1 -1
  135. package/dist/production/vendor/turbo-stream-v2/utils.js +1 -1
  136. package/docs/how-to/instrumentation.md +131 -26
  137. package/docs/how-to/middleware.md +1 -1
  138. package/docs/how-to/route-module-type-safety.md +1 -16
  139. package/docs/upgrading/component-routes.md +1 -1
  140. package/docs/upgrading/router-provider.md +1 -1
  141. package/package.json +1 -1
  142. package/dist/development/lib/server-runtime/data.d.ts +0 -13
  143. package/dist/production/lib/server-runtime/data.d.ts +0 -13
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -252,11 +252,10 @@ function getRSCSingleFetchDataStrategy(getRouter, ssr, createFromReadableStream,
252
252
  return M.route.hasComponent && !M.route.element;
253
253
  });
254
254
  return async (args) => args.runClientMiddleware(async () => {
255
- let context = args.context;
256
- context.set(renderedRoutesContext, []);
255
+ args.context.set(renderedRoutesContext, []);
257
256
  let results = await dataStrategy(args);
258
257
  const renderedRoutesById = /* @__PURE__ */ new Map();
259
- for (const route of context.get(renderedRoutesContext)) {
258
+ for (const route of args.context.get(renderedRoutesContext)) {
260
259
  if (!renderedRoutesById.has(route.id)) renderedRoutesById.set(route.id, []);
261
260
  renderedRoutesById.get(route.id).push(route);
262
261
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.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 normalizedPathname = getNormalizedPath(request).pathname;
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 (build.entry.module.instrumentations) requestHandler = instrumentHandler(requestHandler, build.entry.module.instrumentations.map((i) => i.handler).filter(Boolean));
132
+ if (requestHandlerInstrumentations?.length) requestHandler = instrumentHandler(requestHandler, requestHandlerInstrumentations);
126
133
  return {
127
134
  serverMode,
128
135
  staticHandler,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v8.0.0
2
+ * react-router v8.1.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -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
- type InstrumentFunction<T> = (handler: () => Promise<InstrumentationHandlerResult>, info: T) => Promise<void>;
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;