matrix-react-sdk
Version:
SDK for matrix.org using React
60 lines (55 loc) • 5.99 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PreferredRoomVersions = void 0;
exports.doesRoomVersionSupport = doesRoomVersionSupport;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2022 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.
*/
/**
* The preferred room versions for various features within the app. The
* room versions here are selected based on the client's support for the
* possible room versions in combination with server support in the
* ecosystem.
*
* Loosely follows https://spec.matrix.org/latest/rooms/#feature-matrix
*/
class PreferredRoomVersions {
constructor() {
// readonly, static, class
}
}
/**
* Determines if a room version supports the given feature using heuristics
* for how Matrix works.
* @param roomVer The room version to check support within.
* @param featureVer The room version of the feature. Should be from PreferredRoomVersions.
* @see PreferredRoomVersions
*/
exports.PreferredRoomVersions = PreferredRoomVersions;
/**
* The room version to use when creating "knock" rooms.
*/
(0, _defineProperty2.default)(PreferredRoomVersions, "KnockRooms", "7");
/**
* The room version to use when creating "restricted" rooms.
*/
(0, _defineProperty2.default)(PreferredRoomVersions, "RestrictedRooms", "9");
function doesRoomVersionSupport(roomVer, featureVer) {
// Assumption: all unstable room versions don't support the feature. Calling code can check for unstable
// room versions explicitly if it wants to. The spec reserves [0-9] and `.` for its room versions.
if (!roomVer.match(/[\d.]+/)) {
return false;
}
// Dev note: While the spec says room versions are not linear, we can make reasonable assumptions
// until the room versions prove themselves to be non-linear in the spec. We should see this coming
// from a mile away and can course-correct this function if needed.
return Number(roomVer) >= Number(featureVer);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcmVmZXJyZWRSb29tVmVyc2lvbnMiLCJjb25zdHJ1Y3RvciIsImV4cG9ydHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZGVmYXVsdCIsImRvZXNSb29tVmVyc2lvblN1cHBvcnQiLCJyb29tVmVyIiwiZmVhdHVyZVZlciIsIm1hdGNoIiwiTnVtYmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1ByZWZlcnJlZFJvb21WZXJzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG4vKipcbiAqIFRoZSBwcmVmZXJyZWQgcm9vbSB2ZXJzaW9ucyBmb3IgdmFyaW91cyBmZWF0dXJlcyB3aXRoaW4gdGhlIGFwcC4gVGhlXG4gKiByb29tIHZlcnNpb25zIGhlcmUgYXJlIHNlbGVjdGVkIGJhc2VkIG9uIHRoZSBjbGllbnQncyBzdXBwb3J0IGZvciB0aGVcbiAqIHBvc3NpYmxlIHJvb20gdmVyc2lvbnMgaW4gY29tYmluYXRpb24gd2l0aCBzZXJ2ZXIgc3VwcG9ydCBpbiB0aGVcbiAqIGVjb3N5c3RlbS5cbiAqXG4gKiBMb29zZWx5IGZvbGxvd3MgaHR0cHM6Ly9zcGVjLm1hdHJpeC5vcmcvbGF0ZXN0L3Jvb21zLyNmZWF0dXJlLW1hdHJpeFxuICovXG5leHBvcnQgY2xhc3MgUHJlZmVycmVkUm9vbVZlcnNpb25zIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcm9vbSB2ZXJzaW9uIHRvIHVzZSB3aGVuIGNyZWF0aW5nIFwia25vY2tcIiByb29tcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEtub2NrUm9vbXMgPSBcIjdcIjtcblxuICAgIC8qKlxuICAgICAqIFRoZSByb29tIHZlcnNpb24gdG8gdXNlIHdoZW4gY3JlYXRpbmcgXCJyZXN0cmljdGVkXCIgcm9vbXMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBSZXN0cmljdGVkUm9vbXMgPSBcIjlcIjtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vIHJlYWRvbmx5LCBzdGF0aWMsIGNsYXNzXG4gICAgfVxufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSByb29tIHZlcnNpb24gc3VwcG9ydHMgdGhlIGdpdmVuIGZlYXR1cmUgdXNpbmcgaGV1cmlzdGljc1xuICogZm9yIGhvdyBNYXRyaXggd29ya3MuXG4gKiBAcGFyYW0gcm9vbVZlciBUaGUgcm9vbSB2ZXJzaW9uIHRvIGNoZWNrIHN1cHBvcnQgd2l0aGluLlxuICogQHBhcmFtIGZlYXR1cmVWZXIgVGhlIHJvb20gdmVyc2lvbiBvZiB0aGUgZmVhdHVyZS4gU2hvdWxkIGJlIGZyb20gUHJlZmVycmVkUm9vbVZlcnNpb25zLlxuICogQHNlZSBQcmVmZXJyZWRSb29tVmVyc2lvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvZXNSb29tVmVyc2lvblN1cHBvcnQocm9vbVZlcjogc3RyaW5nLCBmZWF0dXJlVmVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBBc3N1bXB0aW9uOiBhbGwgdW5zdGFibGUgcm9vbSB2ZXJzaW9ucyBkb24ndCBzdXBwb3J0IHRoZSBmZWF0dXJlLiBDYWxsaW5nIGNvZGUgY2FuIGNoZWNrIGZvciB1bnN0YWJsZVxuICAgIC8vIHJvb20gdmVyc2lvbnMgZXhwbGljaXRseSBpZiBpdCB3YW50cyB0by4gVGhlIHNwZWMgcmVzZXJ2ZXMgWzAtOV0gYW5kIGAuYCBmb3IgaXRzIHJvb20gdmVyc2lvbnMuXG4gICAgaWYgKCFyb29tVmVyLm1hdGNoKC9bXFxkLl0rLykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIERldiBub3RlOiBXaGlsZSB0aGUgc3BlYyBzYXlzIHJvb20gdmVyc2lvbnMgYXJlIG5vdCBsaW5lYXIsIHdlIGNhbiBtYWtlIHJlYXNvbmFibGUgYXNzdW1wdGlvbnNcbiAgICAvLyB1bnRpbCB0aGUgcm9vbSB2ZXJzaW9ucyBwcm92ZSB0aGVtc2VsdmVzIHRvIGJlIG5vbi1saW5lYXIgaW4gdGhlIHNwZWMuIFdlIHNob3VsZCBzZWUgdGhpcyBjb21pbmdcbiAgICAvLyBmcm9tIGEgbWlsZSBhd2F5IGFuZCBjYW4gY291cnNlLWNvcnJlY3QgdGhpcyBmdW5jdGlvbiBpZiBuZWVkZWQuXG4gICAgcmV0dXJuIE51bWJlcihyb29tVmVyKSA+PSBOdW1iZXIoZmVhdHVyZVZlcik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQSxxQkFBcUIsQ0FBQztFQVd2QkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ2xCO0VBQUE7QUFFUjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BQyxPQUFBLENBQUFGLHFCQUFBLEdBQUFBLHFCQUFBO0FBZkk7QUFDSjtBQUNBO0FBRkksSUFBQUcsZ0JBQUEsQ0FBQUMsT0FBQSxFQURTSixxQkFBcUIsZ0JBSU0sR0FBRztBQUV2QztBQUNKO0FBQ0E7QUFGSSxJQUFBRyxnQkFBQSxDQUFBQyxPQUFBLEVBTlNKLHFCQUFxQixxQkFTVyxHQUFHO0FBY3pDLFNBQVNLLHNCQUFzQkEsQ0FBQ0MsT0FBZSxFQUFFQyxVQUFrQixFQUFXO0VBQ2pGO0VBQ0E7RUFDQSxJQUFJLENBQUNELE9BQU8sQ0FBQ0UsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzFCLE9BQU8sS0FBSztFQUNoQjs7RUFFQTtFQUNBO0VBQ0E7RUFDQSxPQUFPQyxNQUFNLENBQUNILE9BQU8sQ0FBQyxJQUFJRyxNQUFNLENBQUNGLFVBQVUsQ0FBQztBQUNoRCIsImlnbm9yZUxpc3QiOltdfQ==