@react-router/dev 0.0.0-experimental-6844c5934 → 0.0.0-experimental-1ebb6d403
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/dist/cli/index.js +93 -86
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +48 -7
- package/dist/vite.js +160 -154
- package/package.json +6 -6
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v0.0.0-experimental-
|
|
2
|
+
* @react-router/dev v0.0.0-experimental-1ebb6d403
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -46,7 +46,7 @@ module.exports = __toCommonJS(vite_exports);
|
|
|
46
46
|
|
|
47
47
|
// vite/plugin.ts
|
|
48
48
|
var import_node_crypto = require("crypto");
|
|
49
|
-
var
|
|
49
|
+
var path6 = __toESM(require("path"));
|
|
50
50
|
var url = __toESM(require("url"));
|
|
51
51
|
var fse = __toESM(require("fs-extra"));
|
|
52
52
|
var babel = __toESM(require("@babel/core"));
|
|
@@ -70,6 +70,9 @@ var import_server = require("vite-node/server");
|
|
|
70
70
|
var import_client = require("vite-node/client");
|
|
71
71
|
var import_source_map = require("vite-node/source-map");
|
|
72
72
|
|
|
73
|
+
// vite/vite.ts
|
|
74
|
+
var import_pathe2 = __toESM(require("pathe"));
|
|
75
|
+
|
|
73
76
|
// invariant.ts
|
|
74
77
|
function invariant(value, message) {
|
|
75
78
|
if (value === false || value === null || typeof value === "undefined") {
|
|
@@ -80,20 +83,41 @@ function invariant(value, message) {
|
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
|
|
83
|
-
//
|
|
86
|
+
// config/is-react-router-repo.ts
|
|
87
|
+
var import_pathe = __toESM(require("pathe"));
|
|
88
|
+
function isReactRouterRepo() {
|
|
89
|
+
let serverRuntimePath = import_pathe.default.dirname(
|
|
90
|
+
require.resolve("@react-router/node/package.json")
|
|
91
|
+
);
|
|
92
|
+
let serverRuntimeParentDir = import_pathe.default.basename(
|
|
93
|
+
import_pathe.default.resolve(serverRuntimePath, "..")
|
|
94
|
+
);
|
|
95
|
+
return serverRuntimeParentDir === "packages";
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// vite/vite.ts
|
|
84
99
|
var vite;
|
|
85
|
-
|
|
86
|
-
|
|
100
|
+
var viteImportSpecifier = isReactRouterRepo() ? (
|
|
101
|
+
// Support testing against different versions of Vite by ensuring that Vite
|
|
102
|
+
// is resolved from the current working directory when running within this
|
|
103
|
+
// repo. If we don't do this, Vite will always be imported relative to this
|
|
104
|
+
// file, which means that it will always resolve to Vite 6.
|
|
105
|
+
`file:///${import_pathe2.default.normalize(
|
|
106
|
+
require.resolve("vite/package.json", { paths: [process.cwd()] })
|
|
107
|
+
).replace("package.json", "dist/node/index.js")}`
|
|
108
|
+
) : "vite";
|
|
109
|
+
async function preloadVite() {
|
|
110
|
+
vite = await import(viteImportSpecifier);
|
|
87
111
|
}
|
|
88
|
-
function
|
|
89
|
-
invariant(vite, "
|
|
112
|
+
function getVite() {
|
|
113
|
+
invariant(vite, "getVite() called before preloadVite()");
|
|
90
114
|
return vite;
|
|
91
115
|
}
|
|
92
116
|
|
|
93
117
|
// vite/vite-node.ts
|
|
94
118
|
async function createContext(viteConfig = {}) {
|
|
95
|
-
await
|
|
96
|
-
const vite2 =
|
|
119
|
+
await preloadVite();
|
|
120
|
+
const vite2 = getVite();
|
|
97
121
|
const devServer = await vite2.createServer(
|
|
98
122
|
vite2.mergeConfig(
|
|
99
123
|
{
|
|
@@ -130,7 +154,7 @@ async function createContext(viteConfig = {}) {
|
|
|
130
154
|
}
|
|
131
155
|
|
|
132
156
|
// config/config.ts
|
|
133
|
-
var
|
|
157
|
+
var import_pathe3 = __toESM(require("pathe"));
|
|
134
158
|
var import_chokidar = __toESM(require("chokidar"));
|
|
135
159
|
var import_picocolors = __toESM(require("picocolors"));
|
|
136
160
|
var import_pick2 = __toESM(require("lodash/pick"));
|
|
@@ -184,7 +208,7 @@ function validateRouteConfig({
|
|
|
184
208
|
`Route config in "${routeConfigFile}" is invalid.`,
|
|
185
209
|
root ? `${root}` : [],
|
|
186
210
|
nested ? Object.entries(nested).map(
|
|
187
|
-
([
|
|
211
|
+
([path7, message]) => `Path: routes.${path7}
|
|
188
212
|
${message}`
|
|
189
213
|
) : []
|
|
190
214
|
].flat().join("\n\n")
|
|
@@ -366,13 +390,13 @@ async function resolveConfig({
|
|
|
366
390
|
"The `prerender` config must be a boolean, an array of string paths, or a function returning a boolean or array of string paths"
|
|
367
391
|
);
|
|
368
392
|
}
|
|
369
|
-
let appDirectory =
|
|
370
|
-
let buildDirectory =
|
|
393
|
+
let appDirectory = import_pathe3.default.resolve(root, userAppDirectory || "app");
|
|
394
|
+
let buildDirectory = import_pathe3.default.resolve(root, userBuildDirectory);
|
|
371
395
|
let rootRouteFile = findEntry(appDirectory, "root");
|
|
372
396
|
if (!rootRouteFile) {
|
|
373
|
-
let rootRouteDisplayPath =
|
|
397
|
+
let rootRouteDisplayPath = import_pathe3.default.relative(
|
|
374
398
|
root,
|
|
375
|
-
|
|
399
|
+
import_pathe3.default.join(appDirectory, "root.tsx")
|
|
376
400
|
);
|
|
377
401
|
return err(
|
|
378
402
|
`Could not find a root route module in the app directory as "${rootRouteDisplayPath}"`
|
|
@@ -384,15 +408,15 @@ async function resolveConfig({
|
|
|
384
408
|
let routeConfigFile = findEntry(appDirectory, "routes");
|
|
385
409
|
try {
|
|
386
410
|
if (!routeConfigFile) {
|
|
387
|
-
let routeConfigDisplayPath =
|
|
411
|
+
let routeConfigDisplayPath = import_pathe3.default.relative(
|
|
388
412
|
root,
|
|
389
|
-
|
|
413
|
+
import_pathe3.default.join(appDirectory, "routes.ts")
|
|
390
414
|
);
|
|
391
415
|
return err(`Route config file not found at "${routeConfigDisplayPath}".`);
|
|
392
416
|
}
|
|
393
417
|
setAppDirectory(appDirectory);
|
|
394
418
|
let routeConfigExport = (await viteNodeContext.runner.executeFile(
|
|
395
|
-
|
|
419
|
+
import_pathe3.default.join(appDirectory, routeConfigFile)
|
|
396
420
|
)).default;
|
|
397
421
|
let routeConfig = await routeConfigExport;
|
|
398
422
|
let result = validateRouteConfig({
|
|
@@ -412,7 +436,7 @@ async function resolveConfig({
|
|
|
412
436
|
import_picocolors.default.red(`Route config in "${routeConfigFile}" is invalid.`),
|
|
413
437
|
"",
|
|
414
438
|
error.loc?.file && error.loc?.column && error.frame ? [
|
|
415
|
-
|
|
439
|
+
import_pathe3.default.relative(appDirectory, error.loc.file) + ":" + error.loc.line + ":" + error.loc.column,
|
|
416
440
|
error.frame.trim?.()
|
|
417
441
|
] : error.stack
|
|
418
442
|
].flat().join("\n")
|
|
@@ -484,8 +508,8 @@ async function createConfigLoader({
|
|
|
484
508
|
);
|
|
485
509
|
fsWatcher.on("all", async (...args) => {
|
|
486
510
|
let [event, rawFilepath] = args;
|
|
487
|
-
let filepath =
|
|
488
|
-
let appFileAddedOrRemoved = appDirectory && (event === "add" || event === "unlink") && filepath.startsWith(
|
|
511
|
+
let filepath = import_pathe3.default.normalize(rawFilepath);
|
|
512
|
+
let appFileAddedOrRemoved = appDirectory && (event === "add" || event === "unlink") && filepath.startsWith(import_pathe3.default.normalize(appDirectory));
|
|
489
513
|
let configCodeUpdated = Boolean(
|
|
490
514
|
viteNodeContext.devServer?.moduleGraph.getModuleById(filepath)
|
|
491
515
|
);
|
|
@@ -531,8 +555,8 @@ async function resolveEntryFiles({
|
|
|
531
555
|
reactRouterConfig
|
|
532
556
|
}) {
|
|
533
557
|
let { appDirectory } = reactRouterConfig;
|
|
534
|
-
let defaultsDirectory =
|
|
535
|
-
|
|
558
|
+
let defaultsDirectory = import_pathe3.default.resolve(
|
|
559
|
+
import_pathe3.default.dirname(require.resolve("@react-router/dev/package.json")),
|
|
536
560
|
"dist",
|
|
537
561
|
"config",
|
|
538
562
|
"defaults"
|
|
@@ -570,11 +594,11 @@ async function resolveEntryFiles({
|
|
|
570
594
|
}
|
|
571
595
|
entryServerFile = `entry.server.node.tsx`;
|
|
572
596
|
}
|
|
573
|
-
let entryClientFilePath = userEntryClientFile ?
|
|
574
|
-
let entryServerFilePath = userEntryServerFile ?
|
|
597
|
+
let entryClientFilePath = userEntryClientFile ? import_pathe3.default.resolve(reactRouterConfig.appDirectory, userEntryClientFile) : import_pathe3.default.resolve(defaultsDirectory, entryClientFile);
|
|
598
|
+
let entryServerFilePath = userEntryServerFile ? import_pathe3.default.resolve(reactRouterConfig.appDirectory, userEntryServerFile) : import_pathe3.default.resolve(defaultsDirectory, entryServerFile);
|
|
575
599
|
return { entryClientFilePath, entryServerFilePath };
|
|
576
600
|
}
|
|
577
|
-
var ssrExternals =
|
|
601
|
+
var ssrExternals = isReactRouterRepo() ? [
|
|
578
602
|
// This is only needed within this repo because these packages
|
|
579
603
|
// are linked to a directory outside of node_modules so Vite
|
|
580
604
|
// treats them as internal code by default.
|
|
@@ -587,21 +611,12 @@ var ssrExternals = isInReactRouterMonorepo() ? [
|
|
|
587
611
|
"@react-router/node",
|
|
588
612
|
"@react-router/serve"
|
|
589
613
|
] : void 0;
|
|
590
|
-
function isInReactRouterMonorepo() {
|
|
591
|
-
let serverRuntimePath = import_pathe.default.dirname(
|
|
592
|
-
require.resolve("@react-router/node/package.json")
|
|
593
|
-
);
|
|
594
|
-
let serverRuntimeParentDir = import_pathe.default.basename(
|
|
595
|
-
import_pathe.default.resolve(serverRuntimePath, "..")
|
|
596
|
-
);
|
|
597
|
-
return serverRuntimeParentDir === "packages";
|
|
598
|
-
}
|
|
599
614
|
var entryExts = [".js", ".jsx", ".ts", ".tsx"];
|
|
600
615
|
function findEntry(dir, basename2, options) {
|
|
601
616
|
for (let ext of entryExts) {
|
|
602
|
-
let file =
|
|
617
|
+
let file = import_pathe3.default.resolve(dir, basename2 + ext);
|
|
603
618
|
if (import_node_fs.default.existsSync(file)) {
|
|
604
|
-
return options?.absolute ?? false ? file :
|
|
619
|
+
return options?.absolute ?? false ? file : import_pathe3.default.relative(dir, file);
|
|
605
620
|
}
|
|
606
621
|
}
|
|
607
622
|
return void 0;
|
|
@@ -688,7 +703,7 @@ function generate(ctx, route) {
|
|
|
688
703
|
}
|
|
689
704
|
`;
|
|
690
705
|
}
|
|
691
|
-
var noExtension = (
|
|
706
|
+
var noExtension = (path7) => Path3.join(Path3.dirname(path7), Pathe2.filename(path7));
|
|
692
707
|
function getRouteLineage(routes, route) {
|
|
693
708
|
const result = [];
|
|
694
709
|
while (route) {
|
|
@@ -850,17 +865,17 @@ async function toNodeRequest(res, nodeRes) {
|
|
|
850
865
|
}
|
|
851
866
|
|
|
852
867
|
// vite/styles.ts
|
|
853
|
-
var
|
|
868
|
+
var path5 = __toESM(require("path"));
|
|
854
869
|
var import_react_router = require("react-router");
|
|
855
870
|
|
|
856
871
|
// vite/resolve-file-url.ts
|
|
857
|
-
var
|
|
872
|
+
var path4 = __toESM(require("path"));
|
|
858
873
|
var resolveFileUrl = ({ rootDirectory }, filePath) => {
|
|
859
|
-
let vite2 =
|
|
860
|
-
let relativePath =
|
|
861
|
-
let isWithinRoot = !relativePath.startsWith("..") && !
|
|
874
|
+
let vite2 = getVite();
|
|
875
|
+
let relativePath = path4.relative(rootDirectory, filePath);
|
|
876
|
+
let isWithinRoot = !relativePath.startsWith("..") && !path4.isAbsolute(relativePath);
|
|
862
877
|
if (!isWithinRoot) {
|
|
863
|
-
return
|
|
878
|
+
return path4.posix.join("/@fs", vite2.normalizePath(filePath));
|
|
864
879
|
}
|
|
865
880
|
return "/" + vite2.normalizePath(relativePath);
|
|
866
881
|
};
|
|
@@ -894,13 +909,13 @@ var getStylesForFiles = async ({
|
|
|
894
909
|
cssModulesManifest,
|
|
895
910
|
files
|
|
896
911
|
}) => {
|
|
897
|
-
let vite2 =
|
|
912
|
+
let vite2 = getVite();
|
|
898
913
|
let viteMajor = parseInt(vite2.version.split(".")[0], 10);
|
|
899
914
|
let styles = {};
|
|
900
915
|
let deps = /* @__PURE__ */ new Set();
|
|
901
916
|
try {
|
|
902
917
|
for (let file of files) {
|
|
903
|
-
let normalizedPath =
|
|
918
|
+
let normalizedPath = path5.resolve(rootDirectory, file).replace(/\\/g, "/");
|
|
904
919
|
let node = await viteDevServer.moduleGraph.getModuleById(normalizedPath);
|
|
905
920
|
if (!node) {
|
|
906
921
|
try {
|
|
@@ -1005,9 +1020,9 @@ var getStylesForUrl = async ({
|
|
|
1005
1020
|
return void 0;
|
|
1006
1021
|
}
|
|
1007
1022
|
let routes = createRoutes(build.routes);
|
|
1008
|
-
let appPath =
|
|
1023
|
+
let appPath = path5.relative(process.cwd(), reactRouterConfig.appDirectory);
|
|
1009
1024
|
let documentRouteFiles = (0, import_react_router.matchRoutes)(routes, url2, build.basename)?.map(
|
|
1010
|
-
(match) =>
|
|
1025
|
+
(match) => path5.resolve(appPath, reactRouterConfig.routes[match.route.id].file)
|
|
1011
1026
|
) ?? [];
|
|
1012
1027
|
let styles = await getStylesForFiles({
|
|
1013
1028
|
viteDevServer,
|
|
@@ -1015,7 +1030,7 @@ var getStylesForUrl = async ({
|
|
|
1015
1030
|
cssModulesManifest,
|
|
1016
1031
|
files: [
|
|
1017
1032
|
// Always include the client entry file when crawling the module graph for CSS
|
|
1018
|
-
|
|
1033
|
+
path5.relative(rootDirectory, entryClientFilePath),
|
|
1019
1034
|
// Then include any styles from the matched routes
|
|
1020
1035
|
...documentRouteFiles
|
|
1021
1036
|
]
|
|
@@ -1045,10 +1060,10 @@ var removeExports = (ast, exportsToRemove) => {
|
|
|
1045
1060
|
let exportsFiltered = false;
|
|
1046
1061
|
let markedForRemoval = /* @__PURE__ */ new Set();
|
|
1047
1062
|
traverse(ast, {
|
|
1048
|
-
ExportDeclaration(
|
|
1049
|
-
if (
|
|
1050
|
-
if (
|
|
1051
|
-
|
|
1063
|
+
ExportDeclaration(path7) {
|
|
1064
|
+
if (path7.node.type === "ExportNamedDeclaration") {
|
|
1065
|
+
if (path7.node.specifiers.length) {
|
|
1066
|
+
path7.node.specifiers = path7.node.specifiers.filter((specifier) => {
|
|
1052
1067
|
if (specifier.type === "ExportSpecifier" && specifier.exported.type === "Identifier") {
|
|
1053
1068
|
if (exportsToRemove.includes(specifier.exported.name)) {
|
|
1054
1069
|
exportsFiltered = true;
|
|
@@ -1057,12 +1072,12 @@ var removeExports = (ast, exportsToRemove) => {
|
|
|
1057
1072
|
}
|
|
1058
1073
|
return true;
|
|
1059
1074
|
});
|
|
1060
|
-
if (
|
|
1061
|
-
markedForRemoval.add(
|
|
1075
|
+
if (path7.node.specifiers.length === 0) {
|
|
1076
|
+
markedForRemoval.add(path7);
|
|
1062
1077
|
}
|
|
1063
1078
|
}
|
|
1064
|
-
if (
|
|
1065
|
-
let declaration =
|
|
1079
|
+
if (path7.node.declaration?.type === "VariableDeclaration") {
|
|
1080
|
+
let declaration = path7.node.declaration;
|
|
1066
1081
|
declaration.declarations = declaration.declarations.filter(
|
|
1067
1082
|
(declaration2) => {
|
|
1068
1083
|
if (declaration2.id.type === "Identifier" && exportsToRemove.includes(declaration2.id.name)) {
|
|
@@ -1076,30 +1091,30 @@ var removeExports = (ast, exportsToRemove) => {
|
|
|
1076
1091
|
}
|
|
1077
1092
|
);
|
|
1078
1093
|
if (declaration.declarations.length === 0) {
|
|
1079
|
-
markedForRemoval.add(
|
|
1094
|
+
markedForRemoval.add(path7);
|
|
1080
1095
|
}
|
|
1081
1096
|
}
|
|
1082
|
-
if (
|
|
1083
|
-
let id =
|
|
1097
|
+
if (path7.node.declaration?.type === "FunctionDeclaration") {
|
|
1098
|
+
let id = path7.node.declaration.id;
|
|
1084
1099
|
if (id && exportsToRemove.includes(id.name)) {
|
|
1085
|
-
markedForRemoval.add(
|
|
1100
|
+
markedForRemoval.add(path7);
|
|
1086
1101
|
}
|
|
1087
1102
|
}
|
|
1088
|
-
if (
|
|
1089
|
-
let id =
|
|
1103
|
+
if (path7.node.declaration?.type === "ClassDeclaration") {
|
|
1104
|
+
let id = path7.node.declaration.id;
|
|
1090
1105
|
if (id && exportsToRemove.includes(id.name)) {
|
|
1091
|
-
markedForRemoval.add(
|
|
1106
|
+
markedForRemoval.add(path7);
|
|
1092
1107
|
}
|
|
1093
1108
|
}
|
|
1094
1109
|
}
|
|
1095
|
-
if (
|
|
1096
|
-
markedForRemoval.add(
|
|
1110
|
+
if (path7.node.type === "ExportDefaultDeclaration" && exportsToRemove.includes("default")) {
|
|
1111
|
+
markedForRemoval.add(path7);
|
|
1097
1112
|
}
|
|
1098
1113
|
}
|
|
1099
1114
|
});
|
|
1100
1115
|
if (markedForRemoval.size > 0 || exportsFiltered) {
|
|
1101
|
-
for (let
|
|
1102
|
-
|
|
1116
|
+
for (let path7 of markedForRemoval) {
|
|
1117
|
+
path7.remove();
|
|
1103
1118
|
}
|
|
1104
1119
|
(0, import_babel_dead_code_elimination.deadCodeElimination)(ast, previouslyReferencedIdentifiers);
|
|
1105
1120
|
}
|
|
@@ -1197,24 +1212,24 @@ var plugin = {
|
|
|
1197
1212
|
};
|
|
1198
1213
|
var transform = (ast) => {
|
|
1199
1214
|
const hocs = [];
|
|
1200
|
-
function getHocUid(
|
|
1201
|
-
const uid =
|
|
1215
|
+
function getHocUid(path7, hocName) {
|
|
1216
|
+
const uid = path7.scope.generateUidIdentifier(hocName);
|
|
1202
1217
|
hocs.push([hocName, uid]);
|
|
1203
1218
|
return uid;
|
|
1204
1219
|
}
|
|
1205
1220
|
traverse(ast, {
|
|
1206
|
-
ExportDeclaration(
|
|
1207
|
-
if (
|
|
1208
|
-
const declaration =
|
|
1221
|
+
ExportDeclaration(path7) {
|
|
1222
|
+
if (path7.isExportDefaultDeclaration()) {
|
|
1223
|
+
const declaration = path7.get("declaration");
|
|
1209
1224
|
const expr = declaration.isExpression() ? declaration.node : declaration.isFunctionDeclaration() ? toFunctionExpression(declaration.node) : void 0;
|
|
1210
1225
|
if (expr) {
|
|
1211
|
-
const uid = getHocUid(
|
|
1226
|
+
const uid = getHocUid(path7, "withComponentProps");
|
|
1212
1227
|
declaration.replaceWith(t.callExpression(uid, [expr]));
|
|
1213
1228
|
}
|
|
1214
1229
|
return;
|
|
1215
1230
|
}
|
|
1216
|
-
if (
|
|
1217
|
-
const decl =
|
|
1231
|
+
if (path7.isExportNamedDeclaration()) {
|
|
1232
|
+
const decl = path7.get("declaration");
|
|
1218
1233
|
if (decl.isVariableDeclaration()) {
|
|
1219
1234
|
decl.get("declarations").forEach((varDeclarator) => {
|
|
1220
1235
|
const id = varDeclarator.get("id");
|
|
@@ -1224,7 +1239,7 @@ var transform = (ast) => {
|
|
|
1224
1239
|
if (!id.isIdentifier()) return;
|
|
1225
1240
|
const { name } = id.node;
|
|
1226
1241
|
if (!NAMED_COMPONENT_EXPORTS.includes(name)) return;
|
|
1227
|
-
const uid = getHocUid(
|
|
1242
|
+
const uid = getHocUid(path7, `with${name}Props`);
|
|
1228
1243
|
init.replaceWith(t.callExpression(uid, [expr]));
|
|
1229
1244
|
});
|
|
1230
1245
|
return;
|
|
@@ -1234,7 +1249,7 @@ var transform = (ast) => {
|
|
|
1234
1249
|
if (!id) return;
|
|
1235
1250
|
const { name } = id;
|
|
1236
1251
|
if (!NAMED_COMPONENT_EXPORTS.includes(name)) return;
|
|
1237
|
-
const uid = getHocUid(
|
|
1252
|
+
const uid = getHocUid(path7, `with${name}Props`);
|
|
1238
1253
|
decl.replaceWith(
|
|
1239
1254
|
t.variableDeclaration("const", [
|
|
1240
1255
|
t.variableDeclarator(
|
|
@@ -1286,9 +1301,9 @@ var BUILD_CLIENT_ROUTE_QUERY_STRING = "?__react-router-build-client-route";
|
|
|
1286
1301
|
var virtualHmrRuntime = create("hmr-runtime");
|
|
1287
1302
|
var virtualInjectHmrRuntime = create("inject-hmr-runtime");
|
|
1288
1303
|
var resolveRelativeRouteFilePath = (route, reactRouterConfig) => {
|
|
1289
|
-
let vite2 =
|
|
1304
|
+
let vite2 = getVite();
|
|
1290
1305
|
let file = route.file;
|
|
1291
|
-
let fullPath =
|
|
1306
|
+
let fullPath = path6.resolve(reactRouterConfig.appDirectory, file);
|
|
1292
1307
|
return vite2.normalizePath(fullPath);
|
|
1293
1308
|
};
|
|
1294
1309
|
var virtual = {
|
|
@@ -1309,9 +1324,9 @@ var getHash = (source, maxLength) => {
|
|
|
1309
1324
|
return typeof maxLength === "number" ? hash.slice(0, maxLength) : hash;
|
|
1310
1325
|
};
|
|
1311
1326
|
var resolveChunk = (ctx, viteManifest, absoluteFilePath) => {
|
|
1312
|
-
let vite2 =
|
|
1327
|
+
let vite2 = getVite();
|
|
1313
1328
|
let rootRelativeFilePath = vite2.normalizePath(
|
|
1314
|
-
|
|
1329
|
+
path6.relative(ctx.rootDirectory, absoluteFilePath)
|
|
1315
1330
|
);
|
|
1316
1331
|
let entryChunk = viteManifest[rootRelativeFilePath + BUILD_CLIENT_ROUTE_QUERY_STRING] ?? viteManifest[rootRelativeFilePath];
|
|
1317
1332
|
if (!entryChunk) {
|
|
@@ -1363,7 +1378,7 @@ function dedupe(array2) {
|
|
|
1363
1378
|
return [...new Set(array2)];
|
|
1364
1379
|
}
|
|
1365
1380
|
var writeFileSafe = async (file, contents) => {
|
|
1366
|
-
await fse.ensureDir(
|
|
1381
|
+
await fse.ensureDir(path6.dirname(file));
|
|
1367
1382
|
await fse.writeFile(file, contents);
|
|
1368
1383
|
};
|
|
1369
1384
|
var getRouteManifestModuleExports = async (viteChildCompiler, ctx) => {
|
|
@@ -1385,7 +1400,7 @@ var getRouteModuleExports = async (viteChildCompiler, ctx, routeFile, readRouteF
|
|
|
1385
1400
|
}
|
|
1386
1401
|
let ssr = true;
|
|
1387
1402
|
let { pluginContainer, moduleGraph } = viteChildCompiler;
|
|
1388
|
-
let routePath =
|
|
1403
|
+
let routePath = path6.resolve(ctx.reactRouterConfig.appDirectory, routeFile);
|
|
1389
1404
|
let url2 = resolveFileUrl(ctx, routePath);
|
|
1390
1405
|
let resolveId = async () => {
|
|
1391
1406
|
let result = await pluginContainer.resolveId(url2, void 0, { ssr });
|
|
@@ -1409,19 +1424,19 @@ var getServerBundleBuildConfig = (viteUserConfig) => {
|
|
|
1409
1424
|
}
|
|
1410
1425
|
return viteUserConfig.__reactRouterServerBundleBuildConfig;
|
|
1411
1426
|
};
|
|
1412
|
-
var getServerBuildDirectory = (ctx) =>
|
|
1427
|
+
var getServerBuildDirectory = (ctx) => path6.join(
|
|
1413
1428
|
ctx.reactRouterConfig.buildDirectory,
|
|
1414
1429
|
"server",
|
|
1415
1430
|
...ctx.serverBundleBuildConfig ? [ctx.serverBundleBuildConfig.serverBundleId] : []
|
|
1416
1431
|
);
|
|
1417
|
-
var getClientBuildDirectory = (reactRouterConfig) =>
|
|
1418
|
-
var defaultEntriesDir =
|
|
1419
|
-
|
|
1432
|
+
var getClientBuildDirectory = (reactRouterConfig) => path6.join(reactRouterConfig.buildDirectory, "client");
|
|
1433
|
+
var defaultEntriesDir = path6.resolve(
|
|
1434
|
+
path6.dirname(require.resolve("@react-router/dev/package.json")),
|
|
1420
1435
|
"dist",
|
|
1421
1436
|
"config",
|
|
1422
1437
|
"defaults"
|
|
1423
1438
|
);
|
|
1424
|
-
var defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) =>
|
|
1439
|
+
var defaultEntries = fse.readdirSync(defaultEntriesDir).map((filename3) => path6.join(defaultEntriesDir, filename3));
|
|
1425
1440
|
invariant(defaultEntries.length > 0, "No default entries found");
|
|
1426
1441
|
var reactRouterDevLoadContext = () => ({});
|
|
1427
1442
|
var reactRouterVitePlugin = () => {
|
|
@@ -1510,7 +1525,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1510
1525
|
virtual.serverManifest.id
|
|
1511
1526
|
)};
|
|
1512
1527
|
export const assetsBuildDirectory = ${JSON.stringify(
|
|
1513
|
-
|
|
1528
|
+
path6.relative(
|
|
1514
1529
|
ctx.rootDirectory,
|
|
1515
1530
|
getClientBuildDirectory(ctx.reactRouterConfig)
|
|
1516
1531
|
)
|
|
@@ -1536,7 +1551,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1536
1551
|
};
|
|
1537
1552
|
let loadViteManifest = async (directory) => {
|
|
1538
1553
|
let manifestContents = await fse.readFile(
|
|
1539
|
-
|
|
1554
|
+
path6.resolve(directory, ".vite", "manifest.json"),
|
|
1540
1555
|
"utf-8"
|
|
1541
1556
|
);
|
|
1542
1557
|
return JSON.parse(manifestContents);
|
|
@@ -1572,7 +1587,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1572
1587
|
ctx
|
|
1573
1588
|
);
|
|
1574
1589
|
for (let [key, route] of Object.entries(ctx.reactRouterConfig.routes)) {
|
|
1575
|
-
let routeFilePath =
|
|
1590
|
+
let routeFilePath = path6.join(
|
|
1576
1591
|
ctx.reactRouterConfig.appDirectory,
|
|
1577
1592
|
route.file
|
|
1578
1593
|
);
|
|
@@ -1607,7 +1622,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1607
1622
|
}
|
|
1608
1623
|
let fingerprintedValues = { entry, routes: browserRoutes };
|
|
1609
1624
|
let version = getHash(JSON.stringify(fingerprintedValues), 8);
|
|
1610
|
-
let manifestPath =
|
|
1625
|
+
let manifestPath = path6.posix.join(
|
|
1611
1626
|
viteConfig.build.assetsDir,
|
|
1612
1627
|
`manifest-${version}.js`
|
|
1613
1628
|
);
|
|
@@ -1618,7 +1633,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1618
1633
|
...nonFingerprintedValues
|
|
1619
1634
|
};
|
|
1620
1635
|
await writeFileSafe(
|
|
1621
|
-
|
|
1636
|
+
path6.join(getClientBuildDirectory(ctx.reactRouterConfig), manifestPath),
|
|
1622
1637
|
`window.__reactRouterManifest=${JSON.stringify(
|
|
1623
1638
|
reactRouterBrowserManifest
|
|
1624
1639
|
)};`
|
|
@@ -1681,11 +1696,17 @@ var reactRouterVitePlugin = () => {
|
|
|
1681
1696
|
{
|
|
1682
1697
|
name: "react-router",
|
|
1683
1698
|
config: async (_viteUserConfig, _viteConfigEnv) => {
|
|
1684
|
-
await
|
|
1685
|
-
let vite2 =
|
|
1699
|
+
await preloadVite();
|
|
1700
|
+
let vite2 = getVite();
|
|
1686
1701
|
viteUserConfig = _viteUserConfig;
|
|
1687
1702
|
viteConfigEnv = _viteConfigEnv;
|
|
1688
1703
|
viteCommand = viteConfigEnv.command;
|
|
1704
|
+
let viteClientConditions = [
|
|
1705
|
+
...vite2.defaultClientConditions ?? []
|
|
1706
|
+
];
|
|
1707
|
+
let viteServerConditions = [
|
|
1708
|
+
...vite2.defaultServerConditions ?? []
|
|
1709
|
+
];
|
|
1689
1710
|
logger = vite2.createLogger(viteUserConfig.logLevel, {
|
|
1690
1711
|
prefix: "[react-router]"
|
|
1691
1712
|
});
|
|
@@ -1735,15 +1756,15 @@ var reactRouterVitePlugin = () => {
|
|
|
1735
1756
|
ssr: {
|
|
1736
1757
|
external: ssrExternals,
|
|
1737
1758
|
resolve: {
|
|
1738
|
-
conditions: viteCommand === "build" ?
|
|
1739
|
-
externalConditions: viteCommand === "build" ?
|
|
1759
|
+
conditions: viteCommand === "build" ? viteServerConditions : ["development", ...viteServerConditions],
|
|
1760
|
+
externalConditions: viteCommand === "build" ? viteServerConditions : ["development", ...viteServerConditions]
|
|
1740
1761
|
}
|
|
1741
1762
|
},
|
|
1742
1763
|
optimizeDeps: {
|
|
1743
1764
|
entries: ctx.reactRouterConfig.future.unstable_optimizeDeps ? [
|
|
1744
1765
|
ctx.entryClientFilePath,
|
|
1745
1766
|
...Object.values(ctx.reactRouterConfig.routes).map(
|
|
1746
|
-
(route) =>
|
|
1767
|
+
(route) => path6.join(ctx.reactRouterConfig.appDirectory, route.file)
|
|
1747
1768
|
)
|
|
1748
1769
|
] : [],
|
|
1749
1770
|
include: [
|
|
@@ -1777,7 +1798,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1777
1798
|
"react-router/dom",
|
|
1778
1799
|
"react-router-dom"
|
|
1779
1800
|
],
|
|
1780
|
-
conditions: viteCommand === "build" ?
|
|
1801
|
+
conditions: viteCommand === "build" ? viteClientConditions : ["development", ...viteClientConditions]
|
|
1781
1802
|
},
|
|
1782
1803
|
base: viteUserConfig.base,
|
|
1783
1804
|
// When consumer provides an allow list for files that can be read by
|
|
@@ -1799,7 +1820,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1799
1820
|
input: [
|
|
1800
1821
|
ctx.entryClientFilePath,
|
|
1801
1822
|
...Object.values(ctx.reactRouterConfig.routes).map(
|
|
1802
|
-
(route) => `${
|
|
1823
|
+
(route) => `${path6.resolve(
|
|
1803
1824
|
ctx.reactRouterConfig.appDirectory,
|
|
1804
1825
|
route.file
|
|
1805
1826
|
)}${BUILD_CLIENT_ROUTE_QUERY_STRING}`
|
|
@@ -1848,7 +1869,7 @@ var reactRouterVitePlugin = () => {
|
|
|
1848
1869
|
"The React Router Vite plugin requires the use of a Vite config file"
|
|
1849
1870
|
);
|
|
1850
1871
|
}
|
|
1851
|
-
let vite2 =
|
|
1872
|
+
let vite2 = getVite();
|
|
1852
1873
|
let childCompilerConfigFile = await vite2.loadConfigFromFile(
|
|
1853
1874
|
{
|
|
1854
1875
|
command: viteConfig.command,
|
|
@@ -2007,8 +2028,8 @@ var reactRouterVitePlugin = () => {
|
|
|
2007
2028
|
let ssrAssetPaths = getViteManifestAssetPaths(ssrViteManifest);
|
|
2008
2029
|
let movedAssetPaths = [];
|
|
2009
2030
|
for (let ssrAssetPath of ssrAssetPaths) {
|
|
2010
|
-
let src =
|
|
2011
|
-
let dest =
|
|
2031
|
+
let src = path6.join(serverBuildDirectory, ssrAssetPath);
|
|
2032
|
+
let dest = path6.join(clientBuildDirectory, ssrAssetPath);
|
|
2012
2033
|
if (!fse.existsSync(dest)) {
|
|
2013
2034
|
await fse.move(src, dest);
|
|
2014
2035
|
movedAssetPaths.push(dest);
|
|
@@ -2021,7 +2042,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2021
2042
|
);
|
|
2022
2043
|
await Promise.all(
|
|
2023
2044
|
ssrCssPaths.map(
|
|
2024
|
-
(cssPath) => fse.remove(
|
|
2045
|
+
(cssPath) => fse.remove(path6.join(serverBuildDirectory, cssPath))
|
|
2025
2046
|
)
|
|
2026
2047
|
);
|
|
2027
2048
|
if (movedAssetPaths.length) {
|
|
@@ -2030,7 +2051,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2030
2051
|
"",
|
|
2031
2052
|
`${import_picocolors3.default.green("\u2713")} ${movedAssetPaths.length} asset${movedAssetPaths.length > 1 ? "s" : ""} moved from React Router server build to client assets.`,
|
|
2032
2053
|
...movedAssetPaths.map(
|
|
2033
|
-
(movedAssetPath) => import_picocolors3.default.dim(
|
|
2054
|
+
(movedAssetPath) => import_picocolors3.default.dim(path6.relative(ctx.rootDirectory, movedAssetPath))
|
|
2034
2055
|
),
|
|
2035
2056
|
""
|
|
2036
2057
|
].join("\n")
|
|
@@ -2077,7 +2098,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2077
2098
|
async transform(_code, id, options) {
|
|
2078
2099
|
if (!id.endsWith(BUILD_CLIENT_ROUTE_QUERY_STRING)) return;
|
|
2079
2100
|
let routeModuleId = id.replace(BUILD_CLIENT_ROUTE_QUERY_STRING, "");
|
|
2080
|
-
let routeFileName =
|
|
2101
|
+
let routeFileName = path6.basename(routeModuleId);
|
|
2081
2102
|
let sourceExports = await getRouteModuleExports(
|
|
2082
2103
|
viteChildCompiler,
|
|
2083
2104
|
ctx,
|
|
@@ -2139,9 +2160,9 @@ var reactRouterVitePlugin = () => {
|
|
|
2139
2160
|
if (viteCommand !== "build" && importer.endsWith(".html")) {
|
|
2140
2161
|
return;
|
|
2141
2162
|
}
|
|
2142
|
-
let vite2 =
|
|
2163
|
+
let vite2 = getVite();
|
|
2143
2164
|
let importerShort = vite2.normalizePath(
|
|
2144
|
-
|
|
2165
|
+
path6.relative(ctx.rootDirectory, importer)
|
|
2145
2166
|
);
|
|
2146
2167
|
let isRoute = getRoute(ctx.reactRouterConfig, importer);
|
|
2147
2168
|
if (isRoute) {
|
|
@@ -2254,10 +2275,10 @@ var reactRouterVitePlugin = () => {
|
|
|
2254
2275
|
},
|
|
2255
2276
|
async load(id) {
|
|
2256
2277
|
if (id !== virtualHmrRuntime.resolvedId) return;
|
|
2257
|
-
let reactRefreshDir =
|
|
2278
|
+
let reactRefreshDir = path6.dirname(
|
|
2258
2279
|
require.resolve("react-refresh/package.json")
|
|
2259
2280
|
);
|
|
2260
|
-
let reactRefreshRuntimePath =
|
|
2281
|
+
let reactRefreshRuntimePath = path6.join(
|
|
2261
2282
|
reactRefreshDir,
|
|
2262
2283
|
"cjs/react-refresh-runtime.development.js"
|
|
2263
2284
|
);
|
|
@@ -2397,22 +2418,7 @@ function addRefreshWrapper(reactRouterConfig, code, id) {
|
|
|
2397
2418
|
"links",
|
|
2398
2419
|
"shouldRevalidate"
|
|
2399
2420
|
] : [];
|
|
2400
|
-
return "
|
|
2401
|
-
"REACT REFRESH HEADER",
|
|
2402
|
-
REACT_REFRESH_HEADER.replaceAll("__SOURCE__", JSON.stringify(id))
|
|
2403
|
-
) + "\n\n" + withCommentBoundaries("REACT REFRESH BODY", code) + "\n\n" + withCommentBoundaries(
|
|
2404
|
-
"REACT REFRESH FOOTER",
|
|
2405
|
-
REACT_REFRESH_FOOTER.replaceAll("__SOURCE__", JSON.stringify(id)).replaceAll("__ACCEPT_EXPORTS__", JSON.stringify(acceptExports)).replaceAll("__ROUTE_ID__", JSON.stringify(route?.id))
|
|
2406
|
-
) + "\n";
|
|
2407
|
-
}
|
|
2408
|
-
function withCommentBoundaries(label, text) {
|
|
2409
|
-
let begin = `// [BEGIN] ${label} `;
|
|
2410
|
-
begin += "-".repeat(80 - begin.length);
|
|
2411
|
-
let end = `// [END] ${label} `;
|
|
2412
|
-
end += "-".repeat(80 - end.length);
|
|
2413
|
-
return `${begin}
|
|
2414
|
-
${text}
|
|
2415
|
-
${end}`;
|
|
2421
|
+
return REACT_REFRESH_HEADER.replaceAll("__SOURCE__", JSON.stringify(id)) + code + REACT_REFRESH_FOOTER.replaceAll("__SOURCE__", JSON.stringify(id)).replaceAll("__ACCEPT_EXPORTS__", JSON.stringify(acceptExports)).replaceAll("__ROUTE_ID__", JSON.stringify(route?.id));
|
|
2416
2422
|
}
|
|
2417
2423
|
var REACT_REFRESH_HEADER = `
|
|
2418
2424
|
import RefreshRuntime from "${virtualHmrRuntime.id}";
|
|
@@ -2434,7 +2440,7 @@ if (import.meta.hot && !inWebWorker) {
|
|
|
2434
2440
|
RefreshRuntime.register(type, __SOURCE__ + " " + id)
|
|
2435
2441
|
};
|
|
2436
2442
|
window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
|
|
2437
|
-
}`.
|
|
2443
|
+
}`.replaceAll("\n", "");
|
|
2438
2444
|
var REACT_REFRESH_FOOTER = `
|
|
2439
2445
|
if (import.meta.hot && !inWebWorker) {
|
|
2440
2446
|
window.$RefreshReg$ = prevRefreshReg;
|
|
@@ -2448,11 +2454,11 @@ if (import.meta.hot && !inWebWorker) {
|
|
|
2448
2454
|
if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
|
|
2449
2455
|
});
|
|
2450
2456
|
});
|
|
2451
|
-
}
|
|
2457
|
+
}`;
|
|
2452
2458
|
function getRoute(pluginConfig, file) {
|
|
2453
|
-
let vite2 =
|
|
2459
|
+
let vite2 = getVite();
|
|
2454
2460
|
let routePath = vite2.normalizePath(
|
|
2455
|
-
|
|
2461
|
+
path6.relative(pluginConfig.appDirectory, file)
|
|
2456
2462
|
);
|
|
2457
2463
|
let route = Object.values(pluginConfig.routes).find(
|
|
2458
2464
|
(r) => vite2.normalizePath(r.file) === routePath
|
|
@@ -2474,7 +2480,7 @@ async function getRouteMetadata(ctx, viteChildCompiler, route, readRouteFile) {
|
|
|
2474
2480
|
caseSensitive: route.caseSensitive,
|
|
2475
2481
|
url: combineURLs(
|
|
2476
2482
|
ctx.publicPath,
|
|
2477
|
-
"/" +
|
|
2483
|
+
"/" + path6.relative(
|
|
2478
2484
|
ctx.rootDirectory,
|
|
2479
2485
|
resolveRelativeRouteFilePath(route, ctx.reactRouterConfig)
|
|
2480
2486
|
)
|
|
@@ -2497,7 +2503,7 @@ async function getRouteMetadata(ctx, viteChildCompiler, route, readRouteFile) {
|
|
|
2497
2503
|
return info;
|
|
2498
2504
|
}
|
|
2499
2505
|
async function getPrerenderBuildAndHandler(viteConfig, reactRouterConfig, serverBuildDirectory) {
|
|
2500
|
-
let serverBuildPath =
|
|
2506
|
+
let serverBuildPath = path6.join(
|
|
2501
2507
|
serverBuildDirectory,
|
|
2502
2508
|
reactRouterConfig.serverBuildFile
|
|
2503
2509
|
);
|
|
@@ -2519,9 +2525,9 @@ async function handleSpaMode(viteConfig, reactRouterConfig, serverBuildDirectory
|
|
|
2519
2525
|
let html = await response.text();
|
|
2520
2526
|
validatePrerenderedResponse(response, html, "SPA Mode", "/");
|
|
2521
2527
|
validatePrerenderedHtml(html, "SPA Mode");
|
|
2522
|
-
await fse.writeFile(
|
|
2528
|
+
await fse.writeFile(path6.join(clientBuildDirectory, "index.html"), html);
|
|
2523
2529
|
viteConfig.logger.info(
|
|
2524
|
-
"SPA Mode: index.html has been written to your " + import_picocolors3.default.bold(
|
|
2530
|
+
"SPA Mode: index.html has been written to your " + import_picocolors3.default.bold(path6.relative(process.cwd(), clientBuildDirectory)) + " directory"
|
|
2525
2531
|
);
|
|
2526
2532
|
}
|
|
2527
2533
|
async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirectory, clientBuildDirectory) {
|
|
@@ -2551,14 +2557,14 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
2551
2557
|
// build time or runtime
|
|
2552
2558
|
"X-React-Router-Prerender": "yes"
|
|
2553
2559
|
};
|
|
2554
|
-
for (let
|
|
2555
|
-
let matches = (0, import_react_router2.matchRoutes)(routes,
|
|
2560
|
+
for (let path7 of routesToPrerender) {
|
|
2561
|
+
let matches = (0, import_react_router2.matchRoutes)(routes, `/${path7}/`.replace(/^\/\/+/, "/"));
|
|
2556
2562
|
let hasLoaders = matches?.some((m) => m.route.loader);
|
|
2557
2563
|
let data;
|
|
2558
2564
|
if (hasLoaders) {
|
|
2559
2565
|
data = await prerenderData(
|
|
2560
2566
|
handler,
|
|
2561
|
-
|
|
2567
|
+
path7,
|
|
2562
2568
|
clientBuildDirectory,
|
|
2563
2569
|
reactRouterConfig,
|
|
2564
2570
|
viteConfig,
|
|
@@ -2571,7 +2577,7 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
2571
2577
|
if (isResourceRoute) {
|
|
2572
2578
|
await prerenderResourceRoute(
|
|
2573
2579
|
handler,
|
|
2574
|
-
|
|
2580
|
+
path7,
|
|
2575
2581
|
clientBuildDirectory,
|
|
2576
2582
|
reactRouterConfig,
|
|
2577
2583
|
viteConfig,
|
|
@@ -2580,7 +2586,7 @@ async function handlePrerender(viteConfig, reactRouterConfig, serverBuildDirecto
|
|
|
2580
2586
|
} else {
|
|
2581
2587
|
await prerenderRoute(
|
|
2582
2588
|
handler,
|
|
2583
|
-
|
|
2589
|
+
path7,
|
|
2584
2590
|
clientBuildDirectory,
|
|
2585
2591
|
reactRouterConfig,
|
|
2586
2592
|
viteConfig,
|
|
@@ -2637,9 +2643,9 @@ async function prerenderData(handler, prerenderPath, clientBuildDirectory, react
|
|
|
2637
2643
|
let response = await handler(request);
|
|
2638
2644
|
let data = await response.text();
|
|
2639
2645
|
validatePrerenderedResponse(response, data, "Prerender", normalizedPath);
|
|
2640
|
-
let outdir =
|
|
2641
|
-
let outfile =
|
|
2642
|
-
await fse.ensureDir(
|
|
2646
|
+
let outdir = path6.relative(process.cwd(), clientBuildDirectory);
|
|
2647
|
+
let outfile = path6.join(outdir, ...normalizedPath.split("/"));
|
|
2648
|
+
await fse.ensureDir(path6.dirname(outfile));
|
|
2643
2649
|
await fse.outputFile(outfile, data);
|
|
2644
2650
|
viteConfig.logger.info(`Prerender: Generated ${import_picocolors3.default.bold(outfile)}`);
|
|
2645
2651
|
return data;
|
|
@@ -2656,9 +2662,9 @@ async function prerenderRoute(handler, prerenderPath, clientBuildDirectory, reac
|
|
|
2656
2662
|
if (!reactRouterConfig.ssr) {
|
|
2657
2663
|
validatePrerenderedHtml(html, "Prerender");
|
|
2658
2664
|
}
|
|
2659
|
-
let outdir =
|
|
2660
|
-
let outfile =
|
|
2661
|
-
await fse.ensureDir(
|
|
2665
|
+
let outdir = path6.relative(process.cwd(), clientBuildDirectory);
|
|
2666
|
+
let outfile = path6.join(outdir, ...normalizedPath.split("/"), "index.html");
|
|
2667
|
+
await fse.ensureDir(path6.dirname(outfile));
|
|
2662
2668
|
await fse.outputFile(outfile, html);
|
|
2663
2669
|
viteConfig.logger.info(`Prerender: Generated ${import_picocolors3.default.bold(outfile)}`);
|
|
2664
2670
|
}
|
|
@@ -2668,9 +2674,9 @@ async function prerenderResourceRoute(handler, prerenderPath, clientBuildDirecto
|
|
|
2668
2674
|
let response = await handler(request);
|
|
2669
2675
|
let text = await response.text();
|
|
2670
2676
|
validatePrerenderedResponse(response, text, "Prerender", normalizedPath);
|
|
2671
|
-
let outdir =
|
|
2672
|
-
let outfile =
|
|
2673
|
-
await fse.ensureDir(
|
|
2677
|
+
let outdir = path6.relative(process.cwd(), clientBuildDirectory);
|
|
2678
|
+
let outfile = path6.join(outdir, ...normalizedPath.split("/"));
|
|
2679
|
+
await fse.ensureDir(path6.dirname(outfile));
|
|
2674
2680
|
await fse.outputFile(outfile, text);
|
|
2675
2681
|
viteConfig.logger.info(`Prerender: Generated ${import_picocolors3.default.bold(outfile)}`);
|
|
2676
2682
|
}
|
|
@@ -2679,17 +2685,17 @@ async function prerenderManifest(build, clientBuildDirectory, reactRouterConfig,
|
|
|
2679
2685
|
/\/\/+/g,
|
|
2680
2686
|
"/"
|
|
2681
2687
|
);
|
|
2682
|
-
let outdir =
|
|
2683
|
-
let outfile =
|
|
2684
|
-
await fse.ensureDir(
|
|
2688
|
+
let outdir = path6.relative(process.cwd(), clientBuildDirectory);
|
|
2689
|
+
let outfile = path6.join(outdir, ...normalizedPath.split("/"));
|
|
2690
|
+
await fse.ensureDir(path6.dirname(outfile));
|
|
2685
2691
|
let manifestData = JSON.stringify(build.assets.routes);
|
|
2686
2692
|
await fse.outputFile(outfile, manifestData);
|
|
2687
2693
|
viteConfig.logger.info(`Prerender: Generated ${import_picocolors3.default.bold(outfile)}`);
|
|
2688
2694
|
}
|
|
2689
|
-
function validatePrerenderedResponse(response, html, prefix,
|
|
2695
|
+
function validatePrerenderedResponse(response, html, prefix, path7) {
|
|
2690
2696
|
if (response.status !== 200) {
|
|
2691
2697
|
throw new Error(
|
|
2692
|
-
`${prefix}: Received a ${response.status} status code from \`entry.server.tsx\` while prerendering the \`${
|
|
2698
|
+
`${prefix}: Received a ${response.status} status code from \`entry.server.tsx\` while prerendering the \`${path7}\` path.
|
|
2693
2699
|
${html}`
|
|
2694
2700
|
);
|
|
2695
2701
|
}
|