matrix-react-sdk
Version:
SDK for matrix.org using React
56 lines (53 loc) • 5.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.filterValidMDirect = void 0;
/*
Copyright 2024 New Vector Ltd.
Copyright 2023 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.
*/
/**
* Filter m.direct content to be compliant to https://spec.matrix.org/v1.6/client-server-api/#mdirect.
*
* @param content - Raw event content to be filerted
* @returns value as a flag whether to content was valid.
* filteredContent with only values from the content that are spec compliant.
*/
const filterValidMDirect = content => {
if (content === null || typeof content !== "object") {
return {
valid: false,
filteredContent: {}
};
}
const filteredContent = new Map();
let valid = true;
for (const [userId, roomIds] of Object.entries(content)) {
if (typeof userId !== "string") {
valid = false;
continue;
}
if (!Array.isArray(roomIds)) {
valid = false;
continue;
}
const filteredRoomIds = [];
filteredContent.set(userId, filteredRoomIds);
for (const roomId of roomIds) {
if (typeof roomId === "string") {
filteredRoomIds.push(roomId);
} else {
valid = false;
}
}
}
return {
valid,
filteredContent: Object.fromEntries(filteredContent.entries())
};
};
exports.filterValidMDirect = filterValidMDirect;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWx0ZXJWYWxpZE1EaXJlY3QiLCJjb250ZW50IiwidmFsaWQiLCJmaWx0ZXJlZENvbnRlbnQiLCJNYXAiLCJ1c2VySWQiLCJyb29tSWRzIiwiT2JqZWN0IiwiZW50cmllcyIsIkFycmF5IiwiaXNBcnJheSIsImZpbHRlcmVkUm9vbUlkcyIsInNldCIsInJvb21JZCIsInB1c2giLCJmcm9tRW50cmllcyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZG0vZmlsdGVyVmFsaWRNRGlyZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIzIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmludGVyZmFjZSBGaWx0ZXJWYWxpZE1EaXJlY3RSZXN1bHQge1xuICAgIC8qKiBXaGV0aGVyIHRoZSBlbnRpcmUgY29udGVudCBpcyB2YWxpZCAqL1xuICAgIHZhbGlkOiBib29sZWFuO1xuICAgIC8qKiBGaWx0ZXJlZCBjb250ZW50IHdpdGggb25seSB0aGUgdmFsaWQgcGFydHMgKi9cbiAgICBmaWx0ZXJlZENvbnRlbnQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgbS5kaXJlY3QgY29udGVudCB0byBiZSBjb21wbGlhbnQgdG8gaHR0cHM6Ly9zcGVjLm1hdHJpeC5vcmcvdjEuNi9jbGllbnQtc2VydmVyLWFwaS8jbWRpcmVjdC5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFJhdyBldmVudCBjb250ZW50IHRvIGJlIGZpbGVydGVkXG4gKiBAcmV0dXJucyB2YWx1ZSBhcyBhIGZsYWcgd2hldGhlciB0byBjb250ZW50IHdhcyB2YWxpZC5cbiAqICAgICAgICAgIGZpbHRlcmVkQ29udGVudCB3aXRoIG9ubHkgdmFsdWVzIGZyb20gdGhlIGNvbnRlbnQgdGhhdCBhcmUgc3BlYyBjb21wbGlhbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBmaWx0ZXJWYWxpZE1EaXJlY3QgPSAoY29udGVudDogdW5rbm93bik6IEZpbHRlclZhbGlkTURpcmVjdFJlc3VsdCA9PiB7XG4gICAgaWYgKGNvbnRlbnQgPT09IG51bGwgfHwgdHlwZW9mIGNvbnRlbnQgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgIGZpbHRlcmVkQ29udGVudDoge30sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVyZWRDb250ZW50ID0gbmV3IE1hcCgpO1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgICBmb3IgKGNvbnN0IFt1c2VySWQsIHJvb21JZHNdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRlbnQpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdXNlcklkICE9PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocm9vbUlkcykpIHtcbiAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUm9vbUlkczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgZmlsdGVyZWRDb250ZW50LnNldCh1c2VySWQsIGZpbHRlcmVkUm9vbUlkcyk7XG5cbiAgICAgICAgZm9yIChjb25zdCByb29tSWQgb2Ygcm9vbUlkcykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb29tSWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZFJvb21JZHMucHVzaChyb29tSWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQsXG4gICAgICAgIGZpbHRlcmVkQ29udGVudDogT2JqZWN0LmZyb21FbnRyaWVzKGZpbHRlcmVkQ29udGVudC5lbnRyaWVzKCkpLFxuICAgIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU1BLGtCQUFrQixHQUFJQyxPQUFnQixJQUErQjtFQUM5RSxJQUFJQSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU9BLE9BQU8sS0FBSyxRQUFRLEVBQUU7SUFDakQsT0FBTztNQUNIQyxLQUFLLEVBQUUsS0FBSztNQUNaQyxlQUFlLEVBQUUsQ0FBQztJQUN0QixDQUFDO0VBQ0w7RUFFQSxNQUFNQSxlQUFlLEdBQUcsSUFBSUMsR0FBRyxDQUFDLENBQUM7RUFDakMsSUFBSUYsS0FBSyxHQUFHLElBQUk7RUFFaEIsS0FBSyxNQUFNLENBQUNHLE1BQU0sRUFBRUMsT0FBTyxDQUFDLElBQUlDLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDUCxPQUFPLENBQUMsRUFBRTtJQUNyRCxJQUFJLE9BQU9JLE1BQU0sS0FBSyxRQUFRLEVBQUU7TUFDNUJILEtBQUssR0FBRyxLQUFLO01BQ2I7SUFDSjtJQUVBLElBQUksQ0FBQ08sS0FBSyxDQUFDQyxPQUFPLENBQUNKLE9BQU8sQ0FBQyxFQUFFO01BQ3pCSixLQUFLLEdBQUcsS0FBSztNQUNiO0lBQ0o7SUFFQSxNQUFNUyxlQUF5QixHQUFHLEVBQUU7SUFDcENSLGVBQWUsQ0FBQ1MsR0FBRyxDQUFDUCxNQUFNLEVBQUVNLGVBQWUsQ0FBQztJQUU1QyxLQUFLLE1BQU1FLE1BQU0sSUFBSVAsT0FBTyxFQUFFO01BQzFCLElBQUksT0FBT08sTUFBTSxLQUFLLFFBQVEsRUFBRTtRQUM1QkYsZUFBZSxDQUFDRyxJQUFJLENBQUNELE1BQU0sQ0FBQztNQUNoQyxDQUFDLE1BQU07UUFDSFgsS0FBSyxHQUFHLEtBQUs7TUFDakI7SUFDSjtFQUNKO0VBRUEsT0FBTztJQUNIQSxLQUFLO0lBQ0xDLGVBQWUsRUFBRUksTUFBTSxDQUFDUSxXQUFXLENBQUNaLGVBQWUsQ0FBQ0ssT0FBTyxDQUFDLENBQUM7RUFDakUsQ0FBQztBQUNMLENBQUM7QUFBQ1EsT0FBQSxDQUFBaEIsa0JBQUEsR0FBQUEsa0JBQUEiLCJpZ25vcmVMaXN0IjpbXX0=