@tanstack/db
Version:
A reactive client store for building super fast apps on sync
84 lines (83 loc) • 3.75 kB
text/typescript
import { CollectionSubscription } from "../../collection/subscription.cjs";
import { ChangeMessage, LoadSubsetRequestResult } from "../../types.cjs";
import { OrderByOptimizationInfo } from "../compiler/order-by.cjs";
/** 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 ownPrefixCount;
private lastBoundary;
private needsOptimisticRefill;
private retiringSupersededAcquisitions;
private repairRetries;
private repairTimer;
private stagedContinuation;
private blockedLoadMore;
private drainingNoInputContinuations;
private graphCheckedDuringRequest;
private readonly readsBoundedPrefix;
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, hasOptimisticOverlay: (key: string | number) => boolean): 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;
/**
* The source's sync adapter reports that served pages may have shifted.
* Coverage that one full-source acquisition established has no page
* boundary to repair, and the adapter's refetch has already re-read it.
* A window inside this loader's own first page needs no repair either.
*/
revalidateLoadedCoverage(): void;
private windowIsInsideOwnPrefix;
private finishOrderedPrefixRepair;
private abandonOrderedPrefixRepair;
dispose(): void;
private countAcquiredRows;
private loadPage;
private observe;
private runContinuation;
private consumeStagedContinuation;
private graphHasProcessedInput;
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;
}