Skip to content

Commit

Permalink
fix(types): repair wrong types passed to DataTag (#6699)
Browse files Browse the repository at this point in the history
* fix: repair wrong types passed to `DataTag`

* test: remove introduced changes and add test for the fixed behavior

* Update packages/angular-query-experimental/src/__tests__/query-options.test-d.ts

* Update packages/angular-query-experimental/src/__tests__/query-options.test-d.ts

---------

Co-authored-by: Dominik Dorfmeister <office@dorfmeister.cc>
  • Loading branch information
lukemorales and TkDodo committed Jan 15, 2024
1 parent 22caf2a commit 020ac08
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,16 @@ test('should tag the queryKey with unknown if there is no queryFn', () => {
assertType<unknown>(queryKey[dataTagSymbol])
})

test('should tag the queryKey with the result type of the QueryFn if select is used', () => {
const { queryKey } = queryOptions({
queryKey: ['key'],
queryFn: () => Promise.resolve(5),
select: (data) => data.toString(),
})

assertType<number>(queryKey[dataTagSymbol])
})

test('should return the proper type when passed to getQueryData', () => {
const { queryKey } = queryOptions({
queryKey: ['key'],
Expand Down
4 changes: 2 additions & 2 deletions packages/angular-query-experimental/src/query-options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export function queryOptions<
>(
options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, TQueryFnData>
}

export function queryOptions<
Expand All @@ -42,7 +42,7 @@ export function queryOptions<
>(
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, TQueryFnData>
}

export function queryOptions(options: unknown) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,22 @@ describe('queryOptions', () => {
return result
})
})
it('should tag the queryKey with the result type of the QueryFn if select is used', () => {
doNotExecute(() => {
const { queryKey } = infiniteQueryOptions({
queryKey: ['key'],
queryFn: () => Promise.resolve('string'),
select: (data) => data.pages,
getNextPageParam: () => 1,
initialPageParam: 1,
})

const result: Expect<
Equal<(typeof queryKey)[typeof dataTagSymbol], InfiniteData<string>>
> = true
return result
})
})
it('should return the proper type when passed to getQueryData', () => {
doNotExecute(() => {
const { queryKey } = infiniteQueryOptions({
Expand Down
14 changes: 14 additions & 0 deletions packages/react-query/src/__tests__/queryOptions.types.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,20 @@ describe('queryOptions', () => {
return result
})
})
it('should tag the queryKey with the result type of the QueryFn if select is used', () => {
doNotExecute(() => {
const { queryKey } = queryOptions({
queryKey: ['key'],
queryFn: () => Promise.resolve(5),
select: (data) => data.toString(),
})

const result: Expect<
Equal<(typeof queryKey)[typeof dataTagSymbol], number>
> = true
return result
})
})
it('should return the proper type when passed to getQueryData', () => {
doNotExecute(() => {
const { queryKey } = queryOptions({
Expand Down
4 changes: 2 additions & 2 deletions packages/react-query/src/infiniteQueryOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export function infiniteQueryOptions<
TQueryKey,
TPageParam
> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>
}

export function infiniteQueryOptions<
Expand All @@ -86,7 +86,7 @@ export function infiniteQueryOptions<
TQueryKey,
TPageParam
> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, InfiniteData<TQueryFnData>>
}

export function infiniteQueryOptions(options: unknown) {
Expand Down
4 changes: 2 additions & 2 deletions packages/react-query/src/queryOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export function queryOptions<
>(
options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, TQueryFnData>
}

export function queryOptions<
Expand All @@ -42,7 +42,7 @@ export function queryOptions<
>(
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, TQueryFnData>
}

export function queryOptions(options: unknown) {
Expand Down
14 changes: 14 additions & 0 deletions packages/vue-query/src/__tests__/queryOptions.types.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,20 @@ describe('queryOptions', () => {
return result
})
})
it('should tag the queryKey with the result type of the QueryFn if select is used', () => {
doNotExecute(() => {
const { queryKey } = queryOptions({
queryKey: ['key'],
queryFn: () => Promise.resolve(5),
select: (data) => data.toString(),
})

const result: Expect<
Equal<(typeof queryKey)[typeof dataTagSymbol], number>
> = true
return result
})
})
it('should return the proper type when passed to getQueryData', () => {
doNotExecute(() => {
const { queryKey } = queryOptions({
Expand Down
4 changes: 2 additions & 2 deletions packages/vue-query/src/queryOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export function queryOptions<
>(
options: UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
): UndefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, TQueryFnData>
}

export function queryOptions<
Expand All @@ -23,7 +23,7 @@ export function queryOptions<
>(
options: DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
): DefinedInitialQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
queryKey: DataTag<TQueryKey, TData>
queryKey: DataTag<TQueryKey, TQueryFnData>
}

export function queryOptions(options: unknown) {
Expand Down

0 comments on commit 020ac08

Please sign in to comment.