( transport: NormalizedModuleRunnerTransport, options: ResolvedForwardConsoleOptions, console: Console = globalThis.console, )
| 24 | } |
| 25 | |
| 26 | export function setupForwardConsoleHandler( |
| 27 | transport: NormalizedModuleRunnerTransport, |
| 28 | options: ResolvedForwardConsoleOptions, |
| 29 | console: Console = globalThis.console, |
| 30 | ): void { |
| 31 | if (!options.enabled) { |
| 32 | return |
| 33 | } |
| 34 | |
| 35 | async function sendError(type: 'error' | 'unhandled-rejection', error: any) { |
| 36 | await transport.send({ |
| 37 | type: 'custom', |
| 38 | event: 'vite:forward-console', |
| 39 | data: { |
| 40 | type, |
| 41 | data: { |
| 42 | name: error?.name || 'Unknown Error', |
| 43 | message: error?.message || String(error), |
| 44 | stack: error?.stack, |
| 45 | }, |
| 46 | } satisfies ForwardConsolePayload, |
| 47 | }) |
| 48 | } |
| 49 | |
| 50 | async function sendLog(level: ForwardConsoleLogLevel, args: unknown[]) { |
| 51 | try { |
| 52 | await transport.send({ |
| 53 | type: 'custom', |
| 54 | event: 'vite:forward-console', |
| 55 | data: { |
| 56 | type: 'log', |
| 57 | data: { |
| 58 | level, |
| 59 | message: formatConsoleArgs(args), |
| 60 | }, |
| 61 | } satisfies ForwardConsolePayload, |
| 62 | }) |
| 63 | } catch (err) { |
| 64 | try { |
| 65 | await sendError('unhandled-rejection', err) |
| 66 | } catch (err) { |
| 67 | if (!(err instanceof SendBeforeConnectError)) { |
| 68 | originalConsoleError('Failed to send error to Vite server:', err) |
| 69 | } |
| 70 | } |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | const originalConsoleError = console.error |
| 75 | |
| 76 | for (const level of options.logLevels) { |
| 77 | const original = (console as any)[level] |
| 78 | if (typeof original !== 'function') { |
| 79 | continue |
| 80 | } |
| 81 | ;(console as any)[level] = (...args: unknown[]) => { |
| 82 | original(...args) |
| 83 | sendLog(level, args) |
no test coverage detected