From ea48929b70cd64fdff94f384727ac19ffff2bc9e Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Fri, 19 Aug 2022 22:46:03 +0200 Subject: [PATCH] omit variables when all keys are nullable --- .changeset/stupid-lizards-eat.md | 8 ++++++++ packages/preact-urql/src/hooks/useQuery.ts | 2 ++ packages/preact-urql/src/hooks/useSubscription.ts | 2 ++ packages/react-urql/src/hooks/useQuery.ts | 2 ++ packages/react-urql/src/hooks/useSubscription.ts | 2 ++ packages/svelte-urql/src/mutationStore.ts | 2 ++ packages/svelte-urql/src/queryStore.ts | 2 ++ packages/svelte-urql/src/subscriptionStore.ts | 2 ++ packages/vue-urql/src/useQuery.ts | 2 ++ packages/vue-urql/src/useSubscription.ts | 2 ++ 10 files changed, 26 insertions(+) create mode 100644 .changeset/stupid-lizards-eat.md diff --git a/.changeset/stupid-lizards-eat.md b/.changeset/stupid-lizards-eat.md new file mode 100644 index 0000000000..fb0c66987d --- /dev/null +++ b/.changeset/stupid-lizards-eat.md @@ -0,0 +1,8 @@ +--- +'@urql/preact': patch +'urql': patch +'@urql/svelte': patch +'@urql/vue': patch +--- + +Tweak the variables type for when generics only contain nullable keys diff --git a/packages/preact-urql/src/hooks/useQuery.ts b/packages/preact-urql/src/hooks/useQuery.ts index 5b08328cff..618b922b45 100644 --- a/packages/preact-urql/src/hooks/useQuery.ts +++ b/packages/preact-urql/src/hooks/useQuery.ts @@ -41,6 +41,8 @@ export type UseQueryArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/preact-urql/src/hooks/useSubscription.ts b/packages/preact-urql/src/hooks/useSubscription.ts index 229479483e..d9756d9fa2 100644 --- a/packages/preact-urql/src/hooks/useSubscription.ts +++ b/packages/preact-urql/src/hooks/useSubscription.ts @@ -26,6 +26,8 @@ export type UseSubscriptionArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/react-urql/src/hooks/useQuery.ts b/packages/react-urql/src/hooks/useQuery.ts index 2a078ae486..a128d96c6c 100644 --- a/packages/react-urql/src/hooks/useQuery.ts +++ b/packages/react-urql/src/hooks/useQuery.ts @@ -32,6 +32,8 @@ export type UseQueryArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/react-urql/src/hooks/useSubscription.ts b/packages/react-urql/src/hooks/useSubscription.ts index 4a90268b09..ee33230264 100644 --- a/packages/react-urql/src/hooks/useSubscription.ts +++ b/packages/react-urql/src/hooks/useSubscription.ts @@ -27,6 +27,8 @@ export type UseSubscriptionArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/svelte-urql/src/mutationStore.ts b/packages/svelte-urql/src/mutationStore.ts index 447221b173..a516e8a0d1 100644 --- a/packages/svelte-urql/src/mutationStore.ts +++ b/packages/svelte-urql/src/mutationStore.ts @@ -28,6 +28,8 @@ export type MutationArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/svelte-urql/src/queryStore.ts b/packages/svelte-urql/src/queryStore.ts index f9822f1ec3..44bc89472e 100644 --- a/packages/svelte-urql/src/queryStore.ts +++ b/packages/svelte-urql/src/queryStore.ts @@ -42,6 +42,8 @@ export type QueryArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/svelte-urql/src/subscriptionStore.ts b/packages/svelte-urql/src/subscriptionStore.ts index 83974f722d..605900220e 100644 --- a/packages/svelte-urql/src/subscriptionStore.ts +++ b/packages/svelte-urql/src/subscriptionStore.ts @@ -40,6 +40,8 @@ export type SubscriptionArgs< ? { variables?: Variables; } + : Variables extends { [P in keyof Variables]: Variables[P] | null } + ? { variables?: Variables } : { variables: Variables; }); diff --git a/packages/vue-urql/src/useQuery.ts b/packages/vue-urql/src/useQuery.ts index 31c931a751..c251048f8a 100644 --- a/packages/vue-urql/src/useQuery.ts +++ b/packages/vue-urql/src/useQuery.ts @@ -33,6 +33,8 @@ export type UseQueryArgs = { ? { variables?: MaybeRef<{ [K in keyof V]: MaybeRef }>; } + : V extends { [P in keyof V]: V[P] | null } + ? { variables?: MaybeRef<{ [K in keyof V]: MaybeRef }> } : { variables: MaybeRef<{ [K in keyof V]: MaybeRef }>; }); diff --git a/packages/vue-urql/src/useSubscription.ts b/packages/vue-urql/src/useSubscription.ts index 7f64727383..fc42457b33 100644 --- a/packages/vue-urql/src/useSubscription.ts +++ b/packages/vue-urql/src/useSubscription.ts @@ -33,6 +33,8 @@ export type UseSubscriptionArgs< ? { variables?: MaybeRef<{ [K in keyof V]: MaybeRef }>; } + : V extends { [P in keyof V]: V[P] | null } + ? { variables?: MaybeRef<{ [K in keyof V]: MaybeRef }> } : { variables: MaybeRef<{ [K in keyof V]: MaybeRef }>; });