mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import Filter from 'ansi-to-html'
|
|
import type { ErrorWithDiff } from 'vitest'
|
|
import { parseStacktrace } from '@vitest/utils/source-map'
|
|
|
|
export function shouldOpenInEditor(name: string, fileName?: string) {
|
|
return fileName && name.endsWith(fileName)
|
|
}
|
|
|
|
export async function openInEditor(name: string, line: number, column: number) {
|
|
const url = encodeURI(`${name}:${line}:${column}`)
|
|
await fetch(`/__open-in-editor?file=${url}`)
|
|
}
|
|
|
|
export function createAnsiToHtmlFilter(dark: boolean) {
|
|
return new Filter({
|
|
fg: dark ? '#FFF' : '#000',
|
|
bg: dark ? '#000' : '#FFF',
|
|
})
|
|
}
|
|
|
|
function isPrimitive(value: unknown) {
|
|
return (
|
|
value === null || (typeof value !== 'function' && typeof value !== 'object')
|
|
)
|
|
}
|
|
|
|
export function parseError(e: unknown) {
|
|
let error = e as ErrorWithDiff
|
|
|
|
if (isPrimitive(e)) {
|
|
error = {
|
|
message: String(error).split(/\n/g)[0],
|
|
stack: String(error),
|
|
name: '',
|
|
}
|
|
}
|
|
|
|
if (!e) {
|
|
const err = new Error('unknown error')
|
|
error = {
|
|
message: err.message,
|
|
stack: err.stack,
|
|
name: '',
|
|
}
|
|
}
|
|
|
|
error.stacks = parseStacktrace(error.stack || error.stackStr || '', {
|
|
ignoreStackEntries: [],
|
|
})
|
|
|
|
return error
|
|
}
|