From a18f0c210f3f81b291ab5a07cb241daf2c7bc401 Mon Sep 17 00:00:00 2001 From: arlo Date: Thu, 5 Feb 2026 21:17:35 +0800 Subject: [PATCH 1/2] feat(core): devtools config --- packages/core/src/index.ts | 1 + packages/core/src/node/config.ts | 35 ++++++++++++++++++++++++++++++++ packages/core/src/node/utils.ts | 3 +++ 3 files changed, 39 insertions(+) create mode 100644 packages/core/src/node/config.ts create mode 100644 packages/core/src/node/utils.ts diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 85b777e6..782e57ee 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,3 +1,4 @@ +export * from './node/config' export { createDevToolsContext } from './node/context' export { DevTools } from './node/plugins' export { createDevToolsMiddleware } from './node/server' diff --git a/packages/core/src/node/config.ts b/packages/core/src/node/config.ts new file mode 100644 index 00000000..4c0dfdf9 --- /dev/null +++ b/packages/core/src/node/config.ts @@ -0,0 +1,35 @@ +import type { StartOptions } from './cli-commands' +import { isObject } from './utils' + +export interface DevToolsConfig extends Partial { + enabled: boolean + /** + * Disable client authentication. + * + * Beware that if you disable client authentication, + * any browsers can connect to the devtools and access to your server and filesystem. + * (including other devices, if you open server `host` option to LAN or WAN) + * + * @default true + */ + clientAuth?: boolean +} + +export interface ResolvedDevToolsConfig { + config: Omit & { host: string } + enabled: boolean +} + +export function normalizeDevToolsConfig( + config: DevToolsConfig | boolean | undefined, + host: string, +): ResolvedDevToolsConfig { + return { + enabled: config === true || !!(config && config.enabled), + config: { + ...(isObject(config) ? config : {}), + clientAuth: isObject(config) ? config.clientAuth : true, + host: isObject(config) ? (config?.host ?? host) : host, + }, + } +} diff --git a/packages/core/src/node/utils.ts b/packages/core/src/node/utils.ts new file mode 100644 index 00000000..4b3c10e0 --- /dev/null +++ b/packages/core/src/node/utils.ts @@ -0,0 +1,3 @@ +export function isObject(value: unknown): value is Record { + return Object.prototype.toString.call(value) === '[object Object]' +} From 84f313a36863e9a2e9a198f0617ce768767bbc49 Mon Sep 17 00:00:00 2001 From: arlo Date: Fri, 6 Feb 2026 08:35:29 +0800 Subject: [PATCH 2/2] chore: update --- packages/core/src/node/config.ts | 4 ++-- test/exports/@vitejs/devtools.yaml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/core/src/node/config.ts b/packages/core/src/node/config.ts index 4c0dfdf9..16b5191e 100644 --- a/packages/core/src/node/config.ts +++ b/packages/core/src/node/config.ts @@ -28,8 +28,8 @@ export function normalizeDevToolsConfig( enabled: config === true || !!(config && config.enabled), config: { ...(isObject(config) ? config : {}), - clientAuth: isObject(config) ? config.clientAuth : true, - host: isObject(config) ? (config?.host ?? host) : host, + clientAuth: isObject(config) ? (config.clientAuth ?? true) : true, + host: isObject(config) ? (config.host ?? host) : host, }, } } diff --git a/test/exports/@vitejs/devtools.yaml b/test/exports/@vitejs/devtools.yaml index 76311d2c..d21dfabc 100644 --- a/test/exports/@vitejs/devtools.yaml +++ b/test/exports/@vitejs/devtools.yaml @@ -2,6 +2,7 @@ createDevToolsContext: function createDevToolsMiddleware: function DevTools: function + normalizeDevToolsConfig: function ./cli-commands: build: function start: function