11import {
22 ref ,
33 Ref ,
4- unref ,
54 computed ,
65 watch ,
76 onServerPrefetch ,
87 getCurrentScope ,
98 onScopeDispose ,
109 nextTick ,
1110 shallowRef ,
11+ MaybeRefOrGetter ,
12+ toRef ,
1213} from 'vue-demi'
1314import { DocumentNode } from 'graphql'
1415import type {
@@ -26,9 +27,6 @@ import type {
2627} from '@apollo/client/core/index.js'
2728import { throttle , debounce } from 'throttle-debounce'
2829import { useApolloClient } from './useApolloClient'
29- import { ReactiveFunction } from './util/ReactiveFunction'
30- import { paramToRef } from './util/paramToRef'
31- import { paramToReactive } from './util/paramToReactive'
3230import { useEventHook } from './util/useEventHook'
3331import { trackQuery } from './util/loadingTracking'
3432import { resultErrorsToApolloError , toApolloError } from './util/toApolloError'
@@ -53,9 +51,9 @@ interface SubscribeToMoreItem {
5351}
5452
5553// Parameters
56- export type DocumentParameter < TResult , TVariables > = DocumentNode | Ref < DocumentNode | null | undefined > | ReactiveFunction < DocumentNode | null | undefined > | TypedDocumentNode < TResult , TVariables > | Ref < TypedDocumentNode < TResult , TVariables > | null | undefined > | ReactiveFunction < TypedDocumentNode < TResult , TVariables > | null | undefined >
57- export type VariablesParameter < TVariables > = TVariables | Ref < TVariables > | ReactiveFunction < TVariables >
58- export type OptionsParameter < TResult , TVariables extends OperationVariables > = UseQueryOptions < TResult , TVariables > | Ref < UseQueryOptions < TResult , TVariables > > | ReactiveFunction < UseQueryOptions < TResult , TVariables > >
54+ export type DocumentParameter < TResult , TVariables > = DocumentNode | TypedDocumentNode < TResult , TVariables > | null | undefined
55+ export type VariablesParameter < TVariables > = TVariables
56+ export type OptionsParameter < TResult , TVariables extends OperationVariables > = UseQueryOptions < TResult , TVariables >
5957
6058export interface OnResultContext {
6159 client : ApolloClient < any >
@@ -77,11 +75,11 @@ export interface UseQueryReturn<TResult, TVariables extends OperationVariables>
7775 forceDisabled : Ref < boolean >
7876 document : Ref < DocumentNode | null | undefined >
7977 variables : Ref < TVariables | undefined >
80- options : UseQueryOptions < TResult , TVariables > | Ref < UseQueryOptions < TResult , TVariables > >
78+ options : Ref < UseQueryOptions < TResult , TVariables > >
8179 query : Ref < ObservableQuery < TResult , TVariables > | null | undefined >
8280 refetch : ( variables ?: TVariables ) => Promise < ApolloQueryResult < TResult > > | undefined
8381 fetchMore : ( options : FetchMoreQueryOptions < TVariables , TResult > & FetchMoreOptions < TResult , TVariables > ) => Promise < ApolloQueryResult < TResult > > | undefined
84- subscribeToMore : < TSubscriptionVariables = OperationVariables , TSubscriptionData = TResult > ( options : SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > | Ref < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > | ReactiveFunction < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ) => void
82+ subscribeToMore : < TSubscriptionVariables = OperationVariables , TSubscriptionData = TResult > ( options : MaybeRefOrGetter < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ) => void
8583 onResult : ( fn : ( param : ApolloQueryResult < TResult > , context : OnResultContext ) => void ) => {
8684 off : ( ) => void
8785 }
@@ -94,49 +92,49 @@ export interface UseQueryReturn<TResult, TVariables extends OperationVariables>
9492 * Use a query that does not require variables or options.
9593 * */
9694export function useQuery < TResult = any > (
97- document : DocumentParameter < TResult , undefined >
95+ document : MaybeRefOrGetter < DocumentParameter < TResult , undefined > >
9896) : UseQueryReturn < TResult , Record < string , never > >
9997
10098/**
10199 * Use a query that has optional variables but not options
102100 */
103101export function useQuery < TResult = any , TVariables extends OperationVariables = OperationVariables > (
104- document : DocumentParameter < TResult , TVariables >
102+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > >
105103) : UseQueryReturn < TResult , TVariables >
106104
107105/**
108106 * Use a query that has required variables but not options
109107 */
110108export function useQuery < TResult = any , TVariables extends OperationVariables = OperationVariables > (
111- document : DocumentParameter < TResult , TVariables > ,
112- variables : VariablesParameter < TVariables >
109+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
110+ variables : MaybeRefOrGetter < VariablesParameter < TVariables > >
113111) : UseQueryReturn < TResult , TVariables >
114112
115113/**
116114 * Use a query that requires options but not variables.
117115 */
118116export function useQuery < TResult = any > (
119- document : DocumentParameter < TResult , undefined > ,
117+ document : MaybeRefOrGetter < DocumentParameter < TResult , undefined > > ,
120118 variables : undefined | null ,
121- options : OptionsParameter < TResult , Record < string , never > > ,
119+ options : MaybeRefOrGetter < OptionsParameter < TResult , Record < string , never > > > ,
122120) : UseQueryReturn < TResult , Record < string , never > >
123121
124122/**
125123 * Use a query that requires variables and options.
126124 */
127125export function useQuery < TResult = any , TVariables extends OperationVariables = OperationVariables > (
128- document : DocumentParameter < TResult , TVariables > ,
129- variables : VariablesParameter < TVariables > ,
130- options : OptionsParameter < TResult , TVariables > ,
126+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
127+ variables : MaybeRefOrGetter < VariablesParameter < TVariables > > ,
128+ options : MaybeRefOrGetter < OptionsParameter < TResult , TVariables > > ,
131129) : UseQueryReturn < TResult , TVariables >
132130
133131export function useQuery <
134132 TResult ,
135133 TVariables extends OperationVariables
136134> (
137- document : DocumentParameter < TResult , TVariables > ,
138- variables ?: VariablesParameter < TVariables > ,
139- options ?: OptionsParameter < TResult , TVariables > ,
135+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
136+ variables ?: MaybeRefOrGetter < VariablesParameter < TVariables > > ,
137+ options ?: MaybeRefOrGetter < OptionsParameter < TResult , TVariables > > ,
140138) : UseQueryReturn < TResult , TVariables > {
141139 return useQueryImpl < TResult , TVariables > ( document , variables , options )
142140}
@@ -145,18 +143,18 @@ export function useQueryImpl<
145143 TResult ,
146144 TVariables extends OperationVariables
147145> (
148- document : DocumentParameter < TResult , TVariables > ,
149- variables ?: VariablesParameter < TVariables > ,
150- options : OptionsParameter < TResult , TVariables > = { } ,
146+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
147+ variables ?: MaybeRefOrGetter < VariablesParameter < TVariables > > ,
148+ options : MaybeRefOrGetter < OptionsParameter < TResult , TVariables > > = { } ,
151149 lazy = false ,
152150) : UseQueryReturn < TResult , TVariables > {
153151 const currentScope = getCurrentScope ( )
154152
155153 const currentOptions = ref < UseQueryOptions < TResult , TVariables > > ( )
156154
157- const documentRef = paramToRef ( document )
158- const variablesRef = paramToRef ( variables )
159- const optionsRef = paramToReactive ( options )
155+ const documentRef = toRef ( document )
156+ const variablesRef = toRef ( variables ) as Ref < TVariables | undefined >
157+ const optionsRef = toRef ( options )
160158
161159 // Result
162160 /**
@@ -252,7 +250,7 @@ export function useQueryImpl<
252250 if ( isServer ) {
253251 applyDocument ( documentRef . value )
254252 applyVariables ( variablesRef . value )
255- applyOptions ( unref ( optionsRef ) )
253+ applyOptions ( optionsRef . value )
256254 }
257255
258256 started = true
@@ -469,7 +467,7 @@ export function useQueryImpl<
469467 const isEnabled = computed ( ( ) => enabledOption . value && ! forceDisabled . value && ! ! documentRef . value )
470468
471469 // Applying options first (in case it disables the query)
472- watch ( ( ) => unref ( optionsRef ) , applyOptions , {
470+ watch ( optionsRef , applyOptions , {
473471 deep : true ,
474472 immediate : true ,
475473 } )
@@ -557,12 +555,10 @@ export function useQueryImpl<
557555 TSubscriptionVariables = OperationVariables ,
558556 TSubscriptionData = TResult
559557 > (
560- options : SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > |
561- Ref < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > |
562- ReactiveFunction < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ,
558+ options : MaybeRefOrGetter < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ,
563559 ) {
564560 if ( isServer ) return
565- const optionsRef = paramToRef ( options )
561+ const optionsRef = toRef ( options )
566562 watch ( optionsRef , ( value , oldValue , onCleanup ) => {
567563 const index = subscribeToMoreItems . findIndex ( item => item . options === oldValue )
568564 if ( index !== - 1 ) {
0 commit comments