react-router 0.0.0-experimental-1ebb6d403 → 0.0.0-experimental-e41ede670
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 +0 -10
- package/dist/development/{chunk-5XVYBMAF.mjs → chunk-H3OBLXFX.mjs} +767 -514
- package/dist/development/dom-export.d.mts +13 -3
- package/dist/development/dom-export.d.ts +13 -3
- package/dist/development/dom-export.js +272 -108
- package/dist/development/dom-export.mjs +9 -6
- package/dist/{production/fog-of-war-7V7BguJA.d.ts → development/fog-of-war-Bt7PejVF.d.ts} +91 -6
- package/dist/development/{fog-of-war-NQCW9yWR.d.mts → fog-of-war-Dz4n-TU-.d.mts} +91 -6
- package/dist/development/index.d.mts +10 -19
- package/dist/development/index.d.ts +10 -19
- package/dist/development/index.js +767 -514
- package/dist/development/index.mjs +2 -2
- package/dist/development/lib/types/route-module.d.mts +6 -2
- package/dist/development/lib/types/route-module.d.ts +6 -2
- package/dist/development/lib/types/route-module.js +1 -1
- package/dist/development/lib/types/route-module.mjs +1 -1
- package/dist/development/{route-data-JFOfNyPS.d.ts → route-data-C96IyGKo.d.mts} +37 -15
- package/dist/{production/route-data-JFOfNyPS.d.mts → development/route-data-C96IyGKo.d.ts} +37 -15
- package/dist/production/{chunk-CKFZHSMW.mjs → chunk-YBZNESR7.mjs} +767 -514
- package/dist/production/dom-export.d.mts +13 -3
- package/dist/production/dom-export.d.ts +13 -3
- package/dist/production/dom-export.js +272 -108
- package/dist/production/dom-export.mjs +9 -6
- package/dist/{development/fog-of-war-7V7BguJA.d.ts → production/fog-of-war-Bt7PejVF.d.ts} +91 -6
- package/dist/production/{fog-of-war-NQCW9yWR.d.mts → fog-of-war-Dz4n-TU-.d.mts} +91 -6
- package/dist/production/index.d.mts +10 -19
- package/dist/production/index.d.ts +10 -19
- package/dist/production/index.js +767 -514
- package/dist/production/index.mjs +2 -2
- package/dist/production/lib/types/route-module.d.mts +6 -2
- package/dist/production/lib/types/route-module.d.ts +6 -2
- package/dist/production/lib/types/route-module.js +1 -1
- package/dist/production/lib/types/route-module.mjs +1 -1
- package/dist/production/{route-data-JFOfNyPS.d.ts → route-data-C96IyGKo.d.mts} +37 -15
- package/dist/{development/route-data-JFOfNyPS.d.mts → production/route-data-C96IyGKo.d.ts} +37 -15
- package/package.json +2 -17
- package/dist/development/server.d.mts +0 -988
- package/dist/development/server.d.ts +0 -988
- package/dist/development/server.js +0 -1429
- package/dist/development/server.mjs +0 -1406
- package/dist/production/server.d.mts +0 -988
- package/dist/production/server.d.ts +0 -988
- package/dist/production/server.js +0 -1405
- package/dist/production/server.mjs +0 -1382
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* react-router v0.0.0-experimental-
|
|
2
|
+
* react-router v0.0.0-experimental-e41ede670
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -957,7 +957,10 @@ var redirect = (url, init = 302) => {
|
|
|
957
957
|
}
|
|
958
958
|
let headers = new Headers(responseInit.headers);
|
|
959
959
|
headers.set("Location", url);
|
|
960
|
-
return new Response(null, {
|
|
960
|
+
return new Response(null, {
|
|
961
|
+
...responseInit,
|
|
962
|
+
headers
|
|
963
|
+
});
|
|
961
964
|
};
|
|
962
965
|
var redirectDocument = (url, init) => {
|
|
963
966
|
let response = redirect(url, init);
|
|
@@ -1052,6 +1055,7 @@ function createRouter(init) {
|
|
|
1052
1055
|
);
|
|
1053
1056
|
let inFlightDataRoutes;
|
|
1054
1057
|
let basename = init.basename || "/";
|
|
1058
|
+
let routerContext = typeof init.context !== "undefined" ? init.context : {};
|
|
1055
1059
|
let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;
|
|
1056
1060
|
let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;
|
|
1057
1061
|
let future = {
|
|
@@ -1240,11 +1244,6 @@ function createRouter(init) {
|
|
|
1240
1244
|
}
|
|
1241
1245
|
}
|
|
1242
1246
|
});
|
|
1243
|
-
fetchersQueuedForDeletion.forEach((key) => {
|
|
1244
|
-
if (!state.fetchers.has(key) && !fetchControllers.has(key)) {
|
|
1245
|
-
unmountedFetchers.push(key);
|
|
1246
|
-
}
|
|
1247
|
-
});
|
|
1248
1247
|
[...subscribers].forEach(
|
|
1249
1248
|
(subscriber) => subscriber(state, {
|
|
1250
1249
|
deletedFetchers: unmountedFetchers,
|
|
@@ -1627,6 +1626,14 @@ function createRouter(init) {
|
|
|
1627
1626
|
null
|
|
1628
1627
|
);
|
|
1629
1628
|
result = results[actionMatch.route.id];
|
|
1629
|
+
if (!result) {
|
|
1630
|
+
for (let match of matches) {
|
|
1631
|
+
if (results[match.route.id]) {
|
|
1632
|
+
result = results[match.route.id];
|
|
1633
|
+
break;
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1630
1637
|
if (request.signal.aborted) {
|
|
1631
1638
|
return { shortCircuited: true };
|
|
1632
1639
|
}
|
|
@@ -2288,13 +2295,13 @@ function createRouter(init) {
|
|
|
2288
2295
|
results = await callDataStrategyImpl(
|
|
2289
2296
|
dataStrategyImpl,
|
|
2290
2297
|
type,
|
|
2291
|
-
state2,
|
|
2292
2298
|
request,
|
|
2293
2299
|
matchesToLoad,
|
|
2294
2300
|
matches,
|
|
2295
2301
|
fetcherKey,
|
|
2296
2302
|
manifest,
|
|
2297
|
-
mapRouteProperties2
|
|
2303
|
+
mapRouteProperties2,
|
|
2304
|
+
routerContext
|
|
2298
2305
|
);
|
|
2299
2306
|
} catch (e) {
|
|
2300
2307
|
matchesToLoad.forEach((m) => {
|
|
@@ -2720,16 +2727,18 @@ function createStaticHandler(routes, opts) {
|
|
|
2720
2727
|
async function query(request, {
|
|
2721
2728
|
requestContext,
|
|
2722
2729
|
skipLoaderErrorBubbling,
|
|
2723
|
-
dataStrategy
|
|
2730
|
+
dataStrategy,
|
|
2731
|
+
respond
|
|
2724
2732
|
} = {}) {
|
|
2725
2733
|
let url = new URL(request.url);
|
|
2726
2734
|
let method = request.method;
|
|
2727
2735
|
let location = createLocation("", createPath(url), null, "default");
|
|
2728
2736
|
let matches = matchRoutes(dataRoutes, location, basename);
|
|
2737
|
+
let staticContext;
|
|
2729
2738
|
if (!isValidMethod(method) && method !== "HEAD") {
|
|
2730
2739
|
let error = getInternalRouterError(405, { method });
|
|
2731
2740
|
let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);
|
|
2732
|
-
|
|
2741
|
+
staticContext = {
|
|
2733
2742
|
basename,
|
|
2734
2743
|
location,
|
|
2735
2744
|
matches: methodNotAllowedMatches,
|
|
@@ -2745,7 +2754,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2745
2754
|
} else if (!matches) {
|
|
2746
2755
|
let error = getInternalRouterError(404, { pathname: location.pathname });
|
|
2747
2756
|
let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);
|
|
2748
|
-
|
|
2757
|
+
staticContext = {
|
|
2749
2758
|
basename,
|
|
2750
2759
|
location,
|
|
2751
2760
|
matches: notFoundMatches,
|
|
@@ -2758,25 +2767,76 @@ function createStaticHandler(routes, opts) {
|
|
|
2758
2767
|
loaderHeaders: {},
|
|
2759
2768
|
actionHeaders: {}
|
|
2760
2769
|
};
|
|
2770
|
+
} else if (respond) {
|
|
2771
|
+
try {
|
|
2772
|
+
let response = await runMiddlewarePipeline(
|
|
2773
|
+
{
|
|
2774
|
+
request,
|
|
2775
|
+
matches,
|
|
2776
|
+
params: matches[0].params,
|
|
2777
|
+
context: requestContext
|
|
2778
|
+
},
|
|
2779
|
+
matches.length - 1,
|
|
2780
|
+
true,
|
|
2781
|
+
async () => {
|
|
2782
|
+
let result = await callQueryHandlers(
|
|
2783
|
+
request,
|
|
2784
|
+
location,
|
|
2785
|
+
matches,
|
|
2786
|
+
requestContext,
|
|
2787
|
+
dataStrategy || defaultDataStrategyWithoutMiddleware,
|
|
2788
|
+
skipLoaderErrorBubbling === true,
|
|
2789
|
+
null
|
|
2790
|
+
);
|
|
2791
|
+
if (isResponse(result)) {
|
|
2792
|
+
return result;
|
|
2793
|
+
}
|
|
2794
|
+
let res = await respond({
|
|
2795
|
+
location,
|
|
2796
|
+
basename,
|
|
2797
|
+
...result
|
|
2798
|
+
});
|
|
2799
|
+
return res;
|
|
2800
|
+
}
|
|
2801
|
+
);
|
|
2802
|
+
invariant(isResponse(response), "Expected a response in query()");
|
|
2803
|
+
return response;
|
|
2804
|
+
} catch (e) {
|
|
2805
|
+
if (isResponse(e)) {
|
|
2806
|
+
return e;
|
|
2807
|
+
}
|
|
2808
|
+
throw e;
|
|
2809
|
+
}
|
|
2810
|
+
} else {
|
|
2811
|
+
let result = await callQueryHandlers(
|
|
2812
|
+
request,
|
|
2813
|
+
location,
|
|
2814
|
+
matches,
|
|
2815
|
+
requestContext,
|
|
2816
|
+
dataStrategy || null,
|
|
2817
|
+
skipLoaderErrorBubbling === true,
|
|
2818
|
+
null
|
|
2819
|
+
);
|
|
2820
|
+
if (isResponse(result)) {
|
|
2821
|
+
return result;
|
|
2822
|
+
}
|
|
2823
|
+
staticContext = {
|
|
2824
|
+
location,
|
|
2825
|
+
basename,
|
|
2826
|
+
...result
|
|
2827
|
+
};
|
|
2761
2828
|
}
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
matches,
|
|
2766
|
-
requestContext,
|
|
2767
|
-
dataStrategy || null,
|
|
2768
|
-
skipLoaderErrorBubbling === true,
|
|
2769
|
-
null
|
|
2770
|
-
);
|
|
2771
|
-
if (isResponse(result)) {
|
|
2772
|
-
return result;
|
|
2829
|
+
if (respond) {
|
|
2830
|
+
let res = await respond(staticContext);
|
|
2831
|
+
return res;
|
|
2773
2832
|
}
|
|
2774
|
-
return
|
|
2833
|
+
return staticContext;
|
|
2775
2834
|
}
|
|
2776
2835
|
async function queryRoute(request, {
|
|
2777
2836
|
routeId,
|
|
2778
2837
|
requestContext,
|
|
2779
|
-
dataStrategy
|
|
2838
|
+
dataStrategy,
|
|
2839
|
+
respond
|
|
2780
2840
|
} = {}) {
|
|
2781
2841
|
let url = new URL(request.url);
|
|
2782
2842
|
let method = request.method;
|
|
@@ -2796,31 +2856,64 @@ function createStaticHandler(routes, opts) {
|
|
|
2796
2856
|
} else if (!match) {
|
|
2797
2857
|
throw getInternalRouterError(404, { pathname: location.pathname });
|
|
2798
2858
|
}
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2859
|
+
if (respond) {
|
|
2860
|
+
let response = await runMiddlewarePipeline(
|
|
2861
|
+
{
|
|
2862
|
+
request,
|
|
2863
|
+
matches,
|
|
2864
|
+
params: matches[0].params,
|
|
2865
|
+
context: requestContext
|
|
2866
|
+
},
|
|
2867
|
+
matches.length - 1,
|
|
2868
|
+
true,
|
|
2869
|
+
async () => {
|
|
2870
|
+
let result = await callQueryHandlers(
|
|
2871
|
+
request,
|
|
2872
|
+
location,
|
|
2873
|
+
matches,
|
|
2874
|
+
requestContext,
|
|
2875
|
+
dataStrategy || defaultDataStrategyWithoutMiddleware,
|
|
2876
|
+
false,
|
|
2877
|
+
match
|
|
2878
|
+
);
|
|
2879
|
+
if (isResponse(result)) {
|
|
2880
|
+
return result;
|
|
2881
|
+
}
|
|
2882
|
+
let error = result.errors ? Object.values(result.errors)[0] : void 0;
|
|
2883
|
+
if (error !== void 0) {
|
|
2884
|
+
throw error;
|
|
2885
|
+
}
|
|
2886
|
+
throw new Error("Expected a response from queryRoute");
|
|
2887
|
+
}
|
|
2888
|
+
);
|
|
2889
|
+
return response;
|
|
2890
|
+
} else {
|
|
2891
|
+
let result = await callQueryHandlers(
|
|
2892
|
+
request,
|
|
2893
|
+
location,
|
|
2894
|
+
matches,
|
|
2895
|
+
requestContext,
|
|
2896
|
+
dataStrategy || null,
|
|
2897
|
+
false,
|
|
2898
|
+
match
|
|
2899
|
+
);
|
|
2900
|
+
if (isResponse(result)) {
|
|
2901
|
+
return result;
|
|
2902
|
+
}
|
|
2903
|
+
let error = result.errors ? Object.values(result.errors)[0] : void 0;
|
|
2904
|
+
if (error !== void 0) {
|
|
2905
|
+
throw error;
|
|
2906
|
+
}
|
|
2907
|
+
if (result.actionData) {
|
|
2908
|
+
return Object.values(result.actionData)[0];
|
|
2909
|
+
}
|
|
2910
|
+
if (result.loaderData) {
|
|
2911
|
+
return Object.values(result.loaderData)[0];
|
|
2912
|
+
}
|
|
2913
|
+
return void 0;
|
|
2820
2914
|
}
|
|
2821
|
-
return void 0;
|
|
2822
2915
|
}
|
|
2823
|
-
async function
|
|
2916
|
+
async function callQueryHandlers(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {
|
|
2824
2917
|
invariant(
|
|
2825
2918
|
request.signal,
|
|
2826
2919
|
"query()/queryRoute() requests must contain an AbortController signal"
|
|
@@ -2925,7 +3018,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2925
3018
|
});
|
|
2926
3019
|
if (isErrorResult(result)) {
|
|
2927
3020
|
let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);
|
|
2928
|
-
let
|
|
3021
|
+
let handlerContext2 = await loadRouteData(
|
|
2929
3022
|
loaderRequest,
|
|
2930
3023
|
matches,
|
|
2931
3024
|
requestContext,
|
|
@@ -2935,7 +3028,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2935
3028
|
[boundaryMatch.route.id, result]
|
|
2936
3029
|
);
|
|
2937
3030
|
return {
|
|
2938
|
-
...
|
|
3031
|
+
...handlerContext2,
|
|
2939
3032
|
statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,
|
|
2940
3033
|
actionData: null,
|
|
2941
3034
|
actionHeaders: {
|
|
@@ -2943,7 +3036,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2943
3036
|
}
|
|
2944
3037
|
};
|
|
2945
3038
|
}
|
|
2946
|
-
let
|
|
3039
|
+
let handlerContext = await loadRouteData(
|
|
2947
3040
|
loaderRequest,
|
|
2948
3041
|
matches,
|
|
2949
3042
|
requestContext,
|
|
@@ -2952,7 +3045,7 @@ function createStaticHandler(routes, opts) {
|
|
|
2952
3045
|
null
|
|
2953
3046
|
);
|
|
2954
3047
|
return {
|
|
2955
|
-
...
|
|
3048
|
+
...handlerContext,
|
|
2956
3049
|
actionData: {
|
|
2957
3050
|
[actionMatch.route.id]: result.data
|
|
2958
3051
|
},
|
|
@@ -3001,7 +3094,7 @@ function createStaticHandler(routes, opts) {
|
|
|
3001
3094
|
if (request.signal.aborted) {
|
|
3002
3095
|
throwStaticHandlerAbortedError(request, isRouteRequest);
|
|
3003
3096
|
}
|
|
3004
|
-
let
|
|
3097
|
+
let handlerContext = processRouteLoaderData(
|
|
3005
3098
|
matches,
|
|
3006
3099
|
results,
|
|
3007
3100
|
pendingActionResult,
|
|
@@ -3013,26 +3106,25 @@ function createStaticHandler(routes, opts) {
|
|
|
3013
3106
|
);
|
|
3014
3107
|
matches.forEach((match) => {
|
|
3015
3108
|
if (!executedLoaders.has(match.route.id)) {
|
|
3016
|
-
|
|
3109
|
+
handlerContext.loaderData[match.route.id] = null;
|
|
3017
3110
|
}
|
|
3018
3111
|
});
|
|
3019
3112
|
return {
|
|
3020
|
-
...
|
|
3113
|
+
...handlerContext,
|
|
3021
3114
|
matches
|
|
3022
3115
|
};
|
|
3023
3116
|
}
|
|
3024
|
-
async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest,
|
|
3117
|
+
async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, routerContext, dataStrategy) {
|
|
3025
3118
|
let results = await callDataStrategyImpl(
|
|
3026
3119
|
dataStrategy || defaultDataStrategy,
|
|
3027
3120
|
type,
|
|
3028
|
-
null,
|
|
3029
3121
|
request,
|
|
3030
3122
|
matchesToLoad,
|
|
3031
3123
|
matches,
|
|
3032
3124
|
null,
|
|
3033
3125
|
manifest,
|
|
3034
3126
|
mapRouteProperties2,
|
|
3035
|
-
|
|
3127
|
+
routerContext
|
|
3036
3128
|
);
|
|
3037
3129
|
let dataResults = {};
|
|
3038
3130
|
await Promise.all(
|
|
@@ -3065,15 +3157,14 @@ function createStaticHandler(routes, opts) {
|
|
|
3065
3157
|
queryRoute
|
|
3066
3158
|
};
|
|
3067
3159
|
}
|
|
3068
|
-
function getStaticContextFromError(routes,
|
|
3069
|
-
|
|
3070
|
-
...
|
|
3160
|
+
function getStaticContextFromError(routes, handlerContext, error) {
|
|
3161
|
+
return {
|
|
3162
|
+
...handlerContext,
|
|
3071
3163
|
statusCode: isRouteErrorResponse(error) ? error.status : 500,
|
|
3072
3164
|
errors: {
|
|
3073
|
-
[
|
|
3165
|
+
[handlerContext._deepestRenderedBoundaryId || routes[0].id]: error
|
|
3074
3166
|
}
|
|
3075
3167
|
};
|
|
3076
|
-
return newContext;
|
|
3077
3168
|
}
|
|
3078
3169
|
function throwStaticHandlerAbortedError(request, isRouteRequest) {
|
|
3079
3170
|
if (request.signal.reason !== void 0) {
|
|
@@ -3466,20 +3557,133 @@ async function loadLazyRouteModule(route, mapRouteProperties2, manifest) {
|
|
|
3466
3557
|
lazy: void 0
|
|
3467
3558
|
});
|
|
3468
3559
|
}
|
|
3469
|
-
async function
|
|
3470
|
-
matches
|
|
3471
|
-
|
|
3472
|
-
let matchesToLoad = matches.filter((m) => m.shouldLoad);
|
|
3560
|
+
async function defaultDataStrategyWithoutMiddleware(args) {
|
|
3561
|
+
let matchesToLoad = args.matches.filter((m) => m.shouldLoad);
|
|
3562
|
+
let keyedResults = {};
|
|
3473
3563
|
let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3564
|
+
results.forEach((result, i) => {
|
|
3565
|
+
keyedResults[matchesToLoad[i].route.id] = result;
|
|
3566
|
+
});
|
|
3567
|
+
return keyedResults;
|
|
3568
|
+
}
|
|
3569
|
+
async function defaultDataStrategy(args) {
|
|
3570
|
+
let matchesToLoad = args.matches.filter((m) => m.shouldLoad);
|
|
3571
|
+
let lastIndex = args.matches.length - 1;
|
|
3572
|
+
for (let i = lastIndex; i >= 0; i--) {
|
|
3573
|
+
if (args.matches[i].shouldLoad) {
|
|
3574
|
+
lastIndex = i;
|
|
3575
|
+
break;
|
|
3576
|
+
}
|
|
3577
|
+
}
|
|
3578
|
+
let results = await runMiddlewarePipeline(
|
|
3579
|
+
args,
|
|
3580
|
+
lastIndex,
|
|
3581
|
+
false,
|
|
3582
|
+
async (keyedResults) => {
|
|
3583
|
+
let results2 = await Promise.all(matchesToLoad.map((m) => m.resolve()));
|
|
3584
|
+
results2.forEach((result, i) => {
|
|
3585
|
+
keyedResults[matchesToLoad[i].route.id] = result;
|
|
3586
|
+
});
|
|
3587
|
+
}
|
|
3477
3588
|
);
|
|
3589
|
+
return results;
|
|
3478
3590
|
}
|
|
3479
|
-
async function
|
|
3591
|
+
async function runMiddlewarePipeline({
|
|
3592
|
+
request,
|
|
3593
|
+
params,
|
|
3594
|
+
context,
|
|
3595
|
+
matches
|
|
3596
|
+
}, lastIndex, propagateResult, handler) {
|
|
3597
|
+
let keyedResults = {};
|
|
3598
|
+
try {
|
|
3599
|
+
let result = await callRouteMiddleware(
|
|
3600
|
+
matches.slice(0, lastIndex + 1).flatMap(
|
|
3601
|
+
(m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []
|
|
3602
|
+
),
|
|
3603
|
+
0,
|
|
3604
|
+
{ request, params, context },
|
|
3605
|
+
keyedResults,
|
|
3606
|
+
propagateResult,
|
|
3607
|
+
handler
|
|
3608
|
+
);
|
|
3609
|
+
return propagateResult ? result : keyedResults;
|
|
3610
|
+
} catch (e) {
|
|
3611
|
+
if (!(e instanceof MiddlewareError)) {
|
|
3612
|
+
throw e;
|
|
3613
|
+
}
|
|
3614
|
+
if (propagateResult && isResponse(e.error)) {
|
|
3615
|
+
throw e.error;
|
|
3616
|
+
}
|
|
3617
|
+
return {
|
|
3618
|
+
...keyedResults,
|
|
3619
|
+
[e.routeId]: { type: "error", result: e.error }
|
|
3620
|
+
};
|
|
3621
|
+
}
|
|
3622
|
+
}
|
|
3623
|
+
var MiddlewareError = class {
|
|
3624
|
+
constructor(routeId, error) {
|
|
3625
|
+
this.routeId = routeId;
|
|
3626
|
+
this.error = error;
|
|
3627
|
+
}
|
|
3628
|
+
};
|
|
3629
|
+
async function callRouteMiddleware(middlewares, idx, args, keyedResults, propagateResult, handler) {
|
|
3630
|
+
let { request } = args;
|
|
3631
|
+
if (request.signal.aborted) {
|
|
3632
|
+
if (request.signal.reason) {
|
|
3633
|
+
throw request.signal.reason;
|
|
3634
|
+
}
|
|
3635
|
+
throw new Error(
|
|
3636
|
+
`Request aborted without an \`AbortSignal.reason\`: ${request.method} ${request.url}`
|
|
3637
|
+
);
|
|
3638
|
+
}
|
|
3639
|
+
let tuple = middlewares[idx];
|
|
3640
|
+
if (!tuple) {
|
|
3641
|
+
let result = await handler(keyedResults);
|
|
3642
|
+
return result;
|
|
3643
|
+
}
|
|
3644
|
+
let [routeId, middleware] = tuple;
|
|
3645
|
+
let nextCalled = false;
|
|
3646
|
+
let next = async () => {
|
|
3647
|
+
if (nextCalled) {
|
|
3648
|
+
throw new Error("You may only call `next()` once per middleware");
|
|
3649
|
+
}
|
|
3650
|
+
nextCalled = true;
|
|
3651
|
+
let result = await callRouteMiddleware(
|
|
3652
|
+
middlewares,
|
|
3653
|
+
idx + 1,
|
|
3654
|
+
args,
|
|
3655
|
+
keyedResults,
|
|
3656
|
+
propagateResult,
|
|
3657
|
+
handler
|
|
3658
|
+
);
|
|
3659
|
+
return propagateResult ? result : void 0;
|
|
3660
|
+
};
|
|
3661
|
+
try {
|
|
3662
|
+
let result = await middleware(args, next);
|
|
3663
|
+
if (!nextCalled) {
|
|
3664
|
+
result = await next();
|
|
3665
|
+
}
|
|
3666
|
+
return result;
|
|
3667
|
+
} catch (e) {
|
|
3668
|
+
if (e instanceof MiddlewareError) {
|
|
3669
|
+
throw e;
|
|
3670
|
+
}
|
|
3671
|
+
throw new MiddlewareError(routeId, e);
|
|
3672
|
+
}
|
|
3673
|
+
}
|
|
3674
|
+
async function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties2, routerContext) {
|
|
3480
3675
|
let loadRouteDefinitionsPromises = matches.map(
|
|
3481
3676
|
(m) => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties2, manifest) : void 0
|
|
3482
3677
|
);
|
|
3678
|
+
let lazyMiddlewarePromises = matches.map(
|
|
3679
|
+
(m, i) => m.route.lazy && !("middleware" in m.route) ? (
|
|
3680
|
+
// Swallow the error here, let it bubble up from resolve()
|
|
3681
|
+
loadRouteDefinitionsPromises[i].catch((e) => e)
|
|
3682
|
+
) : null
|
|
3683
|
+
).filter((p) => p != null);
|
|
3684
|
+
if (lazyMiddlewarePromises.length > 0) {
|
|
3685
|
+
await Promise.all(lazyMiddlewarePromises);
|
|
3686
|
+
}
|
|
3483
3687
|
let dsMatches = matches.map((match, i) => {
|
|
3484
3688
|
let loadRoutePromise = loadRouteDefinitionsPromises[i];
|
|
3485
3689
|
let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);
|
|
@@ -3493,7 +3697,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matc
|
|
|
3493
3697
|
match,
|
|
3494
3698
|
loadRoutePromise,
|
|
3495
3699
|
handlerOverride,
|
|
3496
|
-
|
|
3700
|
+
routerContext
|
|
3497
3701
|
) : Promise.resolve({ type: "data" /* data */, result: void 0 });
|
|
3498
3702
|
};
|
|
3499
3703
|
return {
|
|
@@ -3507,7 +3711,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matc
|
|
|
3507
3711
|
request,
|
|
3508
3712
|
params: matches[0].params,
|
|
3509
3713
|
fetcherKey,
|
|
3510
|
-
context:
|
|
3714
|
+
context: routerContext
|
|
3511
3715
|
});
|
|
3512
3716
|
try {
|
|
3513
3717
|
await Promise.all(loadRouteDefinitionsPromises);
|
|
@@ -3515,7 +3719,7 @@ async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matc
|
|
|
3515
3719
|
}
|
|
3516
3720
|
return results;
|
|
3517
3721
|
}
|
|
3518
|
-
async function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride,
|
|
3722
|
+
async function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, routerContext) {
|
|
3519
3723
|
let result;
|
|
3520
3724
|
let onReject;
|
|
3521
3725
|
let runHandler = (handler) => {
|
|
@@ -3535,7 +3739,7 @@ async function callLoaderOrAction(type, request, match, loadRoutePromise, handle
|
|
|
3535
3739
|
{
|
|
3536
3740
|
request,
|
|
3537
3741
|
params: match.params,
|
|
3538
|
-
context:
|
|
3742
|
+
context: routerContext
|
|
3539
3743
|
},
|
|
3540
3744
|
...ctx !== void 0 ? [ctx] : []
|
|
3541
3745
|
);
|
|
@@ -4169,7 +4373,7 @@ function createDeferred() {
|
|
|
4169
4373
|
}
|
|
4170
4374
|
|
|
4171
4375
|
// lib/components.tsx
|
|
4172
|
-
var
|
|
4376
|
+
var React3 = __toESM(require("react"));
|
|
4173
4377
|
|
|
4174
4378
|
// lib/context.ts
|
|
4175
4379
|
var React = __toESM(require("react"));
|
|
@@ -4787,23 +4991,8 @@ function warnOnce(condition, message) {
|
|
|
4787
4991
|
}
|
|
4788
4992
|
}
|
|
4789
4993
|
|
|
4790
|
-
// lib/
|
|
4791
|
-
var React3 = __toESM(require("react"));
|
|
4994
|
+
// lib/components.tsx
|
|
4792
4995
|
var ENABLE_DEV_WARNINGS2 = true;
|
|
4793
|
-
function createHref(to) {
|
|
4794
|
-
return typeof to === "string" ? to : createPath(to);
|
|
4795
|
-
}
|
|
4796
|
-
function encodeLocation(to) {
|
|
4797
|
-
let href = typeof to === "string" ? to : createPath(to);
|
|
4798
|
-
href = href.replace(/ $/, "%20");
|
|
4799
|
-
let encoded = ABSOLUTE_URL_REGEX2.test(href) ? new URL(href) : new URL(href, "http://localhost");
|
|
4800
|
-
return {
|
|
4801
|
-
pathname: encoded.pathname,
|
|
4802
|
-
search: encoded.search,
|
|
4803
|
-
hash: encoded.hash
|
|
4804
|
-
};
|
|
4805
|
-
}
|
|
4806
|
-
var ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
4807
4996
|
function mapRouteProperties(route) {
|
|
4808
4997
|
let updates = {
|
|
4809
4998
|
// Note: this check also occurs in createRoutesFromChildren so update
|
|
@@ -4854,11 +5043,10 @@ function mapRouteProperties(route) {
|
|
|
4854
5043
|
}
|
|
4855
5044
|
return updates;
|
|
4856
5045
|
}
|
|
4857
|
-
|
|
4858
|
-
// lib/components.tsx
|
|
4859
5046
|
function createMemoryRouter(routes, opts) {
|
|
4860
5047
|
return createRouter({
|
|
4861
5048
|
basename: opts?.basename,
|
|
5049
|
+
context: opts?.context,
|
|
4862
5050
|
future: opts?.future,
|
|
4863
5051
|
history: createMemoryHistory({
|
|
4864
5052
|
initialEntries: opts?.initialEntries,
|
|
@@ -4894,23 +5082,23 @@ function RouterProvider({
|
|
|
4894
5082
|
router,
|
|
4895
5083
|
flushSync: reactDomFlushSyncImpl
|
|
4896
5084
|
}) {
|
|
4897
|
-
let [state, setStateImpl] =
|
|
4898
|
-
let [pendingState, setPendingState] =
|
|
4899
|
-
let [vtContext, setVtContext] =
|
|
5085
|
+
let [state, setStateImpl] = React3.useState(router.state);
|
|
5086
|
+
let [pendingState, setPendingState] = React3.useState();
|
|
5087
|
+
let [vtContext, setVtContext] = React3.useState({
|
|
4900
5088
|
isTransitioning: false
|
|
4901
5089
|
});
|
|
4902
|
-
let [renderDfd, setRenderDfd] =
|
|
4903
|
-
let [transition, setTransition] =
|
|
4904
|
-
let [interruption, setInterruption] =
|
|
4905
|
-
let fetcherData =
|
|
4906
|
-
let setState =
|
|
5090
|
+
let [renderDfd, setRenderDfd] = React3.useState();
|
|
5091
|
+
let [transition, setTransition] = React3.useState();
|
|
5092
|
+
let [interruption, setInterruption] = React3.useState();
|
|
5093
|
+
let fetcherData = React3.useRef(/* @__PURE__ */ new Map());
|
|
5094
|
+
let setState = React3.useCallback(
|
|
4907
5095
|
(newState, { deletedFetchers, flushSync, viewTransitionOpts }) => {
|
|
5096
|
+
deletedFetchers.forEach((key) => fetcherData.current.delete(key));
|
|
4908
5097
|
newState.fetchers.forEach((fetcher, key) => {
|
|
4909
5098
|
if (fetcher.data !== void 0) {
|
|
4910
5099
|
fetcherData.current.set(key, fetcher.data);
|
|
4911
5100
|
}
|
|
4912
5101
|
});
|
|
4913
|
-
deletedFetchers.forEach((key) => fetcherData.current.delete(key));
|
|
4914
5102
|
warnOnce(
|
|
4915
5103
|
flushSync === false || reactDomFlushSyncImpl != null,
|
|
4916
5104
|
'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'
|
|
@@ -4924,7 +5112,7 @@ function RouterProvider({
|
|
|
4924
5112
|
if (reactDomFlushSyncImpl && flushSync) {
|
|
4925
5113
|
reactDomFlushSyncImpl(() => setStateImpl(newState));
|
|
4926
5114
|
} else {
|
|
4927
|
-
|
|
5115
|
+
React3.startTransition(() => setStateImpl(newState));
|
|
4928
5116
|
}
|
|
4929
5117
|
return;
|
|
4930
5118
|
}
|
|
@@ -4975,18 +5163,18 @@ function RouterProvider({
|
|
|
4975
5163
|
},
|
|
4976
5164
|
[router.window, reactDomFlushSyncImpl, transition, renderDfd]
|
|
4977
5165
|
);
|
|
4978
|
-
|
|
4979
|
-
|
|
5166
|
+
React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);
|
|
5167
|
+
React3.useEffect(() => {
|
|
4980
5168
|
if (vtContext.isTransitioning && !vtContext.flushSync) {
|
|
4981
5169
|
setRenderDfd(new Deferred());
|
|
4982
5170
|
}
|
|
4983
5171
|
}, [vtContext]);
|
|
4984
|
-
|
|
5172
|
+
React3.useEffect(() => {
|
|
4985
5173
|
if (renderDfd && pendingState && router.window) {
|
|
4986
5174
|
let newState = pendingState;
|
|
4987
5175
|
let renderPromise = renderDfd.promise;
|
|
4988
5176
|
let transition2 = router.window.document.startViewTransition(async () => {
|
|
4989
|
-
|
|
5177
|
+
React3.startTransition(() => setStateImpl(newState));
|
|
4990
5178
|
await renderPromise;
|
|
4991
5179
|
});
|
|
4992
5180
|
transition2.finished.finally(() => {
|
|
@@ -4998,12 +5186,12 @@ function RouterProvider({
|
|
|
4998
5186
|
setTransition(transition2);
|
|
4999
5187
|
}
|
|
5000
5188
|
}, [pendingState, renderDfd, router.window]);
|
|
5001
|
-
|
|
5189
|
+
React3.useEffect(() => {
|
|
5002
5190
|
if (renderDfd && pendingState && state.location.key === pendingState.location.key) {
|
|
5003
5191
|
renderDfd.resolve();
|
|
5004
5192
|
}
|
|
5005
5193
|
}, [renderDfd, transition, state.location, pendingState]);
|
|
5006
|
-
|
|
5194
|
+
React3.useEffect(() => {
|
|
5007
5195
|
if (!vtContext.isTransitioning && interruption) {
|
|
5008
5196
|
setPendingState(interruption.state);
|
|
5009
5197
|
setVtContext({
|
|
@@ -5015,7 +5203,7 @@ function RouterProvider({
|
|
|
5015
5203
|
setInterruption(void 0);
|
|
5016
5204
|
}
|
|
5017
5205
|
}, [vtContext.isTransitioning, interruption]);
|
|
5018
|
-
let navigator2 =
|
|
5206
|
+
let navigator2 = React3.useMemo(() => {
|
|
5019
5207
|
return {
|
|
5020
5208
|
createHref: router.createHref,
|
|
5021
5209
|
encodeLocation: router.encodeLocation,
|
|
@@ -5032,7 +5220,7 @@ function RouterProvider({
|
|
|
5032
5220
|
};
|
|
5033
5221
|
}, [router]);
|
|
5034
5222
|
let basename = router.basename || "/";
|
|
5035
|
-
let dataRouterContext =
|
|
5223
|
+
let dataRouterContext = React3.useMemo(
|
|
5036
5224
|
() => ({
|
|
5037
5225
|
router,
|
|
5038
5226
|
navigator: navigator2,
|
|
@@ -5041,7 +5229,7 @@ function RouterProvider({
|
|
|
5041
5229
|
}),
|
|
5042
5230
|
[router, navigator2, basename]
|
|
5043
5231
|
);
|
|
5044
|
-
return /* @__PURE__ */
|
|
5232
|
+
return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(
|
|
5045
5233
|
Router,
|
|
5046
5234
|
{
|
|
5047
5235
|
basename,
|
|
@@ -5049,7 +5237,7 @@ function RouterProvider({
|
|
|
5049
5237
|
navigationType: state.historyAction,
|
|
5050
5238
|
navigator: navigator2
|
|
5051
5239
|
},
|
|
5052
|
-
/* @__PURE__ */
|
|
5240
|
+
/* @__PURE__ */ React3.createElement(
|
|
5053
5241
|
MemoizedDataRoutes,
|
|
5054
5242
|
{
|
|
5055
5243
|
routes: router.routes,
|
|
@@ -5059,7 +5247,7 @@ function RouterProvider({
|
|
|
5059
5247
|
)
|
|
5060
5248
|
))))), null);
|
|
5061
5249
|
}
|
|
5062
|
-
var MemoizedDataRoutes =
|
|
5250
|
+
var MemoizedDataRoutes = React3.memo(DataRoutes);
|
|
5063
5251
|
function DataRoutes({
|
|
5064
5252
|
routes,
|
|
5065
5253
|
future,
|
|
@@ -5073,7 +5261,7 @@ function MemoryRouter({
|
|
|
5073
5261
|
initialEntries,
|
|
5074
5262
|
initialIndex
|
|
5075
5263
|
}) {
|
|
5076
|
-
let historyRef =
|
|
5264
|
+
let historyRef = React3.useRef();
|
|
5077
5265
|
if (historyRef.current == null) {
|
|
5078
5266
|
historyRef.current = createMemoryHistory({
|
|
5079
5267
|
initialEntries,
|
|
@@ -5082,18 +5270,18 @@ function MemoryRouter({
|
|
|
5082
5270
|
});
|
|
5083
5271
|
}
|
|
5084
5272
|
let history = historyRef.current;
|
|
5085
|
-
let [state, setStateImpl] =
|
|
5273
|
+
let [state, setStateImpl] = React3.useState({
|
|
5086
5274
|
action: history.action,
|
|
5087
5275
|
location: history.location
|
|
5088
5276
|
});
|
|
5089
|
-
let setState =
|
|
5277
|
+
let setState = React3.useCallback(
|
|
5090
5278
|
(newState) => {
|
|
5091
|
-
|
|
5279
|
+
React3.startTransition(() => setStateImpl(newState));
|
|
5092
5280
|
},
|
|
5093
5281
|
[setStateImpl]
|
|
5094
5282
|
);
|
|
5095
|
-
|
|
5096
|
-
return /* @__PURE__ */
|
|
5283
|
+
React3.useLayoutEffect(() => history.listen(setState), [history, setState]);
|
|
5284
|
+
return /* @__PURE__ */ React3.createElement(
|
|
5097
5285
|
Router,
|
|
5098
5286
|
{
|
|
5099
5287
|
basename,
|
|
@@ -5116,12 +5304,12 @@ function Navigate({
|
|
|
5116
5304
|
// the router loaded. We can help them understand how to avoid that.
|
|
5117
5305
|
`<Navigate> may be used only in the context of a <Router> component.`
|
|
5118
5306
|
);
|
|
5119
|
-
let { static: isStatic } =
|
|
5307
|
+
let { static: isStatic } = React3.useContext(NavigationContext);
|
|
5120
5308
|
warning(
|
|
5121
5309
|
!isStatic,
|
|
5122
5310
|
`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`
|
|
5123
5311
|
);
|
|
5124
|
-
let { matches } =
|
|
5312
|
+
let { matches } = React3.useContext(RouteContext);
|
|
5125
5313
|
let { pathname: locationPathname } = useLocation();
|
|
5126
5314
|
let navigate = useNavigate();
|
|
5127
5315
|
let path = resolveTo(
|
|
@@ -5131,7 +5319,7 @@ function Navigate({
|
|
|
5131
5319
|
relative === "path"
|
|
5132
5320
|
);
|
|
5133
5321
|
let jsonPath = JSON.stringify(path);
|
|
5134
|
-
|
|
5322
|
+
React3.useEffect(() => {
|
|
5135
5323
|
navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });
|
|
5136
5324
|
}, [navigate, jsonPath, relative, replace2, state]);
|
|
5137
5325
|
return null;
|
|
@@ -5158,7 +5346,7 @@ function Router({
|
|
|
5158
5346
|
`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`
|
|
5159
5347
|
);
|
|
5160
5348
|
let basename = basenameProp.replace(/^\/*/, "/");
|
|
5161
|
-
let navigationContext =
|
|
5349
|
+
let navigationContext = React3.useMemo(
|
|
5162
5350
|
() => ({
|
|
5163
5351
|
basename,
|
|
5164
5352
|
navigator: navigator2,
|
|
@@ -5177,7 +5365,7 @@ function Router({
|
|
|
5177
5365
|
state = null,
|
|
5178
5366
|
key = "default"
|
|
5179
5367
|
} = locationProp;
|
|
5180
|
-
let locationContext =
|
|
5368
|
+
let locationContext = React3.useMemo(() => {
|
|
5181
5369
|
let trailingPathname = stripBasename(pathname, basename);
|
|
5182
5370
|
if (trailingPathname == null) {
|
|
5183
5371
|
return null;
|
|
@@ -5200,7 +5388,7 @@ function Router({
|
|
|
5200
5388
|
if (locationContext == null) {
|
|
5201
5389
|
return null;
|
|
5202
5390
|
}
|
|
5203
|
-
return /* @__PURE__ */
|
|
5391
|
+
return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));
|
|
5204
5392
|
}
|
|
5205
5393
|
function Routes({
|
|
5206
5394
|
children,
|
|
@@ -5213,9 +5401,9 @@ function Await({
|
|
|
5213
5401
|
errorElement,
|
|
5214
5402
|
resolve
|
|
5215
5403
|
}) {
|
|
5216
|
-
return /* @__PURE__ */
|
|
5404
|
+
return /* @__PURE__ */ React3.createElement(AwaitErrorBoundary, { resolve, errorElement }, /* @__PURE__ */ React3.createElement(ResolveAwait, null, children));
|
|
5217
5405
|
}
|
|
5218
|
-
var AwaitErrorBoundary = class extends
|
|
5406
|
+
var AwaitErrorBoundary = class extends React3.Component {
|
|
5219
5407
|
constructor(props) {
|
|
5220
5408
|
super(props);
|
|
5221
5409
|
this.state = { error: null };
|
|
@@ -5261,10 +5449,10 @@ var AwaitErrorBoundary = class extends React4.Component {
|
|
|
5261
5449
|
throw promise._error;
|
|
5262
5450
|
}
|
|
5263
5451
|
if (status === 2 /* error */) {
|
|
5264
|
-
return /* @__PURE__ */
|
|
5452
|
+
return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });
|
|
5265
5453
|
}
|
|
5266
5454
|
if (status === 1 /* success */) {
|
|
5267
|
-
return /* @__PURE__ */
|
|
5455
|
+
return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });
|
|
5268
5456
|
}
|
|
5269
5457
|
throw promise;
|
|
5270
5458
|
}
|
|
@@ -5274,16 +5462,16 @@ function ResolveAwait({
|
|
|
5274
5462
|
}) {
|
|
5275
5463
|
let data2 = useAsyncValue();
|
|
5276
5464
|
let toRender = typeof children === "function" ? children(data2) : children;
|
|
5277
|
-
return /* @__PURE__ */
|
|
5465
|
+
return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);
|
|
5278
5466
|
}
|
|
5279
5467
|
function createRoutesFromChildren(children, parentPath = []) {
|
|
5280
5468
|
let routes = [];
|
|
5281
|
-
|
|
5282
|
-
if (!
|
|
5469
|
+
React3.Children.forEach(children, (element, index) => {
|
|
5470
|
+
if (!React3.isValidElement(element)) {
|
|
5283
5471
|
return;
|
|
5284
5472
|
}
|
|
5285
5473
|
let treePath = [...parentPath, index];
|
|
5286
|
-
if (element.type ===
|
|
5474
|
+
if (element.type === React3.Fragment) {
|
|
5287
5475
|
routes.push.apply(
|
|
5288
5476
|
routes,
|
|
5289
5477
|
createRoutesFromChildren(element.props.children, treePath)
|
|
@@ -5332,7 +5520,7 @@ function renderMatches(matches) {
|
|
|
5332
5520
|
}
|
|
5333
5521
|
|
|
5334
5522
|
// lib/dom/lib.tsx
|
|
5335
|
-
var
|
|
5523
|
+
var React10 = __toESM(require("react"));
|
|
5336
5524
|
|
|
5337
5525
|
// lib/dom/dom.ts
|
|
5338
5526
|
var defaultMethod = "get";
|
|
@@ -5463,7 +5651,7 @@ function getFormSubmissionInfo(target, basename) {
|
|
|
5463
5651
|
}
|
|
5464
5652
|
|
|
5465
5653
|
// lib/dom/ssr/components.tsx
|
|
5466
|
-
var
|
|
5654
|
+
var React9 = __toESM(require("react"));
|
|
5467
5655
|
|
|
5468
5656
|
// lib/dom/ssr/invariant.ts
|
|
5469
5657
|
function invariant2(value, message) {
|
|
@@ -5715,7 +5903,7 @@ function createHtml(html) {
|
|
|
5715
5903
|
}
|
|
5716
5904
|
|
|
5717
5905
|
// lib/dom/ssr/single-fetch.tsx
|
|
5718
|
-
var
|
|
5906
|
+
var React4 = __toESM(require("react"));
|
|
5719
5907
|
var import_turbo_stream = require("turbo-stream");
|
|
5720
5908
|
|
|
5721
5909
|
// lib/dom/ssr/data.ts
|
|
@@ -5773,7 +5961,7 @@ function StreamTransfer({
|
|
|
5773
5961
|
throw promise;
|
|
5774
5962
|
}
|
|
5775
5963
|
let { done, value } = promise.result;
|
|
5776
|
-
let scriptTag = value ? /* @__PURE__ */
|
|
5964
|
+
let scriptTag = value ? /* @__PURE__ */ React4.createElement(
|
|
5777
5965
|
"script",
|
|
5778
5966
|
{
|
|
5779
5967
|
nonce,
|
|
@@ -5785,7 +5973,7 @@ function StreamTransfer({
|
|
|
5785
5973
|
}
|
|
5786
5974
|
) : null;
|
|
5787
5975
|
if (done) {
|
|
5788
|
-
return /* @__PURE__ */
|
|
5976
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(
|
|
5789
5977
|
"script",
|
|
5790
5978
|
{
|
|
5791
5979
|
nonce,
|
|
@@ -5795,7 +5983,7 @@ function StreamTransfer({
|
|
|
5795
5983
|
}
|
|
5796
5984
|
));
|
|
5797
5985
|
} else {
|
|
5798
|
-
return /* @__PURE__ */
|
|
5986
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(
|
|
5799
5987
|
StreamTransfer,
|
|
5800
5988
|
{
|
|
5801
5989
|
context,
|
|
@@ -5808,20 +5996,54 @@ function StreamTransfer({
|
|
|
5808
5996
|
}
|
|
5809
5997
|
}
|
|
5810
5998
|
function getSingleFetchDataStrategy(manifest, routeModules, getRouter) {
|
|
5811
|
-
return async (
|
|
5999
|
+
return async (args) => {
|
|
6000
|
+
let { request, matches, fetcherKey } = args;
|
|
5812
6001
|
if (request.method !== "GET") {
|
|
5813
|
-
return
|
|
6002
|
+
return runMiddlewarePipeline(
|
|
6003
|
+
args,
|
|
6004
|
+
matches.findIndex((m) => m.shouldLoad),
|
|
6005
|
+
false,
|
|
6006
|
+
async (keyedResults) => {
|
|
6007
|
+
let results = await singleFetchActionStrategy(request, matches);
|
|
6008
|
+
Object.assign(keyedResults, results);
|
|
6009
|
+
}
|
|
6010
|
+
);
|
|
5814
6011
|
}
|
|
5815
6012
|
if (fetcherKey) {
|
|
5816
|
-
return
|
|
6013
|
+
return runMiddlewarePipeline(
|
|
6014
|
+
args,
|
|
6015
|
+
matches.findIndex((m) => m.shouldLoad),
|
|
6016
|
+
false,
|
|
6017
|
+
async (keyedResults) => {
|
|
6018
|
+
let results = await singleFetchLoaderFetcherStrategy(
|
|
6019
|
+
request,
|
|
6020
|
+
matches
|
|
6021
|
+
);
|
|
6022
|
+
Object.assign(keyedResults, results);
|
|
6023
|
+
}
|
|
6024
|
+
);
|
|
5817
6025
|
}
|
|
5818
|
-
|
|
6026
|
+
let lowestLoadingIndex = getLowestLoadingIndex(
|
|
5819
6027
|
manifest,
|
|
5820
6028
|
routeModules,
|
|
5821
6029
|
getRouter(),
|
|
5822
|
-
request,
|
|
5823
6030
|
matches
|
|
5824
6031
|
);
|
|
6032
|
+
return runMiddlewarePipeline(
|
|
6033
|
+
args,
|
|
6034
|
+
lowestLoadingIndex,
|
|
6035
|
+
false,
|
|
6036
|
+
async (keyedResults) => {
|
|
6037
|
+
let results = await singleFetchLoaderNavigationStrategy(
|
|
6038
|
+
manifest,
|
|
6039
|
+
routeModules,
|
|
6040
|
+
getRouter(),
|
|
6041
|
+
request,
|
|
6042
|
+
matches
|
|
6043
|
+
);
|
|
6044
|
+
Object.assign(keyedResults, results);
|
|
6045
|
+
}
|
|
6046
|
+
);
|
|
5825
6047
|
};
|
|
5826
6048
|
}
|
|
5827
6049
|
async function singleFetchActionStrategy(request, matches) {
|
|
@@ -5851,6 +6073,20 @@ async function singleFetchActionStrategy(request, matches) {
|
|
|
5851
6073
|
}
|
|
5852
6074
|
};
|
|
5853
6075
|
}
|
|
6076
|
+
function isOptedOut(manifestRoute, routeModule, match, router) {
|
|
6077
|
+
return match.route.id in router.state.loaderData && manifestRoute && manifestRoute.hasLoader && routeModule && routeModule.shouldRevalidate;
|
|
6078
|
+
}
|
|
6079
|
+
function getLowestLoadingIndex(manifest, routeModules, router, matches) {
|
|
6080
|
+
let tailIdx = [...matches].reverse().findIndex(
|
|
6081
|
+
(m) => m.shouldLoad || !isOptedOut(
|
|
6082
|
+
manifest.routes[m.route.id],
|
|
6083
|
+
routeModules[m.route.id],
|
|
6084
|
+
m,
|
|
6085
|
+
router
|
|
6086
|
+
)
|
|
6087
|
+
);
|
|
6088
|
+
return tailIdx < 0 ? 0 : matches.length - 1 - tailIdx;
|
|
6089
|
+
}
|
|
5854
6090
|
async function singleFetchLoaderNavigationStrategy(manifest, routeModules, router, request, matches) {
|
|
5855
6091
|
let routesParams = /* @__PURE__ */ new Set();
|
|
5856
6092
|
let foundOptOutRoute = false;
|
|
@@ -5869,7 +6105,7 @@ async function singleFetchLoaderNavigationStrategy(manifest, routeModules, route
|
|
|
5869
6105
|
if (!router.state.initialized) {
|
|
5870
6106
|
return;
|
|
5871
6107
|
}
|
|
5872
|
-
if (
|
|
6108
|
+
if (isOptedOut(manifestRoute, routeModules[m.route.id], m, router)) {
|
|
5873
6109
|
foundOptOutRoute = true;
|
|
5874
6110
|
return;
|
|
5875
6111
|
}
|
|
@@ -6045,7 +6281,7 @@ function unwrapSingleFetchResult(result, routeId) {
|
|
|
6045
6281
|
if (result.replace) {
|
|
6046
6282
|
headers["X-Remix-Replace"] = "yes";
|
|
6047
6283
|
}
|
|
6048
|
-
|
|
6284
|
+
return redirect(result.redirect, { status: result.status, headers });
|
|
6049
6285
|
} else if ("data" in result) {
|
|
6050
6286
|
return result.data;
|
|
6051
6287
|
} else {
|
|
@@ -6081,14 +6317,14 @@ function createDeferred2() {
|
|
|
6081
6317
|
}
|
|
6082
6318
|
|
|
6083
6319
|
// lib/dom/ssr/fog-of-war.ts
|
|
6084
|
-
var
|
|
6320
|
+
var React8 = __toESM(require("react"));
|
|
6085
6321
|
|
|
6086
6322
|
// lib/dom/ssr/routes.tsx
|
|
6087
|
-
var
|
|
6323
|
+
var React7 = __toESM(require("react"));
|
|
6088
6324
|
|
|
6089
6325
|
// lib/dom/ssr/errorBoundaries.tsx
|
|
6090
|
-
var
|
|
6091
|
-
var RemixErrorBoundary = class extends
|
|
6326
|
+
var React5 = __toESM(require("react"));
|
|
6327
|
+
var RemixErrorBoundary = class extends React5.Component {
|
|
6092
6328
|
constructor(props) {
|
|
6093
6329
|
super(props);
|
|
6094
6330
|
this.state = { error: props.error || null, location: props.location };
|
|
@@ -6104,7 +6340,7 @@ var RemixErrorBoundary = class extends React6.Component {
|
|
|
6104
6340
|
}
|
|
6105
6341
|
render() {
|
|
6106
6342
|
if (this.state.error) {
|
|
6107
|
-
return /* @__PURE__ */
|
|
6343
|
+
return /* @__PURE__ */ React5.createElement(
|
|
6108
6344
|
RemixRootDefaultErrorBoundary,
|
|
6109
6345
|
{
|
|
6110
6346
|
error: this.state.error,
|
|
@@ -6121,7 +6357,7 @@ function RemixRootDefaultErrorBoundary({
|
|
|
6121
6357
|
isOutsideRemixApp
|
|
6122
6358
|
}) {
|
|
6123
6359
|
console.error(error);
|
|
6124
|
-
let heyDeveloper = /* @__PURE__ */
|
|
6360
|
+
let heyDeveloper = /* @__PURE__ */ React5.createElement(
|
|
6125
6361
|
"script",
|
|
6126
6362
|
{
|
|
6127
6363
|
dangerouslySetInnerHTML: {
|
|
@@ -6134,7 +6370,7 @@ function RemixRootDefaultErrorBoundary({
|
|
|
6134
6370
|
}
|
|
6135
6371
|
);
|
|
6136
6372
|
if (isRouteErrorResponse(error)) {
|
|
6137
|
-
return /* @__PURE__ */
|
|
6373
|
+
return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: "Unhandled Thrown Response!" }, /* @__PURE__ */ React5.createElement("h1", { style: { fontSize: "24px" } }, error.status, " ", error.statusText), heyDeveloper);
|
|
6138
6374
|
}
|
|
6139
6375
|
let errorInstance;
|
|
6140
6376
|
if (error instanceof Error) {
|
|
@@ -6143,14 +6379,14 @@ function RemixRootDefaultErrorBoundary({
|
|
|
6143
6379
|
let errorString = error == null ? "Unknown Error" : typeof error === "object" && "toString" in error ? error.toString() : JSON.stringify(error);
|
|
6144
6380
|
errorInstance = new Error(errorString);
|
|
6145
6381
|
}
|
|
6146
|
-
return /* @__PURE__ */
|
|
6382
|
+
return /* @__PURE__ */ React5.createElement(
|
|
6147
6383
|
BoundaryShell,
|
|
6148
6384
|
{
|
|
6149
6385
|
title: "Application Error!",
|
|
6150
6386
|
isOutsideRemixApp
|
|
6151
6387
|
},
|
|
6152
|
-
/* @__PURE__ */
|
|
6153
|
-
/* @__PURE__ */
|
|
6388
|
+
/* @__PURE__ */ React5.createElement("h1", { style: { fontSize: "24px" } }, "Application Error"),
|
|
6389
|
+
/* @__PURE__ */ React5.createElement(
|
|
6154
6390
|
"pre",
|
|
6155
6391
|
{
|
|
6156
6392
|
style: {
|
|
@@ -6175,19 +6411,19 @@ function BoundaryShell({
|
|
|
6175
6411
|
if (routeModules.root?.Layout && !isOutsideRemixApp) {
|
|
6176
6412
|
return children;
|
|
6177
6413
|
}
|
|
6178
|
-
return /* @__PURE__ */
|
|
6414
|
+
return /* @__PURE__ */ React5.createElement("html", { lang: "en" }, /* @__PURE__ */ React5.createElement("head", null, /* @__PURE__ */ React5.createElement("meta", { charSet: "utf-8" }), /* @__PURE__ */ React5.createElement(
|
|
6179
6415
|
"meta",
|
|
6180
6416
|
{
|
|
6181
6417
|
name: "viewport",
|
|
6182
6418
|
content: "width=device-width,initial-scale=1,viewport-fit=cover"
|
|
6183
6419
|
}
|
|
6184
|
-
), /* @__PURE__ */
|
|
6420
|
+
), /* @__PURE__ */ React5.createElement("title", null, title)), /* @__PURE__ */ React5.createElement("body", null, /* @__PURE__ */ React5.createElement("main", { style: { fontFamily: "system-ui, sans-serif", padding: "2rem" } }, children, renderScripts ? /* @__PURE__ */ React5.createElement(Scripts, null) : null)));
|
|
6185
6421
|
}
|
|
6186
6422
|
|
|
6187
6423
|
// lib/dom/ssr/fallback.tsx
|
|
6188
|
-
var
|
|
6424
|
+
var React6 = __toESM(require("react"));
|
|
6189
6425
|
function RemixRootDefaultHydrateFallback() {
|
|
6190
|
-
return /* @__PURE__ */
|
|
6426
|
+
return /* @__PURE__ */ React6.createElement(BoundaryShell, { title: "Loading...", renderScripts: true }, /* @__PURE__ */ React6.createElement(
|
|
6191
6427
|
"script",
|
|
6192
6428
|
{
|
|
6193
6429
|
dangerouslySetInnerHTML: {
|
|
@@ -6221,17 +6457,17 @@ function groupRoutesByParentId(manifest) {
|
|
|
6221
6457
|
function getRouteComponents(route, routeModule, isSpaMode) {
|
|
6222
6458
|
let Component4 = getRouteModuleComponent(routeModule);
|
|
6223
6459
|
let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === "root") ? routeModule.HydrateFallback : route.id === "root" ? RemixRootDefaultHydrateFallback : void 0;
|
|
6224
|
-
let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === "root" ? () => /* @__PURE__ */
|
|
6460
|
+
let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === "root" ? () => /* @__PURE__ */ React7.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;
|
|
6225
6461
|
if (route.id === "root" && routeModule.Layout) {
|
|
6226
6462
|
return {
|
|
6227
6463
|
...Component4 ? {
|
|
6228
|
-
element: /* @__PURE__ */
|
|
6464
|
+
element: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(Component4, null))
|
|
6229
6465
|
} : { Component: Component4 },
|
|
6230
6466
|
...ErrorBoundary ? {
|
|
6231
|
-
errorElement: /* @__PURE__ */
|
|
6467
|
+
errorElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(ErrorBoundary, null))
|
|
6232
6468
|
} : { ErrorBoundary },
|
|
6233
6469
|
...HydrateFallback ? {
|
|
6234
|
-
hydrateFallbackElement: /* @__PURE__ */
|
|
6470
|
+
hydrateFallbackElement: /* @__PURE__ */ React7.createElement(routeModule.Layout, null, /* @__PURE__ */ React7.createElement(HydrateFallback, null))
|
|
6235
6471
|
} : { HydrateFallback }
|
|
6236
6472
|
};
|
|
6237
6473
|
}
|
|
@@ -6261,8 +6497,8 @@ function createServerRoutes(manifest, routeModules, future, isSpaMode, parentId
|
|
|
6261
6497
|
// render, so just give it a no-op function so we can render down to the
|
|
6262
6498
|
// proper fallback
|
|
6263
6499
|
loader: route.hasLoader || route.hasClientLoader ? () => null : void 0
|
|
6264
|
-
// We don't need action/shouldRevalidate on these routes since
|
|
6265
|
-
// for a static render
|
|
6500
|
+
// We don't need middleware/action/shouldRevalidate on these routes since
|
|
6501
|
+
// they're for a static render
|
|
6266
6502
|
};
|
|
6267
6503
|
let children = createServerRoutes(
|
|
6268
6504
|
manifest,
|
|
@@ -6346,6 +6582,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6346
6582
|
Object.assign(dataRoute, {
|
|
6347
6583
|
...dataRoute,
|
|
6348
6584
|
...getRouteComponents(route, routeModule, isSpaMode),
|
|
6585
|
+
middleware: routeModule.clientMiddleware,
|
|
6349
6586
|
handle: routeModule.handle,
|
|
6350
6587
|
shouldRevalidate: getShouldRevalidateFunction(
|
|
6351
6588
|
routeModule,
|
|
@@ -6358,7 +6595,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6358
6595
|
let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;
|
|
6359
6596
|
let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;
|
|
6360
6597
|
let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);
|
|
6361
|
-
dataRoute.loader = async ({ request, params }, singleFetch) => {
|
|
6598
|
+
dataRoute.loader = async ({ request, params, context }, singleFetch) => {
|
|
6362
6599
|
try {
|
|
6363
6600
|
let result = await prefetchStylesAndCallHandler(async () => {
|
|
6364
6601
|
invariant2(
|
|
@@ -6372,6 +6609,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6372
6609
|
return routeModule.clientLoader({
|
|
6373
6610
|
request,
|
|
6374
6611
|
params,
|
|
6612
|
+
context,
|
|
6375
6613
|
async serverLoader() {
|
|
6376
6614
|
preventInvalidServerHandlerCall("loader", route, isSpaMode);
|
|
6377
6615
|
if (isHydrationRequest) {
|
|
@@ -6396,7 +6634,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6396
6634
|
routeModule,
|
|
6397
6635
|
isSpaMode
|
|
6398
6636
|
);
|
|
6399
|
-
dataRoute.action = ({ request, params }, singleFetch) => {
|
|
6637
|
+
dataRoute.action = ({ request, params, context }, singleFetch) => {
|
|
6400
6638
|
return prefetchStylesAndCallHandler(async () => {
|
|
6401
6639
|
invariant2(
|
|
6402
6640
|
routeModule,
|
|
@@ -6411,6 +6649,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6411
6649
|
return routeModule.clientAction({
|
|
6412
6650
|
request,
|
|
6413
6651
|
params,
|
|
6652
|
+
context,
|
|
6414
6653
|
async serverAction() {
|
|
6415
6654
|
preventInvalidServerHandlerCall("action", route, isSpaMode);
|
|
6416
6655
|
return fetchServerAction(singleFetch);
|
|
@@ -6420,13 +6659,13 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6420
6659
|
};
|
|
6421
6660
|
} else {
|
|
6422
6661
|
if (!route.hasClientLoader) {
|
|
6423
|
-
dataRoute.loader = (
|
|
6662
|
+
dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
|
|
6424
6663
|
if (isSpaMode) return Promise.resolve(null);
|
|
6425
6664
|
return fetchServerLoader(singleFetch);
|
|
6426
6665
|
});
|
|
6427
6666
|
}
|
|
6428
6667
|
if (!route.hasClientAction) {
|
|
6429
|
-
dataRoute.action = (
|
|
6668
|
+
dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {
|
|
6430
6669
|
if (isSpaMode) {
|
|
6431
6670
|
throw noActionDefinedError("clientAction", route.id);
|
|
6432
6671
|
}
|
|
@@ -6462,6 +6701,7 @@ function createClientRoutes(manifest, routeModulesCache, initialState, isSpaMode
|
|
|
6462
6701
|
return {
|
|
6463
6702
|
...lazyRoute.loader ? { loader: lazyRoute.loader } : {},
|
|
6464
6703
|
...lazyRoute.action ? { action: lazyRoute.action } : {},
|
|
6704
|
+
middleware: mod.clientMiddleware,
|
|
6465
6705
|
hasErrorBoundary: lazyRoute.hasErrorBoundary,
|
|
6466
6706
|
shouldRevalidate: getShouldRevalidateFunction(
|
|
6467
6707
|
lazyRoute,
|
|
@@ -6519,6 +6759,7 @@ async function loadRouteModuleWithBlockingLinks(route, routeModules) {
|
|
|
6519
6759
|
return {
|
|
6520
6760
|
Component: getRouteModuleComponent(routeModule),
|
|
6521
6761
|
ErrorBoundary: routeModule.ErrorBoundary,
|
|
6762
|
+
clientMiddleware: routeModule.clientMiddleware,
|
|
6522
6763
|
clientAction: routeModule.clientAction,
|
|
6523
6764
|
clientLoader: routeModule.clientLoader,
|
|
6524
6765
|
handle: routeModule.handle,
|
|
@@ -6589,7 +6830,7 @@ function getPatchRoutesOnNavigationFunction(manifest, routeModules, isSpaMode, b
|
|
|
6589
6830
|
};
|
|
6590
6831
|
}
|
|
6591
6832
|
function useFogOFWarDiscovery(router, manifest, routeModules, isSpaMode) {
|
|
6592
|
-
|
|
6833
|
+
React8.useEffect(() => {
|
|
6593
6834
|
if (!isFogOfWarEnabled(isSpaMode) || navigator.connection?.saveData === true) {
|
|
6594
6835
|
return;
|
|
6595
6836
|
}
|
|
@@ -6718,7 +6959,7 @@ function debounce(callback, wait) {
|
|
|
6718
6959
|
|
|
6719
6960
|
// lib/dom/ssr/components.tsx
|
|
6720
6961
|
function useDataRouterContext2() {
|
|
6721
|
-
let context =
|
|
6962
|
+
let context = React9.useContext(DataRouterContext);
|
|
6722
6963
|
invariant2(
|
|
6723
6964
|
context,
|
|
6724
6965
|
"You must render this element inside a <DataRouterContext.Provider> element"
|
|
@@ -6726,17 +6967,17 @@ function useDataRouterContext2() {
|
|
|
6726
6967
|
return context;
|
|
6727
6968
|
}
|
|
6728
6969
|
function useDataRouterStateContext() {
|
|
6729
|
-
let context =
|
|
6970
|
+
let context = React9.useContext(DataRouterStateContext);
|
|
6730
6971
|
invariant2(
|
|
6731
6972
|
context,
|
|
6732
6973
|
"You must render this element inside a <DataRouterStateContext.Provider> element"
|
|
6733
6974
|
);
|
|
6734
6975
|
return context;
|
|
6735
6976
|
}
|
|
6736
|
-
var FrameworkContext =
|
|
6977
|
+
var FrameworkContext = React9.createContext(void 0);
|
|
6737
6978
|
FrameworkContext.displayName = "FrameworkContext";
|
|
6738
6979
|
function useFrameworkContext() {
|
|
6739
|
-
let context =
|
|
6980
|
+
let context = React9.useContext(FrameworkContext);
|
|
6740
6981
|
invariant2(
|
|
6741
6982
|
context,
|
|
6742
6983
|
"You must render this element inside a <HydratedRouter> element"
|
|
@@ -6744,12 +6985,12 @@ function useFrameworkContext() {
|
|
|
6744
6985
|
return context;
|
|
6745
6986
|
}
|
|
6746
6987
|
function usePrefetchBehavior(prefetch, theirElementProps) {
|
|
6747
|
-
let frameworkContext =
|
|
6748
|
-
let [maybePrefetch, setMaybePrefetch] =
|
|
6749
|
-
let [shouldPrefetch, setShouldPrefetch] =
|
|
6988
|
+
let frameworkContext = React9.useContext(FrameworkContext);
|
|
6989
|
+
let [maybePrefetch, setMaybePrefetch] = React9.useState(false);
|
|
6990
|
+
let [shouldPrefetch, setShouldPrefetch] = React9.useState(false);
|
|
6750
6991
|
let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;
|
|
6751
|
-
let ref =
|
|
6752
|
-
|
|
6992
|
+
let ref = React9.useRef(null);
|
|
6993
|
+
React9.useEffect(() => {
|
|
6753
6994
|
if (prefetch === "render") {
|
|
6754
6995
|
setShouldPrefetch(true);
|
|
6755
6996
|
}
|
|
@@ -6766,7 +7007,7 @@ function usePrefetchBehavior(prefetch, theirElementProps) {
|
|
|
6766
7007
|
};
|
|
6767
7008
|
}
|
|
6768
7009
|
}, [prefetch]);
|
|
6769
|
-
|
|
7010
|
+
React9.useEffect(() => {
|
|
6770
7011
|
if (maybePrefetch) {
|
|
6771
7012
|
let id = setTimeout(() => {
|
|
6772
7013
|
setShouldPrefetch(true);
|
|
@@ -6823,12 +7064,12 @@ function Links() {
|
|
|
6823
7064
|
let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();
|
|
6824
7065
|
let { errors, matches: routerMatches } = useDataRouterStateContext();
|
|
6825
7066
|
let matches = getActiveMatches(routerMatches, errors, isSpaMode);
|
|
6826
|
-
let keyedLinks =
|
|
7067
|
+
let keyedLinks = React9.useMemo(
|
|
6827
7068
|
() => getKeyedLinksForMatches(matches, routeModules, manifest),
|
|
6828
7069
|
[matches, routeModules, manifest]
|
|
6829
7070
|
);
|
|
6830
|
-
return /* @__PURE__ */
|
|
6831
|
-
({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */
|
|
7071
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, null, criticalCss ? /* @__PURE__ */ React9.createElement("style", { dangerouslySetInnerHTML: { __html: criticalCss } }) : null, keyedLinks.map(
|
|
7072
|
+
({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React9.createElement(PrefetchPageLinks, { key, ...link }) : /* @__PURE__ */ React9.createElement("link", { key, ...link })
|
|
6832
7073
|
));
|
|
6833
7074
|
}
|
|
6834
7075
|
function PrefetchPageLinks({
|
|
@@ -6836,19 +7077,19 @@ function PrefetchPageLinks({
|
|
|
6836
7077
|
...dataLinkProps
|
|
6837
7078
|
}) {
|
|
6838
7079
|
let { router } = useDataRouterContext2();
|
|
6839
|
-
let matches =
|
|
7080
|
+
let matches = React9.useMemo(
|
|
6840
7081
|
() => matchRoutes(router.routes, page, router.basename),
|
|
6841
7082
|
[router.routes, page, router.basename]
|
|
6842
7083
|
);
|
|
6843
7084
|
if (!matches) {
|
|
6844
7085
|
return null;
|
|
6845
7086
|
}
|
|
6846
|
-
return /* @__PURE__ */
|
|
7087
|
+
return /* @__PURE__ */ React9.createElement(PrefetchPageLinksImpl, { page, matches, ...dataLinkProps });
|
|
6847
7088
|
}
|
|
6848
7089
|
function useKeyedPrefetchLinks(matches) {
|
|
6849
7090
|
let { manifest, routeModules } = useFrameworkContext();
|
|
6850
|
-
let [keyedPrefetchLinks, setKeyedPrefetchLinks] =
|
|
6851
|
-
|
|
7091
|
+
let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React9.useState([]);
|
|
7092
|
+
React9.useEffect(() => {
|
|
6852
7093
|
let interrupted = false;
|
|
6853
7094
|
void getKeyedPrefetchLinks(matches, manifest, routeModules).then(
|
|
6854
7095
|
(links) => {
|
|
@@ -6871,7 +7112,7 @@ function PrefetchPageLinksImpl({
|
|
|
6871
7112
|
let location = useLocation();
|
|
6872
7113
|
let { manifest, routeModules } = useFrameworkContext();
|
|
6873
7114
|
let { loaderData, matches } = useDataRouterStateContext();
|
|
6874
|
-
let newMatchesForData =
|
|
7115
|
+
let newMatchesForData = React9.useMemo(
|
|
6875
7116
|
() => getNewMatchesForLinks(
|
|
6876
7117
|
page,
|
|
6877
7118
|
nextMatches,
|
|
@@ -6882,7 +7123,7 @@ function PrefetchPageLinksImpl({
|
|
|
6882
7123
|
),
|
|
6883
7124
|
[page, nextMatches, matches, manifest, location]
|
|
6884
7125
|
);
|
|
6885
|
-
let newMatchesForAssets =
|
|
7126
|
+
let newMatchesForAssets = React9.useMemo(
|
|
6886
7127
|
() => getNewMatchesForLinks(
|
|
6887
7128
|
page,
|
|
6888
7129
|
nextMatches,
|
|
@@ -6893,7 +7134,7 @@ function PrefetchPageLinksImpl({
|
|
|
6893
7134
|
),
|
|
6894
7135
|
[page, nextMatches, matches, manifest, location]
|
|
6895
7136
|
);
|
|
6896
|
-
let dataHrefs =
|
|
7137
|
+
let dataHrefs = React9.useMemo(() => {
|
|
6897
7138
|
if (page === location.pathname + location.search + location.hash) {
|
|
6898
7139
|
return [];
|
|
6899
7140
|
}
|
|
@@ -6932,15 +7173,15 @@ function PrefetchPageLinksImpl({
|
|
|
6932
7173
|
page,
|
|
6933
7174
|
routeModules
|
|
6934
7175
|
]);
|
|
6935
|
-
let moduleHrefs =
|
|
7176
|
+
let moduleHrefs = React9.useMemo(
|
|
6936
7177
|
() => getModuleLinkHrefs(newMatchesForAssets, manifest),
|
|
6937
7178
|
[newMatchesForAssets, manifest]
|
|
6938
7179
|
);
|
|
6939
7180
|
let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);
|
|
6940
|
-
return /* @__PURE__ */
|
|
7181
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React9.createElement("link", { key: href, rel: "prefetch", as: "fetch", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React9.createElement("link", { key: href, rel: "modulepreload", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (
|
|
6941
7182
|
// these don't spread `linkProps` because they are full link descriptors
|
|
6942
7183
|
// already with their own props
|
|
6943
|
-
/* @__PURE__ */
|
|
7184
|
+
/* @__PURE__ */ React9.createElement("link", { key, ...link })
|
|
6944
7185
|
)));
|
|
6945
7186
|
}
|
|
6946
7187
|
function Meta() {
|
|
@@ -6998,7 +7239,7 @@ function Meta() {
|
|
|
6998
7239
|
meta = [...routeMeta];
|
|
6999
7240
|
leafMeta = meta;
|
|
7000
7241
|
}
|
|
7001
|
-
return /* @__PURE__ */
|
|
7242
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, null, meta.flat().map((metaProps) => {
|
|
7002
7243
|
if (!metaProps) {
|
|
7003
7244
|
return null;
|
|
7004
7245
|
}
|
|
@@ -7011,22 +7252,22 @@ function Meta() {
|
|
|
7011
7252
|
return null;
|
|
7012
7253
|
}
|
|
7013
7254
|
let Comp = tagName;
|
|
7014
|
-
return /* @__PURE__ */
|
|
7255
|
+
return /* @__PURE__ */ React9.createElement(Comp, { key: JSON.stringify(rest), ...rest });
|
|
7015
7256
|
}
|
|
7016
7257
|
if ("title" in metaProps) {
|
|
7017
|
-
return /* @__PURE__ */
|
|
7258
|
+
return /* @__PURE__ */ React9.createElement("title", { key: "title" }, String(metaProps.title));
|
|
7018
7259
|
}
|
|
7019
7260
|
if ("charset" in metaProps) {
|
|
7020
7261
|
metaProps.charSet ?? (metaProps.charSet = metaProps.charset);
|
|
7021
7262
|
delete metaProps.charset;
|
|
7022
7263
|
}
|
|
7023
7264
|
if ("charSet" in metaProps && metaProps.charSet != null) {
|
|
7024
|
-
return typeof metaProps.charSet === "string" ? /* @__PURE__ */
|
|
7265
|
+
return typeof metaProps.charSet === "string" ? /* @__PURE__ */ React9.createElement("meta", { key: "charSet", charSet: metaProps.charSet }) : null;
|
|
7025
7266
|
}
|
|
7026
7267
|
if ("script:ld+json" in metaProps) {
|
|
7027
7268
|
try {
|
|
7028
7269
|
let json = JSON.stringify(metaProps["script:ld+json"]);
|
|
7029
|
-
return /* @__PURE__ */
|
|
7270
|
+
return /* @__PURE__ */ React9.createElement(
|
|
7030
7271
|
"script",
|
|
7031
7272
|
{
|
|
7032
7273
|
key: `script:ld+json:${json}`,
|
|
@@ -7038,7 +7279,7 @@ function Meta() {
|
|
|
7038
7279
|
return null;
|
|
7039
7280
|
}
|
|
7040
7281
|
}
|
|
7041
|
-
return /* @__PURE__ */
|
|
7282
|
+
return /* @__PURE__ */ React9.createElement("meta", { key: JSON.stringify(metaProps), ...metaProps });
|
|
7042
7283
|
}));
|
|
7043
7284
|
}
|
|
7044
7285
|
function isValidMetaTag(tagName) {
|
|
@@ -7054,10 +7295,10 @@ function Scripts(props) {
|
|
|
7054
7295
|
renderMeta.didRenderScripts = true;
|
|
7055
7296
|
}
|
|
7056
7297
|
let matches = getActiveMatches(routerMatches, null, isSpaMode);
|
|
7057
|
-
|
|
7298
|
+
React9.useEffect(() => {
|
|
7058
7299
|
isHydrated = true;
|
|
7059
7300
|
}, []);
|
|
7060
|
-
let initialScripts =
|
|
7301
|
+
let initialScripts = React9.useMemo(() => {
|
|
7061
7302
|
let streamScript = "window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());";
|
|
7062
7303
|
let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : " ";
|
|
7063
7304
|
let routeModulesScript = !isStatic ? " " : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : ""}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : ""};
|
|
@@ -7077,7 +7318,7 @@ ${matches.map(
|
|
|
7077
7318
|
window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(",")}};
|
|
7078
7319
|
|
|
7079
7320
|
import(${JSON.stringify(manifest.entry.module)});`;
|
|
7080
|
-
return /* @__PURE__ */
|
|
7321
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(
|
|
7081
7322
|
"script",
|
|
7082
7323
|
{
|
|
7083
7324
|
...props,
|
|
@@ -7085,7 +7326,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
|
|
|
7085
7326
|
dangerouslySetInnerHTML: createHtml(contextScript),
|
|
7086
7327
|
type: void 0
|
|
7087
7328
|
}
|
|
7088
|
-
), /* @__PURE__ */
|
|
7329
|
+
), /* @__PURE__ */ React9.createElement(
|
|
7089
7330
|
"script",
|
|
7090
7331
|
{
|
|
7091
7332
|
...props,
|
|
@@ -7101,21 +7342,21 @@ import(${JSON.stringify(manifest.entry.module)});`;
|
|
|
7101
7342
|
return route ? (route.imports || []).concat([route.module]) : [];
|
|
7102
7343
|
}).flat(1);
|
|
7103
7344
|
let preloads = isHydrated ? [] : manifest.entry.imports.concat(routePreloads);
|
|
7104
|
-
return isHydrated ? null : /* @__PURE__ */
|
|
7345
|
+
return isHydrated ? null : /* @__PURE__ */ React9.createElement(React9.Fragment, null, !enableFogOfWar ? /* @__PURE__ */ React9.createElement(
|
|
7105
7346
|
"link",
|
|
7106
7347
|
{
|
|
7107
7348
|
rel: "modulepreload",
|
|
7108
7349
|
href: manifest.url,
|
|
7109
7350
|
crossOrigin: props.crossOrigin
|
|
7110
7351
|
}
|
|
7111
|
-
) : null, /* @__PURE__ */
|
|
7352
|
+
) : null, /* @__PURE__ */ React9.createElement(
|
|
7112
7353
|
"link",
|
|
7113
7354
|
{
|
|
7114
7355
|
rel: "modulepreload",
|
|
7115
7356
|
href: manifest.entry.module,
|
|
7116
7357
|
crossOrigin: props.crossOrigin
|
|
7117
7358
|
}
|
|
7118
|
-
), dedupe(preloads).map((path) => /* @__PURE__ */
|
|
7359
|
+
), dedupe(preloads).map((path) => /* @__PURE__ */ React9.createElement(
|
|
7119
7360
|
"link",
|
|
7120
7361
|
{
|
|
7121
7362
|
key: path,
|
|
@@ -7144,13 +7385,14 @@ function mergeRefs(...refs) {
|
|
|
7144
7385
|
var isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
|
|
7145
7386
|
try {
|
|
7146
7387
|
if (isBrowser) {
|
|
7147
|
-
window.__reactRouterVersion = "0.0.0-experimental-
|
|
7388
|
+
window.__reactRouterVersion = "0.0.0-experimental-e41ede670";
|
|
7148
7389
|
}
|
|
7149
7390
|
} catch (e) {
|
|
7150
7391
|
}
|
|
7151
7392
|
function createBrowserRouter(routes, opts) {
|
|
7152
7393
|
return createRouter({
|
|
7153
7394
|
basename: opts?.basename,
|
|
7395
|
+
context: opts?.context,
|
|
7154
7396
|
future: opts?.future,
|
|
7155
7397
|
history: createBrowserHistory({ window: opts?.window }),
|
|
7156
7398
|
hydrationData: opts?.hydrationData || parseHydrationData(),
|
|
@@ -7164,6 +7406,7 @@ function createBrowserRouter(routes, opts) {
|
|
|
7164
7406
|
function createHashRouter(routes, opts) {
|
|
7165
7407
|
return createRouter({
|
|
7166
7408
|
basename: opts?.basename,
|
|
7409
|
+
context: opts?.context,
|
|
7167
7410
|
future: opts?.future,
|
|
7168
7411
|
history: createHashHistory({ window: opts?.window }),
|
|
7169
7412
|
hydrationData: opts?.hydrationData || parseHydrationData(),
|
|
@@ -7224,23 +7467,23 @@ function BrowserRouter({
|
|
|
7224
7467
|
children,
|
|
7225
7468
|
window: window2
|
|
7226
7469
|
}) {
|
|
7227
|
-
let historyRef =
|
|
7470
|
+
let historyRef = React10.useRef();
|
|
7228
7471
|
if (historyRef.current == null) {
|
|
7229
7472
|
historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });
|
|
7230
7473
|
}
|
|
7231
7474
|
let history = historyRef.current;
|
|
7232
|
-
let [state, setStateImpl] =
|
|
7475
|
+
let [state, setStateImpl] = React10.useState({
|
|
7233
7476
|
action: history.action,
|
|
7234
7477
|
location: history.location
|
|
7235
7478
|
});
|
|
7236
|
-
let setState =
|
|
7479
|
+
let setState = React10.useCallback(
|
|
7237
7480
|
(newState) => {
|
|
7238
|
-
|
|
7481
|
+
React10.startTransition(() => setStateImpl(newState));
|
|
7239
7482
|
},
|
|
7240
7483
|
[setStateImpl]
|
|
7241
7484
|
);
|
|
7242
|
-
|
|
7243
|
-
return /* @__PURE__ */
|
|
7485
|
+
React10.useLayoutEffect(() => history.listen(setState), [history, setState]);
|
|
7486
|
+
return /* @__PURE__ */ React10.createElement(
|
|
7244
7487
|
Router,
|
|
7245
7488
|
{
|
|
7246
7489
|
basename,
|
|
@@ -7252,23 +7495,23 @@ function BrowserRouter({
|
|
|
7252
7495
|
);
|
|
7253
7496
|
}
|
|
7254
7497
|
function HashRouter({ basename, children, window: window2 }) {
|
|
7255
|
-
let historyRef =
|
|
7498
|
+
let historyRef = React10.useRef();
|
|
7256
7499
|
if (historyRef.current == null) {
|
|
7257
7500
|
historyRef.current = createHashHistory({ window: window2, v5Compat: true });
|
|
7258
7501
|
}
|
|
7259
7502
|
let history = historyRef.current;
|
|
7260
|
-
let [state, setStateImpl] =
|
|
7503
|
+
let [state, setStateImpl] = React10.useState({
|
|
7261
7504
|
action: history.action,
|
|
7262
7505
|
location: history.location
|
|
7263
7506
|
});
|
|
7264
|
-
let setState =
|
|
7507
|
+
let setState = React10.useCallback(
|
|
7265
7508
|
(newState) => {
|
|
7266
|
-
|
|
7509
|
+
React10.startTransition(() => setStateImpl(newState));
|
|
7267
7510
|
},
|
|
7268
7511
|
[setStateImpl]
|
|
7269
7512
|
);
|
|
7270
|
-
|
|
7271
|
-
return /* @__PURE__ */
|
|
7513
|
+
React10.useLayoutEffect(() => history.listen(setState), [history, setState]);
|
|
7514
|
+
return /* @__PURE__ */ React10.createElement(
|
|
7272
7515
|
Router,
|
|
7273
7516
|
{
|
|
7274
7517
|
basename,
|
|
@@ -7284,18 +7527,18 @@ function HistoryRouter({
|
|
|
7284
7527
|
children,
|
|
7285
7528
|
history
|
|
7286
7529
|
}) {
|
|
7287
|
-
let [state, setStateImpl] =
|
|
7530
|
+
let [state, setStateImpl] = React10.useState({
|
|
7288
7531
|
action: history.action,
|
|
7289
7532
|
location: history.location
|
|
7290
7533
|
});
|
|
7291
|
-
let setState =
|
|
7534
|
+
let setState = React10.useCallback(
|
|
7292
7535
|
(newState) => {
|
|
7293
|
-
|
|
7536
|
+
React10.startTransition(() => setStateImpl(newState));
|
|
7294
7537
|
},
|
|
7295
7538
|
[setStateImpl]
|
|
7296
7539
|
);
|
|
7297
|
-
|
|
7298
|
-
return /* @__PURE__ */
|
|
7540
|
+
React10.useLayoutEffect(() => history.listen(setState), [history, setState]);
|
|
7541
|
+
return /* @__PURE__ */ React10.createElement(
|
|
7299
7542
|
Router,
|
|
7300
7543
|
{
|
|
7301
7544
|
basename,
|
|
@@ -7307,8 +7550,8 @@ function HistoryRouter({
|
|
|
7307
7550
|
);
|
|
7308
7551
|
}
|
|
7309
7552
|
HistoryRouter.displayName = "unstable_HistoryRouter";
|
|
7310
|
-
var
|
|
7311
|
-
var Link =
|
|
7553
|
+
var ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
7554
|
+
var Link = React10.forwardRef(
|
|
7312
7555
|
function LinkWithRef({
|
|
7313
7556
|
onClick,
|
|
7314
7557
|
discover = "render",
|
|
@@ -7323,8 +7566,8 @@ var Link = React11.forwardRef(
|
|
|
7323
7566
|
viewTransition,
|
|
7324
7567
|
...rest
|
|
7325
7568
|
}, forwardedRef) {
|
|
7326
|
-
let { basename } =
|
|
7327
|
-
let isAbsolute = typeof to === "string" &&
|
|
7569
|
+
let { basename } = React10.useContext(NavigationContext);
|
|
7570
|
+
let isAbsolute = typeof to === "string" && ABSOLUTE_URL_REGEX2.test(to);
|
|
7328
7571
|
let absoluteHref;
|
|
7329
7572
|
let isExternal = false;
|
|
7330
7573
|
if (typeof to === "string" && isAbsolute) {
|
|
@@ -7368,7 +7611,7 @@ var Link = React11.forwardRef(
|
|
|
7368
7611
|
}
|
|
7369
7612
|
let link = (
|
|
7370
7613
|
// eslint-disable-next-line jsx-a11y/anchor-has-content
|
|
7371
|
-
/* @__PURE__ */
|
|
7614
|
+
/* @__PURE__ */ React10.createElement(
|
|
7372
7615
|
"a",
|
|
7373
7616
|
{
|
|
7374
7617
|
...rest,
|
|
@@ -7381,11 +7624,11 @@ var Link = React11.forwardRef(
|
|
|
7381
7624
|
}
|
|
7382
7625
|
)
|
|
7383
7626
|
);
|
|
7384
|
-
return shouldPrefetch && !isAbsolute ? /* @__PURE__ */
|
|
7627
|
+
return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href })) : link;
|
|
7385
7628
|
}
|
|
7386
7629
|
);
|
|
7387
7630
|
Link.displayName = "Link";
|
|
7388
|
-
var NavLink =
|
|
7631
|
+
var NavLink = React10.forwardRef(
|
|
7389
7632
|
function NavLinkWithRef({
|
|
7390
7633
|
"aria-current": ariaCurrentProp = "page",
|
|
7391
7634
|
caseSensitive = false,
|
|
@@ -7399,8 +7642,8 @@ var NavLink = React11.forwardRef(
|
|
|
7399
7642
|
}, ref) {
|
|
7400
7643
|
let path = useResolvedPath(to, { relative: rest.relative });
|
|
7401
7644
|
let location = useLocation();
|
|
7402
|
-
let routerState =
|
|
7403
|
-
let { navigator: navigator2, basename } =
|
|
7645
|
+
let routerState = React10.useContext(DataRouterStateContext);
|
|
7646
|
+
let { navigator: navigator2, basename } = React10.useContext(NavigationContext);
|
|
7404
7647
|
let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static
|
|
7405
7648
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
7406
7649
|
useViewTransitionState(path) && viewTransition === true;
|
|
@@ -7436,7 +7679,7 @@ var NavLink = React11.forwardRef(
|
|
|
7436
7679
|
].filter(Boolean).join(" ");
|
|
7437
7680
|
}
|
|
7438
7681
|
let style = typeof styleProp === "function" ? styleProp(renderProps) : styleProp;
|
|
7439
|
-
return /* @__PURE__ */
|
|
7682
|
+
return /* @__PURE__ */ React10.createElement(
|
|
7440
7683
|
Link,
|
|
7441
7684
|
{
|
|
7442
7685
|
...rest,
|
|
@@ -7452,7 +7695,7 @@ var NavLink = React11.forwardRef(
|
|
|
7452
7695
|
}
|
|
7453
7696
|
);
|
|
7454
7697
|
NavLink.displayName = "NavLink";
|
|
7455
|
-
var Form =
|
|
7698
|
+
var Form = React10.forwardRef(
|
|
7456
7699
|
({
|
|
7457
7700
|
discover = "render",
|
|
7458
7701
|
fetcherKey,
|
|
@@ -7471,7 +7714,7 @@ var Form = React11.forwardRef(
|
|
|
7471
7714
|
let submit = useSubmit();
|
|
7472
7715
|
let formAction = useFormAction(action, { relative });
|
|
7473
7716
|
let formMethod = method.toLowerCase() === "get" ? "get" : "post";
|
|
7474
|
-
let isAbsolute = typeof action === "string" &&
|
|
7717
|
+
let isAbsolute = typeof action === "string" && ABSOLUTE_URL_REGEX2.test(action);
|
|
7475
7718
|
let submitHandler = (event) => {
|
|
7476
7719
|
onSubmit && onSubmit(event);
|
|
7477
7720
|
if (event.defaultPrevented) return;
|
|
@@ -7489,7 +7732,7 @@ var Form = React11.forwardRef(
|
|
|
7489
7732
|
viewTransition
|
|
7490
7733
|
});
|
|
7491
7734
|
};
|
|
7492
|
-
return /* @__PURE__ */
|
|
7735
|
+
return /* @__PURE__ */ React10.createElement(
|
|
7493
7736
|
"form",
|
|
7494
7737
|
{
|
|
7495
7738
|
ref: forwardedRef,
|
|
@@ -7508,12 +7751,12 @@ function ScrollRestoration({
|
|
|
7508
7751
|
storageKey,
|
|
7509
7752
|
...props
|
|
7510
7753
|
}) {
|
|
7511
|
-
let remixContext =
|
|
7512
|
-
let { basename } =
|
|
7754
|
+
let remixContext = React10.useContext(FrameworkContext);
|
|
7755
|
+
let { basename } = React10.useContext(NavigationContext);
|
|
7513
7756
|
let location = useLocation();
|
|
7514
7757
|
let matches = useMatches();
|
|
7515
7758
|
useScrollRestoration({ getKey, storageKey });
|
|
7516
|
-
let ssrKey =
|
|
7759
|
+
let ssrKey = React10.useMemo(
|
|
7517
7760
|
() => {
|
|
7518
7761
|
if (!remixContext || !getKey) return null;
|
|
7519
7762
|
let userKey = getScrollRestorationKey(
|
|
@@ -7547,7 +7790,7 @@ function ScrollRestoration({
|
|
|
7547
7790
|
sessionStorage.removeItem(storageKey2);
|
|
7548
7791
|
}
|
|
7549
7792
|
}).toString();
|
|
7550
|
-
return /* @__PURE__ */
|
|
7793
|
+
return /* @__PURE__ */ React10.createElement(
|
|
7551
7794
|
"script",
|
|
7552
7795
|
{
|
|
7553
7796
|
...props,
|
|
@@ -7565,12 +7808,12 @@ function getDataRouterConsoleError2(hookName) {
|
|
|
7565
7808
|
return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;
|
|
7566
7809
|
}
|
|
7567
7810
|
function useDataRouterContext3(hookName) {
|
|
7568
|
-
let ctx =
|
|
7811
|
+
let ctx = React10.useContext(DataRouterContext);
|
|
7569
7812
|
invariant(ctx, getDataRouterConsoleError2(hookName));
|
|
7570
7813
|
return ctx;
|
|
7571
7814
|
}
|
|
7572
7815
|
function useDataRouterState2(hookName) {
|
|
7573
|
-
let state =
|
|
7816
|
+
let state = React10.useContext(DataRouterStateContext);
|
|
7574
7817
|
invariant(state, getDataRouterConsoleError2(hookName));
|
|
7575
7818
|
return state;
|
|
7576
7819
|
}
|
|
@@ -7585,7 +7828,7 @@ function useLinkClickHandler(to, {
|
|
|
7585
7828
|
let navigate = useNavigate();
|
|
7586
7829
|
let location = useLocation();
|
|
7587
7830
|
let path = useResolvedPath(to, { relative });
|
|
7588
|
-
return
|
|
7831
|
+
return React10.useCallback(
|
|
7589
7832
|
(event) => {
|
|
7590
7833
|
if (shouldProcessLinkClick(event, target)) {
|
|
7591
7834
|
event.preventDefault();
|
|
@@ -7618,10 +7861,10 @@ function useSearchParams(defaultInit) {
|
|
|
7618
7861
|
typeof URLSearchParams !== "undefined",
|
|
7619
7862
|
`You cannot use the \`useSearchParams\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`
|
|
7620
7863
|
);
|
|
7621
|
-
let defaultSearchParamsRef =
|
|
7622
|
-
let hasSetSearchParamsRef =
|
|
7864
|
+
let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));
|
|
7865
|
+
let hasSetSearchParamsRef = React10.useRef(false);
|
|
7623
7866
|
let location = useLocation();
|
|
7624
|
-
let searchParams =
|
|
7867
|
+
let searchParams = React10.useMemo(
|
|
7625
7868
|
() => (
|
|
7626
7869
|
// Only merge in the defaults if we haven't yet called setSearchParams.
|
|
7627
7870
|
// Once we call that we want those to take precedence, otherwise you can't
|
|
@@ -7634,7 +7877,7 @@ function useSearchParams(defaultInit) {
|
|
|
7634
7877
|
[location.search]
|
|
7635
7878
|
);
|
|
7636
7879
|
let navigate = useNavigate();
|
|
7637
|
-
let setSearchParams =
|
|
7880
|
+
let setSearchParams = React10.useCallback(
|
|
7638
7881
|
(nextInit, navigateOptions) => {
|
|
7639
7882
|
const newSearchParams = createSearchParams(
|
|
7640
7883
|
typeof nextInit === "function" ? nextInit(searchParams) : nextInit
|
|
@@ -7650,9 +7893,9 @@ var fetcherId = 0;
|
|
|
7650
7893
|
var getUniqueFetcherId = () => `__${String(++fetcherId)}__`;
|
|
7651
7894
|
function useSubmit() {
|
|
7652
7895
|
let { router } = useDataRouterContext3("useSubmit" /* UseSubmit */);
|
|
7653
|
-
let { basename } =
|
|
7896
|
+
let { basename } = React10.useContext(NavigationContext);
|
|
7654
7897
|
let currentRouteId = useRouteId();
|
|
7655
|
-
return
|
|
7898
|
+
return React10.useCallback(
|
|
7656
7899
|
async (target, options = {}) => {
|
|
7657
7900
|
let { action, method, encType, formData, body } = getFormSubmissionInfo(
|
|
7658
7901
|
target,
|
|
@@ -7687,8 +7930,8 @@ function useSubmit() {
|
|
|
7687
7930
|
);
|
|
7688
7931
|
}
|
|
7689
7932
|
function useFormAction(action, { relative } = {}) {
|
|
7690
|
-
let { basename } =
|
|
7691
|
-
let routeContext =
|
|
7933
|
+
let { basename } = React10.useContext(NavigationContext);
|
|
7934
|
+
let routeContext = React10.useContext(RouteContext);
|
|
7692
7935
|
invariant(routeContext, "useFormAction must be used inside a RouteContext");
|
|
7693
7936
|
let [match] = routeContext.matches.slice(-1);
|
|
7694
7937
|
let path = { ...useResolvedPath(action ? action : ".", { relative }) };
|
|
@@ -7718,8 +7961,8 @@ function useFetcher({
|
|
|
7718
7961
|
} = {}) {
|
|
7719
7962
|
let { router } = useDataRouterContext3("useFetcher" /* UseFetcher */);
|
|
7720
7963
|
let state = useDataRouterState2("useFetcher" /* UseFetcher */);
|
|
7721
|
-
let fetcherData =
|
|
7722
|
-
let route =
|
|
7964
|
+
let fetcherData = React10.useContext(FetchersContext);
|
|
7965
|
+
let route = React10.useContext(RouteContext);
|
|
7723
7966
|
let routeId = route.matches[route.matches.length - 1]?.route.id;
|
|
7724
7967
|
invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);
|
|
7725
7968
|
invariant(route, `useFetcher must be used inside a RouteContext`);
|
|
@@ -7727,16 +7970,16 @@ function useFetcher({
|
|
|
7727
7970
|
routeId != null,
|
|
7728
7971
|
`useFetcher can only be used on routes that contain a unique "id"`
|
|
7729
7972
|
);
|
|
7730
|
-
let defaultKey =
|
|
7731
|
-
let [fetcherKey, setFetcherKey] =
|
|
7973
|
+
let defaultKey = React10.useId();
|
|
7974
|
+
let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);
|
|
7732
7975
|
if (key && key !== fetcherKey) {
|
|
7733
7976
|
setFetcherKey(key);
|
|
7734
7977
|
}
|
|
7735
|
-
|
|
7978
|
+
React10.useEffect(() => {
|
|
7736
7979
|
router.getFetcher(fetcherKey);
|
|
7737
7980
|
return () => router.deleteFetcher(fetcherKey);
|
|
7738
7981
|
}, [router, fetcherKey]);
|
|
7739
|
-
let load =
|
|
7982
|
+
let load = React10.useCallback(
|
|
7740
7983
|
async (href, opts) => {
|
|
7741
7984
|
invariant(routeId, "No routeId available for fetcher.load()");
|
|
7742
7985
|
await router.fetch(fetcherKey, routeId, href, opts);
|
|
@@ -7744,7 +7987,7 @@ function useFetcher({
|
|
|
7744
7987
|
[fetcherKey, routeId, router]
|
|
7745
7988
|
);
|
|
7746
7989
|
let submitImpl = useSubmit();
|
|
7747
|
-
let submit =
|
|
7990
|
+
let submit = React10.useCallback(
|
|
7748
7991
|
async (target, opts) => {
|
|
7749
7992
|
await submitImpl(target, {
|
|
7750
7993
|
...opts,
|
|
@@ -7754,10 +7997,10 @@ function useFetcher({
|
|
|
7754
7997
|
},
|
|
7755
7998
|
[fetcherKey, submitImpl]
|
|
7756
7999
|
);
|
|
7757
|
-
let FetcherForm =
|
|
7758
|
-
let FetcherForm2 =
|
|
8000
|
+
let FetcherForm = React10.useMemo(() => {
|
|
8001
|
+
let FetcherForm2 = React10.forwardRef(
|
|
7759
8002
|
(props, ref) => {
|
|
7760
|
-
return /* @__PURE__ */
|
|
8003
|
+
return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });
|
|
7761
8004
|
}
|
|
7762
8005
|
);
|
|
7763
8006
|
FetcherForm2.displayName = "fetcher.Form";
|
|
@@ -7765,7 +8008,7 @@ function useFetcher({
|
|
|
7765
8008
|
}, [fetcherKey]);
|
|
7766
8009
|
let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;
|
|
7767
8010
|
let data2 = fetcherData.get(fetcherKey);
|
|
7768
|
-
let fetcherWithComponents =
|
|
8011
|
+
let fetcherWithComponents = React10.useMemo(
|
|
7769
8012
|
() => ({
|
|
7770
8013
|
Form: FetcherForm,
|
|
7771
8014
|
submit,
|
|
@@ -7814,18 +8057,18 @@ function useScrollRestoration({
|
|
|
7814
8057
|
let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(
|
|
7815
8058
|
"useScrollRestoration" /* UseScrollRestoration */
|
|
7816
8059
|
);
|
|
7817
|
-
let { basename } =
|
|
8060
|
+
let { basename } = React10.useContext(NavigationContext);
|
|
7818
8061
|
let location = useLocation();
|
|
7819
8062
|
let matches = useMatches();
|
|
7820
8063
|
let navigation = useNavigation();
|
|
7821
|
-
|
|
8064
|
+
React10.useEffect(() => {
|
|
7822
8065
|
window.history.scrollRestoration = "manual";
|
|
7823
8066
|
return () => {
|
|
7824
8067
|
window.history.scrollRestoration = "auto";
|
|
7825
8068
|
};
|
|
7826
8069
|
}, []);
|
|
7827
8070
|
usePageHide(
|
|
7828
|
-
|
|
8071
|
+
React10.useCallback(() => {
|
|
7829
8072
|
if (navigation.state === "idle") {
|
|
7830
8073
|
let key = getScrollRestorationKey(location, matches, basename, getKey);
|
|
7831
8074
|
savedScrollPositions[key] = window.scrollY;
|
|
@@ -7845,7 +8088,7 @@ function useScrollRestoration({
|
|
|
7845
8088
|
}, [navigation.state, getKey, basename, location, matches, storageKey])
|
|
7846
8089
|
);
|
|
7847
8090
|
if (typeof document !== "undefined") {
|
|
7848
|
-
|
|
8091
|
+
React10.useLayoutEffect(() => {
|
|
7849
8092
|
try {
|
|
7850
8093
|
let sessionPositions = sessionStorage.getItem(
|
|
7851
8094
|
storageKey || SCROLL_RESTORATION_STORAGE_KEY
|
|
@@ -7856,7 +8099,7 @@ function useScrollRestoration({
|
|
|
7856
8099
|
} catch (e) {
|
|
7857
8100
|
}
|
|
7858
8101
|
}, [storageKey]);
|
|
7859
|
-
|
|
8102
|
+
React10.useLayoutEffect(() => {
|
|
7860
8103
|
let disableScrollRestoration = router?.enableScrollRestoration(
|
|
7861
8104
|
savedScrollPositions,
|
|
7862
8105
|
() => window.scrollY,
|
|
@@ -7864,7 +8107,7 @@ function useScrollRestoration({
|
|
|
7864
8107
|
);
|
|
7865
8108
|
return () => disableScrollRestoration && disableScrollRestoration();
|
|
7866
8109
|
}, [router, basename, getKey]);
|
|
7867
|
-
|
|
8110
|
+
React10.useLayoutEffect(() => {
|
|
7868
8111
|
if (restoreScrollPosition === false) {
|
|
7869
8112
|
return;
|
|
7870
8113
|
}
|
|
@@ -7890,7 +8133,7 @@ function useScrollRestoration({
|
|
|
7890
8133
|
}
|
|
7891
8134
|
function useBeforeUnload(callback, options) {
|
|
7892
8135
|
let { capture } = options || {};
|
|
7893
|
-
|
|
8136
|
+
React10.useEffect(() => {
|
|
7894
8137
|
let opts = capture != null ? { capture } : void 0;
|
|
7895
8138
|
window.addEventListener("beforeunload", callback, opts);
|
|
7896
8139
|
return () => {
|
|
@@ -7900,7 +8143,7 @@ function useBeforeUnload(callback, options) {
|
|
|
7900
8143
|
}
|
|
7901
8144
|
function usePageHide(callback, options) {
|
|
7902
8145
|
let { capture } = options || {};
|
|
7903
|
-
|
|
8146
|
+
React10.useEffect(() => {
|
|
7904
8147
|
let opts = capture != null ? { capture } : void 0;
|
|
7905
8148
|
window.addEventListener("pagehide", callback, opts);
|
|
7906
8149
|
return () => {
|
|
@@ -7913,7 +8156,7 @@ function usePrompt({
|
|
|
7913
8156
|
message
|
|
7914
8157
|
}) {
|
|
7915
8158
|
let blocker = useBlocker(when);
|
|
7916
|
-
|
|
8159
|
+
React10.useEffect(() => {
|
|
7917
8160
|
if (blocker.state === "blocked") {
|
|
7918
8161
|
let proceed = window.confirm(message);
|
|
7919
8162
|
if (proceed) {
|
|
@@ -7923,14 +8166,14 @@ function usePrompt({
|
|
|
7923
8166
|
}
|
|
7924
8167
|
}
|
|
7925
8168
|
}, [blocker, message]);
|
|
7926
|
-
|
|
8169
|
+
React10.useEffect(() => {
|
|
7927
8170
|
if (blocker.state === "blocked" && !when) {
|
|
7928
8171
|
blocker.reset();
|
|
7929
8172
|
}
|
|
7930
8173
|
}, [blocker, when]);
|
|
7931
8174
|
}
|
|
7932
8175
|
function useViewTransitionState(to, opts = {}) {
|
|
7933
|
-
let vtContext =
|
|
8176
|
+
let vtContext = React10.useContext(ViewTransitionContext);
|
|
7934
8177
|
invariant(
|
|
7935
8178
|
vtContext != null,
|
|
7936
8179
|
"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?"
|
|
@@ -7947,8 +8190,8 @@ function useViewTransitionState(to, opts = {}) {
|
|
|
7947
8190
|
return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;
|
|
7948
8191
|
}
|
|
7949
8192
|
|
|
7950
|
-
// lib/dom/
|
|
7951
|
-
var
|
|
8193
|
+
// lib/dom/server.tsx
|
|
8194
|
+
var React11 = __toESM(require("react"));
|
|
7952
8195
|
function StaticRouter({
|
|
7953
8196
|
basename,
|
|
7954
8197
|
children,
|
|
@@ -7966,7 +8209,7 @@ function StaticRouter({
|
|
|
7966
8209
|
key: locationProp.key || "default"
|
|
7967
8210
|
};
|
|
7968
8211
|
let staticNavigator = getStatelessNavigator();
|
|
7969
|
-
return /* @__PURE__ */
|
|
8212
|
+
return /* @__PURE__ */ React11.createElement(
|
|
7970
8213
|
Router,
|
|
7971
8214
|
{
|
|
7972
8215
|
basename,
|
|
@@ -8007,7 +8250,7 @@ function StaticRouterProvider({
|
|
|
8007
8250
|
hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;
|
|
8008
8251
|
}
|
|
8009
8252
|
let { state } = dataRouterContext.router;
|
|
8010
|
-
return /* @__PURE__ */
|
|
8253
|
+
return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(
|
|
8011
8254
|
Router,
|
|
8012
8255
|
{
|
|
8013
8256
|
basename: dataRouterContext.basename,
|
|
@@ -8016,7 +8259,7 @@ function StaticRouterProvider({
|
|
|
8016
8259
|
navigator: dataRouterContext.navigator,
|
|
8017
8260
|
static: dataRouterContext.static
|
|
8018
8261
|
},
|
|
8019
|
-
/* @__PURE__ */
|
|
8262
|
+
/* @__PURE__ */ React11.createElement(
|
|
8020
8263
|
DataRoutes2,
|
|
8021
8264
|
{
|
|
8022
8265
|
routes: router.routes,
|
|
@@ -8024,7 +8267,7 @@ function StaticRouterProvider({
|
|
|
8024
8267
|
state
|
|
8025
8268
|
}
|
|
8026
8269
|
)
|
|
8027
|
-
))))), hydrateScript ? /* @__PURE__ */
|
|
8270
|
+
))))), hydrateScript ? /* @__PURE__ */ React11.createElement(
|
|
8028
8271
|
"script",
|
|
8029
8272
|
{
|
|
8030
8273
|
suppressHydrationWarning: true,
|
|
@@ -8094,19 +8337,6 @@ function getStatelessNavigator() {
|
|
|
8094
8337
|
}
|
|
8095
8338
|
};
|
|
8096
8339
|
}
|
|
8097
|
-
var ESCAPE_LOOKUP2 = {
|
|
8098
|
-
"&": "\\u0026",
|
|
8099
|
-
">": "\\u003e",
|
|
8100
|
-
"<": "\\u003c",
|
|
8101
|
-
"\u2028": "\\u2028",
|
|
8102
|
-
"\u2029": "\\u2029"
|
|
8103
|
-
};
|
|
8104
|
-
var ESCAPE_REGEX2 = /[&><\u2028\u2029]/g;
|
|
8105
|
-
function htmlEscape(str) {
|
|
8106
|
-
return str.replace(ESCAPE_REGEX2, (match) => ESCAPE_LOOKUP2[match]);
|
|
8107
|
-
}
|
|
8108
|
-
|
|
8109
|
-
// lib/dom/server.tsx
|
|
8110
8340
|
function createStaticHandler2(routes, opts) {
|
|
8111
8341
|
return createStaticHandler(routes, {
|
|
8112
8342
|
...opts,
|
|
@@ -8205,9 +8435,34 @@ function createStaticRouter(routes, context, opts = {}) {
|
|
|
8205
8435
|
}
|
|
8206
8436
|
};
|
|
8207
8437
|
}
|
|
8438
|
+
function createHref(to) {
|
|
8439
|
+
return typeof to === "string" ? to : createPath(to);
|
|
8440
|
+
}
|
|
8441
|
+
function encodeLocation(to) {
|
|
8442
|
+
let href = typeof to === "string" ? to : createPath(to);
|
|
8443
|
+
href = href.replace(/ $/, "%20");
|
|
8444
|
+
let encoded = ABSOLUTE_URL_REGEX3.test(href) ? new URL(href) : new URL(href, "http://localhost");
|
|
8445
|
+
return {
|
|
8446
|
+
pathname: encoded.pathname,
|
|
8447
|
+
search: encoded.search,
|
|
8448
|
+
hash: encoded.hash
|
|
8449
|
+
};
|
|
8450
|
+
}
|
|
8451
|
+
var ABSOLUTE_URL_REGEX3 = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
8452
|
+
var ESCAPE_LOOKUP2 = {
|
|
8453
|
+
"&": "\\u0026",
|
|
8454
|
+
">": "\\u003e",
|
|
8455
|
+
"<": "\\u003c",
|
|
8456
|
+
"\u2028": "\\u2028",
|
|
8457
|
+
"\u2029": "\\u2029"
|
|
8458
|
+
};
|
|
8459
|
+
var ESCAPE_REGEX2 = /[&><\u2028\u2029]/g;
|
|
8460
|
+
function htmlEscape(str) {
|
|
8461
|
+
return str.replace(ESCAPE_REGEX2, (match) => ESCAPE_LOOKUP2[match]);
|
|
8462
|
+
}
|
|
8208
8463
|
|
|
8209
8464
|
// lib/dom/ssr/server.tsx
|
|
8210
|
-
var
|
|
8465
|
+
var React12 = __toESM(require("react"));
|
|
8211
8466
|
function ServerRouter({
|
|
8212
8467
|
context,
|
|
8213
8468
|
url,
|
|
@@ -8235,7 +8490,7 @@ function ServerRouter({
|
|
|
8235
8490
|
}
|
|
8236
8491
|
}
|
|
8237
8492
|
let router = createStaticRouter(routes, context.staticHandlerContext);
|
|
8238
|
-
return /* @__PURE__ */
|
|
8493
|
+
return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement(
|
|
8239
8494
|
FrameworkContext.Provider,
|
|
8240
8495
|
{
|
|
8241
8496
|
value: {
|
|
@@ -8249,7 +8504,7 @@ function ServerRouter({
|
|
|
8249
8504
|
renderMeta: context.renderMeta
|
|
8250
8505
|
}
|
|
8251
8506
|
},
|
|
8252
|
-
/* @__PURE__ */
|
|
8507
|
+
/* @__PURE__ */ React12.createElement(RemixErrorBoundary, { location: router.state.location }, /* @__PURE__ */ React12.createElement(
|
|
8253
8508
|
StaticRouterProvider,
|
|
8254
8509
|
{
|
|
8255
8510
|
router,
|
|
@@ -8257,7 +8512,7 @@ function ServerRouter({
|
|
|
8257
8512
|
hydrate: false
|
|
8258
8513
|
}
|
|
8259
8514
|
))
|
|
8260
|
-
), context.serverHandoffStream ? /* @__PURE__ */
|
|
8515
|
+
), context.serverHandoffStream ? /* @__PURE__ */ React12.createElement(React12.Suspense, null, /* @__PURE__ */ React12.createElement(
|
|
8261
8516
|
StreamTransfer,
|
|
8262
8517
|
{
|
|
8263
8518
|
context,
|
|
@@ -8270,7 +8525,7 @@ function ServerRouter({
|
|
|
8270
8525
|
}
|
|
8271
8526
|
|
|
8272
8527
|
// lib/dom/ssr/routes-test-stub.tsx
|
|
8273
|
-
var
|
|
8528
|
+
var React13 = __toESM(require("react"));
|
|
8274
8529
|
function createRoutesStub(routes, context = {}) {
|
|
8275
8530
|
return function RoutesTestStub({
|
|
8276
8531
|
initialEntries,
|
|
@@ -8278,8 +8533,8 @@ function createRoutesStub(routes, context = {}) {
|
|
|
8278
8533
|
hydrationData,
|
|
8279
8534
|
future
|
|
8280
8535
|
}) {
|
|
8281
|
-
let routerRef =
|
|
8282
|
-
let remixContextRef =
|
|
8536
|
+
let routerRef = React13.useRef();
|
|
8537
|
+
let remixContextRef = React13.useRef();
|
|
8283
8538
|
if (routerRef.current == null) {
|
|
8284
8539
|
remixContextRef.current = {
|
|
8285
8540
|
future: {},
|
|
@@ -8293,29 +8548,29 @@ function createRoutesStub(routes, context = {}) {
|
|
|
8293
8548
|
isSpaMode: false
|
|
8294
8549
|
};
|
|
8295
8550
|
let patched = processRoutes(
|
|
8296
|
-
// @ts-expect-error
|
|
8551
|
+
// @ts-expect-error `StubRouteObject` is stricter about `loader`/`action`
|
|
8552
|
+
// types compared to `AgnosticRouteObject`
|
|
8297
8553
|
convertRoutesToDataRoutes(routes, (r) => r),
|
|
8298
|
-
context,
|
|
8299
8554
|
remixContextRef.current.manifest,
|
|
8300
8555
|
remixContextRef.current.routeModules
|
|
8301
8556
|
);
|
|
8302
8557
|
routerRef.current = createMemoryRouter(patched, {
|
|
8558
|
+
context,
|
|
8303
8559
|
initialEntries,
|
|
8304
8560
|
initialIndex,
|
|
8305
8561
|
hydrationData
|
|
8306
8562
|
});
|
|
8307
8563
|
}
|
|
8308
|
-
return /* @__PURE__ */
|
|
8564
|
+
return /* @__PURE__ */ React13.createElement(FrameworkContext.Provider, { value: remixContextRef.current }, /* @__PURE__ */ React13.createElement(RouterProvider, { router: routerRef.current }));
|
|
8309
8565
|
};
|
|
8310
8566
|
}
|
|
8311
|
-
function processRoutes(routes,
|
|
8567
|
+
function processRoutes(routes, manifest, routeModules, parentId) {
|
|
8312
8568
|
return routes.map((route) => {
|
|
8313
8569
|
if (!route.id) {
|
|
8314
8570
|
throw new Error(
|
|
8315
8571
|
"Expected a route.id in @remix-run/testing processRoutes() function"
|
|
8316
8572
|
);
|
|
8317
8573
|
}
|
|
8318
|
-
let { loader, action } = route;
|
|
8319
8574
|
let newRoute = {
|
|
8320
8575
|
id: route.id,
|
|
8321
8576
|
path: route.path,
|
|
@@ -8323,8 +8578,8 @@ function processRoutes(routes, context, manifest, routeModules, parentId) {
|
|
|
8323
8578
|
Component: route.Component,
|
|
8324
8579
|
HydrateFallback: route.HydrateFallback,
|
|
8325
8580
|
ErrorBoundary: route.ErrorBoundary,
|
|
8326
|
-
action: action
|
|
8327
|
-
loader: loader
|
|
8581
|
+
action: route.action,
|
|
8582
|
+
loader: route.loader,
|
|
8328
8583
|
handle: route.handle,
|
|
8329
8584
|
shouldRevalidate: route.shouldRevalidate
|
|
8330
8585
|
};
|
|
@@ -8356,7 +8611,6 @@ function processRoutes(routes, context, manifest, routeModules, parentId) {
|
|
|
8356
8611
|
if (route.children) {
|
|
8357
8612
|
newRoute.children = processRoutes(
|
|
8358
8613
|
route.children,
|
|
8359
|
-
context,
|
|
8360
8614
|
manifest,
|
|
8361
8615
|
routeModules,
|
|
8362
8616
|
newRoute.id
|
|
@@ -8717,6 +8971,7 @@ function createStaticHandlerDataRoutes(manifest, future, parentId = "", routesBy
|
|
|
8717
8971
|
hasErrorBoundary: route.id === "root" || route.module.ErrorBoundary != null,
|
|
8718
8972
|
id: route.id,
|
|
8719
8973
|
path: route.path,
|
|
8974
|
+
middleware: route.module.middleware,
|
|
8720
8975
|
// Need to use RR's version in the param typed here to permit the optional
|
|
8721
8976
|
// context even though we know it'll always be provided in remix
|
|
8722
8977
|
loader: route.module.loader ? async (args) => {
|
|
@@ -8860,24 +9115,6 @@ function prependCookies(parentHeaders, childHeaders) {
|
|
|
8860
9115
|
|
|
8861
9116
|
// lib/server-runtime/single-fetch.ts
|
|
8862
9117
|
var SINGLE_FETCH_REDIRECT_STATUS = 202;
|
|
8863
|
-
function getSingleFetchDataStrategy2({
|
|
8864
|
-
isActionDataRequest,
|
|
8865
|
-
loadRouteIds
|
|
8866
|
-
} = {}) {
|
|
8867
|
-
return async ({ request, matches }) => {
|
|
8868
|
-
if (isActionDataRequest && request.method === "GET") {
|
|
8869
|
-
return {};
|
|
8870
|
-
}
|
|
8871
|
-
let matchesToLoad = loadRouteIds ? matches.filter((m) => loadRouteIds.includes(m.route.id)) : matches;
|
|
8872
|
-
let results = await Promise.all(
|
|
8873
|
-
matchesToLoad.map((match) => match.resolve())
|
|
8874
|
-
);
|
|
8875
|
-
return results.reduce(
|
|
8876
|
-
(acc, result, i) => Object.assign(acc, { [matchesToLoad[i].route.id]: result }),
|
|
8877
|
-
{}
|
|
8878
|
-
);
|
|
8879
|
-
};
|
|
8880
|
-
}
|
|
8881
9118
|
async function singleFetchAction(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {
|
|
8882
9119
|
try {
|
|
8883
9120
|
let handlerRequest = new Request(handlerUrl, {
|
|
@@ -8890,12 +9127,45 @@ async function singleFetchAction(build, serverMode, staticHandler, request, hand
|
|
|
8890
9127
|
let result = await staticHandler.query(handlerRequest, {
|
|
8891
9128
|
requestContext: loadContext,
|
|
8892
9129
|
skipLoaderErrorBubbling: true,
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
9130
|
+
async respond(context) {
|
|
9131
|
+
let headers = getDocumentHeaders(build, context);
|
|
9132
|
+
if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
|
|
9133
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
9134
|
+
result: getSingleFetchRedirect(
|
|
9135
|
+
context.statusCode,
|
|
9136
|
+
headers,
|
|
9137
|
+
build.basename
|
|
9138
|
+
),
|
|
9139
|
+
headers,
|
|
9140
|
+
status: SINGLE_FETCH_REDIRECT_STATUS
|
|
9141
|
+
});
|
|
9142
|
+
}
|
|
9143
|
+
if (context.errors) {
|
|
9144
|
+
Object.values(context.errors).forEach((err) => {
|
|
9145
|
+
if (!isRouteErrorResponse(err) || err.error) {
|
|
9146
|
+
handleError(err);
|
|
9147
|
+
}
|
|
9148
|
+
});
|
|
9149
|
+
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
9150
|
+
}
|
|
9151
|
+
let singleFetchResult;
|
|
9152
|
+
if (context.errors) {
|
|
9153
|
+
singleFetchResult = { error: Object.values(context.errors)[0] };
|
|
9154
|
+
} else {
|
|
9155
|
+
singleFetchResult = {
|
|
9156
|
+
data: Object.values(context.actionData || {})[0]
|
|
9157
|
+
};
|
|
9158
|
+
}
|
|
9159
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
9160
|
+
result: singleFetchResult,
|
|
9161
|
+
headers,
|
|
9162
|
+
status: context.statusCode
|
|
9163
|
+
});
|
|
9164
|
+
}
|
|
8896
9165
|
});
|
|
8897
|
-
|
|
8898
|
-
|
|
9166
|
+
invariant3(isResponse(result), " Expected a Response from query()");
|
|
9167
|
+
if (isRedirectResponse(result)) {
|
|
9168
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
8899
9169
|
result: getSingleFetchRedirect(
|
|
8900
9170
|
result.status,
|
|
8901
9171
|
result.headers,
|
|
@@ -8903,47 +9173,16 @@ async function singleFetchAction(build, serverMode, staticHandler, request, hand
|
|
|
8903
9173
|
),
|
|
8904
9174
|
headers: result.headers,
|
|
8905
9175
|
status: SINGLE_FETCH_REDIRECT_STATUS
|
|
8906
|
-
};
|
|
8907
|
-
}
|
|
8908
|
-
let context = result;
|
|
8909
|
-
let headers = getDocumentHeaders(build, context);
|
|
8910
|
-
if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
|
|
8911
|
-
return {
|
|
8912
|
-
result: getSingleFetchRedirect(
|
|
8913
|
-
context.statusCode,
|
|
8914
|
-
headers,
|
|
8915
|
-
build.basename
|
|
8916
|
-
),
|
|
8917
|
-
headers,
|
|
8918
|
-
status: SINGLE_FETCH_REDIRECT_STATUS
|
|
8919
|
-
};
|
|
8920
|
-
}
|
|
8921
|
-
if (context.errors) {
|
|
8922
|
-
Object.values(context.errors).forEach((err) => {
|
|
8923
|
-
if (!isRouteErrorResponse(err) || err.error) {
|
|
8924
|
-
handleError(err);
|
|
8925
|
-
}
|
|
8926
9176
|
});
|
|
8927
|
-
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
8928
9177
|
}
|
|
8929
|
-
|
|
8930
|
-
if (context.errors) {
|
|
8931
|
-
singleFetchResult = { error: Object.values(context.errors)[0] };
|
|
8932
|
-
} else {
|
|
8933
|
-
singleFetchResult = { data: Object.values(context.actionData || {})[0] };
|
|
8934
|
-
}
|
|
8935
|
-
return {
|
|
8936
|
-
result: singleFetchResult,
|
|
8937
|
-
headers,
|
|
8938
|
-
status: context.statusCode
|
|
8939
|
-
};
|
|
9178
|
+
return result;
|
|
8940
9179
|
} catch (error) {
|
|
8941
9180
|
handleError(error);
|
|
8942
|
-
return {
|
|
9181
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
8943
9182
|
result: { error },
|
|
8944
9183
|
headers: new Headers(),
|
|
8945
9184
|
status: 500
|
|
8946
|
-
};
|
|
9185
|
+
});
|
|
8947
9186
|
}
|
|
8948
9187
|
}
|
|
8949
9188
|
async function singleFetchLoaders(build, serverMode, staticHandler, request, handlerUrl, loadContext, handleError) {
|
|
@@ -8956,12 +9195,51 @@ async function singleFetchLoaders(build, serverMode, staticHandler, request, han
|
|
|
8956
9195
|
let result = await staticHandler.query(handlerRequest, {
|
|
8957
9196
|
requestContext: loadContext,
|
|
8958
9197
|
skipLoaderErrorBubbling: true,
|
|
8959
|
-
|
|
8960
|
-
|
|
8961
|
-
|
|
9198
|
+
async respond(context) {
|
|
9199
|
+
let headers = getDocumentHeaders(build, context);
|
|
9200
|
+
if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
|
|
9201
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
9202
|
+
result: {
|
|
9203
|
+
[SingleFetchRedirectSymbol]: getSingleFetchRedirect(
|
|
9204
|
+
context.statusCode,
|
|
9205
|
+
headers,
|
|
9206
|
+
build.basename
|
|
9207
|
+
)
|
|
9208
|
+
},
|
|
9209
|
+
headers,
|
|
9210
|
+
status: SINGLE_FETCH_REDIRECT_STATUS
|
|
9211
|
+
});
|
|
9212
|
+
}
|
|
9213
|
+
if (context.errors) {
|
|
9214
|
+
Object.values(context.errors).forEach((err) => {
|
|
9215
|
+
if (!isRouteErrorResponse(err) || err.error) {
|
|
9216
|
+
handleError(err);
|
|
9217
|
+
}
|
|
9218
|
+
});
|
|
9219
|
+
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
9220
|
+
}
|
|
9221
|
+
let results = {};
|
|
9222
|
+
let loadedMatches = loadRouteIds ? context.matches.filter(
|
|
9223
|
+
(m) => m.route.loader && loadRouteIds.includes(m.route.id)
|
|
9224
|
+
) : context.matches;
|
|
9225
|
+
loadedMatches.forEach((m) => {
|
|
9226
|
+
let { id } = m.route;
|
|
9227
|
+
if (context.errors && context.errors.hasOwnProperty(id)) {
|
|
9228
|
+
results[id] = { error: context.errors[id] };
|
|
9229
|
+
} else if (context.loaderData.hasOwnProperty(id)) {
|
|
9230
|
+
results[id] = { data: context.loaderData[id] };
|
|
9231
|
+
}
|
|
9232
|
+
});
|
|
9233
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
9234
|
+
result: results,
|
|
9235
|
+
headers,
|
|
9236
|
+
status: context.statusCode
|
|
9237
|
+
});
|
|
9238
|
+
}
|
|
8962
9239
|
});
|
|
8963
|
-
|
|
8964
|
-
|
|
9240
|
+
invariant3(isResponse(result), " Expected a Response from query()");
|
|
9241
|
+
if (isRedirectResponse(result)) {
|
|
9242
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
8965
9243
|
result: {
|
|
8966
9244
|
[SingleFetchRedirectSymbol]: getSingleFetchRedirect(
|
|
8967
9245
|
result.status,
|
|
@@ -8971,56 +9249,41 @@ async function singleFetchLoaders(build, serverMode, staticHandler, request, han
|
|
|
8971
9249
|
},
|
|
8972
9250
|
headers: result.headers,
|
|
8973
9251
|
status: SINGLE_FETCH_REDIRECT_STATUS
|
|
8974
|
-
};
|
|
8975
|
-
}
|
|
8976
|
-
let context = result;
|
|
8977
|
-
let headers = getDocumentHeaders(build, context);
|
|
8978
|
-
if (isRedirectStatusCode(context.statusCode) && headers.has("Location")) {
|
|
8979
|
-
return {
|
|
8980
|
-
result: {
|
|
8981
|
-
[SingleFetchRedirectSymbol]: getSingleFetchRedirect(
|
|
8982
|
-
context.statusCode,
|
|
8983
|
-
headers,
|
|
8984
|
-
build.basename
|
|
8985
|
-
)
|
|
8986
|
-
},
|
|
8987
|
-
headers,
|
|
8988
|
-
status: SINGLE_FETCH_REDIRECT_STATUS
|
|
8989
|
-
};
|
|
8990
|
-
}
|
|
8991
|
-
if (context.errors) {
|
|
8992
|
-
Object.values(context.errors).forEach((err) => {
|
|
8993
|
-
if (!isRouteErrorResponse(err) || err.error) {
|
|
8994
|
-
handleError(err);
|
|
8995
|
-
}
|
|
8996
9252
|
});
|
|
8997
|
-
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
8998
9253
|
}
|
|
8999
|
-
|
|
9000
|
-
let loadedMatches = loadRouteIds ? context.matches.filter(
|
|
9001
|
-
(m) => m.route.loader && loadRouteIds.includes(m.route.id)
|
|
9002
|
-
) : context.matches;
|
|
9003
|
-
loadedMatches.forEach((m) => {
|
|
9004
|
-
let { id } = m.route;
|
|
9005
|
-
if (context.errors && context.errors.hasOwnProperty(id)) {
|
|
9006
|
-
results[id] = { error: context.errors[id] };
|
|
9007
|
-
} else if (context.loaderData.hasOwnProperty(id)) {
|
|
9008
|
-
results[id] = { data: context.loaderData[id] };
|
|
9009
|
-
}
|
|
9010
|
-
});
|
|
9011
|
-
return {
|
|
9012
|
-
result: results,
|
|
9013
|
-
headers,
|
|
9014
|
-
status: context.statusCode
|
|
9015
|
-
};
|
|
9254
|
+
return result;
|
|
9016
9255
|
} catch (error) {
|
|
9017
9256
|
handleError(error);
|
|
9018
|
-
return {
|
|
9257
|
+
return generateSingleFetchResponse(request, build, serverMode, {
|
|
9019
9258
|
result: { root: { error } },
|
|
9020
9259
|
headers: new Headers(),
|
|
9021
9260
|
status: 500
|
|
9022
|
-
};
|
|
9261
|
+
});
|
|
9262
|
+
}
|
|
9263
|
+
}
|
|
9264
|
+
function generateSingleFetchResponse(request, build, serverMode, {
|
|
9265
|
+
result,
|
|
9266
|
+
headers,
|
|
9267
|
+
status
|
|
9268
|
+
}) {
|
|
9269
|
+
let resultHeaders = new Headers(headers);
|
|
9270
|
+
resultHeaders.set("X-Remix-Response", "yes");
|
|
9271
|
+
if (status === 304) {
|
|
9272
|
+
return new Response(null, { status: 304, headers: resultHeaders });
|
|
9023
9273
|
}
|
|
9274
|
+
resultHeaders.set("Content-Type", "text/x-script");
|
|
9275
|
+
return new Response(
|
|
9276
|
+
encodeViaTurboStream(
|
|
9277
|
+
result,
|
|
9278
|
+
request.signal,
|
|
9279
|
+
build.entry.module.streamTimeout,
|
|
9280
|
+
serverMode
|
|
9281
|
+
),
|
|
9282
|
+
{
|
|
9283
|
+
status: status || 200,
|
|
9284
|
+
headers: resultHeaders
|
|
9285
|
+
}
|
|
9286
|
+
);
|
|
9024
9287
|
}
|
|
9025
9288
|
function getSingleFetchRedirect(status, headers, basename) {
|
|
9026
9289
|
let redirect2 = headers.get("Location");
|
|
@@ -9262,7 +9525,7 @@ async function handleManifestRequest(build, routes, url) {
|
|
|
9262
9525
|
return new Response("Invalid Request", { status: 400 });
|
|
9263
9526
|
}
|
|
9264
9527
|
async function handleSingleFetchRequest(serverMode, build, staticHandler, request, handlerUrl, loadContext, handleError) {
|
|
9265
|
-
let
|
|
9528
|
+
let response = request.method !== "GET" ? await singleFetchAction(
|
|
9266
9529
|
build,
|
|
9267
9530
|
serverMode,
|
|
9268
9531
|
staticHandler,
|
|
@@ -9279,129 +9542,67 @@ async function handleSingleFetchRequest(serverMode, build, staticHandler, reques
|
|
|
9279
9542
|
loadContext,
|
|
9280
9543
|
handleError
|
|
9281
9544
|
);
|
|
9282
|
-
|
|
9283
|
-
resultHeaders.set("X-Remix-Response", "yes");
|
|
9284
|
-
if (status === 304) {
|
|
9285
|
-
return new Response(null, { status: 304, headers: resultHeaders });
|
|
9286
|
-
}
|
|
9287
|
-
resultHeaders.set("Content-Type", "text/x-script");
|
|
9288
|
-
return new Response(
|
|
9289
|
-
encodeViaTurboStream(
|
|
9290
|
-
result,
|
|
9291
|
-
request.signal,
|
|
9292
|
-
build.entry.module.streamTimeout,
|
|
9293
|
-
serverMode
|
|
9294
|
-
),
|
|
9295
|
-
{
|
|
9296
|
-
status: status || 200,
|
|
9297
|
-
headers: resultHeaders
|
|
9298
|
-
}
|
|
9299
|
-
);
|
|
9545
|
+
return response;
|
|
9300
9546
|
}
|
|
9301
9547
|
async function handleDocumentRequest(serverMode, build, staticHandler, request, loadContext, handleError, criticalCss) {
|
|
9302
|
-
let context;
|
|
9303
9548
|
try {
|
|
9304
|
-
|
|
9305
|
-
requestContext: loadContext
|
|
9549
|
+
let response = await staticHandler.query(request, {
|
|
9550
|
+
requestContext: loadContext,
|
|
9551
|
+
respond: renderHtml
|
|
9306
9552
|
});
|
|
9553
|
+
invariant3(
|
|
9554
|
+
isResponse(response),
|
|
9555
|
+
"Expected a Response to be returned from query"
|
|
9556
|
+
);
|
|
9557
|
+
return response;
|
|
9307
9558
|
} catch (error) {
|
|
9308
9559
|
handleError(error);
|
|
9309
9560
|
return new Response(null, { status: 500 });
|
|
9310
9561
|
}
|
|
9311
|
-
|
|
9312
|
-
|
|
9313
|
-
|
|
9314
|
-
|
|
9315
|
-
|
|
9316
|
-
|
|
9317
|
-
|
|
9318
|
-
if (context.errors) {
|
|
9319
|
-
Object.values(context.errors).forEach((err) => {
|
|
9320
|
-
if (!isRouteErrorResponse(err) || err.error) {
|
|
9321
|
-
handleError(err);
|
|
9322
|
-
}
|
|
9323
|
-
});
|
|
9324
|
-
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
9325
|
-
}
|
|
9326
|
-
let state = {
|
|
9327
|
-
loaderData: context.loaderData,
|
|
9328
|
-
actionData: context.actionData,
|
|
9329
|
-
errors: serializeErrors2(context.errors, serverMode)
|
|
9330
|
-
};
|
|
9331
|
-
let entryContext = {
|
|
9332
|
-
manifest: build.assets,
|
|
9333
|
-
routeModules: createEntryRouteModules(build.routes),
|
|
9334
|
-
staticHandlerContext: context,
|
|
9335
|
-
criticalCss,
|
|
9336
|
-
serverHandoffString: createServerHandoffString({
|
|
9337
|
-
basename: build.basename,
|
|
9338
|
-
criticalCss,
|
|
9339
|
-
future: build.future,
|
|
9340
|
-
isSpaMode: build.isSpaMode
|
|
9341
|
-
}),
|
|
9342
|
-
serverHandoffStream: encodeViaTurboStream(
|
|
9343
|
-
state,
|
|
9344
|
-
request.signal,
|
|
9345
|
-
build.entry.module.streamTimeout,
|
|
9346
|
-
serverMode
|
|
9347
|
-
),
|
|
9348
|
-
renderMeta: {},
|
|
9349
|
-
future: build.future,
|
|
9350
|
-
isSpaMode: build.isSpaMode,
|
|
9351
|
-
serializeError: (err) => serializeError(err, serverMode)
|
|
9352
|
-
};
|
|
9353
|
-
let handleDocumentRequestFunction = build.entry.module.default;
|
|
9354
|
-
try {
|
|
9355
|
-
return await handleDocumentRequestFunction(
|
|
9356
|
-
request,
|
|
9357
|
-
context.statusCode,
|
|
9358
|
-
headers,
|
|
9359
|
-
entryContext,
|
|
9360
|
-
loadContext
|
|
9361
|
-
);
|
|
9362
|
-
} catch (error) {
|
|
9363
|
-
handleError(error);
|
|
9364
|
-
let errorForSecondRender = error;
|
|
9365
|
-
if (isResponse(error)) {
|
|
9366
|
-
try {
|
|
9367
|
-
let data2 = await unwrapResponse(error);
|
|
9368
|
-
errorForSecondRender = new ErrorResponseImpl(
|
|
9369
|
-
error.status,
|
|
9370
|
-
error.statusText,
|
|
9371
|
-
data2
|
|
9372
|
-
);
|
|
9373
|
-
} catch (e) {
|
|
9374
|
-
}
|
|
9562
|
+
async function renderHtml(context) {
|
|
9563
|
+
if (isResponse(context)) {
|
|
9564
|
+
return context;
|
|
9565
|
+
}
|
|
9566
|
+
let headers = getDocumentHeaders(build, context);
|
|
9567
|
+
if (context.statusCode === 304) {
|
|
9568
|
+
return new Response(null, { status: 304, headers });
|
|
9375
9569
|
}
|
|
9376
|
-
context = getStaticContextFromError(
|
|
9377
|
-
staticHandler.dataRoutes,
|
|
9378
|
-
context,
|
|
9379
|
-
errorForSecondRender
|
|
9380
|
-
);
|
|
9381
9570
|
if (context.errors) {
|
|
9571
|
+
Object.values(context.errors).forEach((err) => {
|
|
9572
|
+
if (!isRouteErrorResponse(err) || err.error) {
|
|
9573
|
+
handleError(err);
|
|
9574
|
+
}
|
|
9575
|
+
});
|
|
9382
9576
|
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
9383
9577
|
}
|
|
9384
|
-
let
|
|
9578
|
+
let state = {
|
|
9385
9579
|
loaderData: context.loaderData,
|
|
9386
9580
|
actionData: context.actionData,
|
|
9387
9581
|
errors: serializeErrors2(context.errors, serverMode)
|
|
9388
9582
|
};
|
|
9389
|
-
entryContext = {
|
|
9390
|
-
|
|
9583
|
+
let entryContext = {
|
|
9584
|
+
manifest: build.assets,
|
|
9585
|
+
routeModules: createEntryRouteModules(build.routes),
|
|
9391
9586
|
staticHandlerContext: context,
|
|
9587
|
+
criticalCss,
|
|
9392
9588
|
serverHandoffString: createServerHandoffString({
|
|
9393
9589
|
basename: build.basename,
|
|
9590
|
+
criticalCss,
|
|
9394
9591
|
future: build.future,
|
|
9395
9592
|
isSpaMode: build.isSpaMode
|
|
9396
9593
|
}),
|
|
9397
9594
|
serverHandoffStream: encodeViaTurboStream(
|
|
9398
|
-
|
|
9595
|
+
state,
|
|
9399
9596
|
request.signal,
|
|
9400
9597
|
build.entry.module.streamTimeout,
|
|
9401
9598
|
serverMode
|
|
9402
9599
|
),
|
|
9403
|
-
renderMeta: {}
|
|
9600
|
+
renderMeta: {},
|
|
9601
|
+
future: build.future,
|
|
9602
|
+
isSpaMode: build.isSpaMode,
|
|
9603
|
+
serializeError: (err) => serializeError(err, serverMode)
|
|
9404
9604
|
};
|
|
9605
|
+
let handleDocumentRequestFunction = build.entry.module.default;
|
|
9405
9606
|
try {
|
|
9406
9607
|
return await handleDocumentRequestFunction(
|
|
9407
9608
|
request,
|
|
@@ -9410,9 +9611,61 @@ async function handleDocumentRequest(serverMode, build, staticHandler, request,
|
|
|
9410
9611
|
entryContext,
|
|
9411
9612
|
loadContext
|
|
9412
9613
|
);
|
|
9413
|
-
} catch (
|
|
9414
|
-
handleError(
|
|
9415
|
-
|
|
9614
|
+
} catch (error) {
|
|
9615
|
+
handleError(error);
|
|
9616
|
+
let errorForSecondRender = error;
|
|
9617
|
+
if (isResponse(error)) {
|
|
9618
|
+
try {
|
|
9619
|
+
let data2 = await unwrapResponse(error);
|
|
9620
|
+
errorForSecondRender = new ErrorResponseImpl(
|
|
9621
|
+
error.status,
|
|
9622
|
+
error.statusText,
|
|
9623
|
+
data2
|
|
9624
|
+
);
|
|
9625
|
+
} catch (e) {
|
|
9626
|
+
}
|
|
9627
|
+
}
|
|
9628
|
+
context = getStaticContextFromError(
|
|
9629
|
+
staticHandler.dataRoutes,
|
|
9630
|
+
context,
|
|
9631
|
+
errorForSecondRender
|
|
9632
|
+
);
|
|
9633
|
+
if (context.errors) {
|
|
9634
|
+
context.errors = sanitizeErrors(context.errors, serverMode);
|
|
9635
|
+
}
|
|
9636
|
+
let state2 = {
|
|
9637
|
+
loaderData: context.loaderData,
|
|
9638
|
+
actionData: context.actionData,
|
|
9639
|
+
errors: serializeErrors2(context.errors, serverMode)
|
|
9640
|
+
};
|
|
9641
|
+
entryContext = {
|
|
9642
|
+
...entryContext,
|
|
9643
|
+
staticHandlerContext: context,
|
|
9644
|
+
serverHandoffString: createServerHandoffString({
|
|
9645
|
+
basename: build.basename,
|
|
9646
|
+
future: build.future,
|
|
9647
|
+
isSpaMode: build.isSpaMode
|
|
9648
|
+
}),
|
|
9649
|
+
serverHandoffStream: encodeViaTurboStream(
|
|
9650
|
+
state2,
|
|
9651
|
+
request.signal,
|
|
9652
|
+
build.entry.module.streamTimeout,
|
|
9653
|
+
serverMode
|
|
9654
|
+
),
|
|
9655
|
+
renderMeta: {}
|
|
9656
|
+
};
|
|
9657
|
+
try {
|
|
9658
|
+
return await handleDocumentRequestFunction(
|
|
9659
|
+
request,
|
|
9660
|
+
context.statusCode,
|
|
9661
|
+
headers,
|
|
9662
|
+
entryContext,
|
|
9663
|
+
loadContext
|
|
9664
|
+
);
|
|
9665
|
+
} catch (error2) {
|
|
9666
|
+
handleError(error2);
|
|
9667
|
+
return returnLastResortErrorResponse(error2, serverMode);
|
|
9668
|
+
}
|
|
9416
9669
|
}
|
|
9417
9670
|
}
|
|
9418
9671
|
}
|