UNPKG

polen

Version:

A framework for delightful GraphQL developer portals

49 lines 1.92 kB
import { Err } from '@wollybeard/kit'; import cleanStack from 'clean-stack'; import { ErrorParser } from 'youch-core'; export const reportError = async (value) => { const error = Err.ensure(value); const excludeStackFramesPattern = /.*(?:rolldown-vite|rolldown|node_modules).*/; cleanStackRecursive(error, excludeStackFramesPattern); Err.log(error); const parser = new ErrorParser(); const parsedError = await parser.parse(error); const snippets = createSnippets(parsedError); if (snippets) { console.log(`\n\n\n\n` + snippets); } }; const createSnippets = (parsedError) => { const snippets = parsedError.frames.map((frame) => { let snippet = createSnippet(frame); snippet = frame.fileName + `\n` + frame.lineNumber + `\n\n` + snippet; return snippet; }).join(`\n\n----------------------------------------------------------------------------------\n\n`); return snippets; }; const createSnippet = (stackFrame) => { const snippet = stackFrame.source?.map(line => { return line.lineNumber.toString().padStart(4, ` `) + `: ` + line.chunk; }).join(`\n`); return snippet; }; // todo: // pathFilter: Fn.compose(Str.isMatchWith(excludePattern), Bool.negate) const cleanStackRecursive = (value, excludePattern) => { if (value instanceof AggregateError) { value.errors.forEach((error) => { cleanStackRecursive(error, excludePattern); }); } // console.log(`Filtering path: ${path}`, isInclude ? 'Included' : 'Excluded') if (value instanceof Error) { value.stack = cleanStack(value.stack, { pathFilter: (path) => !path.match(excludePattern), // todo // basePath: config.paths.project.rootDir, // pretty: true, }); cleanStackRecursive(value.cause, excludePattern); } }; //# sourceMappingURL=report-error.js.map