@gravity-ui/data-source
Version:
A wrapper around data fetching
32 lines (31 loc) • 2.34 kB
TypeScript
import type { Data } from '@normy/core';
import type { InvalidateQueryFilters, QueryClientConfig, QueryKey } from '@tanstack/react-query';
import { QueryClient } from '@tanstack/react-query';
import { type AnyDataSource, type DataManager, type DataSourceParams, type DataSourceTag, type Normalizer, type NormalizerConfig } from '../core';
import type { InvalidateOptions, InvalidateRepeatOptions } from '../core/types/DataManagerOptions';
import type { QueryNormalizer } from './types/normalizer';
export interface ClientDataManagerConfig extends QueryClientConfig {
normalizerConfig?: NormalizerConfig | boolean;
}
export declare class ClientDataManager implements DataManager {
readonly queryClient: QueryClient;
readonly normalizer?: Normalizer | undefined;
readonly queryNormalizer?: QueryNormalizer | undefined;
readonly normalizerConfig?: NormalizerConfig | boolean;
constructor(config?: ClientDataManagerConfig);
optimisticUpdate(mutationData: Data, queryKey?: QueryKey, queryData?: Data): void;
invalidateData(data: Data, queryKey?: QueryKey): void;
update(data: Data): void;
invalidateTag(tag: DataSourceTag, invalidateOptions?: InvalidateOptions): Promise<void>;
invalidateTags(tags: DataSourceTag[], invalidateOptions?: InvalidateOptions): Promise<void>;
invalidateSource<TDataSource extends AnyDataSource>(dataSource: TDataSource, invalidateOptions?: InvalidateOptions): Promise<void>;
resetSource<TDataSource extends AnyDataSource>(dataSource: TDataSource): Promise<void>;
invalidateParams<TDataSource extends AnyDataSource>(dataSource: TDataSource, params: DataSourceParams<TDataSource>, invalidateOptions?: InvalidateOptions): Promise<void>;
resetParams<TDataSource extends AnyDataSource>(dataSource: TDataSource, params: DataSourceParams<TDataSource>): Promise<void>;
invalidateSourceTags<TDataSource extends AnyDataSource>(dataSource: TDataSource, params: DataSourceParams<TDataSource>, invalidateOptions?: InvalidateOptions): Promise<void>;
protected invalidateQueries(filters: InvalidateQueryFilters, invalidateOptions?: InvalidateOptions): Promise<void>;
protected repeatInvalidate(invalidate: () => Promise<void>, repeat?: InvalidateRepeatOptions): void;
private createNormalize;
private invalidateQuery;
private optimisticUpdateQuery;
}