react-router 7.8.1 → 7.8.2-pre.1

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 (62) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/development/{chunk-IFMMFE4R.mjs → chunk-7QFLQWWN.mjs} +34 -75
  3. package/dist/{production/chunk-YMYXECPK.js → development/chunk-IVOVRAK2.js} +210 -169
  4. package/dist/development/{chunk-UH6JLGW7.mjs → chunk-ZVD2KUIM.mjs} +187 -204
  5. package/dist/development/{chunk-TGXCWGPT.js → chunk-ZVMYUFGA.js} +125 -183
  6. package/dist/development/{context-DohQKLID.d.mts → context-jKip1TFB.d.mts} +846 -8
  7. package/dist/development/dom-export.d.mts +20 -2
  8. package/dist/development/dom-export.d.ts +20 -1
  9. package/dist/development/dom-export.js +10 -4
  10. package/dist/development/dom-export.mjs +10 -4
  11. package/dist/{production/index-react-server-client-BQ6FxdA_.d.ts → development/index-react-server-client-BKpa2trA.d.ts} +6 -816
  12. package/dist/{production/index-react-server-client-11fLy3qB.d.mts → development/index-react-server-client-DRhjXpk2.d.mts} +2 -3
  13. package/dist/development/index-react-server-client.d.mts +3 -4
  14. package/dist/development/index-react-server-client.d.ts +2 -2
  15. package/dist/development/index-react-server-client.js +4 -4
  16. package/dist/development/index-react-server-client.mjs +2 -2
  17. package/dist/development/index-react-server.d.mts +4 -3
  18. package/dist/development/index-react-server.d.ts +4 -3
  19. package/dist/development/index-react-server.js +62 -53
  20. package/dist/development/index-react-server.mjs +62 -53
  21. package/dist/development/index.d.mts +7 -9
  22. package/dist/development/index.d.ts +5 -5
  23. package/dist/development/index.js +122 -163
  24. package/dist/development/index.mjs +3 -3
  25. package/dist/development/lib/types/internal.d.mts +3 -3
  26. package/dist/development/lib/types/internal.d.ts +2 -2
  27. package/dist/development/lib/types/internal.js +1 -1
  28. package/dist/development/lib/types/internal.mjs +1 -1
  29. package/dist/development/{route-data-CNjObrhZ.d.mts → route-data-DAVP2QQ0.d.mts} +3 -3
  30. package/dist/development/{routeModules-C3oqzPpI.d.ts → routeModules-rOzWJJ9x.d.ts} +848 -10
  31. package/dist/production/{chunk-KHPQXKYM.js → chunk-5WPGWA23.js} +125 -183
  32. package/dist/{development/chunk-IIA3TUI2.js → production/chunk-IK7IYG3O.js} +210 -169
  33. package/dist/production/{chunk-5Y7ELDIJ.mjs → chunk-LR4OTIMG.mjs} +34 -75
  34. package/dist/production/{chunk-PFDCNQUK.mjs → chunk-VHBXOG2Z.mjs} +187 -204
  35. package/dist/production/{context-DohQKLID.d.mts → context-jKip1TFB.d.mts} +846 -8
  36. package/dist/production/dom-export.d.mts +20 -2
  37. package/dist/production/dom-export.d.ts +20 -1
  38. package/dist/production/dom-export.js +10 -4
  39. package/dist/production/dom-export.mjs +10 -4
  40. package/dist/{development/index-react-server-client-BQ6FxdA_.d.ts → production/index-react-server-client-BKpa2trA.d.ts} +6 -816
  41. package/dist/{development/index-react-server-client-11fLy3qB.d.mts → production/index-react-server-client-DRhjXpk2.d.mts} +2 -3
  42. package/dist/production/index-react-server-client.d.mts +3 -4
  43. package/dist/production/index-react-server-client.d.ts +2 -2
  44. package/dist/production/index-react-server-client.js +4 -4
  45. package/dist/production/index-react-server-client.mjs +2 -2
  46. package/dist/production/index-react-server.d.mts +4 -3
  47. package/dist/production/index-react-server.d.ts +4 -3
  48. package/dist/production/index-react-server.js +62 -53
  49. package/dist/production/index-react-server.mjs +62 -53
  50. package/dist/production/index.d.mts +7 -9
  51. package/dist/production/index.d.ts +5 -5
  52. package/dist/production/index.js +122 -163
  53. package/dist/production/index.mjs +3 -3
  54. package/dist/production/lib/types/internal.d.mts +3 -3
  55. package/dist/production/lib/types/internal.d.ts +2 -2
  56. package/dist/production/lib/types/internal.js +1 -1
  57. package/dist/production/lib/types/internal.mjs +1 -1
  58. package/dist/production/{route-data-CNjObrhZ.d.mts → route-data-DAVP2QQ0.d.mts} +3 -3
  59. package/dist/production/{routeModules-C3oqzPpI.d.ts → routeModules-rOzWJJ9x.d.ts} +848 -10
  60. package/package.json +1 -1
  61. package/dist/development/components-CuPfnyiZ.d.mts +0 -814
  62. package/dist/production/components-CuPfnyiZ.d.mts +0 -814
