@jeongsu816/matrix-bot-sdk 0.0.0-stage → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +50 -2
- package/lib/AdminApis.d.ts +52 -0
- package/lib/AdminApis.js +29 -0
- package/lib/AdminApis.js.map +1 -0
- package/lib/DMs.d.ts +48 -0
- package/lib/DMs.js +160 -0
- package/lib/DMs.js.map +1 -0
- package/lib/IFilter.d.ts +7 -0
- package/lib/IFilter.js +3 -0
- package/lib/IFilter.js.map +1 -0
- package/lib/MatrixAuth.d.ts +45 -0
- package/lib/MatrixAuth.js +125 -0
- package/lib/MatrixAuth.js.map +1 -0
- package/lib/MatrixClient.d.ts +834 -0
- package/lib/MatrixClient.js +2268 -0
- package/lib/MatrixClient.js.map +1 -0
- package/lib/PantalaimonClient.d.ts +42 -0
- package/lib/PantalaimonClient.js +44 -0
- package/lib/PantalaimonClient.js.map +1 -0
- package/lib/SynapseAdminApis.d.ts +350 -0
- package/lib/SynapseAdminApis.js +244 -0
- package/lib/SynapseAdminApis.js.map +1 -0
- package/lib/SynchronousMatrixClient.d.ts +82 -0
- package/lib/SynchronousMatrixClient.js +130 -0
- package/lib/SynchronousMatrixClient.js.map +1 -0
- package/lib/UnstableApis.d.ts +43 -0
- package/lib/UnstableApis.js +74 -0
- package/lib/UnstableApis.js.map +1 -0
- package/lib/appservice/Appservice.d.ts +328 -0
- package/lib/appservice/Appservice.js +803 -0
- package/lib/appservice/Appservice.js.map +1 -0
- package/lib/appservice/Intent.d.ts +113 -0
- package/lib/appservice/Intent.js +363 -0
- package/lib/appservice/Intent.js.map +1 -0
- package/lib/appservice/MatrixBridge.d.ts +85 -0
- package/lib/appservice/MatrixBridge.js +111 -0
- package/lib/appservice/MatrixBridge.js.map +1 -0
- package/lib/appservice/UnstableAppserviceApis.d.ts +41 -0
- package/lib/appservice/UnstableAppserviceApis.js +62 -0
- package/lib/appservice/UnstableAppserviceApis.js.map +1 -0
- package/lib/appservice/http_responses.d.ts +77 -0
- package/lib/appservice/http_responses.js +3 -0
- package/lib/appservice/http_responses.js.map +1 -0
- package/lib/b64.d.ts +42 -0
- package/lib/b64.js +68 -0
- package/lib/b64.js.map +1 -0
- package/lib/e2ee/CrossSigningBootstrap.d.ts +73 -0
- package/lib/e2ee/CrossSigningBootstrap.js +86 -0
- package/lib/e2ee/CrossSigningBootstrap.js.map +1 -0
- package/lib/e2ee/CryptoClient.d.ts +163 -0
- package/lib/e2ee/CryptoClient.js +382 -0
- package/lib/e2ee/CryptoClient.js.map +1 -0
- package/lib/e2ee/ICryptoRoomInformation.d.ts +8 -0
- package/lib/e2ee/ICryptoRoomInformation.js +3 -0
- package/lib/e2ee/ICryptoRoomInformation.js.map +1 -0
- package/lib/e2ee/RoomTracker.d.ts +41 -0
- package/lib/e2ee/RoomTracker.js +96 -0
- package/lib/e2ee/RoomTracker.js.map +1 -0
- package/lib/e2ee/RustEngine.d.ts +149 -0
- package/lib/e2ee/RustEngine.js +467 -0
- package/lib/e2ee/RustEngine.js.map +1 -0
- package/lib/e2ee/decorators.d.ts +10 -0
- package/lib/e2ee/decorators.js +37 -0
- package/lib/e2ee/decorators.js.map +1 -0
- package/lib/helpers/MatrixEntity.d.ts +37 -0
- package/lib/helpers/MatrixEntity.js +67 -0
- package/lib/helpers/MatrixEntity.js.map +1 -0
- package/lib/helpers/MatrixGlob.d.ts +22 -0
- package/lib/helpers/MatrixGlob.js +35 -0
- package/lib/helpers/MatrixGlob.js.map +1 -0
- package/lib/helpers/MentionPill.d.ts +40 -0
- package/lib/helpers/MentionPill.js +91 -0
- package/lib/helpers/MentionPill.js.map +1 -0
- package/lib/helpers/Permalinks.d.ts +58 -0
- package/lib/helpers/Permalinks.js +73 -0
- package/lib/helpers/Permalinks.js.map +1 -0
- package/lib/helpers/ProfileCache.d.ts +48 -0
- package/lib/helpers/ProfileCache.js +114 -0
- package/lib/helpers/ProfileCache.js.map +1 -0
- package/lib/helpers/RichReply.d.ts +17 -0
- package/lib/helpers/RichReply.js +47 -0
- package/lib/helpers/RichReply.js.map +1 -0
- package/lib/helpers/UnpaddedBase64.d.ts +31 -0
- package/lib/helpers/UnpaddedBase64.js +45 -0
- package/lib/helpers/UnpaddedBase64.js.map +1 -0
- package/lib/http.d.ts +17 -0
- package/lib/http.js +147 -0
- package/lib/http.js.map +1 -0
- package/lib/identity/IdentityClient.d.ts +93 -0
- package/lib/identity/IdentityClient.js +248 -0
- package/lib/identity/IdentityClient.js.map +1 -0
- package/lib/index.d.ts +91 -0
- package/lib/index.js +125 -0
- package/lib/index.js.map +1 -0
- package/lib/logging/ConsoleLogger.d.ts +12 -0
- package/lib/logging/ConsoleLogger.js +28 -0
- package/lib/logging/ConsoleLogger.js.map +1 -0
- package/lib/logging/ILogger.d.ts +36 -0
- package/lib/logging/ILogger.js +3 -0
- package/lib/logging/ILogger.js.map +1 -0
- package/lib/logging/LogService.d.ts +100 -0
- package/lib/logging/LogService.js +169 -0
- package/lib/logging/LogService.js.map +1 -0
- package/lib/logging/RichConsoleLogger.d.ts +20 -0
- package/lib/logging/RichConsoleLogger.js +41 -0
- package/lib/logging/RichConsoleLogger.js.map +1 -0
- package/lib/metrics/IMetricListener.d.ts +52 -0
- package/lib/metrics/IMetricListener.js +3 -0
- package/lib/metrics/IMetricListener.js.map +1 -0
- package/lib/metrics/Metrics.d.ts +66 -0
- package/lib/metrics/Metrics.js +128 -0
- package/lib/metrics/Metrics.js.map +1 -0
- package/lib/metrics/contexts.d.ts +51 -0
- package/lib/metrics/contexts.js +3 -0
- package/lib/metrics/contexts.js.map +1 -0
- package/lib/metrics/decorators.d.ts +15 -0
- package/lib/metrics/decorators.js +92 -0
- package/lib/metrics/decorators.js.map +1 -0
- package/lib/metrics/names.d.ts +45 -0
- package/lib/metrics/names.js +49 -0
- package/lib/metrics/names.js.map +1 -0
- package/lib/mixins/AutojoinRoomsMixin.d.ts +10 -0
- package/lib/mixins/AutojoinRoomsMixin.js +25 -0
- package/lib/mixins/AutojoinRoomsMixin.js.map +1 -0
- package/lib/mixins/AutojoinUpgradedRoomsMixin.d.ts +10 -0
- package/lib/mixins/AutojoinUpgradedRoomsMixin.js +40 -0
- package/lib/mixins/AutojoinUpgradedRoomsMixin.js.map +1 -0
- package/lib/models/Account.d.ts +8 -0
- package/lib/models/Account.js +3 -0
- package/lib/models/Account.js.map +1 -0
- package/lib/models/CreateRoom.d.ts +125 -0
- package/lib/models/CreateRoom.js +3 -0
- package/lib/models/CreateRoom.js.map +1 -0
- package/lib/models/Crypto.d.ts +167 -0
- package/lib/models/Crypto.js +31 -0
- package/lib/models/Crypto.js.map +1 -0
- package/lib/models/EventContext.d.ts +19 -0
- package/lib/models/EventContext.js +3 -0
- package/lib/models/EventContext.js.map +1 -0
- package/lib/models/IdentityServerModels.d.ts +20 -0
- package/lib/models/IdentityServerModels.js +3 -0
- package/lib/models/IdentityServerModels.js.map +1 -0
- package/lib/models/MSC2176.d.ts +42 -0
- package/lib/models/MSC2176.js +3 -0
- package/lib/models/MSC2176.js.map +1 -0
- package/lib/models/MatrixError.d.ts +38 -0
- package/lib/models/MatrixError.js +30 -0
- package/lib/models/MatrixError.js.map +1 -0
- package/lib/models/MatrixProfile.d.ts +43 -0
- package/lib/models/MatrixProfile.js +43 -0
- package/lib/models/MatrixProfile.js.map +1 -0
- package/lib/models/OpenIDConnect.d.ts +10 -0
- package/lib/models/OpenIDConnect.js +3 -0
- package/lib/models/OpenIDConnect.js.map +1 -0
- package/lib/models/Policies.d.ts +25 -0
- package/lib/models/Policies.js +3 -0
- package/lib/models/Policies.js.map +1 -0
- package/lib/models/PowerLevelAction.d.ts +27 -0
- package/lib/models/PowerLevelAction.js +32 -0
- package/lib/models/PowerLevelAction.js.map +1 -0
- package/lib/models/PowerLevelBounds.d.ts +15 -0
- package/lib/models/PowerLevelBounds.js +3 -0
- package/lib/models/PowerLevelBounds.js.map +1 -0
- package/lib/models/Presence.d.ts +25 -0
- package/lib/models/Presence.js +38 -0
- package/lib/models/Presence.js.map +1 -0
- package/lib/models/ServerVersions.d.ts +8 -0
- package/lib/models/ServerVersions.js +3 -0
- package/lib/models/ServerVersions.js.map +1 -0
- package/lib/models/Spaces.d.ts +116 -0
- package/lib/models/Spaces.js +91 -0
- package/lib/models/Spaces.js.map +1 -0
- package/lib/models/Threepid.d.ts +8 -0
- package/lib/models/Threepid.js +3 -0
- package/lib/models/Threepid.js.map +1 -0
- package/lib/models/events/AliasesEvent.d.ts +27 -0
- package/lib/models/events/AliasesEvent.js +27 -0
- package/lib/models/events/AliasesEvent.js.map +1 -0
- package/lib/models/events/CanonicalAliasEvent.d.ts +23 -0
- package/lib/models/events/CanonicalAliasEvent.js +21 -0
- package/lib/models/events/CanonicalAliasEvent.js.map +1 -0
- package/lib/models/events/CreateEvent.d.ts +63 -0
- package/lib/models/events/CreateEvent.js +33 -0
- package/lib/models/events/CreateEvent.js.map +1 -0
- package/lib/models/events/EncryptedRoomEvent.d.ts +42 -0
- package/lib/models/events/EncryptedRoomEvent.js +28 -0
- package/lib/models/events/EncryptedRoomEvent.js.map +1 -0
- package/lib/models/events/EncryptionEvent.d.ts +47 -0
- package/lib/models/events/EncryptionEvent.js +42 -0
- package/lib/models/events/EncryptionEvent.js.map +1 -0
- package/lib/models/events/Event.d.ts +26 -0
- package/lib/models/events/Event.js +40 -0
- package/lib/models/events/Event.js.map +1 -0
- package/lib/models/events/EventKind.d.ts +15 -0
- package/lib/models/events/EventKind.js +20 -0
- package/lib/models/events/EventKind.js.map +1 -0
- package/lib/models/events/InvalidEventError.d.ts +14 -0
- package/lib/models/events/InvalidEventError.js +24 -0
- package/lib/models/events/InvalidEventError.js.map +1 -0
- package/lib/models/events/JoinRulesEvent.d.ts +29 -0
- package/lib/models/events/JoinRulesEvent.js +21 -0
- package/lib/models/events/JoinRulesEvent.js.map +1 -0
- package/lib/models/events/MembershipEvent.d.ts +54 -0
- package/lib/models/events/MembershipEvent.js +49 -0
- package/lib/models/events/MembershipEvent.js.map +1 -0
- package/lib/models/events/MessageEvent.d.ts +233 -0
- package/lib/models/events/MessageEvent.js +49 -0
- package/lib/models/events/MessageEvent.js.map +1 -0
- package/lib/models/events/PinnedEventsEvent.d.ts +23 -0
- package/lib/models/events/PinnedEventsEvent.js +21 -0
- package/lib/models/events/PinnedEventsEvent.js.map +1 -0
- package/lib/models/events/PowerLevelsEvent.d.ts +96 -0
- package/lib/models/events/PowerLevelsEvent.js +70 -0
- package/lib/models/events/PowerLevelsEvent.js.map +1 -0
- package/lib/models/events/PresenceEvent.d.ts +56 -0
- package/lib/models/events/PresenceEvent.js +21 -0
- package/lib/models/events/PresenceEvent.js.map +1 -0
- package/lib/models/events/RedactionEvent.d.ts +28 -0
- package/lib/models/events/RedactionEvent.js +36 -0
- package/lib/models/events/RedactionEvent.js.map +1 -0
- package/lib/models/events/RoomAvatarEvent.d.ts +28 -0
- package/lib/models/events/RoomAvatarEvent.js +21 -0
- package/lib/models/events/RoomAvatarEvent.js.map +1 -0
- package/lib/models/events/RoomEvent.d.ts +58 -0
- package/lib/models/events/RoomEvent.js +57 -0
- package/lib/models/events/RoomEvent.js.map +1 -0
- package/lib/models/events/RoomNameEvent.d.ts +20 -0
- package/lib/models/events/RoomNameEvent.js +21 -0
- package/lib/models/events/RoomNameEvent.js.map +1 -0
- package/lib/models/events/RoomTopicEvent.d.ts +20 -0
- package/lib/models/events/RoomTopicEvent.js +21 -0
- package/lib/models/events/RoomTopicEvent.js.map +1 -0
- package/lib/models/events/SpaceChildEvent.d.ts +53 -0
- package/lib/models/events/SpaceChildEvent.js +49 -0
- package/lib/models/events/SpaceChildEvent.js.map +1 -0
- package/lib/models/events/converter.d.ts +8 -0
- package/lib/models/events/converter.js +50 -0
- package/lib/models/events/converter.js.map +1 -0
- package/lib/models/unstable/MediaInfo.d.ts +16 -0
- package/lib/models/unstable/MediaInfo.js +3 -0
- package/lib/models/unstable/MediaInfo.js.map +1 -0
- package/lib/preprocessors/IPreprocessor.d.ts +22 -0
- package/lib/preprocessors/IPreprocessor.js +3 -0
- package/lib/preprocessors/IPreprocessor.js.map +1 -0
- package/lib/preprocessors/RichRepliesPreprocessor.d.ts +67 -0
- package/lib/preprocessors/RichRepliesPreprocessor.js +112 -0
- package/lib/preprocessors/RichRepliesPreprocessor.js.map +1 -0
- package/lib/request.d.ts +13 -0
- package/lib/request.js +23 -0
- package/lib/request.js.map +1 -0
- package/lib/simple-validation.d.ts +10 -0
- package/lib/simple-validation.js +30 -0
- package/lib/simple-validation.js.map +1 -0
- package/lib/storage/IAppserviceStorageProvider.d.ts +48 -0
- package/lib/storage/IAppserviceStorageProvider.js +3 -0
- package/lib/storage/IAppserviceStorageProvider.js.map +1 -0
- package/lib/storage/ICryptoStorageProvider.d.ts +32 -0
- package/lib/storage/ICryptoStorageProvider.js +3 -0
- package/lib/storage/ICryptoStorageProvider.js.map +1 -0
- package/lib/storage/IStorageProvider.d.ts +47 -0
- package/lib/storage/IStorageProvider.js +3 -0
- package/lib/storage/IStorageProvider.js.map +1 -0
- package/lib/storage/MemoryStorageProvider.d.ts +26 -0
- package/lib/storage/MemoryStorageProvider.js +55 -0
- package/lib/storage/MemoryStorageProvider.js.map +1 -0
- package/lib/storage/RustSdkCryptoStorageProvider.d.ts +38 -0
- package/lib/storage/RustSdkCryptoStorageProvider.js +69 -0
- package/lib/storage/RustSdkCryptoStorageProvider.js.map +1 -0
- package/lib/storage/SimpleFsStorageProvider.d.ts +31 -0
- package/lib/storage/SimpleFsStorageProvider.js +122 -0
- package/lib/storage/SimpleFsStorageProvider.js.map +1 -0
- package/lib/storage/SimplePostgresStorageProvider.d.ts +32 -0
- package/lib/storage/SimplePostgresStorageProvider.js +148 -0
- package/lib/storage/SimplePostgresStorageProvider.js.map +1 -0
- package/lib/strategies/AppserviceJoinRoomStrategy.d.ts +14 -0
- package/lib/strategies/AppserviceJoinRoomStrategy.js +54 -0
- package/lib/strategies/AppserviceJoinRoomStrategy.js.map +1 -0
- package/lib/strategies/JoinRoomStrategy.d.ts +11 -0
- package/lib/strategies/JoinRoomStrategy.js +44 -0
- package/lib/strategies/JoinRoomStrategy.js.map +1 -0
- package/package.json +136 -4
- package/src/AdminApis.ts +60 -0
- package/src/DMs.ts +164 -0
- package/src/IFilter.ts +7 -0
- package/src/MatrixAuth.ts +129 -0
- package/src/MatrixClient.ts +2046 -0
- package/src/PantalaimonClient.ts +62 -0
- package/src/SynapseAdminApis.ts +482 -0
- package/src/SynchronousMatrixClient.ts +129 -0
- package/src/UnstableApis.ts +75 -0
- package/src/appservice/Appservice.ts +1089 -0
- package/src/appservice/Intent.ts +342 -0
- package/src/appservice/MatrixBridge.ts +139 -0
- package/src/appservice/UnstableAppserviceApis.ts +63 -0
- package/src/appservice/http_responses.ts +77 -0
- package/src/b64.ts +63 -0
- package/src/e2ee/CrossSigningBootstrap.ts +141 -0
- package/src/e2ee/CryptoClient.ts +378 -0
- package/src/e2ee/ICryptoRoomInformation.ts +9 -0
- package/src/e2ee/RoomTracker.ts +99 -0
- package/src/e2ee/RustEngine.ts +580 -0
- package/src/e2ee/decorators.ts +38 -0
- package/src/helpers/MatrixEntity.ts +65 -0
- package/src/helpers/MatrixGlob.ts +38 -0
- package/src/helpers/MentionPill.ts +95 -0
- package/src/helpers/Permalinks.ts +101 -0
- package/src/helpers/ProfileCache.ts +119 -0
- package/src/helpers/RichReply.ts +46 -0
- package/src/helpers/UnpaddedBase64.ts +44 -0
- package/src/http.ts +166 -0
- package/src/identity/IdentityClient.ts +225 -0
- package/src/index.ts +125 -0
- package/src/logging/ConsoleLogger.ts +31 -0
- package/src/logging/ILogger.ts +40 -0
- package/src/logging/LogService.ts +167 -0
- package/src/logging/RichConsoleLogger.ts +70 -0
- package/src/metrics/IMetricListener.ts +57 -0
- package/src/metrics/Metrics.ts +134 -0
- package/src/metrics/contexts.ts +56 -0
- package/src/metrics/decorators.ts +94 -0
- package/src/metrics/names.ts +53 -0
- package/src/mixins/AutojoinRoomsMixin.ts +24 -0
- package/src/mixins/AutojoinUpgradedRoomsMixin.ts +37 -0
- package/src/models/Account.ts +8 -0
- package/src/models/CreateRoom.ts +144 -0
- package/src/models/Crypto.ts +188 -0
- package/src/models/EventContext.ts +23 -0
- package/src/models/IdentityServerModels.ts +18 -0
- package/src/models/MSC2176.ts +47 -0
- package/src/models/MatrixError.ts +39 -0
- package/src/models/MatrixProfile.ts +55 -0
- package/src/models/OpenIDConnect.ts +10 -0
- package/src/models/Policies.ts +28 -0
- package/src/models/PowerLevelAction.ts +31 -0
- package/src/models/PowerLevelBounds.ts +16 -0
- package/src/models/Presence.ts +38 -0
- package/src/models/ServerVersions.ts +8 -0
- package/src/models/Spaces.ts +167 -0
- package/src/models/Threepid.ts +8 -0
- package/src/models/events/AliasesEvent.ts +37 -0
- package/src/models/events/CanonicalAliasEvent.ts +30 -0
- package/src/models/events/CreateEvent.ts +82 -0
- package/src/models/events/EncryptedRoomEvent.ts +58 -0
- package/src/models/events/EncryptionEvent.ts +63 -0
- package/src/models/events/Event.ts +38 -0
- package/src/models/events/EventKind.ts +16 -0
- package/src/models/events/InvalidEventError.ts +19 -0
- package/src/models/events/JoinRulesEvent.ts +37 -0
- package/src/models/events/MembershipEvent.ts +77 -0
- package/src/models/events/MessageEvent.ts +292 -0
- package/src/models/events/PinnedEventsEvent.ts +30 -0
- package/src/models/events/PowerLevelsEvent.ts +135 -0
- package/src/models/events/PresenceEvent.ts +69 -0
- package/src/models/events/RedactionEvent.ts +44 -0
- package/src/models/events/RoomAvatarEvent.ts +36 -0
- package/src/models/events/RoomEvent.ts +83 -0
- package/src/models/events/RoomNameEvent.ts +27 -0
- package/src/models/events/RoomTopicEvent.ts +27 -0
- package/src/models/events/SpaceChildEvent.ts +74 -0
- package/src/models/events/_MissingEvents.md +35 -0
- package/src/models/events/converter.ts +47 -0
- package/src/models/unstable/MediaInfo.ts +16 -0
- package/src/preprocessors/IPreprocessor.ts +24 -0
- package/src/preprocessors/RichRepliesPreprocessor.ts +159 -0
- package/src/request.ts +21 -0
- package/src/simple-validation.ts +30 -0
- package/src/storage/IAppserviceStorageProvider.ts +54 -0
- package/src/storage/ICryptoStorageProvider.ts +36 -0
- package/src/storage/IStorageProvider.ts +53 -0
- package/src/storage/MemoryStorageProvider.ts +65 -0
- package/src/storage/RustSdkCryptoStorageProvider.ts +81 -0
- package/src/storage/SimpleFsStorageProvider.ts +142 -0
- package/src/storage/SimplePostgresStorageProvider.ts +168 -0
- package/src/strategies/AppserviceJoinRoomStrategy.ts +47 -0
- package/src/strategies/JoinRoomStrategy.ts +45 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One time key algorithms.
|
|
3
|
+
* @category Models
|
|
4
|
+
*/
|
|
5
|
+
export enum OTKAlgorithm {
|
|
6
|
+
Signed = "signed_curve25519",
|
|
7
|
+
Unsigned = "curve25519",
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Label for a one time key.
|
|
12
|
+
* @category Models
|
|
13
|
+
*/
|
|
14
|
+
export type OTKLabel<Algorithm extends OTKAlgorithm, ID extends string> = `${Algorithm}:${ID}`;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Signatures object.
|
|
18
|
+
* @category Models
|
|
19
|
+
*/
|
|
20
|
+
export interface Signatures {
|
|
21
|
+
[entity: string]: {
|
|
22
|
+
[keyLabel: string]: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A signed_curve25519 one time key.
|
|
28
|
+
* @category Models
|
|
29
|
+
*/
|
|
30
|
+
export interface SignedCurve25519OTK {
|
|
31
|
+
key: string;
|
|
32
|
+
signatures: Signatures;
|
|
33
|
+
fallback?: boolean;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* A fallback key.
|
|
38
|
+
* @category Models
|
|
39
|
+
*/
|
|
40
|
+
export interface FallbackKey {
|
|
41
|
+
keyId: string;
|
|
42
|
+
key: SignedCurve25519OTK & { fallback: true };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* One Time Keys structure model.
|
|
47
|
+
* @category Models
|
|
48
|
+
*/
|
|
49
|
+
export type OTKs =
|
|
50
|
+
Record<OTKLabel<OTKAlgorithm.Signed, string>, SignedCurve25519OTK>
|
|
51
|
+
& Record<OTKLabel<OTKAlgorithm.Unsigned, string>, string>;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The counts of each one time key by algorithm.
|
|
55
|
+
* @category Models
|
|
56
|
+
*/
|
|
57
|
+
export type OTKCounts = {
|
|
58
|
+
/**
|
|
59
|
+
* The number of keys which remain unused for the algorithm.
|
|
60
|
+
*/
|
|
61
|
+
[alg in OTKAlgorithm]?: number;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The available encryption algorithms.
|
|
66
|
+
* @category Models
|
|
67
|
+
*/
|
|
68
|
+
export enum EncryptionAlgorithm {
|
|
69
|
+
OlmV1Curve25519AesSha2 = "m.olm.v1.curve25519-aes-sha2",
|
|
70
|
+
MegolmV1AesSha2 = "m.megolm.v1.aes-sha2",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The key algorithms for device keys.
|
|
75
|
+
* @category Models
|
|
76
|
+
*/
|
|
77
|
+
export enum DeviceKeyAlgorithm {
|
|
78
|
+
Ed25519 = "ed25519",
|
|
79
|
+
Curve25519 = "curve25519",
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Label for a device key.
|
|
84
|
+
* @category Models
|
|
85
|
+
*/
|
|
86
|
+
export type DeviceKeyLabel<Algorithm extends DeviceKeyAlgorithm, ID extends string> = `${Algorithm}:${ID}`;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Represents a user's device.
|
|
90
|
+
* @category Models
|
|
91
|
+
*/
|
|
92
|
+
export interface UserDevice {
|
|
93
|
+
user_id: string;
|
|
94
|
+
device_id: string;
|
|
95
|
+
algorithms: (EncryptionAlgorithm | string)[];
|
|
96
|
+
keys: Record<DeviceKeyLabel<DeviceKeyAlgorithm, string>, string>;
|
|
97
|
+
signatures: Signatures;
|
|
98
|
+
unsigned?: {
|
|
99
|
+
[k: string]: any;
|
|
100
|
+
device_display_name?: string;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Represents a user's own device.
|
|
106
|
+
* @category Models
|
|
107
|
+
*/
|
|
108
|
+
export interface OwnUserDevice {
|
|
109
|
+
device_id: string;
|
|
110
|
+
display_name?: string;
|
|
111
|
+
last_seen_ip?: string;
|
|
112
|
+
last_seen_ts?: number;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Device list response for a multi-user query.
|
|
117
|
+
* @category Models
|
|
118
|
+
*/
|
|
119
|
+
export interface MultiUserDeviceListResponse {
|
|
120
|
+
/**
|
|
121
|
+
* Federation failures, keyed by server name. The mapped object should be a standard
|
|
122
|
+
* error object.
|
|
123
|
+
*/
|
|
124
|
+
failures: {
|
|
125
|
+
[serverName: string]: any;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* A map of user ID to device ID to device.
|
|
130
|
+
*/
|
|
131
|
+
device_keys: Record<string, Record<string, UserDevice>>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* One Time Key claim response.
|
|
136
|
+
* @category Models
|
|
137
|
+
*/
|
|
138
|
+
export interface OTKClaimResponse {
|
|
139
|
+
/**
|
|
140
|
+
* Federation failures, keyed by server name. The mapped object should be a standard
|
|
141
|
+
* error object.
|
|
142
|
+
*/
|
|
143
|
+
failures: {
|
|
144
|
+
[serverName: string]: any;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* The claimed One Time Keys, as a map from user ID to device ID to key ID to OTK.
|
|
149
|
+
*/
|
|
150
|
+
one_time_keys: Record<string, Record<string, OTKs>>;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* An encrypted Olm payload.
|
|
155
|
+
* @category Models
|
|
156
|
+
*/
|
|
157
|
+
export interface IOlmEncrypted {
|
|
158
|
+
algorithm: EncryptionAlgorithm.OlmV1Curve25519AesSha2;
|
|
159
|
+
sender_key: string;
|
|
160
|
+
ciphertext: {
|
|
161
|
+
[deviceCurve25519Key: string]: {
|
|
162
|
+
type: number;
|
|
163
|
+
body: string; // base64
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* A to-device message.
|
|
170
|
+
* @category Models
|
|
171
|
+
*/
|
|
172
|
+
export interface IToDeviceMessage<T = any> {
|
|
173
|
+
type: string;
|
|
174
|
+
sender: string;
|
|
175
|
+
content: T;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Encrypted event content for a Megolm-encrypted m.room.encrypted event
|
|
180
|
+
* @category Models
|
|
181
|
+
*/
|
|
182
|
+
export interface IMegolmEncrypted {
|
|
183
|
+
algorithm: EncryptionAlgorithm.MegolmV1AesSha2;
|
|
184
|
+
sender_key: string;
|
|
185
|
+
ciphertext: string;
|
|
186
|
+
session_id: string;
|
|
187
|
+
device_id: string; // sender
|
|
188
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { RoomEvent, RoomEventContent, StateEvent } from "./events/RoomEvent";
|
|
2
|
+
|
|
3
|
+
export interface EventContext {
|
|
4
|
+
/**
|
|
5
|
+
* The event that was used to build this context.
|
|
6
|
+
*/
|
|
7
|
+
event: RoomEvent<RoomEventContent>;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The events that happened before the contextual event.
|
|
11
|
+
*/
|
|
12
|
+
before: RoomEvent<RoomEventContent>[];
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The events that happened after the contextual event.
|
|
16
|
+
*/
|
|
17
|
+
after: RoomEvent<RoomEventContent>[];
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The state of the room at the point of the last event returned.
|
|
21
|
+
*/
|
|
22
|
+
state: StateEvent<RoomEventContent>[];
|
|
23
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Information about a user on an identity server.
|
|
3
|
+
* @category Models
|
|
4
|
+
*/
|
|
5
|
+
export interface IdentityServerAccount {
|
|
6
|
+
user_id: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A stored invite on an identity server.
|
|
11
|
+
* @category Models
|
|
12
|
+
*/
|
|
13
|
+
export interface IdentityServerInvite {
|
|
14
|
+
display_name: string;
|
|
15
|
+
public_keys: { public_key: string, key_validity_url: string }[]; // server key then ephemeral key, length of 2
|
|
16
|
+
public_key: string;
|
|
17
|
+
token: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response object for a batch send operation.
|
|
3
|
+
* @category Models
|
|
4
|
+
*/
|
|
5
|
+
export interface MSC2716BatchSendResponse {
|
|
6
|
+
/**
|
|
7
|
+
* List of historical state event IDs that were inserted
|
|
8
|
+
*/
|
|
9
|
+
state_events?: string[];
|
|
10
|
+
/**
|
|
11
|
+
* List of historical event IDs that were inserted
|
|
12
|
+
*/
|
|
13
|
+
events?: string[];
|
|
14
|
+
/**
|
|
15
|
+
* Chunk ID to be used in the next `sendHistoricalEventBatch` call.
|
|
16
|
+
*/
|
|
17
|
+
next_chunk_id: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// TODO: Verify docs and move to events subdirectory if appropriate
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Partial event content for an inserted MSC2716 event.
|
|
24
|
+
* @category Matrix event contents
|
|
25
|
+
*/
|
|
26
|
+
export interface MSC2716InsertionEventContent {
|
|
27
|
+
"org.matrix.msc2716.next_chunk_id": string;
|
|
28
|
+
"org.matrix.msc2716.historical": true;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Partial event content for a chunked MSC2716 event.
|
|
33
|
+
* @category Matrix event contents
|
|
34
|
+
*/
|
|
35
|
+
export interface MSC2716ChunkEventContent {
|
|
36
|
+
"org.matrix.msc2716.chunk_id": string;
|
|
37
|
+
"org.matrix.msc2716.historical": true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Partial event content for a marked MSC2716 event.
|
|
42
|
+
* @category Matrix event contents
|
|
43
|
+
*/
|
|
44
|
+
export interface MSC2716MarkerEventContent {
|
|
45
|
+
"org.matrix.msc2716.insertion_id": string;
|
|
46
|
+
"org.matrix.msc2716.historical": true;
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents an HTTP error from the Matrix server.
|
|
3
|
+
* @category Error handling
|
|
4
|
+
*/
|
|
5
|
+
export class MatrixError extends Error {
|
|
6
|
+
/**
|
|
7
|
+
* The Matrix error code
|
|
8
|
+
*/
|
|
9
|
+
public readonly errcode: string;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Optional human-readable error message.
|
|
13
|
+
*/
|
|
14
|
+
public readonly error: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* If rate limited, the time in milliseconds to wait before retrying the request
|
|
18
|
+
*/
|
|
19
|
+
public readonly retryAfterMs?: number;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Creates a new Matrix Error
|
|
23
|
+
* @param body The error body.
|
|
24
|
+
* @param statusCode The HTTP status code.
|
|
25
|
+
*/
|
|
26
|
+
constructor(public readonly body: { errcode: string, error: string, retry_after_ms?: number }, public readonly statusCode: number) {
|
|
27
|
+
super();
|
|
28
|
+
this.errcode = body.errcode;
|
|
29
|
+
this.error = body.error;
|
|
30
|
+
this.retryAfterMs = body.retry_after_ms;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Developer-friendly error message.
|
|
35
|
+
*/
|
|
36
|
+
public get message() {
|
|
37
|
+
return `${this.errcode}: ${this.error}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { MentionPill, UserID } from "..";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Profile information commonly associated with Matrix profiles
|
|
5
|
+
* @category Models
|
|
6
|
+
*/
|
|
7
|
+
export interface MatrixProfileInfo {
|
|
8
|
+
/**
|
|
9
|
+
* The display name of the user, if any.
|
|
10
|
+
*/
|
|
11
|
+
displayname?: string;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A URL to the user's avatar, if any.
|
|
15
|
+
*/
|
|
16
|
+
avatar_url?: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Represents a user's profile, possibly in a room.
|
|
21
|
+
* @category Models
|
|
22
|
+
*/
|
|
23
|
+
export class MatrixProfile {
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new profile representation for a user.
|
|
26
|
+
* @param {string} userId The user ID the profile is for.
|
|
27
|
+
* @param {MatrixProfile} profile The profile itself.
|
|
28
|
+
*/
|
|
29
|
+
constructor(private userId: string, private profile: MatrixProfileInfo) {
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The display name for the user. This will always return a value, though it
|
|
34
|
+
* may be based upon their user ID if no explicit display name is set.
|
|
35
|
+
*/
|
|
36
|
+
public get displayName(): string {
|
|
37
|
+
if (!this.profile?.displayname) return new UserID(this.userId).localpart;
|
|
38
|
+
return this.profile.displayname;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The avatar URL for the user. If the user does not have an avatar, this will
|
|
43
|
+
* be null.
|
|
44
|
+
*/
|
|
45
|
+
public get avatarUrl(): string {
|
|
46
|
+
return this.profile?.avatar_url || null; // enforce null over boolean semantics
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* A mention pill for this user.
|
|
51
|
+
*/
|
|
52
|
+
public get mention(): MentionPill {
|
|
53
|
+
return MentionPill.withDisplayName(this.userId, this.displayName);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Information about the policies (terms of service) a server may have.
|
|
3
|
+
* @category Models
|
|
4
|
+
*/
|
|
5
|
+
export interface Policies {
|
|
6
|
+
policies: {
|
|
7
|
+
[id: string]: Policy;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Information about a policy (terms of service) a server may have.
|
|
13
|
+
* @category Models
|
|
14
|
+
*/
|
|
15
|
+
export interface Policy {
|
|
16
|
+
version: string;
|
|
17
|
+
|
|
18
|
+
[language: string]: TranslatedPolicy | string; // "|string" is required for `version` to work
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Information about a (translated) policy (terms of service).
|
|
23
|
+
* @category Models
|
|
24
|
+
*/
|
|
25
|
+
export interface TranslatedPolicy {
|
|
26
|
+
name: string;
|
|
27
|
+
url: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actions that can be guarded by power levels.
|
|
3
|
+
*/
|
|
4
|
+
export enum PowerLevelAction {
|
|
5
|
+
/**
|
|
6
|
+
* Power level required to ban other users.
|
|
7
|
+
*/
|
|
8
|
+
Ban = "ban",
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Power level required to kick other users.
|
|
12
|
+
*/
|
|
13
|
+
Kick = "kick",
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Power level required to redact events sent by other users. Users can redact
|
|
17
|
+
* their own messages regardless of this power level requirement, unless forbidden
|
|
18
|
+
* by the `events` section of the power levels content.
|
|
19
|
+
*/
|
|
20
|
+
RedactEvents = "redact",
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Power level required to invite other users.
|
|
24
|
+
*/
|
|
25
|
+
Invite = "invite",
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Power level required to notify the whole room with "@room".
|
|
29
|
+
*/
|
|
30
|
+
NotifyRoom = "notifications.room",
|
|
31
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Information on the bounds of a power level change a user can apply.
|
|
3
|
+
*/
|
|
4
|
+
export interface PowerLevelBounds {
|
|
5
|
+
/**
|
|
6
|
+
* Whether or not the user can even modify the power level of the user. This
|
|
7
|
+
* will be false if the user can't send power level events, or the user is
|
|
8
|
+
* unobtainably high in power.
|
|
9
|
+
*/
|
|
10
|
+
canModify: boolean;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The maximum possible power level the user can set on the target user.
|
|
14
|
+
*/
|
|
15
|
+
maximumPossibleLevel: number;
|
|
16
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { PresenceEventContent, PresenceState } from "./events/PresenceEvent";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Presence information for a user.
|
|
5
|
+
* @category Models
|
|
6
|
+
*/
|
|
7
|
+
export class Presence {
|
|
8
|
+
constructor(protected presence: PresenceEventContent) {
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The state for this presence update.
|
|
13
|
+
*/
|
|
14
|
+
public get state(): PresenceState {
|
|
15
|
+
return this.presence.presence;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The status message which accompanies this presence. May be falsey.
|
|
20
|
+
*/
|
|
21
|
+
public get statusMessage(): string {
|
|
22
|
+
return this.presence.status_msg;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* How long ago in milliseconds this presence was changed. May be falsey.
|
|
27
|
+
*/
|
|
28
|
+
public get lastActiveAgo(): number {
|
|
29
|
+
return this.presence.last_active_ago;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Whether or not the user is currently active.
|
|
34
|
+
*/
|
|
35
|
+
public get currentlyActive(): boolean {
|
|
36
|
+
return this.presence.currently_active;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { MatrixClient } from "../MatrixClient";
|
|
2
|
+
import { UserID } from "../helpers/MatrixEntity";
|
|
3
|
+
import { validateSpaceOrderString } from "../simple-validation";
|
|
4
|
+
import { SpaceChildEvent, SpaceChildEventContent } from "./events/SpaceChildEvent";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options to be specified when creating a Space.
|
|
8
|
+
* @category Models
|
|
9
|
+
*/
|
|
10
|
+
export interface SpaceCreateOptions {
|
|
11
|
+
/**
|
|
12
|
+
* The name of the space.
|
|
13
|
+
*/
|
|
14
|
+
name: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The topic/description for the space.
|
|
18
|
+
*/
|
|
19
|
+
topic?: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* An MXC URI for the space's avatar.
|
|
23
|
+
*/
|
|
24
|
+
avatarUrl?: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Whether or not the space should be publicly joinable or not.
|
|
28
|
+
*/
|
|
29
|
+
isPublic: boolean; // maps to world_readable on true, otherwise private.
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Optional localpart for the alias of the space.
|
|
33
|
+
*/
|
|
34
|
+
localpart?: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* User IDs to invite to the space upon creation.
|
|
38
|
+
*/
|
|
39
|
+
invites?: string[];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Options for displaying/handling a child room/space.
|
|
44
|
+
* @category Models
|
|
45
|
+
*/
|
|
46
|
+
export interface SpaceChildEntityOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Whether or not the entity is intended to be a suggested entity.
|
|
49
|
+
*/
|
|
50
|
+
suggested?: boolean;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Servers to try and join through. When not provided, the SDK will try to
|
|
54
|
+
* determine a set.
|
|
55
|
+
*/
|
|
56
|
+
via?: string[];
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A short string to differentiate the rendering order of entities.
|
|
60
|
+
* @see validateSpaceOrderString
|
|
61
|
+
*/
|
|
62
|
+
order?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Options for creating a new child space or room.
|
|
67
|
+
* @category Models
|
|
68
|
+
*/
|
|
69
|
+
export type NewChildOpts = SpaceCreateOptions & SpaceChildEntityOptions;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* A mapping of room ID to space child information.
|
|
73
|
+
* @category Models
|
|
74
|
+
*/
|
|
75
|
+
export interface SpaceEntityMap {
|
|
76
|
+
[roomId: string]: SpaceChildEvent;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* An instance representing a Matrix Space. A space is tied to a room.
|
|
81
|
+
* @category Models
|
|
82
|
+
*/
|
|
83
|
+
export class Space {
|
|
84
|
+
public constructor(public readonly roomId: string, public readonly client: MatrixClient) {
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Creates a new child space under this space.
|
|
89
|
+
* @param {SpaceCreateOptions} opts The options for the new space.
|
|
90
|
+
* @returns {Promise<Space>} Resolves to the created space.
|
|
91
|
+
*/
|
|
92
|
+
public async createChildSpace(opts: NewChildOpts): Promise<Space> {
|
|
93
|
+
const space = await this.client.createSpace(opts);
|
|
94
|
+
await this.addChildSpace(space, opts);
|
|
95
|
+
return space;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Adds a child space to the space. Must be joined to both spaces.
|
|
100
|
+
* @param {Space} space The space to add.
|
|
101
|
+
* @param {SpaceChildEntityOptions} childOpts Related options for the child's representation.
|
|
102
|
+
* @returns {Promise<Space>} Resolves when complete.
|
|
103
|
+
*/
|
|
104
|
+
public async addChildSpace(space: Space, childOpts: SpaceChildEntityOptions = {}): Promise<void> {
|
|
105
|
+
await this.addChildRoom(space.roomId, childOpts);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Removes a child space from the space. Must be joined to the current space (not needed for child space).
|
|
110
|
+
* @param {Space} space The space to remove.
|
|
111
|
+
* @returns {Promise<void>} Resolves when complete.
|
|
112
|
+
*/
|
|
113
|
+
public async removeChildSpace(space: Space): Promise<void> {
|
|
114
|
+
await this.removeChildRoom(space.roomId);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Adds a child room to the space. Must be joined to both the room and the space.
|
|
119
|
+
* @param {string} roomId The room ID to add.
|
|
120
|
+
* @param {SpaceChildEntityOptions} childOpts Additional options for the child space.
|
|
121
|
+
* @returns {Promise<void>} Resolves when complete.
|
|
122
|
+
*/
|
|
123
|
+
public async addChildRoom(roomId: string, childOpts: SpaceChildEntityOptions = {}): Promise<void> {
|
|
124
|
+
const via = childOpts.via ?? [new UserID(await this.client.getUserId()).domain];
|
|
125
|
+
const childContent: SpaceChildEventContent = { via };
|
|
126
|
+
|
|
127
|
+
if (childOpts.suggested) childContent.suggested = childOpts.suggested;
|
|
128
|
+
if (childOpts.order) {
|
|
129
|
+
validateSpaceOrderString(childOpts.order);
|
|
130
|
+
childContent.order = childOpts.order;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
await this.client.sendStateEvent(this.roomId, "m.space.child", roomId, childContent);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Removes a child room from the space. Must be joined to the current space (not needed for child room).
|
|
138
|
+
* @param {string} roomId The room ID to remove.
|
|
139
|
+
* @returns {Promise<void>} Resolves when complete.
|
|
140
|
+
*/
|
|
141
|
+
public async removeChildRoom(roomId: string): Promise<void> {
|
|
142
|
+
await this.client.sendStateEvent(this.roomId, "m.space.child", roomId, {});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Gets all the child rooms on the space. These may be spaces or other rooms.
|
|
147
|
+
* @returns {Promise<SpaceEntityMap>} Resolves to a map of children for this space.
|
|
148
|
+
*/
|
|
149
|
+
public async getChildEntities(): Promise<SpaceEntityMap> {
|
|
150
|
+
const roomState = await this.client.getRoomState(this.roomId);
|
|
151
|
+
const mapping: SpaceEntityMap = {};
|
|
152
|
+
roomState
|
|
153
|
+
.filter(s => s.type === "m.space.child")
|
|
154
|
+
.filter(s => s.content?.via)
|
|
155
|
+
.forEach(s => mapping[s.state_key] = new SpaceChildEvent(s));
|
|
156
|
+
return mapping;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Invite a user to the current space.
|
|
161
|
+
* @param {string} userId The user ID to invite.
|
|
162
|
+
* @returns {Promise<void>} Resolves when completed.
|
|
163
|
+
*/
|
|
164
|
+
public async inviteUser(userId: string) {
|
|
165
|
+
return this.client.inviteUser(userId, this.roomId);
|
|
166
|
+
}
|
|
167
|
+
}
|