@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
26 lines • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStackCallersDefaultFilter = void 0;
exports.getStackCallers = getStackCallers;
const collections_base_1 = require("./collections.base");
const typecheckers_1 = require("./typecheckers");
const getStackCallersDefaultFilter = () => ['node_modules', 'node:internal'];
exports.getStackCallersDefaultFilter = getStackCallersDefaultFilter;
/** looks through the current call stack to find all calling functions. default filter: ['node_modules','node:internal'] */
function getStackCallers(levels, skip, filter) {
filter = (0, typecheckers_1.isNotEmptyArray)(filter) ? filter : (0, exports.getStackCallersDefaultFilter)();
const allLines = new Error().stack.split('\n');
const stack = allLines
.filter(s => s.indexOf('at ') > 0)
.map(s => {
const value = s.slice(s.indexOf(' at ') + 4).split(' ');
return value[0] === "async" ? value[1] : value[0];
})
//filter based on the names...
.filter(s => !(0, collections_base_1.firstOrNull)(filter, f => s.includes(f)))
.reverse();
const end = (skip > 0 ? skip + 1 : 1) * -1;
const start = levels > 0 ? stack.length - levels + end : 0;
return stack.slice(start > 0 ? start : 0, end);
}
//# sourceMappingURL=console.js.map