(
options: {
queryFn?: QueryFunction<TQueryFnData, TQueryKey> | SkipToken
queryHash?: string
},
fetchOptions?: FetchOptions<TQueryFnData>,
)
| 532 | export type SkipToken = typeof skipToken |
| 533 | |
| 534 | export 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. |
no outgoing calls
no test coverage detected