86 lines
3.6 KiB
JavaScript
86 lines
3.6 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.ServerSupport = exports.Feature = void 0;
|
|
exports.buildFeatureSupportMap = buildFeatureSupportMap;
|
|
/*
|
|
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
let ServerSupport = /*#__PURE__*/function (ServerSupport) {
|
|
ServerSupport[ServerSupport["Stable"] = 0] = "Stable";
|
|
ServerSupport[ServerSupport["Unstable"] = 1] = "Unstable";
|
|
ServerSupport[ServerSupport["Unsupported"] = 2] = "Unsupported";
|
|
return ServerSupport;
|
|
}({});
|
|
exports.ServerSupport = ServerSupport;
|
|
let Feature = /*#__PURE__*/function (Feature) {
|
|
Feature["Thread"] = "Thread";
|
|
Feature["ThreadUnreadNotifications"] = "ThreadUnreadNotifications";
|
|
Feature["LoginTokenRequest"] = "LoginTokenRequest";
|
|
Feature["RelationBasedRedactions"] = "RelationBasedRedactions";
|
|
Feature["AccountDataDeletion"] = "AccountDataDeletion";
|
|
Feature["RelationsRecursion"] = "RelationsRecursion";
|
|
Feature["IntentionalMentions"] = "IntentionalMentions";
|
|
return Feature;
|
|
}({});
|
|
exports.Feature = Feature;
|
|
const featureSupportResolver = {
|
|
[Feature.Thread]: {
|
|
unstablePrefixes: ["org.matrix.msc3440"],
|
|
matrixVersion: "v1.3"
|
|
},
|
|
[Feature.ThreadUnreadNotifications]: {
|
|
unstablePrefixes: ["org.matrix.msc3771", "org.matrix.msc3773"],
|
|
matrixVersion: "v1.4"
|
|
},
|
|
[Feature.LoginTokenRequest]: {
|
|
unstablePrefixes: ["org.matrix.msc3882"]
|
|
},
|
|
[Feature.RelationBasedRedactions]: {
|
|
unstablePrefixes: ["org.matrix.msc3912"]
|
|
},
|
|
[Feature.AccountDataDeletion]: {
|
|
unstablePrefixes: ["org.matrix.msc3391"]
|
|
},
|
|
[Feature.RelationsRecursion]: {
|
|
unstablePrefixes: ["org.matrix.msc3981"]
|
|
},
|
|
[Feature.IntentionalMentions]: {
|
|
unstablePrefixes: ["org.matrix.msc3952_intentional_mentions"],
|
|
matrixVersion: "v1.7"
|
|
}
|
|
};
|
|
async function buildFeatureSupportMap(versions) {
|
|
const supportMap = new Map();
|
|
for (const [feature, supportCondition] of Object.entries(featureSupportResolver)) {
|
|
var _versions$versions$in, _versions$versions, _supportCondition$uns, _supportCondition$uns2;
|
|
const supportMatrixVersion = (_versions$versions$in = (_versions$versions = versions.versions) === null || _versions$versions === void 0 ? void 0 : _versions$versions.includes(supportCondition.matrixVersion || "")) !== null && _versions$versions$in !== void 0 ? _versions$versions$in : false;
|
|
const supportUnstablePrefixes = (_supportCondition$uns = (_supportCondition$uns2 = supportCondition.unstablePrefixes) === null || _supportCondition$uns2 === void 0 ? void 0 : _supportCondition$uns2.every(unstablePrefix => {
|
|
var _versions$unstable_fe;
|
|
return ((_versions$unstable_fe = versions.unstable_features) === null || _versions$unstable_fe === void 0 ? void 0 : _versions$unstable_fe[unstablePrefix]) === true;
|
|
})) !== null && _supportCondition$uns !== void 0 ? _supportCondition$uns : false;
|
|
if (supportMatrixVersion) {
|
|
supportMap.set(feature, ServerSupport.Stable);
|
|
} else if (supportUnstablePrefixes) {
|
|
supportMap.set(feature, ServerSupport.Unstable);
|
|
} else {
|
|
supportMap.set(feature, ServerSupport.Unsupported);
|
|
}
|
|
}
|
|
return supportMap;
|
|
}
|
|
//# sourceMappingURL=feature.js.map
|