MCPcopy Create free account
hub / github.com/TanStack/query / ensureQueryFn

Function ensureQueryFn

packages/query-core/src/utils.ts:534–565  ·  view source on GitHub ↗
(
  options: {
    queryFn?: QueryFunction<TQueryFnData, TQueryKey> | SkipToken
    queryHash?: string
  },
  fetchOptions?: FetchOptions<TQueryFnData>,
)

Source from the content-addressed store, hash-verified

532export type SkipToken = typeof skipToken
533
534export function ensureQueryFn<
535 TQueryFnData = unknown,
536 TQueryKey extends QueryKey = QueryKey,
537>(
538 options: {
539 queryFn?: QueryFunction<TQueryFnData, TQueryKey> | SkipToken
540 queryHash?: string
541 },
542 fetchOptions?: FetchOptions<TQueryFnData>,
543): QueryFunction<TQueryFnData, TQueryKey> {
544 if (process.env.NODE_ENV !== 'production') {
545 if (options.queryFn === skipToken) {
546 console.error(
547 `Attempted to invoke queryFn when set to skipToken. This is likely a configuration error. Query hash: '${options.queryHash}'`,
548 )
549 }
550 }
551
552 // if we attempt to retry a fetch that was triggered from an initialPromise
553 // when we don't have a queryFn yet, we can't retry, so we just return the already rejected initialPromise
554 // if an observer has already mounted, we will be able to retry with that queryFn
555 if (!options.queryFn && fetchOptions?.initialPromise) {
556 return () => fetchOptions.initialPromise!
557 }
558
559 if (!options.queryFn || options.queryFn === skipToken) {
560 return () =>
561 Promise.reject(new Error(`Missing queryFn: '${options.queryHash}'`))
562 }
563
564 return options.queryFn
565}
566
567/**
568 * Resolves a `throwOnError` option to a boolean.

Callers 4

fetchFnFunction · 0.90
fetchFnMethod · 0.90
utils.test-d.tsxFile · 0.90
utils.test.tsxFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected