Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/sad-weeks-pay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@tanstack/devtools-vite': patch
---

Added css format specifier support to enhancedLogs
17 changes: 17 additions & 0 deletions packages/devtools-vite/src/enhance-logs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,21 @@ describe('remove-devtools', () => {
)
expect(output).toBe(undefined)
})

test('it adds enhanced console.log with css formatting to console.log()', () => {
const output = removeEmptySpace(
enhanceConsoleLog(
`
console.log('This is a log')
`,
'test.jsx',
3000,
true,
)!.code,
)
expect(output.includes('color:#A0A')).toEqual(true)
expect(output.includes('color:#FFF')).toEqual(true)
expect(output.includes('color:#55F')).toEqual(true)
expect(output.includes('color:#FFF')).toEqual(true)
})
})
36 changes: 29 additions & 7 deletions packages/devtools-vite/src/enhance-logs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ const transform = (
ast: ParseResult<Babel.File>,
filePath: string,
port: number,
cssFormatting: boolean,
) => {
let didTransform = false

Expand All @@ -31,11 +32,27 @@ const transform = (
location.start.column,
]
const finalPath = `${filePath}:${lineNumber}:${column + 1}`
path.node.arguments.unshift(
t.stringLiteral(
`${chalk.magenta('LOG')} ${chalk.blueBright(`${finalPath} - http://localhost:${port}/__tsd/open-source?source=${encodeURIComponent(finalPath)}`)}\n → `,
),
)
// Prefer ANSI escape codes for formatting.
if (!cssFormatting) {
path.node.arguments.unshift(
t.stringLiteral(
`${chalk.magenta('LOG')} ${chalk.blueBright(`${finalPath} - http://localhost:${port}/__tsd/open-source?source=${encodeURIComponent(finalPath)}`)}\n → `,
),
)
} else {
path.node.arguments.unshift(
// LOG with css formatting specifiers: %c
t.stringLiteral(
`%c${'LOG'}%c %c${`${finalPath} - http://localhost:${port}/__tsd/open-source?source=${encodeURIComponent(finalPath)}`}%c \n → `,
),
// magenta
t.stringLiteral('color:#A0A'),
t.stringLiteral('color:#FFF'),
// blueBright
t.stringLiteral('color:#55F'),
t.stringLiteral('color:#FFF'),
)
}
didTransform = true
}
},
Expand All @@ -44,7 +61,12 @@ const transform = (
return didTransform
}

export function enhanceConsoleLog(code: string, id: string, port: number) {
export function enhanceConsoleLog(
code: string,
id: string,
port: number,
cssFormatting?: boolean,
) {
const [filePath] = id.split('?')
// eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
const location = filePath?.replace(normalizePath(process.cwd()), '')!
Expand All @@ -54,7 +76,7 @@ export function enhanceConsoleLog(code: string, id: string, port: number) {
sourceType: 'module',
plugins: ['jsx', 'typescript'],
})
const didTransform = transform(ast, location, port)
const didTransform = transform(ast, location, port, cssFormatting === true)
if (!didTransform) {
return
}
Expand Down
13 changes: 12 additions & 1 deletion packages/devtools-vite/src/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ export type TanStackDevtoolsViteConfig = {
* @default true
*/
enabled: boolean
/**
* Whether to use CSS formatting for enhanced logging.
* @note Chrome supports ANSI escape codes for formatting. Firefox does not.
* @default false
*/
cssFormatting?: boolean
}
/**
* Whether to remove devtools from the production build.
Expand Down Expand Up @@ -433,7 +439,12 @@ export const devtools = (args?: TanStackDevtoolsViteConfig): Array<Plugin> => {
)
return

return enhanceConsoleLog(code, id, port)
return enhanceConsoleLog(
code,
id,
port,
enhancedLogsConfig.cssFormatting,
)
},
},
{
Expand Down