@tidyjs/tidy
Version:
Tidy up your data with JavaScript, inspired by dplyr and the tidyverse
807 lines (793 loc) • 133 kB
TypeScript
import { A, O, U } from 'ts-toolbelt';
import { MergeFlat } from 'Object/Merge';
import { BuiltInObject } from 'Misc/BuiltInObject';
declare type Datum = Record<Key, any>;
declare type Vector<T, K extends keyof T = keyof T> = T[K][];
declare type Key = string | number;
declare type KeyOrFn<T> = keyof T | ((item: T) => unknown);
declare type Comparator<T> = (a: T, b: T) => number;
declare type Primitive = number | string | boolean | Date;
declare type NonFunctionValue = boolean | string | number | null | undefined | Array<any> | {
[key: string]: NonFunctionValue;
};
declare type GroupKey<K = any> = [string, K];
declare type Grouped<T> = Map<GroupKey<any>, T[] | Grouped<T>>;
interface TidyContext {
/** when grouped, tidy functions can access the grouping keys here */
groupKeys?: GroupKey[];
}
/**
* Takes in array of items, outputs array of items
*/
declare type TidyFn<InputT extends object, OutputT = InputT> = (items: InputT[], context?: TidyContext) => OutputT[];
/**
* Takes in grouped items and outputs some modified version that
* will no longer be accepted in tidy flows.
*/
declare type TidyGroupExportFn<InputT extends object, ExportedT> = (items: InputT[], context?: TidyContext) => ExportedT;
declare type Granularity = 's' | 'seconds' | 'second' | 'min' | 'minutes' | 'minute' | 'd' | 'days' | 'day' | 'w' | 'week' | 'weeks' | 'm' | 'month' | 'months' | 'y' | 'year' | 'years';
/**
* Forms a tidy pipeline that can be called with (items)
* @param items array of items to manipulate
* @param fns Tidy functions
*/
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, T8 extends object, T9 extends object, T10 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>, f8: TidyFn<T7, T8>, f9: TidyFn<T8, T9>, f10: TidyFn<T9, T10>): T10[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, T8 extends object, T9 extends object, T10 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>, f8: TidyFn<T7, T8>, f9: TidyFn<T8, T9>, f10: TidyGroupExportFn<T9, T10>): T10;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, T8 extends object, T9 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>, f8: TidyFn<T7, T8>, f9: TidyFn<T8, T9>): T9[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, T8 extends object, T9 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>, f8: TidyFn<T7, T8>, f9: TidyGroupExportFn<T8, T9>): T9;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, T8 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>, f8: TidyFn<T7, T8>): T8[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, T8 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>, f8: TidyGroupExportFn<T7, T8>): T8;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyFn<T6, T7>): T7[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>, f7: TidyGroupExportFn<T6, T7>): T7;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyFn<T5, T6>): T6[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>, f6: TidyGroupExportFn<T5, T6>): T6;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyFn<T4, T5>): T5[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>, f5: TidyGroupExportFn<T4, T5>): T5;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyFn<T3, T4>): T4[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>, f4: TidyGroupExportFn<T3, T4>): T4;
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>): T3[];
declare function tidy<T extends object, T1 extends object, T2 extends object, T3 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyGroupExportFn<T2, T3>): T3;
declare function tidy<T extends object, T1 extends object, T2 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>): T2[];
declare function tidy<T extends object, T1 extends object, T2 extends object>(items: T[], f1: TidyFn<T, T1>, f2: TidyGroupExportFn<T1, T2>): T2;
declare function tidy<T extends object, T1 extends object>(items: T[], f1: TidyFn<T, T1>): T1[];
declare function tidy<T extends object, T1 extends object>(items: T[], f1: TidyGroupExportFn<T, T1>): T1;
/**
* Filters items
* @param filterFn Returns true to keep the item, false to filter out
*/
declare function filter<T extends object, O extends T>(filterFn: (item: T, index: number, array: T[]) => item is O): TidyFn<T, O>;
declare function filter<T extends object>(filterFn: (item: T, index: number, array: T[]) => boolean): TidyFn<T>;
/**
* Conditionally runs a tidy sub-flow
*/
declare function when<T extends object>(predicate: ((items: T[]) => boolean) | boolean, fns: TidyFn<any, any>[]): TidyFn<T, any>;
/**
* Maps items
* @param mapFn Maps items from one form to another
*/
declare function map<T extends object, OutputT>(mapFn: (item: T, index: number, array: T[]) => OutputT): TidyFn<T, OutputT>;
declare type SingleOrArray<T> = T | T[];
/**
* Removes items with duplicate values for the specified keys.
* If no keys provided, uses strict equality.
*
* @param keys Keys to compute distinct across
*/
declare function distinct<T extends object>(keys?: SingleOrArray<KeyOrFn<T>> | null | undefined): TidyFn<T>;
/**
* Sorts items
* @param comparators Given a, b return -1 if a comes before b, 0 if equal, 1 if after
*/
declare function arrange<T extends object>(comparators: SingleOrArray<Key | ((a: T, b: T) => any)>): TidyFn<T>;
/**
* Creates an ascending comparator based on a key
* @param key property key of T
*/
declare function asc<T>(key: Key | ((d: T) => any)): Comparator<T>;
/**
* Creates a descending comparator based on a key
* @param key property key of T
*/
declare function desc<T>(key: Key | ((d: T) => any)): Comparator<T>;
/**
* Creates a comparator that sorts values based on a key
* and a supplied array of the desired order for the values.
* Items not found in the array will be sorted last.
* @param order array of desired sort order
*/
declare function fixedOrder<T>(key: KeyOrFn<T>, order: Array<T[keyof T]>, options?: {
position?: 'start' | 'end';
}): (a: T, b: T) => number;
declare type SummarizeSpec<T> = Record<Key, (items: T[]) => any>;
interface SummarizeOptions<T = any> {
rest?: (key: keyof T) => (items: T[]) => any;
}
declare type SummarizedT<T extends object, SumSpec extends SummarizeSpec<T>, Options extends SummarizeOptions<T> | undefined> = {
[K in keyof SumSpec]: ReturnType<SumSpec[K]>;
} & // if there is a 'rest' option, add in the other values from T
(NonNullable<Options>['rest'] extends Function ? Exclude<T, keyof SumSpec> : void);
/**
* summarizes items
*/
declare function summarize<T extends object, SummarizedSpec extends SummarizeSpec<T> = SummarizeSpec<T>, Options extends SummarizeOptions<T> = SummarizeOptions<T>>(summarizeSpec: SummarizedSpec, options?: Options): TidyFn<T, A.Compute<SummarizedT<T, SummarizedSpec, Options>>>;
declare type SummaryKeyFn<T, K = keyof T> = (key: K) => (items: T[]) => any;
declare type SummaryFnOutput<T extends object, F extends SummaryKeyFn<T>> = ReturnType<ReturnType<F>>;
declare function summarizeAll<T extends object, F extends SummaryKeyFn<T>>(summaryFn: F): TidyFn<T, A.Compute<Record<keyof T, SummaryFnOutput<T, F>>>>;
declare function summarizeIf<T extends object, F extends SummaryKeyFn<T>>(predicateFn: (vector: Vector<T>) => boolean, summaryFn: F): TidyFn<T, A.Compute<Record<keyof T, SummaryFnOutput<T, F>>>>;
declare function summarizeAt<T extends object, Keys extends (keyof T)[], F extends SummaryKeyFn<T, Keys[number]>>(keys: Keys, summaryFn: F): TidyFn<T, A.Compute<Record<Keys[number], SummaryFnOutput<T, F>>>>;
declare type MutateSpecValue<T, O = any> = ((item: T, index: number, array: Iterable<T>) => O) | NonFunctionValue;
declare type MutateSpec<T> = Record<Key, MutateSpecValue<T>>;
declare type ResolvedObj<Obj extends Record<Key, MutateSpecValue<any>>> = {
[K in keyof Obj]: Obj[K] extends (...args: any) => any ? ReturnType<Obj[K]> extends any[] ? ReturnType<Obj[K]>[number] : ReturnType<Obj[K]> : Obj[K];
};
declare type Mutated<T extends object, MSpec extends MutateSpec<T>> = O.Merge<ResolvedObj<MSpec>, T>;
declare type Compute<T> = A.Compute<T>;
/**
* Mutates items, one item at a time. For mutating across multiple items,
* use mutateWithSummary.
* @param mutateSpec
*/
declare function mutate<T extends object, MSpec extends MutateSpec<T>>(mutateSpec: MSpec): TidyFn<T, Compute<Mutated<T, MSpec>>>;
/**
* Adds a summarized total row
*/
declare function total<T extends object, SummarizedSpec extends SummarizeSpec<T> = SummarizeSpec<T>, MutSpec extends MutateSpec<T> = MutateSpec<T>>(summarizeSpec: SummarizedSpec, mutateSpec: MutSpec): TidyFn<T>;
/**
* Adds a summarized total row
*/
declare function totalAll<T extends object, F extends SummaryKeyFn<T>, MutSpec extends MutateSpec<T> = MutateSpec<T>>(summaryFn: F, mutateSpec: MutSpec): TidyFn<T>;
/**
* Adds a summarized total row
*/
declare function totalIf<T extends object, F extends SummaryKeyFn<T>, MutSpec extends MutateSpec<T> = MutateSpec<T>>(predicateFn: (vector: Vector<T>) => boolean, summaryFn: F, mutateSpec: MutSpec): TidyFn<T>;
/**
* Adds a summarized total row
*/
declare function totalAt<T extends object, Keys extends (keyof T)[], F extends SummaryKeyFn<T, Keys[number]>, MutSpec extends MutateSpec<T> = MutateSpec<T>>(keys: Keys, summaryFn: F, mutateSpec: MutSpec): TidyFn<T>;
declare type CountOptions = {
name?: string;
sort?: boolean;
wt?: string;
};
/**
* Tallies the number distinct values for the specified keys and adds
* the count as a new key (default `n`). Optionally sorts by the count.
*/
declare function count<T extends object, Keys extends SingleOrArray<KeyOrFn<T>>>(groupKeys: Keys, options?: CountOptions | null | undefined): (items: T[]) => (Keys extends keyof T ? MergeFlat<Pick<T, Keys>, {
n: number;
}, BuiltInObject, never> : Keys extends (keyof T)[] ? MergeFlat<Pick<T, Keys[number]>, {
n: number;
}, BuiltInObject, never> : {
n: number;
})[];
declare type TallyOptions = {
readonly name?: string;
readonly wt?: string;
};
declare type TallyOutput<Options extends TallyOptions> = Options['name'] extends string ? {
[K in Options['name']]: number;
} : {
n: number;
};
declare function tally<T extends object, Options extends TallyOptions>(options?: Options): TidyFn<T, TallyOutput<Options>>;
/** [key, values] where values could be more nested entries */
declare type EntriesOutput = [any, any][];
declare type EntriesObjectOutput = {
key: Key;
values: any;
}[];
/** nested objects: { [key]: values } */
declare type ObjectOutput = Record<Key, any>;
/** nested keys: e.g. [key, key, key, [key, key, [key]]] */
declare type KeysOutput = any[];
/** nested values: e.g. [[value1_1, value1_2], [value2_1, value2_2]] */
declare type ValuesOutput = any[];
declare type LevelSpec = {
id?: string;
createEmptySubgroup: () => any;
addSubgroup: (parentGrouped: any, newSubgroup: any, key: any, level: number) => void;
addLeaf: (parentGrouped: any, key: any, values: any[], level: number) => void;
};
/**
* Options to affect export type
*/
interface GroupByOptions {
/** whether to merge group keys back into the objects */
readonly addGroupKeys?: boolean;
/** export method */
readonly export?: 'grouped' | 'entries' | 'entries-object' | 'object' | 'map' | 'keys' | 'values' | 'levels' | 'ungrouped';
/** if all nested levels should be brought to a single top level */
readonly flat?: boolean;
/** when flat is true, how to flatten nested keys */
readonly compositeKey?: (keys: any[]) => string;
/** whether the leaf sets consist of just one item (typical after summarize).
* if true, uses the first element in the leaf set instead of an array
*/
readonly single?: boolean;
/** operation called on each leaf during export to map it to a different value
* (default: identity)
*/
readonly mapLeaf?: (value: any) => any;
/** operation called on each leaf set to map the array of values to a different value.
* Similar to `rollup` from d3-collection nest or d3-array
* (default: identity)
*/
readonly mapLeaves?: (values: any[]) => any;
/** [entries only] operation called on entries to map from [key, values] to
* whatever the output of this is (e.g. `{ key, values }`)
* (default: identity)
*/
readonly mapEntry?: (entry: [any, any], level: number) => any;
/** [required for levels] specifies the export operation for each level of the grouping */
readonly levels?: ('entries' | 'entries-object' | 'object' | 'map' | 'keys' | 'values' | LevelSpec)[];
}
declare type GK<T extends object> = SingleOrArray<keyof T | ((d: T) => any)>;
declare type F<I extends object, O extends object> = TidyFn<I, O>;
declare type MergeGroupKeys<T extends object, Out extends object, Keys extends GK<T>> = Keys extends keyof T ? O.Merge<Pick<T, Keys>, Out> : Keys extends (keyof T)[] ? O.Merge<Pick<T, Keys[number]>, Out> : Out;
declare type WithGroupKeys<T extends object, Out extends object, Keys extends GK<T>, Opts extends GroupByOptions> = NonNullable<Opts>['addGroupKeys'] extends false ? Out : MergeGroupKeys<T, Out, Keys>;
/**
* output varies based on export options
*/
declare type GroupByOutput<T extends object, O extends object, Keys extends GK<T>, Opts extends GroupByOptions> = A.Compute<NonNullable<Opts>['export'] extends 'grouped' ? Grouped<WithGroupKeys<T, O, Keys, Opts>> : NonNullable<Opts>['export'] extends 'entries' ? EntriesOutput : NonNullable<Opts>['export'] extends 'entries-object' ? EntriesObjectOutput : NonNullable<Opts>['export'] extends 'object' ? ObjectOutput : NonNullable<Opts>['export'] extends 'map' ? Map<any, any> : NonNullable<Opts>['export'] extends 'keys' ? KeysOutput : NonNullable<Opts>['export'] extends 'values' ? ValuesOutput : NonNullable<Opts>['export'] extends 'levels' ? any : WithGroupKeys<T, O, Keys, Opts>[]>;
declare type GroupByFn<T extends object, O extends object, Keys extends GK<T>, Opts extends GroupByOptions> = Opts['export'] extends 'grouped' | 'entries' | 'entries-object' | 'object' | 'map' | 'keys' | 'values' | 'levels' ? TidyGroupExportFn<T, GroupByOutput<T, O, Keys, Opts>> : TidyFn<T, WithGroupKeys<T, O, Keys, Opts>>;
/**
* Nests the data by the specified groupings
*/
declare function groupBy<T extends object, T1 extends object, Keys extends GK<T>, Opts extends GroupByOptions>(groupKeys: Keys, fns: F<T, T1>, options: Opts): GroupByFn<T, T1, Keys, Opts>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "keys";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var values: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "values";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var levels: (options?: Omit<GroupByOptions, "export"> | undefined) => {
readonly export: "levels";
readonly flat?: boolean | undefined;
readonly levels?: ("object" | "map" | "entries" | "keys" | "values" | LevelSpec | "entries-object")[] | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
}
declare function groupBy<T extends object, T1 extends object, Keys extends GK<T>>(groupKeys: Keys, fns: F<T, T1>): GroupByFn<T, T1, Keys, GroupByOptions>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "keys";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var values: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "values";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var levels: (options?: Omit<GroupByOptions, "export"> | undefined) => {
readonly export: "levels";
readonly flat?: boolean | undefined;
readonly levels?: ("object" | "map" | "entries" | "keys" | "values" | LevelSpec | "entries-object")[] | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
}
declare function groupBy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, Keys extends GK<T>, Opts extends GroupByOptions>(groupKeys: Keys, fns: [F<T, T1>, F<T1, T2>, F<T2, T3>, F<T3, T4>, F<T4, T5>, F<T5, T6>, F<T6, T7>], options: Opts): GroupByFn<T, T7, Keys, Opts>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "keys";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var values: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "values";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var levels: (options?: Omit<GroupByOptions, "export"> | undefined) => {
readonly export: "levels";
readonly flat?: boolean | undefined;
readonly levels?: ("object" | "map" | "entries" | "keys" | "values" | LevelSpec | "entries-object")[] | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
}
declare function groupBy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, T7 extends object, Keys extends GK<T>>(groupKeys: Keys, fns: [F<T, T1>, F<T1, T2>, F<T2, T3>, F<T3, T4>, F<T4, T5>, F<T5, T6>, F<T6, T7>]): GroupByFn<T, T7, Keys, GroupByOptions>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "keys";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var values: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "values";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var levels: (options?: Omit<GroupByOptions, "export"> | undefined) => {
readonly export: "levels";
readonly flat?: boolean | undefined;
readonly levels?: ("object" | "map" | "entries" | "keys" | "values" | LevelSpec | "entries-object")[] | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
}
declare function groupBy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, Keys extends GK<T>, Opts extends GroupByOptions>(groupKeys: Keys, fns: [F<T, T1>, F<T1, T2>, F<T2, T3>, F<T3, T4>, F<T4, T5>, F<T5, T6>], options: Opts): GroupByFn<T, T6, Keys, Opts>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "keys";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var values: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "values";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var levels: (options?: Omit<GroupByOptions, "export"> | undefined) => {
readonly export: "levels";
readonly flat?: boolean | undefined;
readonly levels?: ("object" | "map" | "entries" | "keys" | "values" | LevelSpec | "entries-object")[] | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
}
declare function groupBy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, T6 extends object, Keys extends GK<T>>(groupKeys: Keys, fns: [F<T, T1>, F<T1, T2>, F<T2, T3>, F<T3, T4>, F<T4, T5>, F<T5, T6>]): GroupByFn<T, T6, Keys, GroupByOptions>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "keys";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var values: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "values";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var levels: (options?: Omit<GroupByOptions, "export"> | undefined) => {
readonly export: "levels";
readonly flat?: boolean | undefined;
readonly levels?: ("object" | "map" | "entries" | "keys" | "values" | LevelSpec | "entries-object")[] | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
}
declare function groupBy<T extends object, T1 extends object, T2 extends object, T3 extends object, T4 extends object, T5 extends object, Keys extends GK<T>, Opts extends GroupByOptions>(groupKeys: Keys, fns: [F<T, T1>, F<T1, T2>, F<T2, T3>, F<T3, T4>, F<T4, T5>], options: Opts): GroupByFn<T, T5, Keys, Opts>;
declare namespace groupBy {
var grouped: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "grouped";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entries: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var entriesObject: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "entries-object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var object: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "object";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var map: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export: "map";
readonly flat?: boolean | undefined;
readonly addGroupKeys?: boolean | undefined;
readonly compositeKey?: ((keys: any[]) => string) | undefined;
readonly single?: boolean | undefined;
readonly mapLeaf?: ((value: any) => any) | undefined;
readonly mapLeaves?: ((values: any[]) => any) | undefined;
readonly mapEntry?: ((entry: [any, any], level: number) => any) | undefined;
};
var keys: (options?: Omit<GroupByOptions, "levels" | "export"> | undefined) => {
readonly export