// Copyright 2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only

export function diffArraysAsSets<T>(
  starting: ReadonlyArray<T>,
  current: ReadonlyArray<T>
): { added: Array<T>; removed: Array<T> } {
  const startingSet = new Set(starting);
  const currentSet = new Set(current);

  const removed = [];
  for (const item of startingSet) {
    if (!currentSet.has(item)) {
      removed.push(item);
    }
  }

  const added = [];
  for (const item of currentSet) {
    if (!startingSet.has(item)) {
      added.push(item);
    }
  }

  return { added, removed };
}
