/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @format */ import React from 'react'; import {colors, StackTrace} from 'flipper'; const FacebookLibraries = ['Facebook']; const REGEX = /(?\w*) *(?
0x\w*) (?(.*)) \\+ (?\d*)/; function isSystemLibrary(libraryName: ?string): boolean { return !FacebookLibraries.includes(libraryName); } type Props = { data: Array, skipStackTraceFormat?: boolean, }; export default class extends React.Component { render() { if (this.props.skipStackTraceFormat) { return ( {this.props.data.map((stack_trace_line) => { return { caller: stack_trace_line, }; })} ); } return ( {/* We need to filter out from the stack trace any reference to the plugin such that the information is more coincised and focused */} {this.props.data .filter((stack_trace_line) => { return !stack_trace_line.includes('FlipperKitSectionsPlugin'); }) .map((stack_trace_line) => { const trace = REGEX.exec(stack_trace_line)?.groups; return { bold: !isSystemLibrary(trace?.library), library: trace?.library, address: trace?.address, caller: trace?.caller, lineNumber: trace?.lineNumber, }; })} ); } }