UNPKG

matrix-react-sdk

Version:
58 lines (54 loc) 5.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnhancedMap = void 0; exports.mapDiff = mapDiff; var _arrays = require("./arrays"); /* Copyright 2024 New Vector Ltd. Copyright 2020 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 the keys added, changed, and removed between two Maps. * For changes, simple triple equal comparisons are done, not in-depth tree checking. * @param a The first Map. Must be defined. * @param b The second Map. Must be defined. * @returns The difference between the keys of each Map. */ function mapDiff(a, b) { const aKeys = [...a.keys()]; const bKeys = [...b.keys()]; const keyDiff = (0, _arrays.arrayDiff)(aKeys, bKeys); const possibleChanges = (0, _arrays.arrayIntersection)(aKeys, bKeys); const changes = possibleChanges.filter(k => a.get(k) !== b.get(k)); return { changed: changes, added: keyDiff.added, removed: keyDiff.removed }; } /** * A Map<K, V> with added utility. */ class EnhancedMap extends Map { constructor(entries) { super(entries); } getOrCreate(key, def) { if (this.has(key)) { return this.get(key); } this.set(key, def); return def; } remove(key) { const v = this.get(key); this.delete(key); return v; } } exports.EnhancedMap = EnhancedMap; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXJyYXlzIiwicmVxdWlyZSIsIm1hcERpZmYiLCJhIiwiYiIsImFLZXlzIiwia2V5cyIsImJLZXlzIiwia2V5RGlmZiIsImFycmF5RGlmZiIsInBvc3NpYmxlQ2hhbmdlcyIsImFycmF5SW50ZXJzZWN0aW9uIiwiY2hhbmdlcyIsImZpbHRlciIsImsiLCJnZXQiLCJjaGFuZ2VkIiwiYWRkZWQiLCJyZW1vdmVkIiwiRW5oYW5jZWRNYXAiLCJNYXAiLCJjb25zdHJ1Y3RvciIsImVudHJpZXMiLCJnZXRPckNyZWF0ZSIsImtleSIsImRlZiIsImhhcyIsInNldCIsInJlbW92ZSIsInYiLCJkZWxldGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21hcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgYXJyYXlEaWZmLCBhcnJheUludGVyc2VjdGlvbiB9IGZyb20gXCIuL2FycmF5c1wiO1xuXG4vKipcbiAqIERldGVybWluZXMgdGhlIGtleXMgYWRkZWQsIGNoYW5nZWQsIGFuZCByZW1vdmVkIGJldHdlZW4gdHdvIE1hcHMuXG4gKiBGb3IgY2hhbmdlcywgc2ltcGxlIHRyaXBsZSBlcXVhbCBjb21wYXJpc29ucyBhcmUgZG9uZSwgbm90IGluLWRlcHRoIHRyZWUgY2hlY2tpbmcuXG4gKiBAcGFyYW0gYSBUaGUgZmlyc3QgTWFwLiBNdXN0IGJlIGRlZmluZWQuXG4gKiBAcGFyYW0gYiBUaGUgc2Vjb25kIE1hcC4gTXVzdCBiZSBkZWZpbmVkLlxuICogQHJldHVybnMgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUga2V5cyBvZiBlYWNoIE1hcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcERpZmY8SywgVj4oYTogTWFwPEssIFY+LCBiOiBNYXA8SywgVj4pOiB7IGNoYW5nZWQ6IEtbXTsgYWRkZWQ6IEtbXTsgcmVtb3ZlZDogS1tdIH0ge1xuICAgIGNvbnN0IGFLZXlzID0gWy4uLmEua2V5cygpXTtcbiAgICBjb25zdCBiS2V5cyA9IFsuLi5iLmtleXMoKV07XG4gICAgY29uc3Qga2V5RGlmZiA9IGFycmF5RGlmZihhS2V5cywgYktleXMpO1xuICAgIGNvbnN0IHBvc3NpYmxlQ2hhbmdlcyA9IGFycmF5SW50ZXJzZWN0aW9uKGFLZXlzLCBiS2V5cyk7XG4gICAgY29uc3QgY2hhbmdlcyA9IHBvc3NpYmxlQ2hhbmdlcy5maWx0ZXIoKGspID0+IGEuZ2V0KGspICE9PSBiLmdldChrKSk7XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkOiBjaGFuZ2VzLCBhZGRlZDoga2V5RGlmZi5hZGRlZCwgcmVtb3ZlZDoga2V5RGlmZi5yZW1vdmVkIH07XG59XG5cbi8qKlxuICogQSBNYXA8SywgVj4gd2l0aCBhZGRlZCB1dGlsaXR5LlxuICovXG5leHBvcnQgY2xhc3MgRW5oYW5jZWRNYXA8SywgVj4gZXh0ZW5kcyBNYXA8SywgVj4ge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlbnRyaWVzPzogSXRlcmFibGU8W0ssIFZdPikge1xuICAgICAgICBzdXBlcihlbnRyaWVzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JDcmVhdGUoa2V5OiBLLCBkZWY6IFYpOiBWIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldChrZXkpITtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldChrZXksIGRlZik7XG4gICAgICAgIHJldHVybiBkZWY7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZShrZXk6IEspOiBWIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuZ2V0KGtleSk7XG4gICAgICAgIHRoaXMuZGVsZXRlKGtleSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsT0FBT0EsQ0FBT0MsQ0FBWSxFQUFFQyxDQUFZLEVBQThDO0VBQ2xHLE1BQU1DLEtBQUssR0FBRyxDQUFDLEdBQUdGLENBQUMsQ0FBQ0csSUFBSSxDQUFDLENBQUMsQ0FBQztFQUMzQixNQUFNQyxLQUFLLEdBQUcsQ0FBQyxHQUFHSCxDQUFDLENBQUNFLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDM0IsTUFBTUUsT0FBTyxHQUFHLElBQUFDLGlCQUFTLEVBQUNKLEtBQUssRUFBRUUsS0FBSyxDQUFDO0VBQ3ZDLE1BQU1HLGVBQWUsR0FBRyxJQUFBQyx5QkFBaUIsRUFBQ04sS0FBSyxFQUFFRSxLQUFLLENBQUM7RUFDdkQsTUFBTUssT0FBTyxHQUFHRixlQUFlLENBQUNHLE1BQU0sQ0FBRUMsQ0FBQyxJQUFLWCxDQUFDLENBQUNZLEdBQUcsQ0FBQ0QsQ0FBQyxDQUFDLEtBQUtWLENBQUMsQ0FBQ1csR0FBRyxDQUFDRCxDQUFDLENBQUMsQ0FBQztFQUVwRSxPQUFPO0lBQUVFLE9BQU8sRUFBRUosT0FBTztJQUFFSyxLQUFLLEVBQUVULE9BQU8sQ0FBQ1MsS0FBSztJQUFFQyxPQUFPLEVBQUVWLE9BQU8sQ0FBQ1U7RUFBUSxDQUFDO0FBQy9FOztBQUVBO0FBQ0E7QUFDQTtBQUNPLE1BQU1DLFdBQVcsU0FBZUMsR0FBRyxDQUFPO0VBQ3RDQyxXQUFXQSxDQUFDQyxPQUEwQixFQUFFO0lBQzNDLEtBQUssQ0FBQ0EsT0FBTyxDQUFDO0VBQ2xCO0VBRU9DLFdBQVdBLENBQUNDLEdBQU0sRUFBRUMsR0FBTSxFQUFLO0lBQ2xDLElBQUksSUFBSSxDQUFDQyxHQUFHLENBQUNGLEdBQUcsQ0FBQyxFQUFFO01BQ2YsT0FBTyxJQUFJLENBQUNULEdBQUcsQ0FBQ1MsR0FBRyxDQUFDO0lBQ3hCO0lBQ0EsSUFBSSxDQUFDRyxHQUFHLENBQUNILEdBQUcsRUFBRUMsR0FBRyxDQUFDO0lBQ2xCLE9BQU9BLEdBQUc7RUFDZDtFQUVPRyxNQUFNQSxDQUFDSixHQUFNLEVBQWlCO0lBQ2pDLE1BQU1LLENBQUMsR0FBRyxJQUFJLENBQUNkLEdBQUcsQ0FBQ1MsR0FBRyxDQUFDO0lBQ3ZCLElBQUksQ0FBQ00sTUFBTSxDQUFDTixHQUFHLENBQUM7SUFDaEIsT0FBT0ssQ0FBQztFQUNaO0FBQ0o7QUFBQ0UsT0FBQSxDQUFBWixXQUFBLEdBQUFBLFdBQUEiLCJpZ25vcmVMaXN0IjpbXX0=