diff --git a/packages/element-web-module-api/element-web-module-api.api.md b/packages/element-web-module-api/element-web-module-api.api.md index 754a4d2eec..6d6403735e 100644 --- a/packages/element-web-module-api/element-web-module-api.api.md +++ b/packages/element-web-module-api/element-web-module-api.api.md @@ -5,7 +5,6 @@ ```ts import { JSX } from 'react'; -import { MatrixEvent } from 'matrix-js-sdk/lib/matrix'; import { ModuleApi } from '@matrix-org/react-sdk-module-api'; import { Root } from 'react-dom/client'; import { RuntimeModule } from '@matrix-org/react-sdk-module-api'; @@ -23,6 +22,7 @@ export interface AliasCustomisations { export interface Api extends LegacyModuleApiExtension, LegacyCustomisationsApiExtension { readonly config: ConfigApi; createRoot(element: Element): Root; + // @alpha readonly customComponents: CustomComponentsApi; readonly i18n: I18nApi; readonly rootNode: HTMLElement; @@ -60,10 +60,8 @@ export interface ConfigApi { get(key?: K): Config | Config[K]; } -// @public +// @alpha export interface CustomComponentsApi { - // Warning: (ae-incompatible-release-tags) The symbol "registerMessageRenderer" is marked as @public, but its signature references "CustomMessageRenderFunction" which is marked as @alpha - // Warning: (ae-incompatible-release-tags) The symbol "registerMessageRenderer" is marked as @public, but its signature references "CustomMessageRenderHints" which is marked as @alpha registerMessageRenderer(eventTypeOrFilter: string | ((mxEvent: MatrixEvent) => boolean), renderer: CustomMessageRenderFunction, hints?: CustomMessageRenderHints): void; } @@ -134,6 +132,18 @@ export interface LifecycleCustomisations { onLoggedOutAndStorageCleared?(): void; } +// @alpha +export interface MatrixEvent { + content: Record; + eventId: string; + originServerTs: number; + roomId: string; + sender: string; + stateKey?: string; + type: string; + unsigned: Record; +} + // @alpha @deprecated (undocumented) export interface Media { // (undocumented) diff --git a/packages/element-web-module-api/package.json b/packages/element-web-module-api/package.json index ed0b67418a..b9432f9e01 100644 --- a/packages/element-web-module-api/package.json +++ b/packages/element-web-module-api/package.json @@ -38,7 +38,6 @@ "@types/react-dom": "^19.0.4", "@types/semver": "^7.5.8", "@vitest/coverage-v8": "^3.0.4", - "matrix-js-sdk": "^37.5.0", "matrix-web-i18n": "^3.3.0", "semver": "^7.6.3", "typescript": "^5.7.3", @@ -51,7 +50,6 @@ "@matrix-org/react-sdk-module-api": "*", "@types/react": "*", "@types/react-dom": "*", - "matrix-js-sdk": "*", "matrix-web-i18n": "*", "react": "^19" }, diff --git a/packages/element-web-module-api/src/api/custom-components.ts b/packages/element-web-module-api/src/api/custom-components.ts index 794786538a..becc0f1992 100644 --- a/packages/element-web-module-api/src/api/custom-components.ts +++ b/packages/element-web-module-api/src/api/custom-components.ts @@ -6,7 +6,7 @@ Please see LICENSE files in the repository root for full details. */ import type { JSX } from "react"; -import type { MatrixEvent } from "matrix-js-sdk/lib/matrix"; +import type { MatrixEvent } from "../models/event"; /** * Properties for all message components. @@ -48,7 +48,7 @@ export type CustomMessageRenderHints = { /** * Function used to render a message component. - * @alpha Unlikely to change + * @alpha Subject to change. */ export type CustomMessageRenderFunction = ( /** @@ -63,7 +63,7 @@ export type CustomMessageRenderFunction = ( /** * API for inserting custom components into Element. - * @public + * @alpha Subject to change. */ export interface CustomComponentsApi { /** diff --git a/packages/element-web-module-api/src/api/index.ts b/packages/element-web-module-api/src/api/index.ts index 3e9d4d072f..399d807a14 100644 --- a/packages/element-web-module-api/src/api/index.ts +++ b/packages/element-web-module-api/src/api/index.ts @@ -90,7 +90,7 @@ export interface Api extends LegacyModuleApiExtension, LegacyCustomisationsApiEx /** * The custom message component API. - * @public + * @alpha */ readonly customComponents: CustomComponentsApi; /** diff --git a/packages/element-web-module-api/src/index.ts b/packages/element-web-module-api/src/index.ts index 4fbf15e9ba..0a7337ec21 100644 --- a/packages/element-web-module-api/src/index.ts +++ b/packages/element-web-module-api/src/index.ts @@ -9,6 +9,7 @@ export { ModuleLoader, ModuleIncompatibleError } from "./loader"; export type { Api, Module, ModuleFactory } from "./api"; export type { Config, ConfigApi } from "./api/config"; export type { I18nApi, Variables, Translations } from "./api/i18n"; +export type * from "./models/event"; export type * from "./api/custom-components"; export type * from "./api/legacy-modules"; export type * from "./api/legacy-customisations"; diff --git a/packages/element-web-module-api/src/models/event.ts b/packages/element-web-module-api/src/models/event.ts new file mode 100644 index 0000000000..b75606090e --- /dev/null +++ b/packages/element-web-module-api/src/models/event.ts @@ -0,0 +1,48 @@ +/* +Copyright 2025 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +/** + * Representation of a Matrix event, as specified by the client server specification. + * @alpha Subject to change. + * @see https://spec.matrix.org/v1.14/client-server-api/#room-event-format + */ +export interface MatrixEvent { + /** + * The event ID of this event. + */ + eventId: string; + /** + * The room ID which contains this event. + */ + roomId: string; + /** + * The Matrix ID of the user who sent this event. + */ + sender: string; + /** + * The content of the event. + * If the event was encrypted, this is the decrypted content. + */ + content: Record; + /** + * Contains optional extra information about the event. + */ + unsigned: Record; + /** + * The type of the event. + */ + type: string; + /** + * The state key of the event. + * If this key is set, including `""` then the event is a state event. + */ + stateKey?: string; + /** + * Timestamp (in milliseconds since the unix epoch) on originating homeserver when this event was sent. + */ + originServerTs: number; +}