@@ -1,7 +1,6 @@
1
- import './components-CuPfnyiZ.mjs';
1
+ import { b6 as RouteManifest, M as MiddlewareEnabled, h as unstable_RouterContextProvider, c as LoaderFunctionArgs, A as ActionFunctionArgs, O as StaticHandlerContext, H as HydrationState, F as DataRouteObject, a3 as HTMLFormMethod, a1 as FormEncType, m as RelativeRoutingType, T as To, b7 as History, K as GetScrollRestorationKeyFunction, a as RouterInit, b8 as FutureConfig$1, k as DataStrategyFunction, C as PatchRoutesOnNavigationFunction, N as NavigateOptions, Q as Fetcher, t as RouteObject, j as Router, B as BlockerFunction, L as Location, b9 as CreateStaticHandlerOptions$1, G as StaticHandler } from './context-jKip1TFB.mjs';
2
2
  import * as React from 'react';
3
- import { az as RouteManifest, M as MiddlewareEnabled, o as unstable_RouterContextProvider, j as LoaderFunctionArgs, i as ActionFunctionArgs, J as StaticHandlerContext, H as HydrationState, z as DataRouteObject, a2 as HTMLFormMethod, a0 as FormEncType, a as RelativeRoutingType, T as To, aA as History, E as GetScrollRestorationKeyFunction, e as RouterInit, F as FutureConfig$1, D as DataStrategyFunction, P as PatchRoutesOnNavigationFunction, q as NavigateOptions, K as Fetcher, f as RouteObject, R as Router, B as BlockerFunction, c as Location, aB as CreateStaticHandlerOptions$1, C as StaticHandler } from './context-DohQKLID.mjs';
4
- import { o as ServerRouteModule, A as AppLoadContext, c as RouteModules, h as ClientLoaderFunction, m as PageLinkDescriptor, d as SerializeFrom } from './route-data-CNjObrhZ.mjs';
3
+ import { o as ServerRouteModule, A as AppLoadContext, c as RouteModules, h as ClientLoaderFunction, m as PageLinkDescriptor, d as SerializeFrom } from './route-data-DAVP2QQ0.mjs';
5
4
 
6
5
  type ServerRouteManifest = RouteManifest<Omit<ServerRoute, "children">>;
