@textrp/briij-js-sdk 41.0.1 → 43.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 +14 -1
- package/LICENSE +177 -177
- package/README.md +85 -3
- package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -1
- package/lib/@types/IIdentityServerProvider.js.map +1 -1
- package/lib/@types/PushRules.js +14 -14
- package/lib/@types/PushRules.js.map +1 -1
- package/lib/@types/another-json.d.js.map +1 -1
- package/lib/@types/auth.d.ts +72 -1
- package/lib/@types/auth.d.ts.map +1 -1
- package/lib/@types/auth.js +57 -54
- package/lib/@types/auth.js.map +1 -1
- package/lib/@types/beacon.js +100 -100
- package/lib/@types/beacon.js.map +1 -1
- package/lib/@types/common.js.map +1 -1
- package/lib/@types/crypto.js.map +1 -1
- package/lib/@types/event.d.ts +59 -0
- package/lib/@types/event.d.ts.map +1 -1
- package/lib/@types/event.js +105 -102
- package/lib/@types/event.js.map +1 -1
- package/lib/@types/events.js.map +1 -1
- package/lib/@types/extensible_events.js +53 -53
- package/lib/@types/extensible_events.js.map +1 -1
- package/lib/@types/local_notifications.js.map +1 -1
- package/lib/@types/location.js +41 -41
- package/lib/@types/location.js.map +1 -1
- package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -1
- package/lib/@types/media.js.map +1 -1
- package/lib/@types/membership.js +39 -39
- package/lib/@types/membership.js.map +1 -1
- package/lib/@types/partials.js +25 -25
- package/lib/@types/partials.js.map +1 -1
- package/lib/@types/polls.js +46 -46
- package/lib/@types/polls.js.map +1 -1
- package/lib/@types/read_receipts.js +14 -14
- package/lib/@types/read_receipts.js.map +1 -1
- package/lib/@types/registration.js.map +1 -1
- package/lib/@types/search.js +14 -14
- package/lib/@types/search.js.map +1 -1
- package/lib/@types/signed.js.map +1 -1
- package/lib/@types/spaces.js.map +1 -1
- package/lib/@types/state_events.js.map +1 -1
- package/lib/@types/synapse.js.map +1 -1
- package/lib/@types/sync.js +18 -18
- package/lib/@types/sync.js.map +1 -1
- package/lib/@types/threepids.js +14 -14
- package/lib/@types/threepids.js.map +1 -1
- package/lib/@types/topic.js +47 -47
- package/lib/@types/topic.js.map +1 -1
- package/lib/@types/uia.js.map +1 -1
- package/lib/NamespacedValue.js +20 -20
- package/lib/NamespacedValue.js.map +1 -1
- package/lib/ReEmitter.js +16 -16
- package/lib/ReEmitter.js.map +1 -1
- package/lib/base64.js +32 -32
- package/lib/base64.js.map +1 -1
- package/lib/briij.d.ts +4 -0
- package/lib/briij.d.ts.map +1 -1
- package/lib/briij.js +4 -0
- package/lib/briij.js.map +1 -1
- package/lib/client.d.ts +48 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +262 -108
- package/lib/client.js.map +1 -1
- package/lib/common-crypto/key-passphrase.js +19 -19
- package/lib/common-crypto/key-passphrase.js.map +1 -1
- package/lib/content-helpers.js +57 -57
- package/lib/content-helpers.js.map +1 -1
- package/lib/content-repo.js +36 -36
- package/lib/content-repo.js.map +1 -1
- package/lib/crypto/store/base.js +69 -69
- package/lib/crypto/store/base.js.map +1 -1
- package/lib/crypto/store/indexeddb-crypto-store-backend.js +58 -58
- package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
- package/lib/crypto/store/indexeddb-crypto-store.js +193 -193
- package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
- package/lib/crypto/store/localStorage-crypto-store.js +72 -72
- package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
- package/lib/crypto/store/memory-crypto-store.js +74 -74
- package/lib/crypto/store/memory-crypto-store.js.map +1 -1
- package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -1
- package/lib/crypto-api/key-passphrase.js +22 -22
- package/lib/crypto-api/key-passphrase.js.map +1 -1
- package/lib/crypto-api/keybackup.js.map +1 -1
- package/lib/crypto-api/recovery-key.js +20 -20
- package/lib/crypto-api/recovery-key.js.map +1 -1
- package/lib/digest.js +21 -21
- package/lib/digest.js.map +1 -1
- package/lib/extensible_events_v1/ExtensibleEvent.js +39 -39
- package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
- package/lib/extensible_events_v1/InvalidEventError.js +16 -16
- package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
- package/lib/extensible_events_v1/MessageEvent.js +39 -39
- package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
- package/lib/extensible_events_v1/PollEndEvent.js +29 -29
- package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
- package/lib/extensible_events_v1/PollResponseEvent.js +39 -39
- package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
- package/lib/extensible_events_v1/PollStartEvent.js +52 -52
- package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
- package/lib/extensible_events_v1/utilities.js +22 -22
- package/lib/extensible_events_v1/utilities.js.map +1 -1
- package/lib/feature.js +16 -16
- package/lib/feature.js.map +1 -1
- package/lib/http-api/method.js +14 -14
- package/lib/http-api/method.js.map +1 -1
- package/lib/http-api/prefix.js +26 -26
- package/lib/http-api/prefix.js.map +1 -1
- package/lib/indexeddb-helpers.js +21 -21
- package/lib/indexeddb-helpers.js.map +1 -1
- package/lib/indexeddb-worker.js +18 -18
- package/lib/indexeddb-worker.js.map +1 -1
- package/lib/matrixrtc/IKeyTransport.js +17 -17
- package/lib/matrixrtc/IKeyTransport.js.map +1 -1
- package/lib/matrixrtc/IMembershipManager.js +27 -27
- package/lib/matrixrtc/IMembershipManager.js.map +1 -1
- package/lib/matrixrtc/LivekitTransport.js +19 -19
- package/lib/matrixrtc/LivekitTransport.js.map +1 -1
- package/lib/matrixrtc/index.js +14 -14
- package/lib/matrixrtc/index.js.map +1 -1
- package/lib/matrixrtc/utils.js +27 -27
- package/lib/matrixrtc/utils.js.map +1 -1
- package/lib/models/ToDeviceMessage.js.map +1 -1
- package/lib/models/device.js +24 -24
- package/lib/models/device.js.map +1 -1
- package/lib/models/event-status.js +17 -17
- package/lib/models/event-status.js.map +1 -1
- package/lib/models/invites-ignorer-types.js +25 -25
- package/lib/models/invites-ignorer-types.js.map +1 -1
- package/lib/models/profile-keys.js +26 -26
- package/lib/models/profile-keys.js.map +1 -1
- package/lib/models/room-summary.js +26 -26
- package/lib/models/room-summary.js.map +1 -1
- package/lib/models/search-result.js +22 -22
- package/lib/models/search-result.js.map +1 -1
- package/lib/models/typed-event-emitter.js +122 -122
- package/lib/models/typed-event-emitter.js.map +1 -1
- package/lib/oidc/authorize.js +76 -76
- package/lib/oidc/authorize.js.map +1 -1
- package/lib/oidc/error.js +17 -17
- package/lib/oidc/error.js.map +1 -1
- package/lib/oidc/index.js +17 -17
- package/lib/oidc/index.js.map +1 -1
- package/lib/oidc/register.js +41 -41
- package/lib/oidc/register.js.map +1 -1
- package/lib/oidc/tokenRefresher.js +51 -51
- package/lib/oidc/tokenRefresher.js.map +1 -1
- package/lib/oidc/validate.js +59 -59
- package/lib/oidc/validate.js.map +1 -1
- package/lib/randomstring.js +35 -35
- package/lib/randomstring.js.map +1 -1
- package/lib/realtime-callbacks.js +39 -39
- package/lib/realtime-callbacks.js.map +1 -1
- package/lib/receipt-accumulator.js +44 -44
- package/lib/receipt-accumulator.js.map +1 -1
- package/lib/rendezvous/RendezvousChannel.js.map +1 -1
- package/lib/rendezvous/RendezvousCode.js.map +1 -1
- package/lib/rendezvous/RendezvousError.js +14 -14
- package/lib/rendezvous/RendezvousError.js.map +1 -1
- package/lib/rendezvous/RendezvousFailureReason.js +14 -14
- package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
- package/lib/rendezvous/RendezvousIntent.js +14 -14
- package/lib/rendezvous/RendezvousIntent.js.map +1 -1
- package/lib/rendezvous/RendezvousTransport.js.map +1 -1
- package/lib/rendezvous/channels/MSC4108SecureChannel.js +63 -63
- package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
- package/lib/rendezvous/channels/index.js +14 -14
- package/lib/rendezvous/channels/index.js.map +1 -1
- package/lib/rendezvous/index.js +14 -14
- package/lib/rendezvous/index.js.map +1 -1
- package/lib/rendezvous/transports/index.js +14 -14
- package/lib/rendezvous/transports/index.js.map +1 -1
- package/lib/rust-crypto/CrossSigningIdentity.js +29 -29
- package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
- package/lib/rust-crypto/OutgoingRequestsManager.js +37 -37
- package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
- package/lib/rust-crypto/device-converter.js +30 -30
- package/lib/rust-crypto/device-converter.js.map +1 -1
- package/lib/rust-crypto/secret-storage.js +30 -30
- package/lib/rust-crypto/secret-storage.js.map +1 -1
- package/lib/service-types.js +14 -14
- package/lib/service-types.js.map +1 -1
- package/lib/store/local-storage-events-emitter.js +21 -21
- package/lib/store/local-storage-events-emitter.js.map +1 -1
- package/lib/sync-accumulator.js +50 -50
- package/lib/sync-accumulator.js.map +1 -1
- package/lib/thread-utils.js +20 -20
- package/lib/thread-utils.js.map +1 -1
- package/lib/types.js +34 -34
- package/lib/types.js.map +1 -1
- package/lib/utils/decryptAESSecretStorageItem.js +22 -22
- package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
- package/lib/utils/encryptAESSecretStorageItem.js +26 -26
- package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
- package/lib/utils/internal/deriveKeys.js +21 -21
- package/lib/utils/internal/deriveKeys.js.map +1 -1
- package/lib/utils/roomVersion.js +26 -26
- package/lib/utils/roomVersion.js.map +1 -1
- package/lib/version-support.js +26 -26
- package/lib/version-support.js.map +1 -1
- package/lib/wallet-recovery.d.ts +24 -0
- package/lib/wallet-recovery.d.ts.map +1 -0
- package/lib/wallet-recovery.js +232 -0
- package/lib/wallet-recovery.js.map +1 -0
- package/lib/webrtc/audioContext.js +24 -24
- package/lib/webrtc/audioContext.js.map +1 -1
- package/lib/webrtc/callEventTypes.js.map +1 -1
- package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
- package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
- package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
- package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
- package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
- package/lib/webrtc/stats/connectionStats.js +14 -14
- package/lib/webrtc/stats/connectionStats.js.map +1 -1
- package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
- package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
- package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
- package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
- package/lib/webrtc/stats/groupCallStats.js +14 -14
- package/lib/webrtc/stats/groupCallStats.js.map +1 -1
- package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
- package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
- package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
- package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
- package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
- package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
- package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
- package/lib/webrtc/stats/statsReport.js +14 -14
- package/lib/webrtc/stats/statsReport.js.map +1 -1
- package/lib/webrtc/stats/statsReportEmitter.js +14 -14
- package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
- package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
- package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
- package/lib/webrtc/stats/transportStats.js.map +1 -1
- package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
- package/lib/webrtc/stats/valueFormatter.js +11 -11
- package/lib/webrtc/stats/valueFormatter.js.map +1 -1
- package/lib/xrpl/identity.d.ts +28 -0
- package/lib/xrpl/identity.d.ts.map +1 -0
- package/lib/xrpl/identity.js +213 -0
- package/lib/xrpl/identity.js.map +1 -0
- package/lib/xrpl/trust.d.ts +8 -0
- package/lib/xrpl/trust.d.ts.map +1 -0
- package/lib/xrpl/trust.js +61 -0
- package/lib/xrpl/trust.js.map +1 -0
- package/lib/xrpl/verification.d.ts +26 -0
- package/lib/xrpl/verification.d.ts.map +1 -0
- package/lib/xrpl/verification.js +295 -0
- package/lib/xrpl/verification.js.map +1 -0
- package/package.json +130 -129
- package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
- package/src/@types/IIdentityServerProvider.ts +24 -24
- package/src/@types/PushRules.ts +208 -208
- package/src/@types/another-json.d.ts +19 -19
- package/src/@types/auth.ts +340 -258
- package/src/@types/beacon.ts +140 -140
- package/src/@types/common.ts +24 -24
- package/src/@types/crypto.ts +71 -71
- package/src/@types/event.ts +508 -449
- package/src/@types/events.ts +119 -119
- package/src/@types/extensible_events.ts +147 -147
- package/src/@types/local_notifications.ts +19 -19
- package/src/@types/location.ts +92 -92
- package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
- package/src/@types/media.ts +245 -245
- package/src/@types/membership.ts +57 -57
- package/src/@types/partials.ts +103 -103
- package/src/@types/polls.ts +120 -120
- package/src/@types/read_receipts.ts +61 -61
- package/src/@types/registration.ts +102 -102
- package/src/@types/search.ts +119 -119
- package/src/@types/signed.ts +25 -25
- package/src/@types/spaces.ts +37 -37
- package/src/@types/state_events.ts +153 -153
- package/src/@types/synapse.ts +40 -40
- package/src/@types/sync.ts +27 -27
- package/src/@types/threepids.ts +29 -29
- package/src/@types/topic.ts +69 -69
- package/src/@types/uia.ts +24 -24
- package/src/NamespacedValue.ts +121 -121
- package/src/ReEmitter.ts +93 -93
- package/src/base64.ts +86 -86
- package/src/briij.ts +4 -0
- package/src/client.ts +183 -10
- package/src/common-crypto/README.md +4 -4
- package/src/common-crypto/key-passphrase.ts +43 -43
- package/src/content-helpers.ts +298 -298
- package/src/content-repo.ts +122 -122
- package/src/crypto/store/base.ts +388 -388
- package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
- package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
- package/src/crypto/store/localStorage-crypto-store.ts +409 -409
- package/src/crypto/store/memory-crypto-store.ts +326 -326
- package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
- package/src/crypto-api/key-passphrase.ts +58 -58
- package/src/crypto-api/keybackup.ts +114 -114
- package/src/crypto-api/recovery-key.ts +69 -69
- package/src/digest.ts +34 -34
- package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
- package/src/extensible_events_v1/InvalidEventError.ts +24 -24
- package/src/extensible_events_v1/MessageEvent.ts +143 -143
- package/src/extensible_events_v1/PollEndEvent.ts +97 -97
- package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
- package/src/extensible_events_v1/PollStartEvent.ts +207 -207
- package/src/extensible_events_v1/utilities.ts +35 -35
- package/src/feature.ts +88 -88
- package/src/http-api/method.ts +25 -25
- package/src/http-api/prefix.ts +48 -48
- package/src/indexeddb-helpers.ts +50 -50
- package/src/indexeddb-worker.ts +24 -24
- package/src/matrixrtc/IKeyTransport.ts +63 -63
- package/src/matrixrtc/IMembershipManager.ts +120 -120
- package/src/matrixrtc/LivekitTransport.ts +46 -46
- package/src/matrixrtc/index.ts +24 -24
- package/src/matrixrtc/utils.ts +71 -71
- package/src/models/ToDeviceMessage.ts +38 -38
- package/src/models/device.ts +85 -85
- package/src/models/event-status.ts +39 -39
- package/src/models/invites-ignorer-types.ts +58 -58
- package/src/models/profile-keys.ts +33 -33
- package/src/models/room-summary.ts +78 -78
- package/src/models/search-result.ts +57 -57
- package/src/models/typed-event-emitter.ts +246 -246
- package/src/oidc/authorize.ts +279 -279
- package/src/oidc/error.ts +33 -33
- package/src/oidc/index.ts +33 -33
- package/src/oidc/register.ts +163 -163
- package/src/oidc/tokenRefresher.ts +184 -184
- package/src/oidc/validate.ts +265 -265
- package/src/randomstring.ts +103 -103
- package/src/realtime-callbacks.ts +191 -191
- package/src/receipt-accumulator.ts +189 -189
- package/src/rendezvous/RendezvousChannel.ts +48 -48
- package/src/rendezvous/RendezvousCode.ts +25 -25
- package/src/rendezvous/RendezvousError.ts +26 -26
- package/src/rendezvous/RendezvousFailureReason.ts +49 -49
- package/src/rendezvous/RendezvousIntent.ts +20 -20
- package/src/rendezvous/RendezvousTransport.ts +58 -58
- package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
- package/src/rendezvous/channels/index.ts +17 -17
- package/src/rendezvous/index.ts +25 -25
- package/src/rendezvous/transports/index.ts +17 -17
- package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
- package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
- package/src/rust-crypto/device-converter.ts +128 -128
- package/src/rust-crypto/secret-storage.ts +60 -60
- package/src/service-types.ts +20 -20
- package/src/store/local-storage-events-emitter.ts +46 -46
- package/src/sync-accumulator.ts +779 -779
- package/src/thread-utils.ts +31 -31
- package/src/types.ts +59 -59
- package/src/utils/decryptAESSecretStorageItem.ts +54 -54
- package/src/utils/encryptAESSecretStorageItem.ts +73 -73
- package/src/utils/internal/deriveKeys.ts +63 -63
- package/src/utils/roomVersion.ts +35 -35
- package/src/version-support.ts +50 -50
- package/src/wallet-recovery.ts +252 -0
- package/src/webrtc/audioContext.ts +44 -44
- package/src/webrtc/callEventTypes.ts +101 -101
- package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
- package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
- package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
- package/src/webrtc/stats/connectionStats.ts +47 -47
- package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
- package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
- package/src/webrtc/stats/groupCallStats.ts +93 -93
- package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
- package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
- package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
- package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
- package/src/webrtc/stats/statsReport.ts +133 -133
- package/src/webrtc/stats/statsReportEmitter.ts +49 -49
- package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
- package/src/webrtc/stats/transportStats.ts +26 -26
- package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
- package/src/webrtc/stats/valueFormatter.ts +27 -27
- package/src/xrpl/identity.ts +245 -0
- package/src/xrpl/trust.ts +64 -0
- package/src/xrpl/verification.ts +284 -0
package/src/version-support.ts
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* A list of the spec versions which the js-sdk is compatible with.
|
|
19
|
-
*
|
|
20
|
-
* In practice, this means: when we connect to a server, it must declare support for one of the versions in this list.
|
|
21
|
-
*
|
|
22
|
-
* Note that it does not *necessarily* mean that the js-sdk has good support for all the features in the listed spec
|
|
23
|
-
* versions; only that we should be able to provide a base level of functionality with a server that offers support for
|
|
24
|
-
* any of the listed versions.
|
|
25
|
-
*/
|
|
26
|
-
export const SUPPORTED_MATRIX_VERSIONS = [
|
|
27
|
-
"v1.1",
|
|
28
|
-
"v1.2",
|
|
29
|
-
"v1.3",
|
|
30
|
-
"v1.4",
|
|
31
|
-
"v1.5",
|
|
32
|
-
"v1.6",
|
|
33
|
-
"v1.7",
|
|
34
|
-
"v1.8",
|
|
35
|
-
"v1.9",
|
|
36
|
-
"v1.10",
|
|
37
|
-
"v1.11",
|
|
38
|
-
"v1.12",
|
|
39
|
-
"v1.13",
|
|
40
|
-
];
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* The oldest Matrix specification version the js-sdk supports.
|
|
44
|
-
*/
|
|
45
|
-
export const MINIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[0];
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The most recent Matrix specification version the js-sdk supports.
|
|
49
|
-
*/
|
|
50
|
-
export const MAXIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[SUPPORTED_MATRIX_VERSIONS.length - 1];
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A list of the spec versions which the js-sdk is compatible with.
|
|
19
|
+
*
|
|
20
|
+
* In practice, this means: when we connect to a server, it must declare support for one of the versions in this list.
|
|
21
|
+
*
|
|
22
|
+
* Note that it does not *necessarily* mean that the js-sdk has good support for all the features in the listed spec
|
|
23
|
+
* versions; only that we should be able to provide a base level of functionality with a server that offers support for
|
|
24
|
+
* any of the listed versions.
|
|
25
|
+
*/
|
|
26
|
+
export const SUPPORTED_MATRIX_VERSIONS = [
|
|
27
|
+
"v1.1",
|
|
28
|
+
"v1.2",
|
|
29
|
+
"v1.3",
|
|
30
|
+
"v1.4",
|
|
31
|
+
"v1.5",
|
|
32
|
+
"v1.6",
|
|
33
|
+
"v1.7",
|
|
34
|
+
"v1.8",
|
|
35
|
+
"v1.9",
|
|
36
|
+
"v1.10",
|
|
37
|
+
"v1.11",
|
|
38
|
+
"v1.12",
|
|
39
|
+
"v1.13",
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The oldest Matrix specification version the js-sdk supports.
|
|
44
|
+
*/
|
|
45
|
+
export const MINIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[0];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The most recent Matrix specification version the js-sdk supports.
|
|
49
|
+
*/
|
|
50
|
+
export const MAXIMUM_MATRIX_VERSION = SUPPORTED_MATRIX_VERSIONS[SUPPORTED_MATRIX_VERSIONS.length - 1];
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2026 TextRP
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { type WalletE2eeRecoveryEnvelope, type WalletRecoveryWrap } from "./@types/auth.ts";
|
|
18
|
+
|
|
19
|
+
const ENVELOPE_VERSION = 1;
|
|
20
|
+
const KEY_BYTES = 32;
|
|
21
|
+
const NONCE_BYTES = 12;
|
|
22
|
+
const SALT_BYTES = 16;
|
|
23
|
+
const PASSWORD_KDF_ITERATIONS = 210_000;
|
|
24
|
+
|
|
25
|
+
export interface CreateDualWrapEnvelopeParams {
|
|
26
|
+
chainId: string;
|
|
27
|
+
accountId: string;
|
|
28
|
+
backupPassword: string;
|
|
29
|
+
walletWrapKey: Uint8Array;
|
|
30
|
+
createdAtMs?: number;
|
|
31
|
+
keyId?: string;
|
|
32
|
+
recoveryKey?: Uint8Array;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface UnwrapWithWalletParams {
|
|
36
|
+
envelope: WalletE2eeRecoveryEnvelope;
|
|
37
|
+
walletWrapKey: Uint8Array;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface UnwrapWithPasswordParams {
|
|
41
|
+
envelope: WalletE2eeRecoveryEnvelope;
|
|
42
|
+
backupPassword: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function assert(condition: boolean, message: string): asserts condition {
|
|
46
|
+
if (!condition) throw new Error(message);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function toBase64(bytes: Uint8Array): string {
|
|
50
|
+
if (typeof Buffer !== "undefined") return Buffer.from(bytes).toString("base64");
|
|
51
|
+
let binary = "";
|
|
52
|
+
bytes.forEach((b) => (binary += String.fromCodePoint(b)));
|
|
53
|
+
return btoa(binary);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function fromBase64(value: string): Uint8Array {
|
|
57
|
+
if (typeof Buffer !== "undefined") return new Uint8Array(Buffer.from(value, "base64"));
|
|
58
|
+
const binary = atob(value);
|
|
59
|
+
const out = new Uint8Array(binary.length);
|
|
60
|
+
for (let i = 0; i < binary.length; i++) out[i] = binary.codePointAt(i)!;
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function toUtf8(value: string): Uint8Array {
|
|
65
|
+
return new TextEncoder().encode(value);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function toArrayBuffer(value: Uint8Array): ArrayBuffer {
|
|
69
|
+
return value.buffer.slice(value.byteOffset, value.byteOffset + value.byteLength) as ArrayBuffer;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function randomBytes(len: number): Uint8Array {
|
|
73
|
+
const out = new Uint8Array(len);
|
|
74
|
+
globalThis.crypto.getRandomValues(out);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async function importAesGcmKey(key: Uint8Array): Promise<CryptoKey> {
|
|
79
|
+
return await globalThis.crypto.subtle.importKey(
|
|
80
|
+
"raw",
|
|
81
|
+
toArrayBuffer(key),
|
|
82
|
+
{ name: "AES-GCM" },
|
|
83
|
+
false,
|
|
84
|
+
["encrypt", "decrypt"],
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async function encryptWrap(
|
|
89
|
+
plaintext: Uint8Array,
|
|
90
|
+
{
|
|
91
|
+
key,
|
|
92
|
+
aad,
|
|
93
|
+
kdf,
|
|
94
|
+
params,
|
|
95
|
+
}: {
|
|
96
|
+
key: Uint8Array;
|
|
97
|
+
aad: Uint8Array;
|
|
98
|
+
kdf: string;
|
|
99
|
+
params?: Record<string, unknown>;
|
|
100
|
+
},
|
|
101
|
+
): Promise<WalletRecoveryWrap> {
|
|
102
|
+
assert(key.length >= KEY_BYTES, "wallet recovery key must be at least 32 bytes");
|
|
103
|
+
const salt = randomBytes(SALT_BYTES);
|
|
104
|
+
const nonce = randomBytes(NONCE_BYTES);
|
|
105
|
+
const cryptoKey = await importAesGcmKey(key.slice(0, KEY_BYTES));
|
|
106
|
+
const ciphertext = await globalThis.crypto.subtle.encrypt(
|
|
107
|
+
{
|
|
108
|
+
name: "AES-GCM",
|
|
109
|
+
iv: toArrayBuffer(nonce),
|
|
110
|
+
additionalData: toArrayBuffer(aad),
|
|
111
|
+
tagLength: 128,
|
|
112
|
+
},
|
|
113
|
+
cryptoKey,
|
|
114
|
+
toArrayBuffer(plaintext),
|
|
115
|
+
);
|
|
116
|
+
return {
|
|
117
|
+
alg: "aes-256-gcm",
|
|
118
|
+
kdf,
|
|
119
|
+
salt: toBase64(salt),
|
|
120
|
+
nonce: toBase64(nonce),
|
|
121
|
+
ciphertext: toBase64(new Uint8Array(ciphertext)),
|
|
122
|
+
aad: toBase64(aad),
|
|
123
|
+
params,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async function decryptWrap(wrap: WalletRecoveryWrap, key: Uint8Array): Promise<Uint8Array> {
|
|
128
|
+
const nonce = fromBase64(wrap.nonce);
|
|
129
|
+
const aad = wrap.aad ? fromBase64(wrap.aad) : new Uint8Array();
|
|
130
|
+
const ciphertext = fromBase64(wrap.ciphertext);
|
|
131
|
+
const cryptoKey = await importAesGcmKey(key.slice(0, KEY_BYTES));
|
|
132
|
+
const plaintext = await globalThis.crypto.subtle.decrypt(
|
|
133
|
+
{
|
|
134
|
+
name: "AES-GCM",
|
|
135
|
+
iv: toArrayBuffer(nonce),
|
|
136
|
+
additionalData: toArrayBuffer(aad),
|
|
137
|
+
tagLength: 128,
|
|
138
|
+
},
|
|
139
|
+
cryptoKey,
|
|
140
|
+
toArrayBuffer(ciphertext),
|
|
141
|
+
);
|
|
142
|
+
return new Uint8Array(plaintext);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async function derivePasswordWrapKey(password: string, salt: Uint8Array): Promise<Uint8Array> {
|
|
146
|
+
const keyMaterial = await globalThis.crypto.subtle.importKey("raw", toArrayBuffer(toUtf8(password)), "PBKDF2", false, [
|
|
147
|
+
"deriveBits",
|
|
148
|
+
]);
|
|
149
|
+
const bits = await globalThis.crypto.subtle.deriveBits(
|
|
150
|
+
{
|
|
151
|
+
name: "PBKDF2",
|
|
152
|
+
hash: "SHA-256",
|
|
153
|
+
salt: toArrayBuffer(salt),
|
|
154
|
+
iterations: PASSWORD_KDF_ITERATIONS,
|
|
155
|
+
},
|
|
156
|
+
keyMaterial,
|
|
157
|
+
KEY_BYTES * 8,
|
|
158
|
+
);
|
|
159
|
+
return new Uint8Array(bits);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export async function deriveWalletWrapKeyFromSecret(
|
|
163
|
+
walletSecret: string,
|
|
164
|
+
chainId: string,
|
|
165
|
+
accountId: string,
|
|
166
|
+
homeserver: string,
|
|
167
|
+
): Promise<Uint8Array> {
|
|
168
|
+
const context = `briij-wallet-auth-wrap-v1:${homeserver}:${chainId}:${accountId}`;
|
|
169
|
+
const digest = await globalThis.crypto.subtle.digest(
|
|
170
|
+
"SHA-256",
|
|
171
|
+
toArrayBuffer(toUtf8(`${context}:${walletSecret}`)),
|
|
172
|
+
);
|
|
173
|
+
return new Uint8Array(digest);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export function validateRecoveryEnvelopeShape(
|
|
177
|
+
value: unknown,
|
|
178
|
+
): asserts value is WalletE2eeRecoveryEnvelope {
|
|
179
|
+
assert(!!value && typeof value === "object", "recovery envelope must be an object");
|
|
180
|
+
const envelope = value as WalletE2eeRecoveryEnvelope;
|
|
181
|
+
assert(typeof envelope.envelope_version === "number", "envelope_version must be a number");
|
|
182
|
+
assert(typeof envelope.chain_id === "string" && envelope.chain_id.length > 0, "chain_id is required");
|
|
183
|
+
assert(typeof envelope.account_id === "string" && envelope.account_id.length > 0, "account_id is required");
|
|
184
|
+
assert(typeof envelope.created_at_ms === "number", "created_at_ms must be a number");
|
|
185
|
+
assert(typeof envelope.key_id === "string" && envelope.key_id.length > 0, "key_id is required");
|
|
186
|
+
assert(!!envelope.wallet_wrap && typeof envelope.wallet_wrap === "object", "wallet_wrap is required");
|
|
187
|
+
assert(!!envelope.password_wrap && typeof envelope.password_wrap === "object", "password_wrap is required");
|
|
188
|
+
for (const wrap of [envelope.wallet_wrap, envelope.password_wrap]) {
|
|
189
|
+
assert(typeof wrap.alg === "string" && wrap.alg.length > 0, "wrap.alg is required");
|
|
190
|
+
assert(typeof wrap.kdf === "string" && wrap.kdf.length > 0, "wrap.kdf is required");
|
|
191
|
+
assert(typeof wrap.salt === "string" && wrap.salt.length > 0, "wrap.salt is required");
|
|
192
|
+
assert(typeof wrap.nonce === "string" && wrap.nonce.length > 0, "wrap.nonce is required");
|
|
193
|
+
assert(typeof wrap.ciphertext === "string" && wrap.ciphertext.length > 0, "wrap.ciphertext is required");
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export async function createDualWrapEnvelope(params: CreateDualWrapEnvelopeParams): Promise<WalletE2eeRecoveryEnvelope> {
|
|
198
|
+
assert(params.chainId.length > 0, "chainId is required");
|
|
199
|
+
assert(params.accountId.length > 0, "accountId is required");
|
|
200
|
+
assert(params.backupPassword.length > 0, "backupPassword is required");
|
|
201
|
+
assert(params.walletWrapKey.length >= KEY_BYTES, "walletWrapKey must be at least 32 bytes");
|
|
202
|
+
|
|
203
|
+
const createdAtMs = params.createdAtMs ?? Date.now();
|
|
204
|
+
const keyId = params.keyId ?? `k-${toBase64(randomBytes(8)).replace(/=+$/g, "")}`;
|
|
205
|
+
const recoveryKey = params.recoveryKey ?? randomBytes(KEY_BYTES);
|
|
206
|
+
assert(recoveryKey.length === KEY_BYTES, "recoveryKey must be 32 bytes");
|
|
207
|
+
|
|
208
|
+
const aad = toUtf8(`briij-recovery-envelope-v1:${params.chainId}:${params.accountId}:${keyId}:${createdAtMs}`);
|
|
209
|
+
const walletWrap = await encryptWrap(recoveryKey, {
|
|
210
|
+
key: params.walletWrapKey,
|
|
211
|
+
aad,
|
|
212
|
+
kdf: "sha256-context-v1",
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
const passwordSalt = randomBytes(SALT_BYTES);
|
|
216
|
+
const passwordWrapKey = await derivePasswordWrapKey(params.backupPassword, passwordSalt);
|
|
217
|
+
const passwordWrap = await encryptWrap(recoveryKey, {
|
|
218
|
+
key: passwordWrapKey,
|
|
219
|
+
aad,
|
|
220
|
+
kdf: "pbkdf2-sha256-v1",
|
|
221
|
+
params: {
|
|
222
|
+
iterations: PASSWORD_KDF_ITERATIONS,
|
|
223
|
+
hash: "SHA-256",
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
passwordWrap.salt = toBase64(passwordSalt);
|
|
227
|
+
|
|
228
|
+
return {
|
|
229
|
+
envelope_version: ENVELOPE_VERSION,
|
|
230
|
+
chain_id: params.chainId,
|
|
231
|
+
account_id: params.accountId,
|
|
232
|
+
created_at_ms: createdAtMs,
|
|
233
|
+
key_id: keyId,
|
|
234
|
+
wallet_wrap: walletWrap,
|
|
235
|
+
password_wrap: passwordWrap,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export async function unwrapWithWallet({ envelope, walletWrapKey }: UnwrapWithWalletParams): Promise<Uint8Array> {
|
|
240
|
+
validateRecoveryEnvelopeShape(envelope);
|
|
241
|
+
return await decryptWrap(envelope.wallet_wrap, walletWrapKey);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export async function unwrapWithPassword({
|
|
245
|
+
envelope,
|
|
246
|
+
backupPassword,
|
|
247
|
+
}: UnwrapWithPasswordParams): Promise<Uint8Array> {
|
|
248
|
+
validateRecoveryEnvelopeShape(envelope);
|
|
249
|
+
const passwordSalt = fromBase64(envelope.password_wrap.salt);
|
|
250
|
+
const passwordWrapKey = await derivePasswordWrapKey(backupPassword, passwordSalt);
|
|
251
|
+
return await decryptWrap(envelope.password_wrap, passwordWrapKey);
|
|
252
|
+
}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
let audioContext: AudioContext | null = null;
|
|
18
|
-
let refCount = 0;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Acquires a reference to the shared AudioContext.
|
|
22
|
-
* It's highly recommended to reuse this AudioContext rather than creating your
|
|
23
|
-
* own, because multiple AudioContexts can be problematic in some browsers.
|
|
24
|
-
* Make sure to call releaseContext when you're done using it.
|
|
25
|
-
* @returns The shared AudioContext
|
|
26
|
-
*/
|
|
27
|
-
export const acquireContext = (): AudioContext => {
|
|
28
|
-
if (audioContext === null) audioContext = new AudioContext();
|
|
29
|
-
refCount++;
|
|
30
|
-
return audioContext;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Signals that one of the references to the shared AudioContext has been
|
|
35
|
-
* released, allowing the context and associated hardware resources to be
|
|
36
|
-
* cleaned up if nothing else is using it.
|
|
37
|
-
*/
|
|
38
|
-
export const releaseContext = (): void => {
|
|
39
|
-
refCount--;
|
|
40
|
-
if (refCount === 0) {
|
|
41
|
-
audioContext?.close();
|
|
42
|
-
audioContext = null;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
1
|
+
/*
|
|
2
|
+
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
let audioContext: AudioContext | null = null;
|
|
18
|
+
let refCount = 0;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Acquires a reference to the shared AudioContext.
|
|
22
|
+
* It's highly recommended to reuse this AudioContext rather than creating your
|
|
23
|
+
* own, because multiple AudioContexts can be problematic in some browsers.
|
|
24
|
+
* Make sure to call releaseContext when you're done using it.
|
|
25
|
+
* @returns The shared AudioContext
|
|
26
|
+
*/
|
|
27
|
+
export const acquireContext = (): AudioContext => {
|
|
28
|
+
if (audioContext === null) audioContext = new AudioContext();
|
|
29
|
+
refCount++;
|
|
30
|
+
return audioContext;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Signals that one of the references to the shared AudioContext has been
|
|
35
|
+
* released, allowing the context and associated hardware resources to be
|
|
36
|
+
* cleaned up if nothing else is using it.
|
|
37
|
+
*/
|
|
38
|
+
export const releaseContext = (): void => {
|
|
39
|
+
refCount--;
|
|
40
|
+
if (refCount === 0) {
|
|
41
|
+
audioContext?.close();
|
|
42
|
+
audioContext = null;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
// allow non-camelcase as these are events type that go onto the wire
|
|
2
|
-
/* eslint-disable camelcase */
|
|
3
|
-
|
|
4
|
-
import { type CallErrorCode } from "./call.ts";
|
|
5
|
-
import { NamespacedValue } from "../NamespacedValue.ts";
|
|
6
|
-
|
|
7
|
-
export const SDPStreamMetadataKey = new NamespacedValue(
|
|
8
|
-
"sdp_stream_metadata",
|
|
9
|
-
"org.matrix.msc3077.sdp_stream_metadata",
|
|
10
|
-
);
|
|
11
|
-
|
|
12
|
-
export enum SDPStreamMetadataPurpose {
|
|
13
|
-
Usermedia = "m.usermedia",
|
|
14
|
-
Screenshare = "m.screenshare",
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface SDPStreamMetadataObject {
|
|
18
|
-
purpose: SDPStreamMetadataPurpose;
|
|
19
|
-
audio_muted: boolean;
|
|
20
|
-
video_muted: boolean;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface SDPStreamMetadata {
|
|
24
|
-
[key: string]: SDPStreamMetadataObject;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface CallCapabilities {
|
|
28
|
-
"m.call.transferee": boolean;
|
|
29
|
-
"m.call.dtmf": boolean;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface CallReplacesTarget {
|
|
33
|
-
id: string;
|
|
34
|
-
display_name: string;
|
|
35
|
-
avatar_url: string;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface MCallBase {
|
|
39
|
-
call_id: string;
|
|
40
|
-
conf_id?: string;
|
|
41
|
-
version: string | number;
|
|
42
|
-
party_id?: string;
|
|
43
|
-
sender_session_id?: string;
|
|
44
|
-
dest_session_id?: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
type Description = Pick<RTCSessionDescription, "type" | "sdp">;
|
|
48
|
-
|
|
49
|
-
export interface MCallAnswer extends MCallBase {
|
|
50
|
-
"answer": Description;
|
|
51
|
-
"capabilities"?: CallCapabilities;
|
|
52
|
-
"sdp_stream_metadata"?: SDPStreamMetadata;
|
|
53
|
-
"org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export interface MCallSelectAnswer extends MCallBase {
|
|
57
|
-
selected_party_id: string;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export interface MCallInviteNegotiate extends MCallBase {
|
|
61
|
-
"offer": Description;
|
|
62
|
-
"description": Description;
|
|
63
|
-
"lifetime": number;
|
|
64
|
-
"capabilities"?: CallCapabilities;
|
|
65
|
-
"invitee"?: string;
|
|
66
|
-
"sender_session_id"?: string;
|
|
67
|
-
"dest_session_id"?: string;
|
|
68
|
-
"sdp_stream_metadata"?: SDPStreamMetadata;
|
|
69
|
-
"org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export interface MCallSDPStreamMetadataChanged extends MCallBase {
|
|
73
|
-
"sdp_stream_metadata"?: SDPStreamMetadata;
|
|
74
|
-
"org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export interface MCallReplacesEvent extends MCallBase {
|
|
78
|
-
replacement_id: string;
|
|
79
|
-
target_user: CallReplacesTarget;
|
|
80
|
-
create_call: string;
|
|
81
|
-
await_call: string;
|
|
82
|
-
target_room: string;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export interface MCAllAssertedIdentity extends MCallBase {
|
|
86
|
-
asserted_identity: {
|
|
87
|
-
id: string;
|
|
88
|
-
display_name: string;
|
|
89
|
-
avatar_url: string;
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export interface MCallCandidates extends MCallBase {
|
|
94
|
-
candidates: Omit<RTCIceCandidateInit, "usernameFragment">[];
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export interface MCallHangupReject extends MCallBase {
|
|
98
|
-
reason?: CallErrorCode;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/* eslint-enable camelcase */
|
|
1
|
+
// allow non-camelcase as these are events type that go onto the wire
|
|
2
|
+
/* eslint-disable camelcase */
|
|
3
|
+
|
|
4
|
+
import { type CallErrorCode } from "./call.ts";
|
|
5
|
+
import { NamespacedValue } from "../NamespacedValue.ts";
|
|
6
|
+
|
|
7
|
+
export const SDPStreamMetadataKey = new NamespacedValue(
|
|
8
|
+
"sdp_stream_metadata",
|
|
9
|
+
"org.matrix.msc3077.sdp_stream_metadata",
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
export enum SDPStreamMetadataPurpose {
|
|
13
|
+
Usermedia = "m.usermedia",
|
|
14
|
+
Screenshare = "m.screenshare",
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface SDPStreamMetadataObject {
|
|
18
|
+
purpose: SDPStreamMetadataPurpose;
|
|
19
|
+
audio_muted: boolean;
|
|
20
|
+
video_muted: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface SDPStreamMetadata {
|
|
24
|
+
[key: string]: SDPStreamMetadataObject;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface CallCapabilities {
|
|
28
|
+
"m.call.transferee": boolean;
|
|
29
|
+
"m.call.dtmf": boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface CallReplacesTarget {
|
|
33
|
+
id: string;
|
|
34
|
+
display_name: string;
|
|
35
|
+
avatar_url: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface MCallBase {
|
|
39
|
+
call_id: string;
|
|
40
|
+
conf_id?: string;
|
|
41
|
+
version: string | number;
|
|
42
|
+
party_id?: string;
|
|
43
|
+
sender_session_id?: string;
|
|
44
|
+
dest_session_id?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
type Description = Pick<RTCSessionDescription, "type" | "sdp">;
|
|
48
|
+
|
|
49
|
+
export interface MCallAnswer extends MCallBase {
|
|
50
|
+
"answer": Description;
|
|
51
|
+
"capabilities"?: CallCapabilities;
|
|
52
|
+
"sdp_stream_metadata"?: SDPStreamMetadata;
|
|
53
|
+
"org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface MCallSelectAnswer extends MCallBase {
|
|
57
|
+
selected_party_id: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface MCallInviteNegotiate extends MCallBase {
|
|
61
|
+
"offer": Description;
|
|
62
|
+
"description": Description;
|
|
63
|
+
"lifetime": number;
|
|
64
|
+
"capabilities"?: CallCapabilities;
|
|
65
|
+
"invitee"?: string;
|
|
66
|
+
"sender_session_id"?: string;
|
|
67
|
+
"dest_session_id"?: string;
|
|
68
|
+
"sdp_stream_metadata"?: SDPStreamMetadata;
|
|
69
|
+
"org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface MCallSDPStreamMetadataChanged extends MCallBase {
|
|
73
|
+
"sdp_stream_metadata"?: SDPStreamMetadata;
|
|
74
|
+
"org.matrix.msc3077.sdp_stream_metadata"?: SDPStreamMetadata;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface MCallReplacesEvent extends MCallBase {
|
|
78
|
+
replacement_id: string;
|
|
79
|
+
target_user: CallReplacesTarget;
|
|
80
|
+
create_call: string;
|
|
81
|
+
await_call: string;
|
|
82
|
+
target_room: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface MCAllAssertedIdentity extends MCallBase {
|
|
86
|
+
asserted_identity: {
|
|
87
|
+
id: string;
|
|
88
|
+
display_name: string;
|
|
89
|
+
avatar_url: string;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface MCallCandidates extends MCallBase {
|
|
94
|
+
candidates: Omit<RTCIceCandidateInit, "usernameFragment">[];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface MCallHangupReject extends MCallBase {
|
|
98
|
+
reason?: CallErrorCode;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* eslint-enable camelcase */
|