From a9e1452460a2702beba01bd9fa0ca885217aec4b Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Thu, 21 Nov 2024 20:22:19 +0100 Subject: [PATCH 1/4] feat: expose createServerModuleRunnerTransport --- packages/vite/src/node/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/vite/src/node/index.ts b/packages/vite/src/node/index.ts index 69f47f3164c148..2ef10526242b0b 100644 --- a/packages/vite/src/node/index.ts +++ b/packages/vite/src/node/index.ts @@ -34,7 +34,10 @@ export { export { BuildEnvironment } from './build' export { fetchModule, type FetchModuleOptions } from './ssr/fetchModule' -export { createServerModuleRunner } from './ssr/runtime/serverModuleRunner' +export { + createServerModuleRunner, + createServerModuleRunnerTransport, +} from './ssr/runtime/serverModuleRunner' export { createServerHotChannel } from './server/hmr' export { ssrTransform as moduleRunnerTransform } from './ssr/ssrTransform' export type { ModuleRunnerTransformOptions } from './ssr/ssrTransform' From dfef6983430336f7b8880a7f5e60ea2e297b5097 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Thu, 21 Nov 2024 20:24:09 +0100 Subject: [PATCH 2/4] chore: forgot --- packages/vite/index.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/vite/index.cjs b/packages/vite/index.cjs index 70515aa90c7a8d..82cdb6ac8a3f5e 100644 --- a/packages/vite/index.cjs +++ b/packages/vite/index.cjs @@ -45,6 +45,7 @@ const disallowedVariables = [ // can be exposed, but doesn't make sense as it's Environment API related 'createServerHotChannel', 'createServerModuleRunner', + 'createServerModuleRunnerTransport', 'isRunnableDevEnvironment', ] disallowedVariables.forEach((name) => { From ce3c10b9f61a4138c18b295fc5dc6b1e7fbaa1b9 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Fri, 22 Nov 2024 10:39:00 +0100 Subject: [PATCH 3/4] chore: expose types --- packages/vite/src/node/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/vite/src/node/index.ts b/packages/vite/src/node/index.ts index 2ef10526242b0b..0064bdcb7f7c40 100644 --- a/packages/vite/src/node/index.ts +++ b/packages/vite/src/node/index.ts @@ -172,6 +172,9 @@ export type { HotChannel, ServerHotChannel, HotChannelClient, + NormalizedHotChannel, + NormalizedHotChannelClient, + NormalizedServerHotChannel, } from './server/hmr' export type { FetchFunction, FetchResult } from 'vite/module-runner' From 8d2d100e19ae239d34090ffca09d46dda9aa4df5 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Mon, 9 Dec 2024 16:35:47 +0100 Subject: [PATCH 4/4] build: validate moduleRunnerTransport --- packages/vite/rollup.dts.config.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/vite/rollup.dts.config.ts b/packages/vite/rollup.dts.config.ts index e622053ba156ba..edb10d020e4615 100644 --- a/packages/vite/rollup.dts.config.ts +++ b/packages/vite/rollup.dts.config.ts @@ -94,6 +94,8 @@ function patchTypes(): Plugin { renderChunk(code, chunk) { if ( chunk.fileName.startsWith('module-runner') || + // index and moduleRunner have a common chunk "moduleRunnerTransport" + chunk.fileName.startsWith('moduleRunnerTransport') || chunk.fileName.startsWith('types.d-') ) { validateRunnerChunk.call(this, chunk) @@ -116,6 +118,8 @@ function validateRunnerChunk(this: PluginContext, chunk: RenderedChunk) { if ( !id.startsWith('./') && !id.startsWith('../') && + // index and moduleRunner have a common chunk "moduleRunnerTransport" + !id.startsWith('moduleRunnerTransport.d') && !id.startsWith('types.d') ) { this.warn(`${chunk.fileName} imports "${id}" which is not allowed`) @@ -136,6 +140,8 @@ function validateChunkImports(this: PluginContext, chunk: RenderedChunk) { !id.startsWith('node:') && !id.startsWith('types.d') && !id.startsWith('vite/') && + // index and moduleRunner have a common chunk "moduleRunnerTransport" + !id.startsWith('moduleRunnerTransport.d') && !deps.includes(id) && !deps.some((name) => id.startsWith(name + '/')) ) {