Skip to content

Commit a6a7835

Browse files
committed
Use virtual module to create rpc client
1 parent e377f00 commit a6a7835

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -728,18 +728,7 @@ export default function vitePluginRsc(
728728
this.environment.mode === 'dev' &&
729729
rscPluginOptions.loadModuleDevProxy
730730
) {
731-
const origin = server.resolvedUrls?.local[0]
732-
assert(origin, '[vite-rsc] no server for loadModueleDevProxy')
733-
const endpoint =
734-
origin +
735-
'__vite_rsc_load_module_dev_proxy?' +
736-
new URLSearchParams({ environmentName, entryName })
737-
replacement = `__vite_rsc_rpc.createRpcClient(${JSON.stringify({
738-
endpoint,
739-
})})`
740-
s.prepend(
741-
`import * as __vite_rsc_rpc from "@vitejs/plugin-rsc/utils/rpc";`,
742-
)
731+
replacement = `import("virtual:vite-rsc/rpc-client").then((module) => module.createRpcClient(${JSON.stringify({ environmentName, entryName })}))`
743732
} else if (this.environment.mode === 'dev') {
744733
const environment = server.environments[environmentName]!
745734
const source = getEntrySource(environment.config, entryName)
@@ -851,6 +840,32 @@ export default function vitePluginRsc(
851840
})
852841
},
853842
},
843+
{
844+
name: 'rsc:virtual:vite-rsc/rpc-client',
845+
resolveId(source) {
846+
if (source === 'virtual:vite-rsc/rpc-client') {
847+
return `\0${source}`
848+
}
849+
},
850+
load(id) {
851+
if (id === '\0virtual:vite-rsc/rpc-client') {
852+
const { server } = manager
853+
const origin = server.resolvedUrls?.local[0]
854+
assert(origin, '[vite-rsc] no server for loadModuleDevProxy')
855+
856+
return `\
857+
import * as __vite_rsc_rpc from "@vitejs/plugin-rsc/utils/rpc";
858+
export function createRpcClient(params) {
859+
const endpoint =
860+
"${origin}" +
861+
"__vite_rsc_load_module_dev_proxy?" +
862+
new URLSearchParams(params);
863+
return __vite_rsc_rpc.createRpcClient({ endpoint });
864+
}
865+
`
866+
}
867+
},
868+
},
854869
{
855870
name: 'rsc:virtual:vite-rsc/assets-manifest',
856871
resolveId(source) {

0 commit comments

Comments
 (0)