@unwanted/matrix-sdk-mini 34.12.0-1
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +5910 -0
- package/LICENSE +177 -0
- package/README.md +459 -0
- package/git-revision.txt +1 -0
- package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +14 -0
- package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +1 -0
- package/lib/@types/AESEncryptedSecretStoragePayload.js +1 -0
- package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -0
- package/lib/@types/IIdentityServerProvider.d.ts +9 -0
- package/lib/@types/IIdentityServerProvider.d.ts.map +1 -0
- package/lib/@types/IIdentityServerProvider.js +1 -0
- package/lib/@types/IIdentityServerProvider.js.map +1 -0
- package/lib/@types/PushRules.d.ts +140 -0
- package/lib/@types/PushRules.d.ts.map +1 -0
- package/lib/@types/PushRules.js +94 -0
- package/lib/@types/PushRules.js.map +1 -0
- package/lib/@types/another-json.d.js +0 -0
- package/lib/@types/another-json.d.js.map +1 -0
- package/lib/@types/auth.d.ts +208 -0
- package/lib/@types/auth.d.ts.map +1 -0
- package/lib/@types/auth.js +99 -0
- package/lib/@types/auth.js.map +1 -0
- package/lib/@types/beacon.d.ts +106 -0
- package/lib/@types/beacon.d.ts.map +1 -0
- package/lib/@types/beacon.js +119 -0
- package/lib/@types/beacon.js.map +1 -0
- package/lib/@types/common.d.ts +9 -0
- package/lib/@types/common.d.ts.map +1 -0
- package/lib/@types/common.js +1 -0
- package/lib/@types/common.js.map +1 -0
- package/lib/@types/crypto.d.ts +47 -0
- package/lib/@types/crypto.d.ts.map +1 -0
- package/lib/@types/crypto.js +1 -0
- package/lib/@types/crypto.js.map +1 -0
- package/lib/@types/event.d.ts +258 -0
- package/lib/@types/event.d.ts.map +1 -0
- package/lib/@types/event.js +239 -0
- package/lib/@types/event.js.map +1 -0
- package/lib/@types/events.d.ts +92 -0
- package/lib/@types/events.d.ts.map +1 -0
- package/lib/@types/events.js +1 -0
- package/lib/@types/events.js.map +1 -0
- package/lib/@types/extensible_events.d.ts +98 -0
- package/lib/@types/extensible_events.d.ts.map +1 -0
- package/lib/@types/extensible_events.js +116 -0
- package/lib/@types/extensible_events.js.map +1 -0
- package/lib/@types/global.d.js +20 -0
- package/lib/@types/global.d.js.map +1 -0
- package/lib/@types/local_notifications.d.ts +4 -0
- package/lib/@types/local_notifications.d.ts.map +1 -0
- package/lib/@types/local_notifications.js +1 -0
- package/lib/@types/local_notifications.js.map +1 -0
- package/lib/@types/location.d.ts +60 -0
- package/lib/@types/location.d.ts.map +1 -0
- package/lib/@types/location.js +67 -0
- package/lib/@types/location.js.map +1 -0
- package/lib/@types/matrix-sdk-crypto-wasm.d.js +1 -0
- package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -0
- package/lib/@types/media.d.ts +220 -0
- package/lib/@types/media.d.ts.map +1 -0
- package/lib/@types/media.js +1 -0
- package/lib/@types/media.js.map +1 -0
- package/lib/@types/membership.d.ts +41 -0
- package/lib/@types/membership.d.ts.map +1 -0
- package/lib/@types/membership.js +37 -0
- package/lib/@types/membership.js.map +1 -0
- package/lib/@types/oidc-client-ts.d.js +18 -0
- package/lib/@types/oidc-client-ts.d.js.map +1 -0
- package/lib/@types/partials.d.ts +39 -0
- package/lib/@types/partials.d.ts.map +1 -0
- package/lib/@types/partials.js +53 -0
- package/lib/@types/partials.js.map +1 -0
- package/lib/@types/polls.d.ts +88 -0
- package/lib/@types/polls.d.ts.map +1 -0
- package/lib/@types/polls.js +86 -0
- package/lib/@types/polls.js.map +1 -0
- package/lib/@types/read_receipts.d.ts +36 -0
- package/lib/@types/read_receipts.d.ts.map +1 -0
- package/lib/@types/read_receipts.js +27 -0
- package/lib/@types/read_receipts.js.map +1 -0
- package/lib/@types/registration.d.ts +85 -0
- package/lib/@types/registration.d.ts.map +1 -0
- package/lib/@types/registration.js +1 -0
- package/lib/@types/registration.js.map +1 -0
- package/lib/@types/requests.d.ts +241 -0
- package/lib/@types/requests.d.ts.map +1 -0
- package/lib/@types/requests.js +28 -0
- package/lib/@types/requests.js.map +1 -0
- package/lib/@types/search.d.ts +90 -0
- package/lib/@types/search.d.ts.map +1 -0
- package/lib/@types/search.js +30 -0
- package/lib/@types/search.js.map +1 -0
- package/lib/@types/signed.d.ts +9 -0
- package/lib/@types/signed.d.ts.map +1 -0
- package/lib/@types/signed.js +1 -0
- package/lib/@types/signed.js.map +1 -0
- package/lib/@types/spaces.d.ts +16 -0
- package/lib/@types/spaces.d.ts.map +1 -0
- package/lib/@types/spaces.js +1 -0
- package/lib/@types/spaces.js.map +1 -0
- package/lib/@types/state_events.d.ts +116 -0
- package/lib/@types/state_events.d.ts.map +1 -0
- package/lib/@types/state_events.js +1 -0
- package/lib/@types/state_events.js.map +1 -0
- package/lib/@types/synapse.d.ts +19 -0
- package/lib/@types/synapse.d.ts.map +1 -0
- package/lib/@types/synapse.js +1 -0
- package/lib/@types/synapse.js.map +1 -0
- package/lib/@types/sync.d.ts +8 -0
- package/lib/@types/sync.d.ts.map +1 -0
- package/lib/@types/sync.js +25 -0
- package/lib/@types/sync.js.map +1 -0
- package/lib/@types/threepids.d.ts +12 -0
- package/lib/@types/threepids.d.ts.map +1 -0
- package/lib/@types/threepids.js +24 -0
- package/lib/@types/threepids.js.map +1 -0
- package/lib/@types/topic.d.ts +48 -0
- package/lib/@types/topic.d.ts.map +1 -0
- package/lib/@types/topic.js +57 -0
- package/lib/@types/topic.js.map +1 -0
- package/lib/@types/uia.d.ts +12 -0
- package/lib/@types/uia.d.ts.map +1 -0
- package/lib/@types/uia.js +1 -0
- package/lib/@types/uia.js.map +1 -0
- package/lib/NamespacedValue.d.ts +33 -0
- package/lib/NamespacedValue.d.ts.map +1 -0
- package/lib/NamespacedValue.js +113 -0
- package/lib/NamespacedValue.js.map +1 -0
- package/lib/ReEmitter.d.ts +15 -0
- package/lib/ReEmitter.d.ts.map +1 -0
- package/lib/ReEmitter.js +87 -0
- package/lib/ReEmitter.js.map +1 -0
- package/lib/ToDeviceMessageQueue.d.ts +28 -0
- package/lib/ToDeviceMessageQueue.d.ts.map +1 -0
- package/lib/ToDeviceMessageQueue.js +135 -0
- package/lib/ToDeviceMessageQueue.js.map +1 -0
- package/lib/autodiscovery.d.ts +136 -0
- package/lib/autodiscovery.d.ts.map +1 -0
- package/lib/autodiscovery.js +464 -0
- package/lib/autodiscovery.js.map +1 -0
- package/lib/base64.d.ts +28 -0
- package/lib/base64.d.ts.map +1 -0
- package/lib/base64.js +88 -0
- package/lib/base64.js.map +1 -0
- package/lib/browser-index.d.ts +8 -0
- package/lib/browser-index.d.ts.map +1 -0
- package/lib/browser-index.js +35 -0
- package/lib/browser-index.js.map +1 -0
- package/lib/client.d.ts +4232 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +8622 -0
- package/lib/client.js.map +1 -0
- package/lib/common-crypto/CryptoBackend.d.ts +240 -0
- package/lib/common-crypto/CryptoBackend.d.ts.map +1 -0
- package/lib/common-crypto/CryptoBackend.js +73 -0
- package/lib/common-crypto/CryptoBackend.js.map +1 -0
- package/lib/common-crypto/key-passphrase.d.ts +14 -0
- package/lib/common-crypto/key-passphrase.d.ts.map +1 -0
- package/lib/common-crypto/key-passphrase.js +33 -0
- package/lib/common-crypto/key-passphrase.js.map +1 -0
- package/lib/content-helpers.d.ts +90 -0
- package/lib/content-helpers.d.ts.map +1 -0
- package/lib/content-helpers.js +250 -0
- package/lib/content-helpers.js.map +1 -0
- package/lib/content-repo.d.ts +24 -0
- package/lib/content-repo.d.ts.map +1 -0
- package/lib/content-repo.js +104 -0
- package/lib/content-repo.js.map +1 -0
- package/lib/crypto/CrossSigning.d.ts +184 -0
- package/lib/crypto/CrossSigning.d.ts.map +1 -0
- package/lib/crypto/CrossSigning.js +718 -0
- package/lib/crypto/CrossSigning.js.map +1 -0
- package/lib/crypto/DeviceList.d.ts +216 -0
- package/lib/crypto/DeviceList.d.ts.map +1 -0
- package/lib/crypto/DeviceList.js +892 -0
- package/lib/crypto/DeviceList.js.map +1 -0
- package/lib/crypto/EncryptionSetup.d.ts +152 -0
- package/lib/crypto/EncryptionSetup.d.ts.map +1 -0
- package/lib/crypto/EncryptionSetup.js +356 -0
- package/lib/crypto/EncryptionSetup.js.map +1 -0
- package/lib/crypto/OlmDevice.d.ts +457 -0
- package/lib/crypto/OlmDevice.d.ts.map +1 -0
- package/lib/crypto/OlmDevice.js +1241 -0
- package/lib/crypto/OlmDevice.js.map +1 -0
- package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +109 -0
- package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +1 -0
- package/lib/crypto/OutgoingRoomKeyRequestManager.js +415 -0
- package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +1 -0
- package/lib/crypto/RoomList.d.ts +26 -0
- package/lib/crypto/RoomList.d.ts.map +1 -0
- package/lib/crypto/RoomList.js +71 -0
- package/lib/crypto/RoomList.js.map +1 -0
- package/lib/crypto/SecretSharing.d.ts +24 -0
- package/lib/crypto/SecretSharing.d.ts.map +1 -0
- package/lib/crypto/SecretSharing.js +194 -0
- package/lib/crypto/SecretSharing.js.map +1 -0
- package/lib/crypto/SecretStorage.d.ts +55 -0
- package/lib/crypto/SecretStorage.d.ts.map +1 -0
- package/lib/crypto/SecretStorage.js +118 -0
- package/lib/crypto/SecretStorage.js.map +1 -0
- package/lib/crypto/aes.d.ts +6 -0
- package/lib/crypto/aes.d.ts.map +1 -0
- package/lib/crypto/aes.js +24 -0
- package/lib/crypto/aes.js.map +1 -0
- package/lib/crypto/algorithms/base.d.ts +156 -0
- package/lib/crypto/algorithms/base.d.ts.map +1 -0
- package/lib/crypto/algorithms/base.js +187 -0
- package/lib/crypto/algorithms/base.js.map +1 -0
- package/lib/crypto/algorithms/index.d.ts +4 -0
- package/lib/crypto/algorithms/index.d.ts.map +1 -0
- package/lib/crypto/algorithms/index.js +20 -0
- package/lib/crypto/algorithms/index.js.map +1 -0
- package/lib/crypto/algorithms/megolm.d.ts +385 -0
- package/lib/crypto/algorithms/megolm.d.ts.map +1 -0
- package/lib/crypto/algorithms/megolm.js +1822 -0
- package/lib/crypto/algorithms/megolm.js.map +1 -0
- package/lib/crypto/algorithms/olm.d.ts +5 -0
- package/lib/crypto/algorithms/olm.d.ts.map +1 -0
- package/lib/crypto/algorithms/olm.js +299 -0
- package/lib/crypto/algorithms/olm.js.map +1 -0
- package/lib/crypto/api.d.ts +32 -0
- package/lib/crypto/api.d.ts.map +1 -0
- package/lib/crypto/api.js +22 -0
- package/lib/crypto/api.js.map +1 -0
- package/lib/crypto/backup.d.ts +227 -0
- package/lib/crypto/backup.d.ts.map +1 -0
- package/lib/crypto/backup.js +824 -0
- package/lib/crypto/backup.js.map +1 -0
- package/lib/crypto/crypto.d.ts +3 -0
- package/lib/crypto/crypto.d.ts.map +1 -0
- package/lib/crypto/crypto.js +19 -0
- package/lib/crypto/crypto.js.map +1 -0
- package/lib/crypto/dehydration.d.ts +34 -0
- package/lib/crypto/dehydration.d.ts.map +1 -0
- package/lib/crypto/dehydration.js +252 -0
- package/lib/crypto/dehydration.js.map +1 -0
- package/lib/crypto/device-converter.d.ts +9 -0
- package/lib/crypto/device-converter.d.ts.map +1 -0
- package/lib/crypto/device-converter.js +42 -0
- package/lib/crypto/device-converter.js.map +1 -0
- package/lib/crypto/deviceinfo.d.ts +99 -0
- package/lib/crypto/deviceinfo.d.ts.map +1 -0
- package/lib/crypto/deviceinfo.js +148 -0
- package/lib/crypto/deviceinfo.js.map +1 -0
- package/lib/crypto/index.d.ts +1209 -0
- package/lib/crypto/index.d.ts.map +1 -0
- package/lib/crypto/index.js +4097 -0
- package/lib/crypto/index.js.map +1 -0
- package/lib/crypto/key_passphrase.d.ts +14 -0
- package/lib/crypto/key_passphrase.d.ts.map +1 -0
- package/lib/crypto/key_passphrase.js +44 -0
- package/lib/crypto/key_passphrase.js.map +1 -0
- package/lib/crypto/keybackup.d.ts +18 -0
- package/lib/crypto/keybackup.d.ts.map +1 -0
- package/lib/crypto/keybackup.js +1 -0
- package/lib/crypto/keybackup.js.map +1 -0
- package/lib/crypto/olmlib.d.ts +129 -0
- package/lib/crypto/olmlib.d.ts.map +1 -0
- package/lib/crypto/olmlib.js +492 -0
- package/lib/crypto/olmlib.js.map +1 -0
- package/lib/crypto/recoverykey.d.ts +2 -0
- package/lib/crypto/recoverykey.d.ts.map +1 -0
- package/lib/crypto/recoverykey.js +19 -0
- package/lib/crypto/recoverykey.js.map +1 -0
- package/lib/crypto/store/base.d.ts +252 -0
- package/lib/crypto/store/base.d.ts.map +1 -0
- package/lib/crypto/store/base.js +64 -0
- package/lib/crypto/store/base.js.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +187 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.js +1145 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store.d.ts +432 -0
- package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store.js +728 -0
- package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -0
- package/lib/crypto/store/localStorage-crypto-store.d.ts +119 -0
- package/lib/crypto/store/localStorage-crypto-store.d.ts.map +1 -0
- package/lib/crypto/store/localStorage-crypto-store.js +531 -0
- package/lib/crypto/store/localStorage-crypto-store.js.map +1 -0
- package/lib/crypto/store/memory-crypto-store.d.ts +215 -0
- package/lib/crypto/store/memory-crypto-store.d.ts.map +1 -0
- package/lib/crypto/store/memory-crypto-store.js +622 -0
- package/lib/crypto/store/memory-crypto-store.js.map +1 -0
- package/lib/crypto/verification/Base.d.ts +105 -0
- package/lib/crypto/verification/Base.d.ts.map +1 -0
- package/lib/crypto/verification/Base.js +372 -0
- package/lib/crypto/verification/Base.js.map +1 -0
- package/lib/crypto/verification/Error.d.ts +35 -0
- package/lib/crypto/verification/Error.d.ts.map +1 -0
- package/lib/crypto/verification/Error.js +86 -0
- package/lib/crypto/verification/Error.js.map +1 -0
- package/lib/crypto/verification/IllegalMethod.d.ts +15 -0
- package/lib/crypto/verification/IllegalMethod.d.ts.map +1 -0
- package/lib/crypto/verification/IllegalMethod.js +43 -0
- package/lib/crypto/verification/IllegalMethod.js.map +1 -0
- package/lib/crypto/verification/QRCode.d.ts +51 -0
- package/lib/crypto/verification/QRCode.d.ts.map +1 -0
- package/lib/crypto/verification/QRCode.js +277 -0
- package/lib/crypto/verification/QRCode.js.map +1 -0
- package/lib/crypto/verification/SAS.d.ts +27 -0
- package/lib/crypto/verification/SAS.d.ts.map +1 -0
- package/lib/crypto/verification/SAS.js +485 -0
- package/lib/crypto/verification/SAS.js.map +1 -0
- package/lib/crypto/verification/SASDecimal.d.ts +8 -0
- package/lib/crypto/verification/SASDecimal.d.ts.map +1 -0
- package/lib/crypto/verification/SASDecimal.js +34 -0
- package/lib/crypto/verification/SASDecimal.js.map +1 -0
- package/lib/crypto/verification/request/Channel.d.ts +18 -0
- package/lib/crypto/verification/request/Channel.d.ts.map +1 -0
- package/lib/crypto/verification/request/Channel.js +1 -0
- package/lib/crypto/verification/request/Channel.js.map +1 -0
- package/lib/crypto/verification/request/InRoomChannel.d.ts +113 -0
- package/lib/crypto/verification/request/InRoomChannel.d.ts.map +1 -0
- package/lib/crypto/verification/request/InRoomChannel.js +351 -0
- package/lib/crypto/verification/request/InRoomChannel.js.map +1 -0
- package/lib/crypto/verification/request/ToDeviceChannel.d.ts +105 -0
- package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +1 -0
- package/lib/crypto/verification/request/ToDeviceChannel.js +328 -0
- package/lib/crypto/verification/request/ToDeviceChannel.js.map +1 -0
- package/lib/crypto/verification/request/VerificationRequest.d.ts +227 -0
- package/lib/crypto/verification/request/VerificationRequest.d.ts.map +1 -0
- package/lib/crypto/verification/request/VerificationRequest.js +937 -0
- package/lib/crypto/verification/request/VerificationRequest.js.map +1 -0
- package/lib/crypto-api/CryptoEvent.d.ts +69 -0
- package/lib/crypto-api/CryptoEvent.d.ts.map +1 -0
- package/lib/crypto-api/CryptoEvent.js +33 -0
- package/lib/crypto-api/CryptoEvent.js.map +1 -0
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts +16 -0
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +1 -0
- package/lib/crypto-api/CryptoEventHandlerMap.js +22 -0
- package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -0
- package/lib/crypto-api/index.d.ts +978 -0
- package/lib/crypto-api/index.d.ts.map +1 -0
- package/lib/crypto-api/index.js +304 -0
- package/lib/crypto-api/index.js.map +1 -0
- package/lib/crypto-api/key-passphrase.d.ts +11 -0
- package/lib/crypto-api/key-passphrase.d.ts.map +1 -0
- package/lib/crypto-api/key-passphrase.js +51 -0
- package/lib/crypto-api/key-passphrase.js.map +1 -0
- package/lib/crypto-api/keybackup.d.ts +88 -0
- package/lib/crypto-api/keybackup.d.ts.map +1 -0
- package/lib/crypto-api/keybackup.js +1 -0
- package/lib/crypto-api/keybackup.js.map +1 -0
- package/lib/crypto-api/recovery-key.d.ts +11 -0
- package/lib/crypto-api/recovery-key.d.ts.map +1 -0
- package/lib/crypto-api/recovery-key.js +65 -0
- package/lib/crypto-api/recovery-key.js.map +1 -0
- package/lib/crypto-api/verification.d.ts +344 -0
- package/lib/crypto-api/verification.d.ts.map +1 -0
- package/lib/crypto-api/verification.js +91 -0
- package/lib/crypto-api/verification.js.map +1 -0
- package/lib/digest.d.ts +10 -0
- package/lib/digest.d.ts.map +1 -0
- package/lib/digest.js +40 -0
- package/lib/digest.js.map +1 -0
- package/lib/embedded.d.ts +143 -0
- package/lib/embedded.d.ts.map +1 -0
- package/lib/embedded.js +567 -0
- package/lib/embedded.js.map +1 -0
- package/lib/errors.d.ts +24 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +51 -0
- package/lib/errors.js.map +1 -0
- package/lib/event-mapper.d.ts +10 -0
- package/lib/event-mapper.d.ts.map +1 -0
- package/lib/event-mapper.js +81 -0
- package/lib/event-mapper.js.map +1 -0
- package/lib/extensible_events_v1/ExtensibleEvent.d.ts +38 -0
- package/lib/extensible_events_v1/ExtensibleEvent.d.ts.map +1 -0
- package/lib/extensible_events_v1/ExtensibleEvent.js +57 -0
- package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -0
- package/lib/extensible_events_v1/InvalidEventError.d.ts +7 -0
- package/lib/extensible_events_v1/InvalidEventError.d.ts.map +1 -0
- package/lib/extensible_events_v1/InvalidEventError.js +25 -0
- package/lib/extensible_events_v1/InvalidEventError.js.map +1 -0
- package/lib/extensible_events_v1/MessageEvent.d.ts +45 -0
- package/lib/extensible_events_v1/MessageEvent.d.ts.map +1 -0
- package/lib/extensible_events_v1/MessageEvent.js +134 -0
- package/lib/extensible_events_v1/MessageEvent.js.map +1 -0
- package/lib/extensible_events_v1/PollEndEvent.d.ts +33 -0
- package/lib/extensible_events_v1/PollEndEvent.d.ts.map +1 -0
- package/lib/extensible_events_v1/PollEndEvent.js +88 -0
- package/lib/extensible_events_v1/PollEndEvent.js.map +1 -0
- package/lib/extensible_events_v1/PollResponseEvent.d.ts +49 -0
- package/lib/extensible_events_v1/PollResponseEvent.d.ts.map +1 -0
- package/lib/extensible_events_v1/PollResponseEvent.js +135 -0
- package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -0
- package/lib/extensible_events_v1/PollStartEvent.d.ts +71 -0
- package/lib/extensible_events_v1/PollStartEvent.d.ts.map +1 -0
- package/lib/extensible_events_v1/PollStartEvent.js +185 -0
- package/lib/extensible_events_v1/PollStartEvent.js.map +1 -0
- package/lib/extensible_events_v1/utilities.d.ts +14 -0
- package/lib/extensible_events_v1/utilities.d.ts.map +1 -0
- package/lib/extensible_events_v1/utilities.js +34 -0
- package/lib/extensible_events_v1/utilities.js.map +1 -0
- package/lib/feature.d.ts +20 -0
- package/lib/feature.d.ts.map +1 -0
- package/lib/feature.js +85 -0
- package/lib/feature.js.map +1 -0
- package/lib/filter-component.d.ts +64 -0
- package/lib/filter-component.d.ts.map +1 -0
- package/lib/filter-component.js +167 -0
- package/lib/filter-component.js.map +1 -0
- package/lib/filter.d.ts +97 -0
- package/lib/filter.d.ts.map +1 -0
- package/lib/filter.js +207 -0
- package/lib/filter.js.map +1 -0
- package/lib/http-api/errors.d.ts +80 -0
- package/lib/http-api/errors.d.ts.map +1 -0
- package/lib/http-api/errors.js +185 -0
- package/lib/http-api/errors.js.map +1 -0
- package/lib/http-api/fetch.d.ts +114 -0
- package/lib/http-api/fetch.d.ts.map +1 -0
- package/lib/http-api/fetch.js +346 -0
- package/lib/http-api/fetch.js.map +1 -0
- package/lib/http-api/index.d.ts +33 -0
- package/lib/http-api/index.d.ts.map +1 -0
- package/lib/http-api/index.js +180 -0
- package/lib/http-api/index.js.map +1 -0
- package/lib/http-api/interface.d.ts +142 -0
- package/lib/http-api/interface.d.ts.map +1 -0
- package/lib/http-api/interface.js +35 -0
- package/lib/http-api/interface.js.map +1 -0
- package/lib/http-api/method.d.ts +10 -0
- package/lib/http-api/method.d.ts.map +1 -0
- package/lib/http-api/method.js +27 -0
- package/lib/http-api/method.js.map +1 -0
- package/lib/http-api/prefix.d.ts +31 -0
- package/lib/http-api/prefix.d.ts.map +1 -0
- package/lib/http-api/prefix.js +32 -0
- package/lib/http-api/prefix.js.map +1 -0
- package/lib/http-api/utils.d.ts +37 -0
- package/lib/http-api/utils.d.ts.map +1 -0
- package/lib/http-api/utils.js +178 -0
- package/lib/http-api/utils.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +24 -0
- package/lib/index.js.map +1 -0
- package/lib/indexeddb-helpers.d.ts +10 -0
- package/lib/indexeddb-helpers.d.ts.map +1 -0
- package/lib/indexeddb-helpers.js +51 -0
- package/lib/indexeddb-helpers.js.map +1 -0
- package/lib/indexeddb-worker.d.ts +7 -0
- package/lib/indexeddb-worker.d.ts.map +1 -0
- package/lib/indexeddb-worker.js +25 -0
- package/lib/indexeddb-worker.js.map +1 -0
- package/lib/interactive-auth.d.ts +337 -0
- package/lib/interactive-auth.d.ts.map +1 -0
- package/lib/interactive-auth.js +557 -0
- package/lib/interactive-auth.js.map +1 -0
- package/lib/logger.d.ts +81 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +139 -0
- package/lib/logger.js.map +1 -0
- package/lib/matrix.d.ts +118 -0
- package/lib/matrix.d.ts.map +1 -0
- package/lib/matrix.js +146 -0
- package/lib/matrix.js.map +1 -0
- package/lib/matrixrtc/CallMembership.d.ts +66 -0
- package/lib/matrixrtc/CallMembership.d.ts.map +1 -0
- package/lib/matrixrtc/CallMembership.js +197 -0
- package/lib/matrixrtc/CallMembership.js.map +1 -0
- package/lib/matrixrtc/LivekitFocus.d.ts +16 -0
- package/lib/matrixrtc/LivekitFocus.d.ts.map +1 -0
- package/lib/matrixrtc/LivekitFocus.js +20 -0
- package/lib/matrixrtc/LivekitFocus.js.map +1 -0
- package/lib/matrixrtc/MatrixRTCSession.d.ts +295 -0
- package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -0
- package/lib/matrixrtc/MatrixRTCSession.js +1043 -0
- package/lib/matrixrtc/MatrixRTCSession.js.map +1 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +40 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +1 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.js +146 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -0
- package/lib/matrixrtc/focus.d.ts +10 -0
- package/lib/matrixrtc/focus.d.ts.map +1 -0
- package/lib/matrixrtc/focus.js +1 -0
- package/lib/matrixrtc/focus.js.map +1 -0
- package/lib/matrixrtc/index.d.ts +7 -0
- package/lib/matrixrtc/index.d.ts.map +1 -0
- package/lib/matrixrtc/index.js +21 -0
- package/lib/matrixrtc/index.js.map +1 -0
- package/lib/matrixrtc/types.d.ts +19 -0
- package/lib/matrixrtc/types.d.ts.map +1 -0
- package/lib/matrixrtc/types.js +1 -0
- package/lib/matrixrtc/types.js.map +1 -0
- package/lib/models/MSC3089Branch.d.ts +98 -0
- package/lib/models/MSC3089Branch.d.ts.map +1 -0
- package/lib/models/MSC3089Branch.js +240 -0
- package/lib/models/MSC3089Branch.js.map +1 -0
- package/lib/models/MSC3089TreeSpace.d.ts +165 -0
- package/lib/models/MSC3089TreeSpace.d.ts.map +1 -0
- package/lib/models/MSC3089TreeSpace.js +520 -0
- package/lib/models/MSC3089TreeSpace.js.map +1 -0
- package/lib/models/ToDeviceMessage.d.ts +17 -0
- package/lib/models/ToDeviceMessage.d.ts.map +1 -0
- package/lib/models/ToDeviceMessage.js +1 -0
- package/lib/models/ToDeviceMessage.js.map +1 -0
- package/lib/models/beacon.d.ts +53 -0
- package/lib/models/beacon.d.ts.map +1 -0
- package/lib/models/beacon.js +174 -0
- package/lib/models/beacon.js.map +1 -0
- package/lib/models/compare-event-ordering.d.ts +24 -0
- package/lib/models/compare-event-ordering.d.ts.map +1 -0
- package/lib/models/compare-event-ordering.js +120 -0
- package/lib/models/compare-event-ordering.js.map +1 -0
- package/lib/models/device.d.ts +45 -0
- package/lib/models/device.d.ts.map +1 -0
- package/lib/models/device.js +77 -0
- package/lib/models/device.js.map +1 -0
- package/lib/models/event-context.d.ts +62 -0
- package/lib/models/event-context.d.ts.map +1 -0
- package/lib/models/event-context.js +113 -0
- package/lib/models/event-context.js.map +1 -0
- package/lib/models/event-status.d.ts +19 -0
- package/lib/models/event-status.d.ts.map +1 -0
- package/lib/models/event-status.js +30 -0
- package/lib/models/event-status.js.map +1 -0
- package/lib/models/event-timeline-set.d.ts +312 -0
- package/lib/models/event-timeline-set.d.ts.map +1 -0
- package/lib/models/event-timeline-set.js +813 -0
- package/lib/models/event-timeline-set.js.map +1 -0
- package/lib/models/event-timeline.d.ts +219 -0
- package/lib/models/event-timeline.d.ts.map +1 -0
- package/lib/models/event-timeline.js +455 -0
- package/lib/models/event-timeline.js.map +1 -0
- package/lib/models/event.d.ts +811 -0
- package/lib/models/event.d.ts.map +1 -0
- package/lib/models/event.js +1520 -0
- package/lib/models/event.js.map +1 -0
- package/lib/models/invites-ignorer.d.ts +136 -0
- package/lib/models/invites-ignorer.d.ts.map +1 -0
- package/lib/models/invites-ignorer.js +382 -0
- package/lib/models/invites-ignorer.js.map +1 -0
- package/lib/models/poll.d.ts +67 -0
- package/lib/models/poll.d.ts.map +1 -0
- package/lib/models/poll.js +241 -0
- package/lib/models/poll.js.map +1 -0
- package/lib/models/profile-keys.d.ts +8 -0
- package/lib/models/profile-keys.d.ts.map +1 -0
- package/lib/models/profile-keys.js +8 -0
- package/lib/models/profile-keys.js.map +1 -0
- package/lib/models/read-receipt.d.ts +115 -0
- package/lib/models/read-receipt.d.ts.map +1 -0
- package/lib/models/read-receipt.js +366 -0
- package/lib/models/read-receipt.js.map +1 -0
- package/lib/models/related-relations.d.ts +11 -0
- package/lib/models/related-relations.d.ts.map +1 -0
- package/lib/models/related-relations.js +33 -0
- package/lib/models/related-relations.js.map +1 -0
- package/lib/models/relations-container.d.ts +44 -0
- package/lib/models/relations-container.d.ts.map +1 -0
- package/lib/models/relations-container.js +132 -0
- package/lib/models/relations-container.js.map +1 -0
- package/lib/models/relations.d.ts +114 -0
- package/lib/models/relations.d.ts.map +1 -0
- package/lib/models/relations.js +354 -0
- package/lib/models/relations.js.map +1 -0
- package/lib/models/room-member.d.ts +204 -0
- package/lib/models/room-member.d.ts.map +1 -0
- package/lib/models/room-member.js +360 -0
- package/lib/models/room-member.js.map +1 -0
- package/lib/models/room-receipts.d.ts +39 -0
- package/lib/models/room-receipts.d.ts.map +1 -0
- package/lib/models/room-receipts.js +392 -0
- package/lib/models/room-receipts.js.map +1 -0
- package/lib/models/room-state.d.ts +468 -0
- package/lib/models/room-state.d.ts.map +1 -0
- package/lib/models/room-state.js +984 -0
- package/lib/models/room-state.js.map +1 -0
- package/lib/models/room-summary.d.ts +29 -0
- package/lib/models/room-summary.d.ts.map +1 -0
- package/lib/models/room-summary.js +28 -0
- package/lib/models/room-summary.js.map +1 -0
- package/lib/models/room.d.ts +1203 -0
- package/lib/models/room.d.ts.map +1 -0
- package/lib/models/room.js +3336 -0
- package/lib/models/room.js.map +1 -0
- package/lib/models/search-result.d.ts +20 -0
- package/lib/models/search-result.d.ts.map +1 -0
- package/lib/models/search-result.js +52 -0
- package/lib/models/search-result.js.map +1 -0
- package/lib/models/thread.d.ts +246 -0
- package/lib/models/thread.d.ts.map +1 -0
- package/lib/models/thread.js +861 -0
- package/lib/models/thread.js.map +1 -0
- package/lib/models/typed-event-emitter.d.ts +157 -0
- package/lib/models/typed-event-emitter.d.ts.map +1 -0
- package/lib/models/typed-event-emitter.js +227 -0
- package/lib/models/typed-event-emitter.js.map +1 -0
- package/lib/models/user.d.ts +195 -0
- package/lib/models/user.d.ts.map +1 -0
- package/lib/models/user.js +218 -0
- package/lib/models/user.js.map +1 -0
- package/lib/oidc/authorize.d.ts +90 -0
- package/lib/oidc/authorize.d.ts.map +1 -0
- package/lib/oidc/authorize.js +278 -0
- package/lib/oidc/authorize.js.map +1 -0
- package/lib/oidc/discovery.d.ts +14 -0
- package/lib/oidc/discovery.d.ts.map +1 -0
- package/lib/oidc/discovery.js +66 -0
- package/lib/oidc/discovery.js.map +1 -0
- package/lib/oidc/error.d.ts +18 -0
- package/lib/oidc/error.d.ts.map +1 -0
- package/lib/oidc/error.js +35 -0
- package/lib/oidc/error.js.map +1 -0
- package/lib/oidc/index.d.ts +17 -0
- package/lib/oidc/index.d.ts.map +1 -0
- package/lib/oidc/index.js +29 -0
- package/lib/oidc/index.js.map +1 -0
- package/lib/oidc/register.d.ts +43 -0
- package/lib/oidc/register.d.ts.map +1 -0
- package/lib/oidc/register.js +96 -0
- package/lib/oidc/register.js.map +1 -0
- package/lib/oidc/tokenRefresher.d.ts +69 -0
- package/lib/oidc/tokenRefresher.d.ts.map +1 -0
- package/lib/oidc/tokenRefresher.js +148 -0
- package/lib/oidc/tokenRefresher.js.map +1 -0
- package/lib/oidc/validate.d.ts +90 -0
- package/lib/oidc/validate.d.ts.map +1 -0
- package/lib/oidc/validate.js +194 -0
- package/lib/oidc/validate.js.map +1 -0
- package/lib/pushprocessor.d.ts +128 -0
- package/lib/pushprocessor.d.ts.map +1 -0
- package/lib/pushprocessor.js +685 -0
- package/lib/pushprocessor.js.map +1 -0
- package/lib/randomstring.d.ts +5 -0
- package/lib/randomstring.d.ts.map +1 -0
- package/lib/randomstring.js +43 -0
- package/lib/randomstring.js.map +1 -0
- package/lib/realtime-callbacks.d.ts +18 -0
- package/lib/realtime-callbacks.d.ts.map +1 -0
- package/lib/realtime-callbacks.js +177 -0
- package/lib/realtime-callbacks.js.map +1 -0
- package/lib/receipt-accumulator.d.ts +51 -0
- package/lib/receipt-accumulator.d.ts.map +1 -0
- package/lib/receipt-accumulator.js +164 -0
- package/lib/receipt-accumulator.js.map +1 -0
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts +112 -0
- package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +1 -0
- package/lib/rendezvous/MSC4108SignInWithQR.js +392 -0
- package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -0
- package/lib/rendezvous/RendezvousChannel.d.ts +27 -0
- package/lib/rendezvous/RendezvousChannel.d.ts.map +1 -0
- package/lib/rendezvous/RendezvousChannel.js +1 -0
- package/lib/rendezvous/RendezvousChannel.js.map +1 -0
- package/lib/rendezvous/RendezvousCode.d.ts +9 -0
- package/lib/rendezvous/RendezvousCode.d.ts.map +1 -0
- package/lib/rendezvous/RendezvousCode.js +1 -0
- package/lib/rendezvous/RendezvousCode.js.map +1 -0
- package/lib/rendezvous/RendezvousError.d.ts +6 -0
- package/lib/rendezvous/RendezvousError.d.ts.map +1 -0
- package/lib/rendezvous/RendezvousError.js +23 -0
- package/lib/rendezvous/RendezvousError.js.map +1 -0
- package/lib/rendezvous/RendezvousFailureReason.d.ts +31 -0
- package/lib/rendezvous/RendezvousFailureReason.d.ts.map +1 -0
- package/lib/rendezvous/RendezvousFailureReason.js +38 -0
- package/lib/rendezvous/RendezvousFailureReason.js.map +1 -0
- package/lib/rendezvous/RendezvousIntent.d.ts +5 -0
- package/lib/rendezvous/RendezvousIntent.d.ts.map +1 -0
- package/lib/rendezvous/RendezvousIntent.js +22 -0
- package/lib/rendezvous/RendezvousIntent.js.map +1 -0
- package/lib/rendezvous/RendezvousTransport.d.ts +36 -0
- package/lib/rendezvous/RendezvousTransport.d.ts.map +1 -0
- package/lib/rendezvous/RendezvousTransport.js +1 -0
- package/lib/rendezvous/RendezvousTransport.js.map +1 -0
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +58 -0
- package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +1 -0
- package/lib/rendezvous/channels/MSC4108SecureChannel.js +246 -0
- package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -0
- package/lib/rendezvous/channels/index.d.ts +2 -0
- package/lib/rendezvous/channels/index.d.ts.map +1 -0
- package/lib/rendezvous/channels/index.js +18 -0
- package/lib/rendezvous/channels/index.js.map +1 -0
- package/lib/rendezvous/index.d.ts +10 -0
- package/lib/rendezvous/index.d.ts.map +1 -0
- package/lib/rendezvous/index.js +23 -0
- package/lib/rendezvous/index.js.map +1 -0
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +61 -0
- package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +1 -0
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js +253 -0
- package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -0
- package/lib/rendezvous/transports/index.d.ts +2 -0
- package/lib/rendezvous/transports/index.d.ts.map +1 -0
- package/lib/rendezvous/transports/index.js +18 -0
- package/lib/rendezvous/transports/index.js.map +1 -0
- package/lib/room-hierarchy.d.ts +35 -0
- package/lib/room-hierarchy.d.ts.map +1 -0
- package/lib/room-hierarchy.js +136 -0
- package/lib/room-hierarchy.js.map +1 -0
- package/lib/rust-crypto/CrossSigningIdentity.d.ts +33 -0
- package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +1 -0
- package/lib/rust-crypto/CrossSigningIdentity.js +157 -0
- package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -0
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts +98 -0
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +1 -0
- package/lib/rust-crypto/DehydratedDeviceManager.js +285 -0
- package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -0
- package/lib/rust-crypto/KeyClaimManager.d.ts +33 -0
- package/lib/rust-crypto/KeyClaimManager.d.ts.map +1 -0
- package/lib/rust-crypto/KeyClaimManager.js +82 -0
- package/lib/rust-crypto/KeyClaimManager.js.map +1 -0
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +43 -0
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +1 -0
- package/lib/rust-crypto/OutgoingRequestProcessor.js +195 -0
- package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -0
- package/lib/rust-crypto/OutgoingRequestsManager.d.ts +47 -0
- package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +1 -0
- package/lib/rust-crypto/OutgoingRequestsManager.js +148 -0
- package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -0
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +120 -0
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +1 -0
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +467 -0
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -0
- package/lib/rust-crypto/RoomEncryptor.d.ts +98 -0
- package/lib/rust-crypto/RoomEncryptor.d.ts.map +1 -0
- package/lib/rust-crypto/RoomEncryptor.js +299 -0
- package/lib/rust-crypto/RoomEncryptor.js.map +1 -0
- package/lib/rust-crypto/backup.d.ts +254 -0
- package/lib/rust-crypto/backup.d.ts.map +1 -0
- package/lib/rust-crypto/backup.js +837 -0
- package/lib/rust-crypto/backup.js.map +1 -0
- package/lib/rust-crypto/constants.d.ts +3 -0
- package/lib/rust-crypto/constants.d.ts.map +1 -0
- package/lib/rust-crypto/constants.js +19 -0
- package/lib/rust-crypto/constants.js.map +1 -0
- package/lib/rust-crypto/device-converter.d.ts +28 -0
- package/lib/rust-crypto/device-converter.d.ts.map +1 -0
- package/lib/rust-crypto/device-converter.js +123 -0
- package/lib/rust-crypto/device-converter.js.map +1 -0
- package/lib/rust-crypto/index.d.ts +61 -0
- package/lib/rust-crypto/index.d.ts.map +1 -0
- package/lib/rust-crypto/index.js +152 -0
- package/lib/rust-crypto/index.js.map +1 -0
- package/lib/rust-crypto/libolm_migration.d.ts +81 -0
- package/lib/rust-crypto/libolm_migration.d.ts.map +1 -0
- package/lib/rust-crypto/libolm_migration.js +459 -0
- package/lib/rust-crypto/libolm_migration.js.map +1 -0
- package/lib/rust-crypto/rust-crypto.d.ts +556 -0
- package/lib/rust-crypto/rust-crypto.d.ts.map +1 -0
- package/lib/rust-crypto/rust-crypto.js +2016 -0
- package/lib/rust-crypto/rust-crypto.js.map +1 -0
- package/lib/rust-crypto/secret-storage.d.ts +22 -0
- package/lib/rust-crypto/secret-storage.d.ts.map +1 -0
- package/lib/rust-crypto/secret-storage.js +63 -0
- package/lib/rust-crypto/secret-storage.js.map +1 -0
- package/lib/rust-crypto/verification.d.ts +319 -0
- package/lib/rust-crypto/verification.d.ts.map +1 -0
- package/lib/rust-crypto/verification.js +816 -0
- package/lib/rust-crypto/verification.js.map +1 -0
- package/lib/scheduler.d.ts +132 -0
- package/lib/scheduler.d.ts.map +1 -0
- package/lib/scheduler.js +259 -0
- package/lib/scheduler.js.map +1 -0
- package/lib/secret-storage.d.ts +370 -0
- package/lib/secret-storage.d.ts.map +1 -0
- package/lib/secret-storage.js +466 -0
- package/lib/secret-storage.js.map +1 -0
- package/lib/serverCapabilities.d.ts +72 -0
- package/lib/serverCapabilities.d.ts.map +1 -0
- package/lib/serverCapabilities.js +105 -0
- package/lib/serverCapabilities.js.map +1 -0
- package/lib/service-types.d.ts +5 -0
- package/lib/service-types.d.ts.map +1 -0
- package/lib/service-types.js +22 -0
- package/lib/service-types.js.map +1 -0
- package/lib/sliding-sync-sdk.d.ts +107 -0
- package/lib/sliding-sync-sdk.d.ts.map +1 -0
- package/lib/sliding-sync-sdk.js +903 -0
- package/lib/sliding-sync-sdk.js.map +1 -0
- package/lib/sliding-sync.d.ts +343 -0
- package/lib/sliding-sync.d.ts.map +1 -0
- package/lib/sliding-sync.js +817 -0
- package/lib/sliding-sync.js.map +1 -0
- package/lib/store/index.d.ts +201 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/store/index.js +1 -0
- package/lib/store/index.js.map +1 -0
- package/lib/store/indexeddb-backend.d.ts +24 -0
- package/lib/store/indexeddb-backend.d.ts.map +1 -0
- package/lib/store/indexeddb-backend.js +1 -0
- package/lib/store/indexeddb-backend.js.map +1 -0
- package/lib/store/indexeddb-local-backend.d.ts +129 -0
- package/lib/store/indexeddb-local-backend.d.ts.map +1 -0
- package/lib/store/indexeddb-local-backend.js +597 -0
- package/lib/store/indexeddb-local-backend.js.map +1 -0
- package/lib/store/indexeddb-remote-backend.d.ts +79 -0
- package/lib/store/indexeddb-remote-backend.d.ts.map +1 -0
- package/lib/store/indexeddb-remote-backend.js +210 -0
- package/lib/store/indexeddb-remote-backend.js.map +1 -0
- package/lib/store/indexeddb-store-worker.d.ts +35 -0
- package/lib/store/indexeddb-store-worker.d.ts.map +1 -0
- package/lib/store/indexeddb-store-worker.js +146 -0
- package/lib/store/indexeddb-store-worker.js.map +1 -0
- package/lib/store/indexeddb.d.ts +142 -0
- package/lib/store/indexeddb.d.ts.map +1 -0
- package/lib/store/indexeddb.js +347 -0
- package/lib/store/indexeddb.js.map +1 -0
- package/lib/store/local-storage-events-emitter.d.ts +30 -0
- package/lib/store/local-storage-events-emitter.d.ts.map +1 -0
- package/lib/store/local-storage-events-emitter.js +37 -0
- package/lib/store/local-storage-events-emitter.js.map +1 -0
- package/lib/store/memory.d.ts +209 -0
- package/lib/store/memory.d.ts.map +1 -0
- package/lib/store/memory.js +432 -0
- package/lib/store/memory.js.map +1 -0
- package/lib/store/stub.d.ts +161 -0
- package/lib/store/stub.d.ts.map +1 -0
- package/lib/store/stub.js +268 -0
- package/lib/store/stub.js.map +1 -0
- package/lib/sync-accumulator.d.ts +172 -0
- package/lib/sync-accumulator.d.ts.map +1 -0
- package/lib/sync-accumulator.js +532 -0
- package/lib/sync-accumulator.js.map +1 -0
- package/lib/sync.d.ts +260 -0
- package/lib/sync.d.ts.map +1 -0
- package/lib/sync.js +1686 -0
- package/lib/sync.js.map +1 -0
- package/lib/testing.d.ts +81 -0
- package/lib/testing.d.ts.map +1 -0
- package/lib/testing.js +162 -0
- package/lib/testing.js.map +1 -0
- package/lib/thread-utils.d.ts +10 -0
- package/lib/thread-utils.d.ts.map +1 -0
- package/lib/thread-utils.js +31 -0
- package/lib/thread-utils.js.map +1 -0
- package/lib/timeline-window.d.ts +168 -0
- package/lib/timeline-window.d.ts.map +1 -0
- package/lib/timeline-window.js +494 -0
- package/lib/timeline-window.js.map +1 -0
- package/lib/types.d.ts +33 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +33 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/decryptAESSecretStorageItem.d.ts +12 -0
- package/lib/utils/decryptAESSecretStorageItem.d.ts.map +1 -0
- package/lib/utils/decryptAESSecretStorageItem.js +50 -0
- package/lib/utils/decryptAESSecretStorageItem.js.map +1 -0
- package/lib/utils/encryptAESSecretStorageItem.d.ts +16 -0
- package/lib/utils/encryptAESSecretStorageItem.d.ts.map +1 -0
- package/lib/utils/encryptAESSecretStorageItem.js +68 -0
- package/lib/utils/encryptAESSecretStorageItem.js.map +1 -0
- package/lib/utils/internal/deriveKeys.d.ts +10 -0
- package/lib/utils/internal/deriveKeys.d.ts.map +1 -0
- package/lib/utils/internal/deriveKeys.js +60 -0
- package/lib/utils/internal/deriveKeys.js.map +1 -0
- package/lib/utils.d.ts +267 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +749 -0
- package/lib/utils.js.map +1 -0
- package/lib/version-support.d.ts +19 -0
- package/lib/version-support.d.ts.map +1 -0
- package/lib/version-support.js +37 -0
- package/lib/version-support.js.map +1 -0
- package/lib/webrtc/audioContext.d.ts +15 -0
- package/lib/webrtc/audioContext.d.ts.map +1 -0
- package/lib/webrtc/audioContext.js +46 -0
- package/lib/webrtc/audioContext.js.map +1 -0
- package/lib/webrtc/call.d.ts +560 -0
- package/lib/webrtc/call.d.ts.map +1 -0
- package/lib/webrtc/call.js +2541 -0
- package/lib/webrtc/call.js.map +1 -0
- package/lib/webrtc/callEventHandler.d.ts +37 -0
- package/lib/webrtc/callEventHandler.d.ts.map +1 -0
- package/lib/webrtc/callEventHandler.js +344 -0
- package/lib/webrtc/callEventHandler.js.map +1 -0
- package/lib/webrtc/callEventTypes.d.ts +73 -0
- package/lib/webrtc/callEventTypes.d.ts.map +1 -0
- package/lib/webrtc/callEventTypes.js +13 -0
- package/lib/webrtc/callEventTypes.js.map +1 -0
- package/lib/webrtc/callFeed.d.ts +128 -0
- package/lib/webrtc/callFeed.d.ts.map +1 -0
- package/lib/webrtc/callFeed.js +289 -0
- package/lib/webrtc/callFeed.js.map +1 -0
- package/lib/webrtc/groupCall.d.ts +323 -0
- package/lib/webrtc/groupCall.d.ts.map +1 -0
- package/lib/webrtc/groupCall.js +1337 -0
- package/lib/webrtc/groupCall.js.map +1 -0
- package/lib/webrtc/groupCallEventHandler.d.ts +31 -0
- package/lib/webrtc/groupCallEventHandler.d.ts.map +1 -0
- package/lib/webrtc/groupCallEventHandler.js +178 -0
- package/lib/webrtc/groupCallEventHandler.js.map +1 -0
- package/lib/webrtc/mediaHandler.d.ts +89 -0
- package/lib/webrtc/mediaHandler.d.ts.map +1 -0
- package/lib/webrtc/mediaHandler.js +437 -0
- package/lib/webrtc/mediaHandler.js.map +1 -0
- package/lib/webrtc/stats/callFeedStatsReporter.d.ts +8 -0
- package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +1 -0
- package/lib/webrtc/stats/callFeedStatsReporter.js +82 -0
- package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -0
- package/lib/webrtc/stats/callStatsReportGatherer.d.ts +25 -0
- package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +1 -0
- package/lib/webrtc/stats/callStatsReportGatherer.js +199 -0
- package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -0
- package/lib/webrtc/stats/callStatsReportSummary.d.ts +17 -0
- package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +1 -0
- package/lib/webrtc/stats/callStatsReportSummary.js +1 -0
- package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -0
- package/lib/webrtc/stats/connectionStats.d.ts +28 -0
- package/lib/webrtc/stats/connectionStats.d.ts.map +1 -0
- package/lib/webrtc/stats/connectionStats.js +26 -0
- package/lib/webrtc/stats/connectionStats.js.map +1 -0
- package/lib/webrtc/stats/connectionStatsBuilder.d.ts +5 -0
- package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +1 -0
- package/lib/webrtc/stats/connectionStatsBuilder.js +27 -0
- package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -0
- package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +7 -0
- package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +1 -0
- package/lib/webrtc/stats/connectionStatsReportBuilder.js +121 -0
- package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -0
- package/lib/webrtc/stats/groupCallStats.d.ts +22 -0
- package/lib/webrtc/stats/groupCallStats.d.ts.map +1 -0
- package/lib/webrtc/stats/groupCallStats.js +78 -0
- package/lib/webrtc/stats/groupCallStats.js.map +1 -0
- package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +10 -0
- package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +1 -0
- package/lib/webrtc/stats/media/mediaSsrcHandler.js +57 -0
- package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -0
- package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +12 -0
- package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +1 -0
- package/lib/webrtc/stats/media/mediaTrackHandler.js +62 -0
- package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -0
- package/lib/webrtc/stats/media/mediaTrackStats.d.ts +86 -0
- package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +1 -0
- package/lib/webrtc/stats/media/mediaTrackStats.js +142 -0
- package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -0
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +22 -0
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +1 -0
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +76 -0
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -0
- package/lib/webrtc/stats/statsReport.d.ts +99 -0
- package/lib/webrtc/stats/statsReport.d.ts.map +1 -0
- package/lib/webrtc/stats/statsReport.js +32 -0
- package/lib/webrtc/stats/statsReport.js.map +1 -0
- package/lib/webrtc/stats/statsReportEmitter.d.ts +15 -0
- package/lib/webrtc/stats/statsReportEmitter.d.ts.map +1 -0
- package/lib/webrtc/stats/statsReportEmitter.js +33 -0
- package/lib/webrtc/stats/statsReportEmitter.js.map +1 -0
- package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +16 -0
- package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +1 -0
- package/lib/webrtc/stats/summaryStatsReportGatherer.js +116 -0
- package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -0
- package/lib/webrtc/stats/trackStatsBuilder.d.ts +19 -0
- package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +1 -0
- package/lib/webrtc/stats/trackStatsBuilder.js +168 -0
- package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -0
- package/lib/webrtc/stats/transportStats.d.ts +11 -0
- package/lib/webrtc/stats/transportStats.d.ts.map +1 -0
- package/lib/webrtc/stats/transportStats.js +1 -0
- package/lib/webrtc/stats/transportStats.js.map +1 -0
- package/lib/webrtc/stats/transportStatsBuilder.d.ts +5 -0
- package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +1 -0
- package/lib/webrtc/stats/transportStatsBuilder.js +34 -0
- package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -0
- package/lib/webrtc/stats/valueFormatter.d.ts +4 -0
- package/lib/webrtc/stats/valueFormatter.d.ts.map +1 -0
- package/lib/webrtc/stats/valueFormatter.js +25 -0
- package/lib/webrtc/stats/valueFormatter.js.map +1 -0
- package/package.json +134 -0
- package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -0
- package/src/@types/IIdentityServerProvider.ts +24 -0
- package/src/@types/PushRules.ts +209 -0
- package/src/@types/another-json.d.ts +19 -0
- package/src/@types/auth.ts +252 -0
- package/src/@types/beacon.ts +140 -0
- package/src/@types/common.ts +22 -0
- package/src/@types/crypto.ts +73 -0
- package/src/@types/event.ts +370 -0
- package/src/@types/events.ts +119 -0
- package/src/@types/extensible_events.ts +150 -0
- package/src/@types/global.d.ts +70 -0
- package/src/@types/local_notifications.ts +19 -0
- package/src/@types/location.ts +92 -0
- package/src/@types/matrix-sdk-crypto-wasm.d.ts +44 -0
- package/src/@types/media.ts +245 -0
- package/src/@types/membership.ts +57 -0
- package/src/@types/oidc-client-ts.d.ts +24 -0
- package/src/@types/partials.ts +67 -0
- package/src/@types/polls.ts +119 -0
- package/src/@types/read_receipts.ts +61 -0
- package/src/@types/registration.ts +102 -0
- package/src/@types/requests.ts +314 -0
- package/src/@types/search.ts +119 -0
- package/src/@types/signed.ts +25 -0
- package/src/@types/spaces.ts +37 -0
- package/src/@types/state_events.ts +147 -0
- package/src/@types/synapse.ts +40 -0
- package/src/@types/sync.ts +27 -0
- package/src/@types/threepids.ts +29 -0
- package/src/@types/topic.ts +63 -0
- package/src/@types/uia.ts +29 -0
- package/src/NamespacedValue.ts +123 -0
- package/src/ReEmitter.ts +93 -0
- package/src/ToDeviceMessageQueue.ts +153 -0
- package/src/autodiscovery.ts +505 -0
- package/src/base64.ts +88 -0
- package/src/browser-index.ts +44 -0
- package/src/client.ts +10474 -0
- package/src/common-crypto/CryptoBackend.ts +302 -0
- package/src/common-crypto/README.md +4 -0
- package/src/common-crypto/key-passphrase.ts +43 -0
- package/src/content-helpers.ts +288 -0
- package/src/content-repo.ts +117 -0
- package/src/crypto/CrossSigning.ts +773 -0
- package/src/crypto/DeviceList.ts +989 -0
- package/src/crypto/EncryptionSetup.ts +351 -0
- package/src/crypto/OlmDevice.ts +1500 -0
- package/src/crypto/OutgoingRoomKeyRequestManager.ts +485 -0
- package/src/crypto/RoomList.ts +70 -0
- package/src/crypto/SecretSharing.ts +240 -0
- package/src/crypto/SecretStorage.ts +136 -0
- package/src/crypto/aes.ts +23 -0
- package/src/crypto/algorithms/base.ts +236 -0
- package/src/crypto/algorithms/index.ts +20 -0
- package/src/crypto/algorithms/megolm.ts +2216 -0
- package/src/crypto/algorithms/olm.ts +381 -0
- package/src/crypto/api.ts +70 -0
- package/src/crypto/backup.ts +922 -0
- package/src/crypto/crypto.ts +18 -0
- package/src/crypto/dehydration.ts +272 -0
- package/src/crypto/device-converter.ts +45 -0
- package/src/crypto/deviceinfo.ts +158 -0
- package/src/crypto/index.ts +4414 -0
- package/src/crypto/key_passphrase.ts +42 -0
- package/src/crypto/keybackup.ts +47 -0
- package/src/crypto/olmlib.ts +539 -0
- package/src/crypto/recoverykey.ts +18 -0
- package/src/crypto/store/base.ts +348 -0
- package/src/crypto/store/indexeddb-crypto-store-backend.ts +1250 -0
- package/src/crypto/store/indexeddb-crypto-store.ts +845 -0
- package/src/crypto/store/localStorage-crypto-store.ts +579 -0
- package/src/crypto/store/memory-crypto-store.ts +680 -0
- package/src/crypto/verification/Base.ts +409 -0
- package/src/crypto/verification/Error.ts +76 -0
- package/src/crypto/verification/IllegalMethod.ts +50 -0
- package/src/crypto/verification/QRCode.ts +310 -0
- package/src/crypto/verification/SAS.ts +494 -0
- package/src/crypto/verification/SASDecimal.ts +37 -0
- package/src/crypto/verification/request/Channel.ts +34 -0
- package/src/crypto/verification/request/InRoomChannel.ts +371 -0
- package/src/crypto/verification/request/ToDeviceChannel.ts +354 -0
- package/src/crypto/verification/request/VerificationRequest.ts +976 -0
- package/src/crypto-api/CryptoEvent.ts +93 -0
- package/src/crypto-api/CryptoEventHandlerMap.ts +32 -0
- package/src/crypto-api/index.ts +1175 -0
- package/src/crypto-api/key-passphrase.ts +58 -0
- package/src/crypto-api/keybackup.ts +115 -0
- package/src/crypto-api/recovery-key.ts +69 -0
- package/src/crypto-api/verification.ts +408 -0
- package/src/digest.ts +34 -0
- package/src/embedded.ts +631 -0
- package/src/errors.ts +54 -0
- package/src/event-mapper.ts +97 -0
- package/src/extensible_events_v1/ExtensibleEvent.ts +58 -0
- package/src/extensible_events_v1/InvalidEventError.ts +24 -0
- package/src/extensible_events_v1/MessageEvent.ts +145 -0
- package/src/extensible_events_v1/PollEndEvent.ts +97 -0
- package/src/extensible_events_v1/PollResponseEvent.ts +148 -0
- package/src/extensible_events_v1/PollStartEvent.ts +207 -0
- package/src/extensible_events_v1/utilities.ts +35 -0
- package/src/feature.ts +87 -0
- package/src/filter-component.ts +207 -0
- package/src/filter.ts +245 -0
- package/src/http-api/errors.ts +199 -0
- package/src/http-api/fetch.ts +383 -0
- package/src/http-api/index.ts +191 -0
- package/src/http-api/interface.ts +178 -0
- package/src/http-api/method.ts +25 -0
- package/src/http-api/prefix.ts +48 -0
- package/src/http-api/utils.ts +200 -0
- package/src/index.ts +25 -0
- package/src/indexeddb-helpers.ts +50 -0
- package/src/indexeddb-worker.ts +24 -0
- package/src/interactive-auth.ts +694 -0
- package/src/logger.ts +185 -0
- package/src/matrix.ts +177 -0
- package/src/matrixrtc/CallMembership.ts +247 -0
- package/src/matrixrtc/LivekitFocus.ts +39 -0
- package/src/matrixrtc/MatrixRTCSession.ts +1319 -0
- package/src/matrixrtc/MatrixRTCSessionManager.ts +166 -0
- package/src/matrixrtc/focus.ts +25 -0
- package/src/matrixrtc/index.ts +22 -0
- package/src/matrixrtc/types.ts +36 -0
- package/src/models/MSC3089Branch.ts +272 -0
- package/src/models/MSC3089TreeSpace.ts +565 -0
- package/src/models/ToDeviceMessage.ts +38 -0
- package/src/models/beacon.ts +214 -0
- package/src/models/compare-event-ordering.ts +139 -0
- package/src/models/device.ts +85 -0
- package/src/models/event-context.ts +110 -0
- package/src/models/event-status.ts +39 -0
- package/src/models/event-timeline-set.ts +979 -0
- package/src/models/event-timeline.ts +476 -0
- package/src/models/event.ts +1751 -0
- package/src/models/invites-ignorer.ts +376 -0
- package/src/models/poll.ts +285 -0
- package/src/models/profile-keys.ts +7 -0
- package/src/models/read-receipt.ts +422 -0
- package/src/models/related-relations.ts +39 -0
- package/src/models/relations-container.ts +149 -0
- package/src/models/relations.ts +368 -0
- package/src/models/room-member.ts +457 -0
- package/src/models/room-receipts.ts +439 -0
- package/src/models/room-state.ts +1130 -0
- package/src/models/room-summary.ts +47 -0
- package/src/models/room.ts +3822 -0
- package/src/models/search-result.ts +57 -0
- package/src/models/thread.ts +923 -0
- package/src/models/typed-event-emitter.ts +246 -0
- package/src/models/user.ts +302 -0
- package/src/oidc/authorize.ts +274 -0
- package/src/oidc/discovery.ts +60 -0
- package/src/oidc/error.ts +33 -0
- package/src/oidc/index.ts +34 -0
- package/src/oidc/register.ts +123 -0
- package/src/oidc/tokenRefresher.ts +149 -0
- package/src/oidc/validate.ts +282 -0
- package/src/pushprocessor.ts +837 -0
- package/src/randomstring.ts +51 -0
- package/src/realtime-callbacks.ts +191 -0
- package/src/receipt-accumulator.ts +189 -0
- package/src/rendezvous/MSC4108SignInWithQR.ts +444 -0
- package/src/rendezvous/RendezvousChannel.ts +48 -0
- package/src/rendezvous/RendezvousCode.ts +25 -0
- package/src/rendezvous/RendezvousError.ts +26 -0
- package/src/rendezvous/RendezvousFailureReason.ts +49 -0
- package/src/rendezvous/RendezvousIntent.ts +20 -0
- package/src/rendezvous/RendezvousTransport.ts +58 -0
- package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -0
- package/src/rendezvous/channels/index.ts +17 -0
- package/src/rendezvous/index.ts +25 -0
- package/src/rendezvous/transports/MSC4108RendezvousSession.ts +270 -0
- package/src/rendezvous/transports/index.ts +17 -0
- package/src/room-hierarchy.ts +152 -0
- package/src/rust-crypto/CrossSigningIdentity.ts +183 -0
- package/src/rust-crypto/DehydratedDeviceManager.ts +306 -0
- package/src/rust-crypto/KeyClaimManager.ts +86 -0
- package/src/rust-crypto/OutgoingRequestProcessor.ts +236 -0
- package/src/rust-crypto/OutgoingRequestsManager.ts +143 -0
- package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +501 -0
- package/src/rust-crypto/RoomEncryptor.ts +352 -0
- package/src/rust-crypto/backup.ts +881 -0
- package/src/rust-crypto/constants.ts +18 -0
- package/src/rust-crypto/device-converter.ts +128 -0
- package/src/rust-crypto/index.ts +237 -0
- package/src/rust-crypto/libolm_migration.ts +530 -0
- package/src/rust-crypto/rust-crypto.ts +2205 -0
- package/src/rust-crypto/secret-storage.ts +60 -0
- package/src/rust-crypto/verification.ts +830 -0
- package/src/scheduler.ts +309 -0
- package/src/secret-storage.ts +693 -0
- package/src/serverCapabilities.ts +139 -0
- package/src/service-types.ts +20 -0
- package/src/sliding-sync-sdk.ts +1026 -0
- package/src/sliding-sync.ts +965 -0
- package/src/store/index.ts +261 -0
- package/src/store/indexeddb-backend.ts +41 -0
- package/src/store/indexeddb-local-backend.ts +610 -0
- package/src/store/indexeddb-remote-backend.ts +213 -0
- package/src/store/indexeddb-store-worker.ts +157 -0
- package/src/store/indexeddb.ts +397 -0
- package/src/store/local-storage-events-emitter.ts +46 -0
- package/src/store/memory.ts +448 -0
- package/src/store/stub.ts +280 -0
- package/src/sync-accumulator.ts +689 -0
- package/src/sync.ts +1920 -0
- package/src/testing.ts +191 -0
- package/src/thread-utils.ts +31 -0
- package/src/timeline-window.ts +536 -0
- package/src/types.ts +59 -0
- package/src/utils/decryptAESSecretStorageItem.ts +54 -0
- package/src/utils/encryptAESSecretStorageItem.ts +73 -0
- package/src/utils/internal/deriveKeys.ts +63 -0
- package/src/utils.ts +763 -0
- package/src/version-support.ts +36 -0
- package/src/webrtc/audioContext.ts +44 -0
- package/src/webrtc/call.ts +3074 -0
- package/src/webrtc/callEventHandler.ts +425 -0
- package/src/webrtc/callEventTypes.ts +93 -0
- package/src/webrtc/callFeed.ts +364 -0
- package/src/webrtc/groupCall.ts +1735 -0
- package/src/webrtc/groupCallEventHandler.ts +234 -0
- package/src/webrtc/mediaHandler.ts +484 -0
- package/src/webrtc/stats/callFeedStatsReporter.ts +94 -0
- package/src/webrtc/stats/callStatsReportGatherer.ts +219 -0
- package/src/webrtc/stats/callStatsReportSummary.ts +30 -0
- package/src/webrtc/stats/connectionStats.ts +47 -0
- package/src/webrtc/stats/connectionStatsBuilder.ts +28 -0
- package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -0
- package/src/webrtc/stats/groupCallStats.ts +93 -0
- package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -0
- package/src/webrtc/stats/media/mediaTrackHandler.ts +76 -0
- package/src/webrtc/stats/media/mediaTrackStats.ts +176 -0
- package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -0
- package/src/webrtc/stats/statsReport.ts +133 -0
- package/src/webrtc/stats/statsReportEmitter.ts +49 -0
- package/src/webrtc/stats/summaryStatsReportGatherer.ts +148 -0
- package/src/webrtc/stats/trackStatsBuilder.ts +207 -0
- package/src/webrtc/stats/transportStats.ts +26 -0
- package/src/webrtc/stats/transportStatsBuilder.ts +48 -0
- package/src/webrtc/stats/valueFormatter.ts +27 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"verification.js","names":["RustSdkCryptoJs","QrState","VerificationPhase","VerificationRequestEvent","VerifierEvent","TypedEventEmitter","TypedReEmitter","EventType","MsgType","defer","VerificationMethod","RustVerificationRequest","constructor","olmMachine","inner","outgoingRequestProcessor","supportedVerificationMethods","_defineProperty","reEmitter","weakThis","WeakRef","registerChangesCallback","_asyncToGenerator","_weakThis$deref","deref","onChange","verification","getVerification","Sas","_verifier","undefined","RustQrCodeVerifier","setVerifier","RustSASVerifier","replaceInner","Qr","emit","Change","verifier","stopReEmitting","reEmit","transactionId","flowId","roomId","_this$inner$roomId","toString","initiatedByMe","weStarted","otherUserId","otherDeviceId","_this$inner$otherDevi","getOtherDevice","_this","getDevice","isSelfVerification","phase","VerificationRequestPhase","Created","Requested","Ready","_accepting","Transitioned","Error","verificationPhase","Done","Cancelled","concat","pending","isPassive","accepting","declining","_cancelling","timeout","timeRemainingMillis","methods","chosenMethod","Started","Reciprocate","otherPartySupportsMethod","method","theirMethods","theirSupportedMethods","requiredMethod","verificationMethodsByIdentifier","some","m","accept","_this2","req","acceptWithMethods","map","verificationMethodIdentifierToMethod","makeOutgoingRequest","cancel","params","_this3","beginKeyVerification","targetDevice","startVerification","_this4","res","startSas","scanQRCode","uint8Array","_this5","scan","QrCodeScan","fromBytes","Uint8ClampedArray","scanQrCode","reciprocate","getQRCodeBytes","generateQRCode","_this6","innerVerifier","generateQrCode","Buffer","from","toBytes","cancellationCode","_this$inner$cancelInf","_this$inner$cancelInf2","cancelInfo","cancelCode","cancellingUserId","cancelledbyUs","userId","BaseRustVerifer","completionDeferred","_weakThis$deref2","promise","catch","isDone","resolve","isCancelled","reject","reason","hasBeenCancelled","e","getShowSasCallbacks","getReciprocateQrCodeCallbacks","callbacks","hasBeenScanned","confirm","confirmScanning","verify","_this7","ShowReciprocateQr","state","Scanned","Confirmed","Reciprocated","_this8","_verificationRequest","_this9","sendAccept","_this10","_this11","emoji","decimal","decimals","sas","symbol","description","_confirm","requests","apply","arguments","mismatch","request","cancelWithCode","ShowSas","_weakThis$deref3","SasV1","ScanQrCode","QrCodeScanV1","ShowQrCode","QrCodeShowV1","ReciprocateV1","meth","isVerificationEvent","event","getType","KeyVerificationCancel","KeyVerificationDone","KeyVerificationMac","KeyVerificationStart","KeyVerificationKey","KeyVerificationReady","KeyVerificationAccept","RoomMessage","getContent","msgtype","KeyVerificationRequest"],"sources":["../../src/rust-crypto/verification.ts"],"sourcesContent":["/*\nCopyright 2023 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as RustSdkCryptoJs from \"@matrix-org/matrix-sdk-crypto-wasm\";\nimport { QrState } from \"@matrix-org/matrix-sdk-crypto-wasm\";\n\nimport {\n GeneratedSas,\n ShowQrCodeCallbacks,\n ShowSasCallbacks,\n VerificationPhase,\n VerificationRequest,\n VerificationRequestEvent,\n VerificationRequestEventHandlerMap,\n Verifier,\n VerifierEvent,\n VerifierEventHandlerMap,\n} from \"../crypto-api/verification.ts\";\nimport { TypedEventEmitter } from \"../models/typed-event-emitter.ts\";\nimport { OutgoingRequest, OutgoingRequestProcessor } from \"./OutgoingRequestProcessor.ts\";\nimport { TypedReEmitter } from \"../ReEmitter.ts\";\nimport { MatrixEvent } from \"../models/event.ts\";\nimport { EventType, MsgType } from \"../@types/event.ts\";\nimport { defer, IDeferred } from \"../utils.ts\";\nimport { VerificationMethod } from \"../types.ts\";\n\n/**\n * An incoming, or outgoing, request to verify a user or a device via cross-signing.\n *\n * @internal\n */\nexport class RustVerificationRequest\n extends TypedEventEmitter<VerificationRequestEvent, VerificationRequestEventHandlerMap>\n implements VerificationRequest\n{\n /** a reëmitter which relays VerificationRequestEvent.Changed events emitted by the verifier */\n private readonly reEmitter: TypedReEmitter<VerificationRequestEvent, VerificationRequestEventHandlerMap>;\n\n /** Are we in the process of sending an `m.key.verification.ready` event? */\n private _accepting = false;\n\n /** Are we in the process of sending an `m.key.verification.cancellation` event? */\n private _cancelling = false;\n\n private _verifier: undefined | RustSASVerifier | RustQrCodeVerifier;\n\n /**\n * Construct a new RustVerificationRequest to wrap the rust-level `VerificationRequest`.\n *\n * @param olmMachine - The `OlmMachine` from the underlying rust crypto sdk.\n * @param inner - VerificationRequest from the Rust SDK.\n * @param outgoingRequestProcessor - `OutgoingRequestProcessor` to use for making outgoing HTTP requests.\n * @param supportedVerificationMethods - Verification methods to use when `accept()` is called.\n */\n public constructor(\n private readonly olmMachine: RustSdkCryptoJs.OlmMachine,\n private readonly inner: RustSdkCryptoJs.VerificationRequest,\n private readonly outgoingRequestProcessor: OutgoingRequestProcessor,\n private readonly supportedVerificationMethods: string[],\n ) {\n super();\n this.reEmitter = new TypedReEmitter(this);\n\n // Obviously, the Rust object maintains a reference to the callback function. If the callback function maintains\n // a reference to the Rust object, then we have a reference cycle which means that `RustVerificationRequest`\n // will never be garbage-collected, and hence the underlying rust object will never be freed.\n //\n // To avoid this reference cycle, use a weak reference in the callback function. If the `RustVerificationRequest`\n // gets garbage-collected, then there is nothing to update!\n const weakThis = new WeakRef(this);\n inner.registerChangesCallback(async () => weakThis.deref()?.onChange());\n }\n\n /**\n * Hook which is called when the underlying rust class notifies us that there has been a change.\n */\n private onChange(): void {\n const verification: RustSdkCryptoJs.Qr | RustSdkCryptoJs.Sas | undefined = this.inner.getVerification();\n\n // Set the _verifier object (wrapping the rust `Verification` as a js-sdk Verifier) if:\n // - we now have a `Verification` where we lacked one before\n // - we have transitioned from QR to SAS\n // - we are verifying with SAS, but we need to replace our verifier with a new one because both parties\n // tried to start verification at the same time, and we lost the tie breaking\n if (verification instanceof RustSdkCryptoJs.Sas) {\n if (this._verifier === undefined || this._verifier instanceof RustQrCodeVerifier) {\n this.setVerifier(new RustSASVerifier(verification, this, this.outgoingRequestProcessor));\n } else if (this._verifier instanceof RustSASVerifier) {\n this._verifier.replaceInner(verification);\n }\n } else if (verification instanceof RustSdkCryptoJs.Qr && this._verifier === undefined) {\n this.setVerifier(new RustQrCodeVerifier(verification, this.outgoingRequestProcessor));\n }\n\n this.emit(VerificationRequestEvent.Change);\n }\n\n private setVerifier(verifier: RustSASVerifier | RustQrCodeVerifier): void {\n // if we already have a verifier, unsubscribe from its events\n if (this._verifier) {\n this.reEmitter.stopReEmitting(this._verifier, [VerificationRequestEvent.Change]);\n }\n this._verifier = verifier;\n this.reEmitter.reEmit(this._verifier, [VerificationRequestEvent.Change]);\n }\n\n /**\n * Unique ID for this verification request.\n *\n * An ID isn't assigned until the first message is sent, so this may be `undefined` in the early phases.\n */\n public get transactionId(): string | undefined {\n return this.inner.flowId;\n }\n\n /**\n * For an in-room verification, the ID of the room.\n *\n * For to-device verifications, `undefined`.\n */\n public get roomId(): string | undefined {\n return this.inner.roomId?.toString();\n }\n\n /**\n * True if this request was initiated by the local client.\n *\n * For in-room verifications, the initiator is who sent the `m.key.verification.request` event.\n * For to-device verifications, the initiator is who sent the `m.key.verification.start` event.\n */\n public get initiatedByMe(): boolean {\n return this.inner.weStarted();\n }\n\n /** The user id of the other party in this request */\n public get otherUserId(): string {\n return this.inner.otherUserId.toString();\n }\n\n /** For verifications via to-device messages: the ID of the other device. Otherwise, undefined. */\n public get otherDeviceId(): string | undefined {\n return this.inner.otherDeviceId?.toString();\n }\n\n /** Get the other device involved in the verification, if it is known */\n private async getOtherDevice(): Promise<undefined | RustSdkCryptoJs.Device> {\n const otherDeviceId = this.inner.otherDeviceId;\n if (!otherDeviceId) {\n return undefined;\n }\n return await this.olmMachine.getDevice(this.inner.otherUserId, otherDeviceId, 5);\n }\n\n /** True if the other party in this request is one of this user's own devices. */\n public get isSelfVerification(): boolean {\n return this.inner.isSelfVerification();\n }\n\n /** current phase of the request. */\n public get phase(): VerificationPhase {\n const phase = this.inner.phase();\n\n switch (phase) {\n case RustSdkCryptoJs.VerificationRequestPhase.Created:\n case RustSdkCryptoJs.VerificationRequestPhase.Requested:\n return VerificationPhase.Requested;\n case RustSdkCryptoJs.VerificationRequestPhase.Ready:\n // if we're still sending the `m.key.verification.ready`, that counts as \"Requested\" in the js-sdk's\n // parlance.\n return this._accepting ? VerificationPhase.Requested : VerificationPhase.Ready;\n case RustSdkCryptoJs.VerificationRequestPhase.Transitioned:\n if (!this._verifier) {\n // this shouldn't happen, because the onChange handler should have created a _verifier.\n throw new Error(\"VerificationRequest: inner phase == Transitioned but no verifier!\");\n }\n return this._verifier.verificationPhase;\n case RustSdkCryptoJs.VerificationRequestPhase.Done:\n return VerificationPhase.Done;\n case RustSdkCryptoJs.VerificationRequestPhase.Cancelled:\n return VerificationPhase.Cancelled;\n }\n\n throw new Error(`Unknown verification phase ${phase}`);\n }\n\n /** True if the request has sent its initial event and needs more events to complete\n * (ie it is in phase `Requested`, `Ready` or `Started`).\n */\n public get pending(): boolean {\n if (this.inner.isPassive()) return false;\n const phase = this.phase;\n return phase !== VerificationPhase.Done && phase !== VerificationPhase.Cancelled;\n }\n\n /**\n * True if we have started the process of sending an `m.key.verification.ready` (but have not necessarily received\n * the remote echo which causes a transition to {@link VerificationPhase.Ready}.\n */\n public get accepting(): boolean {\n return this._accepting;\n }\n\n /**\n * True if we have started the process of sending an `m.key.verification.cancel` (but have not necessarily received\n * the remote echo which causes a transition to {@link VerificationPhase.Cancelled}).\n */\n public get declining(): boolean {\n return this._cancelling;\n }\n\n /**\n * The remaining number of ms before the request will be automatically cancelled.\n *\n * `null` indicates that there is no timeout\n */\n public get timeout(): number | null {\n return this.inner.timeRemainingMillis();\n }\n\n /** once the phase is Started (and !initiatedByMe) or Ready: common methods supported by both sides */\n public get methods(): string[] {\n throw new Error(\"not implemented\");\n }\n\n /** the method picked in the .start event */\n public get chosenMethod(): string | null {\n if (this.phase !== VerificationPhase.Started) return null;\n\n const verification: RustSdkCryptoJs.Qr | RustSdkCryptoJs.Sas | undefined = this.inner.getVerification();\n if (verification instanceof RustSdkCryptoJs.Sas) {\n return VerificationMethod.Sas;\n } else if (verification instanceof RustSdkCryptoJs.Qr) {\n return VerificationMethod.Reciprocate;\n } else {\n return null;\n }\n }\n\n /**\n * Checks whether the other party supports a given verification method.\n * This is useful when setting up the QR code UI, as it is somewhat asymmetrical:\n * if the other party supports SCAN_QR, we should show a QR code in the UI, and vice versa.\n * For methods that need to be supported by both ends, use the `methods` property.\n *\n * @param method - the method to check\n * @returns true if the other party said they supported the method\n */\n public otherPartySupportsMethod(method: string): boolean {\n const theirMethods: RustSdkCryptoJs.VerificationMethod[] | undefined = this.inner.theirSupportedMethods;\n if (theirMethods === undefined) {\n // no message from the other side yet\n return false;\n }\n\n const requiredMethod = verificationMethodsByIdentifier[method];\n return theirMethods.some((m) => m === requiredMethod);\n }\n\n /**\n * Accepts the request, sending a .ready event to the other party\n *\n * @returns Promise which resolves when the event has been sent.\n */\n public async accept(): Promise<void> {\n if (this.inner.phase() !== RustSdkCryptoJs.VerificationRequestPhase.Requested || this._accepting) {\n throw new Error(`Cannot accept a verification request in phase ${this.phase}`);\n }\n\n this._accepting = true;\n try {\n const req: undefined | OutgoingRequest = this.inner.acceptWithMethods(\n this.supportedVerificationMethods.map(verificationMethodIdentifierToMethod),\n );\n if (req) {\n await this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n } finally {\n this._accepting = false;\n }\n\n // phase may have changed, so emit a 'change' event\n this.emit(VerificationRequestEvent.Change);\n }\n\n /**\n * Cancels the request, sending a cancellation to the other party\n *\n * @param params - Details for the cancellation, including `reason` (defaults to \"User declined\"), and `code`\n * (defaults to `m.user`).\n *\n * @returns Promise which resolves when the event has been sent.\n */\n public async cancel(params?: { reason?: string; code?: string }): Promise<void> {\n if (this._cancelling) {\n // already cancelling; do nothing\n return;\n }\n\n this._cancelling = true;\n try {\n const req: undefined | OutgoingRequest = this.inner.cancel();\n if (req) {\n await this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n } finally {\n this._cancelling = false;\n }\n }\n\n /**\n * Create a {@link Verifier} to do this verification via a particular method.\n *\n * If a verifier has already been created for this request, returns that verifier.\n *\n * This does *not* send the `m.key.verification.start` event - to do so, call {@link Verifier#verifier} on the\n * returned verifier.\n *\n * If no previous events have been sent, pass in `targetDevice` to set who to direct this request to.\n *\n * @param method - the name of the verification method to use.\n * @param targetDevice - details of where to send the request to.\n *\n * @returns The verifier which will do the actual verification.\n */\n public beginKeyVerification(method: string, targetDevice?: { userId?: string; deviceId?: string }): Verifier {\n throw new Error(\"not implemented\");\n }\n\n /**\n * Send an `m.key.verification.start` event to start verification via a particular method.\n *\n * Implementation of {@link Crypto.VerificationRequest#startVerification}.\n *\n * @param method - the name of the verification method to use.\n */\n public async startVerification(method: string): Promise<Verifier> {\n if (method !== VerificationMethod.Sas) {\n throw new Error(`Unsupported verification method ${method}`);\n }\n\n // make sure that we have a list of the other user's devices (workaround https://github.com/matrix-org/matrix-rust-sdk/issues/2896)\n if (!(await this.getOtherDevice())) {\n throw new Error(\"startVerification(): other device is unknown\");\n }\n\n const res:\n | [RustSdkCryptoJs.Sas, RustSdkCryptoJs.RoomMessageRequest | RustSdkCryptoJs.ToDeviceRequest]\n | undefined = await this.inner.startSas();\n\n if (res) {\n const [, req] = res;\n await this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n\n // this should have triggered the onChange callback, and we should now have a verifier\n if (!this._verifier) {\n throw new Error(\"Still no verifier after startSas() call\");\n }\n\n return this._verifier;\n }\n\n /**\n * Start a QR code verification by providing a scanned QR code for this verification flow.\n *\n * Implementation of {@link Crypto.VerificationRequest#scanQRCode}.\n *\n * @param qrCodeData - the decoded QR code.\n * @returns A verifier; call `.verify()` on it to wait for the other side to complete the verification flow.\n */\n public async scanQRCode(uint8Array: Uint8Array): Promise<Verifier> {\n const scan = RustSdkCryptoJs.QrCodeScan.fromBytes(new Uint8ClampedArray(uint8Array));\n const verifier: RustSdkCryptoJs.Qr = await this.inner.scanQrCode(scan);\n\n // this should have triggered the onChange callback, and we should now have a verifier\n if (!this._verifier) {\n throw new Error(\"Still no verifier after scanQrCode() call\");\n }\n\n // we can immediately trigger the reciprocate request\n const req: undefined | OutgoingRequest = verifier.reciprocate();\n if (req) {\n await this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n\n return this._verifier;\n }\n\n /**\n * The verifier which is doing the actual verification, once the method has been established.\n * Only defined when the `phase` is Started.\n */\n public get verifier(): Verifier | undefined {\n // It's possible for us to have a Verifier before a method has been chosen (in particular,\n // if we are showing a QR code which the other device has not yet scanned. At that point, we could\n // still switch to SAS).\n //\n // In that case, we should not return it to the application yet, since the application will not expect the\n // Verifier to be replaced during the lifetime of the VerificationRequest.\n return this.phase === VerificationPhase.Started ? this._verifier : undefined;\n }\n\n /**\n * Stub implementation of {@link Crypto.VerificationRequest#getQRCodeBytes}.\n */\n public getQRCodeBytes(): Buffer | undefined {\n throw new Error(\"getQRCodeBytes() unsupported in Rust Crypto; use generateQRCode() instead.\");\n }\n\n /**\n * Generate the data for a QR code allowing the other device to verify this one, if it supports it.\n *\n * Implementation of {@link Crypto.VerificationRequest#generateQRCode}.\n */\n public async generateQRCode(): Promise<Buffer | undefined> {\n // make sure that we have a list of the other user's devices (workaround https://github.com/matrix-org/matrix-rust-sdk/issues/2896)\n if (!(await this.getOtherDevice())) {\n throw new Error(\"generateQRCode(): other device is unknown\");\n }\n\n const innerVerifier: RustSdkCryptoJs.Qr | undefined = await this.inner.generateQrCode();\n // If we are unable to generate a QRCode, we return undefined\n if (!innerVerifier) return;\n\n return Buffer.from(innerVerifier.toBytes());\n }\n\n /**\n * If this request has been cancelled, the cancellation code (e.g `m.user`) which is responsible for cancelling\n * this verification.\n */\n public get cancellationCode(): string | null {\n return this.inner.cancelInfo?.cancelCode() ?? null;\n }\n\n /**\n * The id of the user that cancelled the request.\n *\n * Only defined when phase is Cancelled\n */\n public get cancellingUserId(): string | undefined {\n const cancelInfo = this.inner.cancelInfo;\n if (!cancelInfo) {\n return undefined;\n } else if (cancelInfo.cancelledbyUs()) {\n return this.olmMachine.userId.toString();\n } else {\n return this.inner.otherUserId.toString();\n }\n }\n}\n\n/** Common base class for `Verifier` implementations which wrap rust classes.\n *\n * The generic parameter `InnerType` is the type of the rust Verification class which we wrap.\n *\n * @internal\n */\nabstract class BaseRustVerifer<InnerType extends RustSdkCryptoJs.Qr | RustSdkCryptoJs.Sas> extends TypedEventEmitter<\n VerifierEvent | VerificationRequestEvent,\n VerifierEventHandlerMap & VerificationRequestEventHandlerMap\n> {\n /** A deferred which completes when the verification completes (or rejects when it is cancelled/fails) */\n protected readonly completionDeferred: IDeferred<void>;\n\n public constructor(\n protected inner: InnerType,\n protected readonly outgoingRequestProcessor: OutgoingRequestProcessor,\n ) {\n super();\n\n this.completionDeferred = defer();\n\n // As with RustVerificationRequest, we need to avoid a reference cycle.\n // See the comments in RustVerificationRequest.\n const weakThis = new WeakRef(this);\n inner.registerChangesCallback(async () => weakThis.deref()?.onChange());\n\n // stop the runtime complaining if nobody catches a failure\n this.completionDeferred.promise.catch(() => null);\n }\n\n /**\n * Hook which is called when the underlying rust class notifies us that there has been a change.\n *\n * Can be overridden by subclasses to see if we can notify the application about an update. The overriding method\n * must call `super.onChange()`.\n */\n protected onChange(): void {\n if (this.inner.isDone()) {\n this.completionDeferred.resolve(undefined);\n } else if (this.inner.isCancelled()) {\n const cancelInfo = this.inner.cancelInfo()!;\n this.completionDeferred.reject(\n new Error(\n `Verification cancelled by ${\n cancelInfo.cancelledbyUs() ? \"us\" : \"them\"\n } with code ${cancelInfo.cancelCode()}: ${cancelInfo.reason()}`,\n ),\n );\n }\n\n this.emit(VerificationRequestEvent.Change);\n }\n\n /**\n * Returns true if the verification has been cancelled, either by us or the other side.\n */\n public get hasBeenCancelled(): boolean {\n return this.inner.isCancelled();\n }\n\n /**\n * The ID of the other user in the verification process.\n */\n public get userId(): string {\n return this.inner.otherUserId.toString();\n }\n\n /**\n * Cancel a verification.\n *\n * We will send an `m.key.verification.cancel` if the verification is still in flight. The verification promise\n * will reject, and a {@link Crypto.VerifierEvent#Cancel} will be emitted.\n *\n * @param e - the reason for the cancellation.\n */\n public cancel(e?: Error): void {\n // TODO: something with `e`\n const req: undefined | OutgoingRequest = this.inner.cancel();\n if (req) {\n this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n }\n\n /**\n * Get the details for an SAS verification, if one is in progress\n *\n * Returns `null`, unless this verifier is for a SAS-based verification and we are waiting for the user to confirm\n * the SAS matches.\n */\n public getShowSasCallbacks(): ShowSasCallbacks | null {\n return null;\n }\n\n /**\n * Get the details for reciprocating QR code verification, if one is in progress\n *\n * Returns `null`, unless this verifier is for reciprocating a QR-code-based verification (ie, the other user has\n * already scanned our QR code), and we are waiting for the user to confirm.\n */\n public getReciprocateQrCodeCallbacks(): ShowQrCodeCallbacks | null {\n return null;\n }\n}\n\n/** A Verifier instance which is used to show and/or scan a QR code. */\nexport class RustQrCodeVerifier extends BaseRustVerifer<RustSdkCryptoJs.Qr> implements Verifier {\n private callbacks: ShowQrCodeCallbacks | null = null;\n\n public constructor(inner: RustSdkCryptoJs.Qr, outgoingRequestProcessor: OutgoingRequestProcessor) {\n super(inner, outgoingRequestProcessor);\n }\n\n protected onChange(): void {\n // if the other side has scanned our QR code and sent us a \"reciprocate\" message, it is now time for the\n // application to prompt the user to confirm their side.\n if (this.callbacks === null && this.inner.hasBeenScanned()) {\n this.callbacks = {\n confirm: (): void => {\n this.confirmScanning();\n },\n cancel: (): void => this.cancel(),\n };\n }\n\n super.onChange();\n }\n\n /**\n * Start the key verification, if it has not already been started.\n *\n * @returns Promise which resolves when the verification has completed, or rejects if the verification is cancelled\n * or times out.\n */\n public async verify(): Promise<void> {\n // Some applications (hello, matrix-react-sdk) may not check if there is a `ShowQrCodeCallbacks` and instead\n // register a `ShowReciprocateQr` listener which they expect to be called once `.verify` is called.\n if (this.callbacks !== null) {\n this.emit(VerifierEvent.ShowReciprocateQr, this.callbacks);\n }\n // Nothing to do here but wait.\n await this.completionDeferred.promise;\n }\n\n /**\n * Calculate an appropriate VerificationPhase for a VerificationRequest where this is the verifier.\n *\n * This is abnormally complicated because a rust-side QR Code verifier can span several verification phases.\n */\n public get verificationPhase(): VerificationPhase {\n switch (this.inner.state()) {\n case QrState.Created:\n // we have created a QR for display; neither side has yet sent an `m.key.verification.start`.\n return VerificationPhase.Ready;\n case QrState.Scanned:\n // other side has scanned our QR and sent an `m.key.verification.start` with `m.reciprocate.v1`\n return VerificationPhase.Started;\n case QrState.Confirmed:\n // we have confirmed the other side's scan and sent an `m.key.verification.done`.\n //\n // However, the verification is not yet \"Done\", because we have to wait until we have received the\n // `m.key.verification.done` from the other side (in particular, we don't mark the device/identity as\n // verified until that happens). If we return \"Done\" too soon, we risk the user cancelling the flow.\n return VerificationPhase.Started;\n case QrState.Reciprocated:\n // although the rust SDK doesn't immediately send the `m.key.verification.start` on transition into this\n // state, `RustVerificationRequest.scanQrCode` immediately calls `reciprocate()` and does so, so in practice\n // we can treat the two the same.\n return VerificationPhase.Started;\n case QrState.Done:\n return VerificationPhase.Done;\n case QrState.Cancelled:\n return VerificationPhase.Cancelled;\n default:\n throw new Error(`Unknown qr code state ${this.inner.state()}`);\n }\n }\n\n /**\n * Get the details for reciprocating QR code verification, if one is in progress\n *\n * Returns `null`, unless this verifier is for reciprocating a QR-code-based verification (ie, the other user has\n * already scanned our QR code), and we are waiting for the user to confirm.\n */\n public getReciprocateQrCodeCallbacks(): ShowQrCodeCallbacks | null {\n return this.callbacks;\n }\n\n private async confirmScanning(): Promise<void> {\n const req: undefined | OutgoingRequest = this.inner.confirmScanning();\n if (req) {\n await this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n }\n}\n\n/** A Verifier instance which is used if we are exchanging emojis */\nexport class RustSASVerifier extends BaseRustVerifer<RustSdkCryptoJs.Sas> implements Verifier {\n private callbacks: ShowSasCallbacks | null = null;\n\n public constructor(\n inner: RustSdkCryptoJs.Sas,\n _verificationRequest: RustVerificationRequest,\n outgoingRequestProcessor: OutgoingRequestProcessor,\n ) {\n super(inner, outgoingRequestProcessor);\n }\n\n /**\n * Start the key verification, if it has not already been started.\n *\n * This means sending a `m.key.verification.start` if we are the first responder, or a `m.key.verification.accept`\n * if the other side has already sent a start event.\n *\n * @returns Promise which resolves when the verification has completed, or rejects if the verification is cancelled\n * or times out.\n */\n public async verify(): Promise<void> {\n await this.sendAccept();\n await this.completionDeferred.promise;\n }\n\n /**\n * Send the accept or start event, if it hasn't already been sent\n */\n private async sendAccept(): Promise<void> {\n const req: undefined | OutgoingRequest = this.inner.accept();\n if (req) {\n await this.outgoingRequestProcessor.makeOutgoingRequest(req);\n }\n }\n\n /** if we can now show the callbacks, do so */\n protected onChange(): void {\n super.onChange();\n\n if (this.callbacks === null) {\n const emoji = this.inner.emoji();\n const decimal = this.inner.decimals();\n\n if (emoji === undefined && decimal === undefined) {\n return;\n }\n\n const sas: GeneratedSas = {};\n if (emoji) {\n sas.emoji = emoji.map((e) => [e.symbol, e.description]);\n }\n if (decimal) {\n sas.decimal = [decimal[0], decimal[1], decimal[2]];\n }\n\n this.callbacks = {\n sas,\n confirm: async (): Promise<void> => {\n const requests: Array<OutgoingRequest> = await this.inner.confirm();\n for (const m of requests) {\n await this.outgoingRequestProcessor.makeOutgoingRequest(m);\n }\n },\n mismatch: (): void => {\n const request = this.inner.cancelWithCode(\"m.mismatched_sas\");\n if (request) {\n this.outgoingRequestProcessor.makeOutgoingRequest(request);\n }\n },\n cancel: (): void => {\n const request = this.inner.cancelWithCode(\"m.user\");\n if (request) {\n this.outgoingRequestProcessor.makeOutgoingRequest(request);\n }\n },\n };\n this.emit(VerifierEvent.ShowSas, this.callbacks);\n }\n }\n\n /**\n * Calculate an appropriate VerificationPhase for a VerificationRequest where this is the verifier.\n */\n public get verificationPhase(): VerificationPhase {\n return VerificationPhase.Started;\n }\n\n /**\n * Get the details for an SAS verification, if one is in progress\n *\n * Returns `null`, unless this verifier is for a SAS-based verification and we are waiting for the user to confirm\n * the SAS matches.\n */\n public getShowSasCallbacks(): ShowSasCallbacks | null {\n return this.callbacks;\n }\n\n /**\n * Replace the inner Rust verifier with a different one.\n *\n * @param inner - the new Rust verifier\n * @internal\n */\n public replaceInner(inner: RustSdkCryptoJs.Sas): void {\n if (this.inner != inner) {\n this.inner = inner;\n\n // As with RustVerificationRequest, we need to avoid a reference cycle.\n // See the comments in RustVerificationRequest.\n const weakThis = new WeakRef(this);\n inner.registerChangesCallback(async () => weakThis.deref()?.onChange());\n\n // replaceInner will only get called if we started the verification at the same time as the other side, and we lost\n // the tie breaker. So we need to re-accept their verification.\n this.sendAccept();\n this.onChange();\n }\n }\n}\n\n/** For each specced verification method, the rust-side `VerificationMethod` corresponding to it */\nconst verificationMethodsByIdentifier: Record<string, RustSdkCryptoJs.VerificationMethod> = {\n [VerificationMethod.Sas]: RustSdkCryptoJs.VerificationMethod.SasV1,\n [VerificationMethod.ScanQrCode]: RustSdkCryptoJs.VerificationMethod.QrCodeScanV1,\n [VerificationMethod.ShowQrCode]: RustSdkCryptoJs.VerificationMethod.QrCodeShowV1,\n [VerificationMethod.Reciprocate]: RustSdkCryptoJs.VerificationMethod.ReciprocateV1,\n};\n\n/**\n * Convert a specced verification method identifier into a rust-side `VerificationMethod`.\n *\n * @param method - specced method identifier, for example `m.sas.v1`.\n * @returns Rust-side `VerificationMethod` corresponding to `method`.\n * @throws An error if the method is unknown.\n *\n * @internal\n */\nexport function verificationMethodIdentifierToMethod(method: string): RustSdkCryptoJs.VerificationMethod {\n const meth = verificationMethodsByIdentifier[method];\n if (meth === undefined) {\n throw new Error(`Unknown verification method ${method}`);\n }\n return meth;\n}\n\n/**\n * Return true if the event's type matches that of an in-room verification event\n *\n * @param event - MatrixEvent\n * @returns\n *\n * @internal\n */\nexport function isVerificationEvent(event: MatrixEvent): boolean {\n switch (event.getType()) {\n case EventType.KeyVerificationCancel:\n case EventType.KeyVerificationDone:\n case EventType.KeyVerificationMac:\n case EventType.KeyVerificationStart:\n case EventType.KeyVerificationKey:\n case EventType.KeyVerificationReady:\n case EventType.KeyVerificationAccept:\n return true;\n case EventType.RoomMessage:\n return event.getContent().msgtype === MsgType.KeyVerificationRequest;\n default:\n return false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,132 @@
|
|
1
|
+
import { MatrixEvent } from "./models/event.ts";
|
2
|
+
import { MatrixError } from "./http-api/index.ts";
|
3
|
+
import { ISendEventResponse } from "./@types/requests.ts";
|
4
|
+
/**
|
5
|
+
* The function to invoke to process (send) events in the queue.
|
6
|
+
* @param event - The event to send.
|
7
|
+
* @returns Resolved/rejected depending on the outcome of the request.
|
8
|
+
*/
|
9
|
+
type ProcessFunction<T> = (event: MatrixEvent) => Promise<T>;
|
10
|
+
export declare class MatrixScheduler<T = ISendEventResponse> {
|
11
|
+
/**
|
12
|
+
* The retry algorithm to apply when retrying events. To stop retrying, return
|
13
|
+
* `-1`. If this event was part of a queue, it will be removed from
|
14
|
+
* the queue.
|
15
|
+
* @param event - The event being retried.
|
16
|
+
* @param attempts - The number of failed attempts. This will always be \>= 1.
|
17
|
+
* @param err - The most recent error message received when trying
|
18
|
+
* to send this event.
|
19
|
+
* @returns The number of milliseconds to wait before trying again. If
|
20
|
+
* this is 0, the request will be immediately retried. If this is
|
21
|
+
* `-1`, the event will be marked as
|
22
|
+
* {@link EventStatus.NOT_SENT} and will not be retried.
|
23
|
+
*/
|
24
|
+
readonly retryAlgorithm: typeof MatrixScheduler.RETRY_BACKOFF_RATELIMIT;
|
25
|
+
/**
|
26
|
+
* The queuing algorithm to apply to events. This function must be idempotent as
|
27
|
+
* it may be called multiple times with the same event. All queues created are
|
28
|
+
* serviced in a FIFO manner. To send the event ASAP, return `null`
|
29
|
+
* which will not put this event in a queue. Events that fail to send that form
|
30
|
+
* part of a queue will be removed from the queue and the next event in the
|
31
|
+
* queue will be sent.
|
32
|
+
* @param event - The event to be sent.
|
33
|
+
* @returns The name of the queue to put the event into. If a queue with
|
34
|
+
* this name does not exist, it will be created. If this is `null`,
|
35
|
+
* the event is not put into a queue and will be sent concurrently.
|
36
|
+
*/
|
37
|
+
readonly queueAlgorithm: typeof MatrixScheduler.QUEUE_MESSAGES;
|
38
|
+
/**
|
39
|
+
* Default retry algorithm for the matrix scheduler. Retries events up to 4 times with exponential backoff.
|
40
|
+
* @param attempts - Number of attempts that have been made, including the one that just failed (ie. starting at 1)
|
41
|
+
* @see retryAlgorithm
|
42
|
+
*/
|
43
|
+
static RETRY_BACKOFF_RATELIMIT(event: MatrixEvent | null, attempts: number, err: MatrixError): number;
|
44
|
+
/**
|
45
|
+
* Queues `m.room.message` events and lets other events continue
|
46
|
+
* concurrently.
|
47
|
+
* @see queueAlgorithm
|
48
|
+
*/
|
49
|
+
static QUEUE_MESSAGES(event: MatrixEvent): string | null;
|
50
|
+
private readonly queues;
|
51
|
+
private activeQueues;
|
52
|
+
private procFn;
|
53
|
+
/**
|
54
|
+
* Construct a scheduler for Matrix. Requires
|
55
|
+
* {@link MatrixScheduler#setProcessFunction} to be provided
|
56
|
+
* with a way of processing events.
|
57
|
+
* @param retryAlgorithm - Optional. The retry
|
58
|
+
* algorithm to apply when determining when to try to send an event again.
|
59
|
+
* Defaults to {@link MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.
|
60
|
+
* @param queueAlgorithm - Optional. The queuing
|
61
|
+
* algorithm to apply when determining which events should be sent before the
|
62
|
+
* given event. Defaults to {@link MatrixScheduler.QUEUE_MESSAGES}.
|
63
|
+
*/
|
64
|
+
constructor(
|
65
|
+
/**
|
66
|
+
* The retry algorithm to apply when retrying events. To stop retrying, return
|
67
|
+
* `-1`. If this event was part of a queue, it will be removed from
|
68
|
+
* the queue.
|
69
|
+
* @param event - The event being retried.
|
70
|
+
* @param attempts - The number of failed attempts. This will always be \>= 1.
|
71
|
+
* @param err - The most recent error message received when trying
|
72
|
+
* to send this event.
|
73
|
+
* @returns The number of milliseconds to wait before trying again. If
|
74
|
+
* this is 0, the request will be immediately retried. If this is
|
75
|
+
* `-1`, the event will be marked as
|
76
|
+
* {@link EventStatus.NOT_SENT} and will not be retried.
|
77
|
+
*/
|
78
|
+
retryAlgorithm?: typeof MatrixScheduler.RETRY_BACKOFF_RATELIMIT,
|
79
|
+
/**
|
80
|
+
* The queuing algorithm to apply to events. This function must be idempotent as
|
81
|
+
* it may be called multiple times with the same event. All queues created are
|
82
|
+
* serviced in a FIFO manner. To send the event ASAP, return `null`
|
83
|
+
* which will not put this event in a queue. Events that fail to send that form
|
84
|
+
* part of a queue will be removed from the queue and the next event in the
|
85
|
+
* queue will be sent.
|
86
|
+
* @param event - The event to be sent.
|
87
|
+
* @returns The name of the queue to put the event into. If a queue with
|
88
|
+
* this name does not exist, it will be created. If this is `null`,
|
89
|
+
* the event is not put into a queue and will be sent concurrently.
|
90
|
+
*/
|
91
|
+
queueAlgorithm?: typeof MatrixScheduler.QUEUE_MESSAGES);
|
92
|
+
/**
|
93
|
+
* Retrieve a queue based on an event. The event provided does not need to be in
|
94
|
+
* the queue.
|
95
|
+
* @param event - An event to get the queue for.
|
96
|
+
* @returns A shallow copy of events in the queue or null.
|
97
|
+
* Modifying this array will not modify the list itself. Modifying events in
|
98
|
+
* this array <i>will</i> modify the underlying event in the queue.
|
99
|
+
* @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.
|
100
|
+
*/
|
101
|
+
getQueueForEvent(event: MatrixEvent): MatrixEvent[] | null;
|
102
|
+
/**
|
103
|
+
* Remove this event from the queue. The event is equal to another event if they
|
104
|
+
* have the same ID returned from event.getId().
|
105
|
+
* @param event - The event to remove.
|
106
|
+
* @returns True if this event was removed.
|
107
|
+
*/
|
108
|
+
removeEventFromQueue(event: MatrixEvent): boolean;
|
109
|
+
/**
|
110
|
+
* Set the process function. Required for events in the queue to be processed.
|
111
|
+
* If set after events have been added to the queue, this will immediately start
|
112
|
+
* processing them.
|
113
|
+
* @param fn - The function that can process events
|
114
|
+
* in the queue.
|
115
|
+
*/
|
116
|
+
setProcessFunction(fn: ProcessFunction<T>): void;
|
117
|
+
/**
|
118
|
+
* Queue an event if it is required and start processing queues.
|
119
|
+
* @param event - The event that may be queued.
|
120
|
+
* @returns A promise if the event was queued, which will be
|
121
|
+
* resolved or rejected in due time, else null.
|
122
|
+
*/
|
123
|
+
queueEvent(event: MatrixEvent): Promise<T> | null;
|
124
|
+
private startProcessingQueues;
|
125
|
+
private processQueue;
|
126
|
+
private disableQueue;
|
127
|
+
private clearQueue;
|
128
|
+
private peekNextEvent;
|
129
|
+
private removeNextEvent;
|
130
|
+
}
|
131
|
+
export {};
|
132
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAyB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAU1D;;;;GAIG;AACH,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAG7D,qBAAa,eAAe,CAAC,CAAC,GAAG,kBAAkB;IAgD3C;;;;;;;;;;;;OAYG;aACa,cAAc;IAC9B;;;;;;;;;;;OAWG;aACa,cAAc;IAzElC;;;;OAIG;WAEW,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM;IAI5G;;;;OAIG;WAEW,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAe/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwC;IAC/D,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,MAAM,CAAmC;IAEjD;;;;;;;;;;OAUG;;IAEC;;;;;;;;;;;;OAYG;IACa,cAAc,iDAA0C;IACxE;;;;;;;;;;;OAWG;IACa,cAAc,wCAAiC;IAGnE;;;;;;;;OAQG;IACI,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,IAAI;IAUjE;;;;;OAKG;IACI,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO;IAkBxD;;;;;;OAMG;IACI,kBAAkB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAKvD;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAoBxD,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,YAAY,CAiDlB;IAEF,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,eAAe;CAO1B"}
|
package/lib/scheduler.js
ADDED
@@ -0,0 +1,259 @@
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
2
|
+
/*
|
3
|
+
Copyright 2015 - 2021 The Matrix.org Foundation C.I.C.
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
*/
|
17
|
+
|
18
|
+
/**
|
19
|
+
* This is an internal module which manages queuing, scheduling and retrying
|
20
|
+
* of requests.
|
21
|
+
*/
|
22
|
+
import { logger } from "./logger.js";
|
23
|
+
import { EventType } from "./@types/event.js";
|
24
|
+
import { defer, removeElement } from "./utils.js";
|
25
|
+
import { calculateRetryBackoff } from "./http-api/index.js";
|
26
|
+
var DEBUG = false; // set true to enable console logging.
|
27
|
+
|
28
|
+
/**
|
29
|
+
* The function to invoke to process (send) events in the queue.
|
30
|
+
* @param event - The event to send.
|
31
|
+
* @returns Resolved/rejected depending on the outcome of the request.
|
32
|
+
*/
|
33
|
+
|
34
|
+
// eslint-disable-next-line camelcase
|
35
|
+
export class MatrixScheduler {
|
36
|
+
/**
|
37
|
+
* Default retry algorithm for the matrix scheduler. Retries events up to 4 times with exponential backoff.
|
38
|
+
* @param attempts - Number of attempts that have been made, including the one that just failed (ie. starting at 1)
|
39
|
+
* @see retryAlgorithm
|
40
|
+
*/
|
41
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
42
|
+
static RETRY_BACKOFF_RATELIMIT(event, attempts, err) {
|
43
|
+
return calculateRetryBackoff(err, attempts, false);
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Queues `m.room.message` events and lets other events continue
|
48
|
+
* concurrently.
|
49
|
+
* @see queueAlgorithm
|
50
|
+
*/
|
51
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
52
|
+
static QUEUE_MESSAGES(event) {
|
53
|
+
// enqueue messages or events that associate with another event (redactions and relations)
|
54
|
+
if (event.getType() === EventType.RoomMessage || event.hasAssociation()) {
|
55
|
+
// put these events in the 'message' queue.
|
56
|
+
return "message";
|
57
|
+
}
|
58
|
+
// allow all other events continue concurrently.
|
59
|
+
return null;
|
60
|
+
}
|
61
|
+
|
62
|
+
// queueName: [{
|
63
|
+
// event: MatrixEvent, // event to send
|
64
|
+
// defer: Deferred, // defer to resolve/reject at the END of the retries
|
65
|
+
// attempts: Number // number of times we've called processFn
|
66
|
+
// }, ...]
|
67
|
+
|
68
|
+
/**
|
69
|
+
* Construct a scheduler for Matrix. Requires
|
70
|
+
* {@link MatrixScheduler#setProcessFunction} to be provided
|
71
|
+
* with a way of processing events.
|
72
|
+
* @param retryAlgorithm - Optional. The retry
|
73
|
+
* algorithm to apply when determining when to try to send an event again.
|
74
|
+
* Defaults to {@link MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.
|
75
|
+
* @param queueAlgorithm - Optional. The queuing
|
76
|
+
* algorithm to apply when determining which events should be sent before the
|
77
|
+
* given event. Defaults to {@link MatrixScheduler.QUEUE_MESSAGES}.
|
78
|
+
*/
|
79
|
+
constructor() {
|
80
|
+
var retryAlgorithm = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : MatrixScheduler.RETRY_BACKOFF_RATELIMIT;
|
81
|
+
var queueAlgorithm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : MatrixScheduler.QUEUE_MESSAGES;
|
82
|
+
this.retryAlgorithm = retryAlgorithm;
|
83
|
+
this.queueAlgorithm = queueAlgorithm;
|
84
|
+
_defineProperty(this, "queues", {});
|
85
|
+
_defineProperty(this, "activeQueues", []);
|
86
|
+
_defineProperty(this, "procFn", null);
|
87
|
+
_defineProperty(this, "processQueue", queueName => {
|
88
|
+
// get head of queue
|
89
|
+
var obj = this.peekNextEvent(queueName);
|
90
|
+
if (!obj) {
|
91
|
+
this.disableQueue(queueName);
|
92
|
+
return;
|
93
|
+
}
|
94
|
+
debuglog("Queue '%s' has %s pending events", queueName, this.queues[queueName].length);
|
95
|
+
// fire the process function and if it resolves, resolve the deferred. Else
|
96
|
+
// invoke the retry algorithm.
|
97
|
+
|
98
|
+
// First wait for a resolved promise, so the resolve handlers for
|
99
|
+
// the deferred of the previously sent event can run.
|
100
|
+
// This way enqueued relations/redactions to enqueued events can receive
|
101
|
+
// the remove id of their target before being sent.
|
102
|
+
Promise.resolve().then(() => {
|
103
|
+
return this.procFn(obj.event);
|
104
|
+
}).then(res => {
|
105
|
+
// remove this from the queue
|
106
|
+
this.removeNextEvent(queueName);
|
107
|
+
debuglog("Queue '%s' sent event %s", queueName, obj.event.getId());
|
108
|
+
obj.defer.resolve(res);
|
109
|
+
// keep processing
|
110
|
+
this.processQueue(queueName);
|
111
|
+
}, err => {
|
112
|
+
obj.attempts += 1;
|
113
|
+
// ask the retry algorithm when/if we should try again
|
114
|
+
var waitTimeMs = this.retryAlgorithm(obj.event, obj.attempts, err);
|
115
|
+
debuglog("retry(%s) err=%s event_id=%s waitTime=%s", obj.attempts, err, obj.event.getId(), waitTimeMs);
|
116
|
+
if (waitTimeMs === -1) {
|
117
|
+
// give up (you quitter!)
|
118
|
+
logger.info("Queue '%s' giving up on event %s", queueName, obj.event.getId());
|
119
|
+
// remove this from the queue
|
120
|
+
this.clearQueue(queueName, err);
|
121
|
+
} else {
|
122
|
+
setTimeout(this.processQueue, waitTimeMs, queueName);
|
123
|
+
}
|
124
|
+
});
|
125
|
+
});
|
126
|
+
}
|
127
|
+
|
128
|
+
/**
|
129
|
+
* Retrieve a queue based on an event. The event provided does not need to be in
|
130
|
+
* the queue.
|
131
|
+
* @param event - An event to get the queue for.
|
132
|
+
* @returns A shallow copy of events in the queue or null.
|
133
|
+
* Modifying this array will not modify the list itself. Modifying events in
|
134
|
+
* this array <i>will</i> modify the underlying event in the queue.
|
135
|
+
* @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.
|
136
|
+
*/
|
137
|
+
getQueueForEvent(event) {
|
138
|
+
var name = this.queueAlgorithm(event);
|
139
|
+
if (!name || !this.queues[name]) {
|
140
|
+
return null;
|
141
|
+
}
|
142
|
+
return this.queues[name].map(function (obj) {
|
143
|
+
return obj.event;
|
144
|
+
});
|
145
|
+
}
|
146
|
+
|
147
|
+
/**
|
148
|
+
* Remove this event from the queue. The event is equal to another event if they
|
149
|
+
* have the same ID returned from event.getId().
|
150
|
+
* @param event - The event to remove.
|
151
|
+
* @returns True if this event was removed.
|
152
|
+
*/
|
153
|
+
removeEventFromQueue(event) {
|
154
|
+
var name = this.queueAlgorithm(event);
|
155
|
+
if (!name || !this.queues[name]) {
|
156
|
+
return false;
|
157
|
+
}
|
158
|
+
var removed = false;
|
159
|
+
removeElement(this.queues[name], element => {
|
160
|
+
if (element.event.getId() === event.getId()) {
|
161
|
+
// XXX we should probably reject the promise?
|
162
|
+
// https://github.com/matrix-org/matrix-js-sdk/issues/496
|
163
|
+
removed = true;
|
164
|
+
return true;
|
165
|
+
}
|
166
|
+
return false;
|
167
|
+
});
|
168
|
+
return removed;
|
169
|
+
}
|
170
|
+
|
171
|
+
/**
|
172
|
+
* Set the process function. Required for events in the queue to be processed.
|
173
|
+
* If set after events have been added to the queue, this will immediately start
|
174
|
+
* processing them.
|
175
|
+
* @param fn - The function that can process events
|
176
|
+
* in the queue.
|
177
|
+
*/
|
178
|
+
setProcessFunction(fn) {
|
179
|
+
this.procFn = fn;
|
180
|
+
this.startProcessingQueues();
|
181
|
+
}
|
182
|
+
|
183
|
+
/**
|
184
|
+
* Queue an event if it is required and start processing queues.
|
185
|
+
* @param event - The event that may be queued.
|
186
|
+
* @returns A promise if the event was queued, which will be
|
187
|
+
* resolved or rejected in due time, else null.
|
188
|
+
*/
|
189
|
+
queueEvent(event) {
|
190
|
+
var queueName = this.queueAlgorithm(event);
|
191
|
+
if (!queueName) {
|
192
|
+
return null;
|
193
|
+
}
|
194
|
+
// add the event to the queue and make a deferred for it.
|
195
|
+
if (!this.queues[queueName]) {
|
196
|
+
this.queues[queueName] = [];
|
197
|
+
}
|
198
|
+
var deferred = defer();
|
199
|
+
this.queues[queueName].push({
|
200
|
+
event: event,
|
201
|
+
defer: deferred,
|
202
|
+
attempts: 0
|
203
|
+
});
|
204
|
+
debuglog("Queue algorithm dumped event %s into queue '%s'", event.getId(), queueName);
|
205
|
+
this.startProcessingQueues();
|
206
|
+
return deferred.promise;
|
207
|
+
}
|
208
|
+
startProcessingQueues() {
|
209
|
+
if (!this.procFn) return;
|
210
|
+
// for each inactive queue with events in them
|
211
|
+
Object.keys(this.queues).filter(queueName => {
|
212
|
+
return this.activeQueues.indexOf(queueName) === -1 && this.queues[queueName].length > 0;
|
213
|
+
}).forEach(queueName => {
|
214
|
+
// mark the queue as active
|
215
|
+
this.activeQueues.push(queueName);
|
216
|
+
// begin processing the head of the queue
|
217
|
+
debuglog("Spinning up queue: '%s'", queueName);
|
218
|
+
this.processQueue(queueName);
|
219
|
+
});
|
220
|
+
}
|
221
|
+
disableQueue(queueName) {
|
222
|
+
// queue is empty. Mark as inactive and stop recursing.
|
223
|
+
var index = this.activeQueues.indexOf(queueName);
|
224
|
+
if (index >= 0) {
|
225
|
+
this.activeQueues.splice(index, 1);
|
226
|
+
}
|
227
|
+
logger.info("Stopping queue '%s' as it is now empty", queueName);
|
228
|
+
}
|
229
|
+
clearQueue(queueName, err) {
|
230
|
+
logger.info("clearing queue '%s'", queueName);
|
231
|
+
var obj;
|
232
|
+
while (obj = this.removeNextEvent(queueName)) {
|
233
|
+
obj.defer.reject(err);
|
234
|
+
}
|
235
|
+
this.disableQueue(queueName);
|
236
|
+
}
|
237
|
+
peekNextEvent(queueName) {
|
238
|
+
var queue = this.queues[queueName];
|
239
|
+
if (!Array.isArray(queue)) {
|
240
|
+
return undefined;
|
241
|
+
}
|
242
|
+
return queue[0];
|
243
|
+
}
|
244
|
+
removeNextEvent(queueName) {
|
245
|
+
var queue = this.queues[queueName];
|
246
|
+
if (!Array.isArray(queue)) {
|
247
|
+
return undefined;
|
248
|
+
}
|
249
|
+
return queue.shift();
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
/* istanbul ignore next */
|
254
|
+
function debuglog() {
|
255
|
+
if (DEBUG) {
|
256
|
+
logger.log(...arguments);
|
257
|
+
}
|
258
|
+
}
|
259
|
+
//# sourceMappingURL=scheduler.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scheduler.js","names":["logger","EventType","defer","removeElement","calculateRetryBackoff","DEBUG","MatrixScheduler","RETRY_BACKOFF_RATELIMIT","event","attempts","err","QUEUE_MESSAGES","getType","RoomMessage","hasAssociation","constructor","retryAlgorithm","arguments","length","undefined","queueAlgorithm","_defineProperty","queueName","obj","peekNextEvent","disableQueue","debuglog","queues","Promise","resolve","then","procFn","res","removeNextEvent","getId","processQueue","waitTimeMs","info","clearQueue","setTimeout","getQueueForEvent","name","map","removeEventFromQueue","removed","element","setProcessFunction","fn","startProcessingQueues","queueEvent","deferred","push","promise","Object","keys","filter","activeQueues","indexOf","forEach","index","splice","reject","queue","Array","isArray","shift","log"],"sources":["../src/scheduler.ts"],"sourcesContent":["/*\nCopyright 2015 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * This is an internal module which manages queuing, scheduling and retrying\n * of requests.\n */\nimport { logger } from \"./logger.ts\";\nimport { MatrixEvent } from \"./models/event.ts\";\nimport { EventType } from \"./@types/event.ts\";\nimport { defer, IDeferred, removeElement } from \"./utils.ts\";\nimport { calculateRetryBackoff, MatrixError } from \"./http-api/index.ts\";\nimport { ISendEventResponse } from \"./@types/requests.ts\";\n\nconst DEBUG = false; // set true to enable console logging.\n\ninterface IQueueEntry<T> {\n event: MatrixEvent;\n defer: IDeferred<T>;\n attempts: number;\n}\n\n/**\n * The function to invoke to process (send) events in the queue.\n * @param event - The event to send.\n * @returns Resolved/rejected depending on the outcome of the request.\n */\ntype ProcessFunction<T> = (event: MatrixEvent) => Promise<T>;\n\n// eslint-disable-next-line camelcase\nexport class MatrixScheduler<T = ISendEventResponse> {\n /**\n * Default retry algorithm for the matrix scheduler. Retries events up to 4 times with exponential backoff.\n * @param attempts - Number of attempts that have been made, including the one that just failed (ie. starting at 1)\n * @see retryAlgorithm\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public static RETRY_BACKOFF_RATELIMIT(event: MatrixEvent | null, attempts: number, err: MatrixError): number {\n return calculateRetryBackoff(err, attempts, false);\n }\n\n /**\n * Queues `m.room.message` events and lets other events continue\n * concurrently.\n * @see queueAlgorithm\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public static QUEUE_MESSAGES(event: MatrixEvent): string | null {\n // enqueue messages or events that associate with another event (redactions and relations)\n if (event.getType() === EventType.RoomMessage || event.hasAssociation()) {\n // put these events in the 'message' queue.\n return \"message\";\n }\n // allow all other events continue concurrently.\n return null;\n }\n\n // queueName: [{\n // event: MatrixEvent, // event to send\n // defer: Deferred, // defer to resolve/reject at the END of the retries\n // attempts: Number // number of times we've called processFn\n // }, ...]\n private readonly queues: Record<string, IQueueEntry<T>[]> = {};\n private activeQueues: string[] = [];\n private procFn: ProcessFunction<T> | null = null;\n\n /**\n * Construct a scheduler for Matrix. Requires\n * {@link MatrixScheduler#setProcessFunction} to be provided\n * with a way of processing events.\n * @param retryAlgorithm - Optional. The retry\n * algorithm to apply when determining when to try to send an event again.\n * Defaults to {@link MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.\n * @param queueAlgorithm - Optional. The queuing\n * algorithm to apply when determining which events should be sent before the\n * given event. Defaults to {@link MatrixScheduler.QUEUE_MESSAGES}.\n */\n public constructor(\n /**\n * The retry algorithm to apply when retrying events. To stop retrying, return\n * `-1`. If this event was part of a queue, it will be removed from\n * the queue.\n * @param event - The event being retried.\n * @param attempts - The number of failed attempts. This will always be \\>= 1.\n * @param err - The most recent error message received when trying\n * to send this event.\n * @returns The number of milliseconds to wait before trying again. If\n * this is 0, the request will be immediately retried. If this is\n * `-1`, the event will be marked as\n * {@link EventStatus.NOT_SENT} and will not be retried.\n */\n public readonly retryAlgorithm = MatrixScheduler.RETRY_BACKOFF_RATELIMIT,\n /**\n * The queuing algorithm to apply to events. This function must be idempotent as\n * it may be called multiple times with the same event. All queues created are\n * serviced in a FIFO manner. To send the event ASAP, return `null`\n * which will not put this event in a queue. Events that fail to send that form\n * part of a queue will be removed from the queue and the next event in the\n * queue will be sent.\n * @param event - The event to be sent.\n * @returns The name of the queue to put the event into. If a queue with\n * this name does not exist, it will be created. If this is `null`,\n * the event is not put into a queue and will be sent concurrently.\n */\n public readonly queueAlgorithm = MatrixScheduler.QUEUE_MESSAGES,\n ) {}\n\n /**\n * Retrieve a queue based on an event. The event provided does not need to be in\n * the queue.\n * @param event - An event to get the queue for.\n * @returns A shallow copy of events in the queue or null.\n * Modifying this array will not modify the list itself. Modifying events in\n * this array <i>will</i> modify the underlying event in the queue.\n * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.\n */\n public getQueueForEvent(event: MatrixEvent): MatrixEvent[] | null {\n const name = this.queueAlgorithm(event);\n if (!name || !this.queues[name]) {\n return null;\n }\n return this.queues[name].map(function (obj) {\n return obj.event;\n });\n }\n\n /**\n * Remove this event from the queue. The event is equal to another event if they\n * have the same ID returned from event.getId().\n * @param event - The event to remove.\n * @returns True if this event was removed.\n */\n public removeEventFromQueue(event: MatrixEvent): boolean {\n const name = this.queueAlgorithm(event);\n if (!name || !this.queues[name]) {\n return false;\n }\n let removed = false;\n removeElement(this.queues[name], (element) => {\n if (element.event.getId() === event.getId()) {\n // XXX we should probably reject the promise?\n // https://github.com/matrix-org/matrix-js-sdk/issues/496\n removed = true;\n return true;\n }\n return false;\n });\n return removed;\n }\n\n /**\n * Set the process function. Required for events in the queue to be processed.\n * If set after events have been added to the queue, this will immediately start\n * processing them.\n * @param fn - The function that can process events\n * in the queue.\n */\n public setProcessFunction(fn: ProcessFunction<T>): void {\n this.procFn = fn;\n this.startProcessingQueues();\n }\n\n /**\n * Queue an event if it is required and start processing queues.\n * @param event - The event that may be queued.\n * @returns A promise if the event was queued, which will be\n * resolved or rejected in due time, else null.\n */\n public queueEvent(event: MatrixEvent): Promise<T> | null {\n const queueName = this.queueAlgorithm(event);\n if (!queueName) {\n return null;\n }\n // add the event to the queue and make a deferred for it.\n if (!this.queues[queueName]) {\n this.queues[queueName] = [];\n }\n const deferred = defer<T>();\n this.queues[queueName].push({\n event: event,\n defer: deferred,\n attempts: 0,\n });\n debuglog(\"Queue algorithm dumped event %s into queue '%s'\", event.getId(), queueName);\n this.startProcessingQueues();\n return deferred.promise;\n }\n\n private startProcessingQueues(): void {\n if (!this.procFn) return;\n // for each inactive queue with events in them\n Object.keys(this.queues)\n .filter((queueName) => {\n return this.activeQueues.indexOf(queueName) === -1 && this.queues[queueName].length > 0;\n })\n .forEach((queueName) => {\n // mark the queue as active\n this.activeQueues.push(queueName);\n // begin processing the head of the queue\n debuglog(\"Spinning up queue: '%s'\", queueName);\n this.processQueue(queueName);\n });\n }\n\n private processQueue = (queueName: string): void => {\n // get head of queue\n const obj = this.peekNextEvent(queueName);\n if (!obj) {\n this.disableQueue(queueName);\n return;\n }\n debuglog(\"Queue '%s' has %s pending events\", queueName, this.queues[queueName].length);\n // fire the process function and if it resolves, resolve the deferred. Else\n // invoke the retry algorithm.\n\n // First wait for a resolved promise, so the resolve handlers for\n // the deferred of the previously sent event can run.\n // This way enqueued relations/redactions to enqueued events can receive\n // the remove id of their target before being sent.\n Promise.resolve()\n .then(() => {\n return this.procFn!(obj.event);\n })\n .then(\n (res) => {\n // remove this from the queue\n this.removeNextEvent(queueName);\n debuglog(\"Queue '%s' sent event %s\", queueName, obj.event.getId());\n obj.defer.resolve(res);\n // keep processing\n this.processQueue(queueName);\n },\n (err) => {\n obj.attempts += 1;\n // ask the retry algorithm when/if we should try again\n const waitTimeMs = this.retryAlgorithm(obj.event, obj.attempts, err);\n debuglog(\n \"retry(%s) err=%s event_id=%s waitTime=%s\",\n obj.attempts,\n err,\n obj.event.getId(),\n waitTimeMs,\n );\n if (waitTimeMs === -1) {\n // give up (you quitter!)\n logger.info(\"Queue '%s' giving up on event %s\", queueName, obj.event.getId());\n // remove this from the queue\n this.clearQueue(queueName, err);\n } else {\n setTimeout(this.processQueue, waitTimeMs, queueName);\n }\n },\n );\n };\n\n private disableQueue(queueName: string): void {\n // queue is empty. Mark as inactive and stop recursing.\n const index = this.activeQueues.indexOf(queueName);\n if (index >= 0) {\n this.activeQueues.splice(index, 1);\n }\n logger.info(\"Stopping queue '%s' as it is now empty\", queueName);\n }\n\n private clearQueue(queueName: string, err: unknown): void {\n logger.info(\"clearing queue '%s'\", queueName);\n let obj: IQueueEntry<T> | undefined;\n while ((obj = this.removeNextEvent(queueName))) {\n obj.defer.reject(err);\n }\n this.disableQueue(queueName);\n }\n\n private peekNextEvent(queueName: string): IQueueEntry<T> | undefined {\n const queue = this.queues[queueName];\n if (!Array.isArray(queue)) {\n return undefined;\n }\n return queue[0];\n }\n\n private removeNextEvent(queueName: string): IQueueEntry<T> | undefined {\n const queue = this.queues[queueName];\n if (!Array.isArray(queue)) {\n return undefined;\n }\n return queue.shift();\n }\n}\n\n/* istanbul ignore next */\nfunction debuglog(...args: any[]): void {\n if (DEBUG) {\n logger.log(...args);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|