From 6d50e8df210d784d56ca5b0e2b7401b5e62109a2 Mon Sep 17 00:00:00 2001 From: sanding0 <51596529+sanding0@users.noreply.github.com> Date: Tue, 27 Sep 2022 19:06:51 +0800 Subject: [PATCH 1/3] feat(types): clarify SWRResponse type --- _internal/types.ts | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/_internal/types.ts b/_internal/types.ts index 467a8cf06..c07202b4c 100644 --- a/_internal/types.ts +++ b/_internal/types.ts @@ -263,8 +263,8 @@ export type MutatorCallback = ( export type MutatorOptions = { revalidate?: boolean populateCache?: - | boolean - | ((result: any, currentData: Data | undefined) => Data) + | boolean + | ((result: any, currentData: Data | undefined) => Data) optimisticData?: Data | ((currentData?: Data) => Data) rollbackOnError?: boolean } @@ -302,12 +302,12 @@ export type MutatorWrapper = Fn extends ( ...args: [...infer Parameters] ) => infer Result ? Parameters[3] extends boolean - ? Result - : Parameters[3] extends Required> - ? Parameters[3]['populateCache'] extends false - ? never - : Result - : Result + ? Result + : Parameters[3] extends Required> + ? Parameters[3]['populateCache'] extends false + ? never + : Result + : Result : never export type Mutator = MutatorWrapper> @@ -336,13 +336,22 @@ export type SWRConfiguration< Fn extends BareFetcher = BareFetcher > = Partial> -export interface SWRResponse { - data: Data | undefined - error: Error | undefined - mutate: KeyedMutator +export type SWRResponse = { mutate: KeyedMutator } & ({ + data: undefined + error: undefined + isValidating: true + isLoading: true +} | { + data: Data + error: undefined isValidating: boolean - isLoading: boolean -} + isLoading: false +} | { + data: undefined + error: Error + isValidating: boolean + isLoading: false +}) export type KeyLoader = | ((index: number, previousPageData: any | null) => Args) From dce2d3315165da79d88190c3b371ab973ae9cb74 Mon Sep 17 00:00:00 2001 From: sanding0 <51596529+sanding0@users.noreply.github.com> Date: Tue, 27 Sep 2022 19:13:30 +0800 Subject: [PATCH 2/3] fixup: minor update --- _internal/types.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/_internal/types.ts b/_internal/types.ts index c07202b4c..28f8d6ad6 100644 --- a/_internal/types.ts +++ b/_internal/types.ts @@ -263,8 +263,8 @@ export type MutatorCallback = ( export type MutatorOptions = { revalidate?: boolean populateCache?: - | boolean - | ((result: any, currentData: Data | undefined) => Data) + | boolean + | ((result: any, currentData: Data | undefined) => Data) optimisticData?: Data | ((currentData?: Data) => Data) rollbackOnError?: boolean } @@ -302,12 +302,12 @@ export type MutatorWrapper = Fn extends ( ...args: [...infer Parameters] ) => infer Result ? Parameters[3] extends boolean - ? Result - : Parameters[3] extends Required> - ? Parameters[3]['populateCache'] extends false - ? never - : Result - : Result + ? Result + : Parameters[3] extends Required> + ? Parameters[3]['populateCache'] extends false + ? never + : Result + : Result : never export type Mutator = MutatorWrapper> From 3ca82d3547c159aceca1e852fe3a273ee86d3a43 Mon Sep 17 00:00:00 2001 From: sanding0 <51596529+sanding0@users.noreply.github.com> Date: Wed, 28 Sep 2022 10:06:08 +0800 Subject: [PATCH 3/3] fixup: update SWRInfiniteResponse type --- infinite/types.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/infinite/types.ts b/infinite/types.ts index c85f08364..e7833c556 100644 --- a/infinite/types.ts +++ b/infinite/types.ts @@ -34,8 +34,7 @@ export interface SWRInfiniteConfiguration< fetcher?: Fn } -export interface SWRInfiniteResponse - extends SWRResponse { +export type SWRInfiniteResponse = SWRResponse & { size: number setSize: ( size: number | ((_size: number) => number)