UNPKG

bippy

Version:

hack into react internals

225 lines (221 loc) 12.4 kB
import { ContextDependency, Fiber, FiberRoot, MemoizedState, ReactDevToolsGlobalHook, ReactRenderer } from "./types-CRmgqKuE.js"; import * as React$1 from "react"; //#region src/install-hook-script-string.d.ts declare const INSTALL_HOOK_SCRIPT_STRING = "(()=>{try{var t=()=>{};const n=new Map;let o=0;globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__={checkDCE:t,supportsFiber:!0,supportsFlight:!0,hasUnsupportedRendererAttached:!1,renderers:n,onCommitFiberRoot:t,onCommitFiberUnmount:t,onPostCommitFiberRoot:t,inject(t){var e=++o;return n.set(e,t),globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__._instrumentationIsActive=!0,e},_instrumentationIsActive:!1,_script:!0}}catch{}})()"; //#endregion //#region src/rdt-hook.d.ts declare const version: string | undefined; declare const BIPPY_INSTRUMENTATION_STRING: string; declare const isRealReactDevtools: (rdtHook?: ReactDevToolsGlobalHook) => boolean; declare const isReactRefresh: (rdtHook?: ReactDevToolsGlobalHook) => boolean; declare const _renderers: Set<ReactRenderer>; declare const installRDTHook: (onActive?: () => unknown) => ReactDevToolsGlobalHook; declare const patchRDTHook: (onActive?: () => unknown) => void; declare const hasRDTHook: () => boolean; /** * Returns the current React DevTools global hook. */ declare const getRDTHook: (onActive?: () => unknown) => ReactDevToolsGlobalHook; declare const isClientEnvironment: () => boolean; /** * Usually used purely for side effect */ declare const safelyInstallRDTHook: () => void; //#endregion //#region src/core.d.ts declare const FunctionComponentTag = 0; declare const ClassComponentTag = 1; declare const HostRootTag = 3; declare const HostComponentTag = 5; declare const HostTextTag = 6; declare const FragmentTag = 7; declare const ContextConsumerTag = 9; declare const ForwardRefTag = 11; declare const SuspenseComponentTag = 13; declare const MemoComponentTag = 14; declare const SimpleMemoComponentTag = 15; declare const DehydratedSuspenseComponentTag = 18; declare const OffscreenComponentTag = 22; declare const LegacyHiddenComponentTag = 23; declare const HostHoistableTag = 26; declare const HostSingletonTag = 27; declare const CONCURRENT_MODE_NUMBER = 60111; declare const ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.element)"; declare const TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.transitional.element)"; declare const CONCURRENT_MODE_SYMBOL_STRING = "Symbol(react.concurrent_mode)"; declare const DEPRECATED_ASYNC_MODE_SYMBOL_STRING = "Symbol(react.async_mode)"; /** * Returns `true` if object is a React Element. * * @see https://react.dev/reference/react/isValidElement */ declare const isValidElement: (element: unknown) => element is React$1.ReactElement; /** * Returns `true` if object is a React Fiber. */ declare const isValidFiber: (fiber: unknown) => fiber is Fiber; /** * Returns `true` if fiber is a host fiber. Host fibers are DOM nodes in react-dom, `View` in react-native, etc. * * @see https://reactnative.dev/architecture/glossary#host-view-tree-and-host-view */ declare const isHostFiber: (fiber: Fiber) => boolean; /** * Returns `true` if fiber is a composite fiber. Composite fibers are fibers that can render (like functional components, class components, etc.) * * @see https://reactnative.dev/architecture/glossary#react-composite-components */ declare const isCompositeFiber: (fiber: Fiber) => boolean; /** * Traverses up or down a {@link Fiber}'s contexts, return `true` to stop and select the current and previous context value. */ declare const traverseContexts: (fiber: Fiber, selector: (nextValue: ContextDependency<unknown> | null | undefined, prevValue: ContextDependency<unknown> | null | undefined) => boolean | void) => boolean; /** * Traverses up or down a {@link Fiber}'s states, return `true` to stop and select the current and previous state value. This stores both state values and effects. */ declare const traverseState: (fiber: Fiber, selector: (nextValue: MemoizedState | null | undefined, prevValue: MemoizedState | null | undefined) => boolean | void) => boolean; /** * Traverses up or down a {@link Fiber}'s props, return `true` to stop and select the current and previous props value. */ declare const traverseProps: (fiber: Fiber, selector: (propName: string, nextValue: unknown, prevValue: unknown) => boolean | void) => boolean; /** * Returns `true` if the {@link Fiber} has rendered. Note that this does not mean the fiber has rendered in the current commit, just that it has rendered in the past. */ declare const didFiberRender: (fiber: Fiber) => boolean; /** * Returns `true` if the {@link Fiber} has committed. Note that this does not mean the fiber has committed in the current commit, just that it has committed in the past. */ declare const didFiberCommit: (fiber: Fiber) => boolean; /** * Returns all host {@link Fiber}s that have committed and rendered. */ declare const getMutatedHostFibers: (fiber: Fiber) => Fiber[]; /** * Returns the stack of {@link Fiber}s from the current fiber to the root fiber. * * @example * ```ts * [fiber, fiber.return, fiber.return.return, ...] * ``` */ declare const getFiberStack: (fiber: Fiber) => Fiber[]; /** * Returns `true` if the {@link Fiber} should be filtered out during reconciliation. */ declare const shouldFilterFiber: (fiber: Fiber) => boolean; /** * Returns the nearest host {@link Fiber} to the current {@link Fiber}. */ declare const getNearestHostFiber: (fiber: Fiber, ascending?: boolean) => Fiber | null; /** * Returns all host {@link Fiber}s in the tree that are associated with the current {@link Fiber}. */ declare const getNearestHostFibers: (fiber: Fiber) => Fiber[]; /** * Traverses up or down a {@link Fiber}, return `true` to stop and select a node. */ declare const traverseFiber: (fiber: Fiber | null, selector: (node: Fiber) => boolean | void, ascending?: boolean) => Fiber | null; /** * Returns the timings of the {@link Fiber}. * * @example * ```ts * const { selfTime, totalTime } = getTimings(fiber); * console.log(selfTime, totalTime); * ``` */ declare const getTimings: (fiber?: Fiber | null | undefined) => { selfTime: number; totalTime: number; }; /** * Returns `true` if the {@link Fiber} uses React Compiler's memo cache. */ declare const hasMemoCache: (fiber: Fiber) => boolean; /** * Returns the type (e.g. component definition) of the {@link Fiber} */ declare const getType: (type: unknown) => React$1.ComponentType<unknown> | null; /** * Returns the display name of the {@link Fiber} type. */ declare const getDisplayName: (type: unknown) => string | null; /** * Returns the build type of the React renderer. */ declare const detectReactBuildType: (renderer: ReactRenderer) => "development" | "production"; /** * Returns `true` if bippy's instrumentation is active. */ declare const isInstrumentationActive: () => boolean; /** * Returns the latest fiber (since it may be double-buffered). */ declare const getLatestFiber: (fiber: Fiber) => Fiber; type RenderPhase = 'mount' | 'update' | 'unmount'; type RenderHandler = <S>(fiber: Fiber, phase: RenderPhase, state?: S) => unknown; declare const fiberIdMap: WeakMap<Fiber, number>; declare const setFiberId: (fiber: Fiber, id?: number) => void; declare const getFiberId: (fiber: Fiber) => number; declare const mountFiberRecursively: (onRender: RenderHandler, firstChild: Fiber, traverseSiblings: boolean) => void; declare const updateFiberRecursively: (onRender: RenderHandler, nextFiber: Fiber, prevFiber: Fiber, parentFiber: Fiber | null) => void; declare const unmountFiber: (onRender: RenderHandler, fiber: Fiber) => void; declare const unmountFiberChildrenRecursively: (onRender: RenderHandler, fiber: Fiber) => void; /** * Creates a fiber visitor function. Must pass a fiber root and a render handler. * @example * traverseRenderedFibers(root, (fiber, phase) => { * console.log(phase) * }) */ declare const traverseRenderedFibers: (root: FiberRoot, onRender: RenderHandler) => void; /** * @deprecated use `traverseRenderedFibers` instead */ declare const createFiberVisitor: ({ onRender }: { onRender: RenderHandler; onError: (error: unknown) => unknown; }) => (<S>(_rendererID: number, root: FiberRoot | Fiber, _state?: S) => void); interface InstrumentationOptions { onCommitFiberRoot?: (rendererID: number, root: FiberRoot, priority: void | number) => unknown; onCommitFiberUnmount?: (rendererID: number, fiber: Fiber) => unknown; onPostCommitFiberRoot?: (rendererID: number, root: FiberRoot) => unknown; onActive?: () => unknown; name?: string; } /** * Instruments the DevTools hook. * @example * const hook = instrument({ * onActive() { * console.log('initialized'); * }, * onCommitFiberRoot(rendererID, root) { * console.log('fiberRoot', root.current) * }, * }); */ declare const instrument: (options: InstrumentationOptions) => ReactDevToolsGlobalHook; declare const getFiberFromHostInstance: <T>(hostInstance: T) => Fiber | null; declare const INSTALL_ERROR: Error; declare const _fiberRoots: Set<any>; declare const secure: (options: InstrumentationOptions, secureOptions?: { minReactMajorVersion?: number; dangerouslyRunInProduction?: boolean; onError?: (error?: unknown) => unknown; installCheckTimeout?: number; isProduction?: boolean; }) => InstrumentationOptions; /** * a wrapper around the {@link instrument} function that sets the `onCommitFiberRoot` hook. * * @example * onCommitFiberRoot((root) => { * console.log(root.current); * }); */ declare const onCommitFiberRoot: (handler: (root: FiberRoot) => void) => ReactDevToolsGlobalHook; //#endregion export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER as CONCURRENT_MODE_NUMBER$1, CONCURRENT_MODE_SYMBOL_STRING as CONCURRENT_MODE_SYMBOL_STRING$1, ClassComponentTag as ClassComponentTag$1, ContextConsumerTag as ContextConsumerTag$1, DEPRECATED_ASYNC_MODE_SYMBOL_STRING as DEPRECATED_ASYNC_MODE_SYMBOL_STRING$1, DehydratedSuspenseComponentTag as DehydratedSuspenseComponentTag$1, ELEMENT_TYPE_SYMBOL_STRING as ELEMENT_TYPE_SYMBOL_STRING$1, ForwardRefTag as ForwardRefTag$1, FragmentTag as FragmentTag$1, FunctionComponentTag as FunctionComponentTag$1, HostComponentTag as HostComponentTag$1, HostHoistableTag as HostHoistableTag$1, HostRootTag as HostRootTag$1, HostSingletonTag as HostSingletonTag$1, HostTextTag as HostTextTag$1, INSTALL_ERROR as INSTALL_ERROR$1, INSTALL_HOOK_SCRIPT_STRING as INSTALL_HOOK_SCRIPT_STRING$1, InstrumentationOptions, LegacyHiddenComponentTag as LegacyHiddenComponentTag$1, MemoComponentTag as MemoComponentTag$1, OffscreenComponentTag as OffscreenComponentTag$1, RenderHandler, RenderPhase, SimpleMemoComponentTag as SimpleMemoComponentTag$1, SuspenseComponentTag as SuspenseComponentTag$1, TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING as TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING$1, _fiberRoots as _fiberRoots$1, _renderers, createFiberVisitor as createFiberVisitor$1, detectReactBuildType as detectReactBuildType$1, didFiberCommit as didFiberCommit$1, didFiberRender as didFiberRender$1, fiberIdMap as fiberIdMap$1, getDisplayName as getDisplayName$1, getFiberFromHostInstance as getFiberFromHostInstance$1, getFiberId as getFiberId$1, getFiberStack as getFiberStack$1, getLatestFiber as getLatestFiber$1, getMutatedHostFibers as getMutatedHostFibers$1, getNearestHostFiber as getNearestHostFiber$1, getNearestHostFibers as getNearestHostFibers$1, getRDTHook, getTimings as getTimings$1, getType as getType$1, hasMemoCache as hasMemoCache$1, hasRDTHook, installRDTHook, instrument as instrument$1, isClientEnvironment, isCompositeFiber as isCompositeFiber$1, isHostFiber as isHostFiber$1, isInstrumentationActive as isInstrumentationActive$1, isReactRefresh, isRealReactDevtools, isValidElement as isValidElement$1, isValidFiber as isValidFiber$1, mountFiberRecursively as mountFiberRecursively$1, onCommitFiberRoot as onCommitFiberRoot$1, patchRDTHook, safelyInstallRDTHook, secure as secure$1, setFiberId as setFiberId$1, shouldFilterFiber as shouldFilterFiber$1, traverseContexts as traverseContexts$1, traverseFiber as traverseFiber$1, traverseProps as traverseProps$1, traverseRenderedFibers as traverseRenderedFibers$1, traverseState as traverseState$1, unmountFiber as unmountFiber$1, unmountFiberChildrenRecursively as unmountFiberChildrenRecursively$1, updateFiberRecursively as updateFiberRecursively$1, version };