mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
// 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<TQueryFnData, TError, TData, TQueryKey> & {
|
|
initialData?: undefined
|
|
};
|
|
|
|
type NonUndefinedGuard<T> = T extends undefined ? never : T;
|
|
|
|
export type DefinedInitialDataOptions<
|
|
TQueryFnData = unknown,
|
|
TError = unknown,
|
|
TData = TQueryFnData,
|
|
TQueryKey extends QueryKey = QueryKey,
|
|
> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
initialData:
|
|
| NonUndefinedGuard<TQueryFnData>
|
|
| (() => NonUndefinedGuard<TQueryFnData>)
|
|
};
|
|
|
|
export function queryOptions<
|
|
TQueryFnData = unknown,
|
|
TError = unknown,
|
|
TData = TQueryFnData,
|
|
TQueryKey extends QueryKey = QueryKey,
|
|
>(
|
|
options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
): UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
queryKey: TQueryKey
|
|
};
|
|
|
|
export function queryOptions<
|
|
TQueryFnData = unknown,
|
|
TError = unknown,
|
|
TData = TQueryFnData,
|
|
TQueryKey extends QueryKey = QueryKey,
|
|
>(
|
|
options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,
|
|
): DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
queryKey: TQueryKey
|
|
};
|
|
|
|
export function queryOptions(options: unknown) {
|
|
return options;
|
|
}
|