summaryrefslogtreecommitdiff
path: root/includes/external/matrix/node_modules/matrix-js-sdk/src/NamespacedValue.ts
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/matrix/node_modules/matrix-js-sdk/src/NamespacedValue.ts')
-rw-r--r--includes/external/matrix/node_modules/matrix-js-sdk/src/NamespacedValue.ts120
1 files changed, 0 insertions, 120 deletions
diff --git a/includes/external/matrix/node_modules/matrix-js-sdk/src/NamespacedValue.ts b/includes/external/matrix/node_modules/matrix-js-sdk/src/NamespacedValue.ts
deleted file mode 100644
index a1a7e5d..0000000
--- a/includes/external/matrix/node_modules/matrix-js-sdk/src/NamespacedValue.ts
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-Copyright 2021 - 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.
-*/
-
-import { Optional } from "matrix-events-sdk/lib/types";
-
-/**
- * Represents a simple Matrix namespaced value. This will assume that if a stable prefix
- * is provided that the stable prefix should be used when representing the identifier.
- */
-export class NamespacedValue<S extends string, U extends string> {
- // Stable is optional, but one of the two parameters is required, hence the weird-looking types.
- // Goal is to to have developers explicitly say there is no stable value (if applicable).
- public constructor(stable: S, unstable: U);
- public constructor(stable: S, unstable?: U);
- public constructor(stable: null | undefined, unstable: U);
- public constructor(public readonly stable?: S | null, public readonly unstable?: U) {
- if (!this.unstable && !this.stable) {
- throw new Error("One of stable or unstable values must be supplied");
- }
- }
-
- public get name(): U | S {
- if (this.stable) {
- return this.stable;
- }
- return this.unstable!;
- }
-
- public get altName(): U | S | null | undefined {
- if (!this.stable) {
- return null;
- }
- return this.unstable;
- }
-
- public get names(): (U | S)[] {
- const names = [this.name];
- const altName = this.altName;
- if (altName) names.push(altName);
- return names;
- }
-
- public matches(val: string): boolean {
- return this.name === val || this.altName === val;
- }
-
- // this desperately wants https://github.com/microsoft/TypeScript/pull/26349 at the top level of the class
- // so we can instantiate `NamespacedValue<string, _, _>` as a default type for that namespace.
- public findIn<T>(obj: any): Optional<T> {
- let val: T | undefined = undefined;
- if (this.name) {
- val = obj?.[this.name];
- }
- if (!val && this.altName) {
- val = obj?.[this.altName];
- }
- return val;
- }
-
- public includedIn(arr: any[]): boolean {
- let included = false;
- if (this.name) {
- included = arr.includes(this.name);
- }
- if (!included && this.altName) {
- included = arr.includes(this.altName);
- }
- return included;
- }
-}
-
-export class ServerControlledNamespacedValue<S extends string, U extends string> extends NamespacedValue<S, U> {
- private preferUnstable = false;
-
- public setPreferUnstable(preferUnstable: boolean): void {
- this.preferUnstable = preferUnstable;
- }
-
- public get name(): U | S {
- if (this.stable && !this.preferUnstable) {
- return this.stable;
- }
- return this.unstable!;
- }
-}
-
-/**
- * Represents a namespaced value which prioritizes the unstable value over the stable
- * value.
- */
-export class UnstableValue<S extends string, U extends string> extends NamespacedValue<S, U> {
- // Note: Constructor difference is that `unstable` is *required*.
- public constructor(stable: S, unstable: U) {
- super(stable, unstable);
- if (!this.unstable) {
- throw new Error("Unstable value must be supplied");
- }
- }
-
- public get name(): U {
- return this.unstable!;
- }
-
- public get altName(): S {
- return this.stable!;
- }
-}