UNPKG

@tanstack/db

Version:

A reactive client store for building super fast apps on sync

53 lines (52 loc) • 2.24 kB
import { Collection } from './collection/index.js'; import { DbClient, DehydratedLiveQueryResult } from './client.js'; import { LiveQueryObserver, LiveQuerySnapshot } from './live-query-observer.js'; import { ChangeMessage } from './types.js'; /** * 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.js').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>; }