@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/client.ts
CHANGED
|
@@ -198,6 +198,15 @@ import {
|
|
|
198
198
|
type LoginResponse,
|
|
199
199
|
type LoginTokenPostResponse,
|
|
200
200
|
type SSOAction,
|
|
201
|
+
WALLET_E2EE_RECOVERY_ACCOUNT_DATA_TYPE,
|
|
202
|
+
WALLET_IDENTITY_ACCOUNT_DATA_TYPE,
|
|
203
|
+
XRPL_WALLET_LOGIN_TYPE,
|
|
204
|
+
type WalletE2eeRecoveryEnvelope,
|
|
205
|
+
type WalletIdentityAccountData,
|
|
206
|
+
type XrplAuthChallengeRequest,
|
|
207
|
+
type XrplAuthChallengeResponse,
|
|
208
|
+
type XrplAuthCompleteRequest,
|
|
209
|
+
type XrplWalletChallengePayload,
|
|
201
210
|
} from "./@types/auth.ts";
|
|
202
211
|
import { TypedEventEmitter } from "./models/typed-event-emitter.ts";
|
|
203
212
|
import { MAIN_ROOM_TIMELINE, ReceiptType } from "./@types/read_receipts.ts";
|
|
@@ -246,6 +255,13 @@ import {
|
|
|
246
255
|
type OidcClientConfig,
|
|
247
256
|
validateAuthMetadataAndKeys,
|
|
248
257
|
} from "./oidc/index.ts";
|
|
258
|
+
import { configureXrplIdentityMinting, mintSoulboundIdentityNFT } from "./xrpl/identity.ts";
|
|
259
|
+
import {
|
|
260
|
+
XRPL_VERIFIED_EVENT,
|
|
261
|
+
XRPL_VERIFY_ACCEPT_EVENT,
|
|
262
|
+
XRPL_VERIFY_REQUEST_EVENT,
|
|
263
|
+
} from "./xrpl/verification.ts";
|
|
264
|
+
import { configureXrplTrust } from "./xrpl/trust.ts";
|
|
249
265
|
import { type EmptyObject } from "./@types/common.ts";
|
|
250
266
|
import { UnsupportedDelayedEventsEndpointError, UnsupportedStickyEventsEndpointError } from "./errors.ts";
|
|
251
267
|
import { type Transport } from "./matrixrtc/index.ts";
|
|
@@ -1100,6 +1116,9 @@ export enum ClientEvent {
|
|
|
1100
1116
|
*/
|
|
1101
1117
|
ClientWellKnown = "WellKnown.client",
|
|
1102
1118
|
ReceivedVoipEvent = "received_voip_event",
|
|
1119
|
+
XrplVerificationRequest = "xrpl.verification.request",
|
|
1120
|
+
XrplVerificationAccept = "xrpl.verification.accept",
|
|
1121
|
+
XrplVerified = "xrpl.verification.verified",
|
|
1103
1122
|
TurnServers = "turnServers",
|
|
1104
1123
|
TurnServersError = "turnServers.error",
|
|
1105
1124
|
}
|
|
@@ -1170,6 +1189,9 @@ export type ClientEventHandlerMap = {
|
|
|
1170
1189
|
[ClientEvent.SyncUnexpectedError]: (error: Error) => void;
|
|
1171
1190
|
[ClientEvent.ClientWellKnown]: (data: IClientWellKnown) => void;
|
|
1172
1191
|
[ClientEvent.ReceivedVoipEvent]: (event: BriijEvent) => void;
|
|
1192
|
+
[ClientEvent.XrplVerificationRequest]: (event: BriijEvent) => void;
|
|
1193
|
+
[ClientEvent.XrplVerificationAccept]: (event: BriijEvent) => void;
|
|
1194
|
+
[ClientEvent.XrplVerified]: (event: BriijEvent) => void;
|
|
1173
1195
|
[ClientEvent.TurnServers]: (servers: ITurnServer[]) => void;
|
|
1174
1196
|
[ClientEvent.TurnServersError]: (error: Error, fatal: boolean) => void;
|
|
1175
1197
|
} & RoomEventHandlerMap &
|
|
@@ -1394,6 +1416,7 @@ export class BriijClient extends TypedEventEmitter<EmittedEvents, ClientEventHan
|
|
|
1394
1416
|
this.serverCapabilitiesService = new ServerCapabilities(this.logger, this.http);
|
|
1395
1417
|
|
|
1396
1418
|
this.on(ClientEvent.Sync, this.fixupRoomNotifications);
|
|
1419
|
+
this.on(ClientEvent.Event, this.dispatchXrplVerificationEvents);
|
|
1397
1420
|
|
|
1398
1421
|
this.timelineSupport = Boolean(opts.timelineSupport);
|
|
1399
1422
|
|
|
@@ -1440,6 +1463,22 @@ export class BriijClient extends TypedEventEmitter<EmittedEvents, ClientEventHan
|
|
|
1440
1463
|
return this._store;
|
|
1441
1464
|
}
|
|
1442
1465
|
|
|
1466
|
+
private readonly dispatchXrplVerificationEvents = (event: BriijEvent): void => {
|
|
1467
|
+
if (event.getType() === XRPL_VERIFY_REQUEST_EVENT) {
|
|
1468
|
+
this.emit(ClientEvent.XrplVerificationRequest, event);
|
|
1469
|
+
return;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
if (event.getType() === XRPL_VERIFY_ACCEPT_EVENT) {
|
|
1473
|
+
this.emit(ClientEvent.XrplVerificationAccept, event);
|
|
1474
|
+
return;
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
if (event.getType() === XRPL_VERIFIED_EVENT) {
|
|
1478
|
+
this.emit(ClientEvent.XrplVerified, event);
|
|
1479
|
+
}
|
|
1480
|
+
};
|
|
1481
|
+
|
|
1443
1482
|
/**
|
|
1444
1483
|
* High level helper method to begin syncing and poll for new events. To listen for these
|
|
1445
1484
|
* events, add a listener for {@link ClientEvent.Event}
|
|
@@ -6642,19 +6681,38 @@ export class BriijClient extends TypedEventEmitter<EmittedEvents, ClientEventHan
|
|
|
6642
6681
|
* returned credentials. Instead, call {@link loginRequest} and create a new `BriijClient` instance using the
|
|
6643
6682
|
* results. See https://github.com/matrix-org/briij-js-sdk/issues/4502.
|
|
6644
6683
|
*/
|
|
6645
|
-
public login(loginType: LoginRequest["type"], data: Omit<LoginRequest, "type">): Promise<LoginResponse> {
|
|
6646
|
-
|
|
6684
|
+
public async login(loginType: LoginRequest["type"], data: Omit<LoginRequest, "type">): Promise<LoginResponse> {
|
|
6685
|
+
const response = await this.loginRequest({
|
|
6647
6686
|
...data,
|
|
6648
6687
|
type: loginType,
|
|
6649
|
-
}).then((response) => {
|
|
6650
|
-
if (response.access_token && response.user_id) {
|
|
6651
|
-
this.http.opts.accessToken = response.access_token;
|
|
6652
|
-
this.credentials = {
|
|
6653
|
-
userId: response.user_id,
|
|
6654
|
-
};
|
|
6655
|
-
}
|
|
6656
|
-
return response;
|
|
6657
6688
|
});
|
|
6689
|
+
|
|
6690
|
+
if (response.access_token && response.user_id) {
|
|
6691
|
+
this.http.opts.accessToken = response.access_token;
|
|
6692
|
+
this.credentials = {
|
|
6693
|
+
userId: response.user_id,
|
|
6694
|
+
};
|
|
6695
|
+
configureXrplTrust({
|
|
6696
|
+
homeserverBaseUrl: this.baseUrl,
|
|
6697
|
+
accessToken: response.access_token,
|
|
6698
|
+
});
|
|
6699
|
+
}
|
|
6700
|
+
|
|
6701
|
+
// After Xaman-backed SSO login, mint once and persist identity metadata in account_data.
|
|
6702
|
+
if (loginType === "m.login.token" && response.access_token && response.user_id) {
|
|
6703
|
+
configureXrplIdentityMinting({
|
|
6704
|
+
homeserverBaseUrl: this.baseUrl,
|
|
6705
|
+
accessToken: response.access_token,
|
|
6706
|
+
});
|
|
6707
|
+
|
|
6708
|
+
try {
|
|
6709
|
+
await mintSoulboundIdentityNFT(response.user_id);
|
|
6710
|
+
} catch (error) {
|
|
6711
|
+
logger.warn("XRPL identity NFT minting skipped/failed", error);
|
|
6712
|
+
}
|
|
6713
|
+
}
|
|
6714
|
+
|
|
6715
|
+
return response;
|
|
6658
6716
|
}
|
|
6659
6717
|
|
|
6660
6718
|
/**
|
|
@@ -6672,6 +6730,121 @@ export class BriijClient extends TypedEventEmitter<EmittedEvents, ClientEventHan
|
|
|
6672
6730
|
});
|
|
6673
6731
|
}
|
|
6674
6732
|
|
|
6733
|
+
/**
|
|
6734
|
+
* Request an XRPL login challenge from the homeserver.
|
|
6735
|
+
*
|
|
6736
|
+
* The briij homeserver responds with HTTP 401 as the successful challenge
|
|
6737
|
+
* response, so this helper normalizes that into a resolved promise.
|
|
6738
|
+
*/
|
|
6739
|
+
public async getXrplAuthChallenge(
|
|
6740
|
+
request: Omit<XrplAuthChallengeRequest, "type">,
|
|
6741
|
+
): Promise<XrplAuthChallengeResponse> {
|
|
6742
|
+
try {
|
|
6743
|
+
const response = (await this.loginRequest({
|
|
6744
|
+
...request,
|
|
6745
|
+
type: XRPL_WALLET_LOGIN_TYPE,
|
|
6746
|
+
})) as unknown as XrplAuthChallengeResponse;
|
|
6747
|
+
if (typeof response.session === "string" && typeof response.challenge === "string") {
|
|
6748
|
+
return response;
|
|
6749
|
+
}
|
|
6750
|
+
} catch (error) {
|
|
6751
|
+
if (error instanceof BriijError && error.httpStatus === 401) {
|
|
6752
|
+
const session = error.data?.session;
|
|
6753
|
+
const challenge = error.data?.challenge;
|
|
6754
|
+
if (typeof session === "string" && typeof challenge === "string") {
|
|
6755
|
+
return { session, challenge };
|
|
6756
|
+
}
|
|
6757
|
+
}
|
|
6758
|
+
throw error;
|
|
6759
|
+
}
|
|
6760
|
+
|
|
6761
|
+
throw new Error("XRPL challenge response was not returned by homeserver");
|
|
6762
|
+
}
|
|
6763
|
+
|
|
6764
|
+
/**
|
|
6765
|
+
* Complete XRPL login using the previously issued challenge session.
|
|
6766
|
+
*
|
|
6767
|
+
* @returns Promise which resolves to a LoginResponse object.
|
|
6768
|
+
* @returns Rejects: with an error response.
|
|
6769
|
+
*/
|
|
6770
|
+
public completeXrplAuth(request: Omit<XrplAuthCompleteRequest, "type">): Promise<LoginResponse> {
|
|
6771
|
+
return this.loginRequest({
|
|
6772
|
+
...request,
|
|
6773
|
+
type: XRPL_WALLET_LOGIN_TYPE,
|
|
6774
|
+
});
|
|
6775
|
+
}
|
|
6776
|
+
|
|
6777
|
+
/**
|
|
6778
|
+
* Store a chain-agnostic wallet recovery envelope in account data.
|
|
6779
|
+
*
|
|
6780
|
+
* This uses a stable account-data type and does not affect core E2EE state.
|
|
6781
|
+
*
|
|
6782
|
+
* @param envelope - Wallet recovery envelope payload.
|
|
6783
|
+
*/
|
|
6784
|
+
public setWalletRecoveryEnvelope(envelope: WalletE2eeRecoveryEnvelope): Promise<EmptyObject> {
|
|
6785
|
+
return this.setAccountDataRaw(WALLET_E2EE_RECOVERY_ACCOUNT_DATA_TYPE, envelope);
|
|
6786
|
+
}
|
|
6787
|
+
|
|
6788
|
+
/**
|
|
6789
|
+
* Fetch wallet recovery envelope directly from the homeserver.
|
|
6790
|
+
*
|
|
6791
|
+
* @returns The stored envelope, or null if not found.
|
|
6792
|
+
*/
|
|
6793
|
+
public getWalletRecoveryEnvelopeFromServer(): Promise<WalletE2eeRecoveryEnvelope | null> {
|
|
6794
|
+
return this.getAccountDataFromServer(WALLET_E2EE_RECOVERY_ACCOUNT_DATA_TYPE);
|
|
6795
|
+
}
|
|
6796
|
+
|
|
6797
|
+
/**
|
|
6798
|
+
* Fetch canonical wallet identity metadata from the homeserver.
|
|
6799
|
+
*
|
|
6800
|
+
* @returns Wallet identity metadata, or null if not found.
|
|
6801
|
+
*/
|
|
6802
|
+
public getWalletIdentityFromServer(): Promise<WalletIdentityAccountData | null> {
|
|
6803
|
+
return this.getAccountDataFromServer(WALLET_IDENTITY_ACCOUNT_DATA_TYPE);
|
|
6804
|
+
}
|
|
6805
|
+
|
|
6806
|
+
/**
|
|
6807
|
+
* @deprecated Use `getXrplAuthChallenge` + `completeXrplAuth` for explicit
|
|
6808
|
+
* two-step XRPL login flow. This wrapper now expects `challenge` to include
|
|
6809
|
+
* the `session` and optional `public_key`.
|
|
6810
|
+
*/
|
|
6811
|
+
public async loginWithXrplWallet(
|
|
6812
|
+
user: string,
|
|
6813
|
+
walletAddress: string,
|
|
6814
|
+
signature: string,
|
|
6815
|
+
challenge: string | XrplWalletChallengePayload,
|
|
6816
|
+
network = "xrpl",
|
|
6817
|
+
): Promise<LoginResponse> {
|
|
6818
|
+
let parsedChallenge: Partial<XrplWalletChallengePayload> | null = null;
|
|
6819
|
+
if (typeof challenge === "string") {
|
|
6820
|
+
try {
|
|
6821
|
+
parsedChallenge = JSON.parse(challenge) as Partial<XrplWalletChallengePayload>;
|
|
6822
|
+
} catch {
|
|
6823
|
+
throw new Error("XRPL challenge must be JSON with a session field");
|
|
6824
|
+
}
|
|
6825
|
+
} else {
|
|
6826
|
+
parsedChallenge = challenge;
|
|
6827
|
+
}
|
|
6828
|
+
|
|
6829
|
+
const session = parsedChallenge?.session;
|
|
6830
|
+
if (!session) {
|
|
6831
|
+
throw new Error("XRPL challenge payload is missing session; call getXrplAuthChallenge first");
|
|
6832
|
+
}
|
|
6833
|
+
|
|
6834
|
+
return this.completeXrplAuth({
|
|
6835
|
+
user,
|
|
6836
|
+
identifier: {
|
|
6837
|
+
type: "m.id.user",
|
|
6838
|
+
user,
|
|
6839
|
+
},
|
|
6840
|
+
session,
|
|
6841
|
+
address: walletAddress,
|
|
6842
|
+
signature,
|
|
6843
|
+
public_key: parsedChallenge?.public_key,
|
|
6844
|
+
network,
|
|
6845
|
+
});
|
|
6846
|
+
}
|
|
6847
|
+
|
|
6675
6848
|
/**
|
|
6676
6849
|
* @param redirectUrl - The URL to redirect to after the HS
|
|
6677
6850
|
* authenticates with CAS.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
This directory contains functionality which is common to both the legacy (libolm-based) crypto implementation,
|
|
2
|
-
and the new rust-based implementation.
|
|
3
|
-
|
|
4
|
-
It is an internal module, and is _not_ directly exposed to applications.
|
|
1
|
+
This directory contains functionality which is common to both the legacy (libolm-based) crypto implementation,
|
|
2
|
+
and the new rust-based implementation.
|
|
3
|
+
|
|
4
|
+
It is an internal module, and is _not_ directly exposed to applications.
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2024 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
|
-
import { deriveRecoveryKeyFromPassphrase } from "../crypto-api/index.ts";
|
|
18
|
-
|
|
19
|
-
/* eslint-disable camelcase */
|
|
20
|
-
interface IAuthData {
|
|
21
|
-
private_key_salt?: string;
|
|
22
|
-
private_key_iterations?: number;
|
|
23
|
-
private_key_bits?: number;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Derive a backup key from a passphrase using the salt and iterations from the auth data.
|
|
28
|
-
* @param authData - The auth data containing the salt and iterations
|
|
29
|
-
* @param passphrase - The passphrase to derive the key from
|
|
30
|
-
* @deprecated Deriving a backup key from a passphrase is not part of the matrix spec. Instead, a random key is generated and stored/shared via 4S.
|
|
31
|
-
*/
|
|
32
|
-
export function keyFromAuthData(authData: IAuthData, passphrase: string): Promise<Uint8Array> {
|
|
33
|
-
if (!authData.private_key_salt || !authData.private_key_iterations) {
|
|
34
|
-
throw new Error("Salt and/or iterations not found: " + "this backup cannot be restored with a passphrase");
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return deriveRecoveryKeyFromPassphrase(
|
|
38
|
-
passphrase,
|
|
39
|
-
authData.private_key_salt,
|
|
40
|
-
authData.private_key_iterations,
|
|
41
|
-
authData.private_key_bits,
|
|
42
|
-
);
|
|
43
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 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
|
+
import { deriveRecoveryKeyFromPassphrase } from "../crypto-api/index.ts";
|
|
18
|
+
|
|
19
|
+
/* eslint-disable camelcase */
|
|
20
|
+
interface IAuthData {
|
|
21
|
+
private_key_salt?: string;
|
|
22
|
+
private_key_iterations?: number;
|
|
23
|
+
private_key_bits?: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Derive a backup key from a passphrase using the salt and iterations from the auth data.
|
|
28
|
+
* @param authData - The auth data containing the salt and iterations
|
|
29
|
+
* @param passphrase - The passphrase to derive the key from
|
|
30
|
+
* @deprecated Deriving a backup key from a passphrase is not part of the matrix spec. Instead, a random key is generated and stored/shared via 4S.
|
|
31
|
+
*/
|
|
32
|
+
export function keyFromAuthData(authData: IAuthData, passphrase: string): Promise<Uint8Array> {
|
|
33
|
+
if (!authData.private_key_salt || !authData.private_key_iterations) {
|
|
34
|
+
throw new Error("Salt and/or iterations not found: " + "this backup cannot be restored with a passphrase");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return deriveRecoveryKeyFromPassphrase(
|
|
38
|
+
passphrase,
|
|
39
|
+
authData.private_key_salt,
|
|
40
|
+
authData.private_key_iterations,
|
|
41
|
+
authData.private_key_bits,
|
|
42
|
+
);
|
|
43
|
+
}
|