UNPKG

@tanstack/angular-query-experimental

Version:

Signals for managing, caching and syncing asynchronous and remote data in Angular

113 lines (108 loc) 3.61 kB
import { InfiniteQueryObserver } from '@tanstack/query-core' import { createBaseQuery } from './create-base-query' import { assertInjector } from './util/assert-injector/assert-injector' import type { Injector } from '@angular/core' import type { DefaultError, InfiniteData, QueryKey, QueryObserver, } from '@tanstack/query-core' import type { CreateInfiniteQueryOptions, CreateInfiniteQueryResult, DefinedCreateInfiniteQueryResult, } from './types' import type { DefinedInitialDataInfiniteOptions, UndefinedInitialDataInfiniteOptions, } from './infinite-query-options' /** * Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key. * Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll" * @param optionsFn - A function that returns infinite query options. * @param injector - The Angular injector to use. * @returns The infinite query result. * @public */ export function injectInfiniteQuery< TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( optionsFn: () => DefinedInitialDataInfiniteOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam >, injector?: Injector, ): DefinedCreateInfiniteQueryResult<TData, TError> /** * Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key. * Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll" * @param optionsFn - A function that returns infinite query options. * @param injector - The Angular injector to use. * @returns The infinite query result. * @public */ export function injectInfiniteQuery< TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( optionsFn: () => UndefinedInitialDataInfiniteOptions< TQueryFnData, TError, TData, TQueryKey, TPageParam >, injector?: Injector, ): CreateInfiniteQueryResult<TData, TError> /** * Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key. * Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll" * @param optionsFn - A function that returns infinite query options. * @param injector - The Angular injector to use. * @returns The infinite query result. * @public */ export function injectInfiniteQuery< TQueryFnData, TError = DefaultError, TData = InfiniteData<TQueryFnData>, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown, >( optionsFn: () => CreateInfiniteQueryOptions< TQueryFnData, TError, TData, TQueryFnData, TQueryKey, TPageParam >, injector?: Injector, ): CreateInfiniteQueryResult<TData, TError> /** * Injects an infinite query: a declarative dependency on an asynchronous source of data that is tied to a unique key. * Infinite queries can additively "load more" data onto an existing set of data or "infinite scroll" * @param optionsFn - A function that returns infinite query options. * @param injector - The Angular injector to use. * @returns The infinite query result. * @public */ export function injectInfiniteQuery( optionsFn: () => CreateInfiniteQueryOptions, injector?: Injector, ) { return assertInjector(injectInfiniteQuery, injector, () => createBaseQuery(optionsFn, InfiniteQueryObserver as typeof QueryObserver), ) }