MCPcopy
hub / github.com/TanStack/query / useBaseQuery

Function useBaseQuery

packages/solid-query/src/useBaseQuery.ts:103–386  ·  view source on GitHub ↗
(
  options: Accessor<
    UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
  >,
  Observer: typeof QueryObserver,
  queryClient?: Accessor<QueryClient>,
)

Source from the content-addressed store, hash-verified

101
102// Base Query Function that is used to create the query.
103export function useBaseQuery<
104 TQueryFnData,
105 TError,
106 TData,
107 TQueryData,
108 TQueryKey extends QueryKey,
109>(
110 options: Accessor<
111 UseBaseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>
112 >,
113 Observer: typeof QueryObserver,
114 queryClient?: Accessor<QueryClient>,
115) {
116 type ResourceData = QueryObserverResult<TData, TError>
117
118 const client = createMemo(() => useQueryClient(queryClient?.()))
119 const isRestoring = useIsRestoring()
120 // There are times when we run a query on the server but the resource is never read
121 // This could lead to times when the queryObserver is unsubscribed before the resource has loaded
122 // Causing a time out error. To prevent this we will queue the unsubscribe if the cleanup is called
123 // before the resource has loaded
124 let unsubscribeQueued = false
125
126 const defaultedOptions = createMemo(() => {
127 const defaultOptions = client().defaultQueryOptions(options())
128 defaultOptions._optimisticResults = isRestoring()
129 ? 'isRestoring'
130 : 'optimistic'
131 defaultOptions.structuralSharing = false
132 if (isServer) {
133 defaultOptions.retry = false
134 defaultOptions.throwOnError = true
135 }
136 return defaultOptions
137 })
138 const initialOptions = defaultedOptions()
139
140 const [observer, setObserver] = createSignal(
141 new Observer(client(), defaultedOptions()),
142 )
143
144 let observerResult = observer().getOptimisticResult(defaultedOptions())
145 const [state, setState] =
146 createStore<QueryObserverResult<TData, TError>>(observerResult)
147
148 const createServerSubscriber = (
149 resolve: (
150 data: ResourceData | PromiseLike<ResourceData | undefined> | undefined,
151 ) => void,
152 reject: (reason?: any) => void,
153 ) => {
154 return observer().subscribe((result) => {
155 notifyManager.batchCalls(() => {
156 const query = observer().getCurrentQuery()
157 const unwrappedResult = hydratableObserverResult(query, result)
158
159 if (unwrappedResult.isError) {
160 reject(unwrappedResult.error)

Callers 2

useQueryFunction · 0.90
useInfiniteQueryFunction · 0.90

Calls 15

useQueryClientFunction · 0.90
useIsRestoringFunction · 0.90
shouldThrowErrorFunction · 0.90
createServerSubscriberFunction · 0.85
createClientSubscriberFunction · 0.85
rejectFunction · 0.85
resolveFunction · 0.85
hydratableObserverResultFunction · 0.85
refetchFunction · 0.85
defaultQueryOptionsMethod · 0.80
updateResultMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…