@@ -31,7 +31,7 @@ import { generate, parse } from "./babel";
31
31
import type { NodeRequestHandler } from "./node-adapter" ;
32
32
import { fromNodeRequest , toNodeRequest } from "./node-adapter" ;
33
33
import { getStylesForUrl , isCssModulesFile } from "./styles" ;
34
- import * as VirtualModule from "./vmod " ;
34
+ import * as VirtualModule from "./virtual-module " ;
35
35
import { resolveFileUrl } from "./resolve-file-url" ;
36
36
import { combineURLs } from "./combine-urls" ;
37
37
import { removeExports } from "./remove-exports" ;
@@ -163,11 +163,8 @@ export type ReactRouterPluginContext = ReactRouterPluginSsrBuildContext & {
163
163
viteManifestEnabled : boolean ;
164
164
} ;
165
165
166
- let serverBuildId = VirtualModule . id ( "server-build" ) ;
167
- let serverManifestId = VirtualModule . id ( "server-manifest" ) ;
168
- let browserManifestId = VirtualModule . id ( "browser-manifest" ) ;
169
- let hmrRuntimeId = VirtualModule . id ( "hmr-runtime" ) ;
170
- let injectHmrRuntimeId = VirtualModule . id ( "inject-hmr-runtime" ) ;
166
+ let virtualHmrRuntime = VirtualModule . create ( "hmr-runtime" ) ;
167
+ let virtualInjectHmrRuntime = VirtualModule . create ( "inject-hmr-runtime" ) ;
171
168
172
169
const resolveRelativeRouteFilePath = (
173
170
route : RouteManifestEntry ,
@@ -180,13 +177,15 @@ const resolveRelativeRouteFilePath = (
180
177
return vite . normalizePath ( fullPath ) ;
181
178
} ;
182
179
183
- let vmods = [ serverBuildId , serverManifestId , browserManifestId ] ;
180
+ let virtual = {
181
+ serverBuild : VirtualModule . create ( "server-build" ) ,
182
+ serverManifest : VirtualModule . create ( "server-manifest" ) ,
183
+ browserManifest : VirtualModule . create ( "browser-manifest" ) ,
184
+ } ;
184
185
185
- const invalidateVirtualModules = ( viteDevServer : Vite . ViteDevServer ) => {
186
- vmods . forEach ( ( vmod ) => {
187
- let mod = viteDevServer . moduleGraph . getModuleById (
188
- VirtualModule . resolve ( vmod )
189
- ) ;
186
+ let invalidateVirtualModules = ( viteDevServer : Vite . ViteDevServer ) => {
187
+ Object . values ( virtual ) . forEach ( ( vmod ) => {
188
+ let mod = viteDevServer . moduleGraph . getModuleById ( vmod . resolvedId ) ;
190
189
if ( mod ) {
191
190
viteDevServer . moduleGraph . invalidateModule ( mod ) ;
192
191
}
@@ -513,7 +512,9 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
513
512
) } ;`;
514
513
} )
515
514
. join ( "\n" ) }
516
- export { default as assets } from ${ JSON . stringify ( serverManifestId ) } ;
515
+ export { default as assets } from ${ JSON . stringify (
516
+ virtual . serverManifest . id
517
+ ) } ;
517
518
export const assetsBuildDirectory = ${ JSON . stringify (
518
519
path . relative (
519
520
ctx . rootDirectory ,
@@ -709,12 +710,9 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
709
710
710
711
return {
711
712
version : String ( Math . random ( ) ) ,
712
- url : combineURLs ( ctx . publicPath , VirtualModule . url ( browserManifestId ) ) ,
713
+ url : combineURLs ( ctx . publicPath , virtual . browserManifest . url ) ,
713
714
hmr : {
714
- runtime : combineURLs (
715
- ctx . publicPath ,
716
- VirtualModule . url ( injectHmrRuntimeId )
717
- ) ,
715
+ runtime : combineURLs ( ctx . publicPath , virtualInjectHmrRuntime . url ) ,
718
716
} ,
719
717
entry : {
720
718
module : combineURLs (
@@ -908,7 +906,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
908
906
preserveEntrySignatures : "exports-only" ,
909
907
input :
910
908
viteUserConfig . build ?. rollupOptions ?. input ??
911
- serverBuildId ,
909
+ virtual . serverBuild . id ,
912
910
output : {
913
911
entryFileNames :
914
912
ctx . reactRouterConfig . serverBuildFile ,
@@ -1012,8 +1010,8 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1012
1010
plugin !== null &&
1013
1011
"name" in plugin &&
1014
1012
plugin . name !== "react-router" &&
1015
- plugin . name !== "react-router- route-exports" &&
1016
- plugin . name !== "react-router- hmr-updates"
1013
+ plugin . name !== "react-router: route-exports" &&
1014
+ plugin . name !== "react-router: hmr-updates"
1017
1015
) ,
1018
1016
] ,
1019
1017
} ) ;
@@ -1119,7 +1117,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1119
1117
viteDevServer . middlewares . use ( async ( req , res , next ) => {
1120
1118
try {
1121
1119
let build = ( await viteDevServer . ssrLoadModule (
1122
- serverBuildId
1120
+ virtual . serverBuild . id
1123
1121
) ) as ServerBuild ;
1124
1122
1125
1123
let handler = createRequestHandler ( build , "development" ) ;
@@ -1253,7 +1251,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1253
1251
} ,
1254
1252
} ,
1255
1253
{
1256
- name : "react-router- route-entry" ,
1254
+ name : "react-router: route-entry" ,
1257
1255
enforce : "pre" ,
1258
1256
async transform ( _code , id , options ) {
1259
1257
if ( ! isRouteEntry ( id ) ) return ;
@@ -1279,17 +1277,18 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1279
1277
} ,
1280
1278
} ,
1281
1279
{
1282
- name : "react-router- virtual-modules" ,
1280
+ name : "react-router: virtual-modules" ,
1283
1281
enforce : "pre" ,
1284
1282
resolveId ( id ) {
1285
- if ( vmods . includes ( id ) ) return VirtualModule . resolve ( id ) ;
1283
+ const vmod = Object . values ( virtual ) . find ( ( vmod ) => vmod . id === id ) ;
1284
+ if ( vmod ) return vmod . resolvedId ;
1286
1285
} ,
1287
1286
async load ( id ) {
1288
1287
switch ( id ) {
1289
- case VirtualModule . resolve ( serverBuildId ) : {
1288
+ case virtual . serverBuild . resolvedId : {
1290
1289
return await getServerEntry ( ) ;
1291
1290
}
1292
- case VirtualModule . resolve ( serverManifestId ) : {
1291
+ case virtual . serverManifest . resolvedId : {
1293
1292
let reactRouterManifest = ctx . isSsrBuild
1294
1293
? await ctx . getReactRouterServerManifest ( )
1295
1294
: await getReactRouterManifestForDev ( ) ;
@@ -1298,7 +1297,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1298
1297
es6 : true ,
1299
1298
} ) } ;`;
1300
1299
}
1301
- case VirtualModule . resolve ( browserManifestId ) : {
1300
+ case virtual . browserManifest . resolvedId : {
1302
1301
if ( viteCommand === "build" ) {
1303
1302
throw new Error ( "This module only exists in development" ) ;
1304
1303
}
@@ -1314,7 +1313,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1314
1313
} ,
1315
1314
} ,
1316
1315
{
1317
- name : "react-router- dot-server" ,
1316
+ name : "react-router: dot-server" ,
1318
1317
enforce : "pre" ,
1319
1318
async resolveId ( id , importer , options ) {
1320
1319
// https://vitejs.dev/config/dep-optimization-options
@@ -1324,9 +1323,9 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1324
1323
1325
1324
if ( isOptimizeDeps || options ?. ssr ) return ;
1326
1325
1327
- let isResolving = options ?. custom ?. [ "react-router- dot-server" ] ?? false ;
1326
+ let isResolving = options ?. custom ?. [ "react-router: dot-server" ] ?? false ;
1328
1327
if ( isResolving ) return ;
1329
- options . custom = { ...options . custom , "react-router- dot-server" : true } ;
1328
+ options . custom = { ...options . custom , "react-router: dot-server" : true } ;
1330
1329
let resolved = await this . resolve ( id , importer , options ) ;
1331
1330
if ( ! resolved ) return ;
1332
1331
@@ -1384,7 +1383,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1384
1383
} ,
1385
1384
} ,
1386
1385
{
1387
- name : "react-router- dot-client" ,
1386
+ name : "react-router: dot-client" ,
1388
1387
async transform ( code , id , options ) {
1389
1388
if ( ! options ?. ssr ) return ;
1390
1389
let clientFileRE = / \. c l i e n t ( \. [ c m ] ? [ j t ] s x ? ) ? $ / ;
@@ -1406,7 +1405,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1406
1405
} ,
1407
1406
WithProps . plugin ,
1408
1407
{
1409
- name : "react-router- route-exports" ,
1408
+ name : "react-router: route-exports" ,
1410
1409
async transform ( code , id , options ) {
1411
1410
let route = getRoute ( ctx . reactRouterConfig , id ) ;
1412
1411
if ( ! route ) return ;
@@ -1454,17 +1453,18 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1454
1453
} ,
1455
1454
} ,
1456
1455
{
1457
- name : "react-router- inject-hmr-runtime" ,
1456
+ name : "react-router: inject-hmr-runtime" ,
1458
1457
enforce : "pre" ,
1459
1458
resolveId ( id ) {
1460
- if ( id === injectHmrRuntimeId )
1461
- return VirtualModule . resolve ( injectHmrRuntimeId ) ;
1459
+ if ( id === virtualInjectHmrRuntime . id ) {
1460
+ return virtualInjectHmrRuntime . resolvedId ;
1461
+ }
1462
1462
} ,
1463
1463
async load ( id ) {
1464
- if ( id !== VirtualModule . resolve ( injectHmrRuntimeId ) ) return ;
1464
+ if ( id !== virtualInjectHmrRuntime . resolvedId ) return ;
1465
1465
1466
1466
return [
1467
- `import RefreshRuntime from "${ hmrRuntimeId } "` ,
1467
+ `import RefreshRuntime from "${ virtualHmrRuntime . id } "` ,
1468
1468
"RefreshRuntime.injectIntoGlobalHook(window)" ,
1469
1469
"window.$RefreshReg$ = () => {}" ,
1470
1470
"window.$RefreshSig$ = () => (type) => type" ,
@@ -1473,13 +1473,13 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1473
1473
} ,
1474
1474
} ,
1475
1475
{
1476
- name : "react-router- hmr-runtime" ,
1476
+ name : "react-router: hmr-runtime" ,
1477
1477
enforce : "pre" ,
1478
1478
resolveId ( id ) {
1479
- if ( id === hmrRuntimeId ) return VirtualModule . resolve ( hmrRuntimeId ) ;
1479
+ if ( id === virtualHmrRuntime . id ) return virtualHmrRuntime . resolvedId ;
1480
1480
} ,
1481
1481
async load ( id ) {
1482
- if ( id !== VirtualModule . resolve ( hmrRuntimeId ) ) return ;
1482
+ if ( id !== virtualHmrRuntime . resolvedId ) return ;
1483
1483
1484
1484
let reactRefreshDir = path . dirname (
1485
1485
require . resolve ( "react-refresh/package.json" )
@@ -1501,7 +1501,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1501
1501
} ,
1502
1502
} ,
1503
1503
{
1504
- name : "react-router- react-refresh-babel" ,
1504
+ name : "react-router: react-refresh-babel" ,
1505
1505
async transform ( code , id , options ) {
1506
1506
if ( viteCommand !== "serve" ) return ;
1507
1507
if ( id . includes ( "/node_modules/" ) ) return ;
@@ -1543,7 +1543,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1543
1543
} ,
1544
1544
} ,
1545
1545
{
1546
- name : "react-router- hmr-updates" ,
1546
+ name : "react-router: hmr-updates" ,
1547
1547
async handleHotUpdate ( { server, file, modules, read } ) {
1548
1548
let route = getRoute ( ctx . reactRouterConfig , file ) ;
1549
1549
@@ -1553,8 +1553,9 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
1553
1553
1554
1554
if ( route ) {
1555
1555
// invalidate manifest on route exports change
1556
- let serverManifest = ( await server . ssrLoadModule ( serverManifestId ) )
1557
- . default as ReactRouterManifest ;
1556
+ let serverManifest = (
1557
+ await server . ssrLoadModule ( virtual . serverManifest . id )
1558
+ ) . default as ReactRouterManifest ;
1558
1559
1559
1560
let oldRouteMetadata = serverManifest . routes [ route . id ] ;
1560
1561
let newRouteMetadata = await getRouteMetadata (
@@ -1653,7 +1654,7 @@ function withCommentBoundaries(label: string, text: string) {
1653
1654
}
1654
1655
1655
1656
const REACT_REFRESH_HEADER = `
1656
- import RefreshRuntime from "${ hmrRuntimeId } ";
1657
+ import RefreshRuntime from "${ virtualHmrRuntime . id } ";
1657
1658
1658
1659
const inWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;
1659
1660
let prevRefreshReg;
0 commit comments