@tanstack/db
Version:
A reactive client store for building super fast apps on sync
40 lines (39 loc) • 1.91 kB
text/typescript
import { CollectionSubscription } from "../../collection/subscription.cjs";
import { LazyCollectionCallbacks, LazyDemandPlan } from "../compiler/joins.cjs";
export type DemandUpdate = {
changed: boolean;
empty: boolean;
ready: Promise<Array<unknown>> | true;
};
/**
* Keeps lazy subset requests aligned with the current relation of demanded
* keys. Growth loads only new keys. Churn replaces fragmented coverage after
* the replacement applies, so prior coverage remains live in the meantime.
*/
export declare class SubsetDemandController {
private readonly onKeyOutcome?;
private readonly states;
/**
* `onKeyOutcome`: the latest load of a key the plan needs failed with
* `error`; without one, a load of the key succeeded or the plan no longer
* needs it. A request error belongs to the key's failed request.
*/
constructor(onKeyOutcome?: ((planId: string, key: string, error?: Error) => void) | undefined);
private readonly warnedPlans;
private valueIdentity;
/**
* A truncate's or a reload's replay was judged: its verdict decides every
* request error of the demand it replayed. Its success clears them, and
* its failure replaces them with the replay's own failures, which the
* query reports for the replay.
*/
clearRequestErrors(): void;
setDemand(subscription: CollectionSubscription, plan: LazyDemandPlan, keys: Set<unknown>): DemandUpdate;
private recordOutcome;
clear(): void;
hasPendingDemand(planId: string): boolean;
private finishReplacement;
private warnUnoptimized;
}
/** An ordered filter waits only for demand on its joined source. */
export declare function hasPendingJoinedWork(joinedSourceId: string, lazySourcesCallbacks: Record<string, LazyCollectionCallbacks>, subscriptions: Record<string, CollectionSubscription>, isPendingPlan: (planId: string) => boolean): boolean;