UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

62 lines (61 loc) • 2.32 kB
import { Collection } from "./collection/index.cjs"; import { DbClient, DehydratedLiveQueryResult } from "./client.cjs"; import { LiveQueryObserver, LiveQuerySnapshot } from "./live-query-observer.cjs"; import { ChangeMessage } from "./types.cjs"; /** * DbClient supplies transport behavior to the shared observer. Keeping this * implementation behind the client means ordinary framework queries do not * import server admission, hydration reconciliation, or streaming machinery. */ export interface LiveQueryObserverClientHost<T extends object, TKey extends string | number> { observer: LiveQueryObserver<T, TKey>; read: (forServerSnapshot: boolean) => LiveQuerySnapshot<T, TKey>; entries: () => Array<[ TKey, T ]>; isAttached: () => boolean; isDisposed: () => boolean; dirty: () => void; publish: (changes: Array<ChangeMessage<T, TKey>>, entries?: Array<[ TKey, T ]>) => void; preload: () => Promise<void>; } export declare class LiveQueryObserverClient<T extends object, TKey extends string | number> { private readonly client; private readonly collection; private readonly queryHash; private readonly usesSettledHydration; private readonly host; private hydrationSeed; error: unknown; failed: boolean; private authoritative; private handoffScheduled; private unregisterResource; private preloadPromise; constructor(client: DbClient, collection: Collection<T, TKey, any> | null, queryHash: string | undefined, usesSettledHydration: boolean, host: LiveQueryObserverClientHost<T, TKey>); get seed(): { dehydratedAt: number; entries: Array<[ TKey, T ]>; snapshot: DehydratedLiveQueryResult; } | undefined; get query(): import("./client.cjs").DbClientLiveQuery | undefined; sync(forServerSnapshot?: boolean): boolean; getServerSnapshot(preloadRequested: boolean): LiveQuerySnapshot<T, TKey>; private diffEntries; markAuthoritative(dehydratedAt?: number): boolean; scheduleHandoff(): void; handoff(): void; assertSources(): void; subscribe(): () => void; registerResource(): void; takeResourceRelease(): (() => void) | undefined; private getSourceInfo; preload(): Promise<void>; }