bippy
Version:
hack into react internals
72 lines (69 loc) • 2.35 kB
text/typescript
import { FiberRoot, Fiber as Fiber$1, ReactContext, Lanes } from 'react-reconciler';
import 'react/jsx-runtime';
interface ReactDevToolsGlobalHook {
checkDCE: (fn: unknown) => void;
supportsFiber: boolean;
supportsFlight: boolean;
renderers: Map<number, ReactRenderer>;
hasUnsupportedRendererAttached: boolean;
onCommitFiberRoot: (rendererID: number, root: FiberRoot, priority: void | number) => void;
onCommitFiberUnmount: (rendererID: number, fiber: Fiber) => void;
onPostCommitFiberRoot: (rendererID: number, root: FiberRoot) => void;
inject: (renderer: ReactRenderer) => number;
_instrumentationSource?: string;
_instrumentationIsActive?: boolean;
_sw?: boolean;
}
/**
* Represents a react-internal Fiber node.
*/
type Fiber<T = any> = Omit<Fiber$1, 'stateNode' | 'dependencies' | 'child' | 'sibling' | 'return' | 'alternate' | 'memoizedProps' | 'pendingProps' | 'memoizedState' | 'updateQueue'> & {
stateNode: T;
dependencies: Dependencies | null;
child: Fiber | null;
sibling: Fiber | null;
return: Fiber | null;
alternate: Fiber | null;
memoizedProps: Props;
pendingProps: Props;
memoizedState: MemoizedState;
updateQueue: {
lastEffect: Effect | null;
[key: string]: unknown;
};
};
interface ReactRenderer {
version: string;
bundleType: 0 | 1;
findFiberByHostInstance?: (hostInstance: unknown) => Fiber | null;
}
interface ContextDependency<T> {
context: ReactContext<T>;
memoizedValue: T;
observedBits: number;
next: ContextDependency<unknown> | null;
}
interface Dependencies {
lanes: Lanes;
firstContext: ContextDependency<unknown> | null;
}
interface Effect {
next: Effect | null;
create: (...args: unknown[]) => unknown;
destroy: ((...args: unknown[]) => unknown) | null;
deps: unknown[] | null;
tag: number;
[key: string]: unknown;
}
interface MemoizedState {
memoizedState: unknown;
next: MemoizedState | null;
[key: string]: unknown;
}
interface Props {
[key: string]: unknown;
}
declare global {
var __REACT_DEVTOOLS_GLOBAL_HOOK__: ReactDevToolsGlobalHook | undefined;
}
export type { ContextDependency as C, Dependencies as D, Effect as E, Fiber as F, MemoizedState as M, Props as P, ReactDevToolsGlobalHook as R, ReactRenderer as a };