@tanstack/db
Version:
A reactive client store for building super fast apps on sync
48 lines (47 loc) • 2.06 kB
text/typescript
import { CollectionSubscription } from '../../collection/subscription.js';
import { ChangeMessage, LoadSubsetRequestResult } from '../../types.js';
import { OrderByOptimizationInfo } from '../compiler/order-by.js';
/** Owns the conservative provider-loading policy for one ordered source. */
export declare class OrderedSourceLoader {
private readonly info;
private readonly subscription;
private readonly alias;
private readonly onResult;
private pending;
private hasSettledSourceRequest;
private settledSourceBoundary;
private needsFullSourceRecovery;
private requesting;
private fullSource;
private settledFiniteAcquisitions;
private failedRequest;
private failedAcquisitions;
private active;
private generation;
private lastPage;
private lastPrefixCount;
private lastBoundary;
constructor(info: OrderByOptimizationInfo, subscription: CollectionSubscription, alias: string, onResult?: (result: LoadSubsetRequestResult, holdPublication: boolean) => void);
/** Derive invalidation from actual contributions, not a second cursor. */
onSourceChanges(changes: Array<ChangeMessage<Record<string, unknown>, string | number>>, sentRows: ReadonlyMap<string | number, Record<string, unknown>> | undefined): void;
start(): void;
loadMore(windowOperationGeneration?: number): Promise<unknown> | undefined;
loadFullSource(windowOperationGeneration?: number): void;
private loadPrefix;
resetCursor(): void;
settleFullSourceReplay(): void;
private retireSettledFiniteAcquisitions;
invalidateCursor(): void;
invalidateSourceOrdering(): void;
dispose(): void;
private countAcquiredRows;
private loadPage;
private observe;
private loadBoundary;
private requireFullSourceRecovery;
private failRequest;
/** A failed request blocks ordinary refinement until a new operation. */
private recordRequestFailure;
/** Observe settlement only after all synchronous request work succeeds. */
private requestAndObserve;
}