From 90058415d02e562ed77abb920d3df85b14383047 Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Wed, 27 Mar 2024 14:51:59 +0100 Subject: [PATCH] refactor: allow custom connections in node module runner --- packages/vite/src/module-runner/index.ts | 1 + packages/vite/src/module-runner/types.ts | 24 +++++++++---------- .../node/ssr/runtime/serverModuleRunner.ts | 24 ++++++++++++++----- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/packages/vite/src/module-runner/index.ts b/packages/vite/src/module-runner/index.ts index 8b3ae640ed0b0b..efcd72c340a623 100644 --- a/packages/vite/src/module-runner/index.ts +++ b/packages/vite/src/module-runner/index.ts @@ -18,6 +18,7 @@ export type { ModuleRunnerHMRConnection, ModuleRunnerImportMeta, ModuleRunnerOptions, + ModuleRunnerHmr, } from './types' export { ssrDynamicImportKey, diff --git a/packages/vite/src/module-runner/types.ts b/packages/vite/src/module-runner/types.ts index 99fdd21efc9ba7..578a1b6baee75d 100644 --- a/packages/vite/src/module-runner/types.ts +++ b/packages/vite/src/module-runner/types.ts @@ -118,6 +118,17 @@ export type FetchFunction = ( importer?: string, ) => Promise +export interface ModuleRunnerHmr { + /** + * Configure how HMR communicates between the client and the server. + */ + connection: ModuleRunnerHMRConnection + /** + * Configure HMR logger. + */ + logger?: false | HMRLogger +} + export interface ModuleRunnerOptions { /** * Root of the project @@ -140,18 +151,7 @@ export interface ModuleRunnerOptions { /** * Disable HMR or configure HMR options. */ - hmr?: - | false - | { - /** - * Configure how HMR communicates between the client and the server. - */ - connection: ModuleRunnerHMRConnection - /** - * Configure HMR logger. - */ - logger?: false | HMRLogger - } + hmr?: false | ModuleRunnerHmr /** * Custom module cache. If not provided, creates a separate module cache for each ModuleRunner instance. */ diff --git a/packages/vite/src/node/ssr/runtime/serverModuleRunner.ts b/packages/vite/src/node/ssr/runtime/serverModuleRunner.ts index 2def56f9691453..a55bc316f36817 100644 --- a/packages/vite/src/node/ssr/runtime/serverModuleRunner.ts +++ b/packages/vite/src/node/ssr/runtime/serverModuleRunner.ts @@ -1,6 +1,14 @@ import { existsSync, readFileSync } from 'node:fs' -import { ESModulesEvaluator, ModuleRunner } from 'vite/module-runner' -import type { ModuleEvaluator, ModuleRunnerOptions } from 'vite/module-runner' +import { + ESModulesEvaluator, + ModuleRunner +} from 'vite/module-runner' +import type { + ModuleEvaluator, + ModuleRunnerHMRConnection, + ModuleRunnerHmr, + + ModuleRunnerOptions} from 'vite/module-runner' import type { ViteDevServer } from '../../server' import type { DevEnvironment } from '../../server/environment' import { ServerHMRConnector } from './serverHmrConnector' @@ -19,10 +27,8 @@ export interface ServerModuleRunnerOptions hmr?: | false | { - logger?: Exclude< - ModuleRunnerOptions['hmr'], - false | undefined - >['logger'] + connection?: ModuleRunnerHMRConnection + logger?: ModuleRunnerHmr['logger'] } /** * Provide a custom module runner. This controls how the code is executed. @@ -37,6 +43,12 @@ function createHMROptions( if (server.config.server.hmr === false || options.hmr === false) { return false } + if (options.hmr?.connection) { + return { + connection: options.hmr.connection, + logger: options.hmr.logger, + } + } const connection = new ServerHMRConnector(server) return { connection,