react-router 7.3.0-pre.0 → 7.3.0-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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # `react-router`
2
2
 
3
+ ## 7.3.0-pre.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix jsdoc types for `context` ([#13170](https://github.com/remix-run/react-router/pull/13170))
8
+ - [REMOVE] Remove middleware depth logic and always call middlware for all matches ([#13172](https://github.com/remix-run/react-router/pull/13172))
9
+
3
10
  ## 7.3.0-pre.0
4
11
 
5
12
  ### Minor Changes
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.3.0-pre.0
2
+ * react-router v7.3.0-pre.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -2687,8 +2687,6 @@ function createStaticHandler(routes, opts) {
2687
2687
  "When using middleware in `staticHandler.query()`, any provided `requestContext` must bean instance of `unstable_RouterContextProvider`"
2688
2688
  );
2689
2689
  try {
2690
- let tailIdx = [...matches].reverse().findIndex((m) => !filterMatchesToLoad || filterMatchesToLoad(m));
2691
- let lowestLoadingIdx = tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
2692
2690
  let renderedStaticContext;
2693
2691
  let response = await runMiddlewarePipeline(
2694
2692
  {
@@ -2699,7 +2697,6 @@ function createStaticHandler(routes, opts) {
2699
2697
  // this to the proper type knowing it's not an `AppLoadContext`
2700
2698
  context: requestContext
2701
2699
  },
2702
- lowestLoadingIdx,
2703
2700
  true,
2704
2701
  async () => {
2705
2702
  let result2 = await queryImpl(
@@ -2819,7 +2816,6 @@ function createStaticHandler(routes, opts) {
2819
2816
  // this to the proper type knowing it's not an `AppLoadContext`
2820
2817
  context: requestContext
2821
2818
  },
2822
- matches.length - 1,
2823
2819
  true,
2824
2820
  async () => {
2825
2821
  let result2 = await queryImpl(
@@ -3576,55 +3572,39 @@ async function defaultDataStrategyWithMiddleware(args) {
3576
3572
  if (!args.matches.some((m) => m.route.unstable_middleware)) {
3577
3573
  return defaultDataStrategy(args);
3578
3574
  }
3579
- let lastIndex = args.matches.length - 1;
3580
- for (let i = lastIndex; i >= 0; i--) {
3581
- if (args.matches[i].shouldLoad) {
3582
- lastIndex = i;
3583
- break;
3584
- }
3585
- }
3586
- let results = await runMiddlewarePipeline(
3575
+ return runMiddlewarePipeline(
3587
3576
  args,
3588
- lastIndex,
3589
3577
  false,
3590
- async (keyedResults) => {
3591
- Object.assign(keyedResults, await defaultDataStrategy(args));
3592
- },
3593
- (e, keyedResults) => {
3594
- Object.assign(keyedResults, {
3595
- [e.routeId]: { type: "error", result: e.error }
3596
- });
3597
- }
3578
+ () => defaultDataStrategy(args),
3579
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
3598
3580
  );
3599
- return results;
3600
3581
  }
3601
- async function runMiddlewarePipeline({
3602
- request,
3603
- params,
3604
- context,
3605
- matches
3606
- }, lastIndex, propagateResult, handler, errorHandler) {
3582
+ async function runMiddlewarePipeline(args, propagateResult, handler, errorHandler) {
3583
+ let { matches, request, params, context } = args;
3607
3584
  let middlewareState = {
3608
- keyedResults: {},
3585
+ handlerResult: void 0,
3609
3586
  propagateResult
3610
3587
  };
3611
3588
  try {
3589
+ let tuples = matches.flatMap(
3590
+ (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
3591
+ );
3612
3592
  let result = await callRouteMiddleware(
3613
- matches.slice(0, lastIndex + 1).flatMap(
3614
- (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
3615
- ),
3616
- 0,
3617
3593
  { request, params, context },
3594
+ tuples,
3618
3595
  middlewareState,
3619
3596
  handler
3620
3597
  );
3621
- return middlewareState.propagateResult ? result : middlewareState.keyedResults;
3598
+ return middlewareState.propagateResult ? result : middlewareState.handlerResult;
3622
3599
  } catch (e) {
3623
3600
  if (!(e instanceof MiddlewareError)) {
3624
3601
  throw e;
3625
3602
  }
3626
- let result = await errorHandler(e, middlewareState.keyedResults);
3627
- return middlewareState.propagateResult ? result : middlewareState.keyedResults;
3603
+ let result = await errorHandler(e);
3604
+ if (propagateResult || !middlewareState.handlerResult) {
3605
+ return result;
3606
+ }
3607
+ return Object.assign(middlewareState.handlerResult, result);
3628
3608
  }
3629
3609
  }
3630
3610
  var MiddlewareError = class {
@@ -3633,7 +3613,7 @@ var MiddlewareError = class {
3633
3613
  this.error = error;
3634
3614
  }
3635
3615
  };
3636
- async function callRouteMiddleware(middlewares, idx, args, middlewareState, handler) {
3616
+ async function callRouteMiddleware(args, middlewares, middlewareState, handler, idx = 0) {
3637
3617
  let { request } = args;
3638
3618
  if (request.signal.aborted) {
3639
3619
  if (request.signal.reason) {
@@ -3645,8 +3625,8 @@ async function callRouteMiddleware(middlewares, idx, args, middlewareState, hand
3645
3625
  }
3646
3626
  let tuple = middlewares[idx];
3647
3627
  if (!tuple) {
3648
- let result = await handler(middlewareState.keyedResults);
3649
- return result;
3628
+ middlewareState.handlerResult = await handler();
3629
+ return middlewareState.handlerResult;
3650
3630
  }
3651
3631
  let [routeId, middleware] = tuple;
3652
3632
  let nextCalled = false;
@@ -3657,11 +3637,11 @@ async function callRouteMiddleware(middlewares, idx, args, middlewareState, hand
3657
3637
  }
3658
3638
  nextCalled = true;
3659
3639
  let result = await callRouteMiddleware(
3660
- middlewares,
3661
- idx + 1,
3662
3640
  args,
3641
+ middlewares,
3663
3642
  middlewareState,
3664
- handler
3643
+ handler,
3644
+ idx + 1
3665
3645
  );
3666
3646
  if (middlewareState.propagateResult) {
3667
3647
  nextResult = result;
@@ -6024,28 +6004,15 @@ function StreamTransfer({
6024
6004
  )));
6025
6005
  }
6026
6006
  }
6027
- function middlewareErrorHandler(e, keyedResults) {
6028
- Object.assign(keyedResults, {
6029
- [e.routeId]: { type: "error", result: e.error }
6030
- });
6031
- }
6032
6007
  function getSingleFetchDataStrategy(manifest, routeModules, ssr, basename, getRouter) {
6033
6008
  return async (args) => {
6034
6009
  let { request, matches, fetcherKey } = args;
6035
6010
  if (request.method !== "GET") {
6036
6011
  return runMiddlewarePipeline(
6037
6012
  args,
6038
- matches.findIndex((m) => m.shouldLoad),
6039
6013
  false,
6040
- async (keyedResults) => {
6041
- let results = await singleFetchActionStrategy(
6042
- request,
6043
- matches,
6044
- basename
6045
- );
6046
- Object.assign(keyedResults, results);
6047
- },
6048
- middlewareErrorHandler
6014
+ () => singleFetchActionStrategy(request, matches, basename),
6015
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
6049
6016
  );
6050
6017
  }
6051
6018
  if (!ssr) {
@@ -6053,64 +6020,35 @@ function getSingleFetchDataStrategy(manifest, routeModules, ssr, basename, getRo
6053
6020
  (m) => m.shouldLoad && manifest.routes[m.route.id]?.hasLoader && !manifest.routes[m.route.id]?.hasClientLoader
6054
6021
  );
6055
6022
  if (!foundRevalidatingServerLoader) {
6056
- let tailIdx = [...matches].reverse().findIndex((m) => m.shouldLoad);
6057
- let lowestLoadingIndex2 = tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
6058
6023
  return runMiddlewarePipeline(
6059
6024
  args,
6060
- lowestLoadingIndex2,
6061
6025
  false,
6062
- async (keyedResults) => {
6063
- let results = await nonSsrStrategy(
6064
- manifest,
6065
- request,
6066
- matches,
6067
- basename
6068
- );
6069
- Object.assign(keyedResults, results);
6070
- },
6071
- middlewareErrorHandler
6026
+ () => nonSsrStrategy(manifest, request, matches, basename),
6027
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
6072
6028
  );
6073
6029
  }
6074
6030
  }
6075
6031
  if (fetcherKey) {
6076
6032
  return runMiddlewarePipeline(
6077
6033
  args,
6078
- matches.findIndex((m) => m.shouldLoad),
6079
6034
  false,
6080
- async (keyedResults) => {
6081
- let results = await singleFetchLoaderFetcherStrategy(
6082
- request,
6083
- matches,
6084
- basename
6085
- );
6086
- Object.assign(keyedResults, results);
6087
- },
6088
- middlewareErrorHandler
6035
+ () => singleFetchLoaderFetcherStrategy(request, matches, basename),
6036
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
6089
6037
  );
6090
6038
  }
6091
- let lowestLoadingIndex = getLowestLoadingIndex(
6092
- manifest,
6093
- routeModules,
6094
- getRouter(),
6095
- matches
6096
- );
6097
6039
  return runMiddlewarePipeline(
6098
6040
  args,
6099
- lowestLoadingIndex,
6100
6041
  false,
6101
- async (keyedResults) => {
6102
- let results = await singleFetchLoaderNavigationStrategy(
6103
- manifest,
6104
- routeModules,
6105
- ssr,
6106
- getRouter(),
6107
- request,
6108
- matches,
6109
- basename
6110
- );
6111
- Object.assign(keyedResults, results);
6112
- },
6113
- middlewareErrorHandler
6042
+ () => singleFetchLoaderNavigationStrategy(
6043
+ manifest,
6044
+ routeModules,
6045
+ ssr,
6046
+ getRouter(),
6047
+ request,
6048
+ matches,
6049
+ basename
6050
+ ),
6051
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
6114
6052
  );
6115
6053
  };
6116
6054
  }
@@ -6163,17 +6101,6 @@ async function nonSsrStrategy(manifest, request, matches, basename) {
6163
6101
  function isOptedOut(manifestRoute, routeModule, match, router) {
6164
6102
  return match.route.id in router.state.loaderData && manifestRoute && manifestRoute.hasLoader && routeModule && routeModule.shouldRevalidate;
6165
6103
  }
6166
- function getLowestLoadingIndex(manifest, routeModules, router, matches) {
6167
- let tailIdx = [...matches].reverse().findIndex(
6168
- (m) => m.shouldLoad || !isOptedOut(
6169
- manifest.routes[m.route.id],
6170
- routeModules[m.route.id],
6171
- m,
6172
- router
6173
- )
6174
- );
6175
- return tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
6176
- }
6177
6104
  async function singleFetchLoaderNavigationStrategy(manifest, routeModules, ssr, router, request, matches, basename) {
6178
6105
  let routesParams = /* @__PURE__ */ new Set();
6179
6106
  let foundOptOutRoute = false;
@@ -7588,7 +7515,7 @@ function mergeRefs(...refs) {
7588
7515
  var isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
7589
7516
  try {
7590
7517
  if (isBrowser) {
7591
- window.__reactRouterVersion = "7.3.0-pre.0";
7518
+ window.__reactRouterVersion = "7.3.0-pre.1";
7592
7519
  }
7593
7520
  } catch (e) {
7594
7521
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.3.0-pre.0
2
+ * react-router v7.3.0-pre.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -2868,55 +2868,39 @@ async function defaultDataStrategyWithMiddleware(args) {
2868
2868
  if (!args.matches.some((m) => m.route.unstable_middleware)) {
2869
2869
  return defaultDataStrategy(args);
2870
2870
  }
2871
- let lastIndex = args.matches.length - 1;
2872
- for (let i = lastIndex; i >= 0; i--) {
2873
- if (args.matches[i].shouldLoad) {
2874
- lastIndex = i;
2875
- break;
2876
- }
2877
- }
2878
- let results = await runMiddlewarePipeline(
2871
+ return runMiddlewarePipeline(
2879
2872
  args,
2880
- lastIndex,
2881
2873
  false,
2882
- async (keyedResults) => {
2883
- Object.assign(keyedResults, await defaultDataStrategy(args));
2884
- },
2885
- (e, keyedResults) => {
2886
- Object.assign(keyedResults, {
2887
- [e.routeId]: { type: "error", result: e.error }
2888
- });
2889
- }
2874
+ () => defaultDataStrategy(args),
2875
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
2890
2876
  );
2891
- return results;
2892
2877
  }
2893
- async function runMiddlewarePipeline({
2894
- request,
2895
- params,
2896
- context,
2897
- matches
2898
- }, lastIndex, propagateResult, handler, errorHandler) {
2878
+ async function runMiddlewarePipeline(args, propagateResult, handler, errorHandler) {
2879
+ let { matches, request, params, context } = args;
2899
2880
  let middlewareState = {
2900
- keyedResults: {},
2881
+ handlerResult: void 0,
2901
2882
  propagateResult
2902
2883
  };
2903
2884
  try {
2885
+ let tuples = matches.flatMap(
2886
+ (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
2887
+ );
2904
2888
  let result = await callRouteMiddleware(
2905
- matches.slice(0, lastIndex + 1).flatMap(
2906
- (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
2907
- ),
2908
- 0,
2909
2889
  { request, params, context },
2890
+ tuples,
2910
2891
  middlewareState,
2911
2892
  handler
2912
2893
  );
2913
- return middlewareState.propagateResult ? result : middlewareState.keyedResults;
2894
+ return middlewareState.propagateResult ? result : middlewareState.handlerResult;
2914
2895
  } catch (e) {
2915
2896
  if (!(e instanceof MiddlewareError)) {
2916
2897
  throw e;
2917
2898
  }
2918
- let result = await errorHandler(e, middlewareState.keyedResults);
2919
- return middlewareState.propagateResult ? result : middlewareState.keyedResults;
2899
+ let result = await errorHandler(e);
2900
+ if (propagateResult || !middlewareState.handlerResult) {
2901
+ return result;
2902
+ }
2903
+ return Object.assign(middlewareState.handlerResult, result);
2920
2904
  }
2921
2905
  }
2922
2906
  var MiddlewareError = class {
@@ -2925,7 +2909,7 @@ var MiddlewareError = class {
2925
2909
  this.error = error;
2926
2910
  }
2927
2911
  };
2928
- async function callRouteMiddleware(middlewares, idx, args, middlewareState, handler) {
2912
+ async function callRouteMiddleware(args, middlewares, middlewareState, handler, idx = 0) {
2929
2913
  let { request } = args;
2930
2914
  if (request.signal.aborted) {
2931
2915
  if (request.signal.reason) {
@@ -2937,8 +2921,8 @@ async function callRouteMiddleware(middlewares, idx, args, middlewareState, hand
2937
2921
  }
2938
2922
  let tuple = middlewares[idx];
2939
2923
  if (!tuple) {
2940
- let result = await handler(middlewareState.keyedResults);
2941
- return result;
2924
+ middlewareState.handlerResult = await handler();
2925
+ return middlewareState.handlerResult;
2942
2926
  }
2943
2927
  let [routeId, middleware] = tuple;
2944
2928
  let nextCalled = false;
@@ -2949,11 +2933,11 @@ async function callRouteMiddleware(middlewares, idx, args, middlewareState, hand
2949
2933
  }
2950
2934
  nextCalled = true;
2951
2935
  let result = await callRouteMiddleware(
2952
- middlewares,
2953
- idx + 1,
2954
2936
  args,
2937
+ middlewares,
2955
2938
  middlewareState,
2956
- handler
2939
+ handler,
2940
+ idx + 1
2957
2941
  );
2958
2942
  if (middlewareState.propagateResult) {
2959
2943
  nextResult = result;
@@ -4528,28 +4512,15 @@ async function createRequestInit(request) {
4528
4512
 
4529
4513
  // lib/dom/ssr/single-fetch.tsx
4530
4514
  var SingleFetchRedirectSymbol = Symbol("SingleFetchRedirect");
4531
- function middlewareErrorHandler(e, keyedResults) {
4532
- Object.assign(keyedResults, {
4533
- [e.routeId]: { type: "error", result: e.error }
4534
- });
4535
- }
4536
4515
  function getSingleFetchDataStrategy(manifest, routeModules, ssr, basename, getRouter) {
4537
4516
  return async (args) => {
4538
4517
  let { request, matches, fetcherKey } = args;
4539
4518
  if (request.method !== "GET") {
4540
4519
  return runMiddlewarePipeline(
4541
4520
  args,
4542
- matches.findIndex((m) => m.shouldLoad),
4543
4521
  false,
4544
- async (keyedResults) => {
4545
- let results = await singleFetchActionStrategy(
4546
- request,
4547
- matches,
4548
- basename
4549
- );
4550
- Object.assign(keyedResults, results);
4551
- },
4552
- middlewareErrorHandler
4522
+ () => singleFetchActionStrategy(request, matches, basename),
4523
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
4553
4524
  );
4554
4525
  }
4555
4526
  if (!ssr) {
@@ -4557,64 +4528,35 @@ function getSingleFetchDataStrategy(manifest, routeModules, ssr, basename, getRo
4557
4528
  (m) => m.shouldLoad && manifest.routes[m.route.id]?.hasLoader && !manifest.routes[m.route.id]?.hasClientLoader
4558
4529
  );
4559
4530
  if (!foundRevalidatingServerLoader) {
4560
- let tailIdx = [...matches].reverse().findIndex((m) => m.shouldLoad);
4561
- let lowestLoadingIndex2 = tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
4562
4531
  return runMiddlewarePipeline(
4563
4532
  args,
4564
- lowestLoadingIndex2,
4565
4533
  false,
4566
- async (keyedResults) => {
4567
- let results = await nonSsrStrategy(
4568
- manifest,
4569
- request,
4570
- matches,
4571
- basename
4572
- );
4573
- Object.assign(keyedResults, results);
4574
- },
4575
- middlewareErrorHandler
4534
+ () => nonSsrStrategy(manifest, request, matches, basename),
4535
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
4576
4536
  );
4577
4537
  }
4578
4538
  }
4579
4539
  if (fetcherKey) {
4580
4540
  return runMiddlewarePipeline(
4581
4541
  args,
4582
- matches.findIndex((m) => m.shouldLoad),
4583
4542
  false,
4584
- async (keyedResults) => {
4585
- let results = await singleFetchLoaderFetcherStrategy(
4586
- request,
4587
- matches,
4588
- basename
4589
- );
4590
- Object.assign(keyedResults, results);
4591
- },
4592
- middlewareErrorHandler
4543
+ () => singleFetchLoaderFetcherStrategy(request, matches, basename),
4544
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
4593
4545
  );
4594
4546
  }
4595
- let lowestLoadingIndex = getLowestLoadingIndex(
4596
- manifest,
4597
- routeModules,
4598
- getRouter(),
4599
- matches
4600
- );
4601
4547
  return runMiddlewarePipeline(
4602
4548
  args,
4603
- lowestLoadingIndex,
4604
4549
  false,
4605
- async (keyedResults) => {
4606
- let results = await singleFetchLoaderNavigationStrategy(
4607
- manifest,
4608
- routeModules,
4609
- ssr,
4610
- getRouter(),
4611
- request,
4612
- matches,
4613
- basename
4614
- );
4615
- Object.assign(keyedResults, results);
4616
- },
4617
- middlewareErrorHandler
4550
+ () => singleFetchLoaderNavigationStrategy(
4551
+ manifest,
4552
+ routeModules,
4553
+ ssr,
4554
+ getRouter(),
4555
+ request,
4556
+ matches,
4557
+ basename
4558
+ ),
4559
+ (e) => ({ [e.routeId]: { type: "error", result: e.error } })
4618
4560
  );
4619
4561
  };
4620
4562
  }
@@ -4667,17 +4609,6 @@ async function nonSsrStrategy(manifest, request, matches, basename) {
4667
4609
  function isOptedOut(manifestRoute, routeModule, match, router2) {
4668
4610
  return match.route.id in router2.state.loaderData && manifestRoute && manifestRoute.hasLoader && routeModule && routeModule.shouldRevalidate;
4669
4611
  }
4670
- function getLowestLoadingIndex(manifest, routeModules, router2, matches) {
4671
- let tailIdx = [...matches].reverse().findIndex(
4672
- (m) => m.shouldLoad || !isOptedOut(
4673
- manifest.routes[m.route.id],
4674
- routeModules[m.route.id],
4675
- m,
4676
- router2
4677
- )
4678
- );
4679
- return tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
4680
- }
4681
4612
  async function singleFetchLoaderNavigationStrategy(manifest, routeModules, ssr, router2, request, matches, basename) {
4682
4613
  let routesParams = /* @__PURE__ */ new Set();
4683
4614
  let foundOptOutRoute = false;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.3.0-pre.0
2
+ * react-router v7.3.0-pre.1
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -25,7 +25,7 @@ import {
25
25
  matchRoutes,
26
26
  shouldHydrateRouteLoader,
27
27
  useFogOFWarDiscovery
28
- } from "./chunk-W5LWFPOT.mjs";
28
+ } from "./chunk-3XNZT7XE.mjs";
29
29
 
30
30
  // lib/dom-export/dom-router-provider.tsx
31
31
  import * as React from "react";