// Copyright (c) 2021-2024 Tanner Linsley // // This software is released under the MIT License. // https://opensource.org/licenses/MIT /** * Backport of the `queryOptions` utility function for react-query v4. * Upgrading to v5 requires React 18. */ import type { QueryKey, UseQueryOptions } from '@tanstack/react-query'; export type UndefinedInitialDataOptions< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = UseQueryOptions & { initialData?: undefined }; type NonUndefinedGuard = T extends undefined ? never : T; export type DefinedInitialDataOptions< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = UseQueryOptions & { initialData: | NonUndefinedGuard | (() => NonUndefinedGuard) }; export function queryOptions< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialDataOptions, ): UndefinedInitialDataOptions & { queryKey: TQueryKey }; export function queryOptions< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialDataOptions, ): DefinedInitialDataOptions & { queryKey: TQueryKey }; export function queryOptions(options: unknown) { return options; }