diff --git a/src/react-native/get-rendered-by.ts b/src/react-native/get-rendered-by.ts index cae2103..f7874c8 100644 --- a/src/react-native/get-rendered-by.ts +++ b/src/react-native/get-rendered-by.ts @@ -1,5 +1,4 @@ import symbolicateStackTrace from "react-native/Libraries/Core/Devtools/symbolicateStackTrace"; -import type { StackFrame } from "react-native/Libraries/Core/Devtools/parseErrorStack"; import { ReactNativeFiberNode } from "./types"; export type RenderedByFrame = { @@ -10,6 +9,22 @@ export type RenderedByFrame = { collapse: boolean; }; +type SymbolicatedStackFrame = { + methodName: string; + file: string | null | undefined; + lineNumber: number | null | undefined; + column: number | null | undefined; + collapse?: boolean; +}; + +type MetroStackFrame = { + methodName: string; + file: string | null | undefined; + lineNumber: number | null | undefined; + column: number | null | undefined; + collapse: boolean; +}; + type V8CallSite = { getFunctionName(): string | null; getFileName(): string | null; @@ -158,7 +173,7 @@ const getRenderedByFrames = (fiber: any): RenderedByFrame[] => { return result; }; -const toMetroStackFrame = (frame: RenderedByFrame): StackFrame => { +const toMetroStackFrame = (frame: RenderedByFrame): MetroStackFrame => { return { methodName: frame.name, file: frame.file ?? undefined, @@ -175,7 +190,8 @@ export const getRenderedBy = async (fiber: ReactNativeFiberNode): Promise; + return compatibleStack .filter((sf) => sf.collapse !== true) .map((sf, i) => ({ name: frames[i]?.name ?? sf.methodName, diff --git a/vitest.config.ts b/vitest.config.ts index e975a31..bb7f687 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -3,6 +3,7 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { environment: "node", + passWithNoTests: true, setupFiles: ["./src/react-native/__tests__/setup.ts"], }, });