vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
40 lines (39 loc) • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createErrorWithCleanStackTrace = createErrorWithCleanStackTrace;
const isNodeJS_js_1 = require("./isNodeJS.js");
function createErrorWithCleanStackTrace(errorMessage, numberOfStackTraceLinesToRemove) {
const err = new Error(errorMessage);
if ((0, isNodeJS_js_1.isNodeJS)()) {
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/);
}