static _orderCommitSetsByTimeAndOrderThenDeduplicate()

in resources/perf.webkit.org/public/v3/commit-set-range-bisector.js [80:110]


    static _orderCommitSetsByTimeAndOrderThenDeduplicate(commitSets, repositoriesWithCommitTime, repositoriesWithCommitOrderOnly, repositoriesWithoutOrdering)
    {
        const sortedCommitSets = commitSets.sort((firstCommitSet, secondCommitSet) => {
            for (const repository of repositoriesWithCommitTime) {
                const firstCommit = firstCommitSet.commitForRepository(repository);
                const secondCommit = secondCommitSet.commitForRepository(repository);
                const diff = firstCommit.time() - secondCommit.time();
                if (!diff)
                    continue;
                return diff;
            }
            for (const repository of repositoriesWithCommitOrderOnly) {
                const firstCommit = firstCommitSet.commitForRepository(repository);
                const secondCommit = secondCommitSet.commitForRepository(repository);
                const diff = firstCommit.order() - secondCommit.order();
                if (!diff)
                    continue;
                return diff;
            }
            for (const repository of repositoriesWithoutOrdering) {
                const firstCommit = firstCommitSet.commitForRepository(repository);
                const secondCommit = secondCommitSet.commitForRepository(repository);
                if (firstCommit === secondCommit)
                    continue;
                return firstCommit.revision() < secondCommit.revision() ? -1 : 1;
            }
            return 0;
        });

        return sortedCommitSets.filter((currentSet, i) => !i || !currentSet.equals(sortedCommitSets[i - 1]));
    }