You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

25 lines
1.2 KiB

export declare const DEFAULT_GROUP = "$DEFAULT";
export type GroupQuery = string | RegExp;
export type GroupKey<TPresets extends Presets> = keyof TPresets | string | typeof DEFAULT_GROUP;
export type Presets = Record<string, GroupQuery | GroupQuery[]>;
export type OrganizedGroup<TValue> = {
values: TValue[];
query: GroupQuery;
};
export type OrganizedResult<TValue> = {
groups: OrganizedGroup<TValue>[];
flat: TValue[];
};
export interface BaseOrganizeOptions<TPresets extends Presets> {
presets?: TPresets;
groups: GroupKey<TPresets>[];
sort?: OrganizeOptionsSort;
ignoreCase?: boolean;
}
export type OrganizeOptionsSort = "ASC" | "DESC" | boolean;
export interface MapOrganizeOptions<TPresets extends Presets, TValue> extends BaseOrganizeOptions<TPresets> {
map: (value: TValue) => string;
}
export type OrganizeOptions<TPresets extends Presets, TValue> = BaseOrganizeOptions<TPresets> | MapOrganizeOptions<TPresets, TValue>;
export declare function miniorganize<TPresets extends Presets>(values: string[], options: BaseOrganizeOptions<TPresets>): OrganizedResult<string>;
export declare function miniorganize<TPresets extends Presets, TValue>(values: TValue[], options: MapOrganizeOptions<TPresets, TValue>): OrganizedResult<TValue>;