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

22 lines
442 B
JavaScript

"use strict";
// FIXME: Publish as separate non-modular-matrix package
module.exports = function createItemDeduplicator(getKey) {
let items = new Map();
return function deduplicateItem(item) {
let key = getKey(item);
if (key == null) {
// We cannot deduplicate an item that doesn't have a key
return item;
} else if (items.has(key)) {
return items.get(key);
} else {
items.set(key, item);
return item;
}
};
};