@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.
Files changed (380) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +177 -177
  3. package/README.md +85 -3
  4. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -1
  5. package/lib/@types/IIdentityServerProvider.js.map +1 -1
  6. package/lib/@types/PushRules.js +14 -14
  7. package/lib/@types/PushRules.js.map +1 -1
  8. package/lib/@types/another-json.d.js.map +1 -1
  9. package/lib/@types/auth.d.ts +72 -1
  10. package/lib/@types/auth.d.ts.map +1 -1
  11. package/lib/@types/auth.js +57 -54
  12. package/lib/@types/auth.js.map +1 -1
  13. package/lib/@types/beacon.js +100 -100
  14. package/lib/@types/beacon.js.map +1 -1
  15. package/lib/@types/common.js.map +1 -1
  16. package/lib/@types/crypto.js.map +1 -1
  17. package/lib/@types/event.d.ts +59 -0
  18. package/lib/@types/event.d.ts.map +1 -1
  19. package/lib/@types/event.js +105 -102
  20. package/lib/@types/event.js.map +1 -1
  21. package/lib/@types/events.js.map +1 -1
  22. package/lib/@types/extensible_events.js +53 -53
  23. package/lib/@types/extensible_events.js.map +1 -1
  24. package/lib/@types/local_notifications.js.map +1 -1
  25. package/lib/@types/location.js +41 -41
  26. package/lib/@types/location.js.map +1 -1
  27. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -1
  28. package/lib/@types/media.js.map +1 -1
  29. package/lib/@types/membership.js +39 -39
  30. package/lib/@types/membership.js.map +1 -1
  31. package/lib/@types/partials.js +25 -25
  32. package/lib/@types/partials.js.map +1 -1
  33. package/lib/@types/polls.js +46 -46
  34. package/lib/@types/polls.js.map +1 -1
  35. package/lib/@types/read_receipts.js +14 -14
  36. package/lib/@types/read_receipts.js.map +1 -1
  37. package/lib/@types/registration.js.map +1 -1
  38. package/lib/@types/search.js +14 -14
  39. package/lib/@types/search.js.map +1 -1
  40. package/lib/@types/signed.js.map +1 -1
  41. package/lib/@types/spaces.js.map +1 -1
  42. package/lib/@types/state_events.js.map +1 -1
  43. package/lib/@types/synapse.js.map +1 -1
  44. package/lib/@types/sync.js +18 -18
  45. package/lib/@types/sync.js.map +1 -1
  46. package/lib/@types/threepids.js +14 -14
  47. package/lib/@types/threepids.js.map +1 -1
  48. package/lib/@types/topic.js +47 -47
  49. package/lib/@types/topic.js.map +1 -1
  50. package/lib/@types/uia.js.map +1 -1
  51. package/lib/NamespacedValue.js +20 -20
  52. package/lib/NamespacedValue.js.map +1 -1
  53. package/lib/ReEmitter.js +16 -16
  54. package/lib/ReEmitter.js.map +1 -1
  55. package/lib/base64.js +32 -32
  56. package/lib/base64.js.map +1 -1
  57. package/lib/briij.d.ts +4 -0
  58. package/lib/briij.d.ts.map +1 -1
  59. package/lib/briij.js +4 -0
  60. package/lib/briij.js.map +1 -1
  61. package/lib/client.d.ts +48 -1
  62. package/lib/client.d.ts.map +1 -1
  63. package/lib/client.js +262 -108
  64. package/lib/client.js.map +1 -1
  65. package/lib/common-crypto/key-passphrase.js +19 -19
  66. package/lib/common-crypto/key-passphrase.js.map +1 -1
  67. package/lib/content-helpers.js +57 -57
  68. package/lib/content-helpers.js.map +1 -1
  69. package/lib/content-repo.js +36 -36
  70. package/lib/content-repo.js.map +1 -1
  71. package/lib/crypto/store/base.js +69 -69
  72. package/lib/crypto/store/base.js.map +1 -1
  73. package/lib/crypto/store/indexeddb-crypto-store-backend.js +58 -58
  74. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  75. package/lib/crypto/store/indexeddb-crypto-store.js +193 -193
  76. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  77. package/lib/crypto/store/localStorage-crypto-store.js +72 -72
  78. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  79. package/lib/crypto/store/memory-crypto-store.js +74 -74
  80. package/lib/crypto/store/memory-crypto-store.js.map +1 -1
  81. package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -1
  82. package/lib/crypto-api/key-passphrase.js +22 -22
  83. package/lib/crypto-api/key-passphrase.js.map +1 -1
  84. package/lib/crypto-api/keybackup.js.map +1 -1
  85. package/lib/crypto-api/recovery-key.js +20 -20
  86. package/lib/crypto-api/recovery-key.js.map +1 -1
  87. package/lib/digest.js +21 -21
  88. package/lib/digest.js.map +1 -1
  89. package/lib/extensible_events_v1/ExtensibleEvent.js +39 -39
  90. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  91. package/lib/extensible_events_v1/InvalidEventError.js +16 -16
  92. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  93. package/lib/extensible_events_v1/MessageEvent.js +39 -39
  94. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  95. package/lib/extensible_events_v1/PollEndEvent.js +29 -29
  96. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  97. package/lib/extensible_events_v1/PollResponseEvent.js +39 -39
  98. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  99. package/lib/extensible_events_v1/PollStartEvent.js +52 -52
  100. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  101. package/lib/extensible_events_v1/utilities.js +22 -22
  102. package/lib/extensible_events_v1/utilities.js.map +1 -1
  103. package/lib/feature.js +16 -16
  104. package/lib/feature.js.map +1 -1
  105. package/lib/http-api/method.js +14 -14
  106. package/lib/http-api/method.js.map +1 -1
  107. package/lib/http-api/prefix.js +26 -26
  108. package/lib/http-api/prefix.js.map +1 -1
  109. package/lib/indexeddb-helpers.js +21 -21
  110. package/lib/indexeddb-helpers.js.map +1 -1
  111. package/lib/indexeddb-worker.js +18 -18
  112. package/lib/indexeddb-worker.js.map +1 -1
  113. package/lib/matrixrtc/IKeyTransport.js +17 -17
  114. package/lib/matrixrtc/IKeyTransport.js.map +1 -1
  115. package/lib/matrixrtc/IMembershipManager.js +27 -27
  116. package/lib/matrixrtc/IMembershipManager.js.map +1 -1
  117. package/lib/matrixrtc/LivekitTransport.js +19 -19
  118. package/lib/matrixrtc/LivekitTransport.js.map +1 -1
  119. package/lib/matrixrtc/index.js +14 -14
  120. package/lib/matrixrtc/index.js.map +1 -1
  121. package/lib/matrixrtc/utils.js +27 -27
  122. package/lib/matrixrtc/utils.js.map +1 -1
  123. package/lib/models/ToDeviceMessage.js.map +1 -1
  124. package/lib/models/device.js +24 -24
  125. package/lib/models/device.js.map +1 -1
  126. package/lib/models/event-status.js +17 -17
  127. package/lib/models/event-status.js.map +1 -1
  128. package/lib/models/invites-ignorer-types.js +25 -25
  129. package/lib/models/invites-ignorer-types.js.map +1 -1
  130. package/lib/models/profile-keys.js +26 -26
  131. package/lib/models/profile-keys.js.map +1 -1
  132. package/lib/models/room-summary.js +26 -26
  133. package/lib/models/room-summary.js.map +1 -1
  134. package/lib/models/search-result.js +22 -22
  135. package/lib/models/search-result.js.map +1 -1
  136. package/lib/models/typed-event-emitter.js +122 -122
  137. package/lib/models/typed-event-emitter.js.map +1 -1
  138. package/lib/oidc/authorize.js +76 -76
  139. package/lib/oidc/authorize.js.map +1 -1
  140. package/lib/oidc/error.js +17 -17
  141. package/lib/oidc/error.js.map +1 -1
  142. package/lib/oidc/index.js +17 -17
  143. package/lib/oidc/index.js.map +1 -1
  144. package/lib/oidc/register.js +41 -41
  145. package/lib/oidc/register.js.map +1 -1
  146. package/lib/oidc/tokenRefresher.js +51 -51
  147. package/lib/oidc/tokenRefresher.js.map +1 -1
  148. package/lib/oidc/validate.js +59 -59
  149. package/lib/oidc/validate.js.map +1 -1
  150. package/lib/randomstring.js +35 -35
  151. package/lib/randomstring.js.map +1 -1
  152. package/lib/realtime-callbacks.js +39 -39
  153. package/lib/realtime-callbacks.js.map +1 -1
  154. package/lib/receipt-accumulator.js +44 -44
  155. package/lib/receipt-accumulator.js.map +1 -1
  156. package/lib/rendezvous/RendezvousChannel.js.map +1 -1
  157. package/lib/rendezvous/RendezvousCode.js.map +1 -1
  158. package/lib/rendezvous/RendezvousError.js +14 -14
  159. package/lib/rendezvous/RendezvousError.js.map +1 -1
  160. package/lib/rendezvous/RendezvousFailureReason.js +14 -14
  161. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  162. package/lib/rendezvous/RendezvousIntent.js +14 -14
  163. package/lib/rendezvous/RendezvousIntent.js.map +1 -1
  164. package/lib/rendezvous/RendezvousTransport.js.map +1 -1
  165. package/lib/rendezvous/channels/MSC4108SecureChannel.js +63 -63
  166. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  167. package/lib/rendezvous/channels/index.js +14 -14
  168. package/lib/rendezvous/channels/index.js.map +1 -1
  169. package/lib/rendezvous/index.js +14 -14
  170. package/lib/rendezvous/index.js.map +1 -1
  171. package/lib/rendezvous/transports/index.js +14 -14
  172. package/lib/rendezvous/transports/index.js.map +1 -1
  173. package/lib/rust-crypto/CrossSigningIdentity.js +29 -29
  174. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  175. package/lib/rust-crypto/OutgoingRequestsManager.js +37 -37
  176. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  177. package/lib/rust-crypto/device-converter.js +30 -30
  178. package/lib/rust-crypto/device-converter.js.map +1 -1
  179. package/lib/rust-crypto/secret-storage.js +30 -30
  180. package/lib/rust-crypto/secret-storage.js.map +1 -1
  181. package/lib/service-types.js +14 -14
  182. package/lib/service-types.js.map +1 -1
  183. package/lib/store/local-storage-events-emitter.js +21 -21
  184. package/lib/store/local-storage-events-emitter.js.map +1 -1
  185. package/lib/sync-accumulator.js +50 -50
  186. package/lib/sync-accumulator.js.map +1 -1
  187. package/lib/thread-utils.js +20 -20
  188. package/lib/thread-utils.js.map +1 -1
  189. package/lib/types.js +34 -34
  190. package/lib/types.js.map +1 -1
  191. package/lib/utils/decryptAESSecretStorageItem.js +22 -22
  192. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  193. package/lib/utils/encryptAESSecretStorageItem.js +26 -26
  194. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  195. package/lib/utils/internal/deriveKeys.js +21 -21
  196. package/lib/utils/internal/deriveKeys.js.map +1 -1
  197. package/lib/utils/roomVersion.js +26 -26
  198. package/lib/utils/roomVersion.js.map +1 -1
  199. package/lib/version-support.js +26 -26
  200. package/lib/version-support.js.map +1 -1
  201. package/lib/wallet-recovery.d.ts +24 -0
  202. package/lib/wallet-recovery.d.ts.map +1 -0
  203. package/lib/wallet-recovery.js +232 -0
  204. package/lib/wallet-recovery.js.map +1 -0
  205. package/lib/webrtc/audioContext.js +24 -24
  206. package/lib/webrtc/audioContext.js.map +1 -1
  207. package/lib/webrtc/callEventTypes.js.map +1 -1
  208. package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
  209. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  210. package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
  211. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  212. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
  213. package/lib/webrtc/stats/connectionStats.js +14 -14
  214. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  215. package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
  216. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  217. package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
  218. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  219. package/lib/webrtc/stats/groupCallStats.js +14 -14
  220. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  221. package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
  222. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  223. package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
  224. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  225. package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
  226. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  227. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
  228. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  229. package/lib/webrtc/stats/statsReport.js +14 -14
  230. package/lib/webrtc/stats/statsReport.js.map +1 -1
  231. package/lib/webrtc/stats/statsReportEmitter.js +14 -14
  232. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  233. package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
  234. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  235. package/lib/webrtc/stats/transportStats.js.map +1 -1
  236. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  237. package/lib/webrtc/stats/valueFormatter.js +11 -11
  238. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  239. package/lib/xrpl/identity.d.ts +28 -0
  240. package/lib/xrpl/identity.d.ts.map +1 -0
  241. package/lib/xrpl/identity.js +213 -0
  242. package/lib/xrpl/identity.js.map +1 -0
  243. package/lib/xrpl/trust.d.ts +8 -0
  244. package/lib/xrpl/trust.d.ts.map +1 -0
  245. package/lib/xrpl/trust.js +61 -0
  246. package/lib/xrpl/trust.js.map +1 -0
  247. package/lib/xrpl/verification.d.ts +26 -0
  248. package/lib/xrpl/verification.d.ts.map +1 -0
  249. package/lib/xrpl/verification.js +295 -0
  250. package/lib/xrpl/verification.js.map +1 -0
  251. package/package.json +130 -129
  252. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
  253. package/src/@types/IIdentityServerProvider.ts +24 -24
  254. package/src/@types/PushRules.ts +208 -208
  255. package/src/@types/another-json.d.ts +19 -19
  256. package/src/@types/auth.ts +340 -258
  257. package/src/@types/beacon.ts +140 -140
  258. package/src/@types/common.ts +24 -24
  259. package/src/@types/crypto.ts +71 -71
  260. package/src/@types/event.ts +508 -449
  261. package/src/@types/events.ts +119 -119
  262. package/src/@types/extensible_events.ts +147 -147
  263. package/src/@types/local_notifications.ts +19 -19
  264. package/src/@types/location.ts +92 -92
  265. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
  266. package/src/@types/media.ts +245 -245
  267. package/src/@types/membership.ts +57 -57
  268. package/src/@types/partials.ts +103 -103
  269. package/src/@types/polls.ts +120 -120
  270. package/src/@types/read_receipts.ts +61 -61
  271. package/src/@types/registration.ts +102 -102
  272. package/src/@types/search.ts +119 -119
  273. package/src/@types/signed.ts +25 -25
  274. package/src/@types/spaces.ts +37 -37
  275. package/src/@types/state_events.ts +153 -153
  276. package/src/@types/synapse.ts +40 -40
  277. package/src/@types/sync.ts +27 -27
  278. package/src/@types/threepids.ts +29 -29
  279. package/src/@types/topic.ts +69 -69
  280. package/src/@types/uia.ts +24 -24
  281. package/src/NamespacedValue.ts +121 -121
  282. package/src/ReEmitter.ts +93 -93
  283. package/src/base64.ts +86 -86
  284. package/src/briij.ts +4 -0
  285. package/src/client.ts +183 -10
  286. package/src/common-crypto/README.md +4 -4
  287. package/src/common-crypto/key-passphrase.ts +43 -43
  288. package/src/content-helpers.ts +298 -298
  289. package/src/content-repo.ts +122 -122
  290. package/src/crypto/store/base.ts +388 -388
  291. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
  292. package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
  293. package/src/crypto/store/localStorage-crypto-store.ts +409 -409
  294. package/src/crypto/store/memory-crypto-store.ts +326 -326
  295. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
  296. package/src/crypto-api/key-passphrase.ts +58 -58
  297. package/src/crypto-api/keybackup.ts +114 -114
  298. package/src/crypto-api/recovery-key.ts +69 -69
  299. package/src/digest.ts +34 -34
  300. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
  301. package/src/extensible_events_v1/InvalidEventError.ts +24 -24
  302. package/src/extensible_events_v1/MessageEvent.ts +143 -143
  303. package/src/extensible_events_v1/PollEndEvent.ts +97 -97
  304. package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
  305. package/src/extensible_events_v1/PollStartEvent.ts +207 -207
  306. package/src/extensible_events_v1/utilities.ts +35 -35
  307. package/src/feature.ts +88 -88
  308. package/src/http-api/method.ts +25 -25
  309. package/src/http-api/prefix.ts +48 -48
  310. package/src/indexeddb-helpers.ts +50 -50
  311. package/src/indexeddb-worker.ts +24 -24
  312. package/src/matrixrtc/IKeyTransport.ts +63 -63
  313. package/src/matrixrtc/IMembershipManager.ts +120 -120
  314. package/src/matrixrtc/LivekitTransport.ts +46 -46
  315. package/src/matrixrtc/index.ts +24 -24
  316. package/src/matrixrtc/utils.ts +71 -71
  317. package/src/models/ToDeviceMessage.ts +38 -38
  318. package/src/models/device.ts +85 -85
  319. package/src/models/event-status.ts +39 -39
  320. package/src/models/invites-ignorer-types.ts +58 -58
  321. package/src/models/profile-keys.ts +33 -33
  322. package/src/models/room-summary.ts +78 -78
  323. package/src/models/search-result.ts +57 -57
  324. package/src/models/typed-event-emitter.ts +246 -246
  325. package/src/oidc/authorize.ts +279 -279
  326. package/src/oidc/error.ts +33 -33
  327. package/src/oidc/index.ts +33 -33
  328. package/src/oidc/register.ts +163 -163
  329. package/src/oidc/tokenRefresher.ts +184 -184
  330. package/src/oidc/validate.ts +265 -265
  331. package/src/randomstring.ts +103 -103
  332. package/src/realtime-callbacks.ts +191 -191
  333. package/src/receipt-accumulator.ts +189 -189
  334. package/src/rendezvous/RendezvousChannel.ts +48 -48
  335. package/src/rendezvous/RendezvousCode.ts +25 -25
  336. package/src/rendezvous/RendezvousError.ts +26 -26
  337. package/src/rendezvous/RendezvousFailureReason.ts +49 -49
  338. package/src/rendezvous/RendezvousIntent.ts +20 -20
  339. package/src/rendezvous/RendezvousTransport.ts +58 -58
  340. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
  341. package/src/rendezvous/channels/index.ts +17 -17
  342. package/src/rendezvous/index.ts +25 -25
  343. package/src/rendezvous/transports/index.ts +17 -17
  344. package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
  345. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
  346. package/src/rust-crypto/device-converter.ts +128 -128
  347. package/src/rust-crypto/secret-storage.ts +60 -60
  348. package/src/service-types.ts +20 -20
  349. package/src/store/local-storage-events-emitter.ts +46 -46
  350. package/src/sync-accumulator.ts +779 -779
  351. package/src/thread-utils.ts +31 -31
  352. package/src/types.ts +59 -59
  353. package/src/utils/decryptAESSecretStorageItem.ts +54 -54
  354. package/src/utils/encryptAESSecretStorageItem.ts +73 -73
  355. package/src/utils/internal/deriveKeys.ts +63 -63
  356. package/src/utils/roomVersion.ts +35 -35
  357. package/src/version-support.ts +50 -50
  358. package/src/wallet-recovery.ts +252 -0
  359. package/src/webrtc/audioContext.ts +44 -44
  360. package/src/webrtc/callEventTypes.ts +101 -101
  361. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
  362. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
  363. package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
  364. package/src/webrtc/stats/connectionStats.ts +47 -47
  365. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
  366. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
  367. package/src/webrtc/stats/groupCallStats.ts +93 -93
  368. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
  369. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
  370. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
  371. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
  372. package/src/webrtc/stats/statsReport.ts +133 -133
  373. package/src/webrtc/stats/statsReportEmitter.ts +49 -49
  374. package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
  375. package/src/webrtc/stats/transportStats.ts +26 -26
  376. package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
  377. package/src/webrtc/stats/valueFormatter.ts +27 -27
  378. package/src/xrpl/identity.ts +245 -0
  379. package/src/xrpl/trust.ts +64 -0
  380. 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
- return this.loginRequest({
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
+ }