Sha256: c343bee7b4fb433556081dd3cfa286f4be9a1773bce6ad756b45e98e80bf7c04
Contents?: true
Size: 1.95 KB
Versions: 26
Compression:
Stored size: 1.95 KB
Contents
import { channel, client } from '@vitest/browser/client' function serializeError(unhandledError) { if (typeof unhandledError !== 'object' || !unhandledError) { return { message: String(unhandledError), } } return { name: unhandledError.name, message: unhandledError.message, stack: String(unhandledError.stack), } } function catchWindowErrors(errorEvent, prop, cb) { let userErrorListenerCount = 0 function throwUnhandlerError(e) { if (userErrorListenerCount === 0 && e[prop] != null) { cb(e) } else { console.error(e[prop]) } } const addEventListener = window.addEventListener.bind(window) const removeEventListener = window.removeEventListener.bind(window) window.addEventListener(errorEvent, throwUnhandlerError) window.addEventListener = function (...args) { if (args[0] === errorEvent) { userErrorListenerCount++ } return addEventListener.apply(this, args) } window.removeEventListener = function (...args) { if (args[0] === errorEvent && userErrorListenerCount) { userErrorListenerCount-- } return removeEventListener.apply(this, args) } return function clearErrorHandlers() { window.removeEventListener(errorEvent, throwUnhandlerError) } } function registerUnexpectedErrors() { catchWindowErrors('error', 'error', event => reportUnexpectedError('Error', event.error)) catchWindowErrors('unhandledrejection', 'reason', event => reportUnexpectedError('Unhandled Rejection', event.reason)) } async function reportUnexpectedError( type, error, ) { const processedError = serializeError(error) await client.rpc.onUnhandledError(processedError, type) const state = __vitest_browser_runner__ if (state.type === 'orchestrator') { return } if (!state.runTests || !__vitest_worker__.current) { channel.postMessage({ type: 'done', filenames: state.files, id: state.iframeId, }) } } registerUnexpectedErrors()
Version data entries
26 entries across 26 versions & 1 rubygems