@electric-sql/d2ts
Version:
D2TS is a TypeScript implementation of Differential Dataflow.
37 lines (36 loc) • 2.16 kB
TypeScript
import { PipedOperator } from '../../types.js';
import { KeyValue } from '../../types.js';
import { SQLiteDb } from '../database.js';
interface TopKOptions {
limit?: number;
offset?: number;
db?: SQLiteDb;
}
/**
* Limits the number of results based on a comparator, with optional offset.
* This works on a keyed stream, where the key is the first element of the tuple
* The ordering is withing a key group, i.e. elements are sorted within a key group
* and the limit + offset is applied to that sorted group.
* To order the entire stream, key by the same value for all elements such as null.
*
* @param comparator - A function that compares two elements
* @param db - Optional SQLite database (can be injected via context)
* @param options - An optional object containing limit and offset properties
* @returns A piped operator that limits the number of results
*/
export declare function topK<K extends T extends KeyValue<infer K, infer _V> ? K : never, V1 extends T extends KeyValue<K, infer V> ? V : never, T>(comparator: (a: V1, b: V1) => number, options?: TopKOptions): PipedOperator<T, T>;
/**
* Limits the number of results based on a comparator, with optional offset.
* This works on a keyed stream, where the key is the first element of the tuple
* The ordering is withing a key group, i.e. elements are sorted within a key group
* and the limit + offset is applied to that sorted group.
* To order the entire stream, key by the same value for all elements such as null.
* Adds the index of the element to the result as [key, [value, index]]
*
* @param comparator - A function that compares two elements
* @param db - Optional SQLite database (can be injected via context)
* @param options - An optional object containing limit and offset properties
* @returns A piped operator that orders the elements and limits the number of results
*/
export declare function topKWithIndex<K extends T extends KeyValue<infer K, infer _V> ? K : never, V1 extends T extends KeyValue<K, infer V> ? V : never, T>(comparator: (a: V1, b: V1) => number, options?: TopKOptions): PipedOperator<T, KeyValue<K, [V1, number]>>;
export {};