From 1541e70a4dab45b1157b916526388d9a4033b30b Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Wed, 17 Jan 2024 14:02:39 +0100 Subject: [PATCH 1/3] refactor(hmr): provide a separate logger interface --- packages/vite/src/client/client.ts | 13 ++++++++++++- packages/vite/src/shared/hmr.ts | 22 ++++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/packages/vite/src/client/client.ts b/packages/vite/src/client/client.ts index aaea3300bf2619..54c86199dd14d6 100644 --- a/packages/vite/src/client/client.ts +++ b/packages/vite/src/client/client.ts @@ -134,7 +134,18 @@ const debounceReload = (time: number) => { const pageReload = debounceReload(50) const hmrClient = new HMRClient( - console, + { + error: console.error, + debug: console.debug, + updated({ acceptedPath, path }) { + const loggedPath = + acceptedPath === path ? path : `${acceptedPath} via ${path}` + console.debug(`[vite] hot updated: ${loggedPath}`) + }, + invalidated(id, message) { + console.debug(`[vite] invalidate ${id}${message ? `: ${message}` : ''}`) + }, + }, { isReady: () => socket && socket.readyState === 1, send: (message) => socket.send(message), diff --git a/packages/vite/src/shared/hmr.ts b/packages/vite/src/shared/hmr.ts index 9617ddb3a949a4..02e4c9ad679b4f 100644 --- a/packages/vite/src/shared/hmr.ts +++ b/packages/vite/src/shared/hmr.ts @@ -15,6 +15,19 @@ interface HotCallback { fn: (modules: Array) => void } +export interface HMRLogger { + error(msg: string | Error): void + debug(...msg: unknown[]): void + /** + * Log when HMR update is applied + */ + updated(update: Update): void + /** + * Log when module is invalidated via "impoer.meta.hot.invalidate" + */ + invalidated(id: string, message?: string): void +} + export interface HMRConnection { /** * Checked before sending messages to the client. @@ -107,9 +120,7 @@ export class HMRContext implements ViteHotContext { message, }) this.send('vite:invalidate', { path: this.ownerPath, message }) - this.hmrClient.logger.debug( - `[vite] invalidate ${this.ownerPath}${message ? `: ${message}` : ''}`, - ) + this.hmrClient.logger.invalidated(this.ownerPath, message) } on( @@ -196,7 +207,7 @@ export class HMRClient { public messenger: HMRMessenger constructor( - public logger: Console, + public logger: HMRLogger, connection: HMRConnection, // This allows implementing reloading via different methods depending on the environment private importUpdatedModule: (update: Update) => Promise, @@ -293,8 +304,7 @@ export class HMRClient { deps.map((dep) => (dep === acceptedPath ? fetchedModule : undefined)), ) } - const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}` - this.logger.debug(`[vite] hot updated: ${loggedPath}`) + this.logger.updated(update) } } } From 92e90014ca23de65442853806d3dd0379300cf30 Mon Sep 17 00:00:00 2001 From: patak Date: Wed, 17 Jan 2024 22:27:35 +0100 Subject: [PATCH 2/3] chore: typo --- packages/vite/src/shared/hmr.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/shared/hmr.ts b/packages/vite/src/shared/hmr.ts index 02e4c9ad679b4f..38f95905a350bc 100644 --- a/packages/vite/src/shared/hmr.ts +++ b/packages/vite/src/shared/hmr.ts @@ -23,7 +23,7 @@ export interface HMRLogger { */ updated(update: Update): void /** - * Log when module is invalidated via "impoer.meta.hot.invalidate" + * Log when a module is invalidated via "import.meta.hot.invalidate" */ invalidated(id: string, message?: string): void } From 327d46a4f3c4d1fefb1cb6a01f6338a993140eea Mon Sep 17 00:00:00 2001 From: Vladimir Sheremet Date: Thu, 18 Jan 2024 17:13:48 +0100 Subject: [PATCH 3/3] chore: remove unused methods from logger --- packages/vite/src/client/client.ts | 13 +------------ packages/vite/src/shared/hmr.ts | 15 +++++---------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/packages/vite/src/client/client.ts b/packages/vite/src/client/client.ts index 54c86199dd14d6..aaea3300bf2619 100644 --- a/packages/vite/src/client/client.ts +++ b/packages/vite/src/client/client.ts @@ -134,18 +134,7 @@ const debounceReload = (time: number) => { const pageReload = debounceReload(50) const hmrClient = new HMRClient( - { - error: console.error, - debug: console.debug, - updated({ acceptedPath, path }) { - const loggedPath = - acceptedPath === path ? path : `${acceptedPath} via ${path}` - console.debug(`[vite] hot updated: ${loggedPath}`) - }, - invalidated(id, message) { - console.debug(`[vite] invalidate ${id}${message ? `: ${message}` : ''}`) - }, - }, + console, { isReady: () => socket && socket.readyState === 1, send: (message) => socket.send(message), diff --git a/packages/vite/src/shared/hmr.ts b/packages/vite/src/shared/hmr.ts index 38f95905a350bc..f313a51a6a2ea6 100644 --- a/packages/vite/src/shared/hmr.ts +++ b/packages/vite/src/shared/hmr.ts @@ -18,14 +18,6 @@ interface HotCallback { export interface HMRLogger { error(msg: string | Error): void debug(...msg: unknown[]): void - /** - * Log when HMR update is applied - */ - updated(update: Update): void - /** - * Log when a module is invalidated via "import.meta.hot.invalidate" - */ - invalidated(id: string, message?: string): void } export interface HMRConnection { @@ -120,7 +112,9 @@ export class HMRContext implements ViteHotContext { message, }) this.send('vite:invalidate', { path: this.ownerPath, message }) - this.hmrClient.logger.invalidated(this.ownerPath, message) + this.hmrClient.logger.debug( + `[vite] invalidate ${this.ownerPath}${message ? `: ${message}` : ''}`, + ) } on( @@ -304,7 +298,8 @@ export class HMRClient { deps.map((dep) => (dep === acceptedPath ? fetchedModule : undefined)), ) } - this.logger.updated(update) + const loggedPath = isSelfUpdate ? path : `${acceptedPath} via ${path}` + this.logger.debug(`[vite] hot updated: ${loggedPath}`) } } }