import type {Facade} from './DevToolsFacade';
import type {
TreeNode,
NodeInfo,
ComponentSource,
OwnersStack,
ParentEntry,
OwnerEntry,
FindComponentsResult,
ToolError,
} from './DevToolsFacadeTreeTools';
import type {
StartProfilingResult,
StopProfilingResult,
TraceOverviewRow,
CommitReport,
} from './DevToolsFacadeProfilerTools';
import {createTreeTools} from './DevToolsFacadeTreeTools';
import {createProfilerTools} from './DevToolsFacadeProfilerTools';
export type {
TreeNode,
NodeInfo,
HookNode,
ComponentSource,
SourceLocation,
OwnersStack,
ComponentBranchEntry,
ParentEntry,
OwnerEntry,
FindComponentsResult,
ToolError,
} from './DevToolsFacadeTreeTools';
export type {
CommitComponent,
TraceOverviewRow,
CommitReport,
StartProfilingResult,
StopProfilingResult,
} from './DevToolsFacadeProfilerTools';
export type Tools = {
getComponentTree: (
depth?: number,
rootUid?: string,
) => Array<TreeNode> | ToolError,
getComponentByUid: (
uid: string,
includeHooks?: boolean,
) => NodeInfo | ToolError,
getComponentByHostInstance: (hostInstance: mixed) => NodeInfo | ToolError,
findComponents: (
name: string,
rootUid?: string,
page?: number,
pageSize?: number,
) => FindComponentsResult | ToolError,
getComponentSource: (uid: string) => ComponentSource | ToolError,
getOwnerStackTrace: (uid: string) => OwnersStack | ToolError,
getParentStack: (uid: string) => Array<ParentEntry> | ToolError,
getOwnerStack: (uid: string) => Array<OwnerEntry> | ToolError,
startProfiling: (traceName?: string) => StartProfilingResult | ToolError,
stopProfiling: () => StopProfilingResult | ToolError,
getTraceOverview: (traceName: string) => Array<TraceOverviewRow> | ToolError,
getCommitReport: (
traceName: string,
commitIndex: number,
) => CommitReport | ToolError,
};
export function createTools(facade: Facade): Tools {
const tree = createTreeTools(facade.fiberRoots, facade.rendererInternals);
const profiler = createProfilerTools(
facade.rendererInternals,
facade.profilingState,
tree.getUid,
);
return {
getComponentTree: tree.getComponentTree,
getComponentByUid: tree.getComponentByUid,
getComponentByHostInstance: tree.getComponentByHostInstance,
findComponents: tree.findComponents,
getComponentSource: tree.getComponentSource,
getOwnerStackTrace: tree.getOwnerStackTrace,
getParentStack: tree.getParentStack,
getOwnerStack: tree.getOwnerStack,
startProfiling: profiler.startProfiling,
stopProfiling: profiler.stopProfiling,
getTraceOverview: profiler.getTraceOverview,
getCommitReport: profiler.getCommitReport,
};
}