Skip to content

Commit f10bca9

Browse files
authored
fix: wrong StackFrame type picked by tsc (#3)
1 parent 53baff6 commit f10bca9

2 files changed

Lines changed: 20 additions & 3 deletions

File tree

src/react-native/get-rendered-by.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import symbolicateStackTrace from "react-native/Libraries/Core/Devtools/symbolicateStackTrace";
2-
import type { StackFrame } from "react-native/Libraries/Core/Devtools/parseErrorStack";
32
import { ReactNativeFiberNode } from "./types";
43

54
export type RenderedByFrame = {
@@ -10,6 +9,22 @@ export type RenderedByFrame = {
109
collapse: boolean;
1110
};
1211

12+
type SymbolicatedStackFrame = {
13+
methodName: string;
14+
file: string | null | undefined;
15+
lineNumber: number | null | undefined;
16+
column: number | null | undefined;
17+
collapse?: boolean;
18+
};
19+
20+
type MetroStackFrame = {
21+
methodName: string;
22+
file: string | null | undefined;
23+
lineNumber: number | null | undefined;
24+
column: number | null | undefined;
25+
collapse: boolean;
26+
};
27+
1328
type V8CallSite = {
1429
getFunctionName(): string | null;
1530
getFileName(): string | null;
@@ -158,7 +173,7 @@ const getRenderedByFrames = (fiber: any): RenderedByFrame[] => {
158173
return result;
159174
};
160175

161-
const toMetroStackFrame = (frame: RenderedByFrame): StackFrame => {
176+
const toMetroStackFrame = (frame: RenderedByFrame): MetroStackFrame => {
162177
return {
163178
methodName: frame.name,
164179
file: frame.file ?? undefined,
@@ -175,7 +190,8 @@ export const getRenderedBy = async (fiber: ReactNativeFiberNode): Promise<Render
175190
try {
176191
const metroFrames = frames.map(toMetroStackFrame);
177192
const { stack: symbolicated } = await symbolicateStackTrace(metroFrames);
178-
return symbolicated
193+
const compatibleStack = symbolicated as ReadonlyArray<SymbolicatedStackFrame>;
194+
return compatibleStack
179195
.filter((sf) => sf.collapse !== true)
180196
.map((sf, i) => ({
181197
name: frames[i]?.name ?? sf.methodName,

vitest.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { defineConfig } from "vitest/config";
33
export default defineConfig({
44
test: {
55
environment: "node",
6+
passWithNoTests: true,
67
setupFiles: ["./src/react-native/__tests__/setup.ts"],
78
},
89
});

0 commit comments

Comments
 (0)