UNPKG

corde

Version:

A simple library for Discord bot tests

48 lines (40 loc) 1.42 kB
"use strict"; 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"))) ); }