diff options
Diffstat (limited to 'vanilla/node_modules/@vitest/utils/dist/error.js')
| -rw-r--r-- | vanilla/node_modules/@vitest/utils/dist/error.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vanilla/node_modules/@vitest/utils/dist/error.js b/vanilla/node_modules/@vitest/utils/dist/error.js new file mode 100644 index 0000000..14886d0 --- /dev/null +++ b/vanilla/node_modules/@vitest/utils/dist/error.js @@ -0,0 +1,42 @@ +import { printDiffOrStringify } from './diff.js'; +import { stringify } from './display.js'; +import { serializeValue } from './serialize.js'; +import '@vitest/pretty-format'; +import 'tinyrainbow'; +import './helpers.js'; +import './constants.js'; +import './chunk-_commonjsHelpers.js'; + +function processError(_err, diffOptions, seen = new WeakSet()) { + if (!_err || typeof _err !== "object") { + return { message: String(_err) }; + } + const err = _err; + if (err.showDiff || err.showDiff === undefined && err.expected !== undefined && err.actual !== undefined) { + err.diff = printDiffOrStringify(err.actual, err.expected, { + ...diffOptions, + ...err.diffOptions + }); + } + if ("expected" in err && typeof err.expected !== "string") { + err.expected = stringify(err.expected, 10); + } + if ("actual" in err && typeof err.actual !== "string") { + err.actual = stringify(err.actual, 10); + } + // some Error implementations may not allow rewriting cause + // in most cases, the assignment will lead to "err.cause = err.cause" + try { + if (!seen.has(err) && typeof err.cause === "object") { + seen.add(err); + err.cause = processError(err.cause, diffOptions, seen); + } + } catch {} + try { + return serializeValue(err); + } catch (e) { + return serializeValue(new Error(`Failed to fully serialize error: ${e === null || e === void 0 ? void 0 : e.message}\nInner error message: ${err === null || err === void 0 ? void 0 : err.message}`)); + } +} + +export { processError, serializeValue as serializeError }; |
