import { wrapCallSite } from 'source-map-support';

export default function captureStackTrace(skip = 0): NodeJS.CallSite[] {
  const rawPrepareStackTrace = Error.prepareStackTrace;
  try {
    Error.prepareStackTrace = (_, stack) => stack;
    const v: { stack: NodeJS.CallSite[] } = { stack: [] };
    Error.captureStackTrace(v);
    return v.stack.slice(1 + skip).map(i => wrapCallSite(i));
  } finally {
    Error.prepareStackTrace = rawPrepareStackTrace;
  }
}