MCPcopy
hub / github.com/vitejs/vite / formatConsoleArgs

Function formatConsoleArgs

packages/vite/src/shared/forwardConsole.ts:118–187  ·  view source on GitHub ↗
(args: unknown[])

Source from the content-addressed store, hash-verified

116// Zero dep version of Vitest's console formatter
117// https://github.com/vitest-dev/vitest/blob/a2d650e00dbd8220397c5c25aef05c850100e446/packages/utils/src/display.ts#L129
118export function formatConsoleArgs(args: unknown[]): string {
119 if (args.length === 0) {
120 return ''
121 }
122
123 if (typeof args[0] !== 'string') {
124 return args.map((arg) => stringifyConsoleArg(arg)).join(' ')
125 }
126
127 const len = args.length
128 let i = 1
129 let message = args[0].replace(/%[sdjifoOc%]/g, (specifier) => {
130 if (specifier === '%%') {
131 return '%'
132 }
133 if (i >= len) {
134 return specifier
135 }
136
137 const arg = args[i++]
138 switch (specifier) {
139 case '%s':
140 if (typeof arg === 'bigint') {
141 return `${arg.toString()}n`
142 }
143 return typeof arg === 'object' && arg != null
144 ? stringifyConsoleArg(arg)
145 : String(arg)
146 case '%d':
147 if (typeof arg === 'bigint') {
148 return `${arg.toString()}n`
149 }
150 if (typeof arg === 'symbol') {
151 return 'NaN'
152 }
153 return Number(arg).toString()
154 case '%i':
155 if (typeof arg === 'bigint') {
156 return `${arg.toString()}n`
157 }
158 return Number.parseInt(String(arg), 10).toString()
159 case '%f':
160 return Number.parseFloat(String(arg)).toString()
161 case '%o':
162 case '%O':
163 return stringifyConsoleArg(arg)
164 case '%j':
165 try {
166 const serialized = JSON.stringify(arg)
167 return serialized ?? 'undefined'
168 } catch {
169 return '[Circular]'
170 }
171 case '%c':
172 return ''
173 default:
174 return specifier
175 }

Callers 2

sendLogFunction · 0.85

Calls 1

stringifyConsoleArgFunction · 0.85

Tested by

no test coverage detected