corde
Version:
A simple library for Discord bot tests
48 lines (40 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.getStackTrace = void 0;
const consts_1 = require("../consts");
function getStackTrace(stackLimit, removeFirstStack = true, functionName) {
const obj = {};
Error.prepareStackTrace = (_, calls) => {
const stacksWithoutFirstCall = calls.slice(removeFirstStack ? 1 : 0);
const formatFunctionName = functionName ? `${functionName} ` : "";
const trace =
consts_1.EXPECT_RECEIVED_TAB_SPACE +
"at " +
formatFunctionName +
stacksWithoutFirstCall
.filter((s) => isStrackRelevant(s))
.slice(0, stackLimit ?? consts_1.DEFAULT_STACK_TRACE_LIMIT)
.join("\n" + consts_1.EXPECT_RECEIVED_TAB_SPACE + "at ");
const formatedPath = process.cwd().replace(/\\/g, "\\\\");
const regex = new RegExp(formatedPath + "\\\\", "g");
return trace.replace(regex, "");
};
Error.captureStackTrace(obj, getStackTrace);
return obj.stack;
}
exports.getStackTrace = getStackTrace;
function isStrackRelevant(stack) {
const fileName = stack.getFileName();
const functionName = stack.getFunctionName();
return (
!stack.isNative() &&
!stack.isEval() &&
(!functionName || !functionName.includes("Promise")) &&
(!fileName ||
(!fileName.startsWith("internal") &&
!fileName.includes("\node_modules") &&
!fileName.includes("node_modules")))
);
}