7
6
  interface ServerRoute extends Route {
@@ -1,5 +1,4 @@
1
- export { f as Await, g as MemoryRouter, h as Navigate, i as Outlet, j as Route, k as Router, l as RouterProvider, m as Routes, W as UNSAFE_WithComponentProps, v as UNSAFE_WithErrorBoundaryProps, t as UNSAFE_WithHydrateFallbackProps } from './components-CuPfnyiZ.mjs';
2
- export { l as BrowserRouter, q as Form, m as HashRouter, n as Link, X as Links, W as Meta, p as NavLink, r as ScrollRestoration, T as StaticRouter, V as StaticRouterProvider, o as unstable_HistoryRouter } from './index-react-server-client-11fLy3qB.mjs';
3
- import './context-DohQKLID.mjs';
1
+ export { aC as Await, aD as MemoryRouter, aE as Navigate, aF as Outlet, aG as Route, aH as Router, aI as RouterProvider, aJ as Routes, b0 as UNSAFE_WithComponentProps, b4 as UNSAFE_WithErrorBoundaryProps, b2 as UNSAFE_WithHydrateFallbackProps } from './context-jKip1TFB.mjs';
2
+ export { l as BrowserRouter, q as Form, m as HashRouter, n as Link, X as Links, W as Meta, p as NavLink, r as ScrollRestoration, T as StaticRouter, V as StaticRouterProvider, o as unstable_HistoryRouter } from './index-react-server-client-DRhjXpk2.mjs';
4
3
  import 'react';
5
- import './route-data-CNjObrhZ.mjs';
4
+ import './route-data-DAVP2QQ0.mjs';
@@ -1,3 +1,3 @@
1
- export { h as Await, V as BrowserRouter, _ as Form, W as HashRouter, X as Link, am as Links, i as MemoryRouter, al as Meta, Z as NavLink, j as Navigate, k as Outlet, l as Route, m as Router, n as RouterProvider, o as Routes, $ as ScrollRestoration, aj as StaticRouter, ak as StaticRouterProvider, az as UNSAFE_WithComponentProps, aD as UNSAFE_WithErrorBoundaryProps, aB as UNSAFE_WithHydrateFallbackProps, Y as unstable_HistoryRouter } from './index-react-server-client-BQ6FxdA_.js';
2
- import './routeModules-C3oqzPpI.js';
1
+ export { aW as Await, aX as MemoryRouter, aY as Navigate, aZ as Outlet, a_ as Route, a$ as Router, b0 as RouterProvider, b1 as Routes, br as UNSAFE_WithComponentProps, bv as UNSAFE_WithErrorBoundaryProps, bt as UNSAFE_WithHydrateFallbackProps } from './routeModules-rOzWJJ9x.js';
2
+ export { l as BrowserRouter, q as Form, m as HashRouter, n as Link, X as Links, W as Meta, p as NavLink, r as ScrollRestoration, T as StaticRouter, V as StaticRouterProvider, o as unstable_HistoryRouter } from './index-react-server-client-BKpa2trA.js';
3
3
  import 'react';
@@ -1,5 +1,5 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});/**
2
- * react-router v7.8.1
2
+ * react-router v7.8.2-pre.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -30,11 +30,11 @@
30
30
 
31
31
 
32
32
 
33
- var _chunkIIA3TUI2js = require('./chunk-IIA3TUI2.js');
33
+ var _chunkIVOVRAK2js = require('./chunk-IVOVRAK2.js');
34
34
 
35
35
 
36
36
 
37
- var _chunkTGXCWGPTjs = require('./chunk-TGXCWGPT.js');
37
+ var _chunkZVMYUFGAjs = require('./chunk-ZVMYUFGA.js');
38
38
 
39
39
 
40
40
 
@@ -58,4 +58,4 @@ var _chunkTGXCWGPTjs = require('./chunk-TGXCWGPT.js');
58
58
 
59
59
 
60
60
 
61
- exports.Await = _chunkIIA3TUI2js.Await; exports.BrowserRouter = _chunkIIA3TUI2js.BrowserRouter; exports.Form = _chunkIIA3TUI2js.Form; exports.HashRouter = _chunkIIA3TUI2js.HashRouter; exports.Link = _chunkIIA3TUI2js.Link; exports.Links = _chunkTGXCWGPTjs.Links; exports.MemoryRouter = _chunkIIA3TUI2js.MemoryRouter; exports.Meta = _chunkTGXCWGPTjs.Meta; exports.NavLink = _chunkIIA3TUI2js.NavLink; exports.Navigate = _chunkIIA3TUI2js.Navigate; exports.Outlet = _chunkIIA3TUI2js.Outlet; exports.Route = _chunkIIA3TUI2js.Route; exports.Router = _chunkIIA3TUI2js.Router; exports.RouterProvider = _chunkIIA3TUI2js.RouterProvider; exports.Routes = _chunkIIA3TUI2js.Routes; exports.ScrollRestoration = _chunkIIA3TUI2js.ScrollRestoration; exports.StaticRouter = _chunkIIA3TUI2js.StaticRouter; exports.StaticRouterProvider = _chunkIIA3TUI2js.StaticRouterProvider; exports.UNSAFE_WithComponentProps = _chunkIIA3TUI2js.WithComponentProps; exports.UNSAFE_WithErrorBoundaryProps = _chunkIIA3TUI2js.WithErrorBoundaryProps; exports.UNSAFE_WithHydrateFallbackProps = _chunkIIA3TUI2js.WithHydrateFallbackProps; exports.unstable_HistoryRouter = _chunkIIA3TUI2js.HistoryRouter;
61
+ exports.Await = _chunkIVOVRAK2js.Await; exports.BrowserRouter = _chunkIVOVRAK2js.BrowserRouter; exports.Form = _chunkIVOVRAK2js.Form; exports.HashRouter = _chunkIVOVRAK2js.HashRouter; exports.Link = _chunkIVOVRAK2js.Link; exports.Links = _chunkZVMYUFGAjs.Links; exports.MemoryRouter = _chunkIVOVRAK2js.MemoryRouter; exports.Meta = _chunkZVMYUFGAjs.Meta; exports.NavLink = _chunkIVOVRAK2js.NavLink; exports.Navigate = _chunkIVOVRAK2js.Navigate; exports.Outlet = _chunkIVOVRAK2js.Outlet; exports.Route = _chunkIVOVRAK2js.Route; exports.Router = _chunkIVOVRAK2js.Router; exports.RouterProvider = _chunkIVOVRAK2js.RouterProvider; exports.Routes = _chunkIVOVRAK2js.Routes; exports.ScrollRestoration = _chunkIVOVRAK2js.ScrollRestoration; exports.StaticRouter = _chunkIVOVRAK2js.StaticRouter; exports.StaticRouterProvider = _chunkIVOVRAK2js.StaticRouterProvider; exports.UNSAFE_WithComponentProps = _chunkIVOVRAK2js.WithComponentProps; exports.UNSAFE_WithErrorBoundaryProps = _chunkIVOVRAK2js.WithErrorBoundaryProps; exports.UNSAFE_WithHydrateFallbackProps = _chunkIVOVRAK2js.WithHydrateFallbackProps; exports.unstable_HistoryRouter = _chunkIVOVRAK2js.HistoryRouter;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.8.1
2
+ * react-router v7.8.2-pre.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -32,7 +32,7 @@ import {
32
32
  WithComponentProps,
33
33
  WithErrorBoundaryProps,
34
34
  WithHydrateFallbackProps
35
- } from "./chunk-UH6JLGW7.mjs";
35
+ } from "./chunk-ZVD2KUIM.mjs";
36
36
  export {
37
37
  Await,
38
38
  BrowserRouter,
@@ -1152,7 +1152,6 @@ type HydrationState = Partial<Pick<RouterState, "loaderData" | "actionData" | "e
1152
1152
  * Future flags to toggle new feature behavior
1153
1153
  */
1154
1154
  interface FutureConfig {
1155
- unstable_middleware: boolean;
1156
1155
  }
