revenge-bundle-next/lib/react/src/index.ts

38 lines
1.1 KiB
TypeScript
Raw Normal View History

import { byProps } from '@revenge-mod/modules/finders/filters'
import { waitForModules } from '@revenge-mod/modules/finders/wait'
2025-04-27 14:45:14 +07:00
import type { Metro } from '@revenge-mod/modules/types'
2025-04-27 14:45:14 +07:00
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<typeof React>('useState'), (exports, id) => {
if (RtCount++ === 2) return unsubRt()
ReactModuleId = id
React = exports
})
const unsubRN = waitForModules(byProps<typeof ReactNative>('AppRegistry'), (exports, id) => {
unsubRN()
ReactNativeModuleId = id
ReactNative = exports
})
let RJsxRCount = 0
const unsubRJsxR = waitForModules(byProps<typeof ReactJsxRuntime>('jsxs'), (exports, id) => {
if (RJsxRCount++ === 2) return unsubRJsxR()
ReactJsxRuntimeModuleId = id
ReactJsxRuntime = exports
})