react-router 7.7.1 → 7.8.0-pre.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 (66) hide show
  1. package/CHANGELOG.md +81 -5
  2. package/dist/development/browser-z32v5KVN.d.mts +46 -0
  3. package/dist/{production/chunk-K3SBCRK4.mjs → development/chunk-HSC5IU24.mjs} +177 -134
  4. package/dist/development/{chunk-K7YFBME3.js → chunk-IW6UADHO.js} +250 -187
  5. package/dist/development/{chunk-C37GKA54.mjs → chunk-SC4OUYO4.mjs} +232 -169
  6. package/dist/development/{chunk-R73PQUJU.js → chunk-Z4NNCWGU.js} +130 -130
  7. package/dist/development/{components-CjQijYga.d.mts → components-uUh0svuC.d.mts} +33 -21
  8. package/dist/{production/route-data-CqEmXQub.d.mts → development/context-DZWGFcKX.d.mts} +312 -524
  9. package/dist/development/dom-export.d.mts +16 -12
  10. package/dist/development/dom-export.d.ts +13 -8
  11. package/dist/development/dom-export.js +3 -3
  12. package/dist/development/dom-export.mjs +3 -3
  13. package/dist/{production/index-react-server-client-KLg-U4nr.d.mts → development/index-react-server-client-BUK-oRcG.d.mts} +327 -200
  14. package/dist/development/{index-react-server-client-Bi_fx8qz.d.ts → index-react-server-client-DSU6bZil.d.ts} +357 -219
  15. package/dist/development/index-react-server-client.d.mts +4 -3
  16. package/dist/development/index-react-server-client.d.ts +2 -2
  17. package/dist/development/index-react-server-client.js +4 -4
  18. package/dist/development/index-react-server-client.mjs +2 -2
  19. package/dist/development/index-react-server.d.mts +291 -70
  20. package/dist/development/index-react-server.d.ts +291 -70
  21. package/dist/development/index-react-server.js +174 -180
  22. package/dist/development/index-react-server.mjs +174 -180
  23. package/dist/development/index.d.mts +294 -86
  24. package/dist/development/index.d.ts +136 -105
  25. package/dist/development/index.js +258 -215
  26. package/dist/development/index.mjs +3 -3
  27. package/dist/development/lib/types/internal.d.mts +13 -2
  28. package/dist/development/lib/types/internal.d.ts +12 -2
  29. package/dist/development/lib/types/internal.js +1 -1
  30. package/dist/development/lib/types/internal.mjs +1 -1
  31. package/dist/development/route-data-UTmTa8an.d.mts +473 -0
  32. package/dist/{production/routeModules-BR2FO0ix.d.ts → development/routeModules-D5bppTB2.d.ts} +325 -67
  33. package/dist/production/browser-z32v5KVN.d.mts +46 -0
  34. package/dist/production/{chunk-4DGLNKXF.js → chunk-BCLZG6QW.js} +130 -130
  35. package/dist/{development/chunk-KIUJAIYX.mjs → production/chunk-KQ5567DT.mjs} +177 -134
  36. package/dist/production/{chunk-IZ57JD2V.mjs → chunk-X2NPJMV2.mjs} +232 -169
  37. package/dist/production/{chunk-7OQROU2D.js → chunk-YC2ENCM3.js} +250 -187
  38. package/dist/production/{components-CjQijYga.d.mts → components-uUh0svuC.d.mts} +33 -21
  39. package/dist/{development/route-data-CqEmXQub.d.mts → production/context-DZWGFcKX.d.mts} +312 -524
  40. package/dist/production/dom-export.d.mts +16 -12
  41. package/dist/production/dom-export.d.ts +13 -8
  42. package/dist/production/dom-export.js +3 -3
  43. package/dist/production/dom-export.mjs +3 -3
  44. package/dist/{development/index-react-server-client-KLg-U4nr.d.mts → production/index-react-server-client-BUK-oRcG.d.mts} +327 -200
  45. package/dist/production/{index-react-server-client-Bi_fx8qz.d.ts → index-react-server-client-DSU6bZil.d.ts} +357 -219
  46. package/dist/production/index-react-server-client.d.mts +4 -3
  47. package/dist/production/index-react-server-client.d.ts +2 -2
  48. package/dist/production/index-react-server-client.js +4 -4
  49. package/dist/production/index-react-server-client.mjs +2 -2
  50. package/dist/production/index-react-server.d.mts +291 -70
  51. package/dist/production/index-react-server.d.ts +291 -70
  52. package/dist/production/index-react-server.js +174 -180
  53. package/dist/production/index-react-server.mjs +174 -180
  54. package/dist/production/index.d.mts +294 -86
  55. package/dist/production/index.d.ts +136 -105
  56. package/dist/production/index.js +258 -215
  57. package/dist/production/index.mjs +3 -3
  58. package/dist/production/lib/types/internal.d.mts +13 -2
  59. package/dist/production/lib/types/internal.d.ts +12 -2
  60. package/dist/production/lib/types/internal.js +1 -1
  61. package/dist/production/lib/types/internal.mjs +1 -1
  62. package/dist/production/route-data-UTmTa8an.d.mts +473 -0
  63. package/dist/{development/routeModules-BR2FO0ix.d.ts → production/routeModules-D5bppTB2.d.ts} +325 -67
  64. package/package.json +1 -1
  65. package/dist/development/browser-7LYX59NK.d.mts +0 -226
  66. package/dist/production/browser-7LYX59NK.d.mts +0 -226
