diff options
Diffstat (limited to 'includes/external/matrix/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts')
-rw-r--r-- | includes/external/matrix/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/includes/external/matrix/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts b/includes/external/matrix/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts deleted file mode 100644 index 9fdeee2..0000000 --- a/includes/external/matrix/node_modules/matrix-widget-api/src/driver/WidgetDriver.ts +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright 2020 - 2021 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 { Capability, IOpenIDCredentials, OpenIDRequestState, SimpleObservable, IRoomEvent, ITurnServer } from ".."; - -export interface ISendEventDetails { - roomId: string; - eventId: string; -} - -export interface IOpenIDUpdate { - state: OpenIDRequestState; - token?: IOpenIDCredentials; -} - -export interface IReadEventRelationsResult { - chunk: IRoomEvent[]; - nextBatch?: string; - prevBatch?: string; -} - -export interface ISearchUserDirectoryResult { - limited: boolean; - results: Array<{ - userId: string; - displayName?: string; - avatarUrl?: string; - }>; -} - -/** - * Represents the functions and behaviour the widget-api is unable to - * do, such as prompting the user for information or interacting with - * the UI. Clients are expected to implement this class and override - * any functions they need/want to support. - * - * This class assumes the client will have a context of a Widget - * instance already. - */ -export abstract class WidgetDriver { - /** - * Verifies the widget's requested capabilities, returning the ones - * it is approved to use. Mutating the requested capabilities will - * have no effect. - * - * This SHOULD result in the user being prompted to approve/deny - * capabilities. - * - * By default this rejects all capabilities (returns an empty set). - * @param {Set<Capability>} requested The set of requested capabilities. - * @returns {Promise<Set<Capability>>} Resolves to the allowed capabilities. - */ - public validateCapabilities(requested: Set<Capability>): Promise<Set<Capability>> { - return Promise.resolve(new Set()); - } - - /** - * Sends an event into a room. If `roomId` is falsy, the client should send the event - * into the room the user is currently looking at. The widget API will have already - * verified that the widget is capable of sending the event to that room. - * @param {string} eventType The event type to be sent. - * @param {*} content The content for the event. - * @param {string|null} stateKey The state key if this is a state event, otherwise null. - * May be an empty string. - * @param {string|null} roomId The room ID to send the event to. If falsy, the room the - * user is currently looking at. - * @returns {Promise<ISendEventDetails>} Resolves when the event has been sent with - * details of that event. - * @throws Rejected when the event could not be sent. - */ - public sendEvent( - eventType: string, - content: unknown, - stateKey: string | null = null, - roomId: string | null = null, - ): Promise<ISendEventDetails> { - return Promise.reject(new Error("Failed to override function")); - } - - /** - * Sends a to-device event. The widget API will have already verified that the widget - * is capable of sending the event. - * @param {string} eventType The event type to be sent. - * @param {boolean} encrypted Whether to encrypt the message contents. - * @param {Object} contentMap A map from user ID and device ID to event content. - * @returns {Promise<void>} Resolves when the event has been sent. - * @throws Rejected when the event could not be sent. - */ - public sendToDevice( - eventType: string, - encrypted: boolean, - contentMap: { [userId: string]: { [deviceId: string]: object } }, - ): Promise<void> { - return Promise.reject(new Error("Failed to override function")); - } - - /** - * Reads all events of the given type, and optionally `msgtype` (if applicable/defined), - * the user has access to. The widget API will have already verified that the widget is - * capable of receiving the events. Less events than the limit are allowed to be returned, - * but not more. If `roomIds` is supplied, it may contain `Symbols.AnyRoom` to denote that - * `limit` in each of the client's known rooms should be returned. When `null`, only the - * room the user is currently looking at should be considered. - * @param eventType The event type to be read. - * @param msgtype The msgtype of the events to be read, if applicable/defined. - * @param limit The maximum number of events to retrieve per room. Will be zero to denote "as many - * as possible". - * @param roomIds When null, the user's currently viewed room. Otherwise, the list of room IDs - * to look within, possibly containing Symbols.AnyRoom to denote all known rooms. - * @returns {Promise<IRoomEvent[]>} Resolves to the room events, or an empty array. - */ - public readRoomEvents( - eventType: string, - msgtype: string | undefined, - limit: number, - roomIds: string[] | null = null, - ): Promise<IRoomEvent[]> { - return Promise.resolve([]); - } - - /** - * Reads all events of the given type, and optionally state key (if applicable/defined), - * the user has access to. The widget API will have already verified that the widget is - * capable of receiving the events. Less events than the limit are allowed to be returned, - * but not more. If `roomIds` is supplied, it may contain `Symbols.AnyRoom` to denote that - * `limit` in each of the client's known rooms should be returned. When `null`, only the - * room the user is currently looking at should be considered. - * @param eventType The event type to be read. - * @param stateKey The state key of the events to be read, if applicable/defined. - * @param limit The maximum number of events to retrieve. Will be zero to denote "as many - * as possible". - * @param roomIds When null, the user's currently viewed room. Otherwise, the list of room IDs - * to look within, possibly containing Symbols.AnyRoom to denote all known rooms. - * @returns {Promise<IRoomEvent[]>} Resolves to the state events, or an empty array. - */ - public readStateEvents( - eventType: string, - stateKey: string | undefined, - limit: number, - roomIds: string[] | null = null, - ): Promise<IRoomEvent[]> { - return Promise.resolve([]); - } - - /** - * Reads all events that are related to a given event. The widget API will - * have already verified that the widget is capable of receiving the event, - * or will make sure to reject access to events which are returned from this - * function, but are not capable of receiving. If `relationType` or `eventType` - * are set, the returned events should already be filtered. Less events than - * the limit are allowed to be returned, but not more. - * @param eventId The id of the parent event to be read. - * @param roomId The room to look within. When undefined, the user's - * currently viewed room. - * @param relationType The relationship type of child events to search for. - * When undefined, all relations are returned. - * @param eventType The event type of child events to search for. When undefined, - * all related events are returned. - * @param from The pagination token to start returning results from, as - * received from a previous call. If not supplied, results start at the most - * recent topological event known to the server. - * @param to The pagination token to stop returning results at. If not - * supplied, results continue up to limit or until there are no more events. - * @param limit The maximum number of events to retrieve per room. If not - * supplied, the server will apply a default limit. - * @param direction The direction to search for according to MSC3715 - * @returns Resolves to the room relations. - */ - public readEventRelations( - eventId: string, - roomId?: string, - relationType?: string, - eventType?: string, - from?: string, - to?: string, - limit?: number, - direction?: 'f' | 'b', - ): Promise<IReadEventRelationsResult> { - return Promise.resolve({ chunk: [] }); - } - - /** - * Asks the user for permission to validate their identity through OpenID Connect. The - * interface for this function is an observable which accepts the state machine of the - * OIDC exchange flow. For example, if the client/user blocks the request then it would - * feed back a `{state: Blocked}` into the observable. Similarly, if the user already - * approved the widget then a `{state: Allowed}` would be fed into the observable alongside - * the token itself. If the client is asking for permission, it should feed in a - * `{state: PendingUserConfirmation}` followed by the relevant Allowed or Blocked state. - * - * The widget API will reject the widget's request with an error if this contract is not - * met properly. By default, the widget driver will block all OIDC requests. - * @param {SimpleObservable<IOpenIDUpdate>} observer The observable to feed updates into. - */ - public askOpenID(observer: SimpleObservable<IOpenIDUpdate>) { - observer.update({state: OpenIDRequestState.Blocked}); - } - - /** - * Navigates the client with a matrix.to URI. In future this function will also be provided - * with the Matrix URIs once matrix.to is replaced. The given URI will have already been - * lightly checked to ensure it looks like a valid URI, though the implementation is recommended - * to do further checks on the URI. - * @param {string} uri The URI to navigate to. - * @returns {Promise<void>} Resolves when complete. - * @throws Throws if there's a problem with the navigation, such as invalid format. - */ - public navigate(uri: string): Promise<void> { - throw new Error("Navigation is not implemented"); - } - - /** - * Polls for TURN server data, yielding an initial set of credentials as soon as possible, and - * thereafter yielding new credentials whenever the previous ones expire. The widget API will - * have already verified that the widget has permission to access TURN servers. - * @yields {ITurnServer} The TURN server URIs and credentials currently available to the client. - */ - public getTurnServers(): AsyncGenerator<ITurnServer> { - throw new Error("TURN server support is not implemented"); - } - - /** - * Search for users in the user directory. - * @param searchTerm The term to search for. - * @param limit The maximum number of results to return. If not supplied, the - * @returns Resolves to the search results. - */ - public searchUserDirectory( - searchTerm: string, - limit?: number, - ): Promise<ISearchUserDirectoryResult> { - return Promise.resolve({ limited: false, results: [] }); - } -} |