Skip to content

Commit

Permalink
fix: Loosen types for TypedUseQueryOptions (#67)
Browse files Browse the repository at this point in the history
* fix: loose `TypedUseQueryOptions` types

* chore: generate changeset
  • Loading branch information
lukemorales committed Jun 18, 2023
1 parent 4e010b4 commit e6b8389
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
5 changes: 5 additions & 0 deletions .changeset/hot-tips-prove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@lukemorales/query-key-factory': patch
---

Loosen types for `TypedUseQueryOptions` and allow inference of dynamic query options generation
21 changes: 16 additions & 5 deletions src/utility-types.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import type { UseQueryOptions } from '@tanstack/react-query';
import type { QueryFunction, UseQueryOptions } from '@tanstack/react-query';

import type { QueryKeyStore } from './create-query-key-store';
import type {
AnyQueryFactoryOutputCallback,
AnyQueryKeyFactoryResult,
QueryOptionsStruct,
StaticFactoryOutput,
} from './create-query-keys.types';
import type {
Expand Down Expand Up @@ -56,7 +55,19 @@ export type inferQueryKeyStore<Store extends QueryKeyStore<any>> = {
[P in keyof Store]: inferQueryKeys<Store[P]>;
};

type LooseQueryOptionsStruct = { queryKey: AnyMutableOrReadonlyArray; queryFn: QueryFunction<any, any> };

type LooseQueryOptionsStructGenerator = (...args: any[]) => LooseQueryOptionsStruct;

export type TypedUseQueryOptions<
Options extends QueryOptionsStruct<any, any>,
Data = Awaited<ReturnType<Options['queryFn']>>,
> = UseQueryOptions<Awaited<ReturnType<Options['queryFn']>>, unknown, Data, Options['queryKey']>;
Options extends LooseQueryOptionsStruct | LooseQueryOptionsStructGenerator,
Data = Options extends LooseQueryOptionsStructGenerator
? Awaited<ReturnType<ReturnType<Options>['queryFn']>>
: Options extends LooseQueryOptionsStruct
? Awaited<ReturnType<Options['queryFn']>>
: never,
> = Options extends LooseQueryOptionsStructGenerator
? UseQueryOptions<Awaited<ReturnType<ReturnType<Options>['queryFn']>>, unknown, Data, ReturnType<Options>['queryKey']>
: Options extends LooseQueryOptionsStruct
? UseQueryOptions<Awaited<ReturnType<Options['queryFn']>>, unknown, Data, Options['queryKey']>
: never;

0 comments on commit e6b8389

Please sign in to comment.