@convex-dev/aggregate
Version:
Convex component to calculate counts and sums of values for efficient aggregation.
35 lines • 1.64 kB
TypeScript
/**
* The Aggregate API uses keys and IDs, where the keys are for sorting and
* IDs are for tie-breaking uniqueness. The component's BTree API uses
* positions, which are unique keys.
*/
import type { Key } from "../component/btree.js";
export type Bound<K extends Key, ID extends string> = {
key: K;
id?: ID;
inclusive: boolean;
};
export type SideBounds<K extends Key, ID extends string> = {
lower?: Bound<K, ID>;
upper?: Bound<K, ID>;
};
export type TuplePrefix<K extends unknown[], P extends unknown[] = []> = P["length"] extends K["length"] ? P : P | TuplePrefix<K, [...P, K[P["length"]]]>;
export type Bounds<K extends Key, ID extends string> = SideBounds<K, ID> | (K extends unknown[] ? {
prefix: TuplePrefix<Extract<K, unknown[]>>;
} : never) | {
eq: K;
};
export type Position = [Key, string | null | never[], "" | null | never[]];
export declare function keyToPosition<K extends Key, ID extends string>(key: K, id: ID): Position;
export declare function positionToKey<K extends Key, ID extends string>(position: Position): {
key: K;
id: ID;
};
export declare function boundsToPositions<K extends Key, ID extends string>(bounds?: Bounds<K, ID>): {
k1?: Position;
k2?: Position;
};
export declare function boundToPosition<K extends Key, ID extends string>(direction: "lower" | "upper", bound: Bound<K, ID>): Position;
export declare function boundToPosition(direction: "lower" | "upper"): undefined;
export declare function boundToPosition<K extends Key, ID extends string>(direction: "lower" | "upper", bound?: Bound<K, ID>): Position | undefined;
//# sourceMappingURL=positions.d.ts.map