import { type DefaultError, QueryClient, type QueryKey, QueryObserver, } from '@tanstack/query-core' import { Getter, WritableAtom, atom } from 'jotai' import { queryClientAtom } from './_queryClientAtom' import { baseAtomWithQuery } from './baseAtomWithQuery' import { AtomWithSuspenseQueryOptions, AtomWithSuspenseQueryResult, } from './types' import { defaultThrowOnError } from './utils' export function atomWithSuspenseQuery< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( getOptions: ( get: Getter ) => AtomWithSuspenseQueryOptions, getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom) ): WritableAtom, [], void> { const suspenseOptions = atom((get) => { const options = getOptions(get) return { ...options, suspense: true, enabled: true, throwOnError: defaultThrowOnError, } }) return baseAtomWithQuery( (get: Getter) => get(suspenseOptions), QueryObserver, getQueryClient ) as WritableAtom, [], void> }