fix(lib/modules/finders): correct types for get and lookup

This commit is contained in:
PalmDevs 2025-07-05 14:16:37 +07:00
parent d639d31367
commit 66d95a8c49
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA
2 changed files with 32 additions and 21 deletions

View file

@ -5,6 +5,7 @@ import {
lookupModules,
} from './lookup'
import { waitForModuleByImportedPath, waitForModules } from './wait'
import type { If } from '@revenge-mod/utils/types'
import type { MaybeDefaultExportMatched, Metro } from '../types'
import type { RunFilterReturnExportsOptions } from './_internal'
import type { Filter, FilterResult } from './filters'
@ -14,8 +15,9 @@ import type { WaitForModulesOptions } from './wait'
export type GetModuleOptions<
ReturnNamespace extends boolean = boolean,
Uninitialized extends boolean = boolean,
All extends boolean = boolean,
> = WaitForModulesOptions<ReturnNamespace> &
LookupModulesOptions<ReturnNamespace, Uninitialized> & {
LookupModulesOptions<ReturnNamespace, Uninitialized, All, true> & {
/**
* The maximum number of modules to get.
*
@ -66,10 +68,10 @@ export function getModule<F extends Filter>(
): GetModuleUnsubscribeFunction
export function getModule<
F extends O extends GetModuleOptions<boolean, true>
? Filter<any, false>
: Filter,
O extends GetModuleOptions,
F extends Filter,
const O extends F extends Filter<any, infer WE>
? If<WE, GetModuleOptions<boolean, boolean, false>, GetModuleOptions>
: never,
>(
filter: F,
callback: GetModuleCallback<FilterResult<F>>,

View file

@ -28,6 +28,9 @@ type LookupModulesOptionsWithAll<A extends boolean> = If<
all: A
},
{
/**
* You can only use `all` with exportsless filters!
*/
all?: false
}
>
@ -52,6 +55,9 @@ type LookupModulesOptionsWithInitializedUninitialized<U extends boolean> = {
uninitialized: U
},
{
/**
* You can only use `uninitialized` with exportsless filters!
*/
uninitialized?: false
}
>
@ -94,9 +100,9 @@ export type LookupModulesResult<
F extends Filter,
O extends LookupModulesOptions,
> = [
exports: O extends LookupModulesOptions<boolean, boolean, false, true>
? LookupFilterResult<F, O>
: LookupFilterResult<F, O> | Nullish,
exports: O extends LookupModulesOptions<boolean, boolean, boolean, false>
? LookupFilterResult<F, O> | Nullish
: LookupFilterResult<F, O>,
id: Metro.ModuleID,
]
@ -133,15 +139,14 @@ export function lookupModules<F extends Filter>(
): Generator<LookupModulesResult<F, object>, undefined>
export function lookupModules<
F extends Filter<
any,
O extends
| LookupModulesOptions<boolean, true>
| LookupModulesOptions<boolean, boolean, true>
? false
: true
>,
const O extends LookupModulesOptions,
F extends Filter,
const O extends F extends Filter<any, infer WE>
? If<
WE,
LookupModulesOptions<boolean, false, false>,
LookupModulesOptions
>
: never,
>(filter: F, options: O): Generator<LookupModulesResult<F, O>, undefined>
export function* lookupModules(filter: Filter, options?: LookupModulesOptions) {
@ -252,10 +257,14 @@ export function lookupModule<F extends Filter>(
): LookupModulesResult<F, object> | LookupNotFoundResult
export function lookupModule<
F extends O extends LookupModulesOptions<boolean, true>
? Filter<any, false>
: Filter,
const O extends LookupModulesOptions,
F extends Filter,
const O extends F extends Filter<any, infer WE>
? If<
WE,
LookupModulesOptions<boolean, false, false>,
LookupModulesOptions
>
: never,
>(filter: F, options: O): LookupModulesResult<F, O> | LookupNotFoundResult
export function lookupModule(filter: Filter, options?: LookupModulesOptions) {