mirror of
https://github.com/stefanpejcic/openpanel
synced 2025-06-26 18:28:26 +00:00
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import ErrorStackParser from "error-stack-parser";
|
|
import { cleanStack } from "./clean-stack";
|
|
import { isRefineStack } from "./is-refine-stack";
|
|
import { getPackageNameFromFilename } from "./get-package-name-from-filename";
|
|
import { TraceType } from "@refinedev/devtools-shared";
|
|
|
|
export function getTrace() {
|
|
if (__DEV_CONDITION__ !== "development") {
|
|
return [];
|
|
} else {
|
|
try {
|
|
const error = new Error();
|
|
const stack = ErrorStackParser.parse(error);
|
|
const clean = cleanStack(stack);
|
|
const traces = clean
|
|
.map(
|
|
(frame) =>
|
|
({
|
|
file: frame.fileName,
|
|
line: frame.lineNumber,
|
|
column: frame.columnNumber,
|
|
function: frame.functionName,
|
|
isRefine: isRefineStack(frame.fileName),
|
|
packageName: getPackageNameFromFilename(
|
|
frame.fileName,
|
|
),
|
|
} as TraceType),
|
|
)
|
|
.filter((trace) => trace.function);
|
|
return traces.slice(1);
|
|
} catch (error) {
|
|
return [];
|
|
}
|
|
}
|
|
}
|