1157
1156
  /**
1158
1157
  * Initialization options for createRouter
@@ -1196,7 +1195,9 @@ interface StaticHandler {
1196
1195
  skipLoaderErrorBubbling?: boolean;
1197
1196
  skipRevalidation?: boolean;
1198
1197
  dataStrategy?: DataStrategyFunction<unknown>;
1199
- unstable_generateMiddlewareResponse?: (query: (r: Request) => Promise<StaticHandlerContext | Response>) => MaybePromise<Response>;
1198
+ unstable_generateMiddlewareResponse?: (query: (r: Request, args?: {
1199
+ filterMatchesToLoad?: (match: AgnosticDataRouteMatch) => boolean;
1200
+ }) => Promise<StaticHandlerContext | Response>) => MaybePromise<Response>;
1200
1201
  }): Promise<StaticHandlerContext | Response>;
1201
1202
  queryRoute(request: Request, opts?: {
1202
1203
  routeId?: string;
@@ -1608,7 +1609,7 @@ type unstable_SerializesTo<T> = {
1608
1609
  unstable__ReactRouter_SerializesTo: [T];
1609
1610
  };
1610
1611
 
1611
- type Serialize<T> = T extends unstable_SerializesTo<infer To> ? To : T extends Serializable ? T : T extends (...args: any[]) => unknown ? undefined : T extends Promise<infer U> ? Promise<Serialize<U>> : T extends Map<infer K, infer V> ? Map<Serialize<K>, Serialize<V>> : T extends Set<infer U> ? Set<Serialize<U>> : T extends [] ? [] : T extends readonly [infer F, ...infer R] ? [Serialize<F>, ...Serialize<R>] : T extends Array<infer U> ? Array<Serialize<U>> : T extends readonly unknown[] ? readonly Serialize<T[number]>[] : T extends Record<any, any> ? {
1612
+ type Serialize<T> = T extends unstable_SerializesTo<infer To> ? To : T extends Serializable ? T : T extends (...args: any[]) => unknown ? undefined : T extends Promise<infer U> ? Promise<Serialize<U>> : T extends Map<infer K, infer V> ? Map<Serialize<K>, Serialize<V>> : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<Serialize<K>, Serialize<V>> : T extends Set<infer U> ? Set<Serialize<U>> : T extends ReadonlySet<infer U> ? ReadonlySet<Serialize<U>> : T extends [] ? [] : T extends readonly [infer F, ...infer R] ? [Serialize<F>, ...Serialize<R>] : T extends Array<infer U> ? Array<Serialize<U>> : T extends readonly unknown[] ? readonly Serialize<T[number]>[] : T extends Record<any, any> ? {
1612
1613
  [K in keyof T]: Serialize<T[K]>;
1613
1614
  } : undefined;
1614
1615
  type VoidToUndefined<T> = Equal<T, void> extends true ? undefined : T;
@@ -1152,7 +1152,6 @@ type HydrationState = Partial<Pick<RouterState, "loaderData" | "actionData" | "e
1152
1152
  * Future flags to toggle new feature behavior
1153
1153
  */
1154
1154
  interface FutureConfig {
1155
- unstable_middleware: boolean;
1156
1155
  }
1157
1156
  /**
1158
1157
  * Initialization options for createRouter
@@ -1196,7 +1195,9 @@ interface StaticHandler {
1196
1195
  skipLoaderErrorBubbling?: boolean;
1197
1196
  skipRevalidation?: boolean;
1198
1197
  dataStrategy?: DataStrategyFunction<unknown>;
1199
- unstable_generateMiddlewareResponse?: (query: (r: Request) => Promise<StaticHandlerContext | Response>) => MaybePromise<Response>;
1198
+ unstable_generateMiddlewareResponse?: (query: (r: Request, args?: {
1199
+ filterMatchesToLoad?: (match: AgnosticDataRouteMatch) => boolean;
1200
+ }) => Promise<StaticHandlerContext | Response>) => MaybePromise<Response>;
1200
1201
  }): Promise<StaticHandlerContext | Response>;
1201
1202
  queryRoute(request: Request, opts?: {
1202
1203
  routeId?: string;
@@ -1608,7 +1609,7 @@ type unstable_SerializesTo<T> = {
1608
1609
  unstable__ReactRouter_SerializesTo: [T];
1609
1610
  };
1610
1611
 
1611
- type Serialize<T> = T extends unstable_SerializesTo<infer To> ? To : T extends Serializable ? T : T extends (...args: any[]) => unknown ? undefined : T extends Promise<infer U> ? Promise<Serialize<U>> : T extends Map<infer K, infer V> ? Map<Serialize<K>, Serialize<V>> : T extends Set<infer U> ? Set<Serialize<U>> : T extends [] ? [] : T extends readonly [infer F, ...infer R] ? [Serialize<F>, ...Serialize<R>] : T extends Array<infer U> ? Array<Serialize<U>> : T extends readonly unknown[] ? readonly Serialize<T[number]>[] : T extends Record<any, any> ? {
1612
+ type Serialize<T> = T extends unstable_SerializesTo<infer To> ? To : T extends Serializable ? T : T extends (...args: any[]) => unknown ? undefined : T extends Promise<infer U> ? Promise<Serialize<U>> : T extends Map<infer K, infer V> ? Map<Serialize<K>, Serialize<V>> : T extends ReadonlyMap<infer K, infer V> ? ReadonlyMap<Serialize<K>, Serialize<V>> : T extends Set<infer U> ? Set<Serialize<U>> : T extends ReadonlySet<infer U> ? ReadonlySet<Serialize<U>> : T extends [] ? [] : T extends readonly [infer F, ...infer R] ? [Serialize<F>, ...Serialize<R>] : T extends Array<infer U> ? Array<Serialize<U>> : T extends readonly unknown[] ? readonly Serialize<T[number]>[] : T extends Record<any, any> ? {
1612
1613
  [K in keyof T]: Serialize<T[K]>;
1613
1614
  } : undefined;
1614
1615
  type VoidToUndefined<T> = Equal<T, void> extends true ? undefined : T;
@@ -27,7 +27,7 @@ function _interopNamespace(e) {
27
27
  var React2__namespace = /*#__PURE__*/_interopNamespace(React2);
