import ascending from "./ascending.js"; import group, {rollup} from "./group.js"; import sort from "./sort.js"; export default function groupSort(values, reduce, key) { return (reduce.length !== 2 ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk))) : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk)))) .map(([key]) => key); }