@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
@@ -1,258 +1,340 @@
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
- import { UnstableValue } from "../NamespacedValue.ts";
18
- import { type IClientWellKnown } from "../client.ts";
19
-
20
- // disable lint because these are wire responses
21
- /* eslint-disable camelcase */
22
-
23
- /**
24
- * Represents a response to the CSAPI `/refresh` endpoint.
25
- */
26
- export interface IRefreshTokenResponse {
27
- access_token: string;
28
- expires_in_ms: number;
29
- refresh_token: string;
30
- }
31
-
32
- /* eslint-enable camelcase */
33
-
34
- /**
35
- * Response to GET login flows as per https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3login
36
- */
37
- export interface ILoginFlowsResponse {
38
- flows: LoginFlow[];
39
- }
40
-
41
- export type LoginFlow = ISSOFlow | IPasswordFlow | ILoginFlow;
42
-
43
- export interface ILoginFlow {
44
- type: string;
45
- }
46
-
47
- export interface IPasswordFlow extends ILoginFlow {
48
- type: "m.login.password";
49
- }
50
-
51
- export const OAUTH_AWARE_PREFERRED_FLOW_FIELD = new UnstableValue(
52
- "oauth_aware_preferred",
53
- "org.matrix.msc3824.delegated_oidc_compatibility",
54
- );
55
-
56
- /**
57
- * @alias
58
- * @deprecated use `OAUTH_AWARE_PREFERRED_FLOW_FIELD` instead.
59
- */
60
- export const DELEGATED_OIDC_COMPATIBILITY = OAUTH_AWARE_PREFERRED_FLOW_FIELD;
61
-
62
- /**
63
- * Representation of SSO flow as per https://spec.matrix.org/v1.3/client-server-api/#client-login-via-sso
64
- */
65
- export interface ISSOFlow extends ILoginFlow {
66
- type: "m.login.sso" | "m.login.cas";
67
- // eslint-disable-next-line camelcase
68
- identity_providers?: IIdentityProvider[];
69
- [OAUTH_AWARE_PREFERRED_FLOW_FIELD.name]?: boolean;
70
- [OAUTH_AWARE_PREFERRED_FLOW_FIELD.altName]?: boolean;
71
- }
72
-
73
- export enum IdentityProviderBrand {
74
- Gitlab = "gitlab",
75
- Github = "github",
76
- Apple = "apple",
77
- Google = "google",
78
- Facebook = "facebook",
79
- Twitter = "twitter",
80
- }
81
-
82
- export interface IIdentityProvider {
83
- id: string;
84
- name: string;
85
- icon?: string;
86
- brand?: IdentityProviderBrand | string;
87
- }
88
-
89
- export enum SSOAction {
90
- /** The user intends to login to an existing account */
91
- LOGIN = "login",
92
-
93
- /** The user intends to register for a new account */
94
- REGISTER = "register",
95
- }
96
-
97
- /**
98
- * A client can identify a user using their Matrix ID.
99
- * This can either be the fully qualified Matrix user ID, or just the localpart of the user ID.
100
- * @see https://spec.matrix.org/v1.7/client-server-api/#matrix-user-id
101
- */
102
- type UserLoginIdentifier = {
103
- type: "m.id.user";
104
- user: string;
105
- };
106
-
107
- /**
108
- * A client can identify a user using a 3PID associated with the user’s account on the homeserver,
109
- * where the 3PID was previously associated using the /account/3pid API.
110
- * See the 3PID Types Appendix for a list of Third-party ID media.
111
- * @see https://spec.matrix.org/v1.7/client-server-api/#third-party-id
112
- */
113
- type ThirdPartyLoginIdentifier = {
114
- type: "m.id.thirdparty";
115
- medium: string;
116
- address: string;
117
- };
118
-
119
- /**
120
- * A client can identify a user using a phone number associated with the user’s account,
121
- * where the phone number was previously associated using the /account/3pid API.
122
- * The phone number can be passed in as entered by the user; the homeserver will be responsible for canonicalising it.
123
- * If the client wishes to canonicalise the phone number,
124
- * then it can use the m.id.thirdparty identifier type with a medium of msisdn instead.
125
- *
126
- * The country is the two-letter uppercase ISO-3166-1 alpha-2 country code that the number in phone should be parsed as if it were dialled from.
127
- *
128
- * @see https://spec.matrix.org/v1.7/client-server-api/#phone-number
129
- */
130
- type PhoneLoginIdentifier = {
131
- type: "m.id.phone";
132
- country: string;
133
- phone: string;
134
- };
135
-
136
- type SpecUserIdentifier = UserLoginIdentifier | ThirdPartyLoginIdentifier | PhoneLoginIdentifier;
137
-
138
- /**
139
- * User Identifiers usable for login & user-interactive authentication.
140
- *
141
- * Extensibly allows more than Matrix specified identifiers.
142
- */
143
- export type UserIdentifier =
144
- | SpecUserIdentifier
145
- | { type: Exclude<string, SpecUserIdentifier["type"]>; [key: string]: any };
146
-
147
- /**
148
- * Request body for POST /login request
149
- * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login
150
- */
151
- export interface LoginRequest {
152
- /**
153
- * The login type being used.
154
- */
155
- type: "m.login.password" | "m.login.token" | string;
156
- /**
157
- * ID of the client device.
158
- * If this does not correspond to a known client device, a new device will be created.
159
- * The given device ID must not be the same as a cross-signing key ID.
160
- * The server will auto-generate a device_id if this is not specified.
161
- */
162
- device_id?: string;
163
- /**
164
- * Identification information for a user
165
- */
166
- identifier?: UserIdentifier;
167
- /**
168
- * A display name to assign to the newly-created device.
169
- * Ignored if device_id corresponds to a known device.
170
- */
171
- initial_device_display_name?: string;
172
- /**
173
- * When logging in using a third-party identifier, the medium of the identifier.
174
- * Must be `email`.
175
- * @deprecated in favour of `identifier`.
176
- */
177
- medium?: "email";
178
- /**
179
- * Required when type is `m.login.password`. The user’s password.
180
- */
181
- password?: string;
182
- /**
183
- * If true, the client supports refresh tokens.
184
- */
185
- refresh_token?: boolean;
186
- /**
187
- * Required when type is `m.login.token`. Part of Token-based login.
188
- */
189
- token?: string;
190
- /**
191
- * The fully qualified user ID or just local part of the user ID, to log in.
192
- * @deprecated in favour of identifier.
193
- */
194
- user?: string;
195
- // Extensible
196
- [key: string]: any;
197
- }
198
-
199
- // Export for backwards compatibility
200
- export type ILoginParams = LoginRequest;
201
-
202
- /**
203
- * Response body for POST /login request
204
- * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login
205
- */
206
- export interface LoginResponse {
207
- /**
208
- * An access token for the account.
209
- * This access token can then be used to authorize other requests.
210
- */
211
- access_token: string;
212
- /**
213
- * ID of the logged-in device.
214
- * Will be the same as the corresponding parameter in the request, if one was specified.
215
- */
216
- device_id: string;
217
- /**
218
- * The fully-qualified Matrix ID for the account.
219
- */
220
- user_id: string;
221
- /**
222
- * The lifetime of the access token, in milliseconds.
223
- * Once the access token has expired a new access token can be obtained by using the provided refresh token.
224
- * If no refresh token is provided, the client will need to re-log in to obtain a new access token.
225
- * If not given, the client can assume that the access token will not expire.
226
- */
227
- expires_in_ms?: number;
228
- /**
229
- * A refresh token for the account.
230
- * This token can be used to obtain a new access token when it expires by calling the /refresh endpoint.
231
- */
232
- refresh_token?: string;
233
- /**
234
- * Optional client configuration provided by the server.
235
- * If present, clients SHOULD use the provided object to reconfigure themselves, optionally validating the URLs within.
236
- * This object takes the same form as the one returned from .well-known autodiscovery.
237
- */
238
- well_known?: IClientWellKnown;
239
- /**
240
- * The server_name of the homeserver on which the account has been registered.
241
- * @deprecated Clients should extract the server_name from user_id (by splitting at the first colon) if they require it.
242
- */
243
- home_server?: string;
244
- }
245
-
246
- /**
247
- * The result of a successful `m.login.token` issuance request as per https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv1loginget_token
248
- */
249
- export interface LoginTokenPostResponse {
250
- /**
251
- * The token to use with `m.login.token` to authenticate.
252
- */
253
- login_token: string;
254
- /**
255
- * Expiration in milliseconds.
256
- */
257
- expires_in_ms: number;
258
- }
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
+ import { UnstableValue } from "../NamespacedValue.ts";
18
+ import { type IClientWellKnown } from "../client.ts";
19
+
20
+ // disable lint because these are wire responses
21
+ /* eslint-disable camelcase */
22
+
23
+ /**
24
+ * Represents a response to the CSAPI `/refresh` endpoint.
25
+ */
26
+ export interface IRefreshTokenResponse {
27
+ access_token: string;
28
+ expires_in_ms: number;
29
+ refresh_token: string;
30
+ }
31
+
32
+ /* eslint-enable camelcase */
33
+
34
+ /**
35
+ * Response to GET login flows as per https://spec.matrix.org/v1.3/client-server-api/#get_matrixclientv3login
36
+ */
37
+ export interface ILoginFlowsResponse {
38
+ flows: LoginFlow[];
39
+ }
40
+
41
+ export const XRPL_WALLET_LOGIN_TYPE = "io.briij.login.xrpl";
42
+ export const WALLET_E2EE_RECOVERY_ACCOUNT_DATA_TYPE = "org.textrp.wallet.e2ee_recovery.v1";
43
+ export const WALLET_IDENTITY_ACCOUNT_DATA_TYPE = "org.textrp.wallet.identity";
44
+
45
+ export type LoginFlow = ISSOFlow | IPasswordFlow | IXrplWalletLoginFlow | ILoginFlow;
46
+
47
+ export interface ILoginFlow {
48
+ type: string;
49
+ }
50
+
51
+ export interface IPasswordFlow extends ILoginFlow {
52
+ type: "m.login.password";
53
+ }
54
+
55
+ export interface IXrplWalletLoginFlow extends ILoginFlow {
56
+ type: typeof XRPL_WALLET_LOGIN_TYPE;
57
+ }
58
+
59
+ export const OAUTH_AWARE_PREFERRED_FLOW_FIELD = new UnstableValue(
60
+ "oauth_aware_preferred",
61
+ "org.matrix.msc3824.delegated_oidc_compatibility",
62
+ );
63
+
64
+ /**
65
+ * @alias
66
+ * @deprecated use `OAUTH_AWARE_PREFERRED_FLOW_FIELD` instead.
67
+ */
68
+ export const DELEGATED_OIDC_COMPATIBILITY = OAUTH_AWARE_PREFERRED_FLOW_FIELD;
69
+
70
+ /**
71
+ * Representation of SSO flow as per https://spec.matrix.org/v1.3/client-server-api/#client-login-via-sso
72
+ */
73
+ export interface ISSOFlow extends ILoginFlow {
74
+ type: "m.login.sso" | "m.login.cas";
75
+ // eslint-disable-next-line camelcase
76
+ identity_providers?: IIdentityProvider[];
77
+ [OAUTH_AWARE_PREFERRED_FLOW_FIELD.name]?: boolean;
78
+ [OAUTH_AWARE_PREFERRED_FLOW_FIELD.altName]?: boolean;
79
+ }
80
+
81
+ export enum IdentityProviderBrand {
82
+ Gitlab = "gitlab",
83
+ Github = "github",
84
+ Apple = "apple",
85
+ Google = "google",
86
+ Facebook = "facebook",
87
+ Twitter = "twitter",
88
+ }
89
+
90
+ export interface IIdentityProvider {
91
+ id: string;
92
+ name: string;
93
+ icon?: string;
94
+ brand?: IdentityProviderBrand | string;
95
+ }
96
+
97
+ export enum SSOAction {
98
+ /** The user intends to login to an existing account */
99
+ LOGIN = "login",
100
+
101
+ /** The user intends to register for a new account */
102
+ REGISTER = "register",
103
+ }
104
+
105
+ /**
106
+ * A client can identify a user using their Matrix ID.
107
+ * This can either be the fully qualified Matrix user ID, or just the localpart of the user ID.
108
+ * @see https://spec.matrix.org/v1.7/client-server-api/#matrix-user-id
109
+ */
110
+ type UserLoginIdentifier = {
111
+ type: "m.id.user";
112
+ user: string;
113
+ };
114
+
115
+ /**
116
+ * A client can identify a user using a 3PID associated with the user’s account on the homeserver,
117
+ * where the 3PID was previously associated using the /account/3pid API.
118
+ * See the 3PID Types Appendix for a list of Third-party ID media.
119
+ * @see https://spec.matrix.org/v1.7/client-server-api/#third-party-id
120
+ */
121
+ type ThirdPartyLoginIdentifier = {
122
+ type: "m.id.thirdparty";
123
+ medium: string;
124
+ address: string;
125
+ };
126
+
127
+ /**
128
+ * A client can identify a user using a phone number associated with the user’s account,
129
+ * where the phone number was previously associated using the /account/3pid API.
130
+ * The phone number can be passed in as entered by the user; the homeserver will be responsible for canonicalising it.
131
+ * If the client wishes to canonicalise the phone number,
132
+ * then it can use the m.id.thirdparty identifier type with a medium of msisdn instead.
133
+ *
134
+ * The country is the two-letter uppercase ISO-3166-1 alpha-2 country code that the number in phone should be parsed as if it were dialled from.
135
+ *
136
+ * @see https://spec.matrix.org/v1.7/client-server-api/#phone-number
137
+ */
138
+ type PhoneLoginIdentifier = {
139
+ type: "m.id.phone";
140
+ country: string;
141
+ phone: string;
142
+ };
143
+
144
+ type SpecUserIdentifier = UserLoginIdentifier | ThirdPartyLoginIdentifier | PhoneLoginIdentifier;
145
+
146
+ /**
147
+ * User Identifiers usable for login & user-interactive authentication.
148
+ *
149
+ * Extensibly allows more than Matrix specified identifiers.
150
+ */
151
+ export type UserIdentifier =
152
+ | SpecUserIdentifier
153
+ | { type: Exclude<string, SpecUserIdentifier["type"]>; [key: string]: any };
154
+
155
+ /**
156
+ * Request body for POST /login request
157
+ * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login
158
+ */
159
+ export interface LoginRequest {
160
+ /**
161
+ * The login type being used.
162
+ */
163
+ type: "m.login.password" | "m.login.token" | string;
164
+ /**
165
+ * ID of the client device.
166
+ * If this does not correspond to a known client device, a new device will be created.
167
+ * The given device ID must not be the same as a cross-signing key ID.
168
+ * The server will auto-generate a device_id if this is not specified.
169
+ */
170
+ device_id?: string;
171
+ /**
172
+ * Identification information for a user
173
+ */
174
+ identifier?: UserIdentifier;
175
+ /**
176
+ * A display name to assign to the newly-created device.
177
+ * Ignored if device_id corresponds to a known device.
178
+ */
179
+ initial_device_display_name?: string;
180
+ /**
181
+ * When logging in using a third-party identifier, the medium of the identifier.
182
+ * Must be `email`.
183
+ * @deprecated in favour of `identifier`.
184
+ */
185
+ medium?: "email";
186
+ /**
187
+ * Required when type is `m.login.password`. The user’s password.
188
+ */
189
+ password?: string;
190
+ /**
191
+ * If true, the client supports refresh tokens.
192
+ */
193
+ refresh_token?: boolean;
194
+ /**
195
+ * Required when type is `m.login.token`. Part of Token-based login.
196
+ */
197
+ token?: string;
198
+ /**
199
+ * The fully qualified user ID or just local part of the user ID, to log in.
200
+ * @deprecated in favour of identifier.
201
+ */
202
+ user?: string;
203
+ // Extensible
204
+ [key: string]: any;
205
+ }
206
+
207
+ // Export for backwards compatibility
208
+ export type ILoginParams = LoginRequest;
209
+
210
+ export interface XrplWalletChallengePayload {
211
+ session?: string;
212
+ nonce: string;
213
+ timestamp: number | string;
214
+ message: string;
215
+ public_key: string;
216
+ algorithm?: "secp256k1" | "ed25519" | string;
217
+ }
218
+
219
+ export interface XrplAuthChallengeRequest extends Omit<LoginRequest, "type"> {
220
+ type: typeof XRPL_WALLET_LOGIN_TYPE;
221
+ address: string;
222
+ network: string;
223
+ preferred_localpart?: string;
224
+ username?: string;
225
+ display_name?: string;
226
+ }
227
+
228
+ export interface XrplAuthChallengeResponse {
229
+ session: string;
230
+ challenge: string;
231
+ }
232
+
233
+ export interface XrplAuthCompleteRequest extends Omit<LoginRequest, "type"> {
234
+ type: typeof XRPL_WALLET_LOGIN_TYPE;
235
+ session: string;
236
+ address: string;
237
+ signature: string;
238
+ public_key?: string;
239
+ network?: string;
240
+ wallet_e2ee_recovery?: WalletE2eeRecoveryEnvelope;
241
+ }
242
+
243
+ export interface WalletRecoveryWrap {
244
+ alg: string;
245
+ kdf: string;
246
+ salt: string;
247
+ nonce: string;
248
+ ciphertext: string;
249
+ aad?: string;
250
+ params?: Record<string, unknown>;
251
+ }
252
+
253
+ export interface WalletRecoveryPasswordWrap extends WalletRecoveryWrap {
254
+ kdf: string;
255
+ params?: Record<string, unknown>;
256
+ }
257
+
258
+ export interface WalletE2eeRecoveryEnvelope {
259
+ envelope_version: number;
260
+ chain_id: string;
261
+ account_id: string;
262
+ created_at_ms: number;
263
+ key_id: string;
264
+ wallet_wrap: WalletRecoveryWrap;
265
+ password_wrap: WalletRecoveryPasswordWrap;
266
+ }
267
+
268
+ export interface WalletIdentityAccountData {
269
+ chain_id: string;
270
+ account_id: string;
271
+ public_key: string | null;
272
+ network?: string | null;
273
+ key_type?: string | null;
274
+ }
275
+
276
+ export interface XrplWalletLoginRequest extends Omit<LoginRequest, "type"> {
277
+ type: typeof XRPL_WALLET_LOGIN_TYPE;
278
+ wallet_address: string;
279
+ signature: string;
280
+ challenge: string | XrplWalletChallengePayload;
281
+ network?: string;
282
+ }
283
+
284
+ /**
285
+ * Response body for POST /login request
286
+ * @see https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv3login
287
+ */
288
+ export interface LoginResponse {
289
+ /**
290
+ * An access token for the account.
291
+ * This access token can then be used to authorize other requests.
292
+ */
293
+ access_token: string;
294
+ /**
295
+ * ID of the logged-in device.
296
+ * Will be the same as the corresponding parameter in the request, if one was specified.
297
+ */
298
+ device_id: string;
299
+ /**
300
+ * The fully-qualified Matrix ID for the account.
301
+ */
302
+ user_id: string;
303
+ /**
304
+ * The lifetime of the access token, in milliseconds.
305
+ * Once the access token has expired a new access token can be obtained by using the provided refresh token.
306
+ * If no refresh token is provided, the client will need to re-log in to obtain a new access token.
307
+ * If not given, the client can assume that the access token will not expire.
308
+ */
309
+ expires_in_ms?: number;
310
+ /**
311
+ * A refresh token for the account.
312
+ * This token can be used to obtain a new access token when it expires by calling the /refresh endpoint.
313
+ */
314
+ refresh_token?: string;
315
+ /**
316
+ * Optional client configuration provided by the server.
317
+ * If present, clients SHOULD use the provided object to reconfigure themselves, optionally validating the URLs within.
318
+ * This object takes the same form as the one returned from .well-known autodiscovery.
319
+ */
320
+ well_known?: IClientWellKnown;
321
+ /**
322
+ * The server_name of the homeserver on which the account has been registered.
323
+ * @deprecated Clients should extract the server_name from user_id (by splitting at the first colon) if they require it.
324
+ */
325
+ home_server?: string;
326
+ }
327
+
328
+ /**
329
+ * The result of a successful `m.login.token` issuance request as per https://spec.matrix.org/v1.7/client-server-api/#post_matrixclientv1loginget_token
330
+ */
331
+ export interface LoginTokenPostResponse {
332
+ /**
333
+ * The token to use with `m.login.token` to authenticate.
334
+ */
335
+ login_token: string;
336
+ /**
337
+ * Expiration in milliseconds.
338
+ */
339
+ expires_in_ms: number;
340
+ }