11import {
22 ref ,
33 Ref ,
4- unref ,
54 computed ,
65 watch ,
76 onServerPrefetch ,
@@ -10,6 +9,8 @@ import {
109 onScopeDispose ,
1110 nextTick ,
1211 shallowRef ,
12+ MaybeRefOrGetter ,
13+ toRef ,
1314} from 'vue-demi'
1415import { DocumentNode } from 'graphql'
1516import type {
@@ -27,9 +28,6 @@ import type {
2728} from '@apollo/client/core/index.js'
2829import { throttle , debounce } from 'throttle-debounce'
2930import { useApolloClient } from './useApolloClient'
30- import { ReactiveFunction } from './util/ReactiveFunction'
31- import { paramToRef } from './util/paramToRef'
32- import { paramToReactive } from './util/paramToReactive'
3331import { useEventHook } from './util/useEventHook'
3432import { trackQuery } from './util/loadingTracking'
3533import { resultErrorsToApolloError , toApolloError } from './util/toApolloError'
@@ -54,9 +52,9 @@ interface SubscribeToMoreItem {
5452}
5553
5654// Parameters
57- 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 >
58- export type VariablesParameter < TVariables > = TVariables | Ref < TVariables > | ReactiveFunction < TVariables >
59- export type OptionsParameter < TResult , TVariables extends OperationVariables > = UseQueryOptions < TResult , TVariables > | Ref < UseQueryOptions < TResult , TVariables > > | ReactiveFunction < UseQueryOptions < TResult , TVariables > >
55+ export type DocumentParameter < TResult , TVariables > = DocumentNode | TypedDocumentNode < TResult , TVariables > | null | undefined
56+ export type VariablesParameter < TVariables > = TVariables
57+ export type OptionsParameter < TResult , TVariables extends OperationVariables > = UseQueryOptions < TResult , TVariables >
6058
6159export interface OnResultContext {
6260 client : ApolloClient < any >
@@ -78,12 +76,12 @@ export interface UseQueryReturn<TResult, TVariables extends OperationVariables>
7876 forceDisabled : Ref < boolean >
7977 document : Ref < DocumentNode | null | undefined >
8078 variables : Ref < TVariables | undefined >
81- options : UseQueryOptions < TResult , TVariables > | Ref < UseQueryOptions < TResult , TVariables > >
79+ options : Ref < UseQueryOptions < TResult , TVariables > >
8280 query : Ref < ObservableQuery < TResult , TVariables > | null | undefined >
8381 refetch : ( variables ?: TVariables ) => Promise < ApolloQueryResult < TResult > > | undefined
8482 fetchMore : ( options : FetchMoreQueryOptions < TVariables , TResult > & FetchMoreOptions < TResult , TVariables > ) => Promise < ApolloQueryResult < TResult > > | undefined
8583 updateQuery : ( mapFn : ( previousQueryResult : TResult , options : Pick < WatchQueryOptions < TVariables , TResult > , 'variables' > ) => TResult ) => void
86- subscribeToMore : < TSubscriptionVariables = OperationVariables , TSubscriptionData = TResult > ( options : SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > | Ref < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > | ReactiveFunction < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ) => void
84+ subscribeToMore : < TSubscriptionVariables = OperationVariables , TSubscriptionData = TResult > ( options : MaybeRefOrGetter < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ) => void
8785 onResult : ( fn : ( param : ApolloQueryResult < TResult > , context : OnResultContext ) => void ) => {
8886 off : ( ) => void
8987 }
@@ -96,49 +94,49 @@ export interface UseQueryReturn<TResult, TVariables extends OperationVariables>
9694 * Use a query that does not require variables or options.
9795 * */
9896export function useQuery < TResult = any > (
99- document : DocumentParameter < TResult , undefined >
97+ document : MaybeRefOrGetter < DocumentParameter < TResult , undefined > >
10098) : UseQueryReturn < TResult , Record < string , never > >
10199
102100/**
103101 * Use a query that has optional variables but not options
104102 */
105103export function useQuery < TResult = any , TVariables extends OperationVariables = OperationVariables > (
106- document : DocumentParameter < TResult , TVariables >
104+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > >
107105) : UseQueryReturn < TResult , TVariables >
108106
109107/**
110108 * Use a query that has required variables but not options
111109 */
112110export function useQuery < TResult = any , TVariables extends OperationVariables = OperationVariables > (
113- document : DocumentParameter < TResult , TVariables > ,
114- variables : VariablesParameter < TVariables >
111+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
112+ variables : MaybeRefOrGetter < VariablesParameter < TVariables > >
115113) : UseQueryReturn < TResult , TVariables >
116114
117115/**
118116 * Use a query that requires options but not variables.
119117 */
120118export function useQuery < TResult = any > (
121- document : DocumentParameter < TResult , undefined > ,
119+ document : MaybeRefOrGetter < DocumentParameter < TResult , undefined > > ,
122120 variables : undefined | null ,
123- options : OptionsParameter < TResult , Record < string , never > > ,
121+ options : MaybeRefOrGetter < OptionsParameter < TResult , Record < string , never > > > ,
124122) : UseQueryReturn < TResult , Record < string , never > >
125123
126124/**
127125 * Use a query that requires variables and options.
128126 */
129127export function useQuery < TResult = any , TVariables extends OperationVariables = OperationVariables > (
130- document : DocumentParameter < TResult , TVariables > ,
131- variables : VariablesParameter < TVariables > ,
132- options : OptionsParameter < TResult , TVariables > ,
128+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
129+ variables : MaybeRefOrGetter < VariablesParameter < TVariables > > ,
130+ options : MaybeRefOrGetter < OptionsParameter < TResult , TVariables > > ,
133131) : UseQueryReturn < TResult , TVariables >
134132
135133export function useQuery <
136134 TResult ,
137135 TVariables extends OperationVariables
138136> (
139- document : DocumentParameter < TResult , TVariables > ,
140- variables ?: VariablesParameter < TVariables > ,
141- options ?: OptionsParameter < TResult , TVariables > ,
137+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
138+ variables ?: MaybeRefOrGetter < VariablesParameter < TVariables > > ,
139+ options ?: MaybeRefOrGetter < OptionsParameter < TResult , TVariables > > ,
142140) : UseQueryReturn < TResult , TVariables > {
143141 return useQueryImpl < TResult , TVariables > ( document , variables , options )
144142}
@@ -147,19 +145,19 @@ export function useQueryImpl<
147145 TResult ,
148146 TVariables extends OperationVariables
149147> (
150- document : DocumentParameter < TResult , TVariables > ,
151- variables ?: VariablesParameter < TVariables > ,
152- options : OptionsParameter < TResult , TVariables > = { } ,
148+ document : MaybeRefOrGetter < DocumentParameter < TResult , TVariables > > ,
149+ variables ?: MaybeRefOrGetter < VariablesParameter < TVariables > > ,
150+ options : MaybeRefOrGetter < OptionsParameter < TResult , TVariables > > = { } ,
153151 lazy = false ,
154152) : UseQueryReturn < TResult , TVariables > {
155153 const currentScope = getCurrentScope ( )
156154 const currentInstance = getCurrentInstance ( )
157155
158156 const currentOptions = ref < UseQueryOptions < TResult , TVariables > > ( )
159157
160- const documentRef = paramToRef ( document )
161- const variablesRef = paramToRef ( variables )
162- const optionsRef = paramToReactive ( options )
158+ const documentRef = toRef ( document )
159+ const variablesRef = toRef ( variables ) as Ref < TVariables | undefined >
160+ const optionsRef = toRef ( options )
163161
164162 // Result
165163 /**
@@ -255,7 +253,7 @@ export function useQueryImpl<
255253 if ( isServer ) {
256254 applyDocument ( documentRef . value )
257255 applyVariables ( variablesRef . value )
258- applyOptions ( unref ( optionsRef ) )
256+ applyOptions ( optionsRef . value )
259257 }
260258
261259 started = true
@@ -478,7 +476,7 @@ export function useQueryImpl<
478476 const isEnabled = computed ( ( ) => enabledOption . value && ! forceDisabled . value && ! ! documentRef . value )
479477
480478 // Applying options first (in case it disables the query)
481- watch ( ( ) => unref ( optionsRef ) , applyOptions , {
479+ watch ( optionsRef , applyOptions , {
482480 deep : true ,
483481 immediate : true ,
484482 } )
@@ -574,12 +572,10 @@ export function useQueryImpl<
574572 TSubscriptionVariables = OperationVariables ,
575573 TSubscriptionData = TResult
576574 > (
577- options : SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > |
578- Ref < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > |
579- ReactiveFunction < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ,
575+ options : MaybeRefOrGetter < SubscribeToMoreOptions < TResult , TSubscriptionVariables , TSubscriptionData > > ,
580576 ) {
581577 if ( isServer ) return
582- const optionsRef = paramToRef ( options )
578+ const optionsRef = toRef ( options )
583579 watch ( optionsRef , ( value , oldValue , onCleanup ) => {
584580 const index = subscribeToMoreItems . findIndex ( item => item . options === oldValue )
585581 if ( index !== - 1 ) {
0 commit comments