@@ -1,5 +1,5 @@
1
1
  /**
2
- * react-router v7.7.1
2
+ * react-router v7.8.0-pre.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -57,7 +57,7 @@ import {
57
57
  withComponentProps,
58
58
  withErrorBoundaryProps,
59
59
  withHydrateFallbackProps
60
- } from "./chunk-C37GKA54.mjs";
60
+ } from "./chunk-X2NPJMV2.mjs";
61
61
 
62
62
  // lib/dom/ssr/server.tsx
63
63
  import * as React from "react";
@@ -772,42 +772,6 @@ var SERVER_NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([
772
772
  ]);
773
773
  async function singleFetchAction(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {
774
774
  try {
775
- let respond2 = function(context) {
776
- let headers = getDocumentHeaders(context, build);
777
- if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
778
- return generateSingleFetchResponse(request, build, serverMode, {
779
- result: getSingleFetchRedirect(
780
- context.statusCode,
781
- headers,
782
- build.basename
783
- ),
784
- headers,
785
- status: SINGLE_FETCH_REDIRECT_STATUS
786
- });
787
- }
788
- if (context.errors) {
789
- Object.values(context.errors).forEach((err) => {
790
- if (!isRouteErrorResponse(err) || err.error) {
791
- handleError(err);
792
- }
793
- });
794
- context.errors = sanitizeErrors(context.errors, serverMode);
795
- }
796
- let singleFetchResult;
797
- if (context.errors) {
798
- singleFetchResult = { error: Object.values(context.errors)[0] };
799
- } else {
800
- singleFetchResult = {
801
- data: Object.values(context.actionData || {})[0]
802
- };
803
- }
804
- return generateSingleFetchResponse(request, build, serverMode, {
805
- result: singleFetchResult,
806
- headers,
807
- status: context.statusCode
808
- });
809
- };
810
- var respond = respond2;
811
775
  let handlerRequest = new Request(handlerUrl, {
812
776
  method: request.method,
813
777
  body: request.body,
@@ -819,10 +783,22 @@ async function singleFetchAction(build, serverMode, staticHandler, request, hand
819
783
  requestContext: loadContext,
820
784
  skipLoaderErrorBubbling: true,
821
785
  skipRevalidation: true,
822
- unstable_respond: respond2
786
+ unstable_generateMiddlewareResponse: build.future.unstable_middleware ? async (query) => {
787
+ try {
788
+ let innerResult = await query(handlerRequest);
789
+ return handleQueryResult(innerResult);
790
+ } catch (error) {
791
+ return handleQueryError(error);
792
+ }
793
+ } : void 0
823
794
  });
795
+ return handleQueryResult(result);
796
+ } catch (error) {
797
+ return handleQueryError(error);
798
+ }
799
+ function handleQueryResult(result) {
824
800
  if (!isResponse(result)) {
825
- result = respond2(result);
801
+ result = staticContextToResponse(result);
826
802
  }
827
803
  if (isRedirectResponse(result)) {
828
804
  return generateSingleFetchResponse(request, build, serverMode, {
@@ -836,7 +812,8 @@ async function singleFetchAction(build, serverMode, staticHandler, request, hand
836
812
  });
837
813
  }
838
814
  return result;
839
- } catch (error) {
815
+ }
816
+ function handleQueryError(error) {
840
817
  handleError(error);
841
818
  return generateSingleFetchResponse(request, build, serverMode, {
842
819
  result: { error },
@@ -844,92 +821,137 @@ async function singleFetchAction(build, serverMode, staticHandler, request, hand
844
821
  status: 500
845
822
  });
846
823
  }
847
- }
848
- async function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {
849
- try {
850
- let respond2 = function(context) {
851
- let headers = getDocumentHeaders(context, build);
852
- if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
853
- return generateSingleFetchResponse(request, build, serverMode, {
854
- result: {
855
- [SingleFetchRedirectSymbol]: getSingleFetchRedirect(
856
- context.statusCode,
857
- headers,
858
- build.basename
859
- )
860
- },
861
- headers,
862
- status: SINGLE_FETCH_REDIRECT_STATUS
863
- });
864
- }
865
- if (context.errors) {
866
- Object.values(context.errors).forEach((err) => {
867
- if (!isRouteErrorResponse(err) || err.error) {
868
- handleError(err);
869
- }
870
- });
871
- context.errors = sanitizeErrors(context.errors, serverMode);
872
- }
873
- let results = {};
874
- let loadedMatches = new Set(
875
- context.matches.filter(
876
- (m) => loadRouteIds ? loadRouteIds.has(m.route.id) : m.route.loader != null
877
- ).map((m) => m.route.id)
878
- );
879
- if (context.errors) {
880
- for (let [id, error] of Object.entries(context.errors)) {
881
- results[id] = { error };
882
- }
883
- }
884
- for (let [id, data2] of Object.entries(context.loaderData)) {
885
- if (!(id in results) && loadedMatches.has(id)) {
886
- results[id] = { data: data2 };
887
- }
888
- }
824
+ function staticContextToResponse(context) {
825
+ let headers = getDocumentHeaders(context, build);
826
+ if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
889
827
  return generateSingleFetchResponse(request, build, serverMode, {
890
- result: results,
828
+ result: getSingleFetchRedirect(
829
+ context.statusCode,
830
+ headers,
831
+ build.basename
832
+ ),
891
833
  headers,
892
- status: context.statusCode
834
+ status: SINGLE_FETCH_REDIRECT_STATUS
893
835
  });
894
- };
895
- var respond = respond2;
836
+ }
837
+ if (context.errors) {
838
+ Object.values(context.errors).forEach((err) => {
839
+ if (!isRouteErrorResponse(err) || err.error) {
840
+ handleError(err);
841
+ }
842
+ });
843
+ context.errors = sanitizeErrors(context.errors, serverMode);
844
+ }
845
+ let singleFetchResult;
846
+ if (context.errors) {
847
+ singleFetchResult = { error: Object.values(context.errors)[0] };
848
+ } else {
849
+ singleFetchResult = {
850
+ data: Object.values(context.actionData || {})[0]
851
+ };
852
+ }
853
+ return generateSingleFetchResponse(request, build, serverMode, {
854
+ result: singleFetchResult,
855
+ headers,
856
+ status: context.statusCode
857
+ });
858
+ }
859
+ }
860
+ async function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {
861
+ let routesParam = new URL(request.url).searchParams.get("_routes");
862
+ let loadRouteIds = routesParam ? new Set(routesParam.split(",")) : null;
863
+ try {
896
864
  let handlerRequest = new Request(handlerUrl, {
897
865
  headers: request.headers,
898
866
  signal: request.signal
899
867
  });
900
- let routesParam = new URL(request.url).searchParams.get("_routes");
901
- let loadRouteIds = routesParam ? new Set(routesParam.split(",")) : null;
902
868
  let result = await staticHandler.query(handlerRequest, {
903
869
  requestContext: loadContext,
904
870
  filterMatchesToLoad: (m) => !loadRouteIds || loadRouteIds.has(m.route.id),
905
871
  skipLoaderErrorBubbling: true,
906
- unstable_respond: respond2
872
+ unstable_generateMiddlewareResponse: build.future.unstable_middleware ? async (query) => {
873
+ try {
874
+ let innerResult = await query(handlerRequest);
875
+ return handleQueryResult(innerResult);
876
+ } catch (error) {
877
+ return handleQueryError(error);
878
+ }
879
+ } : void 0
907
880
  });
908
- if (!isResponse(result)) {
909
- result = respond2(result);
910
- }
911
- if (isRedirectResponse(result)) {
881
+ return handleQueryResult(result);
882
+ } catch (error) {
883
+ return handleQueryError(error);
884
+ }
885
+ function handleQueryResult(result) {
886
+ let response = isResponse(result) ? result : staticContextToResponse(result);
887
+ if (isRedirectResponse(response)) {
912
888
  return generateSingleFetchResponse(request, build, serverMode, {
913
889
  result: {
914
890
  [SingleFetchRedirectSymbol]: getSingleFetchRedirect(
915
- result.status,
916
- result.headers,
891
+ response.status,
892
+ response.headers,
917
893
  build.basename
918
894
  )
919
895
  },
920
- headers: result.headers,
896
+ headers: response.headers,
921
897
  status: SINGLE_FETCH_REDIRECT_STATUS
922
898
  });
923
899
  }
924
- return result;
925
- } catch (error) {
900
+ return response;
901
+ }
902
+ function handleQueryError(error) {
926
903
  handleError(error);
927
904
  return generateSingleFetchResponse(request, build, serverMode, {
928
- result: { root: { error } },
905
+ result: { error },
929
906
  headers: new Headers(),
930
907
  status: 500
931
908
  });
932
909
  }
910
+ function staticContextToResponse(context) {
911
+ let headers = getDocumentHeaders(context, build);
912
+ if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
913
+ return generateSingleFetchResponse(request, build, serverMode, {
914
+ result: {
915
+ [SingleFetchRedirectSymbol]: getSingleFetchRedirect(
916
+ context.statusCode,
917
+ headers,
918
+ build.basename
919
+ )
920
+ },
921
+ headers,
922
+ status: SINGLE_FETCH_REDIRECT_STATUS
923
+ });
924
+ }
925
+ if (context.errors) {
926
+ Object.values(context.errors).forEach((err) => {
927
+ if (!isRouteErrorResponse(err) || err.error) {
928
+ handleError(err);
929
+ }
930
+ });
931
+ context.errors = sanitizeErrors(context.errors, serverMode);
932
+ }
933
+ let results = {};
934
+ let loadedMatches = new Set(
935
+ context.matches.filter(
936
+ (m) => loadRouteIds ? loadRouteIds.has(m.route.id) : m.route.loader != null
937
+ ).map((m) => m.route.id)
938
+ );
939
+ if (context.errors) {
940
+ for (let [id, error] of Object.entries(context.errors)) {
941
+ results[id] = { error };
942
+ }
943
+ }
944
+ for (let [id, data2] of Object.entries(context.loaderData)) {
945
+ if (!(id in results) && loadedMatches.has(id)) {
946
+ results[id] = { data: data2 };
947
+ }
948
+ }
949
+ return generateSingleFetchResponse(request, build, serverMode, {
950
+ result: results,
951
+ headers,
952
+ status: context.statusCode
953
+ });
954
+ }
933
955
  }
934
956
  function generateSingleFetchResponse(request, build, serverMode, {
935
957
  result,
@@ -1074,23 +1096,14 @@ var createRequestHandler = (build, mode) => {
1074
1096
  });
1075
1097
  };
1076
1098
  if (_build.future.unstable_middleware) {
1077
- if (initialContext == null) {
1078
- loadContext = new unstable_RouterContextProvider();
1079
- } else {
1080
- try {
1081
- loadContext = new unstable_RouterContextProvider(
1082
- initialContext
1083
- );
1084
- } catch (e) {
1085
- let error = new Error(
1086
- `Unable to create initial \`unstable_RouterContextProvider\` instance. Please confirm you are returning an instance of \`Map<unstable_routerContext, unknown>\` from your \`getLoadContext\` function.
1087
-
1088
- Error: ${e instanceof Error ? e.toString() : e}`
1089
- );
1090
- handleError(error);
1091
- return returnLastResortErrorResponse(error, serverMode);
1092
- }
1099
+ if (initialContext && !(initialContext instanceof unstable_RouterContextProvider)) {
1100
+ let error = new Error(
1101
+ "Invalid `context` value provided to `handleRequest`. When middleware is enabled you must return an instance of `unstable_RouterContextProvider` from your `getLoadContext` function."
1102
+ );
1103
+ handleError(error);
1104
+ return returnLastResortErrorResponse(error, serverMode);
1093
1105
  }
1106
+ loadContext = initialContext || new unstable_RouterContextProvider();
1094
1107
  } else {
1095
1108
  loadContext = initialContext || {};
1096
1109
  }
@@ -1304,19 +1317,30 @@ async function handleSingleFetchRequest(serverMode, build, staticHandler, reques
1304
1317
  }
1305
1318
  async function handleDocumentRequest(serverMode, build, staticHandler, request, loadContext, handleError, isSpaMode, criticalCss) {
1306
1319
  try {
1307
- let response = await staticHandler.query(request, {
1320
+ let result = await staticHandler.query(request, {
1308
1321
  requestContext: loadContext,
1309
- unstable_respond: build.future.unstable_middleware ? (ctx) => renderHtml(ctx, isSpaMode) : void 0
1322
+ unstable_generateMiddlewareResponse: build.future.unstable_middleware ? async (query) => {
1323
+ try {
1324
+ let innerResult = await query(request);
1325
+ if (!isResponse(innerResult)) {
1326
+ innerResult = await renderHtml(innerResult, isSpaMode);
1327
+ }
1328
+ return innerResult;
1329
+ } catch (error) {
1330
+ handleError(error);
1331
+ return new Response(null, { status: 500 });
1332
+ }
1333
+ } : void 0
1310
1334
  });
1311
- return isResponse(response) ? response : renderHtml(response, isSpaMode);
1335
+ if (!isResponse(result)) {
1336
+ result = await renderHtml(result, isSpaMode);
1337
+ }
1338
+ return result;
1312
1339
  } catch (error) {
1313
1340
  handleError(error);
1314
1341
  return new Response(null, { status: 500 });
1315
1342
  }
1316
1343
  async function renderHtml(context, isSpaMode2) {
1317
- if (isResponse(context)) {
1318
- return context;
1319
- }
1320
1344
  let headers = getDocumentHeaders(context, build);
1321
1345
  if (SERVER_NO_BODY_STATUS_CODES.has(context.statusCode)) {
1322
1346
  return new Response(null, { status: context.statusCode, headers });
@@ -1428,27 +1452,38 @@ async function handleDocumentRequest(serverMode, build, staticHandler, request,
1428
1452
  }
1429
1453
  async function handleResourceRequest(serverMode, build, staticHandler, routeId, request, loadContext, handleError) {
1430
1454
  try {
1431
- let response = await staticHandler.queryRoute(request, {
1455
+ let result = await staticHandler.queryRoute(request, {
1432
1456
  routeId,
1433
1457
  requestContext: loadContext,
1434
- unstable_respond: build.future.unstable_middleware ? (ctx) => ctx : void 0
1458
+ unstable_generateMiddlewareResponse: build.future.unstable_middleware ? async (queryRoute) => {
1459
+ try {
1460
+ let innerResult = await queryRoute(request);
1461
+ return handleQueryRouteResult(innerResult);
1462
+ } catch (error) {
1463
+ return handleQueryRouteError(error);
1464
+ }
1465
+ } : void 0
1435
1466
  });
1436
- if (isResponse(response)) {
1437
- return response;
1467
+ return handleQueryRouteResult(result);
1468
+ } catch (error) {
1469
+ return handleQueryRouteError(error);
1470
+ }
1471
+ function handleQueryRouteResult(result) {
1472
+ if (isResponse(result)) {
1473
+ return result;
1438
1474
  }
1439
- if (typeof response === "string") {
1440
- return new Response(response);
1475
+ if (typeof result === "string") {
1476
+ return new Response(result);
1441
1477
  }
1442
- return Response.json(response);
1443
- } catch (error) {
1478
+ return Response.json(result);
1479
+ }
1480
+ function handleQueryRouteError(error) {
1444
1481
  if (isResponse(error)) {
1445
1482
  error.headers.set("X-Remix-Catch", "yes");
1446
1483
  return error;
1447
1484
  }
1448
1485
  if (isRouteErrorResponse(error)) {
1449
- if (error) {
1450
- handleError(error);
1451
- }
1486
+ handleError(error);
1452
1487
  return errorResponseToJson(error, serverMode);
1453
1488
  }
1454
1489
  if (error instanceof Error && error.message === "Expected a response from queryRoute") {
@@ -2440,6 +2475,14 @@ function escapeScript(script) {
2440
2475
  }
2441
2476
 
2442
2477
  // lib/rsc/server.ssr.tsx
2478
+ var REACT_USE = "use";
2479
+ var useImpl = React5[REACT_USE];
2480
+ function useSafe(promise) {
2481
+ if (useImpl) {
2482
+ return useImpl(promise);
2483
+ }
2484
+ throw new Error("React Router v7 requires React 19+ for RSC features.");
2485
+ }
2443
2486
  async function routeRSCServerRequest({
2444
2487
  request,
2445
2488
  fetchServer,
@@ -2494,7 +2537,7 @@ async function routeRSCServerRequest({
2494
2537
  }
2495
2538
  }
2496
2539
  function RSCStaticRouter({ getPayload }) {
2497
- const payload = React5.use(getPayload());
2540
+ const payload = useSafe(getPayload());
2498
2541
  if (payload.type === "redirect") {
2499
2542
  throw new Response(null, {
2500
2543
  status: payload.status,