@c0va23/react-router-dev 7.9.6 → 7.13.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 +132 -0
- package/dist/cli/index.js +33 -22
- package/dist/config/default-rsc-entries/entry.rsc.tsx +33 -11
- package/dist/config/default-rsc-entries/entry.ssr.tsx +22 -15
- package/dist/config.d.ts +52 -5
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/vite/cloudflare.js +25 -14
- package/dist/vite.js +209 -132
- package/package.json +24 -13
- package/rsc-types.d.ts +21 -0
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v7.
|
|
2
|
+
* @react-router/dev v7.13.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -52,7 +52,6 @@ var import_promises2 = require("fs/promises");
|
|
|
52
52
|
var path6 = __toESM(require("path"));
|
|
53
53
|
var url = __toESM(require("url"));
|
|
54
54
|
var babel = __toESM(require("@babel/core"));
|
|
55
|
-
var import_node_fetch_server2 = require("@remix-run/node-fetch-server");
|
|
56
55
|
var import_react_router2 = require("react-router");
|
|
57
56
|
var import_es_module_lexer = require("es-module-lexer");
|
|
58
57
|
var import_pick3 = __toESM(require("lodash/pick"));
|
|
@@ -68,7 +67,6 @@ var import_picocolors2 = require("picocolors");
|
|
|
68
67
|
// config/config.ts
|
|
69
68
|
var import_node_fs = __toESM(require("fs"));
|
|
70
69
|
var import_node_child_process = require("child_process");
|
|
71
|
-
var import_package_json = __toESM(require("@npmcli/package-json"));
|
|
72
70
|
|
|
73
71
|
// vite/vite.ts
|
|
74
72
|
var import_pathe2 = __toESM(require("pathe"));
|
|
@@ -549,13 +547,26 @@ async function resolveConfig({
|
|
|
549
547
|
);
|
|
550
548
|
}
|
|
551
549
|
}
|
|
550
|
+
let futureConfig = userAndPresetConfigs.future;
|
|
551
|
+
if (futureConfig?.unstable_splitRouteModules !== void 0) {
|
|
552
|
+
return err(
|
|
553
|
+
'The "future.unstable_splitRouteModules" flag has been stabilized as "future.v8_splitRouteModules"'
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
if (futureConfig?.unstable_viteEnvironmentApi !== void 0) {
|
|
557
|
+
return err(
|
|
558
|
+
'The "future.unstable_viteEnvironmentApi" flag has been stabilized as "future.v8_viteEnvironmentApi"'
|
|
559
|
+
);
|
|
560
|
+
}
|
|
552
561
|
let future = {
|
|
553
|
-
v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
|
|
554
562
|
unstable_optimizeDeps: userAndPresetConfigs.future?.unstable_optimizeDeps ?? false,
|
|
555
|
-
unstable_splitRouteModules: userAndPresetConfigs.future?.unstable_splitRouteModules ?? false,
|
|
556
563
|
unstable_subResourceIntegrity: userAndPresetConfigs.future?.unstable_subResourceIntegrity ?? false,
|
|
557
|
-
|
|
564
|
+
unstable_trailingSlashAwareDataRequests: userAndPresetConfigs.future?.unstable_trailingSlashAwareDataRequests ?? false,
|
|
565
|
+
v8_middleware: userAndPresetConfigs.future?.v8_middleware ?? false,
|
|
566
|
+
v8_splitRouteModules: userAndPresetConfigs.future?.v8_splitRouteModules ?? false,
|
|
567
|
+
v8_viteEnvironmentApi: userAndPresetConfigs.future?.v8_viteEnvironmentApi ?? false
|
|
558
568
|
};
|
|
569
|
+
let allowedActionOrigins = userAndPresetConfigs.allowedActionOrigins ?? false;
|
|
559
570
|
let reactRouterConfig = deepFreeze({
|
|
560
571
|
appDirectory,
|
|
561
572
|
basename: basename3,
|
|
@@ -569,6 +580,7 @@ async function resolveConfig({
|
|
|
569
580
|
serverBundles,
|
|
570
581
|
serverModuleFormat,
|
|
571
582
|
ssr,
|
|
583
|
+
allowedActionOrigins,
|
|
572
584
|
unstable_routeConfig: routeConfig
|
|
573
585
|
});
|
|
574
586
|
for (let preset of reactRouterUserConfig.presets ?? []) {
|
|
@@ -629,11 +641,11 @@ async function createConfigLoader({
|
|
|
629
641
|
fsWatcher = import_chokidar.default.watch([root, appDirectory], {
|
|
630
642
|
ignoreInitial: true,
|
|
631
643
|
ignored: (path9) => {
|
|
632
|
-
let
|
|
633
|
-
return !
|
|
644
|
+
let dirname4 = import_pathe3.default.dirname(path9);
|
|
645
|
+
return !dirname4.startsWith(appDirectory) && // Ensure we're only watching files outside of the app directory
|
|
634
646
|
// that are at the root level, not nested in subdirectories
|
|
635
647
|
path9 !== root && // Watch the root directory itself
|
|
636
|
-
|
|
648
|
+
dirname4 !== root;
|
|
637
649
|
}
|
|
638
650
|
});
|
|
639
651
|
fsWatcher.on("all", async (...args) => {
|
|
@@ -735,9 +747,10 @@ async function resolveEntryFiles({
|
|
|
735
747
|
`Could not find package.json in ${rootDirectory} or any of its parent directories. Please add a package.json, or provide a custom entry.server.tsx/jsx file in your app directory.`
|
|
736
748
|
);
|
|
737
749
|
}
|
|
750
|
+
let { readPackageJSON, sortPackage, updatePackage } = await import("pkg-types");
|
|
738
751
|
let packageJsonDirectory = import_pathe3.default.dirname(packageJsonPath);
|
|
739
|
-
let pkgJson = await
|
|
740
|
-
let deps = pkgJson.
|
|
752
|
+
let pkgJson = await readPackageJSON(packageJsonDirectory);
|
|
753
|
+
let deps = pkgJson.dependencies ?? {};
|
|
741
754
|
if (!deps["@react-router/node"]) {
|
|
742
755
|
throw new Error(
|
|
743
756
|
`Could not determine server runtime. Please install @react-router/node, or provide a custom entry.server.tsx/jsx file in your app directory.`
|
|
@@ -747,13 +760,11 @@ async function resolveEntryFiles({
|
|
|
747
760
|
console.log(
|
|
748
761
|
"adding `isbot@5` to your package.json, you should commit this change"
|
|
749
762
|
);
|
|
750
|
-
|
|
751
|
-
dependencies
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
}
|
|
763
|
+
await updatePackage(packageJsonPath, (pkg) => {
|
|
764
|
+
pkg.dependencies ??= {};
|
|
765
|
+
pkg.dependencies.isbot = "^5";
|
|
766
|
+
sortPackage(pkg);
|
|
755
767
|
});
|
|
756
|
-
await pkgJson.save();
|
|
757
768
|
let packageManager = detectPackageManager() ?? "npm";
|
|
758
769
|
(0, import_node_child_process.execSync)(`${packageManager} install`, {
|
|
759
770
|
cwd: packageJsonDirectory,
|
|
@@ -766,6 +777,30 @@ async function resolveEntryFiles({
|
|
|
766
777
|
let entryServerFilePath = userEntryServerFile ? import_pathe3.default.resolve(reactRouterConfig.appDirectory, userEntryServerFile) : import_pathe3.default.resolve(defaultsDirectory, entryServerFile);
|
|
767
778
|
return { entryClientFilePath, entryServerFilePath };
|
|
768
779
|
}
|
|
780
|
+
async function resolveRSCEntryFiles({
|
|
781
|
+
reactRouterConfig
|
|
782
|
+
}) {
|
|
783
|
+
let { appDirectory } = reactRouterConfig;
|
|
784
|
+
let defaultsDirectory = import_pathe3.default.resolve(
|
|
785
|
+
import_pathe3.default.dirname(require.resolve("@react-router/dev/package.json")),
|
|
786
|
+
"dist",
|
|
787
|
+
"config",
|
|
788
|
+
"default-rsc-entries"
|
|
789
|
+
);
|
|
790
|
+
let userEntryClientFile = findEntry(appDirectory, "entry.client", {
|
|
791
|
+
absolute: true
|
|
792
|
+
});
|
|
793
|
+
let userEntryRSCFile = findEntry(appDirectory, "entry.rsc", {
|
|
794
|
+
absolute: true
|
|
795
|
+
});
|
|
796
|
+
let userEntrySSRFile = findEntry(appDirectory, "entry.ssr", {
|
|
797
|
+
absolute: true
|
|
798
|
+
});
|
|
799
|
+
let client = userEntryClientFile ?? import_pathe3.default.join(defaultsDirectory, "entry.client.tsx");
|
|
800
|
+
let rsc = userEntryRSCFile ?? import_pathe3.default.join(defaultsDirectory, "entry.rsc.tsx");
|
|
801
|
+
let ssr = userEntrySSRFile ?? import_pathe3.default.join(defaultsDirectory, "entry.ssr.tsx");
|
|
802
|
+
return { client, rsc, ssr };
|
|
803
|
+
}
|
|
769
804
|
function omitRoutes(config) {
|
|
770
805
|
return {
|
|
771
806
|
...config,
|
|
@@ -933,6 +968,7 @@ function generateServerBuild(ctx) {
|
|
|
933
968
|
export const routeDiscovery: ServerBuild["routeDiscovery"];
|
|
934
969
|
export const routes: ServerBuild["routes"];
|
|
935
970
|
export const ssr: ServerBuild["ssr"];
|
|
971
|
+
export const allowedActionOrigins: ServerBuild["allowedActionOrigins"];
|
|
936
972
|
export const unstable_getCriticalCss: ServerBuild["unstable_getCriticalCss"];
|
|
937
973
|
}
|
|
938
974
|
`;
|
|
@@ -1288,14 +1324,14 @@ async function watch(rootDirectory, { mode, logger, rsc }) {
|
|
|
1288
1324
|
}
|
|
1289
1325
|
|
|
1290
1326
|
// vite/node-adapter.ts
|
|
1291
|
-
|
|
1292
|
-
function fromNodeRequest(nodeReq, nodeRes) {
|
|
1327
|
+
async function fromNodeRequest(nodeReq, nodeRes) {
|
|
1293
1328
|
invariant(
|
|
1294
1329
|
nodeReq.originalUrl,
|
|
1295
1330
|
"Expected `nodeReq.originalUrl` to be defined"
|
|
1296
1331
|
);
|
|
1297
1332
|
nodeReq.url = nodeReq.originalUrl;
|
|
1298
|
-
|
|
1333
|
+
const { createRequest } = await import("@remix-run/node-fetch-server");
|
|
1334
|
+
return createRequest(nodeReq, nodeRes);
|
|
1299
1335
|
}
|
|
1300
1336
|
|
|
1301
1337
|
// vite/styles.ts
|
|
@@ -2737,7 +2773,7 @@ var getServerBundleRouteIds = (vitePluginContext, ctx) => {
|
|
|
2737
2773
|
if (!ctx.buildManifest) {
|
|
2738
2774
|
return void 0;
|
|
2739
2775
|
}
|
|
2740
|
-
let environmentName = ctx.reactRouterConfig.future.
|
|
2776
|
+
let environmentName = ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? vitePluginContext.environment.name : ctx.environmentBuildContext?.name;
|
|
2741
2777
|
if (!environmentName || !isSsrBundleEnvironmentName(environmentName)) {
|
|
2742
2778
|
return void 0;
|
|
2743
2779
|
}
|
|
@@ -2787,7 +2823,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2787
2823
|
}
|
|
2788
2824
|
return;
|
|
2789
2825
|
}
|
|
2790
|
-
let injectedPluginContext = !reactRouterConfig.future.
|
|
2826
|
+
let injectedPluginContext = !reactRouterConfig.future.v8_viteEnvironmentApi && viteCommand === "build" ? extractPluginContext(viteUserConfig) : void 0;
|
|
2791
2827
|
let { entryClientFilePath, entryServerFilePath } = await resolveEntryFiles({
|
|
2792
2828
|
rootDirectory,
|
|
2793
2829
|
reactRouterConfig
|
|
@@ -2881,14 +2917,16 @@ var reactRouterVitePlugin = () => {
|
|
|
2881
2917
|
}`;
|
|
2882
2918
|
}).join(",\n ")}
|
|
2883
2919
|
};
|
|
2884
|
-
${ctx.reactRouterConfig.future.
|
|
2920
|
+
${ctx.reactRouterConfig.future.v8_viteEnvironmentApi && viteCommand === "serve" ? `
|
|
2885
2921
|
export const unstable_getCriticalCss = ({ pathname }) => {
|
|
2886
2922
|
return {
|
|
2887
2923
|
rel: "stylesheet",
|
|
2888
2924
|
href: "${ctx.publicPath}@react-router/critical.css?pathname=" + pathname,
|
|
2889
2925
|
};
|
|
2890
2926
|
}
|
|
2891
|
-
` : ""}
|
|
2927
|
+
` : ""}
|
|
2928
|
+
export const allowedActionOrigins = ${JSON.stringify(ctx.reactRouterConfig.allowedActionOrigins)};
|
|
2929
|
+
`;
|
|
2892
2930
|
};
|
|
2893
2931
|
let loadViteManifest = async (directory) => {
|
|
2894
2932
|
let manifestContents = await (0, import_promises2.readFile)(
|
|
@@ -2959,7 +2997,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2959
2997
|
viteChildCompiler,
|
|
2960
2998
|
ctx
|
|
2961
2999
|
);
|
|
2962
|
-
let enforceSplitRouteModules = ctx.reactRouterConfig.future.
|
|
3000
|
+
let enforceSplitRouteModules = ctx.reactRouterConfig.future.v8_splitRouteModules === "enforce";
|
|
2963
3001
|
for (let route of Object.values(ctx.reactRouterConfig.routes)) {
|
|
2964
3002
|
let routeFile = path6.join(ctx.reactRouterConfig.appDirectory, route.file);
|
|
2965
3003
|
let sourceExports = routeManifestExports[route.id];
|
|
@@ -3071,7 +3109,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3071
3109
|
viteChildCompiler,
|
|
3072
3110
|
ctx
|
|
3073
3111
|
);
|
|
3074
|
-
let enforceSplitRouteModules = ctx.reactRouterConfig.future.
|
|
3112
|
+
let enforceSplitRouteModules = ctx.reactRouterConfig.future.v8_splitRouteModules === "enforce";
|
|
3075
3113
|
for (let [key, route] of Object.entries(ctx.reactRouterConfig.routes)) {
|
|
3076
3114
|
let routeFile = route.file;
|
|
3077
3115
|
let sourceExports = routeManifestExports[key];
|
|
@@ -3190,17 +3228,17 @@ var reactRouterVitePlugin = () => {
|
|
|
3190
3228
|
logger: vite2.createLogger("warn", { prefix: "[react-router]" })
|
|
3191
3229
|
});
|
|
3192
3230
|
}
|
|
3231
|
+
await loadDotenv({
|
|
3232
|
+
rootDirectory,
|
|
3233
|
+
viteUserConfig,
|
|
3234
|
+
mode
|
|
3235
|
+
});
|
|
3193
3236
|
reactRouterConfigLoader = await createConfigLoader({
|
|
3194
3237
|
rootDirectory,
|
|
3195
3238
|
mode,
|
|
3196
3239
|
watch: viteCommand === "serve"
|
|
3197
3240
|
});
|
|
3198
3241
|
await updatePluginContext();
|
|
3199
|
-
await loadDotenv({
|
|
3200
|
-
rootDirectory,
|
|
3201
|
-
viteUserConfig,
|
|
3202
|
-
mode
|
|
3203
|
-
});
|
|
3204
3242
|
let environments = await getEnvironmentsOptions(ctx, viteCommand, {
|
|
3205
3243
|
viteUserConfig
|
|
3206
3244
|
});
|
|
@@ -3266,7 +3304,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3266
3304
|
// will throw an error that the file is not allowed to be read.
|
|
3267
3305
|
// https://vitejs.dev/config/server-options#server-fs-allow
|
|
3268
3306
|
server: viteUserConfig.server?.fs?.allow ? { fs: { allow: defaultEntries } } : void 0,
|
|
3269
|
-
...ctx.reactRouterConfig.future.
|
|
3307
|
+
...ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? {
|
|
3270
3308
|
environments,
|
|
3271
3309
|
build: {
|
|
3272
3310
|
// This isn't honored by the SSR environment config (which seems
|
|
@@ -3305,7 +3343,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3305
3343
|
};
|
|
3306
3344
|
},
|
|
3307
3345
|
configEnvironment(name, options) {
|
|
3308
|
-
if (ctx.reactRouterConfig.future.
|
|
3346
|
+
if (ctx.reactRouterConfig.future.v8_viteEnvironmentApi && (ctx.buildManifest?.serverBundles ? isSsrBundleEnvironmentName(name) : name === "ssr")) {
|
|
3309
3347
|
const vite2 = getVite();
|
|
3310
3348
|
return {
|
|
3311
3349
|
resolve: {
|
|
@@ -3441,7 +3479,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3441
3479
|
}
|
|
3442
3480
|
}
|
|
3443
3481
|
);
|
|
3444
|
-
if (ctx.reactRouterConfig.future.
|
|
3482
|
+
if (ctx.reactRouterConfig.future.v8_viteEnvironmentApi) {
|
|
3445
3483
|
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
3446
3484
|
let [reqPathname, reqSearch] = (req.url ?? "").split("?");
|
|
3447
3485
|
if (reqPathname.endsWith("/@react-router/critical.css")) {
|
|
@@ -3469,7 +3507,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3469
3507
|
viteDevServer.middlewares.use(async (req, res, next) => {
|
|
3470
3508
|
try {
|
|
3471
3509
|
let build;
|
|
3472
|
-
if (ctx.reactRouterConfig.future.
|
|
3510
|
+
if (ctx.reactRouterConfig.future.v8_viteEnvironmentApi) {
|
|
3473
3511
|
let vite2 = getVite();
|
|
3474
3512
|
let ssrEnvironment = viteDevServer.environments.ssr;
|
|
3475
3513
|
if (!vite2.isRunnableDevEnvironment(ssrEnvironment)) {
|
|
@@ -3486,12 +3524,13 @@ var reactRouterVitePlugin = () => {
|
|
|
3486
3524
|
}
|
|
3487
3525
|
let handler = (0, import_react_router2.createRequestHandler)(build, "development");
|
|
3488
3526
|
let nodeHandler = async (nodeReq, nodeRes) => {
|
|
3489
|
-
let req2 = fromNodeRequest(nodeReq, nodeRes);
|
|
3527
|
+
let req2 = await fromNodeRequest(nodeReq, nodeRes);
|
|
3490
3528
|
let res2 = await handler(
|
|
3491
3529
|
req2,
|
|
3492
3530
|
await reactRouterDevLoadContext(req2)
|
|
3493
3531
|
);
|
|
3494
|
-
|
|
3532
|
+
const { sendResponse } = await import("@remix-run/node-fetch-server");
|
|
3533
|
+
await sendResponse(nodeRes, res2);
|
|
3495
3534
|
};
|
|
3496
3535
|
await nodeHandler(req, res);
|
|
3497
3536
|
} catch (error) {
|
|
@@ -3501,22 +3540,54 @@ var reactRouterVitePlugin = () => {
|
|
|
3501
3540
|
}
|
|
3502
3541
|
};
|
|
3503
3542
|
},
|
|
3543
|
+
configurePreviewServer(previewServer) {
|
|
3544
|
+
return () => {
|
|
3545
|
+
if (!ctx.reactRouterConfig.ssr) {
|
|
3546
|
+
return;
|
|
3547
|
+
}
|
|
3548
|
+
previewServer.middlewares.use(async (req, res, next) => {
|
|
3549
|
+
try {
|
|
3550
|
+
let serverBuildDirectory = getServerBuildDirectory(
|
|
3551
|
+
ctx.reactRouterConfig
|
|
3552
|
+
);
|
|
3553
|
+
let serverBuildFile = path6.resolve(
|
|
3554
|
+
serverBuildDirectory,
|
|
3555
|
+
"index.js"
|
|
3556
|
+
);
|
|
3557
|
+
let build = await import(url.pathToFileURL(serverBuildFile).href);
|
|
3558
|
+
let handler = (0, import_react_router2.createRequestHandler)(build, "production");
|
|
3559
|
+
let nodeHandler = async (nodeReq, nodeRes) => {
|
|
3560
|
+
let req2 = await fromNodeRequest(nodeReq, nodeRes);
|
|
3561
|
+
let res2 = await handler(
|
|
3562
|
+
req2,
|
|
3563
|
+
await reactRouterDevLoadContext(req2)
|
|
3564
|
+
);
|
|
3565
|
+
const { sendResponse } = await import("@remix-run/node-fetch-server");
|
|
3566
|
+
await sendResponse(nodeRes, res2);
|
|
3567
|
+
};
|
|
3568
|
+
await nodeHandler(req, res);
|
|
3569
|
+
} catch (error) {
|
|
3570
|
+
next(error);
|
|
3571
|
+
}
|
|
3572
|
+
});
|
|
3573
|
+
};
|
|
3574
|
+
},
|
|
3504
3575
|
writeBundle: {
|
|
3505
3576
|
// After the SSR build is finished, we inspect the Vite manifest for
|
|
3506
3577
|
// the SSR build and move server-only assets to client assets directory
|
|
3507
3578
|
async handler() {
|
|
3508
3579
|
let { future } = ctx.reactRouterConfig;
|
|
3509
|
-
if (future.
|
|
3580
|
+
if (future.v8_viteEnvironmentApi ? this.environment.name === "client" : !viteConfigEnv.isSsrBuild) {
|
|
3510
3581
|
return;
|
|
3511
3582
|
}
|
|
3512
3583
|
invariant(viteConfig);
|
|
3513
3584
|
let clientBuildDirectory = getClientBuildDirectory(
|
|
3514
3585
|
ctx.reactRouterConfig
|
|
3515
3586
|
);
|
|
3516
|
-
let serverBuildDirectory = future.
|
|
3587
|
+
let serverBuildDirectory = future.v8_viteEnvironmentApi ? this.environment.config?.build?.outDir : ctx.environmentBuildContext?.options.build?.outDir ?? getServerBuildDirectory(ctx.reactRouterConfig);
|
|
3517
3588
|
let ssrViteManifest = await loadViteManifest(serverBuildDirectory);
|
|
3518
3589
|
let ssrAssetPaths = getViteManifestAssetPaths(ssrViteManifest);
|
|
3519
|
-
let userSsrEmitAssets = (ctx.reactRouterConfig.future.
|
|
3590
|
+
let userSsrEmitAssets = (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.ssrEmitAssets ?? viteUserConfig.environments?.ssr?.build?.emitAssets : null) ?? viteUserConfig.build?.ssrEmitAssets ?? false;
|
|
3520
3591
|
let movedAssetPaths = [];
|
|
3521
3592
|
let removedAssetPaths = [];
|
|
3522
3593
|
let copiedAssetPaths = [];
|
|
@@ -3730,7 +3801,7 @@ var reactRouterVitePlugin = () => {
|
|
|
3730
3801
|
reason: "Split round modules disabled"
|
|
3731
3802
|
});
|
|
3732
3803
|
}
|
|
3733
|
-
let enforceSplitRouteModules = ctx.reactRouterConfig.future.
|
|
3804
|
+
let enforceSplitRouteModules = ctx.reactRouterConfig.future.v8_splitRouteModules === "enforce";
|
|
3734
3805
|
if (enforceSplitRouteModules && chunkName === "main" && chunk) {
|
|
3735
3806
|
let exportNames = getExportNames(chunk.code);
|
|
3736
3807
|
validateRouteChunks({
|
|
@@ -4038,10 +4109,8 @@ var reactRouterVitePlugin = () => {
|
|
|
4038
4109
|
if (this.environment.name !== "ssr" && modules.length <= 0) {
|
|
4039
4110
|
return;
|
|
4040
4111
|
}
|
|
4041
|
-
let clientModules =
|
|
4042
|
-
|
|
4043
|
-
(mod) => getParentClientNodes(server.environments.client.moduleGraph, mod)
|
|
4044
|
-
)
|
|
4112
|
+
let clientModules = modules.flatMap(
|
|
4113
|
+
(mod) => getParentClientNodes(server.environments.client.moduleGraph, mod)
|
|
4045
4114
|
);
|
|
4046
4115
|
for (let clientModule of clientModules) {
|
|
4047
4116
|
server.environments.client.reloadModule(clientModule);
|
|
@@ -4052,30 +4121,22 @@ var reactRouterVitePlugin = () => {
|
|
|
4052
4121
|
warnOnClientSourceMaps()
|
|
4053
4122
|
];
|
|
4054
4123
|
};
|
|
4055
|
-
function getParentClientNodes(clientModuleGraph, module2) {
|
|
4124
|
+
function getParentClientNodes(clientModuleGraph, module2, seenNodes = /* @__PURE__ */ new Set()) {
|
|
4056
4125
|
if (!module2.id) {
|
|
4057
4126
|
return [];
|
|
4058
4127
|
}
|
|
4128
|
+
if (seenNodes.has(module2.url)) {
|
|
4129
|
+
return [];
|
|
4130
|
+
}
|
|
4131
|
+
seenNodes.add(module2.url);
|
|
4059
4132
|
let clientModule = clientModuleGraph.getModuleById(module2.id);
|
|
4060
4133
|
if (clientModule) {
|
|
4061
4134
|
return [clientModule];
|
|
4062
4135
|
}
|
|
4063
4136
|
return [...module2.importers].flatMap(
|
|
4064
|
-
(importer) => getParentClientNodes(clientModuleGraph, importer)
|
|
4137
|
+
(importer) => getParentClientNodes(clientModuleGraph, importer, seenNodes)
|
|
4065
4138
|
);
|
|
4066
4139
|
}
|
|
4067
|
-
function uniqueNodes(nodes) {
|
|
4068
|
-
let nodeUrls = /* @__PURE__ */ new Set();
|
|
4069
|
-
let unique = [];
|
|
4070
|
-
for (let node of nodes) {
|
|
4071
|
-
if (nodeUrls.has(node.url)) {
|
|
4072
|
-
continue;
|
|
4073
|
-
}
|
|
4074
|
-
nodeUrls.add(node.url);
|
|
4075
|
-
unique.push(node);
|
|
4076
|
-
}
|
|
4077
|
-
return unique;
|
|
4078
|
-
}
|
|
4079
4140
|
function addRefreshWrapper(reactRouterConfig, code, id) {
|
|
4080
4141
|
let route = getRoute(reactRouterConfig, id);
|
|
4081
4142
|
let acceptExports = route ? CLIENT_NON_COMPONENT_EXPORTS : [];
|
|
@@ -4350,7 +4411,21 @@ function getStaticPrerenderPaths(routes) {
|
|
|
4350
4411
|
};
|
|
4351
4412
|
}
|
|
4352
4413
|
async function prerenderData(handler, prerenderPath, onlyRoutes, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit) {
|
|
4353
|
-
let
|
|
4414
|
+
let dataRequestPath;
|
|
4415
|
+
if (reactRouterConfig.future.unstable_trailingSlashAwareDataRequests) {
|
|
4416
|
+
if (prerenderPath.endsWith("/")) {
|
|
4417
|
+
dataRequestPath = `${prerenderPath}_.data`;
|
|
4418
|
+
} else {
|
|
4419
|
+
dataRequestPath = `${prerenderPath}.data`;
|
|
4420
|
+
}
|
|
4421
|
+
} else {
|
|
4422
|
+
if (prerenderPath === "/") {
|
|
4423
|
+
dataRequestPath = "/_root.data";
|
|
4424
|
+
} else {
|
|
4425
|
+
dataRequestPath = `${prerenderPath.replace(/\/$/, "")}.data`;
|
|
4426
|
+
}
|
|
4427
|
+
}
|
|
4428
|
+
let normalizedPath = `${reactRouterConfig.basename}${dataRequestPath}`.replace(/\/\/+/g, "/");
|
|
4354
4429
|
let url2 = new URL(`http://localhost${normalizedPath}`);
|
|
4355
4430
|
if (onlyRoutes?.length) {
|
|
4356
4431
|
url2.searchParams.set("_routes", onlyRoutes.join(","));
|
|
@@ -4642,7 +4717,7 @@ async function detectRouteChunksIfEnabled(cache, ctx, id, input) {
|
|
|
4642
4717
|
}
|
|
4643
4718
|
};
|
|
4644
4719
|
}
|
|
4645
|
-
if (!ctx.reactRouterConfig.future.
|
|
4720
|
+
if (!ctx.reactRouterConfig.future.v8_splitRouteModules) {
|
|
4646
4721
|
return noRouteChunks();
|
|
4647
4722
|
}
|
|
4648
4723
|
if (isRootRouteModuleId(ctx, id)) {
|
|
@@ -4656,7 +4731,7 @@ async function detectRouteChunksIfEnabled(cache, ctx, id, input) {
|
|
|
4656
4731
|
return detectRouteChunks(code, cache, cacheKey);
|
|
4657
4732
|
}
|
|
4658
4733
|
async function getRouteChunkIfEnabled(cache, ctx, id, chunkName, input) {
|
|
4659
|
-
if (!ctx.reactRouterConfig.future.
|
|
4734
|
+
if (!ctx.reactRouterConfig.future.v8_splitRouteModules) {
|
|
4660
4735
|
return null;
|
|
4661
4736
|
}
|
|
4662
4737
|
let code = await resolveRouteFileCode(ctx, input);
|
|
@@ -4760,7 +4835,7 @@ async function getBuildManifest({
|
|
|
4760
4835
|
if (typeof serverBundleId !== "string") {
|
|
4761
4836
|
throw new Error(`The "serverBundles" function must return a string`);
|
|
4762
4837
|
}
|
|
4763
|
-
if (reactRouterConfig.future.
|
|
4838
|
+
if (reactRouterConfig.future.v8_viteEnvironmentApi) {
|
|
4764
4839
|
if (!/^[a-zA-Z0-9_]+$/.test(serverBundleId)) {
|
|
4765
4840
|
throw new Error(
|
|
4766
4841
|
`The "serverBundles" function must only return strings containing alphanumeric characters and underscores.`
|
|
@@ -4848,8 +4923,8 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
4848
4923
|
return mergeEnvironmentOptions(getBaseOptions({ viteUserConfig }), {
|
|
4849
4924
|
resolve: {
|
|
4850
4925
|
external: (
|
|
4851
|
-
// If `
|
|
4852
|
-
ctx.reactRouterConfig.future.
|
|
4926
|
+
// If `v8_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
|
|
4927
|
+
ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? void 0 : ssrExternals
|
|
4853
4928
|
),
|
|
4854
4929
|
conditions: [...baseConditions, ...maybeDefaultServerConditions],
|
|
4855
4930
|
externalConditions: [...baseConditions, ...defaultExternalConditions]
|
|
@@ -4864,7 +4939,7 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
4864
4939
|
copyPublicDir: false,
|
|
4865
4940
|
// The client only uses assets in the public directory
|
|
4866
4941
|
rollupOptions: {
|
|
4867
|
-
input: (ctx.reactRouterConfig.future.
|
|
4942
|
+
input: (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig.environments?.ssr?.build?.rollupOptions?.input : viteUserConfig.build?.rollupOptions?.input) ?? virtual.serverBuild.id,
|
|
4868
4943
|
output: {
|
|
4869
4944
|
entryFileNames: serverBuildFile,
|
|
4870
4945
|
format: serverModuleFormat
|
|
@@ -4889,14 +4964,14 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
4889
4964
|
let code = (0, import_node_fs2.readFileSync)(routeFilePath, "utf-8");
|
|
4890
4965
|
return [
|
|
4891
4966
|
`${routeFilePath}${BUILD_CLIENT_ROUTE_QUERY_STRING}`,
|
|
4892
|
-
...ctx.reactRouterConfig.future.
|
|
4967
|
+
...ctx.reactRouterConfig.future.v8_splitRouteModules && !isRootRoute ? routeChunkExportNames.map(
|
|
4893
4968
|
(exportName) => code.includes(exportName) ? getRouteChunkModuleId(routeFilePath, exportName) : null
|
|
4894
4969
|
) : []
|
|
4895
4970
|
].filter(isNonNullable);
|
|
4896
4971
|
}
|
|
4897
4972
|
)
|
|
4898
4973
|
],
|
|
4899
|
-
output: (ctx.reactRouterConfig.future.
|
|
4974
|
+
output: (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.rollupOptions?.output : viteUserConfig?.build?.rollupOptions?.output) ?? {
|
|
4900
4975
|
entryFileNames: ({ moduleIds }) => {
|
|
4901
4976
|
let routeChunkModuleId = moduleIds.find(isRouteChunkModuleId);
|
|
4902
4977
|
let routeChunkName = routeChunkModuleId ? getRouteChunkNameFromModuleId(routeChunkModuleId)?.replace(
|
|
@@ -4904,7 +4979,7 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
4904
4979
|
""
|
|
4905
4980
|
) : null;
|
|
4906
4981
|
let routeChunkSuffix = routeChunkName ? `-${(0, import_kebabCase.default)(routeChunkName)}` : "";
|
|
4907
|
-
let assetsDir = (ctx.reactRouterConfig.future.
|
|
4982
|
+
let assetsDir = (ctx.reactRouterConfig.future.v8_viteEnvironmentApi ? viteUserConfig?.environments?.client?.build?.assetsDir : null) ?? viteUserConfig?.build?.assetsDir ?? "assets";
|
|
4908
4983
|
return path6.posix.join(
|
|
4909
4984
|
assetsDir,
|
|
4910
4985
|
`[name]${routeChunkSuffix}-[hash].js`
|
|
@@ -4977,7 +5052,6 @@ var import_es_module_lexer3 = require("es-module-lexer");
|
|
|
4977
5052
|
var Path5 = __toESM(require("pathe"));
|
|
4978
5053
|
var babel2 = __toESM(require("@babel/core"));
|
|
4979
5054
|
var import_picocolors5 = __toESM(require("picocolors"));
|
|
4980
|
-
var import_fs = require("fs");
|
|
4981
5055
|
var import_promises3 = require("fs/promises");
|
|
4982
5056
|
var import_pathe6 = __toESM(require("pathe"));
|
|
4983
5057
|
|
|
@@ -5312,13 +5386,16 @@ function isRootRouteFile({
|
|
|
5312
5386
|
|
|
5313
5387
|
// vite/rsc/plugin.ts
|
|
5314
5388
|
function reactRouterRSCVitePlugin() {
|
|
5389
|
+
let runningWithinTheReactRouterMonoRepo = Boolean(
|
|
5390
|
+
arguments && arguments.length === 1 && typeof arguments[0] === "object" && arguments[0] && "__runningWithinTheReactRouterMonoRepo" in arguments[0] && arguments[0].__runningWithinTheReactRouterMonoRepo === true
|
|
5391
|
+
);
|
|
5315
5392
|
let configLoader;
|
|
5316
5393
|
let typegenWatcherPromise;
|
|
5317
5394
|
let viteCommand;
|
|
5318
5395
|
let resolvedViteConfig;
|
|
5319
5396
|
let routeIdByFile;
|
|
5320
5397
|
let logger;
|
|
5321
|
-
|
|
5398
|
+
let entries;
|
|
5322
5399
|
let config;
|
|
5323
5400
|
let rootRouteFile;
|
|
5324
5401
|
function updateConfig(newConfig) {
|
|
@@ -5337,6 +5414,11 @@ function reactRouterRSCVitePlugin() {
|
|
|
5337
5414
|
viteCommand = command;
|
|
5338
5415
|
const rootDirectory = getRootDirectory(viteUserConfig);
|
|
5339
5416
|
const watch2 = command === "serve";
|
|
5417
|
+
await loadDotenv({
|
|
5418
|
+
rootDirectory,
|
|
5419
|
+
viteUserConfig,
|
|
5420
|
+
mode
|
|
5421
|
+
});
|
|
5340
5422
|
configLoader = await createConfigLoader({
|
|
5341
5423
|
rootDirectory,
|
|
5342
5424
|
mode,
|
|
@@ -5349,12 +5431,12 @@ function reactRouterRSCVitePlugin() {
|
|
|
5349
5431
|
if (userConfig.routeDiscovery) errors.push("routeDiscovery");
|
|
5350
5432
|
if (userConfig.serverBundles) errors.push("serverBundles");
|
|
5351
5433
|
if (userConfig.ssr === false) errors.push("ssr: false");
|
|
5352
|
-
if (userConfig.future?.unstable_splitRouteModules)
|
|
5353
|
-
errors.push("future.unstable_splitRouteModules");
|
|
5354
|
-
if (userConfig.future?.unstable_viteEnvironmentApi === false)
|
|
5355
|
-
errors.push("future.unstable_viteEnvironmentApi: false");
|
|
5356
5434
|
if (userConfig.future?.v8_middleware === false)
|
|
5357
5435
|
errors.push("future.v8_middleware: false");
|
|
5436
|
+
if (userConfig.future?.v8_splitRouteModules)
|
|
5437
|
+
errors.push("future.v8_splitRouteModules");
|
|
5438
|
+
if (userConfig.future?.v8_viteEnvironmentApi === false)
|
|
5439
|
+
errors.push("future.v8_viteEnvironmentApi: false");
|
|
5358
5440
|
if (userConfig.future?.unstable_subResourceIntegrity)
|
|
5359
5441
|
errors.push("future.unstable_subResourceIntegrity");
|
|
5360
5442
|
if (errors.length) {
|
|
@@ -5372,31 +5454,38 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5372
5454
|
"When using the React Router `basename` and the Vite `base` config, the `basename` config must begin with `base` for the default Vite dev server."
|
|
5373
5455
|
);
|
|
5374
5456
|
}
|
|
5375
|
-
await loadDotenv({
|
|
5376
|
-
rootDirectory,
|
|
5377
|
-
viteUserConfig,
|
|
5378
|
-
mode
|
|
5379
|
-
});
|
|
5380
5457
|
const vite2 = await import("vite");
|
|
5381
5458
|
logger = vite2.createLogger(viteUserConfig.logLevel, {
|
|
5382
5459
|
prefix: "[react-router]"
|
|
5383
5460
|
});
|
|
5461
|
+
entries = await resolveRSCEntryFiles({
|
|
5462
|
+
reactRouterConfig: config
|
|
5463
|
+
});
|
|
5464
|
+
let viteNormalizePath = (await import("vite")).normalizePath;
|
|
5384
5465
|
return {
|
|
5385
5466
|
resolve: {
|
|
5386
5467
|
dedupe: [
|
|
5387
5468
|
// https://react.dev/warnings/invalid-hook-call-warning#duplicate-react
|
|
5388
5469
|
"react",
|
|
5470
|
+
"react/jsx-runtime",
|
|
5471
|
+
"react/jsx-dev-runtime",
|
|
5389
5472
|
"react-dom",
|
|
5473
|
+
"react-dom/client",
|
|
5390
5474
|
// Avoid router duplicates since mismatching routers cause `Error:
|
|
5391
5475
|
// You must render this element inside a <Remix> element`.
|
|
5392
5476
|
"react-router",
|
|
5393
5477
|
"react-router/dom",
|
|
5394
|
-
|
|
5478
|
+
"react-router/internal/react-server-client",
|
|
5479
|
+
...hasDependency({ name: "react-router-dom", rootDirectory }) ? ["react-router-dom"] : [],
|
|
5480
|
+
...hasDependency({
|
|
5481
|
+
name: "react-server-dom-webpack",
|
|
5482
|
+
rootDirectory
|
|
5483
|
+
}) ? ["react-server-dom-webpack"] : []
|
|
5395
5484
|
]
|
|
5396
5485
|
},
|
|
5397
5486
|
optimizeDeps: {
|
|
5398
5487
|
entries: getOptimizeDepsEntries({
|
|
5399
|
-
entryClientFilePath:
|
|
5488
|
+
entryClientFilePath: entries.client,
|
|
5400
5489
|
reactRouterConfig: config
|
|
5401
5490
|
}),
|
|
5402
5491
|
esbuildOptions: {
|
|
@@ -5410,8 +5499,17 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5410
5499
|
"react/jsx-runtime",
|
|
5411
5500
|
"react/jsx-dev-runtime",
|
|
5412
5501
|
"react-dom",
|
|
5413
|
-
|
|
5414
|
-
|
|
5502
|
+
...hasDependency({
|
|
5503
|
+
name: "react-server-dom-webpack",
|
|
5504
|
+
rootDirectory
|
|
5505
|
+
}) ? ["react-server-dom-webpack"] : [],
|
|
5506
|
+
...runningWithinTheReactRouterMonoRepo ? [] : [
|
|
5507
|
+
"react-router",
|
|
5508
|
+
"react-router/dom",
|
|
5509
|
+
"react-router/internal/react-server-client"
|
|
5510
|
+
],
|
|
5511
|
+
"react-router > cookie",
|
|
5512
|
+
"react-router > set-cookie-parser"
|
|
5415
5513
|
]
|
|
5416
5514
|
},
|
|
5417
5515
|
esbuild: {
|
|
@@ -5423,27 +5521,30 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5423
5521
|
build: {
|
|
5424
5522
|
rollupOptions: {
|
|
5425
5523
|
input: {
|
|
5426
|
-
index:
|
|
5524
|
+
index: entries.client
|
|
5525
|
+
},
|
|
5526
|
+
output: {
|
|
5527
|
+
manualChunks(id) {
|
|
5528
|
+
const normalized = viteNormalizePath(id);
|
|
5529
|
+
if (normalized.includes("node_modules/react/") || normalized.includes("node_modules/react-dom/") || normalized.includes(
|
|
5530
|
+
"node_modules/react-server-dom-webpack/"
|
|
5531
|
+
) || normalized.includes("node_modules/@vitejs/plugin-rsc/")) {
|
|
5532
|
+
return "react";
|
|
5533
|
+
}
|
|
5534
|
+
if (normalized.includes("node_modules/react-router/")) {
|
|
5535
|
+
return "router";
|
|
5536
|
+
}
|
|
5537
|
+
}
|
|
5427
5538
|
}
|
|
5428
5539
|
},
|
|
5429
5540
|
outDir: (0, import_pathe6.join)(config.buildDirectory, "client")
|
|
5430
|
-
},
|
|
5431
|
-
optimizeDeps: {
|
|
5432
|
-
include: [
|
|
5433
|
-
"react-router > cookie",
|
|
5434
|
-
"react-router > set-cookie-parser"
|
|
5435
|
-
]
|
|
5436
5541
|
}
|
|
5437
5542
|
},
|
|
5438
5543
|
rsc: {
|
|
5439
5544
|
build: {
|
|
5440
5545
|
rollupOptions: {
|
|
5441
5546
|
input: {
|
|
5442
|
-
|
|
5443
|
-
// it as `virtual:react-router/unstable_rsc/rsc-entry`
|
|
5444
|
-
// without needing to know the actual file path, which is
|
|
5445
|
-
// important when using the default entries.
|
|
5446
|
-
index: defaultEntries2.rsc
|
|
5547
|
+
index: entries.rsc
|
|
5447
5548
|
},
|
|
5448
5549
|
output: {
|
|
5449
5550
|
entryFileNames: config.serverBuildFile,
|
|
@@ -5451,13 +5552,18 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5451
5552
|
}
|
|
5452
5553
|
},
|
|
5453
5554
|
outDir: (0, import_pathe6.join)(config.buildDirectory, "server")
|
|
5555
|
+
},
|
|
5556
|
+
resolve: {
|
|
5557
|
+
noExternal: [
|
|
5558
|
+
"@react-router/dev/config/default-rsc-entries/entry.ssr"
|
|
5559
|
+
]
|
|
5454
5560
|
}
|
|
5455
5561
|
},
|
|
5456
5562
|
ssr: {
|
|
5457
5563
|
build: {
|
|
5458
5564
|
rollupOptions: {
|
|
5459
5565
|
input: {
|
|
5460
|
-
index:
|
|
5566
|
+
index: entries.ssr
|
|
5461
5567
|
},
|
|
5462
5568
|
output: {
|
|
5463
5569
|
// Note: We don't set `entryFileNames` here because it's
|
|
@@ -5468,6 +5574,11 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5468
5574
|
}
|
|
5469
5575
|
},
|
|
5470
5576
|
outDir: (0, import_pathe6.join)(config.buildDirectory, "server/__ssr_build")
|
|
5577
|
+
},
|
|
5578
|
+
resolve: {
|
|
5579
|
+
noExternal: [
|
|
5580
|
+
"@react-router/dev/config/default-rsc-entries/entry.rsc"
|
|
5581
|
+
]
|
|
5471
5582
|
}
|
|
5472
5583
|
}
|
|
5473
5584
|
},
|
|
@@ -5571,12 +5682,6 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5571
5682
|
(await typegenWatcherPromise)?.close();
|
|
5572
5683
|
}
|
|
5573
5684
|
},
|
|
5574
|
-
{
|
|
5575
|
-
name: "react-router/rsc/virtual-rsc-entry",
|
|
5576
|
-
resolveId(id) {
|
|
5577
|
-
if (id === virtual2.rscEntry.id) return defaultEntries2.rsc;
|
|
5578
|
-
}
|
|
5579
|
-
},
|
|
5580
5685
|
{
|
|
5581
5686
|
name: "react-router/rsc/virtual-route-config",
|
|
5582
5687
|
resolveId(id) {
|
|
@@ -5652,7 +5757,7 @@ ${errors.map((x) => ` - ${x}`).join("\n")}
|
|
|
5652
5757
|
const reactRefreshDir = import_pathe6.default.dirname(
|
|
5653
5758
|
require.resolve("react-refresh/package.json")
|
|
5654
5759
|
);
|
|
5655
|
-
const reactRefreshRuntimePath = import_pathe6.
|
|
5760
|
+
const reactRefreshRuntimePath = (0, import_pathe6.join)(
|
|
5656
5761
|
reactRefreshDir,
|
|
5657
5762
|
"cjs/react-refresh-runtime.development.js"
|
|
5658
5763
|
);
|
|
@@ -5779,7 +5884,6 @@ var virtual2 = {
|
|
|
5779
5884
|
injectHmrRuntime: create("unstable_rsc/inject-hmr-runtime"),
|
|
5780
5885
|
hmrRuntime: create("unstable_rsc/runtime"),
|
|
5781
5886
|
basename: create("unstable_rsc/basename"),
|
|
5782
|
-
rscEntry: create("unstable_rsc/rsc-entry"),
|
|
5783
5887
|
reactRouterServeConfig: create("unstable_rsc/react-router-serve-config")
|
|
5784
5888
|
};
|
|
5785
5889
|
function invalidateVirtualModules2(viteDevServer) {
|
|
@@ -5795,33 +5899,6 @@ function invalidateVirtualModules2(viteDevServer) {
|
|
|
5795
5899
|
function getRootDirectory(viteUserConfig) {
|
|
5796
5900
|
return viteUserConfig.root ?? process.env.REACT_ROUTER_ROOT ?? process.cwd();
|
|
5797
5901
|
}
|
|
5798
|
-
function getDevPackageRoot() {
|
|
5799
|
-
const currentDir = (0, import_pathe6.dirname)(__dirname);
|
|
5800
|
-
let dir = currentDir;
|
|
5801
|
-
while (dir !== (0, import_pathe6.dirname)(dir)) {
|
|
5802
|
-
try {
|
|
5803
|
-
const packageJsonPath = (0, import_pathe6.join)(dir, "package.json");
|
|
5804
|
-
(0, import_fs.readFileSync)(packageJsonPath, "utf-8");
|
|
5805
|
-
return dir;
|
|
5806
|
-
} catch {
|
|
5807
|
-
dir = (0, import_pathe6.dirname)(dir);
|
|
5808
|
-
}
|
|
5809
|
-
}
|
|
5810
|
-
throw new Error("Could not find package.json");
|
|
5811
|
-
}
|
|
5812
|
-
function getDefaultEntries() {
|
|
5813
|
-
const defaultEntriesDir2 = (0, import_pathe6.join)(
|
|
5814
|
-
getDevPackageRoot(),
|
|
5815
|
-
"dist",
|
|
5816
|
-
"config",
|
|
5817
|
-
"default-rsc-entries"
|
|
5818
|
-
);
|
|
5819
|
-
return {
|
|
5820
|
-
rsc: (0, import_pathe6.join)(defaultEntriesDir2, "entry.rsc.tsx"),
|
|
5821
|
-
ssr: (0, import_pathe6.join)(defaultEntriesDir2, "entry.ssr.tsx"),
|
|
5822
|
-
client: (0, import_pathe6.join)(defaultEntriesDir2, "entry.client.tsx")
|
|
5823
|
-
};
|
|
5824
|
-
}
|
|
5825
5902
|
function getModulesWithImporters(modules) {
|
|
5826
5903
|
const visited = /* @__PURE__ */ new Set();
|
|
5827
5904
|
const result = /* @__PURE__ */ new Set();
|