UNPKG

@tanstack/angular-query-experimental

Version:

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

133 lines (132 loc) 5.35 kB
import { InjectionToken, Provider } from '@angular/core'; import { QueryClient } from '@tanstack/query-core'; /** * Usually {@link provideTanStackQuery} is used once to set up TanStack Query and the * {@link https://tanstack.com/query/latest/docs/reference/QueryClient|QueryClient} * for the entire application. Internally it calls `provideQueryClient`. * You can use `provideQueryClient` to provide a different `QueryClient` instance for a part * of the application or for unit testing purposes. * @param queryClient - A `QueryClient` instance, or an `InjectionToken` which provides a `QueryClient`. * @returns a provider object that can be used to provide the `QueryClient` instance. */ export declare function provideQueryClient(queryClient: QueryClient | InjectionToken<QueryClient>): Provider; /** * Sets up providers necessary to enable TanStack Query functionality for Angular applications. * * Allows to configure a `QueryClient` and optional features such as developer tools. * * **Example - standalone** * * ```ts * import { * provideTanStackQuery, * QueryClient, * } from '@tanstack/angular-query-experimental' * * bootstrapApplication(AppComponent, { * providers: [provideTanStackQuery(new QueryClient())], * }) * ``` * * **Example - NgModule-based** * * ```ts * import { * provideTanStackQuery, * QueryClient, * } from '@tanstack/angular-query-experimental' * * @NgModule({ * declarations: [AppComponent], * imports: [BrowserModule], * providers: [provideTanStackQuery(new QueryClient())], * bootstrap: [AppComponent], * }) * export class AppModule {} * ``` * * You can also enable optional developer tools by adding `withDevtools`. By * default the tools will then be loaded when your app is in development mode. * ```ts * import { * provideTanStackQuery, * withDevtools * QueryClient, * } from '@tanstack/angular-query-experimental' * * bootstrapApplication(AppComponent, * { * providers: [ * provideTanStackQuery(new QueryClient(), withDevtools()) * ] * } * ) * ``` * * **Example: using an InjectionToken** * * ```ts * export const MY_QUERY_CLIENT = new InjectionToken('', { * factory: () => new QueryClient(), * }) * * // In a lazy loaded route or lazy loaded component's providers array: * providers: [provideTanStackQuery(MY_QUERY_CLIENT)] * ``` * Using an InjectionToken for the QueryClient is an advanced optimization which allows TanStack Query to be absent from the main application bundle. * This can be beneficial if you want to include TanStack Query on lazy loaded routes only while still sharing a `QueryClient`. * * Note that this is a small optimization and for most applications it's preferable to provide the `QueryClient` in the main application config. * @param queryClient - A `QueryClient` instance, or an `InjectionToken` which provides a `QueryClient`. * @param features - Optional features to configure additional Query functionality. * @returns A set of providers to set up TanStack Query. * @see https://tanstack.com/query/v5/docs/framework/angular/quick-start * @see withDevtools */ export declare function provideTanStackQuery(queryClient: QueryClient | InjectionToken<QueryClient>, ...features: Array<QueryFeatures>): Array<Provider>; /** * Sets up providers necessary to enable TanStack Query functionality for Angular applications. * * Allows to configure a `QueryClient`. * @param queryClient - A `QueryClient` instance. * @returns A set of providers to set up TanStack Query. * @see https://tanstack.com/query/v5/docs/framework/angular/quick-start * @deprecated Use `provideTanStackQuery` instead. */ export declare function provideAngularQuery(queryClient: QueryClient): Array<Provider>; declare const queryFeatures: readonly ["Devtools", "PersistQueryClient"]; type QueryFeatureKind = (typeof queryFeatures)[number]; /** * Helper type to represent a Query feature. */ export interface QueryFeature<TFeatureKind extends QueryFeatureKind> { ɵkind: TFeatureKind; ɵproviders: Array<Provider>; } /** * Helper function to create an object that represents a Query feature. * @param kind - * @param providers - * @returns A Query feature. */ export declare function queryFeature<TFeatureKind extends QueryFeatureKind>(kind: TFeatureKind, providers: Array<Provider>): QueryFeature<TFeatureKind>; /** * A type alias that represents a feature which enables developer tools. * The type is used to describe the return value of the `withDevtools` function. * @see {@link withDevtools} */ export type DevtoolsFeature = QueryFeature<'Devtools'>; /** * A type alias that represents a feature which enables persistence. * The type is used to describe the return value of the `withPersistQueryClient` function. */ export type PersistQueryClientFeature = QueryFeature<'PersistQueryClient'>; /** * A type alias that represents all Query features available for use with `provideTanStackQuery`. * Features can be enabled by adding special functions to the `provideTanStackQuery` call. * See documentation for each symbol to find corresponding function name. See also `provideTanStackQuery` * documentation on how to use those functions. * @see {@link provideTanStackQuery} */ export type QueryFeatures = DevtoolsFeature | PersistQueryClientFeature; export {};