28
28
 
29
29
  /**
30
- * react-router v7.8.1
30
+ * react-router v7.8.2-pre.1
31
31
  *
32
32
  * Copyright (c) Remix Software Inc.
33
33
  *
@@ -760,7 +760,7 @@ function createStaticHandler(routes, opts) {
760
760
  },
761
761
  async () => {
762
762
  let res = await generateMiddlewareResponse(
763
- async (revalidationRequest) => {
763
+ async (revalidationRequest, opts2 = {}) => {
764
764
  let result2 = await queryImpl(
765
765
  revalidationRequest,
766
766
  location,
@@ -769,7 +769,7 @@ function createStaticHandler(routes, opts) {
769
769
  dataStrategy || null,
770
770
  skipLoaderErrorBubbling === true,
771
771
  null,
772
- filterMatchesToLoad || null,
772
+ "filterMatchesToLoad" in opts2 ? opts2.filterMatchesToLoad ?? null : null,
773
773
  skipRevalidation === true
774
774
  );
775
775
  if (isResponse(result2)) {
@@ -1513,31 +1513,37 @@ async function defaultDataStrategy(args) {
1513
1513
  });
1514
1514
  return keyedResults;
1515
1515
  }
1516
- async function runServerMiddlewarePipeline(args, handler, errorHandler) {
1516
+ function runServerMiddlewarePipeline(args, handler, errorHandler) {
1517
+ return runMiddlewarePipeline(
1518
+ args,
1519
+ handler,
1520
+ processResult,
1521
+ isResponse,
1522
+ errorHandler
1523
+ );
1524
+ function processResult(result) {
1525
+ return isDataWithResponseInit(result) ? dataWithResponseInitToResponse(result) : result;
1526
+ }
1527
+ }
1528
+ async function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {
1517
1529
  let { matches, request, params, context } = args;
1518
1530
  let tuples = matches.flatMap(
1519
1531
  (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
1520
1532
  );
1521
- let result = await callServerRouteMiddleware(
1533
+ let result = await callRouteMiddleware(
1522
1534
  { request, params, context },
1523
1535
  tuples,
1524
1536
  handler,
1537
+ processResult,
1538
+ isResult,
1525
1539
  errorHandler
1526
1540
  );
1527
- if (isResponse(result)) {
1528
- return result;
1529
- }
1530
- invariant(false, `Expected a Response to be returned from route middleware`);
1541
+ return result;
1531
1542
  }
1532
- async function callServerRouteMiddleware(args, middlewares, handler, errorHandler, idx = 0) {
1543
+ async function callRouteMiddleware(args, middlewares, handler, processResult, isResult, errorHandler, idx = 0) {
1533
1544
  let { request } = args;
1534
1545
  if (request.signal.aborted) {
1535
- if (request.signal.reason) {
1536
- throw request.signal.reason;
1537
- }
1538
- throw new Error(
1539
- `Request aborted without an \`AbortSignal.reason\`: ${request.method} ${request.url}`
1540
- );
1546
+ throw request.signal.reason ?? new Error(`Request aborted: ${request.method} ${request.url}`);
1541
1547
  }
1542
1548
  let tuple = middlewares[idx];
1543
1549
  if (!tuple) {
@@ -1545,53 +1551,41 @@ async function callServerRouteMiddleware(args, middlewares, handler, errorHandle
1545
1551
  return result;
1546
1552
  }
1547
1553
  let [routeId, middleware] = tuple;
1548
- let nextCalled = false;
1549
- let nextResult = void 0;
1554
+ let nextResult;
1550
1555
  let next = async () => {
1551
- if (nextCalled) {
1556
+ if (nextResult) {
1552
1557
  throw new Error("You may only call `next()` once per middleware");
1553
1558
  }
1554
- nextCalled = true;
1555
1559
  try {
1556
- let result = await callServerRouteMiddleware(
1560
+ let result = await callRouteMiddleware(
1557
1561
  args,
1558
1562
  middlewares,
1559
1563
  handler,
1564
+ processResult,
1565
+ isResult,
1560
1566
  errorHandler,
1561
1567
  idx + 1
1562
1568
  );
1563
- if (isDataWithResponseInit(result)) {
1564
- result = dataWithResponseInitToResponse(result);
1565
- }
1566
- nextResult = result;
1567
- return nextResult;
1568
- } catch (e) {
1569
- nextResult = await errorHandler(e, routeId);
1570
- return nextResult;
1569
+ nextResult = { value: result };
1570
+ return nextResult.value;
1571
+ } catch (error) {
1572
+ nextResult = { value: await errorHandler(error, routeId, nextResult) };
1573
+ return nextResult.value;
1571
1574
  }
1572
1575
  };
1573
1576
  try {
1574
- let result = await middleware(
1575
- {
1576
- request: args.request,
1577
- params: args.params,
1578
- context: args.context
1579
- },
1580
- next
1581
- );
1582
- if (isDataWithResponseInit(result)) {
1583
- result = dataWithResponseInitToResponse(result);
1584
- }
1585
- if (nextCalled) {
1586
- return typeof result === "undefined" ? nextResult : result;
1587
- } else if (isResponse(result)) {
1577
+ let value = await middleware(args, next);
1578
+ let result = value != null ? processResult(value) : void 0;
1579
+ if (isResult(result)) {
1588
1580
  return result;
1581
+ } else if (nextResult) {
1582
+ return result ?? nextResult.value;
1589
1583
  } else {
1590
- nextResult = await next();
1591
- return nextResult;
1584
+ nextResult = { value: await next() };
1585
+ return nextResult.value;
1592
1586
  }
1593
- } catch (e) {
1594
- let response = await errorHandler(e, routeId);
1587
+ } catch (error) {
1588
+ let response = await errorHandler(error, routeId, nextResult);
1595
1589
  return response;
1596
1590
  }
1597
1591
  }
@@ -2339,9 +2333,13 @@ async function processServerAction(request, basename, decodeReply, loadServerAct
2339
2333
  }
2340
2334
  onError?.(error);
2341
2335
  }
2336
+ let maybeFormData = actionArgs.length === 1 ? actionArgs[0] : actionArgs[1];
2337
+ let formData = maybeFormData && typeof maybeFormData === "object" && maybeFormData instanceof FormData ? maybeFormData : null;
2338
+ let skipRevalidation = formData?.has("$SKIP_REVALIDATION") ?? false;
2342
2339
  return {
2343
2340
  actionResult,
2344
- revalidationRequest: getRevalidationRequest()
2341
+ revalidationRequest: getRevalidationRequest(),
2342
+ skipRevalidation
2345
2343
  };
2346
2344
  } else if (isFormRequest) {
2347
2345
  const formData = await request.clone().formData();
@@ -2370,7 +2368,8 @@ async function processServerAction(request, basename, decodeReply, loadServerAct
2370
2368
  }
2371
2369
  return {
2372
2370
  formState,
2373
- revalidationRequest: getRevalidationRequest()
2371
+ revalidationRequest: getRevalidationRequest(),
2372
+ skipRevalidation: false
2374
2373
  };
2375
2374
  }
2376
2375
  }
@@ -2444,9 +2443,12 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2444
2443
  requestContext,
2445
2444
  skipLoaderErrorBubbling: isDataRequest,
2446
2445
  skipRevalidation: isSubmission,
2447
- ...routeIdsToLoad ? { filterMatchesToLoad: (m) => routeIdsToLoad.includes(m.route.id) } : null,
2446
+ ...routeIdsToLoad ? {
2447
+ filterMatchesToLoad: (m) => routeIdsToLoad.includes(m.route.id)
2448
+ } : {},
2448
2449
  async unstable_generateMiddlewareResponse(query) {
2449
2450
  let formState;
2451
+ let skipRevalidation = false;
2450
2452
  if (request.method === "POST") {
2451
2453
  ctx.runningAction = true;
2452
2454
  let result2 = await processServerAction(
@@ -2471,6 +2473,7 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2471
2473
  ctx.redirect?.headers
2472
2474
  );
2473
2475
  }
2476
+ skipRevalidation = result2?.skipRevalidation ?? false;
2474
2477
  actionResult = result2?.actionResult;
2475
2478
  formState = result2?.formState;
2476
2479
  request = result2?.revalidationRequest ?? request;
@@ -2486,7 +2489,12 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2486
2489
  );
2487
2490
  }
2488
2491
  }
2489
- let staticContext = await query(request);
2492
+ let staticContext = await query(
2493
+ request,
2494
+ skipRevalidation ? {
2495
+ filterMatchesToLoad: () => false
2496
+ } : void 0
2497
+ );
2490
2498
  if (isResponse(staticContext)) {
2491
2499
  return generateRedirectResponse(
2492
2500
  staticContext,
@@ -2510,6 +2518,7 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2510
2518
  formState,
2511
2519
  staticContext,
2512
2520
  temporaryReferences,
2521
+ skipRevalidation,
2513
2522
  ctx.redirect?.headers
2514
2523
  );
2515
2524
  }
@@ -2561,7 +2570,7 @@ function generateRedirectResponse(response, actionResult, basename, isDataReques
2561
2570
  { temporaryReferences }
2562
2571
  );
2563
2572
  }
2564
- async function generateStaticContextResponse(routes, basename, generateResponse, statusCode, routeIdsToLoad, isDataRequest, isSubmission, actionResult, formState, staticContext, temporaryReferences, sideEffectRedirectHeaders) {
2573
+ async function generateStaticContextResponse(routes, basename, generateResponse, statusCode, routeIdsToLoad, isDataRequest, isSubmission, actionResult, formState, staticContext, temporaryReferences, skipRevalidation, sideEffectRedirectHeaders) {
2565
2574
  statusCode = staticContext.statusCode ?? statusCode;
2566
2575
  if (staticContext.errors) {
2567
2576
  staticContext.errors = Object.fromEntries(
@@ -2608,7 +2617,7 @@ async function generateStaticContextResponse(routes, basename, generateResponse,
2608
2617
  payload = {
2609
2618
  type: "action",
2610
2619
  actionResult,
2611
- rerender: renderPayloadPromise()
2620
+ rerender: skipRevalidation ? void 0 : renderPayloadPromise()
2612
2621
  };
2613
2622
  } else if (isSubmission && isDataRequest) {
2614
2623
  payload = {
@@ -6,7 +6,7 @@ export { Await, BrowserRouter, Form, HashRouter, Link, Links, MemoryRouter, Meta
6
6
  import { serialize, parse } from 'cookie';
7
7
 
8
8
  /**
9
- * react-router v7.8.1
9
+ * react-router v7.8.2-pre.1
10
10
  *
11
11
  * Copyright (c) Remix Software Inc.
12
12
  *
@@ -739,7 +739,7 @@ function createStaticHandler(routes, opts) {
739
739
  },
740
740
  async () => {
741
741
  let res = await generateMiddlewareResponse(
742
- async (revalidationRequest) => {
742
+ async (revalidationRequest, opts2 = {}) => {
743
743
  let result2 = await queryImpl(
744
744
  revalidationRequest,
745
745
  location,
@@ -748,7 +748,7 @@ function createStaticHandler(routes, opts) {
748
748
  dataStrategy || null,
749
749
  skipLoaderErrorBubbling === true,
750
750
  null,
751
- filterMatchesToLoad || null,
751
+ "filterMatchesToLoad" in opts2 ? opts2.filterMatchesToLoad ?? null : null,
752
752
  skipRevalidation === true
753
753
  );
754
754
  if (isResponse(result2)) {
@@ -1492,31 +1492,37 @@ async function defaultDataStrategy(args) {
1492
1492
  });
1493
1493
  return keyedResults;
1494
1494
  }
1495
- async function runServerMiddlewarePipeline(args, handler, errorHandler) {
1495
+ function runServerMiddlewarePipeline(args, handler, errorHandler) {
1496
+ return runMiddlewarePipeline(
1497
+ args,
1498
+ handler,
1499
+ processResult,
1500
+ isResponse,
1501
+ errorHandler
1502
+ );
1503
+ function processResult(result) {
1504
+ return isDataWithResponseInit(result) ? dataWithResponseInitToResponse(result) : result;
1505
+ }
1506
+ }
1507
+ async function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {
1496
1508
  let { matches, request, params, context } = args;
1497
1509
  let tuples = matches.flatMap(
1498
1510
  (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
1499
1511
  );
1500
- let result = await callServerRouteMiddleware(
1512
+ let result = await callRouteMiddleware(
1501
1513
  { request, params, context },
1502
1514
  tuples,
1503
1515
  handler,
1516
+ processResult,
1517
+ isResult,
1504
1518
  errorHandler
1505
1519
  );
1506
- if (isResponse(result)) {
1507
- return result;
1508
- }
1509
- invariant(false, `Expected a Response to be returned from route middleware`);
1520
+ return result;
1510
1521
  }
1511
- async function callServerRouteMiddleware(args, middlewares, handler, errorHandler, idx = 0) {
1522
+ async function callRouteMiddleware(args, middlewares, handler, processResult, isResult, errorHandler, idx = 0) {
1512
1523
  let { request } = args;
1513
1524
  if (request.signal.aborted) {
1514
- if (request.signal.reason) {
1515
- throw request.signal.reason;
1516
- }
1517
- throw new Error(
1518
- `Request aborted without an \`AbortSignal.reason\`: ${request.method} ${request.url}`
1519
- );
1525
+ throw request.signal.reason ?? new Error(`Request aborted: ${request.method} ${request.url}`);
1520
1526
  }
1521
1527
  let tuple = middlewares[idx];
1522
1528
  if (!tuple) {
@@ -1524,53 +1530,41 @@ async function callServerRouteMiddleware(args, middlewares, handler, errorHandle
1524
1530
  return result;
1525
1531
  }
1526
1532
  let [routeId, middleware] = tuple;
1527
- let nextCalled = false;
1528
- let nextResult = void 0;
1533
+ let nextResult;
1529
1534
  let next = async () => {
1530
- if (nextCalled) {
1535
+ if (nextResult) {
1531
1536
  throw new Error("You may only call `next()` once per middleware");
1532
1537
  }
1533
- nextCalled = true;
1534
1538
  try {
1535
- let result = await callServerRouteMiddleware(
1539
+ let result = await callRouteMiddleware(
1536
1540
  args,
1537
1541
  middlewares,
1538
1542
  handler,
1543
+ processResult,
1544
+ isResult,
1539
1545
  errorHandler,
1540
1546
  idx + 1
1541
1547
  );
1542
- if (isDataWithResponseInit(result)) {
1543
- result = dataWithResponseInitToResponse(result);
1544
- }
1545
- nextResult = result;
1546
- return nextResult;
1547
- } catch (e) {
1548
- nextResult = await errorHandler(e, routeId);
1549
- return nextResult;
1548
+ nextResult = { value: result };
1549
+ return nextResult.value;
1550
+ } catch (error) {
1551
+ nextResult = { value: await errorHandler(error, routeId, nextResult) };
1552
+ return nextResult.value;
1550
1553
  }
1551
1554
  };
1552
1555
  try {
1553
- let result = await middleware(
1554
- {
1555
- request: args.request,
1556
- params: args.params,
1557
- context: args.context
1558
- },
1559
- next
1560
- );
1561
- if (isDataWithResponseInit(result)) {
1562
- result = dataWithResponseInitToResponse(result);
1563
- }
1564
- if (nextCalled) {
1565
- return typeof result === "undefined" ? nextResult : result;
1566
- } else if (isResponse(result)) {
1556
+ let value = await middleware(args, next);
1557
+ let result = value != null ? processResult(value) : void 0;
1558
+ if (isResult(result)) {
1567
1559
  return result;
1560
+ } else if (nextResult) {
1561
+ return result ?? nextResult.value;
1568
1562
  } else {
1569
- nextResult = await next();
1570
- return nextResult;
1563
+ nextResult = { value: await next() };
1564
+ return nextResult.value;
1571
1565
  }
1572
- } catch (e) {
1573
- let response = await errorHandler(e, routeId);
1566
+ } catch (error) {
1567
+ let response = await errorHandler(error, routeId, nextResult);
1574
1568
  return response;
1575
1569
  }
1576
1570
  }
@@ -2318,9 +2312,13 @@ async function processServerAction(request, basename, decodeReply, loadServerAct
2318
2312
  }
2319
2313
  onError?.(error);
2320
2314
  }
2315
+ let maybeFormData = actionArgs.length === 1 ? actionArgs[0] : actionArgs[1];
2316
+ let formData = maybeFormData && typeof maybeFormData === "object" && maybeFormData instanceof FormData ? maybeFormData : null;
2317
+ let skipRevalidation = formData?.has("$SKIP_REVALIDATION") ?? false;
2321
2318
  return {
2322
2319
  actionResult,
2323
- revalidationRequest: getRevalidationRequest()
2320
+ revalidationRequest: getRevalidationRequest(),
2321
+ skipRevalidation
2324
2322
  };
2325
2323
  } else if (isFormRequest) {
2326
2324
  const formData = await request.clone().formData();
@@ -2349,7 +2347,8 @@ async function processServerAction(request, basename, decodeReply, loadServerAct
2349
2347
  }
2350
2348
  return {
2351
2349
  formState,
2352
- revalidationRequest: getRevalidationRequest()
2350
+ revalidationRequest: getRevalidationRequest(),
2351
+ skipRevalidation: false
2353
2352
  };
2354
2353
  }
2355
2354
  }
@@ -2423,9 +2422,12 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2423
2422
  requestContext,
2424
2423
  skipLoaderErrorBubbling: isDataRequest,
2425
2424
  skipRevalidation: isSubmission,
2426
- ...routeIdsToLoad ? { filterMatchesToLoad: (m) => routeIdsToLoad.includes(m.route.id) } : null,
2425
+ ...routeIdsToLoad ? {
2426
+ filterMatchesToLoad: (m) => routeIdsToLoad.includes(m.route.id)
2427
+ } : {},
2427
2428
  async unstable_generateMiddlewareResponse(query) {
2428
2429
  let formState;
2430
+ let skipRevalidation = false;
2429
2431
  if (request.method === "POST") {
2430
2432
  ctx.runningAction = true;
2431
2433
  let result2 = await processServerAction(
@@ -2450,6 +2452,7 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2450
2452
  ctx.redirect?.headers
2451
2453
  );
2452
2454
  }
2455
+ skipRevalidation = result2?.skipRevalidation ?? false;
2453
2456
  actionResult = result2?.actionResult;
2454
2457
  formState = result2?.formState;
2455
2458
  request = result2?.revalidationRequest ?? request;
@@ -2465,7 +2468,12 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2465
2468
  );
2466
2469
  }
2467
2470
  }
2468
- let staticContext = await query(request);
2471
+ let staticContext = await query(
2472
+ request,
2473
+ skipRevalidation ? {
2474
+ filterMatchesToLoad: () => false
2475
+ } : void 0
2476
+ );
2469
2477
  if (isResponse(staticContext)) {
2470
2478
  return generateRedirectResponse(
2471
2479
  staticContext,
@@ -2489,6 +2497,7 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
2489
2497
  formState,
2490
2498
  staticContext,
2491
2499
  temporaryReferences,
2500
+ skipRevalidation,
2492
2501
  ctx.redirect?.headers
2493
2502
  );
2494
2503
  }
@@ -2540,7 +2549,7 @@ function generateRedirectResponse(response, actionResult, basename, isDataReques
2540
2549
  { temporaryReferences }
2541
2550
  );
2542
2551
  }
2543
- async function generateStaticContextResponse(routes, basename, generateResponse, statusCode, routeIdsToLoad, isDataRequest, isSubmission, actionResult, formState, staticContext, temporaryReferences, sideEffectRedirectHeaders) {
2552
+ async function generateStaticContextResponse(routes, basename, generateResponse, statusCode, routeIdsToLoad, isDataRequest, isSubmission, actionResult, formState, staticContext, temporaryReferences, skipRevalidation, sideEffectRedirectHeaders) {
2544
2553
  statusCode = staticContext.statusCode ?? statusCode;
2545
2554
  if (staticContext.errors) {
2546
2555
  staticContext.errors = Object.fromEntries(
@@ -2587,7 +2596,7 @@ async function generateStaticContextResponse(routes, basename, generateResponse,
2587
2596
  payload = {
2588
2597
  type: "action",
2589
2598
  actionResult,
2590
- rerender: renderPayloadPromise()
2599
+ rerender: skipRevalidation ? void 0 : renderPayloadPromise()
2591
2600
  };
2592
2601
  } else if (isSubmission && isDataRequest) {
2593
2602
  payload = {