@textrp/briij-js-sdk 41.0.0 → 42.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 (375) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/LICENSE +177 -177
  3. package/README.md +47 -46
  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 +19 -1
  10. package/lib/@types/auth.d.ts.map +1 -1
  11. package/lib/@types/auth.js +55 -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 +27 -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 +3 -0
  58. package/lib/briij.d.ts.map +1 -1
  59. package/lib/briij.js +3 -0
  60. package/lib/briij.js.map +1 -1
  61. package/lib/client.d.ts +18 -1
  62. package/lib/client.d.ts.map +1 -1
  63. package/lib/client.js +166 -103
  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/webrtc/audioContext.js +24 -24
  202. package/lib/webrtc/audioContext.js.map +1 -1
  203. package/lib/webrtc/callEventTypes.js.map +1 -1
  204. package/lib/webrtc/stats/callFeedStatsReporter.js +14 -14
  205. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  206. package/lib/webrtc/stats/callStatsReportGatherer.js +14 -14
  207. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  208. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -1
  209. package/lib/webrtc/stats/connectionStats.js +14 -14
  210. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  211. package/lib/webrtc/stats/connectionStatsBuilder.js +14 -14
  212. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  213. package/lib/webrtc/stats/connectionStatsReportBuilder.js +14 -14
  214. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  215. package/lib/webrtc/stats/groupCallStats.js +14 -14
  216. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  217. package/lib/webrtc/stats/media/mediaSsrcHandler.js +14 -14
  218. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  219. package/lib/webrtc/stats/media/mediaTrackHandler.js +14 -14
  220. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  221. package/lib/webrtc/stats/media/mediaTrackStats.js +27 -27
  222. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  223. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +20 -20
  224. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  225. package/lib/webrtc/stats/statsReport.js +14 -14
  226. package/lib/webrtc/stats/statsReport.js.map +1 -1
  227. package/lib/webrtc/stats/statsReportEmitter.js +14 -14
  228. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  229. package/lib/webrtc/stats/trackStatsBuilder.js +4 -4
  230. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  231. package/lib/webrtc/stats/transportStats.js.map +1 -1
  232. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  233. package/lib/webrtc/stats/valueFormatter.js +11 -11
  234. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  235. package/lib/xrpl/identity.d.ts +28 -0
  236. package/lib/xrpl/identity.d.ts.map +1 -0
  237. package/lib/xrpl/identity.js +213 -0
  238. package/lib/xrpl/identity.js.map +1 -0
  239. package/lib/xrpl/trust.d.ts +8 -0
  240. package/lib/xrpl/trust.d.ts.map +1 -0
  241. package/lib/xrpl/trust.js +61 -0
  242. package/lib/xrpl/trust.js.map +1 -0
  243. package/lib/xrpl/verification.d.ts +26 -0
  244. package/lib/xrpl/verification.d.ts.map +1 -0
  245. package/lib/xrpl/verification.js +295 -0
  246. package/lib/xrpl/verification.js.map +1 -0
  247. package/package.json +128 -129
  248. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -29
  249. package/src/@types/IIdentityServerProvider.ts +24 -24
  250. package/src/@types/PushRules.ts +208 -208
  251. package/src/@types/another-json.d.ts +19 -19
  252. package/src/@types/auth.ts +280 -258
  253. package/src/@types/beacon.ts +140 -140
  254. package/src/@types/common.ts +24 -24
  255. package/src/@types/crypto.ts +71 -71
  256. package/src/@types/event.ts +476 -449
  257. package/src/@types/events.ts +119 -119
  258. package/src/@types/extensible_events.ts +147 -147
  259. package/src/@types/local_notifications.ts +19 -19
  260. package/src/@types/location.ts +92 -92
  261. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -39
  262. package/src/@types/media.ts +245 -245
  263. package/src/@types/membership.ts +57 -57
  264. package/src/@types/partials.ts +103 -103
  265. package/src/@types/polls.ts +120 -120
  266. package/src/@types/read_receipts.ts +61 -61
  267. package/src/@types/registration.ts +102 -102
  268. package/src/@types/search.ts +119 -119
  269. package/src/@types/signed.ts +25 -25
  270. package/src/@types/spaces.ts +37 -37
  271. package/src/@types/state_events.ts +153 -153
  272. package/src/@types/synapse.ts +40 -40
  273. package/src/@types/sync.ts +27 -27
  274. package/src/@types/threepids.ts +29 -29
  275. package/src/@types/topic.ts +69 -69
  276. package/src/@types/uia.ts +24 -24
  277. package/src/NamespacedValue.ts +121 -121
  278. package/src/ReEmitter.ts +93 -93
  279. package/src/base64.ts +86 -86
  280. package/src/briij.ts +3 -0
  281. package/src/client.ts +90 -10
  282. package/src/common-crypto/README.md +4 -4
  283. package/src/common-crypto/key-passphrase.ts +43 -43
  284. package/src/content-helpers.ts +298 -298
  285. package/src/content-repo.ts +122 -122
  286. package/src/crypto/store/base.ts +388 -388
  287. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -655
  288. package/src/crypto/store/indexeddb-crypto-store.ts +555 -555
  289. package/src/crypto/store/localStorage-crypto-store.ts +409 -409
  290. package/src/crypto/store/memory-crypto-store.ts +326 -326
  291. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -42
  292. package/src/crypto-api/key-passphrase.ts +58 -58
  293. package/src/crypto-api/keybackup.ts +114 -114
  294. package/src/crypto-api/recovery-key.ts +69 -69
  295. package/src/digest.ts +34 -34
  296. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -58
  297. package/src/extensible_events_v1/InvalidEventError.ts +24 -24
  298. package/src/extensible_events_v1/MessageEvent.ts +143 -143
  299. package/src/extensible_events_v1/PollEndEvent.ts +97 -97
  300. package/src/extensible_events_v1/PollResponseEvent.ts +148 -148
  301. package/src/extensible_events_v1/PollStartEvent.ts +207 -207
  302. package/src/extensible_events_v1/utilities.ts +35 -35
  303. package/src/feature.ts +88 -88
  304. package/src/http-api/method.ts +25 -25
  305. package/src/http-api/prefix.ts +48 -48
  306. package/src/indexeddb-helpers.ts +50 -50
  307. package/src/indexeddb-worker.ts +24 -24
  308. package/src/matrixrtc/IKeyTransport.ts +63 -63
  309. package/src/matrixrtc/IMembershipManager.ts +120 -120
  310. package/src/matrixrtc/LivekitTransport.ts +46 -46
  311. package/src/matrixrtc/index.ts +24 -24
  312. package/src/matrixrtc/utils.ts +71 -71
  313. package/src/models/ToDeviceMessage.ts +38 -38
  314. package/src/models/device.ts +85 -85
  315. package/src/models/event-status.ts +39 -39
  316. package/src/models/invites-ignorer-types.ts +58 -58
  317. package/src/models/profile-keys.ts +33 -33
  318. package/src/models/room-summary.ts +78 -78
  319. package/src/models/search-result.ts +57 -57
  320. package/src/models/typed-event-emitter.ts +246 -246
  321. package/src/oidc/authorize.ts +279 -279
  322. package/src/oidc/error.ts +33 -33
  323. package/src/oidc/index.ts +33 -33
  324. package/src/oidc/register.ts +163 -163
  325. package/src/oidc/tokenRefresher.ts +184 -184
  326. package/src/oidc/validate.ts +265 -265
  327. package/src/randomstring.ts +103 -103
  328. package/src/realtime-callbacks.ts +191 -191
  329. package/src/receipt-accumulator.ts +189 -189
  330. package/src/rendezvous/RendezvousChannel.ts +48 -48
  331. package/src/rendezvous/RendezvousCode.ts +25 -25
  332. package/src/rendezvous/RendezvousError.ts +26 -26
  333. package/src/rendezvous/RendezvousFailureReason.ts +49 -49
  334. package/src/rendezvous/RendezvousIntent.ts +20 -20
  335. package/src/rendezvous/RendezvousTransport.ts +58 -58
  336. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -270
  337. package/src/rendezvous/channels/index.ts +17 -17
  338. package/src/rendezvous/index.ts +25 -25
  339. package/src/rendezvous/transports/index.ts +17 -17
  340. package/src/rust-crypto/CrossSigningIdentity.ts +195 -195
  341. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -170
  342. package/src/rust-crypto/device-converter.ts +128 -128
  343. package/src/rust-crypto/secret-storage.ts +60 -60
  344. package/src/service-types.ts +20 -20
  345. package/src/store/local-storage-events-emitter.ts +46 -46
  346. package/src/sync-accumulator.ts +779 -779
  347. package/src/thread-utils.ts +31 -31
  348. package/src/types.ts +59 -59
  349. package/src/utils/decryptAESSecretStorageItem.ts +54 -54
  350. package/src/utils/encryptAESSecretStorageItem.ts +73 -73
  351. package/src/utils/internal/deriveKeys.ts +63 -63
  352. package/src/utils/roomVersion.ts +35 -35
  353. package/src/version-support.ts +50 -50
  354. package/src/webrtc/audioContext.ts +44 -44
  355. package/src/webrtc/callEventTypes.ts +101 -101
  356. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -91
  357. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -219
  358. package/src/webrtc/stats/callStatsReportSummary.ts +30 -30
  359. package/src/webrtc/stats/connectionStats.ts +47 -47
  360. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -28
  361. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -140
  362. package/src/webrtc/stats/groupCallStats.ts +93 -93
  363. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -57
  364. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -70
  365. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -176
  366. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -90
  367. package/src/webrtc/stats/statsReport.ts +133 -133
  368. package/src/webrtc/stats/statsReportEmitter.ts +49 -49
  369. package/src/webrtc/stats/trackStatsBuilder.ts +207 -207
  370. package/src/webrtc/stats/transportStats.ts +26 -26
  371. package/src/webrtc/stats/transportStatsBuilder.ts +48 -48
  372. package/src/webrtc/stats/valueFormatter.ts +27 -27
  373. package/src/xrpl/identity.ts +245 -0
  374. package/src/xrpl/trust.ts +64 -0
  375. package/src/xrpl/verification.ts +284 -0
