@tanstack/db
Version:
A reactive client store for building super fast apps on sync
70 lines (69 loc) • 3.07 kB
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 readonly canRetryRepair;
private readonly getGraphInputRevision?;
private readonly hasPendingJoinedWork;
private pending;
private hasSettledSourceRequest;
private settledSourceBoundary;
private needsOrderingRepair;
private canRepairWithOrderedPrefix;
private requesting;
private authoritativeRequestState;
private authoritativeRequestKind;
private settledFiniteAcquisitions;
private orderedRepairAcquisitions;
private failedRequest;
private failedAcquisitions;
private active;
private orderedLoadGeneration;
private orderingInvalidationGeneration;
private orderedPrefixRepairGeneration;
private lastPage;
private lastPrefixCount;
private lastBoundary;
private repairRetries;
private repairTimer;
private stagedContinuation;
private blockedLoadMore;
private drainingNoInputContinuations;
constructor(info: OrderByOptimizationInfo, subscription: CollectionSubscription, alias: string, onResult?: (result: LoadSubsetRequestResult, holdPublication: boolean, settlesAsync: boolean) => void, canRetryRepair?: () => boolean, getGraphInputRevision?: (() => number) | undefined, hasPendingJoinedWork?: () => boolean);
/** 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, continuesOrderedPrefixRepair?: boolean): Promise<void> | undefined;
loadFullSource(windowOperationGeneration?: number): void;
private loadOrderedPrefixRepair;
private loadPrefix;
resetCursor(): void;
settleFullSourceReplay(): void;
private retireSettledFiniteAcquisitions;
invalidateCursor(): void;
invalidateSourceOrdering(): void;
private finishOrderedPrefixRepair;
private abandonOrderedPrefixRepair;
dispose(): void;
private countAcquiredRows;
private loadPage;
private observe;
private runContinuation;
private consumeStagedContinuation;
private drainNoInputContinuations;
private loadBoundary;
private requireFullSourceRepair;
private cancelRepairRetry;
private releaseFailedAcquisitions;
private scheduleRepairRetry;
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;
}