react-router 0.0.0-experimental-84753c0 → 0.0.0-experimental-14dc7c1
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 +7 -0
- package/dist/development/{chunk-7BNQ3X22.mjs → chunk-7DQFGJJ6.mjs} +136 -75
- package/dist/development/{chunk-2XECXUWB.mjs → chunk-BP2L2QSJ.mjs} +43 -65
- package/dist/development/{chunk-BKA6MN6C.js → chunk-H4AF2Q5N.js} +130 -130
- package/dist/development/{chunk-WFJQVGQ4.js → chunk-LEPJCRFN.js} +135 -74
- package/dist/development/{components-BeoSj2y5.d.mts → components-Cjychfep.d.mts} +10 -2
- package/dist/development/{route-data-DLWzV8y8.d.mts → context-BAwKA7g7.d.mts} +11 -505
- package/dist/development/dom-export.d.mts +3 -13
- package/dist/development/dom-export.d.ts +1 -12
- package/dist/development/dom-export.js +7 -17
- package/dist/development/dom-export.mjs +6 -14
- package/dist/development/{index-react-server-client-CD1wssaX.d.mts → index-react-server-client-CVAOeyiE.d.mts} +53 -7
- package/dist/{production/index-react-server-client-DWvSxTlp.d.ts → development/index-react-server-client-DTXbCziZ.d.ts} +167 -114
- package/dist/development/index-react-server-client.d.mts +4 -3
- package/dist/development/index-react-server-client.d.ts +2 -2
- package/dist/development/index-react-server-client.js +4 -4
- package/dist/development/index-react-server-client.mjs +2 -2
- package/dist/development/index-react-server.d.mts +20 -8
- package/dist/development/index-react-server.d.ts +20 -8
- package/dist/development/index-react-server.js +65 -21
- package/dist/development/index-react-server.mjs +65 -21
- package/dist/development/index.d.mts +24 -18
- package/dist/development/index.d.ts +20 -16
- package/dist/development/index.js +136 -130
- package/dist/development/index.mjs +3 -3
- package/dist/development/lib/types/internal.d.mts +13 -2
- package/dist/development/lib/types/internal.d.ts +12 -2
- package/dist/development/lib/types/internal.js +1 -1
- package/dist/development/lib/types/internal.mjs +1 -1
- package/dist/development/route-data-BM3tG11r.d.mts +473 -0
- package/dist/development/{routeModules-DGh-lOIY.d.ts → routeModules-DwtFmuor.d.ts} +41 -65
- package/dist/production/{chunk-ZGP5JW47.mjs → chunk-G5NQ7XVU.mjs} +136 -75
- package/dist/production/{chunk-DNCPQZC4.js → chunk-LCCWW6YM.js} +130 -130
- package/dist/production/{chunk-XVO4RTEQ.js → chunk-O3KQFSZ2.js} +135 -74
- package/dist/production/{chunk-VJVBIB4Y.mjs → chunk-RKV2C73T.mjs} +43 -65
- package/dist/production/{components-BeoSj2y5.d.mts → components-Cjychfep.d.mts} +10 -2
- package/dist/production/{route-data-DLWzV8y8.d.mts → context-BAwKA7g7.d.mts} +11 -505
- package/dist/production/dom-export.d.mts +3 -13
- package/dist/production/dom-export.d.ts +1 -12
- package/dist/production/dom-export.js +7 -17
- package/dist/production/dom-export.mjs +6 -14
- package/dist/production/{index-react-server-client-CD1wssaX.d.mts → index-react-server-client-CVAOeyiE.d.mts} +53 -7
- package/dist/{development/index-react-server-client-DWvSxTlp.d.ts → production/index-react-server-client-DTXbCziZ.d.ts} +167 -114
- package/dist/production/index-react-server-client.d.mts +4 -3
- package/dist/production/index-react-server-client.d.ts +2 -2
- package/dist/production/index-react-server-client.js +4 -4
- package/dist/production/index-react-server-client.mjs +2 -2
- package/dist/production/index-react-server.d.mts +20 -8
- package/dist/production/index-react-server.d.ts +20 -8
- package/dist/production/index-react-server.js +65 -21
- package/dist/production/index-react-server.mjs +65 -21
- package/dist/production/index.d.mts +24 -18
- package/dist/production/index.d.ts +20 -16
- package/dist/production/index.js +136 -130
- package/dist/production/index.mjs +3 -3
- package/dist/production/lib/types/internal.d.mts +13 -2
- package/dist/production/lib/types/internal.d.ts +12 -2
- package/dist/production/lib/types/internal.js +1 -1
- package/dist/production/lib/types/internal.mjs +1 -1
- package/dist/production/route-data-BM3tG11r.d.mts +473 -0
- package/dist/production/{routeModules-DGh-lOIY.d.ts → routeModules-DwtFmuor.d.ts} +41 -65
- package/package.json +1 -1
- package/dist/development/chunk-OYS64IUQ.js +0 -42
- package/dist/production/chunk-OYS64IUQ.js +0 -42
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# `react-router`
|
|
2
2
|
|
|
3
|
+
## 7.7.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- In RSC Data Mode, fix bug where routes with errors weren't forced to revalidate when `shouldRevalidate` returned false ([#14026](https://github.com/remix-run/react-router/pull/14026))
|
|
8
|
+
- In RSC Data Mode, fix `Matched leaf route at location "/..." does not have an element or Component` warnings when error boundaries are rendered. ([#14021](https://github.com/remix-run/react-router/pull/14021))
|
|
9
|
+
|
|
3
10
|
## 7.7.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* react-router v0.0.0-experimental-
|
|
2
|
+
* react-router v0.0.0-experimental-14dc7c1
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -489,6 +489,7 @@ function convertRouteMatchToUiMatch(match, loaderData) {
|
|
|
489
489
|
pathname,
|
|
490
490
|
params,
|
|
491
491
|
data: loaderData[route.id],
|
|
492
|
+
loaderData: loaderData[route.id],
|
|
492
493
|
handle: route.handle
|
|
493
494
|
};
|
|
494
495
|
}
|
|
@@ -1434,9 +1435,7 @@ function createRouter(init) {
|
|
|
1434
1435
|
pendingNavigationController.signal,
|
|
1435
1436
|
opts && opts.submission
|
|
1436
1437
|
);
|
|
1437
|
-
let scopedContext = new unstable_RouterContextProvider(
|
|
1438
|
-
init.unstable_getContext ? await init.unstable_getContext() : void 0
|
|
1439
|
-
);
|
|
1438
|
+
let scopedContext = init.unstable_getContext ? await init.unstable_getContext() : new unstable_RouterContextProvider();
|
|
1440
1439
|
let pendingActionResult;
|
|
1441
1440
|
if (opts && opts.pendingError) {
|
|
1442
1441
|
pendingActionResult = [
|
|
@@ -1857,9 +1856,7 @@ function createRouter(init) {
|
|
|
1857
1856
|
setFetcherError(key, routeId, error, { flushSync });
|
|
1858
1857
|
return;
|
|
1859
1858
|
}
|
|
1860
|
-
let scopedContext = new unstable_RouterContextProvider(
|
|
1861
|
-
init.unstable_getContext ? await init.unstable_getContext() : void 0
|
|
1862
|
-
);
|
|
1859
|
+
let scopedContext = init.unstable_getContext ? await init.unstable_getContext() : new unstable_RouterContextProvider();
|
|
1863
1860
|
let preventScrollReset = (opts && opts.preventScrollReset) === true;
|
|
1864
1861
|
if (submission && isMutationMethod(submission.formMethod)) {
|
|
1865
1862
|
await handleFetcherAction(
|
|
@@ -2718,7 +2715,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2718
2715
|
let location = createLocation("", createPath(url), null, "default");
|
|
2719
2716
|
let matches = matchRoutes(dataRoutes, location, basename);
|
|
2720
2717
|
requestContext = requestContext != null ? requestContext : new unstable_RouterContextProvider();
|
|
2721
|
-
let
|
|
2718
|
+
let shortCircuitResult = (ctx) => {
|
|
2722
2719
|
return stream ? stream(
|
|
2723
2720
|
requestContext,
|
|
2724
2721
|
() => Promise.resolve(ctx)
|
|
@@ -2740,7 +2737,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2740
2737
|
loaderHeaders: {},
|
|
2741
2738
|
actionHeaders: {}
|
|
2742
2739
|
};
|
|
2743
|
-
return
|
|
2740
|
+
return shortCircuitResult(staticContext);
|
|
2744
2741
|
} else if (!matches) {
|
|
2745
2742
|
let error = getInternalRouterError(404, { pathname: location.pathname });
|
|
2746
2743
|
let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);
|
|
@@ -2757,7 +2754,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2757
2754
|
loaderHeaders: {},
|
|
2758
2755
|
actionHeaders: {}
|
|
2759
2756
|
};
|
|
2760
|
-
return
|
|
2757
|
+
return shortCircuitResult(staticContext);
|
|
2761
2758
|
}
|
|
2762
2759
|
if (stream || respond && matches.some(
|
|
2763
2760
|
(m) => m.route.unstable_middleware || typeof m.route.lazy === "object" && m.route.lazy.unstable_middleware
|
|
@@ -2837,7 +2834,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2837
2834
|
error,
|
|
2838
2835
|
skipLoaderErrorBubbling ? routeId : findNearestBoundary(matches, routeId).route.id
|
|
2839
2836
|
);
|
|
2840
|
-
return
|
|
2837
|
+
return stream ? stream(requestContext, () => Promise.resolve(staticContext)) : respond(staticContext);
|
|
2841
2838
|
} else {
|
|
2842
2839
|
let boundaryRouteId = skipLoaderErrorBubbling ? routeId : findNearestBoundary(
|
|
2843
2840
|
matches,
|
|
@@ -2858,7 +2855,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2858
2855
|
actionHeaders: {},
|
|
2859
2856
|
loaderHeaders: {}
|
|
2860
2857
|
};
|
|
2861
|
-
return
|
|
2858
|
+
return stream ? stream(requestContext, () => Promise.resolve(staticContext)) : respond(staticContext);
|
|
2862
2859
|
}
|
|
2863
2860
|
}
|
|
2864
2861
|
);
|
|
@@ -2891,7 +2888,8 @@ function createStaticHandler(routes, opts) {
|
|
|
2891
2888
|
routeId,
|
|
2892
2889
|
requestContext,
|
|
2893
2890
|
dataStrategy,
|
|
2894
|
-
unstable_respond: respond
|
|
2891
|
+
unstable_respond: respond,
|
|
2892
|
+
unstable_stream: stream
|
|
2895
2893
|
} = {}) {
|
|
2896
2894
|
let url = new URL(request.url);
|
|
2897
2895
|
let method = request.method;
|
|
@@ -2912,7 +2910,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2912
2910
|
} else if (!match) {
|
|
2913
2911
|
throw getInternalRouterError(404, { pathname: location.pathname });
|
|
2914
2912
|
}
|
|
2915
|
-
if (respond && matches.some(
|
|
2913
|
+
if (stream || respond && matches.some(
|
|
2916
2914
|
(m) => m.route.unstable_middleware || typeof m.route.lazy === "object" && m.route.lazy.unstable_middleware
|
|
2917
2915
|
)) {
|
|
2918
2916
|
invariant(
|
|
@@ -2931,6 +2929,35 @@ function createStaticHandler(routes, opts) {
|
|
|
2931
2929
|
},
|
|
2932
2930
|
true,
|
|
2933
2931
|
async () => {
|
|
2932
|
+
if (stream) {
|
|
2933
|
+
let res = await stream(
|
|
2934
|
+
requestContext,
|
|
2935
|
+
async (revalidationRequest) => {
|
|
2936
|
+
let result3 = await queryImpl(
|
|
2937
|
+
revalidationRequest,
|
|
2938
|
+
location,
|
|
2939
|
+
matches,
|
|
2940
|
+
requestContext,
|
|
2941
|
+
dataStrategy || null,
|
|
2942
|
+
false,
|
|
2943
|
+
match,
|
|
2944
|
+
null,
|
|
2945
|
+
false
|
|
2946
|
+
);
|
|
2947
|
+
if (isResponse(result3)) {
|
|
2948
|
+
return result3;
|
|
2949
|
+
}
|
|
2950
|
+
let error3 = result3.errors ? Object.values(result3.errors)[0] : void 0;
|
|
2951
|
+
if (error3 !== void 0) {
|
|
2952
|
+
throw error3;
|
|
2953
|
+
}
|
|
2954
|
+
let value2 = result3.actionData ? Object.values(result3.actionData)[0] : Object.values(result3.loaderData)[0];
|
|
2955
|
+
return typeof value2 === "string" ? new Response(value2) : Response.json(value2);
|
|
2956
|
+
}
|
|
2957
|
+
);
|
|
2958
|
+
return res;
|
|
2959
|
+
}
|
|
2960
|
+
invariant(respond, "Expected respond to be defined");
|
|
2934
2961
|
let result2 = await queryImpl(
|
|
2935
2962
|
request,
|
|
2936
2963
|
location,
|
|
@@ -2950,16 +2977,15 @@ function createStaticHandler(routes, opts) {
|
|
|
2950
2977
|
throw error2;
|
|
2951
2978
|
}
|
|
2952
2979
|
let value = result2.actionData ? Object.values(result2.actionData)[0] : Object.values(result2.loaderData)[0];
|
|
2953
|
-
return
|
|
2980
|
+
return respond(
|
|
2981
|
+
typeof value === "string" ? new Response(value) : Response.json(value)
|
|
2982
|
+
);
|
|
2954
2983
|
},
|
|
2955
2984
|
(error2) => {
|
|
2956
2985
|
if (isResponse(error2)) {
|
|
2957
|
-
return respond(error2);
|
|
2986
|
+
return respond ? respond(error2) : error2;
|
|
2958
2987
|
}
|
|
2959
|
-
|
|
2960
|
-
status: 500,
|
|
2961
|
-
statusText: "Unexpected Server Error"
|
|
2962
|
-
});
|
|
2988
|
+
throw error2;
|
|
2963
2989
|
}
|
|
2964
2990
|
);
|
|
2965
2991
|
return response;
|
|
@@ -3951,7 +3977,22 @@ async function runMiddlewarePipeline(args, propagateResult, handler, errorHandle
|
|
|
3951
3977
|
middlewareState,
|
|
3952
3978
|
handler
|
|
3953
3979
|
);
|
|
3954
|
-
|
|
3980
|
+
if (propagateResult) {
|
|
3981
|
+
invariant(
|
|
3982
|
+
isResponse(result) || isDataWithResponseInit(result),
|
|
3983
|
+
`Expected a Response to be returned from route middleware`
|
|
3984
|
+
);
|
|
3985
|
+
if (isDataWithResponseInit(result)) {
|
|
3986
|
+
return new Response(
|
|
3987
|
+
typeof result.data === "string" ? result.data : JSON.stringify(result.data),
|
|
3988
|
+
{ ...result.init }
|
|
3989
|
+
);
|
|
3990
|
+
} else {
|
|
3991
|
+
return result;
|
|
3992
|
+
}
|
|
3993
|
+
} else {
|
|
3994
|
+
return middlewareState.handlerResult;
|
|
3995
|
+
}
|
|
3955
3996
|
} catch (e) {
|
|
3956
3997
|
if (!middlewareState.middlewareError) {
|
|
3957
3998
|
throw e;
|
|
@@ -4011,14 +4052,25 @@ async function callRouteMiddleware(args, middlewares, propagateResult, middlewar
|
|
|
4011
4052
|
},
|
|
4012
4053
|
next
|
|
4013
4054
|
);
|
|
4014
|
-
if (
|
|
4015
|
-
if (
|
|
4016
|
-
return nextResult;
|
|
4017
|
-
} else {
|
|
4055
|
+
if (propagateResult) {
|
|
4056
|
+
if (nextCalled) {
|
|
4057
|
+
return typeof result === "undefined" ? nextResult : result;
|
|
4058
|
+
} else if (isResponse(result) || isDataWithResponseInit(result)) {
|
|
4018
4059
|
return result;
|
|
4060
|
+
} else {
|
|
4061
|
+
nextResult = await next();
|
|
4062
|
+
return nextResult;
|
|
4019
4063
|
}
|
|
4020
4064
|
} else {
|
|
4021
|
-
|
|
4065
|
+
if (typeof result !== "undefined") {
|
|
4066
|
+
console.warn(
|
|
4067
|
+
"client middlewares are not intended to return values, the value will be ignored",
|
|
4068
|
+
result
|
|
4069
|
+
);
|
|
4070
|
+
}
|
|
4071
|
+
if (!nextCalled) {
|
|
4072
|
+
await next();
|
|
4073
|
+
}
|
|
4022
4074
|
}
|
|
4023
4075
|
} catch (error) {
|
|
4024
4076
|
if (!middlewareState.middlewareError) {
|
|
@@ -7366,6 +7418,34 @@ import * as React9 from "react";
|
|
|
7366
7418
|
// lib/dom/ssr/components.tsx
|
|
7367
7419
|
import * as React8 from "react";
|
|
7368
7420
|
|
|
7421
|
+
// lib/dom/ssr/routeModules.ts
|
|
7422
|
+
async function loadRouteModule(route, routeModulesCache) {
|
|
7423
|
+
if (route.id in routeModulesCache) {
|
|
7424
|
+
return routeModulesCache[route.id];
|
|
7425
|
+
}
|
|
7426
|
+
try {
|
|
7427
|
+
let routeModule = await import(
|
|
7428
|
+
/* @vite-ignore */
|
|
7429
|
+
/* webpackIgnore: true */
|
|
7430
|
+
route.module
|
|
7431
|
+
);
|
|
7432
|
+
routeModulesCache[route.id] = routeModule;
|
|
7433
|
+
return routeModule;
|
|
7434
|
+
} catch (error) {
|
|
7435
|
+
console.error(
|
|
7436
|
+
`Error loading route module \`${route.module}\`, reloading page...`
|
|
7437
|
+
);
|
|
7438
|
+
console.error(error);
|
|
7439
|
+
if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error
|
|
7440
|
+
import.meta.hot) {
|
|
7441
|
+
throw error;
|
|
7442
|
+
}
|
|
7443
|
+
window.location.reload();
|
|
7444
|
+
return new Promise(() => {
|
|
7445
|
+
});
|
|
7446
|
+
}
|
|
7447
|
+
}
|
|
7448
|
+
|
|
7369
7449
|
// lib/dom/ssr/links.ts
|
|
7370
7450
|
function getKeyedLinksForMatches(matches, routeModules, manifest) {
|
|
7371
7451
|
let descriptors = matches.map((match) => {
|
|
@@ -7447,7 +7527,7 @@ function isHtmlLinkDescriptor(object) {
|
|
|
7447
7527
|
}
|
|
7448
7528
|
return typeof object.rel === "string" && typeof object.href === "string";
|
|
7449
7529
|
}
|
|
7450
|
-
async function getKeyedPrefetchLinks(matches, manifest, routeModules
|
|
7530
|
+
async function getKeyedPrefetchLinks(matches, manifest, routeModules) {
|
|
7451
7531
|
let links = await Promise.all(
|
|
7452
7532
|
matches.map(async (match) => {
|
|
7453
7533
|
let route = manifest.routes[match.route.id];
|
|
@@ -7670,14 +7750,13 @@ function createServerRoutes(manifest, routeModules, future, isSpaMode, parentId
|
|
|
7670
7750
|
return dataRoute;
|
|
7671
7751
|
});
|
|
7672
7752
|
}
|
|
7673
|
-
function createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode
|
|
7753
|
+
function createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {
|
|
7674
7754
|
return createClientRoutes(
|
|
7675
7755
|
manifest,
|
|
7676
7756
|
routeModulesCache,
|
|
7677
7757
|
initialState,
|
|
7678
7758
|
ssr,
|
|
7679
7759
|
isSpaMode,
|
|
7680
|
-
loadRouteModule,
|
|
7681
7760
|
"",
|
|
7682
7761
|
groupRoutesByParentId(manifest),
|
|
7683
7762
|
needsRevalidation
|
|
@@ -7697,7 +7776,7 @@ function noActionDefinedError(type, routeId) {
|
|
|
7697
7776
|
console.error(msg);
|
|
7698
7777
|
throw new ErrorResponseImpl(405, "Method Not Allowed", new Error(msg), true);
|
|
7699
7778
|
}
|
|
7700
|
-
function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode,
|
|
7779
|
+
function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = "", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {
|
|
7701
7780
|
return (routesByParentId[parentId] || []).map((route) => {
|
|
7702
7781
|
let routeModule = routeModulesCache[route.id];
|
|
7703
7782
|
function fetchServerHandler(singleFetch) {
|
|
@@ -7852,8 +7931,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSp
|
|
|
7852
7931
|
}
|
|
7853
7932
|
let routeModulePromise = loadRouteModuleWithBlockingLinks(
|
|
7854
7933
|
route,
|
|
7855
|
-
routeModulesCache
|
|
7856
|
-
loadRouteModule
|
|
7934
|
+
routeModulesCache
|
|
7857
7935
|
);
|
|
7858
7936
|
prefetchRouteModuleChunks(route);
|
|
7859
7937
|
return await routeModulePromise;
|
|
@@ -7928,7 +8006,6 @@ function createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSp
|
|
|
7928
8006
|
initialState,
|
|
7929
8007
|
ssr,
|
|
7930
8008
|
isSpaMode,
|
|
7931
|
-
loadRouteModule,
|
|
7932
8009
|
route.id,
|
|
7933
8010
|
routesByParentId,
|
|
7934
8011
|
needsRevalidation
|
|
@@ -7974,7 +8051,7 @@ function wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalid
|
|
|
7974
8051
|
return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;
|
|
7975
8052
|
};
|
|
7976
8053
|
}
|
|
7977
|
-
async function loadRouteModuleWithBlockingLinks(route, routeModules
|
|
8054
|
+
async function loadRouteModuleWithBlockingLinks(route, routeModules) {
|
|
7978
8055
|
let routeModulePromise = loadRouteModule(route, routeModules);
|
|
7979
8056
|
let prefetchRouteCssPromise = prefetchRouteCss(route);
|
|
7980
8057
|
let routeModule = await routeModulePromise;
|
|
@@ -8038,7 +8115,7 @@ function getPartialManifest({ sri, ...manifest }, router) {
|
|
|
8038
8115
|
sri: sri ? true : void 0
|
|
8039
8116
|
};
|
|
8040
8117
|
}
|
|
8041
|
-
function getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, routeDiscovery, isSpaMode, basename
|
|
8118
|
+
function getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, routeDiscovery, isSpaMode, basename) {
|
|
8042
8119
|
if (!isFogOfWarEnabled(routeDiscovery, ssr)) {
|
|
8043
8120
|
return void 0;
|
|
8044
8121
|
}
|
|
@@ -8053,7 +8130,6 @@ function getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, routeDi
|
|
|
8053
8130
|
routeModules,
|
|
8054
8131
|
ssr,
|
|
8055
8132
|
isSpaMode,
|
|
8056
|
-
loadRouteModule,
|
|
8057
8133
|
basename,
|
|
8058
8134
|
routeDiscovery.manifestPath,
|
|
8059
8135
|
patch,
|
|
@@ -8061,7 +8137,7 @@ function getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, routeDi
|
|
|
8061
8137
|
);
|
|
8062
8138
|
};
|
|
8063
8139
|
}
|
|
8064
|
-
function useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscovery, isSpaMode
|
|
8140
|
+
function useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscovery, isSpaMode) {
|
|
8065
8141
|
React7.useEffect(() => {
|
|
8066
8142
|
if (!isFogOfWarEnabled(routeDiscovery, ssr) || // @ts-expect-error - TS doesn't know about this yet
|
|
8067
8143
|
window.navigator?.connection?.saveData === true) {
|
|
@@ -8097,7 +8173,6 @@ function useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscover
|
|
|
8097
8173
|
routeModules,
|
|
8098
8174
|
ssr,
|
|
8099
8175
|
isSpaMode,
|
|
8100
|
-
loadRouteModule,
|
|
8101
8176
|
router.basename,
|
|
8102
8177
|
routeDiscovery.manifestPath,
|
|
8103
8178
|
router.patchRoutes
|
|
@@ -8116,15 +8191,7 @@ function useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscover
|
|
|
8116
8191
|
attributeFilter: ["data-discover", "href", "action"]
|
|
8117
8192
|
});
|
|
8118
8193
|
return () => observer.disconnect();
|
|
8119
|
-
}, [
|
|
8120
|
-
ssr,
|
|
8121
|
-
isSpaMode,
|
|
8122
|
-
manifest,
|
|
8123
|
-
routeModules,
|
|
8124
|
-
router,
|
|
8125
|
-
routeDiscovery,
|
|
8126
|
-
loadRouteModule
|
|
8127
|
-
]);
|
|
8194
|
+
}, [ssr, isSpaMode, manifest, routeModules, router, routeDiscovery]);
|
|
8128
8195
|
}
|
|
8129
8196
|
function getManifestPath(_manifestPath, basename) {
|
|
8130
8197
|
let manifestPath = _manifestPath || "/__manifest";
|
|
@@ -8134,13 +8201,15 @@ function getManifestPath(_manifestPath, basename) {
|
|
|
8134
8201
|
return `${basename}${manifestPath}`.replace(/\/+/g, "/");
|
|
8135
8202
|
}
|
|
8136
8203
|
var MANIFEST_VERSION_STORAGE_KEY = "react-router-manifest-version";
|
|
8137
|
-
async function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, routeModules, ssr, isSpaMode,
|
|
8204
|
+
async function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, routeModules, ssr, isSpaMode, basename, manifestPath, patchRoutes, signal) {
|
|
8205
|
+
const searchParams = new URLSearchParams();
|
|
8206
|
+
paths.sort().forEach((path) => searchParams.append("p", path));
|
|
8207
|
+
searchParams.set("version", manifest.version);
|
|
8138
8208
|
let url = new URL(
|
|
8139
8209
|
getManifestPath(manifestPath, basename),
|
|
8140
8210
|
window.location.origin
|
|
8141
8211
|
);
|
|
8142
|
-
|
|
8143
|
-
url.searchParams.set("version", manifest.version);
|
|
8212
|
+
url.search = searchParams.toString();
|
|
8144
8213
|
if (url.toString().length > URL_LIMIT) {
|
|
8145
8214
|
nextPaths.clear();
|
|
8146
8215
|
return;
|
|
@@ -8195,15 +8264,7 @@ async function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, ro
|
|
|
8195
8264
|
parentIds.forEach(
|
|
8196
8265
|
(parentId) => patchRoutes(
|
|
8197
8266
|
parentId || null,
|
|
8198
|
-
createClientRoutes(
|
|
8199
|
-
patches,
|
|
8200
|
-
routeModules,
|
|
8201
|
-
null,
|
|
8202
|
-
ssr,
|
|
8203
|
-
isSpaMode,
|
|
8204
|
-
loadRouteModule,
|
|
8205
|
-
parentId
|
|
8206
|
-
)
|
|
8267
|
+
createClientRoutes(patches, routeModules, null, ssr, isSpaMode, parentId)
|
|
8207
8268
|
)
|
|
8208
8269
|
);
|
|
8209
8270
|
}
|
|
@@ -8326,7 +8387,7 @@ function getActiveMatches(matches, errors, isSpaMode) {
|
|
|
8326
8387
|
return matches;
|
|
8327
8388
|
}
|
|
8328
8389
|
var CRITICAL_CSS_DATA_ATTRIBUTE = "data-react-router-critical-css";
|
|
8329
|
-
function Links() {
|
|
8390
|
+
function Links({ nonce }) {
|
|
8330
8391
|
let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();
|
|
8331
8392
|
let { errors, matches: routerMatches } = useDataRouterStateContext();
|
|
8332
8393
|
let matches = getActiveMatches(routerMatches, errors, isSpaMode);
|
|
@@ -8345,10 +8406,11 @@ function Links() {
|
|
|
8345
8406
|
{
|
|
8346
8407
|
...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: "" },
|
|
8347
8408
|
rel: "stylesheet",
|
|
8348
|
-
href: criticalCss.href
|
|
8409
|
+
href: criticalCss.href,
|
|
8410
|
+
nonce
|
|
8349
8411
|
}
|
|
8350
8412
|
) : null, keyedLinks.map(
|
|
8351
|
-
({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React8.createElement(PrefetchPageLinks, { key, ...link }) : /* @__PURE__ */ React8.createElement("link", { key, ...link })
|
|
8413
|
+
({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React8.createElement(PrefetchPageLinks, { key, nonce, ...link }) : /* @__PURE__ */ React8.createElement("link", { key, nonce, ...link })
|
|
8352
8414
|
));
|
|
8353
8415
|
}
|
|
8354
8416
|
function PrefetchPageLinks({ page, ...linkProps }) {
|
|
@@ -8363,24 +8425,21 @@ function PrefetchPageLinks({ page, ...linkProps }) {
|
|
|
8363
8425
|
return /* @__PURE__ */ React8.createElement(PrefetchPageLinksImpl, { page, matches, ...linkProps });
|
|
8364
8426
|
}
|
|
8365
8427
|
function useKeyedPrefetchLinks(matches) {
|
|
8366
|
-
let { manifest, routeModules
|
|
8428
|
+
let { manifest, routeModules } = useFrameworkContext();
|
|
8367
8429
|
let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React8.useState([]);
|
|
8368
8430
|
React8.useEffect(() => {
|
|
8369
8431
|
let interrupted = false;
|
|
8370
|
-
void getKeyedPrefetchLinks(
|
|
8371
|
-
|
|
8372
|
-
|
|
8373
|
-
|
|
8374
|
-
|
|
8375
|
-
).then((links) => {
|
|
8376
|
-
if (!interrupted) {
|
|
8377
|
-
setKeyedPrefetchLinks(links);
|
|
8432
|
+
void getKeyedPrefetchLinks(matches, manifest, routeModules).then(
|
|
8433
|
+
(links) => {
|
|
8434
|
+
if (!interrupted) {
|
|
8435
|
+
setKeyedPrefetchLinks(links);
|
|
8436
|
+
}
|
|
8378
8437
|
}
|
|
8379
|
-
|
|
8438
|
+
);
|
|
8380
8439
|
return () => {
|
|
8381
8440
|
interrupted = true;
|
|
8382
8441
|
};
|
|
8383
|
-
}, [matches, manifest, routeModules
|
|
8442
|
+
}, [matches, manifest, routeModules]);
|
|
8384
8443
|
return keyedPrefetchLinks;
|
|
8385
8444
|
}
|
|
8386
8445
|
function PrefetchPageLinksImpl({
|
|
@@ -8462,7 +8521,7 @@ function PrefetchPageLinksImpl({
|
|
|
8462
8521
|
return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement("link", { key: href, rel: "prefetch", as: "fetch", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React8.createElement("link", { key: href, rel: "modulepreload", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (
|
|
8463
8522
|
// these don't spread `linkProps` because they are full link descriptors
|
|
8464
8523
|
// already with their own props
|
|
8465
|
-
/* @__PURE__ */ React8.createElement("link", { key, ...link })
|
|
8524
|
+
/* @__PURE__ */ React8.createElement("link", { key, nonce: linkProps.nonce, ...link })
|
|
8466
8525
|
)));
|
|
8467
8526
|
}
|
|
8468
8527
|
function Meta() {
|
|
@@ -8491,6 +8550,7 @@ function Meta() {
|
|
|
8491
8550
|
let match = {
|
|
8492
8551
|
id: routeId,
|
|
8493
8552
|
data: data2,
|
|
8553
|
+
loaderData: data2,
|
|
8494
8554
|
meta: [],
|
|
8495
8555
|
params: _match.params,
|
|
8496
8556
|
pathname: _match.pathname,
|
|
@@ -8501,6 +8561,7 @@ function Meta() {
|
|
|
8501
8561
|
if (routeModule?.meta) {
|
|
8502
8562
|
routeMeta = typeof routeModule.meta === "function" ? routeModule.meta({
|
|
8503
8563
|
data: data2,
|
|
8564
|
+
loaderData: data2,
|
|
8504
8565
|
params,
|
|
8505
8566
|
location,
|
|
8506
8567
|
matches,
|
|
@@ -8841,7 +8902,7 @@ var isBrowser = typeof window !== "undefined" && typeof window.document !== "und
|
|
|
8841
8902
|
try {
|
|
8842
8903
|
if (isBrowser) {
|
|
8843
8904
|
window.__reactRouterVersion = // @ts-expect-error
|
|
8844
|
-
"0.0.0-experimental-
|
|
8905
|
+
"0.0.0-experimental-14dc7c1";
|
|
8845
8906
|
}
|
|
8846
8907
|
} catch (e) {
|
|
8847
8908
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* react-router v0.0.0-experimental-
|
|
2
|
+
* react-router v0.0.0-experimental-14dc7c1
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -57,40 +57,10 @@ import {
|
|
|
57
57
|
withComponentProps,
|
|
58
58
|
withErrorBoundaryProps,
|
|
59
59
|
withHydrateFallbackProps
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-7DQFGJJ6.mjs";
|
|
61
61
|
|
|
62
62
|
// lib/dom/ssr/server.tsx
|
|
63
63
|
import * as React from "react";
|
|
64
|
-
|
|
65
|
-
// lib/dom/ssr/routeModules.ts
|
|
66
|
-
var defaultLoadRouteModule = async (route, routeModulesCache) => {
|
|
67
|
-
if (route.id in routeModulesCache) {
|
|
68
|
-
return routeModulesCache[route.id];
|
|
69
|
-
}
|
|
70
|
-
try {
|
|
71
|
-
let routeModule = await import(
|
|
72
|
-
/* @vite-ignore */
|
|
73
|
-
/* webpackIgnore: true */
|
|
74
|
-
route.module
|
|
75
|
-
);
|
|
76
|
-
routeModulesCache[route.id] = routeModule;
|
|
77
|
-
return routeModule;
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.error(
|
|
80
|
-
`Error loading route module \`${route.module}\`, reloading page...`
|
|
81
|
-
);
|
|
82
|
-
console.error(error);
|
|
83
|
-
if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error
|
|
84
|
-
import.meta.hot) {
|
|
85
|
-
throw error;
|
|
86
|
-
}
|
|
87
|
-
window.location.reload();
|
|
88
|
-
return new Promise(() => {
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
// lib/dom/ssr/server.tsx
|
|
94
64
|
function ServerRouter({
|
|
95
65
|
context,
|
|
96
66
|
url,
|
|
@@ -136,8 +106,7 @@ function ServerRouter({
|
|
|
136
106
|
isSpaMode: context.isSpaMode,
|
|
137
107
|
routeDiscovery: context.routeDiscovery,
|
|
138
108
|
serializeError: context.serializeError,
|
|
139
|
-
renderMeta: context.renderMeta
|
|
140
|
-
loadRouteModule: defaultLoadRouteModule
|
|
109
|
+
renderMeta: context.renderMeta
|
|
141
110
|
}
|
|
142
111
|
},
|
|
143
112
|
/* @__PURE__ */ React.createElement(RemixErrorBoundary, { location: router.state.location }, /* @__PURE__ */ React.createElement(
|
|
@@ -167,8 +136,7 @@ function createRoutesStub(routes, _context) {
|
|
|
167
136
|
initialEntries,
|
|
168
137
|
initialIndex,
|
|
169
138
|
hydrationData,
|
|
170
|
-
future
|
|
171
|
-
loadRouteModule = defaultLoadRouteModule
|
|
139
|
+
future
|
|
172
140
|
}) {
|
|
173
141
|
let routerRef = React2.useRef();
|
|
174
142
|
let frameworkContextRef = React2.useRef();
|
|
@@ -187,7 +155,6 @@ function createRoutesStub(routes, _context) {
|
|
|
187
155
|
routeModules: {},
|
|
188
156
|
ssr: false,
|
|
189
157
|
isSpaMode: false,
|
|
190
|
-
loadRouteModule,
|
|
191
158
|
routeDiscovery: { mode: "lazy", manifestPath: "/__manifest" }
|
|
192
159
|
};
|
|
193
160
|
let patched = processRoutes(
|
|
@@ -1107,23 +1074,14 @@ var createRequestHandler = (build, mode) => {
|
|
|
1107
1074
|
});
|
|
1108
1075
|
};
|
|
1109
1076
|
if (_build.future.unstable_middleware) {
|
|
1110
|
-
if (initialContext
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
);
|
|
1117
|
-
} catch (e) {
|
|
1118
|
-
let error = new Error(
|
|
1119
|
-
`Unable to create initial \`unstable_RouterContextProvider\` instance. Please confirm you are returning an instance of \`Map<unstable_routerContext, unknown>\` from your \`getLoadContext\` function.
|
|
1120
|
-
|
|
1121
|
-
Error: ${e instanceof Error ? e.toString() : e}`
|
|
1122
|
-
);
|
|
1123
|
-
handleError(error);
|
|
1124
|
-
return returnLastResortErrorResponse(error, serverMode);
|
|
1125
|
-
}
|
|
1077
|
+
if (initialContext && !(initialContext instanceof unstable_RouterContextProvider)) {
|
|
1078
|
+
let error = new Error(
|
|
1079
|
+
"Invalid `context` value provided to `handleRequest`. When middleware is enabled you must return an instance of `unstable_RouterContextProvider` from your `getLoadContext` function."
|
|
1080
|
+
);
|
|
1081
|
+
handleError(error);
|
|
1082
|
+
return returnLastResortErrorResponse(error, serverMode);
|
|
1126
1083
|
}
|
|
1084
|
+
loadContext = initialContext || new unstable_RouterContextProvider();
|
|
1127
1085
|
} else {
|
|
1128
1086
|
loadContext = initialContext || {};
|
|
1129
1087
|
}
|
|
@@ -1394,8 +1352,7 @@ async function handleDocumentRequest(serverMode, build, staticHandler, request,
|
|
|
1394
1352
|
ssr: build.ssr,
|
|
1395
1353
|
routeDiscovery: build.routeDiscovery,
|
|
1396
1354
|
isSpaMode: isSpaMode2,
|
|
1397
|
-
serializeError: (err) => serializeError(err, serverMode)
|
|
1398
|
-
loadRouteModule: defaultLoadRouteModule
|
|
1355
|
+
serializeError: (err) => serializeError(err, serverMode)
|
|
1399
1356
|
};
|
|
1400
1357
|
let handleDocumentRequestFunction = build.entry.module.default;
|
|
1401
1358
|
try {
|
|
@@ -1465,7 +1422,35 @@ async function handleResourceRequest(serverMode, build, staticHandler, routeId,
|
|
|
1465
1422
|
let response = await staticHandler.queryRoute(request, {
|
|
1466
1423
|
routeId,
|
|
1467
1424
|
requestContext: loadContext,
|
|
1468
|
-
|
|
1425
|
+
unstable_stream: build.future.unstable_middleware ? async (_, queryRoute) => {
|
|
1426
|
+
try {
|
|
1427
|
+
let result = await queryRoute(request);
|
|
1428
|
+
if (isResponse(result)) {
|
|
1429
|
+
return result;
|
|
1430
|
+
}
|
|
1431
|
+
if (typeof result === "string") {
|
|
1432
|
+
return new Response(result);
|
|
1433
|
+
}
|
|
1434
|
+
return Response.json(result);
|
|
1435
|
+
} catch (error) {
|
|
1436
|
+
if (isResponse(error)) {
|
|
1437
|
+
return error;
|
|
1438
|
+
}
|
|
1439
|
+
if (isRouteErrorResponse(error)) {
|
|
1440
|
+
handleError(error);
|
|
1441
|
+
return errorResponseToJson(error, serverMode);
|
|
1442
|
+
}
|
|
1443
|
+
if (error instanceof Error && error.message === "Expected a response from queryRoute") {
|
|
1444
|
+
let newError = new Error(
|
|
1445
|
+
"Expected a Response to be returned from resource route handler"
|
|
1446
|
+
);
|
|
1447
|
+
handleError(newError);
|
|
1448
|
+
return returnLastResortErrorResponse(newError, serverMode);
|
|
1449
|
+
}
|
|
1450
|
+
handleError(error);
|
|
1451
|
+
return returnLastResortErrorResponse(error, serverMode);
|
|
1452
|
+
}
|
|
1453
|
+
} : void 0
|
|
1469
1454
|
});
|
|
1470
1455
|
if (isResponse(response)) {
|
|
1471
1456
|
return response;
|
|
@@ -2227,10 +2212,7 @@ function RSCHydratedRouter({
|
|
|
2227
2212
|
}
|
|
2228
2213
|
},
|
|
2229
2214
|
routeDiscovery: { mode: "lazy", manifestPath: "/__manifest" },
|
|
2230
|
-
routeModules: {}
|
|
2231
|
-
loadRouteModule: () => {
|
|
2232
|
-
throw new Error("Not required in RSC Mode");
|
|
2233
|
-
}
|
|
2215
|
+
routeModules: {}
|
|
2234
2216
|
};
|
|
2235
2217
|
return /* @__PURE__ */ React4.createElement(RSCRouterContext.Provider, { value: true }, /* @__PURE__ */ React4.createElement(RSCRouterGlobalErrorBoundary, { location: location2 }, /* @__PURE__ */ React4.createElement(FrameworkContext.Provider, { value: frameworkContext }, /* @__PURE__ */ React4.createElement(RouterProvider, { router, flushSync: ReactDOM.flushSync }))));
|
|
2236
2218
|
}
|
|
@@ -2619,10 +2601,7 @@ function RSCStaticRouter({ getPayload }) {
|
|
|
2619
2601
|
}
|
|
2620
2602
|
},
|
|
2621
2603
|
routeDiscovery: { mode: "lazy", manifestPath: "/__manifest" },
|
|
2622
|
-
routeModules: {}
|
|
2623
|
-
loadRouteModule: () => {
|
|
2624
|
-
throw new Error("Not required in RSC Mode");
|
|
2625
|
-
}
|
|
2604
|
+
routeModules: {}
|
|
2626
2605
|
};
|
|
2627
2606
|
return /* @__PURE__ */ React5.createElement(RSCRouterContext.Provider, { value: true }, /* @__PURE__ */ React5.createElement(RSCRouterGlobalErrorBoundary, { location: payload.location }, /* @__PURE__ */ React5.createElement(FrameworkContext.Provider, { value: frameworkContext }, /* @__PURE__ */ React5.createElement(
|
|
2628
2607
|
StaticRouterProvider,
|
|
@@ -2714,7 +2693,6 @@ function deserializeErrors(errors) {
|
|
|
2714
2693
|
}
|
|
2715
2694
|
|
|
2716
2695
|
export {
|
|
2717
|
-
defaultLoadRouteModule,
|
|
2718
2696
|
ServerRouter,
|
|
2719
2697
|
createRoutesStub,
|
|
2720
2698
|
createCookie,
|