import { byProps } from '@revenge-mod/modules/finders/filters' import { waitForModules } from '@revenge-mod/modules/finders/wait' import type { Metro } from '@revenge-mod/modules/types' export let ReactModuleId: Metro.ModuleID export let ReactNativeModuleId: Metro.ModuleID export let ReactJsxRuntimeModuleId: Metro.ModuleID export let React: typeof import('react') export let ReactNative: typeof import('react-native') export let ReactJsxRuntime: typeof import('react/jsx-runtime') let RtCount = 0 const unsubRt = waitForModules( byProps('useState'), (exports, id) => { if (RtCount++ === 2) return unsubRt() ReactModuleId = id React = exports }, ) const unsubRN = waitForModules( byProps('AppRegistry'), (exports, id) => { unsubRN() ReactNativeModuleId = id ReactNative = exports }, ) let RJsxRCount = 0 const unsubRJsxR = waitForModules( byProps('jsxs'), (exports, id) => { if (RJsxRCount++ === 2) return unsubRJsxR() ReactJsxRuntimeModuleId = id ReactJsxRuntime = exports }, )