gnablib
Version:
A lean, zero dependency library to provide a useful base for your project.
1 lines • 966 B
JavaScript
import{WindowStr as r}from"../primitive/WindowStr.js";import{ParseProblem as t}from"../error/probs/ParseProblem.js";import{StackEntry as e}from"./StackEntry.js";const n=Symbol.for("nodejs.util.inspect.custom");export class StackTrace{constructor(r){this.entries=r}toString(){return this.entries.map((r=>r.toString())).join("\n")}inColor(){return this.entries.map((r=>r.inColor())).join("\n")}get[Symbol.toStringTag](){return"StackTrace"}[n](){return this.inColor()}static parse(n,o={}){if(!n)return new StackTrace([]);const{back:i,localOnly:s,limit:a}=o;let c=e.parseSpider;const l=r.new(n).split("\n");let m=0;l[0].startsWith("Error")&&(m++,c=e.parseV8),i&&(m+=i);const p=[],u=a?m+a:l.length;for(;m<u;){const r=c(l[m++]);if(!(r instanceof t)){if(s){if(r.file.includes("\\node_modules\\"))break;if(r.file.includes("/node_modules/"))break}p.push(r)}}return new StackTrace(p)}static new(r={}){return r.back||(r.back=0),r.back+=1,StackTrace.parse((new Error).stack,r)}}