@@ -1,57 +1,57 @@
1
- /*
2
- Copyright 2015 - 2021 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 { EventContext } from "./event-context.ts";
18
- import { type EventMapper } from "../event-mapper.ts";
19
- import { type IResultContext, type ISearchResult } from "../@types/search.ts";
20
-
21
- export class SearchResult {
22
- /**
23
- * Create a SearchResponse from the response to /search
24
- */
25
-
26
- public static fromJson(jsonObj: ISearchResult, eventMapper: EventMapper): SearchResult {
27
- const jsonContext = jsonObj.context || ({} as IResultContext);
28
- let eventsBefore = (jsonContext.events_before || []).map(eventMapper);
29
- let eventsAfter = (jsonContext.events_after || []).map(eventMapper);
30
-
31
- const context = new EventContext(eventMapper(jsonObj.result));
32
-
33
- // Filter out any contextual events which do not correspond to the same timeline (thread or room)
34
- const threadRootId = context.ourEvent.threadRootId;
35
- eventsBefore = eventsBefore.filter((e) => e.threadRootId === threadRootId);
36
- eventsAfter = eventsAfter.filter((e) => e.threadRootId === threadRootId);
37
-
38
- context.setPaginateToken(jsonContext.start, true);
39
- context.addEvents(eventsBefore, true);
40
- context.addEvents(eventsAfter, false);
41
- context.setPaginateToken(jsonContext.end, false);
42
-
43
- return new SearchResult(jsonObj.rank, context);
44
- }
45
-
46
- /**
47
- * Construct a new SearchResult
48
- *
49
- * @param rank - where this SearchResult ranks in the results
50
- * @param context - the matching event and its
51
- * context
52
- */
53
- public constructor(
54
- public readonly rank: number,
55
- public readonly context: EventContext,
56
- ) {}
57
- }
1
+ /*
2
+ Copyright 2015 - 2021 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 { EventContext } from "./event-context.ts";
18
+ import { type EventMapper } from "../event-mapper.ts";
19
+ import { type IResultContext, type ISearchResult } from "../@types/search.ts";
20
+
21
+ export class SearchResult {
22
+ /**
23
+ * Create a SearchResponse from the response to /search
24
+ */
25
+
26
+ public static fromJson(jsonObj: ISearchResult, eventMapper: EventMapper): SearchResult {
27
+ const jsonContext = jsonObj.context || ({} as IResultContext);
28
+ let eventsBefore = (jsonContext.events_before || []).map(eventMapper);
29
+ let eventsAfter = (jsonContext.events_after || []).map(eventMapper);
30
+
31
+ const context = new EventContext(eventMapper(jsonObj.result));
32
+
33
+ // Filter out any contextual events which do not correspond to the same timeline (thread or room)
34
+ const threadRootId = context.ourEvent.threadRootId;
35
+ eventsBefore = eventsBefore.filter((e) => e.threadRootId === threadRootId);
36
+ eventsAfter = eventsAfter.filter((e) => e.threadRootId === threadRootId);
37
+
38
+ context.setPaginateToken(jsonContext.start, true);
39
+ context.addEvents(eventsBefore, true);
40
+ context.addEvents(eventsAfter, false);
41
+ context.setPaginateToken(jsonContext.end, false);
42
+
43
+ return new SearchResult(jsonObj.rank, context);
44
+ }
45
+
46
+ /**
47
+ * Construct a new SearchResult
48
+ *
49
+ * @param rank - where this SearchResult ranks in the results
50
+ * @param context - the matching event and its
51
+ * context
52
+ */
53
+ public constructor(
54
+ public readonly rank: number,
55
+ public readonly context: EventContext,
56
+ ) {}
57
+ }
@@ -1,246 +1,246 @@
1
- /*
2
- Copyright 2021 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
- // eslint-disable-next-line no-restricted-imports
18
- import { EventEmitter } from "events";
19
-
20
- /** Events emitted by EventEmitter itself */
21
- export enum EventEmitterEvents {
22
- NewListener = "newListener",
23
- RemoveListener = "removeListener",
24
- Error = "error",
25
- }
26
-
27
- type AnyListener = (...args: any) => any;
28
-
29
- /** Base class for types mapping from event name to the type of listeners to that event */
30
- export type ListenerMap<E extends string> = { [eventName in E]: AnyListener };
31
-
32
- type EventEmitterEventListener = (eventName: string, listener: AnyListener) => void;
33
- type EventEmitterErrorListener = (error: Error) => void;
34
-
35
- /**
36
- * The expected type of a listener function for a particular event.
37
- *
38
- * Type parameters:
39
- * * `E` - List of all events emitted by the `TypedEventEmitter`. Normally an enum type.
40
- * * `A` - A type providing mappings from event names to listener types.
41
- * * `T` - The name of the actual event that this listener is for. Normally one of the types in `E` or
42
- * {@link EventEmitterEvents}.
43
- */
44
- export type Listener<E extends string, A extends ListenerMap<E>, T extends E | EventEmitterEvents> = T extends E
45
- ? A[T]
46
- : T extends EventEmitterEvents
47
- ? EventEmitterErrorListener
48
- : EventEmitterEventListener;
49
-
50
- /**
51
- * Typed Event Emitter class which can act as a Base Model for all our model
52
- * and communication events.
53
- * This makes it much easier for us to distinguish between events, as we now need
54
- * to properly type this, so that our events are not stringly-based and prone
55
- * to silly typos.
56
- *
57
- * Type parameters:
58
- * * `Events` - List of all events emitted by this `TypedEventEmitter`. Normally an enum type.
59
- * * `Arguments` - A {@link ListenerMap} type providing mappings from event names to listener types.
60
- * * `SuperclassArguments` - TODO: not really sure. Alternative listener mappings, I think? But only honoured for `.emit`?
61
- */
62
- export class TypedEventEmitter<
63
- Events extends string,
64
- Arguments extends ListenerMap<Events>,
65
- SuperclassArguments extends ListenerMap<any> = Arguments,
66
- > extends EventEmitter {
67
- /**
68
- * Alias for {@link on}.
69
- */
70
- public addListener<T extends Events | EventEmitterEvents>(
71
- event: T,
72
- listener: Listener<Events, Arguments, T>,
73
- ): this {
74
- return super.addListener(event, listener);
75
- }
76
-
77
- /**
78
- * Synchronously calls each of the listeners registered for the event named
79
- * `event`, in the order they were registered, passing the supplied arguments
80
- * to each.
81
- *
82
- * @param event - The name of the event to emit
83
- * @param args - Arguments to pass to the listener
84
- * @returns `true` if the event had listeners, `false` otherwise.
85
- */
86
- public emit<T extends Events>(event: T, ...args: Parameters<SuperclassArguments[T]>): boolean;
87
- public emit<T extends Events>(event: T, ...args: Parameters<Arguments[T]>): boolean;
88
- public emit<T extends Events>(event: T, ...args: any[]): boolean {
89
- return super.emit(event, ...args);
90
- }
91
-
92
- /**
93
- * Similar to `emit` but calls all listeners within a `Promise.all` and returns the promise chain
94
- * @param event - The name of the event to emit
95
- * @param args - Arguments to pass to the listener
96
- * @returns `true` if the event had listeners, `false` otherwise.
97
- */
98
- public async emitPromised<T extends Events>(
99
- event: T,
100
- ...args: Parameters<SuperclassArguments[T]>
101
- ): Promise<boolean>;
102
- public async emitPromised<T extends Events>(event: T, ...args: Parameters<Arguments[T]>): Promise<boolean>;
103
- public async emitPromised<T extends Events>(event: T, ...args: any[]): Promise<boolean> {
104
- const listeners = this.listeners(event);
105
- return Promise.allSettled(listeners.map((l) => l(...args))).then(() => {
106
- return listeners.length > 0;
107
- });
108
- }
109
-
110
- /**
111
- * Returns the number of listeners listening to the event named `event`.
112
- *
113
- * @param event - The name of the event being listened for
114
- */
115
- public listenerCount(event: Events | EventEmitterEvents): number {
116
- return super.listenerCount(event);
117
- }
118
-
119
- /**
120
- * Returns a copy of the array of listeners for the event named `event`.
121
- */
122
- public listeners(event: Events | EventEmitterEvents): ReturnType<EventEmitter["listeners"]> {
123
- return super.listeners(event);
124
- }
125
-
126
- /**
127
- * Alias for {@link removeListener}
128
- */
129
- public off<T extends Events | EventEmitterEvents>(event: T, listener: Listener<Events, Arguments, T>): this {
130
- return super.off(event, listener);
131
- }
132
-
133
- /**
134
- * Adds the `listener` function to the end of the listeners array for the
135
- * event named `event`.
136
- *
137
- * No checks are made to see if the `listener` has already been added. Multiple calls
138
- * passing the same combination of `event` and `listener` will result in the `listener`
139
- * being added, and called, multiple times.
140
- *
141
- * By default, event listeners are invoked in the order they are added. The
142
- * {@link prependListener} method can be used as an alternative to add the
143
- * event listener to the beginning of the listeners array.
144
- *
145
- * @param event - The name of the event.
146
- * @param listener - The callback function
147
- *
148
- * @returns a reference to the `EventEmitter`, so that calls can be chained.
149
- */
150
- public on<T extends Events | EventEmitterEvents>(event: T, listener: Listener<Events, Arguments, T>): this {
151
- return super.on(event, listener);
152
- }
153
-
154
- /**
155
- * Adds a **one-time** `listener` function for the event named `event`. The
156
- * next time `event` is triggered, this listener is removed and then invoked.
157
- *
158
- * Returns a reference to the `EventEmitter`, so that calls can be chained.
159
- *
160
- * By default, event listeners are invoked in the order they are added.
161
- * The {@link prependOnceListener} method can be used as an alternative to add the
162
- * event listener to the beginning of the listeners array.
163
- *
164
- * @param event - The name of the event.
165
- * @param listener - The callback function
166
- *
167
- * @returns a reference to the `EventEmitter`, so that calls can be chained.
168
- */
169
- public once<T extends Events | EventEmitterEvents>(event: T, listener: Listener<Events, Arguments, T>): this {
170
- return super.once(event, listener);
171
- }
172
-
173
- /**
174
- * Adds the `listener` function to the _beginning_ of the listeners array for the
175
- * event named `event`.
176
- *
177
- * No checks are made to see if the `listener` has already been added. Multiple calls
178
- * passing the same combination of `event` and `listener` will result in the `listener`
179
- * being added, and called, multiple times.
180
- *
181
- * @param event - The name of the event.
182
- * @param listener - The callback function
183
- *
184
- * @returns a reference to the `EventEmitter`, so that calls can be chained.
185
- */
186
- public prependListener<T extends Events | EventEmitterEvents>(
187
- event: T,
188
- listener: Listener<Events, Arguments, T>,
189
- ): this {
190
- return super.prependListener(event, listener);
191
- }
192
-
193
- /**
194
- * Adds a **one-time**`listener` function for the event named `event` to the _beginning_ of the listeners array.
195
- * The next time `event` is triggered, this listener is removed, and then invoked.
196
- *
197
- * @param event - The name of the event.
198
- * @param listener - The callback function
199
- *
200
- * @returns a reference to the `EventEmitter`, so that calls can be chained.
201
- */
202
- public prependOnceListener<T extends Events | EventEmitterEvents>(
203
- event: T,
204
- listener: Listener<Events, Arguments, T>,
205
- ): this {
206
- return super.prependOnceListener(event, listener);
207
- }
208
-
209
- /**
210
- * Removes all listeners, or those of the specified `event`.
211
- *
212
- * It is bad practice to remove listeners added elsewhere in the code,
213
- * particularly when the `EventEmitter` instance was created by some other
214
- * component or module (e.g. sockets or file streams).
215
- *
216
- * @param event - The name of the event. If undefined, all listeners everywhere are removed.
217
- * @returns a reference to the `EventEmitter`, so that calls can be chained.
218
- */
219
- public removeAllListeners(event?: Events | EventEmitterEvents): this {
220
- // EventEmitter::removeAllListeners uses `arguments.length` to determine undefined case
221
- if (event === undefined) {
222
- return super.removeAllListeners();
223
- }
224
- return super.removeAllListeners(event);
225
- }
226
-
227
- /**
228
- * Removes the specified `listener` from the listener array for the event named `event`.
229
- *
230
- * @returns a reference to the `EventEmitter`, so that calls can be chained.
231
- */
232
- public removeListener<T extends Events | EventEmitterEvents>(
233
- event: T,
234
- listener: Listener<Events, Arguments, T>,
235
- ): this {
236
- return super.removeListener(event, listener);
237
- }
238
-
239
- /**
240
- * Returns a copy of the array of listeners for the event named `eventName`,
241
- * including any wrappers (such as those created by `.once()`).
242
- */
243
- public rawListeners(event: Events | EventEmitterEvents): ReturnType<EventEmitter["rawListeners"]> {
244
- return super.rawListeners(event);
245
- }
246
- }
1
+ /*
2
+ Copyright 2021 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
+ // eslint-disable-next-line no-restricted-imports
18
+ import { EventEmitter } from "events";
19
+
20
+ /** Events emitted by EventEmitter itself */
21
+ export enum EventEmitterEvents {
22
+ NewListener = "newListener",
23
+ RemoveListener = "removeListener",
24
+ Error = "error",
25
+ }
26
+
27
+ type AnyListener = (...args: any) => any;
28
+
29
+ /** Base class for types mapping from event name to the type of listeners to that event */
30
+ export type ListenerMap<E extends string> = { [eventName in E]: AnyListener };
31
+
32
+ type EventEmitterEventListener = (eventName: string, listener: AnyListener) => void;
33
+ type EventEmitterErrorListener = (error: Error) => void;
34
+
35
+ /**
36
+ * The expected type of a listener function for a particular event.
37
+ *
38
+ * Type parameters:
39
+ * * `E` - List of all events emitted by the `TypedEventEmitter`. Normally an enum type.
40
+ * * `A` - A type providing mappings from event names to listener types.
41
+ * * `T` - The name of the actual event that this listener is for. Normally one of the types in `E` or
42
+ * {@link EventEmitterEvents}.
43
+ */
44
+ export type Listener<E extends string, A extends ListenerMap<E>, T extends E | EventEmitterEvents> = T extends E
45
+ ? A[T]
46
+ : T extends EventEmitterEvents
47
+ ? EventEmitterErrorListener
48
+ : EventEmitterEventListener;
49
+
50
+ /**
51
+ * Typed Event Emitter class which can act as a Base Model for all our model
52
+ * and communication events.
53
+ * This makes it much easier for us to distinguish between events, as we now need
54
+ * to properly type this, so that our events are not stringly-based and prone
55
+ * to silly typos.
56
+ *
57
+ * Type parameters:
58
+ * * `Events` - List of all events emitted by this `TypedEventEmitter`. Normally an enum type.
59
+ * * `Arguments` - A {@link ListenerMap} type providing mappings from event names to listener types.
60
+ * * `SuperclassArguments` - TODO: not really sure. Alternative listener mappings, I think? But only honoured for `.emit`?
61
+ */
62
+ export class TypedEventEmitter<
63
+ Events extends string,
64
+ Arguments extends ListenerMap<Events>,
65
+ SuperclassArguments extends ListenerMap<any> = Arguments,
66
+ > extends EventEmitter {
67
+ /**
68
+ * Alias for {@link on}.
69
+ */
70
+ public addListener<T extends Events | EventEmitterEvents>(
71
+ event: T,
72
+ listener: Listener<Events, Arguments, T>,
73
+ ): this {
74
+ return super.addListener(event, listener);
75
+ }
76
+
77
+ /**
78
+ * Synchronously calls each of the listeners registered for the event named
79
+ * `event`, in the order they were registered, passing the supplied arguments
80
+ * to each.
81
+ *
82
+ * @param event - The name of the event to emit
83
+ * @param args - Arguments to pass to the listener
84
+ * @returns `true` if the event had listeners, `false` otherwise.
85
+ */
86
+ public emit<T extends Events>(event: T, ...args: Parameters<SuperclassArguments[T]>): boolean;
87
+ public emit<T extends Events>(event: T, ...args: Parameters<Arguments[T]>): boolean;
88
+ public emit<T extends Events>(event: T, ...args: any[]): boolean {
89
+ return super.emit(event, ...args);
90
+ }
91
+
92
+ /**
93
+ * Similar to `emit` but calls all listeners within a `Promise.all` and returns the promise chain
94
+ * @param event - The name of the event to emit
95
+ * @param args - Arguments to pass to the listener
96
+ * @returns `true` if the event had listeners, `false` otherwise.
97
+ */
98
+ public async emitPromised<T extends Events>(
99
+ event: T,
100
+ ...args: Parameters<SuperclassArguments[T]>
101
+ ): Promise<boolean>;
102
+ public async emitPromised<T extends Events>(event: T, ...args: Parameters<Arguments[T]>): Promise<boolean>;
103
+ public async emitPromised<T extends Events>(event: T, ...args: any[]): Promise<boolean> {
104
+ const listeners = this.listeners(event);
105
+ return Promise.allSettled(listeners.map((l) => l(...args))).then(() => {
106
+ return listeners.length > 0;
107
+ });
108
+ }
109
+
110
+ /**
111
+ * Returns the number of listeners listening to the event named `event`.
112
+ *
113
+ * @param event - The name of the event being listened for
114
+ */
115
+ public listenerCount(event: Events | EventEmitterEvents): number {
116
+ return super.listenerCount(event);
117
+ }
118
+
119
+ /**
120
+ * Returns a copy of the array of listeners for the event named `event`.
121
+ */
122
+ public listeners(event: Events | EventEmitterEvents): ReturnType<EventEmitter["listeners"]> {
123
+ return super.listeners(event);
124
+ }
125
+
126
+ /**
127
+ * Alias for {@link removeListener}
128
+ */
129
+ public off<T extends Events | EventEmitterEvents>(event: T, listener: Listener<Events, Arguments, T>): this {
130
+ return super.off(event, listener);
131
+ }
132
+
133
+ /**
134
+ * Adds the `listener` function to the end of the listeners array for the
135
+ * event named `event`.
136
+ *
137
+ * No checks are made to see if the `listener` has already been added. Multiple calls
138
+ * passing the same combination of `event` and `listener` will result in the `listener`
139
+ * being added, and called, multiple times.
140
+ *
141
+ * By default, event listeners are invoked in the order they are added. The
142
+ * {@link prependListener} method can be used as an alternative to add the
143
+ * event listener to the beginning of the listeners array.
144
+ *
145
+ * @param event - The name of the event.
146
+ * @param listener - The callback function
147
+ *
148
+ * @returns a reference to the `EventEmitter`, so that calls can be chained.
149
+ */
150
+ public on<T extends Events | EventEmitterEvents>(event: T, listener: Listener<Events, Arguments, T>): this {
151
+ return super.on(event, listener);
152
+ }
153
+
154
+ /**
155
+ * Adds a **one-time** `listener` function for the event named `event`. The
156
+ * next time `event` is triggered, this listener is removed and then invoked.
157
+ *
158
+ * Returns a reference to the `EventEmitter`, so that calls can be chained.
159
+ *
160
+ * By default, event listeners are invoked in the order they are added.
161
+ * The {@link prependOnceListener} method can be used as an alternative to add the
162
+ * event listener to the beginning of the listeners array.
163
+ *
164
+ * @param event - The name of the event.
165
+ * @param listener - The callback function
166
+ *
167
+ * @returns a reference to the `EventEmitter`, so that calls can be chained.
168
+ */
169
+ public once<T extends Events | EventEmitterEvents>(event: T, listener: Listener<Events, Arguments, T>): this {
170
+ return super.once(event, listener);
171
+ }
172
+
173
+ /**
174
+ * Adds the `listener` function to the _beginning_ of the listeners array for the
175
+ * event named `event`.
176
+ *
177
+ * No checks are made to see if the `listener` has already been added. Multiple calls
178
+ * passing the same combination of `event` and `listener` will result in the `listener`
179
+ * being added, and called, multiple times.
180
+ *
181
+ * @param event - The name of the event.
182
+ * @param listener - The callback function
183
+ *
184
+ * @returns a reference to the `EventEmitter`, so that calls can be chained.
185
+ */
186
+ public prependListener<T extends Events | EventEmitterEvents>(
187
+ event: T,
188
+ listener: Listener<Events, Arguments, T>,
189
+ ): this {
190
+ return super.prependListener(event, listener);
191
+ }
192
+
193
+ /**
194
+ * Adds a **one-time**`listener` function for the event named `event` to the _beginning_ of the listeners array.
195
+ * The next time `event` is triggered, this listener is removed, and then invoked.
196
+ *
197
+ * @param event - The name of the event.
198
+ * @param listener - The callback function
199
+ *
200
+ * @returns a reference to the `EventEmitter`, so that calls can be chained.
201
+ */
202
+ public prependOnceListener<T extends Events | EventEmitterEvents>(
203
+ event: T,
204
+ listener: Listener<Events, Arguments, T>,
205
+ ): this {
206
+ return super.prependOnceListener(event, listener);
207
+ }
208
+
209
+ /**
210
+ * Removes all listeners, or those of the specified `event`.
211
+ *
212
+ * It is bad practice to remove listeners added elsewhere in the code,
213
+ * particularly when the `EventEmitter` instance was created by some other
214
+ * component or module (e.g. sockets or file streams).
215
+ *
216
+ * @param event - The name of the event. If undefined, all listeners everywhere are removed.
217
+ * @returns a reference to the `EventEmitter`, so that calls can be chained.
218
+ */
219
+ public removeAllListeners(event?: Events | EventEmitterEvents): this {
220
+ // EventEmitter::removeAllListeners uses `arguments.length` to determine undefined case
221
+ if (event === undefined) {
222
+ return super.removeAllListeners();
223
+ }
224
+ return super.removeAllListeners(event);
225
+ }
226
+
227
+ /**
228
+ * Removes the specified `listener` from the listener array for the event named `event`.
229
+ *
230
+ * @returns a reference to the `EventEmitter`, so that calls can be chained.
231
+ */
232
+ public removeListener<T extends Events | EventEmitterEvents>(
233
+ event: T,
234
+ listener: Listener<Events, Arguments, T>,
235
+ ): this {
236
+ return super.removeListener(event, listener);
237
+ }
238
+
239
+ /**
240
+ * Returns a copy of the array of listeners for the event named `eventName`,
241
+ * including any wrappers (such as those created by `.once()`).
242
+ */
243
+ public rawListeners(event: Events | EventEmitterEvents): ReturnType<EventEmitter["rawListeners"]> {
244
+ return super.rawListeners(event);
245
+ }
246
+ }