react-router 7.17.0 → 7.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -1
- package/dist/development/{browser-D3uq9sI1.d.ts → browser-B2PdsXXH.d.ts} +2 -2
- package/dist/development/{browser-CGcs-0pD.d.mts → browser-DBmQ1yAR.d.mts} +2 -2
- package/dist/development/{chunk-6CSD65Y2.mjs → chunk-4ZMWKKQ3.mjs} +115 -38
- package/dist/{production/chunk-5TQZEVD5.mjs → development/chunk-E4MTK73K.mjs} +45 -113
- package/dist/development/{chunk-KFNXW4AL.js → chunk-U7ORXROY.js} +113 -35
- package/dist/development/{chunk-PBLBZ3QU.js → chunk-WW7PN6QI.js} +7 -7
- package/dist/development/{chunk-PULC7NLK.js → chunk-YL5M26XI.js} +111 -108
- package/dist/{production/context-CmHpk1Ws.d.mts → development/context-CeD5LmaF.d.mts} +12 -4
- package/dist/{production/data-D4xhSy90.d.ts → development/data-CjO11-hU.d.ts} +9 -1
- package/dist/development/{data-U8FS-wNn.d.mts → data-DEjBmEfD.d.mts} +9 -1
- package/dist/development/dom-export.d.mts +3 -3
- package/dist/development/dom-export.d.ts +3 -3
- package/dist/development/dom-export.js +46 -44
- package/dist/development/dom-export.mjs +23 -21
- package/dist/development/{index-react-server-client-CwU9bE5R.d.ts → index-react-server-client-3ykjivgQ.d.ts} +29 -7
- package/dist/development/{index-react-server-client-DPrDrCew.d.mts → index-react-server-client-CACgcj2J.d.mts} +19 -5
- package/dist/development/index-react-server-client.d.mts +3 -3
- package/dist/development/index-react-server-client.d.ts +3 -3
- package/dist/development/index-react-server-client.js +4 -4
- package/dist/development/index-react-server-client.mjs +2 -2
- package/dist/development/index-react-server.d.mts +9 -1
- package/dist/development/index-react-server.d.ts +9 -1
- package/dist/development/index-react-server.js +144 -121
- package/dist/development/index-react-server.mjs +143 -120
- package/dist/development/index.d.mts +15 -14
- package/dist/development/index.d.ts +15 -14
- package/dist/development/index.js +137 -205
- package/dist/development/index.mjs +3 -5
- package/dist/{production/instrumentation-1q4YhLGP.d.ts → development/instrumentation-Dkmpzd13.d.ts} +2 -2
- package/dist/development/lib/types/internal.d.mts +2 -2
- package/dist/development/lib/types/internal.d.ts +2 -2
- package/dist/development/lib/types/internal.js +1 -1
- package/dist/development/lib/types/internal.mjs +1 -1
- package/dist/development/{register-CqK96Zfk.d.mts → register-CmkRspdl.d.mts} +1 -1
- package/dist/development/{register-CNAx3TXj.d.ts → register-roq_0qYo.d.ts} +1 -1
- package/dist/production/{browser-D3uq9sI1.d.ts → browser-B2PdsXXH.d.ts} +2 -2
- package/dist/production/{browser-CGcs-0pD.d.mts → browser-DBmQ1yAR.d.mts} +2 -2
- package/dist/production/{chunk-CTIXC7EV.js → chunk-3Z6WS2WZ.js} +7 -7
- package/dist/production/{chunk-EN242BO4.js → chunk-BIP66BKV.js} +111 -108
- package/dist/{development/chunk-ASILSGTR.mjs → production/chunk-EGOTSXNH.mjs} +45 -113
- package/dist/production/{chunk-RTRY3JFT.js → chunk-IUPBOWYO.js} +113 -35
- package/dist/production/{chunk-OSYEOCBT.mjs → chunk-M7NGGUU6.mjs} +115 -38
- package/dist/{development/context-CmHpk1Ws.d.mts → production/context-CeD5LmaF.d.mts} +12 -4
- package/dist/{development/data-D4xhSy90.d.ts → production/data-CjO11-hU.d.ts} +9 -1
- package/dist/production/{data-U8FS-wNn.d.mts → data-DEjBmEfD.d.mts} +9 -1
- package/dist/production/dom-export.d.mts +3 -3
- package/dist/production/dom-export.d.ts +3 -3
- package/dist/production/dom-export.js +46 -44
- package/dist/production/dom-export.mjs +23 -21
- package/dist/production/{index-react-server-client-CwU9bE5R.d.ts → index-react-server-client-3ykjivgQ.d.ts} +29 -7
- package/dist/production/{index-react-server-client-DPrDrCew.d.mts → index-react-server-client-CACgcj2J.d.mts} +19 -5
- package/dist/production/index-react-server-client.d.mts +3 -3
- package/dist/production/index-react-server-client.d.ts +3 -3
- package/dist/production/index-react-server-client.js +4 -4
- package/dist/production/index-react-server-client.mjs +2 -2
- package/dist/production/index-react-server.d.mts +9 -1
- package/dist/production/index-react-server.d.ts +9 -1
- package/dist/production/index-react-server.js +144 -121
- package/dist/production/index-react-server.mjs +143 -120
- package/dist/production/index.d.mts +15 -14
- package/dist/production/index.d.ts +15 -14
- package/dist/production/index.js +137 -205
- package/dist/production/index.mjs +3 -5
- package/dist/{development/instrumentation-1q4YhLGP.d.ts → production/instrumentation-Dkmpzd13.d.ts} +2 -2
- package/dist/production/lib/types/internal.d.mts +2 -2
- package/dist/production/lib/types/internal.d.ts +2 -2
- package/dist/production/lib/types/internal.js +1 -1
- package/dist/production/lib/types/internal.mjs +1 -1
- package/dist/production/{register-CqK96Zfk.d.mts → register-CmkRspdl.d.mts} +1 -1
- package/dist/production/{register-CNAx3TXj.d.ts → register-roq_0qYo.d.ts} +1 -1
- package/docs/explanation/type-safety.md +1 -1
- package/docs/how-to/headers.md +2 -1
- package/docs/how-to/security.md +8 -6
- package/docs/start/data/installation.md +4 -0
- package/docs/start/framework/deploying.md +4 -0
- package/package.json +1 -1
|
@@ -845,6 +845,8 @@ interface RouteMeta<RouteObjectType extends RouteObject = RouteObject> {
|
|
|
845
845
|
caseSensitive: boolean;
|
|
846
846
|
childrenIndex: number;
|
|
847
847
|
route: RouteObjectType;
|
|
848
|
+
matcher?: RegExp;
|
|
849
|
+
compiledParams?: CompiledPathParam[];
|
|
848
850
|
}
|
|
849
851
|
/**
|
|
850
852
|
* @private
|
|
@@ -858,6 +860,10 @@ interface RouteBranch<RouteObjectType extends RouteObject = RouteObject> {
|
|
|
858
860
|
score: number;
|
|
859
861
|
routesMeta: RouteMeta<RouteObjectType>[];
|
|
860
862
|
}
|
|
863
|
+
type CompiledPathParam = {
|
|
864
|
+
paramName: string;
|
|
865
|
+
isOptional?: boolean;
|
|
866
|
+
};
|
|
861
867
|
declare class DataWithResponseInit<D> {
|
|
862
868
|
type: string;
|
|
863
869
|
data: D;
|
|
@@ -1837,7 +1843,9 @@ interface PageLinkDescriptor extends Omit<HtmlLinkDescriptor, "href" | "rel" | "
|
|
|
1837
1843
|
/**
|
|
1838
1844
|
* A [`nonce`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce)
|
|
1839
1845
|
* attribute to render on the [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link)
|
|
1840
|
-
* element
|
|
1846
|
+
* element. If not provided in Framework Mode, it will default to any
|
|
1847
|
+
* {@link ServerRouter | `<ServerRouter nonce>`} prop.
|
|
1848
|
+
|
|
1841
1849
|
*/
|
|
1842
1850
|
nonce?: string | undefined;
|
|
1843
1851
|
/**
|
|
@@ -845,6 +845,8 @@ interface RouteMeta<RouteObjectType extends RouteObject = RouteObject> {
|
|
|
845
845
|
caseSensitive: boolean;
|
|
846
846
|
childrenIndex: number;
|
|
847
847
|
route: RouteObjectType;
|
|
848
|
+
matcher?: RegExp;
|
|
849
|
+
compiledParams?: CompiledPathParam[];
|
|
848
850
|
}
|
|
849
851
|
/**
|
|
850
852
|
* @private
|
|
@@ -858,6 +860,10 @@ interface RouteBranch<RouteObjectType extends RouteObject = RouteObject> {
|
|
|
858
860
|
score: number;
|
|
859
861
|
routesMeta: RouteMeta<RouteObjectType>[];
|
|
860
862
|
}
|
|
863
|
+
type CompiledPathParam = {
|
|
864
|
+
paramName: string;
|
|
865
|
+
isOptional?: boolean;
|
|
866
|
+
};
|
|
861
867
|
declare class DataWithResponseInit<D> {
|
|
862
868
|
type: string;
|
|
863
869
|
data: D;
|
|
@@ -1837,7 +1843,9 @@ interface PageLinkDescriptor extends Omit<HtmlLinkDescriptor, "href" | "rel" | "
|
|
|
1837
1843
|
/**
|
|
1838
1844
|
* A [`nonce`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce)
|
|
1839
1845
|
* attribute to render on the [`<link>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link)
|
|
1840
|
-
* element
|
|
1846
|
+
* element. If not provided in Framework Mode, it will default to any
|
|
1847
|
+
* {@link ServerRouter | `<ServerRouter nonce>`} prop.
|
|
1848
|
+
|
|
1841
1849
|
*/
|
|
1842
1850
|
nonce?: string | undefined;
|
|
1843
1851
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var node_async_hooks = require('node:async_hooks');
|
|
4
|
-
var
|
|
4
|
+
var React3 = require('react');
|
|
5
5
|
var setCookieParser = require('set-cookie-parser');
|
|
6
6
|
var reactServerClient = require('react-router/internal/react-server-client');
|
|
7
7
|
var cookie = require('cookie');
|
|
@@ -24,10 +24,10 @@ function _interopNamespace(e) {
|
|
|
24
24
|
return Object.freeze(n);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
var
|
|
27
|
+
var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* react-router v7.
|
|
30
|
+
* react-router v7.18.0
|
|
31
31
|
*
|
|
32
32
|
* Copyright (c) Remix Software Inc.
|
|
33
33
|
*
|
|
@@ -43,6 +43,9 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
43
43
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
44
44
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
45
45
|
|
|
46
|
+
// lib/router/url.ts
|
|
47
|
+
var ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i;
|
|
48
|
+
|
|
46
49
|
// lib/router/history.ts
|
|
47
50
|
function invariant(value, message) {
|
|
48
51
|
if (value === false || value === null || typeof value === "undefined") {
|
|
@@ -502,7 +505,18 @@ function flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = "",
|
|
|
502
505
|
branches.push({
|
|
503
506
|
path,
|
|
504
507
|
score: computeScore(path, route.index),
|
|
505
|
-
routesMeta
|
|
508
|
+
routesMeta: routesMeta.map((meta2, i) => {
|
|
509
|
+
let [matcher, params] = compilePath(
|
|
510
|
+
meta2.relativePath,
|
|
511
|
+
meta2.caseSensitive,
|
|
512
|
+
i === routesMeta.length - 1
|
|
513
|
+
);
|
|
514
|
+
return {
|
|
515
|
+
...meta2,
|
|
516
|
+
matcher,
|
|
517
|
+
compiledParams: params
|
|
518
|
+
};
|
|
519
|
+
})
|
|
506
520
|
});
|
|
507
521
|
};
|
|
508
522
|
routes.forEach((route, index) => {
|
|
@@ -591,9 +605,19 @@ function matchRouteBranch(branch, pathname, allowPartial = false) {
|
|
|
591
605
|
let meta = routesMeta[i];
|
|
592
606
|
let end = i === routesMeta.length - 1;
|
|
593
607
|
let remainingPathname = matchedPathname === "/" ? pathname : pathname.slice(matchedPathname.length) || "/";
|
|
594
|
-
let
|
|
595
|
-
|
|
596
|
-
|
|
608
|
+
let pattern = {
|
|
609
|
+
path: meta.relativePath,
|
|
610
|
+
caseSensitive: meta.caseSensitive,
|
|
611
|
+
end
|
|
612
|
+
};
|
|
613
|
+
let match = (
|
|
614
|
+
// Use precomputed matcher if it exists
|
|
615
|
+
meta.matcher && meta.compiledParams ? matchPathImpl(
|
|
616
|
+
pattern,
|
|
617
|
+
remainingPathname,
|
|
618
|
+
meta.matcher,
|
|
619
|
+
meta.compiledParams
|
|
620
|
+
) : matchPath(pattern, remainingPathname)
|
|
597
621
|
);
|
|
598
622
|
let route = meta.route;
|
|
599
623
|
if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {
|
|
@@ -634,6 +658,9 @@ function matchPath(pattern, pathname) {
|
|
|
634
658
|
pattern.caseSensitive,
|
|
635
659
|
pattern.end
|
|
636
660
|
);
|
|
661
|
+
return matchPathImpl(pattern, pathname, matcher, compiledParams);
|
|
662
|
+
}
|
|
663
|
+
function matchPathImpl(pattern, pathname, matcher, compiledParams) {
|
|
637
664
|
let match = pathname.match(matcher);
|
|
638
665
|
if (!match) return null;
|
|
639
666
|
let matchedPathname = match[0];
|
|
@@ -722,7 +749,6 @@ function prependBasename({
|
|
|
722
749
|
}) {
|
|
723
750
|
return pathname === "/" ? basename : joinPaths([basename, pathname]);
|
|
724
751
|
}
|
|
725
|
-
var ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
|
|
726
752
|
var isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);
|
|
727
753
|
function resolvePath(to, fromPathname = "/") {
|
|
728
754
|
let {
|
|
@@ -819,7 +845,7 @@ function resolveTo(toArg, routePathnames, locationPathname, isPathRelative = fal
|
|
|
819
845
|
}
|
|
820
846
|
return path;
|
|
821
847
|
}
|
|
822
|
-
var removeDoubleSlashes = (path) => path.replace(
|
|
848
|
+
var removeDoubleSlashes = (path) => path.replace(/[\\/]{2,}/g, "/");
|
|
823
849
|
var joinPaths = (paths) => removeDoubleSlashes(paths.join("/"));
|
|
824
850
|
var removeTrailingSlash = (path) => path.replace(/\/+$/, "");
|
|
825
851
|
var normalizePathname = (pathname) => removeTrailingSlash(pathname).replace(/^\/*/, "/");
|
|
@@ -2469,9 +2495,71 @@ function prependCookies(parentHeaders, childHeaders) {
|
|
|
2469
2495
|
}
|
|
2470
2496
|
var SINGLE_FETCH_REDIRECT_STATUS = 202;
|
|
2471
2497
|
|
|
2498
|
+
// lib/server-runtime/warnings.ts
|
|
2499
|
+
var alreadyWarned = {};
|
|
2500
|
+
function warnOnce(condition, message) {
|
|
2501
|
+
if (!condition && !alreadyWarned[message]) {
|
|
2502
|
+
alreadyWarned[message] = true;
|
|
2503
|
+
console.warn(message);
|
|
2504
|
+
}
|
|
2505
|
+
}
|
|
2506
|
+
|
|
2507
|
+
// lib/errors.ts
|
|
2508
|
+
var ERROR_DIGEST_BASE = "REACT_ROUTER_ERROR";
|
|
2509
|
+
var ERROR_DIGEST_REDIRECT = "REDIRECT";
|
|
2510
|
+
var ERROR_DIGEST_ROUTE_ERROR_RESPONSE = "ROUTE_ERROR_RESPONSE";
|
|
2511
|
+
function createRedirectErrorDigest(response) {
|
|
2512
|
+
return `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_REDIRECT}:${JSON.stringify({
|
|
2513
|
+
status: response.status,
|
|
2514
|
+
statusText: response.statusText,
|
|
2515
|
+
location: response.headers.get("Location"),
|
|
2516
|
+
reloadDocument: response.headers.get("X-Remix-Reload-Document") === "true",
|
|
2517
|
+
replace: response.headers.get("X-Remix-Replace") === "true"
|
|
2518
|
+
})}`;
|
|
2519
|
+
}
|
|
2520
|
+
function createRouteErrorResponseDigest(response) {
|
|
2521
|
+
let status = 500;
|
|
2522
|
+
let statusText = "";
|
|
2523
|
+
let data2;
|
|
2524
|
+
if (isDataWithResponseInit(response)) {
|
|
2525
|
+
status = response.init?.status ?? status;
|
|
2526
|
+
statusText = response.init?.statusText ?? statusText;
|
|
2527
|
+
data2 = response.data;
|
|
2528
|
+
} else {
|
|
2529
|
+
status = response.status;
|
|
2530
|
+
statusText = response.statusText;
|
|
2531
|
+
data2 = void 0;
|
|
2532
|
+
}
|
|
2533
|
+
return `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_ROUTE_ERROR_RESPONSE}:${JSON.stringify(
|
|
2534
|
+
{
|
|
2535
|
+
status,
|
|
2536
|
+
statusText,
|
|
2537
|
+
data: data2
|
|
2538
|
+
}
|
|
2539
|
+
)}`;
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
// lib/dom/ssr/fog-of-war.ts
|
|
2543
|
+
var URL_LIMIT = 7680;
|
|
2544
|
+
function getPathsWithAncestors(paths) {
|
|
2545
|
+
let result = /* @__PURE__ */ new Set();
|
|
2546
|
+
paths.forEach((path) => {
|
|
2547
|
+
if (!path.startsWith("/")) {
|
|
2548
|
+
path = `/${path}`;
|
|
2549
|
+
}
|
|
2550
|
+
for (let i = 1; i < path.length; i++) {
|
|
2551
|
+
if (path[i] === "/") {
|
|
2552
|
+
result.add(path.slice(0, i));
|
|
2553
|
+
}
|
|
2554
|
+
}
|
|
2555
|
+
result.add(path);
|
|
2556
|
+
});
|
|
2557
|
+
return Array.from(result);
|
|
2558
|
+
}
|
|
2559
|
+
|
|
2472
2560
|
// lib/actions.ts
|
|
2473
|
-
function throwIfPotentialCSRFAttack(
|
|
2474
|
-
let originHeader = headers.get("origin");
|
|
2561
|
+
function throwIfPotentialCSRFAttack(request, allowedActionOrigins) {
|
|
2562
|
+
let originHeader = request.headers.get("origin");
|
|
2475
2563
|
let originDomain = null;
|
|
2476
2564
|
try {
|
|
2477
2565
|
originDomain = typeof originHeader === "string" && originHeader !== "null" ? new URL(originHeader).host : originHeader;
|
|
@@ -2480,18 +2568,12 @@ function throwIfPotentialCSRFAttack(headers, allowedActionOrigins) {
|
|
|
2480
2568
|
`\`origin\` header is not a valid URL. Aborting the action.`
|
|
2481
2569
|
);
|
|
2482
2570
|
}
|
|
2483
|
-
let host =
|
|
2484
|
-
if (originDomain &&
|
|
2571
|
+
let host = new URL(request.url).host;
|
|
2572
|
+
if (originDomain && originDomain !== host) {
|
|
2485
2573
|
if (!isAllowedOrigin(originDomain, allowedActionOrigins)) {
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
);
|
|
2490
|
-
} else {
|
|
2491
|
-
throw new Error(
|
|
2492
|
-
"`x-forwarded-host` or `host` headers are not provided. One of these is needed to compare the `origin` header from a forwarded action request. Aborting the action."
|
|
2493
|
-
);
|
|
2494
|
-
}
|
|
2574
|
+
throw new Error(
|
|
2575
|
+
"The `request.url` host does not match `origin` header from a forwarded action request. Aborting the action."
|
|
2576
|
+
);
|
|
2495
2577
|
}
|
|
2496
2578
|
}
|
|
2497
2579
|
}
|
|
@@ -2539,53 +2621,6 @@ function isAllowedOrigin(originDomain, allowedActionOrigins = []) {
|
|
|
2539
2621
|
(allowedOrigin) => allowedOrigin && (allowedOrigin === originDomain || matchWildcardDomain(originDomain, allowedOrigin))
|
|
2540
2622
|
);
|
|
2541
2623
|
}
|
|
2542
|
-
function parseHostHeader(headers) {
|
|
2543
|
-
let forwardedHostHeader = headers.get("x-forwarded-host");
|
|
2544
|
-
let forwardedHostValue = forwardedHostHeader?.split(",")[0]?.trim();
|
|
2545
|
-
let hostHeader = headers.get("host");
|
|
2546
|
-
return forwardedHostValue ? {
|
|
2547
|
-
type: "x-forwarded-host",
|
|
2548
|
-
value: forwardedHostValue
|
|
2549
|
-
} : hostHeader ? {
|
|
2550
|
-
type: "host",
|
|
2551
|
-
value: hostHeader
|
|
2552
|
-
} : void 0;
|
|
2553
|
-
}
|
|
2554
|
-
|
|
2555
|
-
// lib/errors.ts
|
|
2556
|
-
var ERROR_DIGEST_BASE = "REACT_ROUTER_ERROR";
|
|
2557
|
-
var ERROR_DIGEST_REDIRECT = "REDIRECT";
|
|
2558
|
-
var ERROR_DIGEST_ROUTE_ERROR_RESPONSE = "ROUTE_ERROR_RESPONSE";
|
|
2559
|
-
function createRedirectErrorDigest(response) {
|
|
2560
|
-
return `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_REDIRECT}:${JSON.stringify({
|
|
2561
|
-
status: response.status,
|
|
2562
|
-
statusText: response.statusText,
|
|
2563
|
-
location: response.headers.get("Location"),
|
|
2564
|
-
reloadDocument: response.headers.get("X-Remix-Reload-Document") === "true",
|
|
2565
|
-
replace: response.headers.get("X-Remix-Replace") === "true"
|
|
2566
|
-
})}`;
|
|
2567
|
-
}
|
|
2568
|
-
function createRouteErrorResponseDigest(response) {
|
|
2569
|
-
let status = 500;
|
|
2570
|
-
let statusText = "";
|
|
2571
|
-
let data2;
|
|
2572
|
-
if (isDataWithResponseInit(response)) {
|
|
2573
|
-
status = response.init?.status ?? status;
|
|
2574
|
-
statusText = response.init?.statusText ?? statusText;
|
|
2575
|
-
data2 = response.data;
|
|
2576
|
-
} else {
|
|
2577
|
-
status = response.status;
|
|
2578
|
-
statusText = response.statusText;
|
|
2579
|
-
data2 = void 0;
|
|
2580
|
-
}
|
|
2581
|
-
return `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_ROUTE_ERROR_RESPONSE}:${JSON.stringify(
|
|
2582
|
-
{
|
|
2583
|
-
status,
|
|
2584
|
-
statusText,
|
|
2585
|
-
data: data2
|
|
2586
|
-
}
|
|
2587
|
-
)}`;
|
|
2588
|
-
}
|
|
2589
2624
|
|
|
2590
2625
|
// lib/server-runtime/urls.ts
|
|
2591
2626
|
function getNormalizedPath(request, basename, future) {
|
|
@@ -2657,7 +2692,7 @@ var replace2 = (...args) => {
|
|
|
2657
2692
|
};
|
|
2658
2693
|
var cachedResolvePromise = (
|
|
2659
2694
|
// @ts-expect-error - on 18 types, requires 19.
|
|
2660
|
-
|
|
2695
|
+
React3__namespace.cache(async (resolve) => {
|
|
2661
2696
|
return Promise.allSettled([resolve]).then((r) => r[0]);
|
|
2662
2697
|
})
|
|
2663
2698
|
);
|
|
@@ -2672,13 +2707,13 @@ var Await = async ({
|
|
|
2672
2707
|
throw resolved.reason;
|
|
2673
2708
|
}
|
|
2674
2709
|
if (resolved.status === "rejected") {
|
|
2675
|
-
return
|
|
2676
|
-
children:
|
|
2710
|
+
return React3__namespace.createElement(reactServerClient.UNSAFE_AwaitContextProvider, {
|
|
2711
|
+
children: React3__namespace.createElement(React3__namespace.Fragment, null, errorElement),
|
|
2677
2712
|
value: { _tracked: true, _error: resolved.reason }
|
|
2678
2713
|
});
|
|
2679
2714
|
}
|
|
2680
2715
|
const toRender = typeof children === "function" ? children(resolved.value) : children;
|
|
2681
|
-
return
|
|
2716
|
+
return React3__namespace.createElement(reactServerClient.UNSAFE_AwaitContextProvider, {
|
|
2682
2717
|
children: toRender,
|
|
2683
2718
|
value: { _tracked: true, _data: resolved.value }
|
|
2684
2719
|
});
|
|
@@ -2767,6 +2802,13 @@ async function matchRSCServerRequest({
|
|
|
2767
2802
|
return response;
|
|
2768
2803
|
}
|
|
2769
2804
|
async function generateManifestResponse(routes, basename, request, generateResponse, temporaryReferences, routeDiscovery) {
|
|
2805
|
+
let url = new URL(request.url);
|
|
2806
|
+
if (url.toString().length > URL_LIMIT) {
|
|
2807
|
+
return new Response(null, {
|
|
2808
|
+
statusText: "Bad Request",
|
|
2809
|
+
status: 400
|
|
2810
|
+
});
|
|
2811
|
+
}
|
|
2770
2812
|
if (routeDiscovery?.mode === "initial") {
|
|
2771
2813
|
let payload2 = {
|
|
2772
2814
|
type: "manifest",
|
|
@@ -2784,7 +2826,6 @@ async function generateManifestResponse(routes, basename, request, generateRespo
|
|
|
2784
2826
|
{ temporaryReferences, onError: defaultOnError }
|
|
2785
2827
|
);
|
|
2786
2828
|
}
|
|
2787
|
-
let url = new URL(request.url);
|
|
2788
2829
|
let pathParam = url.searchParams.get("paths");
|
|
2789
2830
|
let pathnames = pathParam ? pathParam.split(",").filter(Boolean) : [url.pathname.replace(/\.manifest$/, "")];
|
|
2790
2831
|
let routeIds = /* @__PURE__ */ new Set();
|
|
@@ -2987,7 +3028,7 @@ async function generateRenderResponse(request, routes, basename, isDataRequest,
|
|
|
2987
3028
|
let potentialCSRFAttackError;
|
|
2988
3029
|
if (isMutationMethod(request.method)) {
|
|
2989
3030
|
try {
|
|
2990
|
-
throwIfPotentialCSRFAttack(request
|
|
3031
|
+
throwIfPotentialCSRFAttack(request, allowedActionOrigins);
|
|
2991
3032
|
ctx.runningAction = true;
|
|
2992
3033
|
let result2 = await processServerAction(
|
|
2993
3034
|
request,
|
|
@@ -3215,7 +3256,7 @@ async function getRenderPayload(baseRenderPayload, routes, basename, routeIdsToL
|
|
|
3215
3256
|
(patch) => !staticContext.matches.some((m) => m.route.id === patch.id)
|
|
3216
3257
|
)
|
|
3217
3258
|
) : getAdditionalRoutePatches(
|
|
3218
|
-
[staticContext.location.pathname],
|
|
3259
|
+
getPathsWithAncestors([staticContext.location.pathname]),
|
|
3219
3260
|
routes,
|
|
3220
3261
|
basename,
|
|
3221
3262
|
staticContext.matches.map((m) => m.route.id)
|
|
@@ -3235,7 +3276,7 @@ async function getRSCRouteMatch({
|
|
|
3235
3276
|
}) {
|
|
3236
3277
|
const route = match.route;
|
|
3237
3278
|
await explodeLazyRoute(route);
|
|
3238
|
-
const Layout = route.Layout ||
|
|
3279
|
+
const Layout = route.Layout || React3__namespace.Fragment;
|
|
3239
3280
|
const Component = route.Component;
|
|
3240
3281
|
const ErrorBoundary = route.ErrorBoundary;
|
|
3241
3282
|
const HydrateFallback = route.HydrateFallback;
|
|
@@ -3245,12 +3286,12 @@ async function getRSCRouteMatch({
|
|
|
3245
3286
|
let element = void 0;
|
|
3246
3287
|
let shouldLoadRoute = !routeIdsToLoad || routeIdsToLoad.includes(route.id);
|
|
3247
3288
|
if (Component && shouldLoadRoute) {
|
|
3248
|
-
element = !isBelowErrorBoundary ?
|
|
3289
|
+
element = !isBelowErrorBoundary ? React3__namespace.createElement(
|
|
3249
3290
|
Layout,
|
|
3250
3291
|
null,
|
|
3251
|
-
isClientReference(Component) ?
|
|
3252
|
-
children:
|
|
3253
|
-
}) :
|
|
3292
|
+
isClientReference(Component) ? React3__namespace.createElement(WithComponentProps, {
|
|
3293
|
+
children: React3__namespace.createElement(Component)
|
|
3294
|
+
}) : React3__namespace.createElement(Component, {
|
|
3254
3295
|
loaderData,
|
|
3255
3296
|
actionData,
|
|
3256
3297
|
params,
|
|
@@ -3258,30 +3299,30 @@ async function getRSCRouteMatch({
|
|
|
3258
3299
|
(match2) => convertRouteMatchToUiMatch(match2, staticContext.loaderData)
|
|
3259
3300
|
)
|
|
3260
3301
|
})
|
|
3261
|
-
) :
|
|
3302
|
+
) : React3__namespace.createElement(Outlet);
|
|
3262
3303
|
}
|
|
3263
3304
|
let error = void 0;
|
|
3264
3305
|
if (ErrorBoundary && staticContext.errors) {
|
|
3265
3306
|
error = staticContext.errors[route.id];
|
|
3266
3307
|
}
|
|
3267
|
-
const errorElement = ErrorBoundary ?
|
|
3308
|
+
const errorElement = ErrorBoundary ? React3__namespace.createElement(
|
|
3268
3309
|
Layout,
|
|
3269
3310
|
null,
|
|
3270
|
-
isClientReference(ErrorBoundary) ?
|
|
3271
|
-
children:
|
|
3272
|
-
}) :
|
|
3311
|
+
isClientReference(ErrorBoundary) ? React3__namespace.createElement(WithErrorBoundaryProps, {
|
|
3312
|
+
children: React3__namespace.createElement(ErrorBoundary)
|
|
3313
|
+
}) : React3__namespace.createElement(ErrorBoundary, {
|
|
3273
3314
|
loaderData,
|
|
3274
3315
|
actionData,
|
|
3275
3316
|
params,
|
|
3276
3317
|
error
|
|
3277
3318
|
})
|
|
3278
3319
|
) : void 0;
|
|
3279
|
-
const hydrateFallbackElement = HydrateFallback ?
|
|
3320
|
+
const hydrateFallbackElement = HydrateFallback ? React3__namespace.createElement(
|
|
3280
3321
|
Layout,
|
|
3281
3322
|
null,
|
|
3282
|
-
isClientReference(HydrateFallback) ?
|
|
3283
|
-
children:
|
|
3284
|
-
}) :
|
|
3323
|
+
isClientReference(HydrateFallback) ? React3__namespace.createElement(WithHydrateFallbackProps, {
|
|
3324
|
+
children: React3__namespace.createElement(HydrateFallback)
|
|
3325
|
+
}) : React3__namespace.createElement(HydrateFallback, {
|
|
3285
3326
|
loaderData,
|
|
3286
3327
|
actionData,
|
|
3287
3328
|
params
|
|
@@ -3318,11 +3359,11 @@ async function getRSCRouteMatch({
|
|
|
3318
3359
|
}
|
|
3319
3360
|
async function getManifestRoute(route) {
|
|
3320
3361
|
await explodeLazyRoute(route);
|
|
3321
|
-
const Layout = route.Layout ||
|
|
3322
|
-
const errorElement = route.ErrorBoundary ?
|
|
3362
|
+
const Layout = route.Layout || React3__namespace.Fragment;
|
|
3363
|
+
const errorElement = route.ErrorBoundary ? React3__namespace.createElement(
|
|
3323
3364
|
Layout,
|
|
3324
3365
|
null,
|
|
3325
|
-
|
|
3366
|
+
React3__namespace.createElement(route.ErrorBoundary)
|
|
3326
3367
|
) : void 0;
|
|
3327
3368
|
return {
|
|
3328
3369
|
clientAction: route.clientAction,
|
|
@@ -3380,27 +3421,18 @@ async function getAdditionalRoutePatches(pathnames, routes, basename, matchedRou
|
|
|
3380
3421
|
let patchRouteMatches = /* @__PURE__ */ new Map();
|
|
3381
3422
|
let matchedPaths = /* @__PURE__ */ new Set();
|
|
3382
3423
|
for (const pathname of pathnames) {
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
paths.forEach((path) => {
|
|
3391
|
-
if (matchedPaths.has(path)) {
|
|
3424
|
+
if (matchedPaths.has(pathname)) {
|
|
3425
|
+
continue;
|
|
3426
|
+
}
|
|
3427
|
+
matchedPaths.add(pathname);
|
|
3428
|
+
let matches = matchRoutes(routes, pathname, basename) || [];
|
|
3429
|
+
matches.forEach((m, i) => {
|
|
3430
|
+
if (patchRouteMatches.get(m.route.id)) {
|
|
3392
3431
|
return;
|
|
3393
3432
|
}
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
if (patchRouteMatches.get(m.route.id)) {
|
|
3398
|
-
return;
|
|
3399
|
-
}
|
|
3400
|
-
patchRouteMatches.set(m.route.id, {
|
|
3401
|
-
...m.route,
|
|
3402
|
-
parentId: matches[i - 1]?.route.id
|
|
3403
|
-
});
|
|
3433
|
+
patchRouteMatches.set(m.route.id, {
|
|
3434
|
+
...m.route,
|
|
3435
|
+
parentId: matches[i - 1]?.route.id
|
|
3404
3436
|
});
|
|
3405
3437
|
});
|
|
3406
3438
|
}
|
|
@@ -3512,15 +3544,6 @@ function byteStringToUint8Array(byteString) {
|
|
|
3512
3544
|
return array;
|
|
3513
3545
|
}
|
|
3514
3546
|
|
|
3515
|
-
// lib/server-runtime/warnings.ts
|
|
3516
|
-
var alreadyWarned = {};
|
|
3517
|
-
function warnOnce(condition, message) {
|
|
3518
|
-
if (!condition && !alreadyWarned[message]) {
|
|
3519
|
-
alreadyWarned[message] = true;
|
|
3520
|
-
console.warn(message);
|
|
3521
|
-
}
|
|
3522
|
-
}
|
|
3523
|
-
|
|
3524
3547
|
// lib/server-runtime/cookies.ts
|
|
3525
3548
|
var createCookie = (name, cookieOptions = {}) => {
|
|
3526
3549
|
let { secrets = [], ...options } = {
|