UNPKG

@convex-dev/aggregate

Version:

Convex component to calculate counts and sums of values for efficient aggregation.

35 lines 1.64 kB
/** * 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