matrix-react-sdk
Version:
SDK for matrix.org using React
45 lines (40 loc) • 4.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setDiff = setDiff;
exports.setHasDiff = setHasDiff;
var _arrays = require("./arrays");
/*
Copyright 2024 New Vector Ltd.
Copyright 2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
/**
* Determines if two sets are different through a shallow comparison.
* @param a The first set. Must be defined.
* @param b The second set. Must be defined.
* @returns True if they are different, false otherwise.
*/
function setHasDiff(a, b) {
if (a.size === b.size) {
// When the lengths are equal, check to see if either set is missing an element from the other.
if (Array.from(b).some(i => !a.has(i))) return true;
if (Array.from(a).some(i => !b.has(i))) return true;
// if all the keys are common, say so
return false;
} else {
return true; // different lengths means they are naturally diverged
}
}
/**
* Determines the values added and removed between two sets.
* @param a The first set. Must be defined.
* @param b The second set. Must be defined.
* @returns The difference between the values in each set.
*/
function setDiff(a, b) {
return (0, _arrays.arrayDiff)(Array.from(a), Array.from(b));
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXJyYXlzIiwicmVxdWlyZSIsInNldEhhc0RpZmYiLCJhIiwiYiIsInNpemUiLCJBcnJheSIsImZyb20iLCJzb21lIiwiaSIsImhhcyIsInNldERpZmYiLCJhcnJheURpZmYiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBhcnJheURpZmYsIERpZmYgfSBmcm9tIFwiLi9hcnJheXNcIjtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHR3byBzZXRzIGFyZSBkaWZmZXJlbnQgdGhyb3VnaCBhIHNoYWxsb3cgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBhIFRoZSBmaXJzdCBzZXQuIE11c3QgYmUgZGVmaW5lZC5cbiAqIEBwYXJhbSBiIFRoZSBzZWNvbmQgc2V0LiBNdXN0IGJlIGRlZmluZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZXkgYXJlIGRpZmZlcmVudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SGFzRGlmZjxUPihhOiBTZXQ8VD4sIGI6IFNldDxUPik6IGJvb2xlYW4ge1xuICAgIGlmIChhLnNpemUgPT09IGIuc2l6ZSkge1xuICAgICAgICAvLyBXaGVuIHRoZSBsZW5ndGhzIGFyZSBlcXVhbCwgY2hlY2sgdG8gc2VlIGlmIGVpdGhlciBzZXQgaXMgbWlzc2luZyBhbiBlbGVtZW50IGZyb20gdGhlIG90aGVyLlxuICAgICAgICBpZiAoQXJyYXkuZnJvbShiKS5zb21lKChpKSA9PiAhYS5oYXMoaSkpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKEFycmF5LmZyb20oYSkuc29tZSgoaSkgPT4gIWIuaGFzKGkpKSkgcmV0dXJuIHRydWU7XG5cbiAgICAgICAgLy8gaWYgYWxsIHRoZSBrZXlzIGFyZSBjb21tb24sIHNheSBzb1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIGRpZmZlcmVudCBsZW5ndGhzIG1lYW5zIHRoZXkgYXJlIG5hdHVyYWxseSBkaXZlcmdlZFxuICAgIH1cbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSB2YWx1ZXMgYWRkZWQgYW5kIHJlbW92ZWQgYmV0d2VlbiB0d28gc2V0cy5cbiAqIEBwYXJhbSBhIFRoZSBmaXJzdCBzZXQuIE11c3QgYmUgZGVmaW5lZC5cbiAqIEBwYXJhbSBiIFRoZSBzZWNvbmQgc2V0LiBNdXN0IGJlIGRlZmluZWQuXG4gKiBAcmV0dXJucyBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB2YWx1ZXMgaW4gZWFjaCBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmPFQ+KGE6IFNldDxUPiwgYjogU2V0PFQ+KTogRGlmZjxUPiB7XG4gICAgcmV0dXJuIGFycmF5RGlmZihBcnJheS5mcm9tKGEpLCBBcnJheS5mcm9tKGIpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLFVBQVVBLENBQUlDLENBQVMsRUFBRUMsQ0FBUyxFQUFXO0VBQ3pELElBQUlELENBQUMsQ0FBQ0UsSUFBSSxLQUFLRCxDQUFDLENBQUNDLElBQUksRUFBRTtJQUNuQjtJQUNBLElBQUlDLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSCxDQUFDLENBQUMsQ0FBQ0ksSUFBSSxDQUFFQyxDQUFDLElBQUssQ0FBQ04sQ0FBQyxDQUFDTyxHQUFHLENBQUNELENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJO0lBQ3JELElBQUlILEtBQUssQ0FBQ0MsSUFBSSxDQUFDSixDQUFDLENBQUMsQ0FBQ0ssSUFBSSxDQUFFQyxDQUFDLElBQUssQ0FBQ0wsQ0FBQyxDQUFDTSxHQUFHLENBQUNELENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJOztJQUVyRDtJQUNBLE9BQU8sS0FBSztFQUNoQixDQUFDLE1BQU07SUFDSCxPQUFPLElBQUksQ0FBQyxDQUFDO0VBQ2pCO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsT0FBT0EsQ0FBSVIsQ0FBUyxFQUFFQyxDQUFTLEVBQVc7RUFDdEQsT0FBTyxJQUFBUSxpQkFBUyxFQUFDTixLQUFLLENBQUNDLElBQUksQ0FBQ0osQ0FBQyxDQUFDLEVBQUVHLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSCxDQUFDLENBQUMsQ0FBQztBQUNsRCIsImlnbm9yZUxpc3QiOltdfQ==