refactor: Simplify hydrator type signature to fix type conflicts

This commit is contained in:
2025-02-15 12:04:48 -06:00
parent b4a8f412a1
commit c756bbbc30
+3 -3
View File
@@ -85,12 +85,12 @@ export async function hydrate<T extends Hydrateable | Hydrated<any, any>, K exte
* *
* @returns A promise that resolves to a type guard function. The type guard function returns `true` if the data object was successfully hydrated, otherwise `false`. * @returns A promise that resolves to a type guard function. The type guard function returns `true` if the data object was successfully hydrated, otherwise `false`.
*/ */
export async function hydrator<T extends Hydrateable | Hydrated<any, any>, K extends Array<Expectation>>( export async function hydrator<T extends Hydrateable, K extends Array<Expectation>>(
data: T, data: T,
expectations: K, expectations: K,
client: Client, client: Client,
api: API api: API
): Promise<(data: unknown) => data is T extends Hydrated<infer U, infer H> ? Hydrated<T & U, [...H, ...K]> : Hydrated<T, K>> { ): Promise<(data: unknown) => data is Hydrated<T, K>> {
let hydrated = true; let hydrated = true;
try { try {
@@ -102,7 +102,7 @@ export async function hydrator<T extends Hydrateable | Hydrated<any, any>, K ext
} }
// BUG: Resolves to never after hydrations on an already hydrated object // BUG: Resolves to never after hydrations on an already hydrated object
return function (data: unknown): data is T extends Hydrated<infer U, infer H> ? Hydrated<T & U, [...H, ...K]> : Hydrated<T, K> { return function (data: unknown): data is Hydrated<T, K> {
return hydrated; return hydrated;
} }
} }