@textrp/briij-js-sdk 41.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6464 -0
- package/LICENSE +177 -0
- package/README.md +477 -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 +213 -0
- package/lib/@types/auth.d.ts.map +1 -0
- package/lib/@types/auth.js +107 -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 +10 -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 +46 -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 +356 -0
- package/lib/@types/event.d.ts.map +1 -0
- package/lib/@types/event.js +280 -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 +18 -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 +66 -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 +58 -0
- package/lib/@types/membership.js.map +1 -0
- package/lib/@types/partials.d.ts +72 -0
- package/lib/@types/partials.d.ts.map +1 -0
- package/lib/@types/partials.js +71 -0
- package/lib/@types/partials.js.map +1 -0
- package/lib/@types/polls.d.ts +89 -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 +267 -0
- package/lib/@types/requests.d.ts.map +1 -0
- package/lib/@types/requests.js +42 -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 +121 -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 +55 -0
- package/lib/@types/topic.d.ts.map +1 -0
- package/lib/@types/topic.js +62 -0
- package/lib/@types/topic.js.map +1 -0
- package/lib/@types/uia.d.ts +8 -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 +32 -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 +30 -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 +25 -0
- package/lib/base64.d.ts.map +1 -0
- package/lib/base64.js +95 -0
- package/lib/base64.js.map +1 -0
- package/lib/briij.d.ts +116 -0
- package/lib/briij.d.ts.map +1 -0
- package/lib/briij.js +145 -0
- package/lib/briij.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 +3493 -0
- package/lib/client.d.ts.map +1 -0
- package/lib/client.js +7482 -0
- package/lib/client.js.map +1 -0
- package/lib/common-crypto/CryptoBackend.d.ts +234 -0
- package/lib/common-crypto/CryptoBackend.d.ts.map +1 -0
- package/lib/common-crypto/CryptoBackend.js +69 -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 +262 -0
- package/lib/content-helpers.js.map +1 -0
- package/lib/content-repo.d.ts +25 -0
- package/lib/content-repo.d.ts.map +1 -0
- package/lib/content-repo.js +109 -0
- package/lib/content-repo.js.map +1 -0
- package/lib/crypto/store/base.d.ts +301 -0
- package/lib/crypto/store/base.d.ts.map +1 -0
- package/lib/crypto/store/base.js +145 -0
- package/lib/crypto/store/base.js.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +94 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.js +604 -0
- package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store.d.ts +251 -0
- package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +1 -0
- package/lib/crypto/store/indexeddb-crypto-store.js +477 -0
- package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -0
- package/lib/crypto/store/localStorage-crypto-store.d.ts +102 -0
- package/lib/crypto/store/localStorage-crypto-store.d.ts.map +1 -0
- package/lib/crypto/store/localStorage-crypto-store.js +374 -0
- package/lib/crypto/store/localStorage-crypto-store.js.map +1 -0
- package/lib/crypto/store/memory-crypto-store.d.ts +117 -0
- package/lib/crypto/store/memory-crypto-store.d.ts.map +1 -0
- package/lib/crypto/store/memory-crypto-store.js +311 -0
- package/lib/crypto/store/memory-crypto-store.js.map +1 -0
- package/lib/crypto-api/CryptoEvent.d.ts +120 -0
- package/lib/crypto-api/CryptoEvent.d.ts.map +1 -0
- package/lib/crypto-api/CryptoEvent.js +137 -0
- package/lib/crypto-api/CryptoEvent.js.map +1 -0
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts +26 -0
- package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +1 -0
- package/lib/crypto-api/CryptoEventHandlerMap.js +1 -0
- package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -0
- package/lib/crypto-api/index.d.ts +1160 -0
- package/lib/crypto-api/index.d.ts.map +1 -0
- package/lib/crypto-api/index.js +410 -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 +87 -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 +315 -0
- package/lib/crypto-api/verification.d.ts.map +1 -0
- package/lib/crypto-api/verification.js +130 -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 +182 -0
- package/lib/embedded.d.ts.map +1 -0
- package/lib/embedded.js +746 -0
- package/lib/embedded.js.map +1 -0
- package/lib/errors.d.ts +38 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +73 -0
- package/lib/errors.js.map +1 -0
- package/lib/event-mapper.d.ts +9 -0
- package/lib/event-mapper.d.ts.map +1 -0
- package/lib/event-mapper.js +74 -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 +44 -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 +89 -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 +170 -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 +117 -0
- package/lib/http-api/errors.d.ts.map +1 -0
- package/lib/http-api/errors.js +245 -0
- package/lib/http-api/errors.js.map +1 -0
- package/lib/http-api/fetch.d.ts +80 -0
- package/lib/http-api/fetch.d.ts.map +1 -0
- package/lib/http-api/fetch.js +332 -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 +178 -0
- package/lib/http-api/index.js.map +1 -0
- package/lib/http-api/interface.d.ts +186 -0
- package/lib/http-api/interface.d.ts.map +1 -0
- package/lib/http-api/interface.js +39 -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 +50 -0
- package/lib/http-api/prefix.js.map +1 -0
- package/lib/http-api/refresh.d.ts +53 -0
- package/lib/http-api/refresh.d.ts.map +1 -0
- package/lib/http-api/refresh.js +174 -0
- package/lib/http-api/refresh.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 +182 -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 +341 -0
- package/lib/interactive-auth.d.ts.map +1 -0
- package/lib/interactive-auth.js +563 -0
- package/lib/interactive-auth.js.map +1 -0
- package/lib/logger.d.ts +124 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +230 -0
- package/lib/logger.js.map +1 -0
- package/lib/matrixrtc/CallMembership.d.ts +154 -0
- package/lib/matrixrtc/CallMembership.d.ts.map +1 -0
- package/lib/matrixrtc/CallMembership.js +469 -0
- package/lib/matrixrtc/CallMembership.js.map +1 -0
- package/lib/matrixrtc/EncryptionManager.d.ts +44 -0
- package/lib/matrixrtc/EncryptionManager.d.ts.map +1 -0
- package/lib/matrixrtc/EncryptionManager.js +13 -0
- package/lib/matrixrtc/EncryptionManager.js.map +1 -0
- package/lib/matrixrtc/IKeyTransport.d.ts +37 -0
- package/lib/matrixrtc/IKeyTransport.d.ts.map +1 -0
- package/lib/matrixrtc/IKeyTransport.js +27 -0
- package/lib/matrixrtc/IKeyTransport.js.map +1 -0
- package/lib/matrixrtc/IMembershipManager.d.ts +94 -0
- package/lib/matrixrtc/IMembershipManager.d.ts.map +1 -0
- package/lib/matrixrtc/IMembershipManager.js +40 -0
- package/lib/matrixrtc/IMembershipManager.js.map +1 -0
- package/lib/matrixrtc/LivekitTransport.d.ts +23 -0
- package/lib/matrixrtc/LivekitTransport.d.ts.map +1 -0
- package/lib/matrixrtc/LivekitTransport.js +29 -0
- package/lib/matrixrtc/LivekitTransport.js.map +1 -0
- package/lib/matrixrtc/MatrixRTCSession.d.ts +343 -0
- package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -0
- package/lib/matrixrtc/MatrixRTCSession.js +623 -0
- package/lib/matrixrtc/MatrixRTCSession.js.map +1 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +46 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +1 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.js +149 -0
- package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -0
- package/lib/matrixrtc/MembershipManager.d.ts +210 -0
- package/lib/matrixrtc/MembershipManager.d.ts.map +1 -0
- package/lib/matrixrtc/MembershipManager.js +977 -0
- package/lib/matrixrtc/MembershipManager.js.map +1 -0
- package/lib/matrixrtc/MembershipManagerActionScheduler.d.ts +59 -0
- package/lib/matrixrtc/MembershipManagerActionScheduler.d.ts.map +1 -0
- package/lib/matrixrtc/MembershipManagerActionScheduler.js +125 -0
- package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -0
- package/lib/matrixrtc/RTCEncryptionManager.d.ts +110 -0
- package/lib/matrixrtc/RTCEncryptionManager.d.ts.map +1 -0
- package/lib/matrixrtc/RTCEncryptionManager.js +376 -0
- package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -0
- package/lib/matrixrtc/ToDeviceKeyTransport.d.ts +30 -0
- package/lib/matrixrtc/ToDeviceKeyTransport.d.ts.map +1 -0
- package/lib/matrixrtc/ToDeviceKeyTransport.js +164 -0
- package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -0
- package/lib/matrixrtc/index.d.ts +9 -0
- package/lib/matrixrtc/index.d.ts.map +1 -0
- package/lib/matrixrtc/index.js +23 -0
- package/lib/matrixrtc/index.js.map +1 -0
- package/lib/matrixrtc/membershipData/common.d.ts +8 -0
- package/lib/matrixrtc/membershipData/common.d.ts.map +1 -0
- package/lib/matrixrtc/membershipData/common.js +26 -0
- package/lib/matrixrtc/membershipData/common.js.map +1 -0
- package/lib/matrixrtc/membershipData/index.d.ts +4 -0
- package/lib/matrixrtc/membershipData/index.d.ts.map +1 -0
- package/lib/matrixrtc/membershipData/index.js +20 -0
- package/lib/matrixrtc/membershipData/index.js.map +1 -0
- package/lib/matrixrtc/membershipData/rtc.d.ts +33 -0
- package/lib/matrixrtc/membershipData/rtc.d.ts.map +1 -0
- package/lib/matrixrtc/membershipData/rtc.js +137 -0
- package/lib/matrixrtc/membershipData/rtc.js.map +1 -0
- package/lib/matrixrtc/membershipData/session.d.ts +77 -0
- package/lib/matrixrtc/membershipData/session.d.ts.map +1 -0
- package/lib/matrixrtc/membershipData/session.js +62 -0
- package/lib/matrixrtc/membershipData/session.js.map +1 -0
- package/lib/matrixrtc/types.d.ts +169 -0
- package/lib/matrixrtc/types.d.ts.map +1 -0
- package/lib/matrixrtc/types.js +117 -0
- package/lib/matrixrtc/types.js.map +1 -0
- package/lib/matrixrtc/utils.d.ts +27 -0
- package/lib/matrixrtc/utils.d.ts.map +1 -0
- package/lib/matrixrtc/utils.js +72 -0
- package/lib/matrixrtc/utils.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 +166 -0
- package/lib/models/MSC3089TreeSpace.d.ts.map +1 -0
- package/lib/models/MSC3089TreeSpace.js +521 -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 +52 -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 +36 -0
- package/lib/models/event-status.js.map +1 -0
- package/lib/models/event-timeline-set.d.ts +308 -0
- package/lib/models/event-timeline-set.d.ts.map +1 -0
- package/lib/models/event-timeline-set.js +805 -0
- package/lib/models/event-timeline-set.js.map +1 -0
- package/lib/models/event-timeline.d.ts +224 -0
- package/lib/models/event-timeline.d.ts.map +1 -0
- package/lib/models/event-timeline.js +434 -0
- package/lib/models/event-timeline.js.map +1 -0
- package/lib/models/event.d.ts +844 -0
- package/lib/models/event.d.ts.map +1 -0
- package/lib/models/event.js +1600 -0
- package/lib/models/event.js.map +1 -0
- package/lib/models/invites-ignorer-types.d.ts +27 -0
- package/lib/models/invites-ignorer-types.d.ts.map +1 -0
- package/lib/models/invites-ignorer-types.js +56 -0
- package/lib/models/invites-ignorer-types.js.map +1 -0
- package/lib/models/invites-ignorer.d.ts +112 -0
- package/lib/models/invites-ignorer.d.ts.map +1 -0
- package/lib/models/invites-ignorer.js +357 -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 +17 -0
- package/lib/models/profile-keys.d.ts.map +1 -0
- package/lib/models/profile-keys.js +34 -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 +123 -0
- package/lib/models/relations.d.ts.map +1 -0
- package/lib/models/relations.js +378 -0
- package/lib/models/relations.js.map +1 -0
- package/lib/models/room-member.d.ts +221 -0
- package/lib/models/room-member.d.ts.map +1 -0
- package/lib/models/room-member.js +376 -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 +463 -0
- package/lib/models/room-state.d.ts.map +1 -0
- package/lib/models/room-state.js +1066 -0
- package/lib/models/room-state.js.map +1 -0
- package/lib/models/room-sticky-events.d.ts +110 -0
- package/lib/models/room-sticky-events.d.ts.map +1 -0
- package/lib/models/room-sticky-events.js +353 -0
- package/lib/models/room-sticky-events.js.map +1 -0
- package/lib/models/room-summary.d.ts +59 -0
- package/lib/models/room-summary.d.ts.map +1 -0
- package/lib/models/room-summary.js +39 -0
- package/lib/models/room-summary.js.map +1 -0
- package/lib/models/room.d.ts +1285 -0
- package/lib/models/room.d.ts.map +1 -0
- package/lib/models/room.js +3548 -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 +245 -0
- package/lib/models/thread.d.ts.map +1 -0
- package/lib/models/thread.js +866 -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 +93 -0
- package/lib/oidc/authorize.d.ts.map +1 -0
- package/lib/oidc/authorize.js +282 -0
- package/lib/oidc/authorize.js.map +1 -0
- package/lib/oidc/discovery.d.ts +22 -0
- package/lib/oidc/discovery.d.ts.map +1 -0
- package/lib/oidc/discovery.js +78 -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 +16 -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 +70 -0
- package/lib/oidc/register.d.ts.map +1 -0
- package/lib/oidc/register.js +135 -0
- package/lib/oidc/register.js.map +1 -0
- package/lib/oidc/tokenRefresher.d.ts +91 -0
- package/lib/oidc/tokenRefresher.d.ts.map +1 -0
- package/lib/oidc/tokenRefresher.js +187 -0
- package/lib/oidc/tokenRefresher.js.map +1 -0
- package/lib/oidc/validate.d.ts +78 -0
- package/lib/oidc/validate.d.ts.map +1 -0
- package/lib/oidc/validate.js +181 -0
- package/lib/oidc/validate.js.map +1 -0
- package/lib/pushprocessor.d.ts +140 -0
- package/lib/pushprocessor.d.ts.map +1 -0
- package/lib/pushprocessor.js +702 -0
- package/lib/pushprocessor.js.map +1 -0
- package/lib/randomstring.d.ts +32 -0
- package/lib/randomstring.d.ts.map +1 -0
- package/lib/randomstring.js +97 -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 +389 -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 +47 -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 +254 -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 +35 -0
- package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +1 -0
- package/lib/rust-crypto/CrossSigningIdentity.js +163 -0
- package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -0
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts +118 -0
- package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +1 -0
- package/lib/rust-crypto/DehydratedDeviceManager.js +361 -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 +36 -0
- package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +1 -0
- package/lib/rust-crypto/OutgoingRequestProcessor.js +194 -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 +175 -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 +469 -0
- package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -0
- package/lib/rust-crypto/RoomEncryptor.d.ts +100 -0
- package/lib/rust-crypto/RoomEncryptor.d.ts.map +1 -0
- package/lib/rust-crypto/RoomEncryptor.js +308 -0
- package/lib/rust-crypto/RoomEncryptor.js.map +1 -0
- package/lib/rust-crypto/backup.d.ts +278 -0
- package/lib/rust-crypto/backup.d.ts.map +1 -0
- package/lib/rust-crypto/backup.js +898 -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 +65 -0
- package/lib/rust-crypto/index.d.ts.map +1 -0
- package/lib/rust-crypto/index.js +149 -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 +456 -0
- package/lib/rust-crypto/libolm_migration.js.map +1 -0
- package/lib/rust-crypto/rust-crypto.d.ts +576 -0
- package/lib/rust-crypto/rust-crypto.d.ts.map +1 -0
- package/lib/rust-crypto/rust-crypto.js +2324 -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 +321 -0
- package/lib/rust-crypto/verification.d.ts.map +1 -0
- package/lib/rust-crypto/verification.js +817 -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 +383 -0
- package/lib/secret-storage.d.ts.map +1 -0
- package/lib/secret-storage.js +487 -0
- package/lib/secret-storage.js.map +1 -0
- package/lib/serverCapabilities.d.ts +78 -0
- package/lib/serverCapabilities.d.ts.map +1 -0
- package/lib/serverCapabilities.js +104 -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 +23 -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 +892 -0
- package/lib/sliding-sync-sdk.js.map +1 -0
- package/lib/sliding-sync.d.ts +306 -0
- package/lib/sliding-sync.d.ts.map +1 -0
- package/lib/sliding-sync.js +585 -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 +599 -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 +209 -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 +207 -0
- package/lib/sync-accumulator.d.ts.map +1 -0
- package/lib/sync-accumulator.js +588 -0
- package/lib/sync-accumulator.js.map +1 -0
- package/lib/sync.d.ts +273 -0
- package/lib/sync.d.ts.map +1 -0
- package/lib/sync.js +1764 -0
- package/lib/sync.js.map +1 -0
- package/lib/testing.d.ts +98 -0
- package/lib/testing.d.ts.map +1 -0
- package/lib/testing.js +205 -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 +52 -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/roomVersion.d.ts +13 -0
- package/lib/utils/roomVersion.d.ts.map +1 -0
- package/lib/utils/roomVersion.js +36 -0
- package/lib/utils/roomVersion.js.map +1 -0
- package/lib/utils.d.ts +270 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +764 -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 +2596 -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 +79 -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 +319 -0
- package/lib/webrtc/groupCall.d.ts.map +1 -0
- package/lib/webrtc/groupCall.js +1334 -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 +454 -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 +79 -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 +58 -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 +129 -0
- package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -0
- package/src/@types/IIdentityServerProvider.ts +24 -0
- package/src/@types/PushRules.ts +208 -0
- package/src/@types/another-json.d.ts +19 -0
- package/src/@types/auth.ts +258 -0
- package/src/@types/beacon.ts +140 -0
- package/src/@types/common.ts +24 -0
- package/src/@types/crypto.ts +71 -0
- package/src/@types/event.ts +449 -0
- package/src/@types/events.ts +119 -0
- package/src/@types/extensible_events.ts +147 -0
- package/src/@types/global.d.ts +67 -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 +39 -0
- package/src/@types/media.ts +245 -0
- package/src/@types/membership.ts +57 -0
- package/src/@types/partials.ts +103 -0
- package/src/@types/polls.ts +120 -0
- package/src/@types/read_receipts.ts +61 -0
- package/src/@types/registration.ts +102 -0
- package/src/@types/requests.ts +346 -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 +153 -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 +69 -0
- package/src/@types/uia.ts +24 -0
- package/src/NamespacedValue.ts +121 -0
- package/src/ReEmitter.ts +93 -0
- package/src/ToDeviceMessageQueue.ts +156 -0
- package/src/autodiscovery.ts +505 -0
- package/src/base64.ts +86 -0
- package/src/briij.ts +173 -0
- package/src/browser-index.ts +44 -0
- package/src/client.ts +9031 -0
- package/src/common-crypto/CryptoBackend.ts +295 -0
- package/src/common-crypto/README.md +4 -0
- package/src/common-crypto/key-passphrase.ts +43 -0
- package/src/content-helpers.ts +298 -0
- package/src/content-repo.ts +122 -0
- package/src/crypto/store/base.ts +388 -0
- package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -0
- package/src/crypto/store/indexeddb-crypto-store.ts +555 -0
- package/src/crypto/store/localStorage-crypto-store.ts +409 -0
- package/src/crypto/store/memory-crypto-store.ts +326 -0
- package/src/crypto-api/CryptoEvent.ts +152 -0
- package/src/crypto-api/CryptoEventHandlerMap.ts +42 -0
- package/src/crypto-api/index.ts +1362 -0
- package/src/crypto-api/key-passphrase.ts +58 -0
- package/src/crypto-api/keybackup.ts +114 -0
- package/src/crypto-api/recovery-key.ts +69 -0
- package/src/crypto-api/verification.ts +382 -0
- package/src/digest.ts +34 -0
- package/src/embedded.ts +865 -0
- package/src/errors.ts +87 -0
- package/src/event-mapper.ts +88 -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 +143 -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 +88 -0
- package/src/filter-component.ts +209 -0
- package/src/filter.ts +245 -0
- package/src/http-api/errors.ts +261 -0
- package/src/http-api/fetch.ts +377 -0
- package/src/http-api/index.ts +194 -0
- package/src/http-api/interface.ts +229 -0
- package/src/http-api/method.ts +25 -0
- package/src/http-api/prefix.ts +48 -0
- package/src/http-api/refresh.ts +167 -0
- package/src/http-api/utils.ts +217 -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 +700 -0
- package/src/logger.ts +279 -0
- package/src/matrixrtc/CallMembership.ts +438 -0
- package/src/matrixrtc/EncryptionManager.ts +54 -0
- package/src/matrixrtc/IKeyTransport.ts +63 -0
- package/src/matrixrtc/IMembershipManager.ts +120 -0
- package/src/matrixrtc/LivekitTransport.ts +46 -0
- package/src/matrixrtc/MatrixRTCSession.ts +934 -0
- package/src/matrixrtc/MatrixRTCSessionManager.ts +170 -0
- package/src/matrixrtc/MembershipManager.ts +1122 -0
- package/src/matrixrtc/MembershipManagerActionScheduler.ts +135 -0
- package/src/matrixrtc/RTCEncryptionManager.ts +459 -0
- package/src/matrixrtc/ToDeviceKeyTransport.ts +197 -0
- package/src/matrixrtc/index.ts +24 -0
- package/src/matrixrtc/membershipData/common.ts +27 -0
- package/src/matrixrtc/membershipData/index.ts +19 -0
- package/src/matrixrtc/membershipData/rtc.ts +156 -0
- package/src/matrixrtc/membershipData/session.ts +146 -0
- package/src/matrixrtc/types.ts +227 -0
- package/src/matrixrtc/utils.ts +71 -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 +213 -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 +962 -0
- package/src/models/event-timeline.ts +461 -0
- package/src/models/event.ts +1819 -0
- package/src/models/invites-ignorer-types.ts +58 -0
- package/src/models/invites-ignorer.ts +341 -0
- package/src/models/poll.ts +285 -0
- package/src/models/profile-keys.ts +33 -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 +392 -0
- package/src/models/room-member.ts +486 -0
- package/src/models/room-receipts.ts +439 -0
- package/src/models/room-state.ts +1230 -0
- package/src/models/room-sticky-events.ts +383 -0
- package/src/models/room-summary.ts +78 -0
- package/src/models/room.ts +4067 -0
- package/src/models/search-result.ts +57 -0
- package/src/models/thread.ts +928 -0
- package/src/models/typed-event-emitter.ts +246 -0
- package/src/models/user.ts +302 -0
- package/src/oidc/authorize.ts +279 -0
- package/src/oidc/discovery.ts +67 -0
- package/src/oidc/error.ts +33 -0
- package/src/oidc/index.ts +33 -0
- package/src/oidc/register.ts +163 -0
- package/src/oidc/tokenRefresher.ts +184 -0
- package/src/oidc/validate.ts +265 -0
- package/src/pushprocessor.ts +856 -0
- package/src/randomstring.ts +103 -0
- package/src/realtime-callbacks.ts +191 -0
- package/src/receipt-accumulator.ts +189 -0
- package/src/rendezvous/MSC4108SignInWithQR.ts +443 -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 +272 -0
- package/src/rendezvous/transports/index.ts +17 -0
- package/src/room-hierarchy.ts +152 -0
- package/src/rust-crypto/CrossSigningIdentity.ts +195 -0
- package/src/rust-crypto/DehydratedDeviceManager.ts +392 -0
- package/src/rust-crypto/KeyClaimManager.ts +86 -0
- package/src/rust-crypto/OutgoingRequestProcessor.ts +233 -0
- package/src/rust-crypto/OutgoingRequestsManager.ts +170 -0
- package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +501 -0
- package/src/rust-crypto/RoomEncryptor.ts +362 -0
- package/src/rust-crypto/backup.ts +942 -0
- package/src/rust-crypto/constants.ts +18 -0
- package/src/rust-crypto/device-converter.ts +128 -0
- package/src/rust-crypto/index.ts +251 -0
- package/src/rust-crypto/libolm_migration.ts +532 -0
- package/src/rust-crypto/rust-crypto.ts +2542 -0
- package/src/rust-crypto/secret-storage.ts +60 -0
- package/src/rust-crypto/verification.ts +833 -0
- package/src/scheduler.ts +309 -0
- package/src/secret-storage.ts +714 -0
- package/src/serverCapabilities.ts +146 -0
- package/src/service-types.ts +20 -0
- package/src/sliding-sync-sdk.ts +1005 -0
- package/src/sliding-sync.ts +674 -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 +212 -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 +779 -0
- package/src/sync.ts +2020 -0
- package/src/testing.ts +231 -0
- package/src/thread-utils.ts +31 -0
- package/src/timeline-window.ts +534 -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/roomVersion.ts +35 -0
- package/src/utils.ts +775 -0
- package/src/version-support.ts +50 -0
- package/src/webrtc/audioContext.ts +44 -0
- package/src/webrtc/call.ts +3061 -0
- package/src/webrtc/callEventHandler.ts +425 -0
- package/src/webrtc/callEventTypes.ts +101 -0
- package/src/webrtc/callFeed.ts +364 -0
- package/src/webrtc/groupCall.ts +1729 -0
- package/src/webrtc/groupCallEventHandler.ts +234 -0
- package/src/webrtc/mediaHandler.ts +501 -0
- package/src/webrtc/stats/callFeedStatsReporter.ts +91 -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 +70 -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,469 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
/*
|
|
4
|
+
Copyright 2023-2026 The Matrix.org Foundation C.I.C.
|
|
5
|
+
|
|
6
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
you may not use this file except in compliance with the License.
|
|
8
|
+
You may obtain a copy of the License at
|
|
9
|
+
|
|
10
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
|
|
12
|
+
Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
See the License for the specific language governing permissions and
|
|
16
|
+
limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { deepCompare } from "../utils.js";
|
|
20
|
+
import { logger } from "../logger.js";
|
|
21
|
+
import { computeSlotId, slotIdToDescription } from "./utils.js";
|
|
22
|
+
import { checkRtcMembershipData, computeRtcIdentityRaw, checkSessionsMembershipData, BriijRTCMembershipParseError } from "./membershipData/index.js";
|
|
23
|
+
import { EventType } from "../@types/event.js";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The default duration in milliseconds that a membership is considered valid for.
|
|
27
|
+
* Ordinarily the client responsible for the session will update the membership before it expires.
|
|
28
|
+
* We use this duration as the fallback case where stale sessions are present for some reason.
|
|
29
|
+
*/
|
|
30
|
+
export var DEFAULT_EXPIRE_DURATION = 1000 * 60 * 60 * 4;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Describes the source event type that provided the membership data.
|
|
34
|
+
*/
|
|
35
|
+
var MembershipKind = /*#__PURE__*/function (MembershipKind) {
|
|
36
|
+
/**
|
|
37
|
+
* The modern MSC4143 format event.
|
|
38
|
+
*/
|
|
39
|
+
MembershipKind["RTC"] = "rtc";
|
|
40
|
+
/**
|
|
41
|
+
* The legacy call event type.
|
|
42
|
+
*/
|
|
43
|
+
MembershipKind["Session"] = "session";
|
|
44
|
+
return MembershipKind;
|
|
45
|
+
}(MembershipKind || {});
|
|
46
|
+
// TODO: Rename to RtcMembership once we removed the legacy SessionMembership is removed, to avoid confusion.
|
|
47
|
+
export class CallMembership {
|
|
48
|
+
/**
|
|
49
|
+
* Parse the membershipdata from a call membership event.
|
|
50
|
+
* @param matrixEvent The Matrix event to read.
|
|
51
|
+
* @returns MembershipData in either MembershipKind.RTC or MembershipKind.Session format.
|
|
52
|
+
* @throws If the content is neither format.
|
|
53
|
+
*/
|
|
54
|
+
static membershipDataFromBriijEvent(matrixEvent) {
|
|
55
|
+
var sender = matrixEvent.getSender();
|
|
56
|
+
var evType = matrixEvent.getType();
|
|
57
|
+
var data = matrixEvent.getContent();
|
|
58
|
+
if (sender === undefined) throw new Error("matrixEvent is missing sender field");
|
|
59
|
+
try {
|
|
60
|
+
// Event types are strictly checked here.
|
|
61
|
+
if (evType === EventType.RTCMembership && checkRtcMembershipData(data, sender)) {
|
|
62
|
+
return {
|
|
63
|
+
kind: MembershipKind.RTC,
|
|
64
|
+
data
|
|
65
|
+
};
|
|
66
|
+
} else if (evType === EventType.GroupCallMemberPrefix && checkSessionsMembershipData(data)) {
|
|
67
|
+
return {
|
|
68
|
+
kind: MembershipKind.Session,
|
|
69
|
+
data
|
|
70
|
+
};
|
|
71
|
+
} else {
|
|
72
|
+
throw Error("'".concat(evType, " is not a known call membership type"));
|
|
73
|
+
}
|
|
74
|
+
} catch (ex) {
|
|
75
|
+
if (ex instanceof BriijRTCMembershipParseError) {
|
|
76
|
+
logger.debug("CallMembership.BriijRTCMembershipParseError provided invalid data", data);
|
|
77
|
+
}
|
|
78
|
+
throw ex;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Parse the contents of a BriijEvent and create a CallMembership instance.
|
|
84
|
+
* @param matrixEvent The Matrix event to read.
|
|
85
|
+
*/
|
|
86
|
+
static parseFromEvent(matrixEvent) {
|
|
87
|
+
var _this = this;
|
|
88
|
+
return _asyncToGenerator(function* () {
|
|
89
|
+
var membershipData = _this.membershipDataFromBriijEvent(matrixEvent);
|
|
90
|
+
var rtcBackendIdentity = membershipData.kind === MembershipKind.RTC ? yield computeRtcIdentityRaw(membershipData.data.member.user_id, membershipData.data.member.device_id, membershipData.data.member.id) : "".concat(matrixEvent.getSender(), ":").concat(membershipData.data.device_id);
|
|
91
|
+
return new CallMembership(matrixEvent, membershipData, rtcBackendIdentity);
|
|
92
|
+
})();
|
|
93
|
+
}
|
|
94
|
+
static equal(a, b) {
|
|
95
|
+
return deepCompare(a === null || a === void 0 ? void 0 : a.membershipData, b === null || b === void 0 ? void 0 : b.membershipData);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Use `parseFromEvent`.
|
|
99
|
+
* Constructor should only be used by tests.
|
|
100
|
+
* @private
|
|
101
|
+
* @param matrixEvent
|
|
102
|
+
* @param membershipData
|
|
103
|
+
* @param rtcBackendIdentity
|
|
104
|
+
*/
|
|
105
|
+
constructor(/** The Matrix event that this membership is based on */
|
|
106
|
+
matrixEvent, membershipData, rtcBackendIdentity) {
|
|
107
|
+
this.matrixEvent = matrixEvent;
|
|
108
|
+
this.membershipData = membershipData;
|
|
109
|
+
this.rtcBackendIdentity = rtcBackendIdentity;
|
|
110
|
+
_defineProperty(this, "logger", void 0);
|
|
111
|
+
/** The parsed data from the Matrix event.
|
|
112
|
+
* To access checked eventId and sender from the matrixEvent.
|
|
113
|
+
* Class construction will fail if these values cannot get obtained. */
|
|
114
|
+
_defineProperty(this, "matrixEventData", void 0);
|
|
115
|
+
var eventId = matrixEvent.getId();
|
|
116
|
+
var sender = matrixEvent.getSender();
|
|
117
|
+
if (eventId === undefined) throw new Error("parentEvent is missing eventId field");
|
|
118
|
+
if (sender === undefined) throw new Error("parentEvent is missing sender field");
|
|
119
|
+
this.logger = logger.getChild("[CallMembership ".concat(sender, ":").concat(this.deviceId, "]"));
|
|
120
|
+
this.matrixEventData = {
|
|
121
|
+
eventId,
|
|
122
|
+
sender
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** @deprecated use userId instead */
|
|
127
|
+
get sender() {
|
|
128
|
+
return this.userId;
|
|
129
|
+
}
|
|
130
|
+
get userId() {
|
|
131
|
+
var {
|
|
132
|
+
kind,
|
|
133
|
+
data
|
|
134
|
+
} = this.membershipData;
|
|
135
|
+
switch (kind) {
|
|
136
|
+
case MembershipKind.RTC:
|
|
137
|
+
return data.member.user_id;
|
|
138
|
+
case MembershipKind.Session:
|
|
139
|
+
default:
|
|
140
|
+
return this.matrixEventData.sender;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
get eventId() {
|
|
144
|
+
return this.matrixEventData.eventId;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* The ID of the MatrixRTC slot that this membership belongs to (format `{application}#{id}`).
|
|
149
|
+
* This is computed in case SessionMembershipData is used.
|
|
150
|
+
*/
|
|
151
|
+
get slotId() {
|
|
152
|
+
var _this$logger2;
|
|
153
|
+
var {
|
|
154
|
+
kind,
|
|
155
|
+
data
|
|
156
|
+
} = this.membershipData;
|
|
157
|
+
if (data.application === "m.call") {
|
|
158
|
+
switch (kind) {
|
|
159
|
+
case MembershipKind.RTC:
|
|
160
|
+
return data.slot_id;
|
|
161
|
+
case MembershipKind.Session:
|
|
162
|
+
default:
|
|
163
|
+
{
|
|
164
|
+
var [application, id] = [data.application, data.call_id];
|
|
165
|
+
|
|
166
|
+
// INFO_SLOT_ID_LEGACY_CASE (search for all occurances of this INFO to get the full picture)
|
|
167
|
+
// The spec got changed to use `"ROOM"` instead of `""` empyt string for the implicit default call.
|
|
168
|
+
// State events still are sent with `""` however. To find other events that should end up in the same call,
|
|
169
|
+
// we use the slotId.
|
|
170
|
+
// Since the CallMembership is the public representation of a rtc.member event, we just pretend it is a
|
|
171
|
+
// "ROOM" slotId/call_id.
|
|
172
|
+
// This makes all the remote members work with just this simple trick.
|
|
173
|
+
//
|
|
174
|
+
// We of course now need to be careful when sending legacy events (state events)
|
|
175
|
+
// They get a slotDescription containing "ROOM" since this is what we use starting at the time this comment
|
|
176
|
+
// is commited.
|
|
177
|
+
//
|
|
178
|
+
// See the Other INFO_SLOT_ID_LEGACY_CASE comments to see where we revert back to "" just before sending the event.
|
|
179
|
+
var compatibilityAdaptedId;
|
|
180
|
+
if (id === "") {
|
|
181
|
+
var _this$logger;
|
|
182
|
+
compatibilityAdaptedId = "ROOM";
|
|
183
|
+
(_this$logger = this.logger) === null || _this$logger === void 0 || _this$logger.info("use slotId compat hack emptyString -> ROOM");
|
|
184
|
+
} else {
|
|
185
|
+
compatibilityAdaptedId = id;
|
|
186
|
+
}
|
|
187
|
+
return computeSlotId({
|
|
188
|
+
application,
|
|
189
|
+
id: compatibilityAdaptedId
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
(_this$logger2 = this.logger) === null || _this$logger2 === void 0 || _this$logger2.info("NOT using slotId compat hack emptyString -> ROOM");
|
|
195
|
+
// This is what the function should look like for any other application that did not
|
|
196
|
+
// go through a `""`=> `"ROOM"` rename
|
|
197
|
+
switch (kind) {
|
|
198
|
+
case MembershipKind.RTC:
|
|
199
|
+
return data.slot_id;
|
|
200
|
+
case MembershipKind.Session:
|
|
201
|
+
default:
|
|
202
|
+
return computeSlotId({
|
|
203
|
+
application: data.application,
|
|
204
|
+
id: data.call_id
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
get deviceId() {
|
|
209
|
+
var {
|
|
210
|
+
kind,
|
|
211
|
+
data
|
|
212
|
+
} = this.membershipData;
|
|
213
|
+
switch (kind) {
|
|
214
|
+
case MembershipKind.RTC:
|
|
215
|
+
return data.member.device_id;
|
|
216
|
+
case MembershipKind.Session:
|
|
217
|
+
default:
|
|
218
|
+
return data.device_id;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
get callIntent() {
|
|
222
|
+
var intent = this.applicationData["m.call.intent"];
|
|
223
|
+
if (typeof intent === "string") {
|
|
224
|
+
return intent;
|
|
225
|
+
}
|
|
226
|
+
this.logger.warn("RTC membership has invalid m.call.intent");
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Parsed `slot_id` (format `{application}#{id}`) into its components (application and id).
|
|
232
|
+
*/
|
|
233
|
+
get slotDescription() {
|
|
234
|
+
var {
|
|
235
|
+
kind,
|
|
236
|
+
data
|
|
237
|
+
} = this.membershipData;
|
|
238
|
+
if (kind === MembershipKind.RTC) {
|
|
239
|
+
var id = data.slot_id.slice("".concat(data.application.type, "#").length);
|
|
240
|
+
return {
|
|
241
|
+
application: data.application.type,
|
|
242
|
+
id
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return slotIdToDescription(this.slotId);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* The application `type`.
|
|
250
|
+
* @deprecated Use @see applicationData
|
|
251
|
+
*/
|
|
252
|
+
get application() {
|
|
253
|
+
return this.applicationData.type;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Information about the application being used for the RTC session.
|
|
258
|
+
* May contain extra keys specific to the application.
|
|
259
|
+
*/
|
|
260
|
+
get applicationData() {
|
|
261
|
+
var {
|
|
262
|
+
kind,
|
|
263
|
+
data
|
|
264
|
+
} = this.membershipData;
|
|
265
|
+
switch (kind) {
|
|
266
|
+
case MembershipKind.RTC:
|
|
267
|
+
return data.application;
|
|
268
|
+
case MembershipKind.Session:
|
|
269
|
+
default:
|
|
270
|
+
// SessionData does not have application data as such. We return specific
|
|
271
|
+
// properties in use by other getters in this class, for compatibility.
|
|
272
|
+
return {
|
|
273
|
+
"type": data.application,
|
|
274
|
+
"m.call.intent": data["m.call.intent"]
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/** @deprecated scope is not used and will be removed in future versions. replaced by application specific types.*/
|
|
280
|
+
get scope() {
|
|
281
|
+
var {
|
|
282
|
+
kind,
|
|
283
|
+
data
|
|
284
|
+
} = this.membershipData;
|
|
285
|
+
switch (kind) {
|
|
286
|
+
case MembershipKind.RTC:
|
|
287
|
+
return undefined;
|
|
288
|
+
case MembershipKind.Session:
|
|
289
|
+
default:
|
|
290
|
+
return data.scope;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* This computes the membership ID for the membership.
|
|
296
|
+
* For the sticky event based rtcSessionData this is trivial it is `member.id`.
|
|
297
|
+
* This is not supposed to be used to identity on an rtc backend. This is just a nouance for
|
|
298
|
+
* a generated (sha256) anonymised identity. Only send `rtcBackendIdentity` to any rtc backend service.
|
|
299
|
+
*
|
|
300
|
+
* For the legacy sessionMemberEvents it is a bit more complex. Here we sometimes do not have this data
|
|
301
|
+
* in the event content and we expected the SFU and the client to use `${this.matrixEventData.sender}:${data.device_id}`.
|
|
302
|
+
*
|
|
303
|
+
* So if there is no membershipID we use the hard coded jwt id default (`${this.matrixEventData.sender}:${data.device_id}`)
|
|
304
|
+
* value (used until version 0.16.0)
|
|
305
|
+
*
|
|
306
|
+
* It is also possible for a session event to set a custom membershipID. in that case this will be used.
|
|
307
|
+
*/
|
|
308
|
+
get memberId() {
|
|
309
|
+
var _data$membershipID;
|
|
310
|
+
// the createdTs behaves equivalent to the membershipID.
|
|
311
|
+
// we only need the field for the legacy member events where we needed to update them
|
|
312
|
+
// synapse ignores sending state events if they have the same content.
|
|
313
|
+
var {
|
|
314
|
+
kind,
|
|
315
|
+
data
|
|
316
|
+
} = this.membershipData;
|
|
317
|
+
switch (kind) {
|
|
318
|
+
case "rtc":
|
|
319
|
+
return data.member.id;
|
|
320
|
+
case "session":
|
|
321
|
+
return (// best case we have a client already publishing the right custom membershipId
|
|
322
|
+
(_data$membershipID = data.membershipID) !== null && _data$membershipID !== void 0 ? _data$membershipID : // alternativly we use the hard coded jwt id defuatl value (used until version 0.16.0)
|
|
323
|
+
"".concat(this.matrixEventData.sender, ":").concat(data.device_id)
|
|
324
|
+
);
|
|
325
|
+
default:
|
|
326
|
+
throw Error("Not possible to get memberID without knowing the membership event kind");
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* @deprecated renamed to `memberId`
|
|
332
|
+
*/
|
|
333
|
+
get membershipID() {
|
|
334
|
+
return this.memberId;
|
|
335
|
+
}
|
|
336
|
+
createdTs() {
|
|
337
|
+
var _data$created_ts;
|
|
338
|
+
var {
|
|
339
|
+
kind,
|
|
340
|
+
data
|
|
341
|
+
} = this.membershipData;
|
|
342
|
+
switch (kind) {
|
|
343
|
+
case MembershipKind.RTC:
|
|
344
|
+
// TODO we need to read the referenced (relation) event if available to get the real created_ts
|
|
345
|
+
return this.matrixEvent.getTs();
|
|
346
|
+
case MembershipKind.Session:
|
|
347
|
+
default:
|
|
348
|
+
return (_data$created_ts = data.created_ts) !== null && _data$created_ts !== void 0 ? _data$created_ts : this.matrixEvent.getTs();
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Gets the absolute expiry timestamp of the membership.
|
|
354
|
+
* @returns The absolute expiry time of the membership as a unix timestamp in milliseconds or undefined if not applicable
|
|
355
|
+
*/
|
|
356
|
+
getAbsoluteExpiry() {
|
|
357
|
+
var _data$expires;
|
|
358
|
+
var {
|
|
359
|
+
kind,
|
|
360
|
+
data
|
|
361
|
+
} = this.membershipData;
|
|
362
|
+
switch (kind) {
|
|
363
|
+
case MembershipKind.RTC:
|
|
364
|
+
return undefined;
|
|
365
|
+
case MembershipKind.Session:
|
|
366
|
+
default:
|
|
367
|
+
// TODO: calculate this from the BriijRTCSession join configuration directly
|
|
368
|
+
return this.createdTs() + ((_data$expires = data.expires) !== null && _data$expires !== void 0 ? _data$expires : DEFAULT_EXPIRE_DURATION);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* @returns The number of milliseconds until the membership expires or undefined if applicable
|
|
374
|
+
* @deprecated Not used by RTC events.
|
|
375
|
+
*/
|
|
376
|
+
getMsUntilExpiry() {
|
|
377
|
+
var {
|
|
378
|
+
kind
|
|
379
|
+
} = this.membershipData;
|
|
380
|
+
if (kind === MembershipKind.Session) {
|
|
381
|
+
var absExpiry = this.getAbsoluteExpiry();
|
|
382
|
+
if (absExpiry) {
|
|
383
|
+
// Assume that local clock is sufficiently in sync with other clocks in the distributed system.
|
|
384
|
+
// We used to try and adjust for the local clock being skewed, but there are cases where this is not accurate.
|
|
385
|
+
// The current implementation allows for the local clock to be -infinity to +BriijRTCSession.MEMBERSHIP_EXPIRY_TIME/2
|
|
386
|
+
return absExpiry - Date.now();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return undefined;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* @returns true if the membership has expired, otherwise false
|
|
394
|
+
*/
|
|
395
|
+
isExpired() {
|
|
396
|
+
var {
|
|
397
|
+
kind
|
|
398
|
+
} = this.membershipData;
|
|
399
|
+
switch (kind) {
|
|
400
|
+
case MembershipKind.RTC:
|
|
401
|
+
return false;
|
|
402
|
+
case MembershipKind.Session:
|
|
403
|
+
default:
|
|
404
|
+
return this.getMsUntilExpiry() <= 0;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* ## RTC Membership
|
|
410
|
+
* Gets the primary transport to use for this RTC membership (m.rtc.member).
|
|
411
|
+
* This will return the primary transport that is used by this call membership to publish their media.
|
|
412
|
+
* Directly relates to the `rtc_transports` field.
|
|
413
|
+
*
|
|
414
|
+
* ## Legacy session membership
|
|
415
|
+
* In case of a legacy session membership (m.call.member) this will return the selected transport where
|
|
416
|
+
* media is published. How this selection happens depends on the `focus_active` field of the session membership.
|
|
417
|
+
* If the `focus_selection` is `oldest_membership` this will return the transport of the oldest membership
|
|
418
|
+
* in the room (based on the `created_ts` field of the session membership).
|
|
419
|
+
* If the `focus_selection` is `multi_sfu` it will return the first transport of the `foci_preferred` list.
|
|
420
|
+
* (`multi_sfu` is equivalent to how `m.rtc.member` `rtc_transports` work).
|
|
421
|
+
* @param oldestMembership For backwards compatibility with session membership (legacy). Unused in case of RTC membership.
|
|
422
|
+
* Always required to make the consumer not care if it deals with RTC or session memberships.
|
|
423
|
+
* @returns The transport this membership uses to publish media or undefined if no transport is available.
|
|
424
|
+
*/
|
|
425
|
+
getTransport(oldestMembership) {
|
|
426
|
+
var {
|
|
427
|
+
kind,
|
|
428
|
+
data
|
|
429
|
+
} = this.membershipData;
|
|
430
|
+
switch (kind) {
|
|
431
|
+
case MembershipKind.RTC:
|
|
432
|
+
return data.rtc_transports[0];
|
|
433
|
+
case MembershipKind.Session:
|
|
434
|
+
switch (data.focus_active.focus_selection) {
|
|
435
|
+
case "oldest_membership":
|
|
436
|
+
if (CallMembership.equal(this, oldestMembership)) return data.foci_preferred[0];
|
|
437
|
+
if (oldestMembership !== undefined) return oldestMembership.getTransport(oldestMembership);
|
|
438
|
+
break;
|
|
439
|
+
case "multi_sfu":
|
|
440
|
+
return data.foci_preferred[0];
|
|
441
|
+
default:
|
|
442
|
+
// `focus_selection` not understood.
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
break;
|
|
446
|
+
default:
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* The value of the `rtc_transports` field for RTC memberships (m.rtc.member).
|
|
453
|
+
* Or the value of the `foci_preferred` field for legacy session memberships (m.call.member).
|
|
454
|
+
*/
|
|
455
|
+
get transports() {
|
|
456
|
+
var {
|
|
457
|
+
kind,
|
|
458
|
+
data
|
|
459
|
+
} = this.membershipData;
|
|
460
|
+
switch (kind) {
|
|
461
|
+
case MembershipKind.RTC:
|
|
462
|
+
return data.rtc_transports;
|
|
463
|
+
case MembershipKind.Session:
|
|
464
|
+
default:
|
|
465
|
+
return data.foci_preferred;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=CallMembership.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallMembership.js","names":["deepCompare","logger","computeSlotId","slotIdToDescription","checkRtcMembershipData","computeRtcIdentityRaw","checkSessionsMembershipData","BriijRTCMembershipParseError","EventType","DEFAULT_EXPIRE_DURATION","MembershipKind","CallMembership","membershipDataFromBriijEvent","matrixEvent","sender","getSender","evType","getType","data","getContent","undefined","Error","RTCMembership","kind","RTC","GroupCallMemberPrefix","Session","concat","ex","debug","parseFromEvent","_this","_asyncToGenerator","membershipData","rtcBackendIdentity","member","user_id","device_id","id","equal","a","b","constructor","_defineProperty","eventId","getId","getChild","deviceId","matrixEventData","userId","slotId","_this$logger2","application","slot_id","call_id","compatibilityAdaptedId","_this$logger","info","callIntent","intent","applicationData","warn","slotDescription","slice","type","length","scope","memberId","_data$membershipID","membershipID","createdTs","_data$created_ts","getTs","created_ts","getAbsoluteExpiry","_data$expires","expires","getMsUntilExpiry","absExpiry","Date","now","isExpired","getTransport","oldestMembership","rtc_transports","focus_active","focus_selection","foci_preferred","transports"],"sources":["../../src/matrixrtc/CallMembership.ts"],"sourcesContent":["/*\nCopyright 2023-2026 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 { deepCompare } from \"../utils.ts\";\nimport { type RTCCallIntent, type Transport, type SlotDescription } from \"./types.ts\";\nimport { type BriijEvent } from \"../models/event.ts\";\nimport { type Logger, logger } from \"../logger.ts\";\nimport { computeSlotId, slotIdToDescription } from \"./utils.ts\";\nimport {\n checkRtcMembershipData,\n computeRtcIdentityRaw,\n type RtcMembershipData,\n checkSessionsMembershipData,\n type SessionMembershipData,\n BriijRTCMembershipParseError,\n} from \"./membershipData/index.ts\";\nimport { EventType } from \"../@types/event.ts\";\n\n/**\n * The default duration in milliseconds that a membership is considered valid for.\n * Ordinarily the client responsible for the session will update the membership before it expires.\n * We use this duration as the fallback case where stale sessions are present for some reason.\n */\nexport const DEFAULT_EXPIRE_DURATION = 1000 * 60 * 60 * 4;\n\n/**\n * Describes the source event type that provided the membership data.\n */\nenum MembershipKind {\n /**\n * The modern MSC4143 format event.\n */\n RTC = \"rtc\",\n /**\n * The legacy call event type.\n */\n Session = \"session\",\n}\n\ntype MembershipData =\n | { kind: MembershipKind.RTC; data: RtcMembershipData }\n | { kind: MembershipKind.Session; data: SessionMembershipData };\n\ntype LimitedEvent = Pick<BriijEvent, \"getId\" | \"getSender\" | \"getTs\" | \"getType\" | \"getContent\">;\n// TODO: Rename to RtcMembership once we removed the legacy SessionMembership is removed, to avoid confusion.\nexport class CallMembership {\n /**\n * Parse the membershipdata from a call membership event.\n * @param matrixEvent The Matrix event to read.\n * @returns MembershipData in either MembershipKind.RTC or MembershipKind.Session format.\n * @throws If the content is neither format.\n */\n public static membershipDataFromBriijEvent(matrixEvent: LimitedEvent): MembershipData {\n const sender = matrixEvent.getSender();\n const evType = matrixEvent.getType();\n const data = matrixEvent.getContent();\n if (sender === undefined) throw new Error(\"matrixEvent is missing sender field\");\n try {\n // Event types are strictly checked here.\n if (evType === EventType.RTCMembership && checkRtcMembershipData(data, sender)) {\n return { kind: MembershipKind.RTC, data };\n } else if (evType === EventType.GroupCallMemberPrefix && checkSessionsMembershipData(data)) {\n return { kind: MembershipKind.Session, data };\n } else {\n throw Error(`'${evType} is not a known call membership type`);\n }\n } catch (ex) {\n if (ex instanceof BriijRTCMembershipParseError) {\n logger.debug(\"CallMembership.BriijRTCMembershipParseError provided invalid data\", data);\n }\n throw ex;\n }\n }\n\n /**\n * Parse the contents of a BriijEvent and create a CallMembership instance.\n * @param matrixEvent The Matrix event to read.\n */\n public static async parseFromEvent(matrixEvent: LimitedEvent): Promise<CallMembership> {\n const membershipData: MembershipData = this.membershipDataFromBriijEvent(matrixEvent);\n const rtcBackendIdentity =\n membershipData.kind === MembershipKind.RTC\n ? await computeRtcIdentityRaw(\n membershipData.data.member.user_id,\n membershipData.data.member.device_id,\n membershipData.data.member.id,\n )\n : `${matrixEvent.getSender()}:${membershipData.data.device_id}`;\n return new CallMembership(matrixEvent, membershipData, rtcBackendIdentity);\n }\n\n public static equal(a?: CallMembership, b?: CallMembership): boolean {\n return deepCompare(a?.membershipData, b?.membershipData);\n }\n\n private logger: Logger;\n\n /** The parsed data from the Matrix event.\n * To access checked eventId and sender from the matrixEvent.\n * Class construction will fail if these values cannot get obtained. */\n private readonly matrixEventData: { eventId: string; sender: string };\n\n /**\n * Use `parseFromEvent`.\n * Constructor should only be used by tests.\n * @private\n * @param matrixEvent\n * @param membershipData\n * @param rtcBackendIdentity\n */\n public constructor(\n /** The Matrix event that this membership is based on */\n private readonly matrixEvent: LimitedEvent,\n private readonly membershipData: MembershipData,\n public readonly rtcBackendIdentity: string,\n ) {\n const eventId = matrixEvent.getId();\n const sender = matrixEvent.getSender();\n\n if (eventId === undefined) throw new Error(\"parentEvent is missing eventId field\");\n if (sender === undefined) throw new Error(\"parentEvent is missing sender field\");\n\n this.logger = logger.getChild(`[CallMembership ${sender}:${this.deviceId}]`);\n this.matrixEventData = { eventId, sender };\n }\n\n /** @deprecated use userId instead */\n public get sender(): string {\n return this.userId;\n }\n\n public get userId(): string {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return data.member.user_id;\n case MembershipKind.Session:\n default:\n return this.matrixEventData.sender;\n }\n }\n\n public get eventId(): string {\n return this.matrixEventData.eventId;\n }\n\n /**\n * The ID of the MatrixRTC slot that this membership belongs to (format `{application}#{id}`).\n * This is computed in case SessionMembershipData is used.\n */\n public get slotId(): string {\n const { kind, data } = this.membershipData;\n if (data.application === \"m.call\") {\n switch (kind) {\n case MembershipKind.RTC:\n return data.slot_id;\n case MembershipKind.Session:\n default: {\n const [application, id] = [data.application, data.call_id];\n\n // INFO_SLOT_ID_LEGACY_CASE (search for all occurances of this INFO to get the full picture)\n // The spec got changed to use `\"ROOM\"` instead of `\"\"` empyt string for the implicit default call.\n // State events still are sent with `\"\"` however. To find other events that should end up in the same call,\n // we use the slotId.\n // Since the CallMembership is the public representation of a rtc.member event, we just pretend it is a\n // \"ROOM\" slotId/call_id.\n // This makes all the remote members work with just this simple trick.\n //\n // We of course now need to be careful when sending legacy events (state events)\n // They get a slotDescription containing \"ROOM\" since this is what we use starting at the time this comment\n // is commited.\n //\n // See the Other INFO_SLOT_ID_LEGACY_CASE comments to see where we revert back to \"\" just before sending the event.\n let compatibilityAdaptedId: string;\n if (id === \"\") {\n compatibilityAdaptedId = \"ROOM\";\n this.logger?.info(\"use slotId compat hack emptyString -> ROOM\");\n } else {\n compatibilityAdaptedId = id;\n }\n return computeSlotId({\n application,\n id: compatibilityAdaptedId,\n });\n }\n }\n }\n\n this.logger?.info(\"NOT using slotId compat hack emptyString -> ROOM\");\n // This is what the function should look like for any other application that did not\n // go through a `\"\"`=> `\"ROOM\"` rename\n switch (kind) {\n case MembershipKind.RTC:\n return data.slot_id;\n case MembershipKind.Session:\n default:\n return computeSlotId({ application: data.application, id: data.call_id });\n }\n }\n\n public get deviceId(): string {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return data.member.device_id;\n case MembershipKind.Session:\n default:\n return data.device_id;\n }\n }\n\n public get callIntent(): RTCCallIntent | undefined {\n const intent = this.applicationData[\"m.call.intent\"];\n if (typeof intent === \"string\") {\n return intent;\n }\n this.logger.warn(\"RTC membership has invalid m.call.intent\");\n return undefined;\n }\n\n /**\n * Parsed `slot_id` (format `{application}#{id}`) into its components (application and id).\n */\n public get slotDescription(): SlotDescription {\n const { kind, data } = this.membershipData;\n if (kind === MembershipKind.RTC) {\n const id = data.slot_id.slice(`${data.application.type}#`.length);\n return { application: data.application.type, id };\n }\n return slotIdToDescription(this.slotId);\n }\n\n /**\n * The application `type`.\n * @deprecated Use @see applicationData\n */\n public get application(): string {\n return this.applicationData.type;\n }\n\n /**\n * Information about the application being used for the RTC session.\n * May contain extra keys specific to the application.\n */\n public get applicationData(): { type: string; [key: string]: unknown } {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return data.application;\n case MembershipKind.Session:\n default:\n // SessionData does not have application data as such. We return specific\n // properties in use by other getters in this class, for compatibility.\n return { \"type\": data.application, \"m.call.intent\": data[\"m.call.intent\"] };\n }\n }\n\n /** @deprecated scope is not used and will be removed in future versions. replaced by application specific types.*/\n public get scope(): SessionMembershipData[\"scope\"] | undefined {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return undefined;\n case MembershipKind.Session:\n default:\n return data.scope;\n }\n }\n\n /**\n * This computes the membership ID for the membership.\n * For the sticky event based rtcSessionData this is trivial it is `member.id`.\n * This is not supposed to be used to identity on an rtc backend. This is just a nouance for\n * a generated (sha256) anonymised identity. Only send `rtcBackendIdentity` to any rtc backend service.\n *\n * For the legacy sessionMemberEvents it is a bit more complex. Here we sometimes do not have this data\n * in the event content and we expected the SFU and the client to use `${this.matrixEventData.sender}:${data.device_id}`.\n *\n * So if there is no membershipID we use the hard coded jwt id default (`${this.matrixEventData.sender}:${data.device_id}`)\n * value (used until version 0.16.0)\n *\n * It is also possible for a session event to set a custom membershipID. in that case this will be used.\n */\n public get memberId(): string {\n // the createdTs behaves equivalent to the membershipID.\n // we only need the field for the legacy member events where we needed to update them\n // synapse ignores sending state events if they have the same content.\n const { kind, data } = this.membershipData;\n switch (kind) {\n case \"rtc\":\n return data.member.id;\n case \"session\":\n return (\n // best case we have a client already publishing the right custom membershipId\n data.membershipID ??\n // alternativly we use the hard coded jwt id defuatl value (used until version 0.16.0)\n `${this.matrixEventData.sender}:${data.device_id}`\n );\n default:\n throw Error(\"Not possible to get memberID without knowing the membership event kind\");\n }\n }\n\n /**\n * @deprecated renamed to `memberId`\n */\n public get membershipID(): string {\n return this.memberId;\n }\n\n public createdTs(): number {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n // TODO we need to read the referenced (relation) event if available to get the real created_ts\n return this.matrixEvent.getTs();\n case MembershipKind.Session:\n default:\n return data.created_ts ?? this.matrixEvent.getTs();\n }\n }\n\n /**\n * Gets the absolute expiry timestamp of the membership.\n * @returns The absolute expiry time of the membership as a unix timestamp in milliseconds or undefined if not applicable\n */\n public getAbsoluteExpiry(): number | undefined {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return undefined;\n case MembershipKind.Session:\n default:\n // TODO: calculate this from the BriijRTCSession join configuration directly\n return this.createdTs() + (data.expires ?? DEFAULT_EXPIRE_DURATION);\n }\n }\n\n /**\n * @returns The number of milliseconds until the membership expires or undefined if applicable\n * @deprecated Not used by RTC events.\n */\n public getMsUntilExpiry(): number | undefined {\n const { kind } = this.membershipData;\n if (kind === MembershipKind.Session) {\n const absExpiry = this.getAbsoluteExpiry();\n if (absExpiry) {\n // Assume that local clock is sufficiently in sync with other clocks in the distributed system.\n // We used to try and adjust for the local clock being skewed, but there are cases where this is not accurate.\n // The current implementation allows for the local clock to be -infinity to +BriijRTCSession.MEMBERSHIP_EXPIRY_TIME/2\n return absExpiry - Date.now();\n }\n }\n return undefined;\n }\n\n /**\n * @returns true if the membership has expired, otherwise false\n */\n public isExpired(): boolean {\n const { kind } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return false;\n case MembershipKind.Session:\n default:\n return this.getMsUntilExpiry()! <= 0;\n }\n }\n\n /**\n * ## RTC Membership\n * Gets the primary transport to use for this RTC membership (m.rtc.member).\n * This will return the primary transport that is used by this call membership to publish their media.\n * Directly relates to the `rtc_transports` field.\n *\n * ## Legacy session membership\n * In case of a legacy session membership (m.call.member) this will return the selected transport where\n * media is published. How this selection happens depends on the `focus_active` field of the session membership.\n * If the `focus_selection` is `oldest_membership` this will return the transport of the oldest membership\n * in the room (based on the `created_ts` field of the session membership).\n * If the `focus_selection` is `multi_sfu` it will return the first transport of the `foci_preferred` list.\n * (`multi_sfu` is equivalent to how `m.rtc.member` `rtc_transports` work).\n * @param oldestMembership For backwards compatibility with session membership (legacy). Unused in case of RTC membership.\n * Always required to make the consumer not care if it deals with RTC or session memberships.\n * @returns The transport this membership uses to publish media or undefined if no transport is available.\n */\n public getTransport(oldestMembership: CallMembership): Transport | undefined {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return data.rtc_transports[0];\n case MembershipKind.Session:\n switch (data.focus_active.focus_selection) {\n case \"oldest_membership\":\n if (CallMembership.equal(this, oldestMembership)) return data.foci_preferred[0];\n if (oldestMembership !== undefined) return oldestMembership.getTransport(oldestMembership);\n break;\n case \"multi_sfu\":\n return data.foci_preferred[0];\n default:\n // `focus_selection` not understood.\n return undefined;\n }\n break;\n default:\n return undefined;\n }\n }\n\n /**\n * The value of the `rtc_transports` field for RTC memberships (m.rtc.member).\n * Or the value of the `foci_preferred` field for legacy session memberships (m.call.member).\n */\n public get transports(): Transport[] {\n const { kind, data } = this.membershipData;\n switch (kind) {\n case MembershipKind.RTC:\n return data.rtc_transports;\n case MembershipKind.Session:\n default:\n return data.foci_preferred;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type EncryptionConfig } from "./MatrixRTCSession.ts";
|
|
2
|
+
import { type CallMembership } from "./CallMembership.ts";
|
|
3
|
+
import { type EncryptionKeyMapKey } from "./types.ts";
|
|
4
|
+
/**
|
|
5
|
+
* The string used for the keys in the the encryption key map.
|
|
6
|
+
* `@bob:examle.org:DEVICEID(UUIDRANDOM_MEMBERID_RANDOMUUID)`
|
|
7
|
+
*/
|
|
8
|
+
export declare function getEncryptionKeyMapKey(membership: CallMembershipIdentityParts): EncryptionKeyMapKey;
|
|
9
|
+
/**
|
|
10
|
+
* This interface is for testing and for making it possible to interchange the encryption manager.
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export interface IEncryptionManager {
|
|
14
|
+
/**
|
|
15
|
+
* Joins the encryption manager with the provided configuration.
|
|
16
|
+
*
|
|
17
|
+
* @param joinConfig - The configuration for joining encryption, or undefined
|
|
18
|
+
* if no specific configuration is provided.
|
|
19
|
+
*/
|
|
20
|
+
join(joinConfig: EncryptionConfig | undefined): void;
|
|
21
|
+
/**
|
|
22
|
+
* Leaves the encryption manager, cleaning up any associated resources.
|
|
23
|
+
*/
|
|
24
|
+
leave(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Called from the BriijRTCSession when the memberships in this session updated.
|
|
27
|
+
*
|
|
28
|
+
* @param oldMemberships - The previous state of call memberships before the update.
|
|
29
|
+
*/
|
|
30
|
+
onMembershipsUpdate(oldMemberships: CallMembership[]): void;
|
|
31
|
+
/**
|
|
32
|
+
* Retrieves the encryption keys currently managed by the encryption manager.
|
|
33
|
+
*
|
|
34
|
+
* @returns A map of participant IDs to their encryption keys.
|
|
35
|
+
*/
|
|
36
|
+
getEncryptionKeys(): ReadonlyMap<EncryptionKeyMapKey, ReadonlyArray<{
|
|
37
|
+
key: Uint8Array<ArrayBuffer>;
|
|
38
|
+
keyIndex: number;
|
|
39
|
+
membership: CallMembershipIdentityParts;
|
|
40
|
+
rtcBackendIdentity: string;
|
|
41
|
+
}>>;
|
|
42
|
+
}
|
|
43
|
+
export type CallMembershipIdentityParts = Pick<CallMembership, "userId" | "deviceId" | "memberId">;
|
|
44
|
+
//# sourceMappingURL=EncryptionManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptionManager.d.ts","sourceRoot":"","sources":["../../src/matrixrtc/EncryptionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,2BAA2B,GAAG,mBAAmB,CAEnG;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;;;OAKG;IACH,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAAC;IAErD;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;;;OAIG;IACH,mBAAmB,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAE5D;;;;OAIG;IACH,iBAAiB,IAAI,WAAW,CAC5B,mBAAmB,EACnB,aAAa,CAAC;QACV,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,2BAA2B,CAAC;QACxC,kBAAkB,EAAE,MAAM,CAAC;KAC9B,CAAC,CACL,CAAC;CACL;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The string used for the keys in the the encryption key map.
|
|
3
|
+
* `@bob:examle.org:DEVICEID(UUIDRANDOM_MEMBERID_RANDOMUUID)`
|
|
4
|
+
*/
|
|
5
|
+
export function getEncryptionKeyMapKey(membership) {
|
|
6
|
+
return "".concat(membership.userId, ":").concat(membership.deviceId, "(").concat(membership.memberId, ")");
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This interface is for testing and for making it possible to interchange the encryption manager.
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
//# sourceMappingURL=EncryptionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptionManager.js","names":["getEncryptionKeyMapKey","membership","concat","userId","deviceId","memberId"],"sources":["../../src/matrixrtc/EncryptionManager.ts"],"sourcesContent":["import { type EncryptionConfig } from \"./MatrixRTCSession.ts\";\nimport { type CallMembership } from \"./CallMembership.ts\";\nimport { type EncryptionKeyMapKey } from \"./types.ts\";\n\n/**\n * The string used for the keys in the the encryption key map.\n * `@bob:examle.org:DEVICEID(UUIDRANDOM_MEMBERID_RANDOMUUID)`\n */\nexport function getEncryptionKeyMapKey(membership: CallMembershipIdentityParts): EncryptionKeyMapKey {\n return `${membership.userId}:${membership.deviceId}(${membership.memberId})`;\n}\n\n/**\n * This interface is for testing and for making it possible to interchange the encryption manager.\n * @internal\n */\nexport interface IEncryptionManager {\n /**\n * Joins the encryption manager with the provided configuration.\n *\n * @param joinConfig - The configuration for joining encryption, or undefined\n * if no specific configuration is provided.\n */\n join(joinConfig: EncryptionConfig | undefined): void;\n\n /**\n * Leaves the encryption manager, cleaning up any associated resources.\n */\n leave(): void;\n\n /**\n * Called from the BriijRTCSession when the memberships in this session updated.\n *\n * @param oldMemberships - The previous state of call memberships before the update.\n */\n onMembershipsUpdate(oldMemberships: CallMembership[]): void;\n\n /**\n * Retrieves the encryption keys currently managed by the encryption manager.\n *\n * @returns A map of participant IDs to their encryption keys.\n */\n getEncryptionKeys(): ReadonlyMap<\n EncryptionKeyMapKey,\n ReadonlyArray<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n rtcBackendIdentity: string;\n }>\n >;\n}\n\nexport type CallMembershipIdentityParts = Pick<CallMembership, \"userId\" | \"deviceId\" | \"memberId\">;\n"],"mappings":"AAIA;AACA;AACA;AACA;AACA,OAAO,SAASA,sBAAsBA,CAACC,UAAuC,EAAuB;EACjG,UAAAC,MAAA,CAAUD,UAAU,CAACE,MAAM,OAAAD,MAAA,CAAID,UAAU,CAACG,QAAQ,OAAAF,MAAA,CAAID,UAAU,CAACI,QAAQ;AAC7E;;AAEA;AACA;AACA;AACA","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type CallMembershipIdentityParts } from "./EncryptionManager.ts";
|
|
2
|
+
import { type ParticipantDeviceInfo } from "./types.ts";
|
|
3
|
+
export declare enum KeyTransportEvents {
|
|
4
|
+
ReceivedKeys = "received_keys",
|
|
5
|
+
NotSupportedError = "not_supported_error"
|
|
6
|
+
}
|
|
7
|
+
export type KeyTransportEventsHandlerMap = {
|
|
8
|
+
[KeyTransportEvents.ReceivedKeys]: KeyTransportEventListener;
|
|
9
|
+
[KeyTransportEvents.NotSupportedError]: () => void;
|
|
10
|
+
};
|
|
11
|
+
export type KeyTransportEventListener = (membership: CallMembershipIdentityParts, keyBase64Encoded: string, index: number, timestamp: number) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Generic interface for the transport used to share room keys.
|
|
14
|
+
* Keys can be shared using different transports, e.g. to-device messages or room messages.
|
|
15
|
+
*/
|
|
16
|
+
export interface IKeyTransport {
|
|
17
|
+
/**
|
|
18
|
+
* Sends the current user media key to the given members.
|
|
19
|
+
* @param keyBase64Encoded
|
|
20
|
+
* @param index
|
|
21
|
+
* @param members - The participants that should get they key
|
|
22
|
+
*/
|
|
23
|
+
sendKey(keyBase64Encoded: string, index: number, members: ParticipantDeviceInfo[]): Promise<void>;
|
|
24
|
+
/** Subscribe to keys from this transport. */
|
|
25
|
+
on(event: KeyTransportEvents.ReceivedKeys, listener: KeyTransportEventListener): this;
|
|
26
|
+
/** Unsubscribe from keys from this transport. */
|
|
27
|
+
off(event: KeyTransportEvents.ReceivedKeys, listener: KeyTransportEventListener): this;
|
|
28
|
+
/** Once start is called the underlying transport will subscribe to its transport system.
|
|
29
|
+
* Before start is called this transport will not emit any events.
|
|
30
|
+
*/
|
|
31
|
+
start(): void;
|
|
32
|
+
/** Once stop is called the underlying transport will unsubscribe from its transport system.
|
|
33
|
+
* After stop is called this transport will not emit any events.
|
|
34
|
+
*/
|
|
35
|
+
stop(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=IKeyTransport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IKeyTransport.d.ts","sourceRoot":"","sources":["../../src/matrixrtc/IKeyTransport.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,oBAAY,kBAAkB;IAC1B,YAAY,kBAAkB;IAC9B,iBAAiB,wBAAwB;CAC5C;AAED,MAAM,MAAM,4BAA4B,GAAG;IACvC,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAC7D,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,CACpC,UAAU,EAAE,2BAA2B,EACvC,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElG,6CAA6C;IAC7C,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACtF,iDAAiD;IACjD,GAAG,CAAC,KAAK,EAAE,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAEvF;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IACd;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;CAChB"}
|