From 4442e893c367a901a4c801816e0ade5b78c291c9 Mon Sep 17 00:00:00 2001 From: "N. Taylor Mullen" Date: Sat, 12 Jul 2025 15:42:47 -0700 Subject: fix(auth): Remove sharp edges from headless auth (#3985) --- packages/cli/src/ui/utils/ConsolePatcher.ts | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 packages/cli/src/ui/utils/ConsolePatcher.ts (limited to 'packages/cli/src/ui/utils') diff --git a/packages/cli/src/ui/utils/ConsolePatcher.ts b/packages/cli/src/ui/utils/ConsolePatcher.ts new file mode 100644 index 00000000..10be3bc7 --- /dev/null +++ b/packages/cli/src/ui/utils/ConsolePatcher.ts @@ -0,0 +1,61 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import util from 'util'; +import { ConsoleMessageItem } from '../types.js'; + +interface ConsolePatcherParams { + onNewMessage: (message: Omit) => void; + debugMode: boolean; +} + +export class ConsolePatcher { + private originalConsoleLog = console.log; + private originalConsoleWarn = console.warn; + private originalConsoleError = console.error; + private originalConsoleDebug = console.debug; + + private params: ConsolePatcherParams; + + constructor(params: ConsolePatcherParams) { + this.params = params; + } + + patch() { + console.log = this.patchConsoleMethod('log', this.originalConsoleLog); + console.warn = this.patchConsoleMethod('warn', this.originalConsoleWarn); + console.error = this.patchConsoleMethod('error', this.originalConsoleError); + console.debug = this.patchConsoleMethod('debug', this.originalConsoleDebug); + } + + cleanup = () => { + console.log = this.originalConsoleLog; + console.warn = this.originalConsoleWarn; + console.error = this.originalConsoleError; + console.debug = this.originalConsoleDebug; + }; + + private formatArgs = (args: unknown[]): string => util.format(...args); + + private patchConsoleMethod = + ( + type: 'log' | 'warn' | 'error' | 'debug', + originalMethod: (...args: unknown[]) => void, + ) => + (...args: unknown[]) => { + if (this.params.debugMode) { + originalMethod.apply(console, args); + } + + if (type !== 'debug' || this.params.debugMode) { + this.params.onNewMessage({ + type, + content: this.formatArgs(args), + count: 1, + }); + } + }; +} -- cgit v1.2.3