'use client'; import { EndpointInterface, Denormalize, Schema, FetchFunction, ResolveType, DenormalizeNullable, } from '@data-client/core'; import useSubscription from './useSubscription.js'; import useSuspense from './useSuspense.js'; /** * Ensure an endpoint is available. Keeps it fresh once it is. * * useSuspense() + useSubscription() * @see https://dataclient.io/docs/api/useLive * @throws {Promise} If data is not yet available. * @throws {NetworkError} If fetch fails. */ export default function useLive< E extends EndpointInterface< FetchFunction, Schema | undefined, undefined | false >, >( endpoint: E, ...args: readonly [...Parameters] ): E['schema'] extends undefined | null ? ResolveType : Denormalize; export default function useLive< E extends EndpointInterface< FetchFunction, Schema | undefined, undefined | false >, >( endpoint: E, ...args: readonly [...Parameters] | readonly [null] ): E['schema'] extends undefined | null ? ResolveType | undefined : DenormalizeNullable; export default function useLive< E extends EndpointInterface< FetchFunction, Schema | undefined, undefined | false >, >( endpoint: E, ...args: readonly [...Parameters] | readonly [null] ): unknown { useSubscription(endpoint, ...args); return useSuspense(endpoint, ...args); }