/** The key type for use with the kv-store */ export type Key = string | number | Uint8Array | Array; export type Value = NonNullable; /** A range of keys of arbitrary type. */ export type CustomRange = { /** The key of the first item to include */ start?: K; /** The key of the last item to include */ end?: K; /** Whether to iterate in reverse */ reverse?: boolean; /** The maximum number of items to iterate over */ limit?: number; }; /** Maps a custom range into a range of valid key types to iterate over. */ export function mapRange(range: CustomRange, mapFn: (key: CK) => K): Range { return { start: range.start ? mapFn(range.start) : undefined, end: range.end ? mapFn(range.end) : undefined, reverse: range.reverse, limit: range.limit, }; } /** A range of keys to iterate over. */ export type Range = CustomRange; export type StoreSize = { mappingSize: number; physicalFileSize: number; actualSize: number; numItems: number };