Home / Function/ parseStackTraceFromChromeStack() — react Function Reference

parseStackTraceFromChromeStack() — react Function Reference

Architecture documentation for the parseStackTraceFromChromeStack() function in parseStackTrace.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  73570ae4_cbd2_53ab_b96e_f8a6ae679f52["parseStackTraceFromChromeStack()"]
  c70671e1_42cb_8c92_da33_5303a72f89b1["parseStackTrace.js"]
  73570ae4_cbd2_53ab_b96e_f8a6ae679f52 -->|defined in| c70671e1_42cb_8c92_da33_5303a72f89b1
  aa8dcbb7_2a63_5ee0_2383_fe507f8a453f["parseStackTraceFromString()"]
  aa8dcbb7_2a63_5ee0_2383_fe507f8a453f -->|calls| 73570ae4_cbd2_53ab_b96e_f8a6ae679f52
  style 73570ae4_cbd2_53ab_b96e_f8a6ae679f52 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/react-devtools-shared/src/backend/utils/parseStackTrace.js lines 13–60

function parseStackTraceFromChromeStack(
  stack: string,
  skipFrames: number,
): ReactStackTrace {
  if (stack.startsWith('Error: react-stack-top-frame\n')) {
    // V8's default formatting prefixes with the error message which we
    // don't want/need.
    stack = stack.slice(29);
  }
  let idx = stack.indexOf('react_stack_bottom_frame');
  if (idx === -1) {
    idx = stack.indexOf('react-stack-bottom-frame');
  }
  if (idx !== -1) {
    idx = stack.lastIndexOf('\n', idx);
  }
  if (idx !== -1) {
    // Cut off everything after the bottom frame since it'll be internals.
    stack = stack.slice(0, idx);
  }
  const frames = stack.split('\n');
  const parsedFrames: ReactStackTrace = [];
  // We skip top frames here since they may or may not be parseable but we
  // want to skip the same number of frames regardless. I.e. we can't do it
  // in the caller.
  for (let i = skipFrames; i < frames.length; i++) {
    const parsed = chromeFrameRegExp.exec(frames[i]);
    if (!parsed) {
      continue;
    }
    let name = parsed[1] || '';
    let isAsync = parsed[8] === 'async ';
    if (name === '<anonymous>') {
      name = '';
    } else if (name.startsWith('async ')) {
      name = name.slice(5);
      isAsync = true;
    }
    let filename = parsed[2] || parsed[5] || '';
    if (filename === '<anonymous>') {
      filename = '';
    }
    const line = +(parsed[3] || parsed[6] || 0);
    const col = +(parsed[4] || parsed[7] || 0);
    parsedFrames.push([name, filename, line, col, 0, 0, isAsync]);
  }
  return parsedFrames;
}

Domain

Subdomains

Frequently Asked Questions

What does parseStackTraceFromChromeStack() do?
parseStackTraceFromChromeStack() is a function in the react codebase, defined in packages/react-devtools-shared/src/backend/utils/parseStackTrace.js.
Where is parseStackTraceFromChromeStack() defined?
parseStackTraceFromChromeStack() is defined in packages/react-devtools-shared/src/backend/utils/parseStackTrace.js at line 13.
What calls parseStackTraceFromChromeStack()?
parseStackTraceFromChromeStack() is called by 1 function(s): parseStackTraceFromString.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free