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