UNPKG

@tanstack/angular-db

Version:

Angular integration for @tanstack/db

69 lines (68 loc) 4.18 kB
import { Collection, CollectionStatus, Context, GetResult, InferResultType, InitialQueryBuilder, LiveQueryCollectionConfig, NonSingleResult, QueryBuilder, SingleResult } from '@tanstack/db'; import { Signal } from '@angular/core'; export * from '@tanstack/db'; /** * The result of calling `injectLiveQuery`. * Contains reactive signals for the query state and data. */ export interface InjectLiveQueryResult<TContext extends Context> { /** A signal containing the complete state map of results keyed by their ID */ state: Signal<Map<string | number, GetResult<TContext>>>; /** A signal containing the results as an array, or single result for findOne queries */ data: Signal<InferResultType<TContext>>; /** A signal containing the underlying collection instance (null for disabled queries) */ collection: Signal<Collection<GetResult<TContext>, string | number, {}> | null>; /** A signal containing the current status of the collection */ status: Signal<CollectionStatus | `disabled`>; /** A signal indicating whether the collection is currently loading */ isLoading: Signal<boolean>; /** A signal indicating whether the collection is ready */ isReady: Signal<boolean>; /** A signal indicating whether the collection is idle */ isIdle: Signal<boolean>; /** A signal indicating whether the collection has an error */ isError: Signal<boolean>; /** A signal indicating whether the collection has been cleaned up */ isCleanedUp: Signal<boolean>; } export interface InjectLiveQueryResultWithCollection<TResult extends object = any, TKey extends string | number = string | number, TUtils extends Record<string, any> = {}> { state: Signal<Map<TKey, TResult>>; data: Signal<Array<TResult>>; collection: Signal<Collection<TResult, TKey, TUtils> | null>; status: Signal<CollectionStatus | `disabled`>; isLoading: Signal<boolean>; isReady: Signal<boolean>; isIdle: Signal<boolean>; isError: Signal<boolean>; isCleanedUp: Signal<boolean>; } export interface InjectLiveQueryResultWithSingleResultCollection<TResult extends object = any, TKey extends string | number = string | number, TUtils extends Record<string, any> = {}> { state: Signal<Map<TKey, TResult>>; data: Signal<TResult | undefined>; collection: Signal<(Collection<TResult, TKey, TUtils> & SingleResult) | null>; status: Signal<CollectionStatus | `disabled`>; isLoading: Signal<boolean>; isReady: Signal<boolean>; isIdle: Signal<boolean>; isError: Signal<boolean>; isCleanedUp: Signal<boolean>; } export declare function injectLiveQuery<TContext extends Context, TParams extends any>(options: { params: () => TParams; query: (args: { params: TParams; q: InitialQueryBuilder; }) => QueryBuilder<TContext>; }): InjectLiveQueryResult<TContext>; export declare function injectLiveQuery<TContext extends Context, TParams extends any>(options: { params: () => TParams; query: (args: { params: TParams; q: InitialQueryBuilder; }) => QueryBuilder<TContext> | undefined | null; }): InjectLiveQueryResult<TContext>; export declare function injectLiveQuery<TContext extends Context>(queryFn: (q: InitialQueryBuilder) => QueryBuilder<TContext>): InjectLiveQueryResult<TContext>; export declare function injectLiveQuery<TContext extends Context>(queryFn: (q: InitialQueryBuilder) => QueryBuilder<TContext> | undefined | null): InjectLiveQueryResult<TContext>; export declare function injectLiveQuery<TContext extends Context>(config: LiveQueryCollectionConfig<TContext>): InjectLiveQueryResult<TContext>; export declare function injectLiveQuery<TResult extends object, TKey extends string | number, TUtils extends Record<string, any>>(liveQueryCollection: Collection<TResult, TKey, TUtils> & NonSingleResult): InjectLiveQueryResultWithCollection<TResult, TKey, TUtils>; export declare function injectLiveQuery<TResult extends object, TKey extends string | number, TUtils extends Record<string, any>>(liveQueryCollection: Collection<TResult, TKey, TUtils> & SingleResult): InjectLiveQueryResultWithSingleResultCollection<TResult, TKey, TUtils>;