UNPKG

telefunc

Version:

Remote functions. Instead of API.

35 lines (34 loc) 1.13 kB
export { createErrorWithCleanStackTrace }; function createErrorWithCleanStackTrace(errorMessage, numberOfStackTraceLinesToRemove) { const err = new Error(errorMessage); err.stack = clean(err.stack, numberOfStackTraceLinesToRemove); return err; } function clean(errStack, numberOfStackTraceLinesToRemove) { if (!errStack) { return errStack; } const stackLines = splitByLine(errStack); let linesRemoved = 0; const stackLine__cleaned = stackLines .filter((line) => { // Remove internal stack traces if (line.includes(' (internal/') || line.includes(' (node:internal')) { return false; } if (linesRemoved < numberOfStackTraceLinesToRemove && isStackTraceLine(line)) { linesRemoved++; return false; } return true; }) .join('\n'); return stackLine__cleaned; } function isStackTraceLine(line) { return line.startsWith(' at '); } function splitByLine(str) { // https://stackoverflow.com/questions/21895233/how-in-node-to-split-string-by-newline-n return str.split(/\r?\n/); }