export function groupBy(arr: T[], key: (i: T) => K): Record { return arr.reduce( (groups, item) => { (groups[key(item)] ||= []).push(item); return groups; }, {} as Record, ); }