From 6df2ae1d1140b9e65be4096c11806f71c27771e0 Mon Sep 17 00:00:00 2001 From: Jonghyeon Ko Date: Sun, 12 Nov 2023 05:38:42 +0900 Subject: [PATCH 1/3] chore(query-core): resolve prettier error (#6359) --- packages/query-core/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index 8bb92eb2bd..8429d42414 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -140,7 +140,7 @@ export interface QueryOptions< retry?: RetryValue retryDelay?: RetryDelayValue networkMode?: NetworkMode - /** + /** * The time in milliseconds that unused/inactive cache data remains in memory. * When a query's cache becomes unused or inactive, that cache data will be garbage collected after this duration. * When different garbage collection times are specified, the longest one will be used. From 8b7cc4313fdd6e128f9bcd6c3f159c16fbbefc15 Mon Sep 17 00:00:00 2001 From: Jonghyeon Ko Date: Sun, 12 Nov 2023 05:42:41 +0900 Subject: [PATCH 2/3] chore(query-core): rename sleep param as ms (#6358) Co-authored-by: Dominik Dorfmeister --- packages/query-core/src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/query-core/src/utils.ts b/packages/query-core/src/utils.ts index 1ac8dc3b99..87975ba318 100644 --- a/packages/query-core/src/utils.ts +++ b/packages/query-core/src/utils.ts @@ -297,9 +297,9 @@ function hasObjectPrototype(o: any): boolean { return Object.prototype.toString.call(o) === '[object Object]' } -export function sleep(timeout: number): Promise { +export function sleep(ms: number): Promise { return new Promise((resolve) => { - setTimeout(resolve, timeout) + setTimeout(resolve, ms) }) } From 7c87c3d7b7fb0edf3a9ac69e2f29c0a3be07a669 Mon Sep 17 00:00:00 2001 From: Bene Date: Sat, 11 Nov 2023 21:47:07 +0100 Subject: [PATCH 3/3] fix(types): pass TError, TQueryData and TQueryKey to PlaceholderDataFunction (#6349) * fix: pass TError, TQueryData and TQueryKey to PlaceholderDataFunction * test: add types test for placeholderData function * style: format --------- Co-authored-by: Benedikt Viebahn Co-authored-by: Dominik Dorfmeister Co-authored-by: Benedikt Viebahn --- .../src/tests/queryObserver.types.test.tsx | 64 +++++++++++++++++++ packages/query-core/src/types.ts | 7 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 packages/query-core/src/tests/queryObserver.types.test.tsx diff --git a/packages/query-core/src/tests/queryObserver.types.test.tsx b/packages/query-core/src/tests/queryObserver.types.test.tsx new file mode 100644 index 0000000000..585b80a6a7 --- /dev/null +++ b/packages/query-core/src/tests/queryObserver.types.test.tsx @@ -0,0 +1,64 @@ +import { describe, it } from 'vitest' +import { QueryObserver } from '..' +import { createQueryClient, doNotExecute } from './utils' +import type { Equal, Expect } from './utils' + +describe('placeholderData', () => { + describe('placeholderData function', () => { + it('previousQuery should have typed queryKey', () => { + doNotExecute(() => { + const queryKey = ['SomeQuery', 42, { foo: 'bar' }] as const + type QueryKey = typeof queryKey + + new QueryObserver(createQueryClient(), { + queryKey, + placeholderData: (_, previousQuery) => { + const previousQueryKey = previousQuery?.queryKey + + const result: Expect< + Equal + > = true + return result + }, + }) + }) + }) + + it('previousQuery should have typed error', () => { + doNotExecute(() => { + class CustomError extends Error { + name = 'CustomError' as const + } + + new QueryObserver(createQueryClient(), { + placeholderData: (_, previousQuery) => { + const error = previousQuery?.state.error + + const result: Expect< + Equal + > = true + return result + }, + }) + }) + }) + + it('previousData should have the same type as query data', () => { + doNotExecute(() => { + const queryData = { foo: 'bar' } as const + type QueryData = typeof queryData + + new QueryObserver(createQueryClient(), { + queryFn: () => queryData, + select: (data) => data.foo, + placeholderData: (previousData) => { + const result: Expect< + Equal + > = true + return result ? previousData : undefined + }, + }) + }) + }) + }) +}) diff --git a/packages/query-core/src/types.ts b/packages/query-core/src/types.ts index 8429d42414..ad6b038599 100644 --- a/packages/query-core/src/types.ts +++ b/packages/query-core/src/types.ts @@ -325,7 +325,12 @@ export interface QueryObserverOptions< */ placeholderData?: | NonFunctionGuard - | PlaceholderDataFunction> + | PlaceholderDataFunction< + NonFunctionGuard, + TError, + NonFunctionGuard, + TQueryKey + > _optimisticResults?: 'optimistic' | 'isRestoring' }