@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,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoomTracker = void 0;
|
|
4
|
+
// noinspection ES6RedundantAwait
|
|
5
|
+
/**
|
|
6
|
+
* Tracks room encryption status for a MatrixClient.
|
|
7
|
+
* @category Encryption
|
|
8
|
+
*/
|
|
9
|
+
class RoomTracker {
|
|
10
|
+
constructor(client) {
|
|
11
|
+
this.client = client;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Handles a room join
|
|
15
|
+
* @internal
|
|
16
|
+
* @param roomId The room ID.
|
|
17
|
+
*/
|
|
18
|
+
async onRoomJoin(roomId) {
|
|
19
|
+
await this.queueRoomCheck(roomId);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Handles a room event.
|
|
23
|
+
* @internal
|
|
24
|
+
* @param roomId The room ID.
|
|
25
|
+
* @param event The event.
|
|
26
|
+
*/
|
|
27
|
+
async onRoomEvent(roomId, event) {
|
|
28
|
+
if (event['state_key'] !== '')
|
|
29
|
+
return; // we don't care about anything else
|
|
30
|
+
if (event['type'] === 'm.room.encryption' || event['type'] === 'm.room.history_visibility') {
|
|
31
|
+
await this.queueRoomCheck(roomId);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Prepares the room tracker to track the given rooms.
|
|
36
|
+
* @param {string[]} roomIds The room IDs to track. This should be the joined rooms set.
|
|
37
|
+
*/
|
|
38
|
+
async prepare(roomIds) {
|
|
39
|
+
for (const roomId of roomIds) {
|
|
40
|
+
await this.queueRoomCheck(roomId);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Queues a room check for the tracker. If the room needs an update to the store, an
|
|
45
|
+
* update will be made.
|
|
46
|
+
* @param {string} roomId The room ID to check.
|
|
47
|
+
*/
|
|
48
|
+
async queueRoomCheck(roomId) {
|
|
49
|
+
const config = await this.client.cryptoStore.getRoom(roomId);
|
|
50
|
+
if (config) {
|
|
51
|
+
if (config.algorithm !== undefined) {
|
|
52
|
+
return; // assume no change to encryption config
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
let encEvent;
|
|
56
|
+
try {
|
|
57
|
+
encEvent = await this.client.getRoomStateEvent(roomId, "m.room.encryption", "");
|
|
58
|
+
encEvent.algorithm = encEvent.algorithm ?? 'UNKNOWN';
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
return; // failure == no encryption
|
|
62
|
+
}
|
|
63
|
+
// Pick out the history visibility setting too
|
|
64
|
+
let historyVisibility;
|
|
65
|
+
try {
|
|
66
|
+
const ev = await this.client.getRoomStateEvent(roomId, "m.room.history_visibility", "");
|
|
67
|
+
historyVisibility = ev.history_visibility;
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
// ignore - we'll just treat history visibility as normal
|
|
71
|
+
}
|
|
72
|
+
await this.client.cryptoStore.storeRoom(roomId, {
|
|
73
|
+
...encEvent,
|
|
74
|
+
historyVisibility,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Gets the room's crypto configuration, as known by the underlying store. If the room is
|
|
79
|
+
* not encrypted then this will return an empty object.
|
|
80
|
+
* @param {string} roomId The room ID to get the config for.
|
|
81
|
+
* @returns {Promise<ICryptoRoomInformation>} Resolves to the encryption config.
|
|
82
|
+
*/
|
|
83
|
+
async getRoomCryptoConfig(roomId) {
|
|
84
|
+
let config = await this.client.cryptoStore.getRoom(roomId);
|
|
85
|
+
if (!config) {
|
|
86
|
+
await this.queueRoomCheck(roomId);
|
|
87
|
+
config = await this.client.cryptoStore.getRoom(roomId);
|
|
88
|
+
}
|
|
89
|
+
if (!config) {
|
|
90
|
+
return {};
|
|
91
|
+
}
|
|
92
|
+
return config;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.RoomTracker = RoomTracker;
|
|
96
|
+
//# sourceMappingURL=RoomTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoomTracker.js","sourceRoot":"","sources":["../../src/e2ee/RoomTracker.ts"],"names":[],"mappings":";;;AAIA,iCAAiC;AACjC;;;GAGG;AACH,MAAa,WAAW;IACpB,YAA2B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAC/C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAC,MAAc;QAClC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,KAAU;QAC/C,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE;YAAE,OAAO,CAAC,oCAAoC;QAC3E,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,2BAA2B,EAAE,CAAC;YACzF,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAO,CAAC,OAAiB;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CAAC,MAAc;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,wCAAwC;YACpD,CAAC;QACL,CAAC;QAED,IAAI,QAAyC,CAAC;QAC9C,IAAI,CAAC;YACD,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAChF,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,SAAS,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO,CAAC,2BAA2B;QACvC,CAAC;QAED,8CAA8C;QAC9C,IAAI,iBAAyB,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;YACxF,iBAAiB,GAAG,EAAE,CAAC,kBAAkB,CAAC;QAC9C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,yDAAyD;QAC7D,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE;YAC5C,GAAG,QAAQ;YACX,iBAAiB;SACpB,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,MAAc;QAC3C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAzFD,kCAyFC"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { OlmMachine } from "@matrix-org/matrix-sdk-crypto-nodejs";
|
|
2
|
+
import * as AsyncLock from "async-lock";
|
|
3
|
+
import { MatrixClient } from "../MatrixClient";
|
|
4
|
+
import { ICryptoRoomInformation } from "./ICryptoRoomInformation";
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
export declare const SYNC_LOCK_NAME = "sync";
|
|
9
|
+
/**
|
|
10
|
+
* Callback invoked to satisfy a User-Interactive Authentication (UIA) challenge
|
|
11
|
+
* when uploading cross-signing keys. Given the `flows`/`params`/`session` from a
|
|
12
|
+
* 401 response, it must return the `auth` dict to retry with (e.g. an
|
|
13
|
+
* `m.login.password` stage), or `null` to give up. May be called more than once
|
|
14
|
+
* if the server requires multiple stages.
|
|
15
|
+
*
|
|
16
|
+
* @category Encryption
|
|
17
|
+
*/
|
|
18
|
+
export type UIACallback = (uia: {
|
|
19
|
+
flows: {
|
|
20
|
+
stages: string[];
|
|
21
|
+
}[];
|
|
22
|
+
params?: Record<string, unknown>;
|
|
23
|
+
session?: string;
|
|
24
|
+
}) => Promise<Record<string, unknown> | null>;
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export declare class RustEngine {
|
|
29
|
+
readonly machine: OlmMachine;
|
|
30
|
+
private client;
|
|
31
|
+
readonly lock: AsyncLock;
|
|
32
|
+
constructor(machine: OlmMachine, client: MatrixClient);
|
|
33
|
+
run(): Promise<void>;
|
|
34
|
+
private runOnly;
|
|
35
|
+
addTrackedUsers(userIds: string[]): Promise<void>;
|
|
36
|
+
prepareEncrypt(roomId: string, roomInfo: ICryptoRoomInformation): Promise<void>;
|
|
37
|
+
private processKeysClaimRequest;
|
|
38
|
+
private processKeysUploadRequest;
|
|
39
|
+
private processKeysQueryRequest;
|
|
40
|
+
private processToDeviceRequest;
|
|
41
|
+
private actuallyProcessToDeviceRequest;
|
|
42
|
+
private processSignatureUploadRequest;
|
|
43
|
+
private processKeysBackupRequest;
|
|
44
|
+
/** The currently-active server-side key-backup version, or null if none. */
|
|
45
|
+
private activeKeyBackupVersion;
|
|
46
|
+
/**
|
|
47
|
+
* Publish a cross-signing identity for this account so the device becomes
|
|
48
|
+
* cross-signed (self-verified). This is the piece matrix-bot-sdk historically
|
|
49
|
+
* could not drive: `runOnly` threw on the request types it produces, and the
|
|
50
|
+
* cross-signing public-key upload is not an outgoing-queue request at all —
|
|
51
|
+
* it is returned by `OlmMachine.bootstrapCrossSigning()`.
|
|
52
|
+
*
|
|
53
|
+
* Flow:
|
|
54
|
+
* 1. `machine.bootstrapCrossSigning(reset)` creates the identity locally
|
|
55
|
+
* and (on matrix-sdk-crypto-nodejs >= 0.5.0) returns the three upload
|
|
56
|
+
* requests.
|
|
57
|
+
* 2. Upload device keys (`uploadKeysReq`) if present.
|
|
58
|
+
* 3. POST the cross-signing public keys to `/keys/device_signing/upload`,
|
|
59
|
+
* completing the User-Interactive Auth challenge via `uiaCallback`.
|
|
60
|
+
* 4. POST the self-signature to `/keys/signatures/upload`.
|
|
61
|
+
*
|
|
62
|
+
* On bindings <= 0.4.0, `bootstrapCrossSigning` returns `void` and gives no
|
|
63
|
+
* way to retrieve the upload requests, so this method throws a clear,
|
|
64
|
+
* actionable error (callers are expected to treat that as non-fatal).
|
|
65
|
+
*
|
|
66
|
+
* @param uiaCallback Resolves the UIA challenge for the device-signing upload.
|
|
67
|
+
* @param reset Pass `false` (default) to reuse an existing local identity;
|
|
68
|
+
* the same request can be re-sent across UIA stages. `true`
|
|
69
|
+
* wipes any existing identity and resets device trust.
|
|
70
|
+
*/
|
|
71
|
+
bootstrapCrossSigning(uiaCallback: UIACallback, reset?: boolean): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* POST the cross-signing public keys to `/keys/device_signing/upload`,
|
|
74
|
+
* driving the UIA challenge. The first attempt is sent without `auth`; the
|
|
75
|
+
* server replies 401 with the available flows, which `uiaCallback` resolves
|
|
76
|
+
* (typically an `m.login.password` stage). We then resubmit the SAME key
|
|
77
|
+
* body with the returned `auth` dict (including the `session` id).
|
|
78
|
+
*/
|
|
79
|
+
private uploadDeviceSigningKeys;
|
|
80
|
+
/**
|
|
81
|
+
* Create + activate a server-side key-backup version derived from the given
|
|
82
|
+
* recovery/backup public key, and tell the OlmMachine to use it. After this,
|
|
83
|
+
* `KeysBackup` requests produced by `backupRoomKeys()` will have a version to
|
|
84
|
+
* write into (handled in `processKeysBackupRequest`).
|
|
85
|
+
*
|
|
86
|
+
* NOTE: key backup is secondary to cross-signing. This wires the version
|
|
87
|
+
* plumbing; the caller is responsible for generating the backup key and for
|
|
88
|
+
* calling `machine.enableBackupV1()` / `backupRoomKeys()`. It is intentionally
|
|
89
|
+
* conservative — see the adapter docs.
|
|
90
|
+
*/
|
|
91
|
+
enableKeyBackup(authData: Record<string, unknown>, algorithm?: string): Promise<string>;
|
|
92
|
+
/**
|
|
93
|
+
* Restore cross-signing private keys (and optionally the megolm backup decryption
|
|
94
|
+
* key) from Secure Secret Storage (4S/SSSS) into the local crypto store.
|
|
95
|
+
*
|
|
96
|
+
* This is the recovery path when the local crypto store has been lost: the
|
|
97
|
+
* cross-signing keys were previously uploaded encrypted to account data by
|
|
98
|
+
* `bootstrapSecretStorage*`, and this method fetches and decrypts them using
|
|
99
|
+
* the same passphrase. After a successful restore:
|
|
100
|
+
*
|
|
101
|
+
* - The OlmMachine has the master / self-signing / user-signing private keys.
|
|
102
|
+
* - The device re-signs itself, so it continues to appear verified without
|
|
103
|
+
* needing UIA or a fresh cross-signing bootstrap.
|
|
104
|
+
* - If the megolm backup decryption key is in account data, it is also
|
|
105
|
+
* restored so room-key backup requests work with the existing backup version.
|
|
106
|
+
*
|
|
107
|
+
* Requires `@matrix-org/matrix-sdk-crypto-nodejs >= 0.6.0` (for
|
|
108
|
+
* `importSecretsFromSecretStorage`). Throws if the passphrase does not match
|
|
109
|
+
* the SSSS key on the server, or if account data is missing.
|
|
110
|
+
*
|
|
111
|
+
* @param passphrase The same passphrase that was used to bootstrap 4S.
|
|
112
|
+
*/
|
|
113
|
+
restoreSecretsFromSecretStorage(passphrase: string): Promise<void>;
|
|
114
|
+
private bootstrapSecretStorage;
|
|
115
|
+
bootstrapSecretStorageFromPassphrase(passphrase: string, opts?: {
|
|
116
|
+
withKeyBackup?: boolean;
|
|
117
|
+
reset?: boolean;
|
|
118
|
+
}): Promise<void>;
|
|
119
|
+
bootstrapSecretStorageFromKey(ssssKey: import("@matrix-org/matrix-sdk-crypto-nodejs").SecretStorageKey, opts?: {
|
|
120
|
+
withKeyBackup?: boolean;
|
|
121
|
+
reset?: boolean;
|
|
122
|
+
}): Promise<void>;
|
|
123
|
+
private bootstrapKeyBackupIntoSecretStorage;
|
|
124
|
+
private putAccountData;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Extract a UIA challenge from a thrown matrix-bot-sdk request error. A 401 UIA
|
|
128
|
+
* body has `flows`/`session` and no `errcode`, so matrix-bot-sdk throws the raw
|
|
129
|
+
* response object (`throw response`) rather than a `MatrixError`. We also accept
|
|
130
|
+
* a `MatrixError`-like shape defensively. Returns null if it is not a UIA 401.
|
|
131
|
+
*
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
export declare function extractUIA(err: unknown): {
|
|
135
|
+
flows: {
|
|
136
|
+
stages: string[];
|
|
137
|
+
}[];
|
|
138
|
+
params?: Record<string, unknown>;
|
|
139
|
+
session?: string;
|
|
140
|
+
} | null;
|
|
141
|
+
/**
|
|
142
|
+
* A second 401 whose body reports `completed: []` (or an unchanged stage list)
|
|
143
|
+
* after we supplied credentials indicates the credentials were rejected, not a
|
|
144
|
+
* stacked second stage. We treat the presence of an `error`/`errcode` in the
|
|
145
|
+
* body as a hard rejection.
|
|
146
|
+
*
|
|
147
|
+
* @internal
|
|
148
|
+
*/
|
|
149
|
+
export declare function hasFailedUIA(err: unknown): boolean;
|