@react-router/dev 7.6.3 → 7.7.0-pre.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 +16 -0
- package/dist/cli/index.js +16 -10
- package/dist/config.js +1 -1
- package/dist/routes.js +1 -1
- package/dist/static/refresh-utils.cjs +0 -2
- package/dist/vite/cloudflare.js +7 -8
- package/dist/vite.js +84 -43
- package/package.json +19 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# `@react-router/dev`
|
|
2
2
|
|
|
3
|
+
## 7.7.0-pre.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Update `vite-node` to `^3.2.2` to support Vite 7 ([#13781](https://github.com/remix-run/react-router/pull/13781))
|
|
8
|
+
- Properly handle `https` protocol in dev mode ([#13746](https://github.com/remix-run/react-router/pull/13746))
|
|
9
|
+
- Fix missing styles when Vite's `build.cssCodeSplit` option is disabled ([#13943](https://github.com/remix-run/react-router/pull/13943))
|
|
10
|
+
- Allow `.mts` and `.mjs` extensions for route config file ([#13931](https://github.com/remix-run/react-router/pull/13931))
|
|
11
|
+
- Fix prerender file locations when `cwd` differs from project root ([#13824](https://github.com/remix-run/react-router/pull/13824))
|
|
12
|
+
- Improve chunk error logging when a chunk cannot be found during the build ([#13799](https://github.com/remix-run/react-router/pull/13799))
|
|
13
|
+
- Fix incorrectly configured `externalConditions` which had enabled `module` condition for externals and broke builds with certain packages, like Emotion. ([#13871](https://github.com/remix-run/react-router/pull/13871))
|
|
14
|
+
- Updated dependencies:
|
|
15
|
+
- `react-router@7.7.0-pre.0`
|
|
16
|
+
- `@react-router/node@7.7.0-pre.0`
|
|
17
|
+
- `@react-router/serve@7.7.0-pre.0`
|
|
18
|
+
|
|
3
19
|
## 7.6.3
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @react-router/dev v7.
|
|
3
|
+
* @react-router/dev v7.7.0-pre.0
|
|
4
4
|
*
|
|
5
5
|
* Copyright (c) Remix Software Inc.
|
|
6
6
|
*
|
|
@@ -743,7 +743,7 @@ var init_config = __esm({
|
|
|
743
743
|
});
|
|
744
744
|
return o;
|
|
745
745
|
};
|
|
746
|
-
entryExts = [".js", ".jsx", ".ts", ".tsx"];
|
|
746
|
+
entryExts = [".js", ".jsx", ".ts", ".tsx", ".mjs", ".mts"];
|
|
747
747
|
}
|
|
748
748
|
});
|
|
749
749
|
|
|
@@ -1277,11 +1277,12 @@ var init_typegen = __esm({
|
|
|
1277
1277
|
});
|
|
1278
1278
|
|
|
1279
1279
|
// vite/node-adapter.ts
|
|
1280
|
-
var import_node_events, import_node_stream, import_set_cookie_parser, import_node;
|
|
1280
|
+
var import_node_events, import_node_tls, import_node_stream, import_set_cookie_parser, import_node;
|
|
1281
1281
|
var init_node_adapter = __esm({
|
|
1282
1282
|
"vite/node-adapter.ts"() {
|
|
1283
1283
|
"use strict";
|
|
1284
1284
|
import_node_events = require("events");
|
|
1285
|
+
import_node_tls = require("tls");
|
|
1285
1286
|
import_node_stream = require("stream");
|
|
1286
1287
|
import_set_cookie_parser = require("set-cookie-parser");
|
|
1287
1288
|
import_node = require("@react-router/node");
|
|
@@ -1494,10 +1495,6 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
1494
1495
|
);
|
|
1495
1496
|
let { moduleSyncEnabled } = await import(`file:///${path6.join(packageRoot, "module-sync-enabled/index.mjs")}`);
|
|
1496
1497
|
let vite2 = getVite();
|
|
1497
|
-
let viteServerConditions = [
|
|
1498
|
-
...vite2.defaultServerConditions ?? [],
|
|
1499
|
-
...moduleSyncEnabled ? ["module-sync"] : []
|
|
1500
|
-
];
|
|
1501
1498
|
function getBaseOptions({
|
|
1502
1499
|
viteUserConfig
|
|
1503
1500
|
}) {
|
|
@@ -1529,15 +1526,24 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
1529
1526
|
function getBaseServerOptions({
|
|
1530
1527
|
viteUserConfig
|
|
1531
1528
|
}) {
|
|
1532
|
-
let
|
|
1529
|
+
let maybeModuleSyncConditions = [
|
|
1530
|
+
...moduleSyncEnabled ? ["module-sync"] : []
|
|
1531
|
+
];
|
|
1532
|
+
let maybeDevelopmentConditions = viteCommand === "build" ? [] : ["development"];
|
|
1533
|
+
let maybeDefaultServerConditions = vite2.defaultServerConditions || [];
|
|
1534
|
+
let defaultExternalConditions = ["node"];
|
|
1535
|
+
let baseConditions = [
|
|
1536
|
+
...maybeDevelopmentConditions,
|
|
1537
|
+
...maybeModuleSyncConditions
|
|
1538
|
+
];
|
|
1533
1539
|
return mergeEnvironmentOptions(getBaseOptions({ viteUserConfig }), {
|
|
1534
1540
|
resolve: {
|
|
1535
1541
|
external: (
|
|
1536
1542
|
// If `unstable_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
|
|
1537
1543
|
ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? void 0 : ssrExternals
|
|
1538
1544
|
),
|
|
1539
|
-
conditions,
|
|
1540
|
-
externalConditions:
|
|
1545
|
+
conditions: [...baseConditions, ...maybeDefaultServerConditions],
|
|
1546
|
+
externalConditions: [...baseConditions, ...defaultExternalConditions]
|
|
1541
1547
|
},
|
|
1542
1548
|
build: {
|
|
1543
1549
|
// We move SSR-only assets to client assets. Note that the
|
package/dist/config.js
CHANGED
package/dist/routes.js
CHANGED
|
@@ -158,8 +158,6 @@ const routeUpdates = new Map();
|
|
|
158
158
|
window.__reactRouterRouteModuleUpdates = new Map();
|
|
159
159
|
|
|
160
160
|
import.meta.hot.on("react-router:hmr", async ({ route }) => {
|
|
161
|
-
window.__reactRouterClearCriticalCss();
|
|
162
|
-
|
|
163
161
|
if (route) {
|
|
164
162
|
routeUpdates.set(route.id, route);
|
|
165
163
|
}
|
package/dist/vite/cloudflare.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v7.
|
|
2
|
+
* @react-router/dev v7.7.0-pre.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -49,6 +49,7 @@ var import_react_router = require("react-router");
|
|
|
49
49
|
|
|
50
50
|
// vite/node-adapter.ts
|
|
51
51
|
var import_node_events = require("events");
|
|
52
|
+
var import_node_tls = require("tls");
|
|
52
53
|
var import_node_stream = require("stream");
|
|
53
54
|
var import_set_cookie_parser = require("set-cookie-parser");
|
|
54
55
|
var import_node = require("@react-router/node");
|
|
@@ -91,7 +92,8 @@ function fromNodeHeaders(nodeReq) {
|
|
|
91
92
|
return headers;
|
|
92
93
|
}
|
|
93
94
|
function fromNodeRequest(nodeReq, nodeRes) {
|
|
94
|
-
let
|
|
95
|
+
let protocol = nodeReq.socket instanceof import_node_tls.TLSSocket && nodeReq.socket.encrypted ? "https" : "http";
|
|
96
|
+
let origin = nodeReq.headers.origin && "null" !== nodeReq.headers.origin ? nodeReq.headers.origin : `${protocol}://${nodeReq.headers.host}`;
|
|
95
97
|
invariant(
|
|
96
98
|
nodeReq.originalUrl,
|
|
97
99
|
"Expected `nodeReq.originalUrl` to be defined"
|
|
@@ -734,7 +736,7 @@ function omitRoutes(config) {
|
|
|
734
736
|
routes: {}
|
|
735
737
|
};
|
|
736
738
|
}
|
|
737
|
-
var entryExts = [".js", ".jsx", ".ts", ".tsx"];
|
|
739
|
+
var entryExts = [".js", ".jsx", ".ts", ".tsx", ".mjs", ".mts"];
|
|
738
740
|
function isEntryFile(entryBasename, filename) {
|
|
739
741
|
return entryExts.some((ext) => filename === `${entryBasename}${ext}`);
|
|
740
742
|
}
|
|
@@ -801,10 +803,7 @@ var cloudflareDevProxyVitePlugin = (options = {}) => {
|
|
|
801
803
|
name: PLUGIN_NAME,
|
|
802
804
|
config: async (config, configEnv) => {
|
|
803
805
|
await preloadVite();
|
|
804
|
-
const
|
|
805
|
-
const serverConditions = [
|
|
806
|
-
...vite2.defaultServerConditions ?? []
|
|
807
|
-
];
|
|
806
|
+
const externalConditions = ["node"];
|
|
808
807
|
let configResult = await loadConfig({
|
|
809
808
|
rootDirectory: config.root ?? process.cwd(),
|
|
810
809
|
mode: configEnv.mode
|
|
@@ -816,7 +815,7 @@ var cloudflareDevProxyVitePlugin = (options = {}) => {
|
|
|
816
815
|
return {
|
|
817
816
|
ssr: {
|
|
818
817
|
resolve: {
|
|
819
|
-
externalConditions: [...workerdConditions, ...
|
|
818
|
+
externalConditions: [...workerdConditions, ...externalConditions]
|
|
820
819
|
}
|
|
821
820
|
}
|
|
822
821
|
};
|
package/dist/vite.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @react-router/dev v7.
|
|
2
|
+
* @react-router/dev v7.7.0-pre.0
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Remix Software Inc.
|
|
5
5
|
*
|
|
@@ -740,7 +740,7 @@ function omitRoutes(config) {
|
|
|
740
740
|
routes: {}
|
|
741
741
|
};
|
|
742
742
|
}
|
|
743
|
-
var entryExts = [".js", ".jsx", ".ts", ".tsx"];
|
|
743
|
+
var entryExts = [".js", ".jsx", ".ts", ".tsx", ".mjs", ".mts"];
|
|
744
744
|
function isEntryFile(entryBasename, filename2) {
|
|
745
745
|
return entryExts.some((ext) => filename2 === `${entryBasename}${ext}`);
|
|
746
746
|
}
|
|
@@ -1232,6 +1232,7 @@ async function watch(rootDirectory, { mode, logger }) {
|
|
|
1232
1232
|
|
|
1233
1233
|
// vite/node-adapter.ts
|
|
1234
1234
|
var import_node_events = require("events");
|
|
1235
|
+
var import_node_tls = require("tls");
|
|
1235
1236
|
var import_node_stream = require("stream");
|
|
1236
1237
|
var import_set_cookie_parser = require("set-cookie-parser");
|
|
1237
1238
|
var import_node = require("@react-router/node");
|
|
@@ -1262,7 +1263,8 @@ function fromNodeHeaders(nodeReq) {
|
|
|
1262
1263
|
return headers;
|
|
1263
1264
|
}
|
|
1264
1265
|
function fromNodeRequest(nodeReq, nodeRes) {
|
|
1265
|
-
let
|
|
1266
|
+
let protocol = nodeReq.socket instanceof import_node_tls.TLSSocket && nodeReq.socket.encrypted ? "https" : "http";
|
|
1267
|
+
let origin = nodeReq.headers.origin && "null" !== nodeReq.headers.origin ? nodeReq.headers.origin : `${protocol}://${nodeReq.headers.host}`;
|
|
1266
1268
|
invariant(
|
|
1267
1269
|
nodeReq.originalUrl,
|
|
1268
1270
|
"Expected `nodeReq.originalUrl` to be defined"
|
|
@@ -2401,14 +2403,27 @@ var getPublicModulePathForEntry = (ctx, viteManifest, entryFilePath) => {
|
|
|
2401
2403
|
let entryChunk = resolveChunk(ctx, viteManifest, entryFilePath);
|
|
2402
2404
|
return entryChunk ? `${ctx.publicPath}${entryChunk.file}` : void 0;
|
|
2403
2405
|
};
|
|
2404
|
-
var
|
|
2406
|
+
var getCssCodeSplitDisabledFile = (ctx, viteConfig, viteManifest) => {
|
|
2407
|
+
if (viteConfig.build.cssCodeSplit) {
|
|
2408
|
+
return null;
|
|
2409
|
+
}
|
|
2410
|
+
let cssFile = viteManifest["style.css"]?.file;
|
|
2411
|
+
invariant(
|
|
2412
|
+
cssFile,
|
|
2413
|
+
"Expected `style.css` to be present in Vite manifest when `build.cssCodeSplit` is disabled"
|
|
2414
|
+
);
|
|
2415
|
+
return `${ctx.publicPath}${cssFile}`;
|
|
2416
|
+
};
|
|
2417
|
+
var getClientEntryChunk = (ctx, viteManifest) => {
|
|
2418
|
+
let filePath = ctx.entryClientFilePath;
|
|
2419
|
+
let chunk = resolveChunk(ctx, viteManifest, filePath);
|
|
2420
|
+
invariant(chunk, `Chunk not found: ${filePath}`);
|
|
2421
|
+
return chunk;
|
|
2422
|
+
};
|
|
2423
|
+
var getReactRouterManifestBuildAssets = (ctx, viteConfig, viteManifest, entryFilePath, route) => {
|
|
2405
2424
|
let entryChunk = resolveChunk(ctx, viteManifest, entryFilePath);
|
|
2406
|
-
invariant(entryChunk,
|
|
2407
|
-
let
|
|
2408
|
-
let chunk = resolveChunk(ctx, viteManifest, filePath);
|
|
2409
|
-
invariant(chunk, "Chunk not found");
|
|
2410
|
-
return chunk;
|
|
2411
|
-
});
|
|
2425
|
+
invariant(entryChunk, `Chunk not found: ${entryFilePath}`);
|
|
2426
|
+
let isRootRoute = Boolean(route && route.parentId === void 0);
|
|
2412
2427
|
let routeModuleChunks = routeChunkNames.map(
|
|
2413
2428
|
(routeChunkName) => resolveChunk(
|
|
2414
2429
|
ctx,
|
|
@@ -2416,19 +2431,31 @@ var getReactRouterManifestBuildAssets = (ctx, viteManifest, entryFilePath, prepe
|
|
|
2416
2431
|
getRouteChunkModuleId(entryFilePath.split("?")[0], routeChunkName)
|
|
2417
2432
|
)
|
|
2418
2433
|
).filter(isNonNullable);
|
|
2419
|
-
let chunks = resolveDependantChunks(
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2434
|
+
let chunks = resolveDependantChunks(
|
|
2435
|
+
viteManifest,
|
|
2436
|
+
[
|
|
2437
|
+
// If this is the root route, we also need to include assets from the
|
|
2438
|
+
// client entry file as this is a common way for consumers to import
|
|
2439
|
+
// global reset styles, etc.
|
|
2440
|
+
isRootRoute ? getClientEntryChunk(ctx, viteManifest) : null,
|
|
2441
|
+
entryChunk,
|
|
2442
|
+
routeModuleChunks
|
|
2443
|
+
].flat(1).filter(isNonNullable)
|
|
2444
|
+
);
|
|
2424
2445
|
return {
|
|
2425
2446
|
module: `${ctx.publicPath}${entryChunk.file}`,
|
|
2426
2447
|
imports: dedupe(chunks.flatMap((e) => e.imports ?? [])).map((imported) => {
|
|
2427
2448
|
return `${ctx.publicPath}${viteManifest[imported].file}`;
|
|
2428
2449
|
}) ?? [],
|
|
2429
|
-
css: dedupe(
|
|
2430
|
-
|
|
2431
|
-
|
|
2450
|
+
css: dedupe(
|
|
2451
|
+
[
|
|
2452
|
+
// If CSS code splitting is disabled, Vite includes a singular 'style.css' asset
|
|
2453
|
+
// in the manifest that isn't tied to any route file. If we want to render these
|
|
2454
|
+
// styles correctly, we need to include them in the root route.
|
|
2455
|
+
isRootRoute ? getCssCodeSplitDisabledFile(ctx, viteConfig, viteManifest) : null,
|
|
2456
|
+
chunks.flatMap((e) => e.css ?? []).map((href) => `${ctx.publicPath}${href}`)
|
|
2457
|
+
].flat(1).filter(isNonNullable)
|
|
2458
|
+
)
|
|
2432
2459
|
};
|
|
2433
2460
|
};
|
|
2434
2461
|
function resolveDependantChunks(viteManifest, entryChunks) {
|
|
@@ -2742,16 +2769,19 @@ var reactRouterVitePlugin = () => {
|
|
|
2742
2769
|
return sriManifest;
|
|
2743
2770
|
};
|
|
2744
2771
|
let generateReactRouterManifestsForBuild = async ({
|
|
2772
|
+
viteConfig: viteConfig2,
|
|
2745
2773
|
routeIds
|
|
2746
2774
|
}) => {
|
|
2747
|
-
invariant(
|
|
2775
|
+
invariant(viteConfig2);
|
|
2748
2776
|
let viteManifest = await loadViteManifest(
|
|
2749
2777
|
getClientBuildDirectory(ctx.reactRouterConfig)
|
|
2750
2778
|
);
|
|
2751
2779
|
let entry = getReactRouterManifestBuildAssets(
|
|
2752
2780
|
ctx,
|
|
2781
|
+
viteConfig2,
|
|
2753
2782
|
viteManifest,
|
|
2754
|
-
ctx.entryClientFilePath
|
|
2783
|
+
ctx.entryClientFilePath,
|
|
2784
|
+
null
|
|
2755
2785
|
);
|
|
2756
2786
|
let browserRoutes = {};
|
|
2757
2787
|
let serverRoutes = {};
|
|
@@ -2763,7 +2793,6 @@ var reactRouterVitePlugin = () => {
|
|
|
2763
2793
|
for (let route of Object.values(ctx.reactRouterConfig.routes)) {
|
|
2764
2794
|
let routeFile = path5.join(ctx.reactRouterConfig.appDirectory, route.file);
|
|
2765
2795
|
let sourceExports = routeManifestExports[route.id];
|
|
2766
|
-
let isRootRoute = route.parentId === void 0;
|
|
2767
2796
|
let hasClientAction = sourceExports.includes("clientAction");
|
|
2768
2797
|
let hasClientLoader = sourceExports.includes("clientLoader");
|
|
2769
2798
|
let hasClientMiddleware = sourceExports.includes(
|
|
@@ -2802,12 +2831,10 @@ var reactRouterVitePlugin = () => {
|
|
|
2802
2831
|
hasErrorBoundary: sourceExports.includes("ErrorBoundary"),
|
|
2803
2832
|
...getReactRouterManifestBuildAssets(
|
|
2804
2833
|
ctx,
|
|
2834
|
+
viteConfig2,
|
|
2805
2835
|
viteManifest,
|
|
2806
2836
|
`${routeFile}${BUILD_CLIENT_ROUTE_QUERY_STRING}`,
|
|
2807
|
-
|
|
2808
|
-
// client entry file as this is a common way for consumers to import
|
|
2809
|
-
// global reset styles, etc.
|
|
2810
|
-
isRootRoute ? [ctx.entryClientFilePath] : []
|
|
2837
|
+
route
|
|
2811
2838
|
),
|
|
2812
2839
|
clientActionModule: hasRouteChunkByExportName.clientAction ? getPublicModulePathForEntry(
|
|
2813
2840
|
ctx,
|
|
@@ -2838,7 +2865,7 @@ var reactRouterVitePlugin = () => {
|
|
|
2838
2865
|
let fingerprintedValues = { entry, routes: browserRoutes };
|
|
2839
2866
|
let version = getHash(JSON.stringify(fingerprintedValues), 8);
|
|
2840
2867
|
let manifestPath = path5.posix.join(
|
|
2841
|
-
|
|
2868
|
+
viteConfig2.build.assetsDir,
|
|
2842
2869
|
`manifest-${version}.js`
|
|
2843
2870
|
);
|
|
2844
2871
|
let url2 = `${ctx.publicPath}${manifestPath}`;
|
|
@@ -3608,7 +3635,9 @@ var reactRouterVitePlugin = () => {
|
|
|
3608
3635
|
}
|
|
3609
3636
|
case virtual.serverManifest.resolvedId: {
|
|
3610
3637
|
let routeIds = getServerBundleRouteIds(this, ctx);
|
|
3638
|
+
invariant(viteConfig);
|
|
3611
3639
|
let reactRouterManifest = viteCommand === "build" ? (await generateReactRouterManifestsForBuild({
|
|
3640
|
+
viteConfig,
|
|
3612
3641
|
routeIds
|
|
3613
3642
|
})).reactRouterServerManifest : await getReactRouterManifestForDev();
|
|
3614
3643
|
if (!ctx.reactRouterConfig.ssr) {
|
|
@@ -4071,7 +4100,7 @@ async function handleSpaMode(viteConfig, reactRouterConfig, serverBuildDirectory
|
|
|
4071
4100
|
);
|
|
4072
4101
|
}
|
|
4073
4102
|
await (0, import_promises2.writeFile)(path5.join(clientBuildDirectory, filename2), html);
|
|
4074
|
-
let prettyDir = path5.relative(
|
|
4103
|
+
let prettyDir = path5.relative(viteConfig.root, clientBuildDirectory);
|
|
4075
4104
|
let prettyPath = path5.join(prettyDir, filename2);
|
|
4076
4105
|
if (build.prerender.length > 0) {
|
|
4077
4106
|
viteConfig.logger.info(
|
|
@@ -4199,12 +4228,13 @@ async function prerenderData(handler, prerenderPath, onlyRoutes, clientBuildDire
|
|
|
4199
4228
|
${normalizedPath}`
|
|
4200
4229
|
);
|
|
4201
4230
|
}
|
|
4202
|
-
let
|
|
4203
|
-
let outfile = path5.join(outdir, ...normalizedPath.split("/"));
|
|
4231
|
+
let outfile = path5.join(clientBuildDirectory, ...normalizedPath.split("/"));
|
|
4204
4232
|
await (0, import_promises2.mkdir)(path5.dirname(outfile), { recursive: true });
|
|
4205
4233
|
await (0, import_promises2.writeFile)(outfile, data);
|
|
4206
4234
|
viteConfig.logger.info(
|
|
4207
|
-
`Prerender (data): ${prerenderPath} -> ${import_picocolors3.default.bold(
|
|
4235
|
+
`Prerender (data): ${prerenderPath} -> ${import_picocolors3.default.bold(
|
|
4236
|
+
path5.relative(viteConfig.root, outfile)
|
|
4237
|
+
)}`
|
|
4208
4238
|
);
|
|
4209
4239
|
return data;
|
|
4210
4240
|
}
|
|
@@ -4238,12 +4268,17 @@ async function prerenderRoute(handler, prerenderPath, clientBuildDirectory, reac
|
|
|
4238
4268
|
${html}`
|
|
4239
4269
|
);
|
|
4240
4270
|
}
|
|
4241
|
-
let
|
|
4242
|
-
|
|
4271
|
+
let outfile = path5.join(
|
|
4272
|
+
clientBuildDirectory,
|
|
4273
|
+
...normalizedPath.split("/"),
|
|
4274
|
+
"index.html"
|
|
4275
|
+
);
|
|
4243
4276
|
await (0, import_promises2.mkdir)(path5.dirname(outfile), { recursive: true });
|
|
4244
4277
|
await (0, import_promises2.writeFile)(outfile, html);
|
|
4245
4278
|
viteConfig.logger.info(
|
|
4246
|
-
`Prerender (html): ${prerenderPath} -> ${import_picocolors3.default.bold(
|
|
4279
|
+
`Prerender (html): ${prerenderPath} -> ${import_picocolors3.default.bold(
|
|
4280
|
+
path5.relative(viteConfig.root, outfile)
|
|
4281
|
+
)}`
|
|
4247
4282
|
);
|
|
4248
4283
|
}
|
|
4249
4284
|
async function prerenderResourceRoute(handler, prerenderPath, clientBuildDirectory, reactRouterConfig, viteConfig, requestInit) {
|
|
@@ -4257,12 +4292,13 @@ async function prerenderResourceRoute(handler, prerenderPath, clientBuildDirecto
|
|
|
4257
4292
|
${content.toString("utf8")}`
|
|
4258
4293
|
);
|
|
4259
4294
|
}
|
|
4260
|
-
let
|
|
4261
|
-
let outfile = path5.join(outdir, ...normalizedPath.split("/"));
|
|
4295
|
+
let outfile = path5.join(clientBuildDirectory, ...normalizedPath.split("/"));
|
|
4262
4296
|
await (0, import_promises2.mkdir)(path5.dirname(outfile), { recursive: true });
|
|
4263
4297
|
await (0, import_promises2.writeFile)(outfile, content);
|
|
4264
4298
|
viteConfig.logger.info(
|
|
4265
|
-
`Prerender (resource): ${prerenderPath} -> ${import_picocolors3.default.bold(
|
|
4299
|
+
`Prerender (resource): ${prerenderPath} -> ${import_picocolors3.default.bold(
|
|
4300
|
+
path5.relative(viteConfig.root, outfile)
|
|
4301
|
+
)}`
|
|
4266
4302
|
);
|
|
4267
4303
|
}
|
|
4268
4304
|
async function getPrerenderPaths(prerender, ssr, routes, logWarning = false) {
|
|
@@ -4623,10 +4659,6 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
4623
4659
|
);
|
|
4624
4660
|
let { moduleSyncEnabled } = await import(`file:///${path5.join(packageRoot, "module-sync-enabled/index.mjs")}`);
|
|
4625
4661
|
let vite2 = getVite();
|
|
4626
|
-
let viteServerConditions = [
|
|
4627
|
-
...vite2.defaultServerConditions ?? [],
|
|
4628
|
-
...moduleSyncEnabled ? ["module-sync"] : []
|
|
4629
|
-
];
|
|
4630
4662
|
function getBaseOptions({
|
|
4631
4663
|
viteUserConfig
|
|
4632
4664
|
}) {
|
|
@@ -4658,15 +4690,24 @@ async function getEnvironmentOptionsResolvers(ctx, viteCommand) {
|
|
|
4658
4690
|
function getBaseServerOptions({
|
|
4659
4691
|
viteUserConfig
|
|
4660
4692
|
}) {
|
|
4661
|
-
let
|
|
4693
|
+
let maybeModuleSyncConditions = [
|
|
4694
|
+
...moduleSyncEnabled ? ["module-sync"] : []
|
|
4695
|
+
];
|
|
4696
|
+
let maybeDevelopmentConditions = viteCommand === "build" ? [] : ["development"];
|
|
4697
|
+
let maybeDefaultServerConditions = vite2.defaultServerConditions || [];
|
|
4698
|
+
let defaultExternalConditions = ["node"];
|
|
4699
|
+
let baseConditions = [
|
|
4700
|
+
...maybeDevelopmentConditions,
|
|
4701
|
+
...maybeModuleSyncConditions
|
|
4702
|
+
];
|
|
4662
4703
|
return mergeEnvironmentOptions(getBaseOptions({ viteUserConfig }), {
|
|
4663
4704
|
resolve: {
|
|
4664
4705
|
external: (
|
|
4665
4706
|
// If `unstable_viteEnvironmentApi` is `true`, `resolve.external` is set in the `configEnvironment` hook
|
|
4666
4707
|
ctx.reactRouterConfig.future.unstable_viteEnvironmentApi ? void 0 : ssrExternals
|
|
4667
4708
|
),
|
|
4668
|
-
conditions,
|
|
4669
|
-
externalConditions:
|
|
4709
|
+
conditions: [...baseConditions, ...maybeDefaultServerConditions],
|
|
4710
|
+
externalConditions: [...baseConditions, ...defaultExternalConditions]
|
|
4670
4711
|
},
|
|
4671
4712
|
build: {
|
|
4672
4713
|
// We move SSR-only assets to client assets. Note that the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-router/dev",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.7.0-pre.0",
|
|
4
4
|
"description": "Dev tools and CLI for React Router",
|
|
5
5
|
"homepage": "https://reactrouter.com",
|
|
6
6
|
"bugs": {
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"
|
|
64
|
-
"@babel/
|
|
65
|
-
"@babel/
|
|
66
|
-
"@babel/
|
|
67
|
-
"@babel/plugin-syntax-jsx": "^7.
|
|
68
|
-
"@babel/preset-typescript": "^7.
|
|
69
|
-
"@babel/traverse": "^7.
|
|
70
|
-
"@babel/types": "^7.
|
|
63
|
+
"isbot": "^5.1.11",
|
|
64
|
+
"@babel/core": "^7.27.7",
|
|
65
|
+
"@babel/generator": "^7.27.5",
|
|
66
|
+
"@babel/parser": "^7.27.7",
|
|
67
|
+
"@babel/plugin-syntax-jsx": "^7.27.1",
|
|
68
|
+
"@babel/preset-typescript": "^7.27.1",
|
|
69
|
+
"@babel/traverse": "^7.27.7",
|
|
70
|
+
"@babel/types": "^7.27.7",
|
|
71
71
|
"@npmcli/package-json": "^4.0.1",
|
|
72
72
|
"arg": "^5.0.1",
|
|
73
73
|
"babel-dead-code-elimination": "^1.0.6",
|
|
@@ -85,13 +85,13 @@
|
|
|
85
85
|
"set-cookie-parser": "^2.6.0",
|
|
86
86
|
"tinyglobby": "^0.2.14",
|
|
87
87
|
"valibot": "^0.41.0",
|
|
88
|
-
"vite-node": "^3.
|
|
89
|
-
"@react-router/node": "7.
|
|
88
|
+
"vite-node": "^3.2.2",
|
|
89
|
+
"@react-router/node": "7.7.0-pre.0"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
92
|
"@types/babel__core": "^7.20.5",
|
|
93
|
-
"@types/babel__generator": "^7.
|
|
94
|
-
"@types/babel__traverse": "^7.20.
|
|
93
|
+
"@types/babel__generator": "^7.27.0",
|
|
94
|
+
"@types/babel__traverse": "^7.20.7",
|
|
95
95
|
"@types/dedent": "^0.7.0",
|
|
96
96
|
"@types/express": "^4.17.9",
|
|
97
97
|
"@types/jsesc": "^3.0.1",
|
|
@@ -100,6 +100,7 @@
|
|
|
100
100
|
"@types/npmcli__package-json": "^4.0.0",
|
|
101
101
|
"@types/prettier": "^2.7.3",
|
|
102
102
|
"@types/set-cookie-parser": "^2.4.1",
|
|
103
|
+
"@types/semver": "^7.7.0",
|
|
103
104
|
"esbuild-register": "^3.6.0",
|
|
104
105
|
"execa": "5.1.1",
|
|
105
106
|
"express": "^4.19.2",
|
|
@@ -108,16 +109,16 @@
|
|
|
108
109
|
"typescript": "^5.1.6",
|
|
109
110
|
"vite": "^6.1.0",
|
|
110
111
|
"wireit": "0.14.9",
|
|
111
|
-
"wrangler": "^4.
|
|
112
|
-
"@react-router/serve": "7.
|
|
113
|
-
"react-router": "^7.
|
|
112
|
+
"wrangler": "^4.23.0",
|
|
113
|
+
"@react-router/serve": "7.7.0-pre.0",
|
|
114
|
+
"react-router": "^7.7.0-pre.0"
|
|
114
115
|
},
|
|
115
116
|
"peerDependencies": {
|
|
116
117
|
"typescript": "^5.1.0",
|
|
117
118
|
"vite": "^5.1.0 || ^6.0.0 || ^7.0.0",
|
|
118
119
|
"wrangler": "^3.28.2 || ^4.0.0",
|
|
119
|
-
"@react-router/serve": "^7.
|
|
120
|
-
"react-router": "^7.
|
|
120
|
+
"@react-router/serve": "^7.7.0-pre.0",
|
|
121
|
+
"react-router": "^7.7.0-pre.0"
|
|
121
122
|
},
|
|
122
123
|
"peerDependenciesMeta": {
|
|
123
124
|
"@react-router/serve": {
|