@jeongsu816/matrix-bot-sdk 0.0.0-stage → 0.8.1

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 (377) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -2
  3. package/lib/AdminApis.d.ts +52 -0
  4. package/lib/AdminApis.js +29 -0
  5. package/lib/AdminApis.js.map +1 -0
  6. package/lib/DMs.d.ts +48 -0
  7. package/lib/DMs.js +160 -0
  8. package/lib/DMs.js.map +1 -0
  9. package/lib/IFilter.d.ts +7 -0
  10. package/lib/IFilter.js +3 -0
  11. package/lib/IFilter.js.map +1 -0
  12. package/lib/MatrixAuth.d.ts +45 -0
  13. package/lib/MatrixAuth.js +125 -0
  14. package/lib/MatrixAuth.js.map +1 -0
  15. package/lib/MatrixClient.d.ts +834 -0
  16. package/lib/MatrixClient.js +2268 -0
  17. package/lib/MatrixClient.js.map +1 -0
  18. package/lib/PantalaimonClient.d.ts +42 -0
  19. package/lib/PantalaimonClient.js +44 -0
  20. package/lib/PantalaimonClient.js.map +1 -0
  21. package/lib/SynapseAdminApis.d.ts +350 -0
  22. package/lib/SynapseAdminApis.js +244 -0
  23. package/lib/SynapseAdminApis.js.map +1 -0
  24. package/lib/SynchronousMatrixClient.d.ts +82 -0
  25. package/lib/SynchronousMatrixClient.js +130 -0
  26. package/lib/SynchronousMatrixClient.js.map +1 -0
  27. package/lib/UnstableApis.d.ts +43 -0
  28. package/lib/UnstableApis.js +74 -0
  29. package/lib/UnstableApis.js.map +1 -0
  30. package/lib/appservice/Appservice.d.ts +328 -0
  31. package/lib/appservice/Appservice.js +803 -0
  32. package/lib/appservice/Appservice.js.map +1 -0
  33. package/lib/appservice/Intent.d.ts +113 -0
  34. package/lib/appservice/Intent.js +363 -0
  35. package/lib/appservice/Intent.js.map +1 -0
  36. package/lib/appservice/MatrixBridge.d.ts +85 -0
  37. package/lib/appservice/MatrixBridge.js +111 -0
  38. package/lib/appservice/MatrixBridge.js.map +1 -0
  39. package/lib/appservice/UnstableAppserviceApis.d.ts +41 -0
  40. package/lib/appservice/UnstableAppserviceApis.js +62 -0
  41. package/lib/appservice/UnstableAppserviceApis.js.map +1 -0
  42. package/lib/appservice/http_responses.d.ts +77 -0
  43. package/lib/appservice/http_responses.js +3 -0
  44. package/lib/appservice/http_responses.js.map +1 -0
  45. package/lib/b64.d.ts +42 -0
  46. package/lib/b64.js +68 -0
  47. package/lib/b64.js.map +1 -0
  48. package/lib/e2ee/CrossSigningBootstrap.d.ts +73 -0
  49. package/lib/e2ee/CrossSigningBootstrap.js +86 -0
  50. package/lib/e2ee/CrossSigningBootstrap.js.map +1 -0
  51. package/lib/e2ee/CryptoClient.d.ts +163 -0
  52. package/lib/e2ee/CryptoClient.js +382 -0
  53. package/lib/e2ee/CryptoClient.js.map +1 -0
  54. package/lib/e2ee/ICryptoRoomInformation.d.ts +8 -0
  55. package/lib/e2ee/ICryptoRoomInformation.js +3 -0
  56. package/lib/e2ee/ICryptoRoomInformation.js.map +1 -0
  57. package/lib/e2ee/RoomTracker.d.ts +41 -0
  58. package/lib/e2ee/RoomTracker.js +96 -0
  59. package/lib/e2ee/RoomTracker.js.map +1 -0
  60. package/lib/e2ee/RustEngine.d.ts +149 -0
  61. package/lib/e2ee/RustEngine.js +467 -0
  62. package/lib/e2ee/RustEngine.js.map +1 -0
  63. package/lib/e2ee/decorators.d.ts +10 -0
  64. package/lib/e2ee/decorators.js +37 -0
  65. package/lib/e2ee/decorators.js.map +1 -0
  66. package/lib/helpers/MatrixEntity.d.ts +37 -0
  67. package/lib/helpers/MatrixEntity.js +67 -0
  68. package/lib/helpers/MatrixEntity.js.map +1 -0
  69. package/lib/helpers/MatrixGlob.d.ts +22 -0
  70. package/lib/helpers/MatrixGlob.js +35 -0
  71. package/lib/helpers/MatrixGlob.js.map +1 -0
  72. package/lib/helpers/MentionPill.d.ts +40 -0
  73. package/lib/helpers/MentionPill.js +91 -0
  74. package/lib/helpers/MentionPill.js.map +1 -0
  75. package/lib/helpers/Permalinks.d.ts +58 -0
  76. package/lib/helpers/Permalinks.js +73 -0
  77. package/lib/helpers/Permalinks.js.map +1 -0
  78. package/lib/helpers/ProfileCache.d.ts +48 -0
  79. package/lib/helpers/ProfileCache.js +114 -0
  80. package/lib/helpers/ProfileCache.js.map +1 -0
  81. package/lib/helpers/RichReply.d.ts +17 -0
  82. package/lib/helpers/RichReply.js +47 -0
  83. package/lib/helpers/RichReply.js.map +1 -0
  84. package/lib/helpers/UnpaddedBase64.d.ts +31 -0
  85. package/lib/helpers/UnpaddedBase64.js +45 -0
  86. package/lib/helpers/UnpaddedBase64.js.map +1 -0
  87. package/lib/http.d.ts +17 -0
  88. package/lib/http.js +147 -0
  89. package/lib/http.js.map +1 -0
  90. package/lib/identity/IdentityClient.d.ts +93 -0
  91. package/lib/identity/IdentityClient.js +248 -0
  92. package/lib/identity/IdentityClient.js.map +1 -0
  93. package/lib/index.d.ts +91 -0
  94. package/lib/index.js +125 -0
  95. package/lib/index.js.map +1 -0
  96. package/lib/logging/ConsoleLogger.d.ts +12 -0
  97. package/lib/logging/ConsoleLogger.js +28 -0
  98. package/lib/logging/ConsoleLogger.js.map +1 -0
  99. package/lib/logging/ILogger.d.ts +36 -0
  100. package/lib/logging/ILogger.js +3 -0
  101. package/lib/logging/ILogger.js.map +1 -0
  102. package/lib/logging/LogService.d.ts +100 -0
  103. package/lib/logging/LogService.js +169 -0
  104. package/lib/logging/LogService.js.map +1 -0
  105. package/lib/logging/RichConsoleLogger.d.ts +20 -0
  106. package/lib/logging/RichConsoleLogger.js +41 -0
  107. package/lib/logging/RichConsoleLogger.js.map +1 -0
  108. package/lib/metrics/IMetricListener.d.ts +52 -0
  109. package/lib/metrics/IMetricListener.js +3 -0
  110. package/lib/metrics/IMetricListener.js.map +1 -0
  111. package/lib/metrics/Metrics.d.ts +66 -0
  112. package/lib/metrics/Metrics.js +128 -0
  113. package/lib/metrics/Metrics.js.map +1 -0
  114. package/lib/metrics/contexts.d.ts +51 -0
  115. package/lib/metrics/contexts.js +3 -0
  116. package/lib/metrics/contexts.js.map +1 -0
  117. package/lib/metrics/decorators.d.ts +15 -0
  118. package/lib/metrics/decorators.js +92 -0
  119. package/lib/metrics/decorators.js.map +1 -0
  120. package/lib/metrics/names.d.ts +45 -0
  121. package/lib/metrics/names.js +49 -0
  122. package/lib/metrics/names.js.map +1 -0
  123. package/lib/mixins/AutojoinRoomsMixin.d.ts +10 -0
  124. package/lib/mixins/AutojoinRoomsMixin.js +25 -0
  125. package/lib/mixins/AutojoinRoomsMixin.js.map +1 -0
  126. package/lib/mixins/AutojoinUpgradedRoomsMixin.d.ts +10 -0
  127. package/lib/mixins/AutojoinUpgradedRoomsMixin.js +40 -0
  128. package/lib/mixins/AutojoinUpgradedRoomsMixin.js.map +1 -0
  129. package/lib/models/Account.d.ts +8 -0
  130. package/lib/models/Account.js +3 -0
  131. package/lib/models/Account.js.map +1 -0
  132. package/lib/models/CreateRoom.d.ts +125 -0
  133. package/lib/models/CreateRoom.js +3 -0
  134. package/lib/models/CreateRoom.js.map +1 -0
  135. package/lib/models/Crypto.d.ts +167 -0
  136. package/lib/models/Crypto.js +31 -0
  137. package/lib/models/Crypto.js.map +1 -0
  138. package/lib/models/EventContext.d.ts +19 -0
  139. package/lib/models/EventContext.js +3 -0
  140. package/lib/models/EventContext.js.map +1 -0
  141. package/lib/models/IdentityServerModels.d.ts +20 -0
  142. package/lib/models/IdentityServerModels.js +3 -0
  143. package/lib/models/IdentityServerModels.js.map +1 -0
  144. package/lib/models/MSC2176.d.ts +42 -0
  145. package/lib/models/MSC2176.js +3 -0
  146. package/lib/models/MSC2176.js.map +1 -0
  147. package/lib/models/MatrixError.d.ts +38 -0
  148. package/lib/models/MatrixError.js +30 -0
  149. package/lib/models/MatrixError.js.map +1 -0
  150. package/lib/models/MatrixProfile.d.ts +43 -0
  151. package/lib/models/MatrixProfile.js +43 -0
  152. package/lib/models/MatrixProfile.js.map +1 -0
  153. package/lib/models/OpenIDConnect.d.ts +10 -0
  154. package/lib/models/OpenIDConnect.js +3 -0
  155. package/lib/models/OpenIDConnect.js.map +1 -0
  156. package/lib/models/Policies.d.ts +25 -0
  157. package/lib/models/Policies.js +3 -0
  158. package/lib/models/Policies.js.map +1 -0
  159. package/lib/models/PowerLevelAction.d.ts +27 -0
  160. package/lib/models/PowerLevelAction.js +32 -0
  161. package/lib/models/PowerLevelAction.js.map +1 -0
  162. package/lib/models/PowerLevelBounds.d.ts +15 -0
  163. package/lib/models/PowerLevelBounds.js +3 -0
  164. package/lib/models/PowerLevelBounds.js.map +1 -0
  165. package/lib/models/Presence.d.ts +25 -0
  166. package/lib/models/Presence.js +38 -0
  167. package/lib/models/Presence.js.map +1 -0
  168. package/lib/models/ServerVersions.d.ts +8 -0
  169. package/lib/models/ServerVersions.js +3 -0
  170. package/lib/models/ServerVersions.js.map +1 -0
  171. package/lib/models/Spaces.d.ts +116 -0
  172. package/lib/models/Spaces.js +91 -0
  173. package/lib/models/Spaces.js.map +1 -0
  174. package/lib/models/Threepid.d.ts +8 -0
  175. package/lib/models/Threepid.js +3 -0
  176. package/lib/models/Threepid.js.map +1 -0
  177. package/lib/models/events/AliasesEvent.d.ts +27 -0
  178. package/lib/models/events/AliasesEvent.js +27 -0
  179. package/lib/models/events/AliasesEvent.js.map +1 -0
  180. package/lib/models/events/CanonicalAliasEvent.d.ts +23 -0
  181. package/lib/models/events/CanonicalAliasEvent.js +21 -0
  182. package/lib/models/events/CanonicalAliasEvent.js.map +1 -0
  183. package/lib/models/events/CreateEvent.d.ts +63 -0
  184. package/lib/models/events/CreateEvent.js +33 -0
  185. package/lib/models/events/CreateEvent.js.map +1 -0
  186. package/lib/models/events/EncryptedRoomEvent.d.ts +42 -0
  187. package/lib/models/events/EncryptedRoomEvent.js +28 -0
  188. package/lib/models/events/EncryptedRoomEvent.js.map +1 -0
  189. package/lib/models/events/EncryptionEvent.d.ts +47 -0
  190. package/lib/models/events/EncryptionEvent.js +42 -0
  191. package/lib/models/events/EncryptionEvent.js.map +1 -0
  192. package/lib/models/events/Event.d.ts +26 -0
  193. package/lib/models/events/Event.js +40 -0
  194. package/lib/models/events/Event.js.map +1 -0
  195. package/lib/models/events/EventKind.d.ts +15 -0
  196. package/lib/models/events/EventKind.js +20 -0
  197. package/lib/models/events/EventKind.js.map +1 -0
  198. package/lib/models/events/InvalidEventError.d.ts +14 -0
  199. package/lib/models/events/InvalidEventError.js +24 -0
  200. package/lib/models/events/InvalidEventError.js.map +1 -0
  201. package/lib/models/events/JoinRulesEvent.d.ts +29 -0
  202. package/lib/models/events/JoinRulesEvent.js +21 -0
  203. package/lib/models/events/JoinRulesEvent.js.map +1 -0
  204. package/lib/models/events/MembershipEvent.d.ts +54 -0
  205. package/lib/models/events/MembershipEvent.js +49 -0
  206. package/lib/models/events/MembershipEvent.js.map +1 -0
  207. package/lib/models/events/MessageEvent.d.ts +233 -0
  208. package/lib/models/events/MessageEvent.js +49 -0
  209. package/lib/models/events/MessageEvent.js.map +1 -0
  210. package/lib/models/events/PinnedEventsEvent.d.ts +23 -0
  211. package/lib/models/events/PinnedEventsEvent.js +21 -0
  212. package/lib/models/events/PinnedEventsEvent.js.map +1 -0
  213. package/lib/models/events/PowerLevelsEvent.d.ts +96 -0
  214. package/lib/models/events/PowerLevelsEvent.js +70 -0
  215. package/lib/models/events/PowerLevelsEvent.js.map +1 -0
  216. package/lib/models/events/PresenceEvent.d.ts +56 -0
  217. package/lib/models/events/PresenceEvent.js +21 -0
  218. package/lib/models/events/PresenceEvent.js.map +1 -0
  219. package/lib/models/events/RedactionEvent.d.ts +28 -0
  220. package/lib/models/events/RedactionEvent.js +36 -0
  221. package/lib/models/events/RedactionEvent.js.map +1 -0
  222. package/lib/models/events/RoomAvatarEvent.d.ts +28 -0
  223. package/lib/models/events/RoomAvatarEvent.js +21 -0
  224. package/lib/models/events/RoomAvatarEvent.js.map +1 -0
  225. package/lib/models/events/RoomEvent.d.ts +58 -0
  226. package/lib/models/events/RoomEvent.js +57 -0
  227. package/lib/models/events/RoomEvent.js.map +1 -0
  228. package/lib/models/events/RoomNameEvent.d.ts +20 -0
  229. package/lib/models/events/RoomNameEvent.js +21 -0
  230. package/lib/models/events/RoomNameEvent.js.map +1 -0
  231. package/lib/models/events/RoomTopicEvent.d.ts +20 -0
  232. package/lib/models/events/RoomTopicEvent.js +21 -0
  233. package/lib/models/events/RoomTopicEvent.js.map +1 -0
  234. package/lib/models/events/SpaceChildEvent.d.ts +53 -0
  235. package/lib/models/events/SpaceChildEvent.js +49 -0
  236. package/lib/models/events/SpaceChildEvent.js.map +1 -0
  237. package/lib/models/events/converter.d.ts +8 -0
  238. package/lib/models/events/converter.js +50 -0
  239. package/lib/models/events/converter.js.map +1 -0
  240. package/lib/models/unstable/MediaInfo.d.ts +16 -0
  241. package/lib/models/unstable/MediaInfo.js +3 -0
  242. package/lib/models/unstable/MediaInfo.js.map +1 -0
  243. package/lib/preprocessors/IPreprocessor.d.ts +22 -0
  244. package/lib/preprocessors/IPreprocessor.js +3 -0
  245. package/lib/preprocessors/IPreprocessor.js.map +1 -0
  246. package/lib/preprocessors/RichRepliesPreprocessor.d.ts +67 -0
  247. package/lib/preprocessors/RichRepliesPreprocessor.js +112 -0
  248. package/lib/preprocessors/RichRepliesPreprocessor.js.map +1 -0
  249. package/lib/request.d.ts +13 -0
  250. package/lib/request.js +23 -0
  251. package/lib/request.js.map +1 -0
  252. package/lib/simple-validation.d.ts +10 -0
  253. package/lib/simple-validation.js +30 -0
  254. package/lib/simple-validation.js.map +1 -0
  255. package/lib/storage/IAppserviceStorageProvider.d.ts +48 -0
  256. package/lib/storage/IAppserviceStorageProvider.js +3 -0
  257. package/lib/storage/IAppserviceStorageProvider.js.map +1 -0
  258. package/lib/storage/ICryptoStorageProvider.d.ts +32 -0
  259. package/lib/storage/ICryptoStorageProvider.js +3 -0
  260. package/lib/storage/ICryptoStorageProvider.js.map +1 -0
  261. package/lib/storage/IStorageProvider.d.ts +47 -0
  262. package/lib/storage/IStorageProvider.js +3 -0
  263. package/lib/storage/IStorageProvider.js.map +1 -0
  264. package/lib/storage/MemoryStorageProvider.d.ts +26 -0
  265. package/lib/storage/MemoryStorageProvider.js +55 -0
  266. package/lib/storage/MemoryStorageProvider.js.map +1 -0
  267. package/lib/storage/RustSdkCryptoStorageProvider.d.ts +38 -0
  268. package/lib/storage/RustSdkCryptoStorageProvider.js +69 -0
  269. package/lib/storage/RustSdkCryptoStorageProvider.js.map +1 -0
  270. package/lib/storage/SimpleFsStorageProvider.d.ts +31 -0
  271. package/lib/storage/SimpleFsStorageProvider.js +122 -0
  272. package/lib/storage/SimpleFsStorageProvider.js.map +1 -0
  273. package/lib/storage/SimplePostgresStorageProvider.d.ts +32 -0
  274. package/lib/storage/SimplePostgresStorageProvider.js +148 -0
  275. package/lib/storage/SimplePostgresStorageProvider.js.map +1 -0
  276. package/lib/strategies/AppserviceJoinRoomStrategy.d.ts +14 -0
  277. package/lib/strategies/AppserviceJoinRoomStrategy.js +54 -0
  278. package/lib/strategies/AppserviceJoinRoomStrategy.js.map +1 -0
  279. package/lib/strategies/JoinRoomStrategy.d.ts +11 -0
  280. package/lib/strategies/JoinRoomStrategy.js +44 -0
  281. package/lib/strategies/JoinRoomStrategy.js.map +1 -0
  282. package/package.json +136 -4
  283. package/src/AdminApis.ts +60 -0
  284. package/src/DMs.ts +164 -0
  285. package/src/IFilter.ts +7 -0
  286. package/src/MatrixAuth.ts +129 -0
  287. package/src/MatrixClient.ts +2046 -0
  288. package/src/PantalaimonClient.ts +62 -0
  289. package/src/SynapseAdminApis.ts +482 -0
  290. package/src/SynchronousMatrixClient.ts +129 -0
  291. package/src/UnstableApis.ts +75 -0
  292. package/src/appservice/Appservice.ts +1089 -0
  293. package/src/appservice/Intent.ts +342 -0
  294. package/src/appservice/MatrixBridge.ts +139 -0
  295. package/src/appservice/UnstableAppserviceApis.ts +63 -0
  296. package/src/appservice/http_responses.ts +77 -0
  297. package/src/b64.ts +63 -0
  298. package/src/e2ee/CrossSigningBootstrap.ts +141 -0
  299. package/src/e2ee/CryptoClient.ts +378 -0
  300. package/src/e2ee/ICryptoRoomInformation.ts +9 -0
  301. package/src/e2ee/RoomTracker.ts +99 -0
  302. package/src/e2ee/RustEngine.ts +580 -0
  303. package/src/e2ee/decorators.ts +38 -0
  304. package/src/helpers/MatrixEntity.ts +65 -0
  305. package/src/helpers/MatrixGlob.ts +38 -0
  306. package/src/helpers/MentionPill.ts +95 -0
  307. package/src/helpers/Permalinks.ts +101 -0
  308. package/src/helpers/ProfileCache.ts +119 -0
  309. package/src/helpers/RichReply.ts +46 -0
  310. package/src/helpers/UnpaddedBase64.ts +44 -0
  311. package/src/http.ts +166 -0
  312. package/src/identity/IdentityClient.ts +225 -0
  313. package/src/index.ts +125 -0
  314. package/src/logging/ConsoleLogger.ts +31 -0
  315. package/src/logging/ILogger.ts +40 -0
  316. package/src/logging/LogService.ts +167 -0
  317. package/src/logging/RichConsoleLogger.ts +70 -0
  318. package/src/metrics/IMetricListener.ts +57 -0
  319. package/src/metrics/Metrics.ts +134 -0
  320. package/src/metrics/contexts.ts +56 -0
  321. package/src/metrics/decorators.ts +94 -0
  322. package/src/metrics/names.ts +53 -0
  323. package/src/mixins/AutojoinRoomsMixin.ts +24 -0
  324. package/src/mixins/AutojoinUpgradedRoomsMixin.ts +37 -0
  325. package/src/models/Account.ts +8 -0
  326. package/src/models/CreateRoom.ts +144 -0
  327. package/src/models/Crypto.ts +188 -0
  328. package/src/models/EventContext.ts +23 -0
  329. package/src/models/IdentityServerModels.ts +18 -0
  330. package/src/models/MSC2176.ts +47 -0
  331. package/src/models/MatrixError.ts +39 -0
  332. package/src/models/MatrixProfile.ts +55 -0
  333. package/src/models/OpenIDConnect.ts +10 -0
  334. package/src/models/Policies.ts +28 -0
  335. package/src/models/PowerLevelAction.ts +31 -0
  336. package/src/models/PowerLevelBounds.ts +16 -0
  337. package/src/models/Presence.ts +38 -0
  338. package/src/models/ServerVersions.ts +8 -0
  339. package/src/models/Spaces.ts +167 -0
  340. package/src/models/Threepid.ts +8 -0
  341. package/src/models/events/AliasesEvent.ts +37 -0
  342. package/src/models/events/CanonicalAliasEvent.ts +30 -0
  343. package/src/models/events/CreateEvent.ts +82 -0
  344. package/src/models/events/EncryptedRoomEvent.ts +58 -0
  345. package/src/models/events/EncryptionEvent.ts +63 -0
  346. package/src/models/events/Event.ts +38 -0
  347. package/src/models/events/EventKind.ts +16 -0
  348. package/src/models/events/InvalidEventError.ts +19 -0
  349. package/src/models/events/JoinRulesEvent.ts +37 -0
  350. package/src/models/events/MembershipEvent.ts +77 -0
  351. package/src/models/events/MessageEvent.ts +292 -0
  352. package/src/models/events/PinnedEventsEvent.ts +30 -0
  353. package/src/models/events/PowerLevelsEvent.ts +135 -0
  354. package/src/models/events/PresenceEvent.ts +69 -0
  355. package/src/models/events/RedactionEvent.ts +44 -0
  356. package/src/models/events/RoomAvatarEvent.ts +36 -0
  357. package/src/models/events/RoomEvent.ts +83 -0
  358. package/src/models/events/RoomNameEvent.ts +27 -0
  359. package/src/models/events/RoomTopicEvent.ts +27 -0
  360. package/src/models/events/SpaceChildEvent.ts +74 -0
  361. package/src/models/events/_MissingEvents.md +35 -0
  362. package/src/models/events/converter.ts +47 -0
  363. package/src/models/unstable/MediaInfo.ts +16 -0
  364. package/src/preprocessors/IPreprocessor.ts +24 -0
  365. package/src/preprocessors/RichRepliesPreprocessor.ts +159 -0
  366. package/src/request.ts +21 -0
  367. package/src/simple-validation.ts +30 -0
  368. package/src/storage/IAppserviceStorageProvider.ts +54 -0
  369. package/src/storage/ICryptoStorageProvider.ts +36 -0
  370. package/src/storage/IStorageProvider.ts +53 -0
  371. package/src/storage/MemoryStorageProvider.ts +65 -0
  372. package/src/storage/RustSdkCryptoStorageProvider.ts +81 -0
  373. package/src/storage/SimpleFsStorageProvider.ts +142 -0
  374. package/src/storage/SimplePostgresStorageProvider.ts +168 -0
  375. package/src/strategies/AppserviceJoinRoomStrategy.ts +47 -0
  376. package/src/strategies/JoinRoomStrategy.ts +45 -0
  377. package/tsconfig.json +22 -0
@@ -0,0 +1,188 @@
1
+ /**
2
+ * One time key algorithms.
3
+ * @category Models
4
+ */
5
+ export enum OTKAlgorithm {
6
+ Signed = "signed_curve25519",
7
+ Unsigned = "curve25519",
8
+ }
9
+
10
+ /**
11
+ * Label for a one time key.
12
+ * @category Models
13
+ */
14
+ export type OTKLabel<Algorithm extends OTKAlgorithm, ID extends string> = `${Algorithm}:${ID}`;
15
+
16
+ /**
17
+ * Signatures object.
18
+ * @category Models
19
+ */
20
+ export interface Signatures {
21
+ [entity: string]: {
22
+ [keyLabel: string]: string;
23
+ };
24
+ }
25
+
26
+ /**
27
+ * A signed_curve25519 one time key.
28
+ * @category Models
29
+ */
30
+ export interface SignedCurve25519OTK {
31
+ key: string;
32
+ signatures: Signatures;
33
+ fallback?: boolean;
34
+ }
35
+
36
+ /**
37
+ * A fallback key.
38
+ * @category Models
39
+ */
40
+ export interface FallbackKey {
41
+ keyId: string;
42
+ key: SignedCurve25519OTK & { fallback: true };
43
+ }
44
+
45
+ /**
46
+ * One Time Keys structure model.
47
+ * @category Models
48
+ */
49
+ export type OTKs =
50
+ Record<OTKLabel<OTKAlgorithm.Signed, string>, SignedCurve25519OTK>
51
+ & Record<OTKLabel<OTKAlgorithm.Unsigned, string>, string>;
52
+
53
+ /**
54
+ * The counts of each one time key by algorithm.
55
+ * @category Models
56
+ */
57
+ export type OTKCounts = {
58
+ /**
59
+ * The number of keys which remain unused for the algorithm.
60
+ */
61
+ [alg in OTKAlgorithm]?: number;
62
+ };
63
+
64
+ /**
65
+ * The available encryption algorithms.
66
+ * @category Models
67
+ */
68
+ export enum EncryptionAlgorithm {
69
+ OlmV1Curve25519AesSha2 = "m.olm.v1.curve25519-aes-sha2",
70
+ MegolmV1AesSha2 = "m.megolm.v1.aes-sha2",
71
+ }
72
+
73
+ /**
74
+ * The key algorithms for device keys.
75
+ * @category Models
76
+ */
77
+ export enum DeviceKeyAlgorithm {
78
+ Ed25519 = "ed25519",
79
+ Curve25519 = "curve25519",
80
+ }
81
+
82
+ /**
83
+ * Label for a device key.
84
+ * @category Models
85
+ */
86
+ export type DeviceKeyLabel<Algorithm extends DeviceKeyAlgorithm, ID extends string> = `${Algorithm}:${ID}`;
87
+
88
+ /**
89
+ * Represents a user's device.
90
+ * @category Models
91
+ */
92
+ export interface UserDevice {
93
+ user_id: string;
94
+ device_id: string;
95
+ algorithms: (EncryptionAlgorithm | string)[];
96
+ keys: Record<DeviceKeyLabel<DeviceKeyAlgorithm, string>, string>;
97
+ signatures: Signatures;
98
+ unsigned?: {
99
+ [k: string]: any;
100
+ device_display_name?: string;
101
+ };
102
+ }
103
+
104
+ /**
105
+ * Represents a user's own device.
106
+ * @category Models
107
+ */
108
+ export interface OwnUserDevice {
109
+ device_id: string;
110
+ display_name?: string;
111
+ last_seen_ip?: string;
112
+ last_seen_ts?: number;
113
+ }
114
+
115
+ /**
116
+ * Device list response for a multi-user query.
117
+ * @category Models
118
+ */
119
+ export interface MultiUserDeviceListResponse {
120
+ /**
121
+ * Federation failures, keyed by server name. The mapped object should be a standard
122
+ * error object.
123
+ */
124
+ failures: {
125
+ [serverName: string]: any;
126
+ };
127
+
128
+ /**
129
+ * A map of user ID to device ID to device.
130
+ */
131
+ device_keys: Record<string, Record<string, UserDevice>>;
132
+ }
133
+
134
+ /**
135
+ * One Time Key claim response.
136
+ * @category Models
137
+ */
138
+ export interface OTKClaimResponse {
139
+ /**
140
+ * Federation failures, keyed by server name. The mapped object should be a standard
141
+ * error object.
142
+ */
143
+ failures: {
144
+ [serverName: string]: any;
145
+ };
146
+
147
+ /**
148
+ * The claimed One Time Keys, as a map from user ID to device ID to key ID to OTK.
149
+ */
150
+ one_time_keys: Record<string, Record<string, OTKs>>;
151
+ }
152
+
153
+ /**
154
+ * An encrypted Olm payload.
155
+ * @category Models
156
+ */
157
+ export interface IOlmEncrypted {
158
+ algorithm: EncryptionAlgorithm.OlmV1Curve25519AesSha2;
159
+ sender_key: string;
160
+ ciphertext: {
161
+ [deviceCurve25519Key: string]: {
162
+ type: number;
163
+ body: string; // base64
164
+ };
165
+ };
166
+ }
167
+
168
+ /**
169
+ * A to-device message.
170
+ * @category Models
171
+ */
172
+ export interface IToDeviceMessage<T = any> {
173
+ type: string;
174
+ sender: string;
175
+ content: T;
176
+ }
177
+
178
+ /**
179
+ * Encrypted event content for a Megolm-encrypted m.room.encrypted event
180
+ * @category Models
181
+ */
182
+ export interface IMegolmEncrypted {
183
+ algorithm: EncryptionAlgorithm.MegolmV1AesSha2;
184
+ sender_key: string;
185
+ ciphertext: string;
186
+ session_id: string;
187
+ device_id: string; // sender
188
+ }
@@ -0,0 +1,23 @@
1
+ import { RoomEvent, RoomEventContent, StateEvent } from "./events/RoomEvent";
2
+
3
+ export interface EventContext {
4
+ /**
5
+ * The event that was used to build this context.
6
+ */
7
+ event: RoomEvent<RoomEventContent>;
8
+
9
+ /**
10
+ * The events that happened before the contextual event.
11
+ */
12
+ before: RoomEvent<RoomEventContent>[];
13
+
14
+ /**
15
+ * The events that happened after the contextual event.
16
+ */
17
+ after: RoomEvent<RoomEventContent>[];
18
+
19
+ /**
20
+ * The state of the room at the point of the last event returned.
21
+ */
22
+ state: StateEvent<RoomEventContent>[];
23
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Information about a user on an identity server.
3
+ * @category Models
4
+ */
5
+ export interface IdentityServerAccount {
6
+ user_id: string;
7
+ }
8
+
9
+ /**
10
+ * A stored invite on an identity server.
11
+ * @category Models
12
+ */
13
+ export interface IdentityServerInvite {
14
+ display_name: string;
15
+ public_keys: { public_key: string, key_validity_url: string }[]; // server key then ephemeral key, length of 2
16
+ public_key: string;
17
+ token: string;
18
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Response object for a batch send operation.
3
+ * @category Models
4
+ */
5
+ export interface MSC2716BatchSendResponse {
6
+ /**
7
+ * List of historical state event IDs that were inserted
8
+ */
9
+ state_events?: string[];
10
+ /**
11
+ * List of historical event IDs that were inserted
12
+ */
13
+ events?: string[];
14
+ /**
15
+ * Chunk ID to be used in the next `sendHistoricalEventBatch` call.
16
+ */
17
+ next_chunk_id: string;
18
+ }
19
+
20
+ // TODO: Verify docs and move to events subdirectory if appropriate
21
+
22
+ /**
23
+ * Partial event content for an inserted MSC2716 event.
24
+ * @category Matrix event contents
25
+ */
26
+ export interface MSC2716InsertionEventContent {
27
+ "org.matrix.msc2716.next_chunk_id": string;
28
+ "org.matrix.msc2716.historical": true;
29
+ }
30
+
31
+ /**
32
+ * Partial event content for a chunked MSC2716 event.
33
+ * @category Matrix event contents
34
+ */
35
+ export interface MSC2716ChunkEventContent {
36
+ "org.matrix.msc2716.chunk_id": string;
37
+ "org.matrix.msc2716.historical": true;
38
+ }
39
+
40
+ /**
41
+ * Partial event content for a marked MSC2716 event.
42
+ * @category Matrix event contents
43
+ */
44
+ export interface MSC2716MarkerEventContent {
45
+ "org.matrix.msc2716.insertion_id": string;
46
+ "org.matrix.msc2716.historical": true;
47
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Represents an HTTP error from the Matrix server.
3
+ * @category Error handling
4
+ */
5
+ export class MatrixError extends Error {
6
+ /**
7
+ * The Matrix error code
8
+ */
9
+ public readonly errcode: string;
10
+
11
+ /**
12
+ * Optional human-readable error message.
13
+ */
14
+ public readonly error: string;
15
+
16
+ /**
17
+ * If rate limited, the time in milliseconds to wait before retrying the request
18
+ */
19
+ public readonly retryAfterMs?: number;
20
+
21
+ /**
22
+ * Creates a new Matrix Error
23
+ * @param body The error body.
24
+ * @param statusCode The HTTP status code.
25
+ */
26
+ constructor(public readonly body: { errcode: string, error: string, retry_after_ms?: number }, public readonly statusCode: number) {
27
+ super();
28
+ this.errcode = body.errcode;
29
+ this.error = body.error;
30
+ this.retryAfterMs = body.retry_after_ms;
31
+ }
32
+
33
+ /**
34
+ * Developer-friendly error message.
35
+ */
36
+ public get message() {
37
+ return `${this.errcode}: ${this.error}`;
38
+ }
39
+ }
@@ -0,0 +1,55 @@
1
+ import { MentionPill, UserID } from "..";
2
+
3
+ /**
4
+ * Profile information commonly associated with Matrix profiles
5
+ * @category Models
6
+ */
7
+ export interface MatrixProfileInfo {
8
+ /**
9
+ * The display name of the user, if any.
10
+ */
11
+ displayname?: string;
12
+
13
+ /**
14
+ * A URL to the user's avatar, if any.
15
+ */
16
+ avatar_url?: string;
17
+ }
18
+
19
+ /**
20
+ * Represents a user's profile, possibly in a room.
21
+ * @category Models
22
+ */
23
+ export class MatrixProfile {
24
+ /**
25
+ * Creates a new profile representation for a user.
26
+ * @param {string} userId The user ID the profile is for.
27
+ * @param {MatrixProfile} profile The profile itself.
28
+ */
29
+ constructor(private userId: string, private profile: MatrixProfileInfo) {
30
+ }
31
+
32
+ /**
33
+ * The display name for the user. This will always return a value, though it
34
+ * may be based upon their user ID if no explicit display name is set.
35
+ */
36
+ public get displayName(): string {
37
+ if (!this.profile?.displayname) return new UserID(this.userId).localpart;
38
+ return this.profile.displayname;
39
+ }
40
+
41
+ /**
42
+ * The avatar URL for the user. If the user does not have an avatar, this will
43
+ * be null.
44
+ */
45
+ public get avatarUrl(): string {
46
+ return this.profile?.avatar_url || null; // enforce null over boolean semantics
47
+ }
48
+
49
+ /**
50
+ * A mention pill for this user.
51
+ */
52
+ public get mention(): MentionPill {
53
+ return MentionPill.withDisplayName(this.userId, this.displayName);
54
+ }
55
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * An OpenID Connect token from the homeserver.
3
+ * @category Models
4
+ */
5
+ export interface OpenIDConnectToken {
6
+ access_token: string;
7
+ expires_in: number;
8
+ matrix_server_name: string;
9
+ token_type: 'Bearer';
10
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Information about the policies (terms of service) a server may have.
3
+ * @category Models
4
+ */
5
+ export interface Policies {
6
+ policies: {
7
+ [id: string]: Policy;
8
+ };
9
+ }
10
+
11
+ /**
12
+ * Information about a policy (terms of service) a server may have.
13
+ * @category Models
14
+ */
15
+ export interface Policy {
16
+ version: string;
17
+
18
+ [language: string]: TranslatedPolicy | string; // "|string" is required for `version` to work
19
+ }
20
+
21
+ /**
22
+ * Information about a (translated) policy (terms of service).
23
+ * @category Models
24
+ */
25
+ export interface TranslatedPolicy {
26
+ name: string;
27
+ url: string;
28
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Actions that can be guarded by power levels.
3
+ */
4
+ export enum PowerLevelAction {
5
+ /**
6
+ * Power level required to ban other users.
7
+ */
8
+ Ban = "ban",
9
+
10
+ /**
11
+ * Power level required to kick other users.
12
+ */
13
+ Kick = "kick",
14
+
15
+ /**
16
+ * Power level required to redact events sent by other users. Users can redact
17
+ * their own messages regardless of this power level requirement, unless forbidden
18
+ * by the `events` section of the power levels content.
19
+ */
20
+ RedactEvents = "redact",
21
+
22
+ /**
23
+ * Power level required to invite other users.
24
+ */
25
+ Invite = "invite",
26
+
27
+ /**
28
+ * Power level required to notify the whole room with "@room".
29
+ */
30
+ NotifyRoom = "notifications.room",
31
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Information on the bounds of a power level change a user can apply.
3
+ */
4
+ export interface PowerLevelBounds {
5
+ /**
6
+ * Whether or not the user can even modify the power level of the user. This
7
+ * will be false if the user can't send power level events, or the user is
8
+ * unobtainably high in power.
9
+ */
10
+ canModify: boolean;
11
+
12
+ /**
13
+ * The maximum possible power level the user can set on the target user.
14
+ */
15
+ maximumPossibleLevel: number;
16
+ }
@@ -0,0 +1,38 @@
1
+ import { PresenceEventContent, PresenceState } from "./events/PresenceEvent";
2
+
3
+ /**
4
+ * Presence information for a user.
5
+ * @category Models
6
+ */
7
+ export class Presence {
8
+ constructor(protected presence: PresenceEventContent) {
9
+ }
10
+
11
+ /**
12
+ * The state for this presence update.
13
+ */
14
+ public get state(): PresenceState {
15
+ return this.presence.presence;
16
+ }
17
+
18
+ /**
19
+ * The status message which accompanies this presence. May be falsey.
20
+ */
21
+ public get statusMessage(): string {
22
+ return this.presence.status_msg;
23
+ }
24
+
25
+ /**
26
+ * How long ago in milliseconds this presence was changed. May be falsey.
27
+ */
28
+ public get lastActiveAgo(): number {
29
+ return this.presence.last_active_ago;
30
+ }
31
+
32
+ /**
33
+ * Whether or not the user is currently active.
34
+ */
35
+ public get currentlyActive(): boolean {
36
+ return this.presence.currently_active;
37
+ }
38
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Representation of the server's supported specification versions and unstable feature flags.
3
+ * @category Models
4
+ */
5
+ export type ServerVersions = {
6
+ unstable_features?: Record<string, boolean>;
7
+ versions: string[];
8
+ };
@@ -0,0 +1,167 @@
1
+ import { MatrixClient } from "../MatrixClient";
2
+ import { UserID } from "../helpers/MatrixEntity";
3
+ import { validateSpaceOrderString } from "../simple-validation";
4
+ import { SpaceChildEvent, SpaceChildEventContent } from "./events/SpaceChildEvent";
5
+
6
+ /**
7
+ * Options to be specified when creating a Space.
8
+ * @category Models
9
+ */
10
+ export interface SpaceCreateOptions {
11
+ /**
12
+ * The name of the space.
13
+ */
14
+ name: string;
15
+
16
+ /**
17
+ * The topic/description for the space.
18
+ */
19
+ topic?: string;
20
+
21
+ /**
22
+ * An MXC URI for the space's avatar.
23
+ */
24
+ avatarUrl?: string;
25
+
26
+ /**
27
+ * Whether or not the space should be publicly joinable or not.
28
+ */
29
+ isPublic: boolean; // maps to world_readable on true, otherwise private.
30
+
31
+ /**
32
+ * Optional localpart for the alias of the space.
33
+ */
34
+ localpart?: string;
35
+
36
+ /**
37
+ * User IDs to invite to the space upon creation.
38
+ */
39
+ invites?: string[];
40
+ }
41
+
42
+ /**
43
+ * Options for displaying/handling a child room/space.
44
+ * @category Models
45
+ */
46
+ export interface SpaceChildEntityOptions {
47
+ /**
48
+ * Whether or not the entity is intended to be a suggested entity.
49
+ */
50
+ suggested?: boolean;
51
+
52
+ /**
53
+ * Servers to try and join through. When not provided, the SDK will try to
54
+ * determine a set.
55
+ */
56
+ via?: string[];
57
+
58
+ /**
59
+ * A short string to differentiate the rendering order of entities.
60
+ * @see validateSpaceOrderString
61
+ */
62
+ order?: string;
63
+ }
64
+
65
+ /**
66
+ * Options for creating a new child space or room.
67
+ * @category Models
68
+ */
69
+ export type NewChildOpts = SpaceCreateOptions & SpaceChildEntityOptions;
70
+
71
+ /**
72
+ * A mapping of room ID to space child information.
73
+ * @category Models
74
+ */
75
+ export interface SpaceEntityMap {
76
+ [roomId: string]: SpaceChildEvent;
77
+ }
78
+
79
+ /**
80
+ * An instance representing a Matrix Space. A space is tied to a room.
81
+ * @category Models
82
+ */
83
+ export class Space {
84
+ public constructor(public readonly roomId: string, public readonly client: MatrixClient) {
85
+ }
86
+
87
+ /**
88
+ * Creates a new child space under this space.
89
+ * @param {SpaceCreateOptions} opts The options for the new space.
90
+ * @returns {Promise<Space>} Resolves to the created space.
91
+ */
92
+ public async createChildSpace(opts: NewChildOpts): Promise<Space> {
93
+ const space = await this.client.createSpace(opts);
94
+ await this.addChildSpace(space, opts);
95
+ return space;
96
+ }
97
+
98
+ /**
99
+ * Adds a child space to the space. Must be joined to both spaces.
100
+ * @param {Space} space The space to add.
101
+ * @param {SpaceChildEntityOptions} childOpts Related options for the child's representation.
102
+ * @returns {Promise<Space>} Resolves when complete.
103
+ */
104
+ public async addChildSpace(space: Space, childOpts: SpaceChildEntityOptions = {}): Promise<void> {
105
+ await this.addChildRoom(space.roomId, childOpts);
106
+ }
107
+
108
+ /**
109
+ * Removes a child space from the space. Must be joined to the current space (not needed for child space).
110
+ * @param {Space} space The space to remove.
111
+ * @returns {Promise<void>} Resolves when complete.
112
+ */
113
+ public async removeChildSpace(space: Space): Promise<void> {
114
+ await this.removeChildRoom(space.roomId);
115
+ }
116
+
117
+ /**
118
+ * Adds a child room to the space. Must be joined to both the room and the space.
119
+ * @param {string} roomId The room ID to add.
120
+ * @param {SpaceChildEntityOptions} childOpts Additional options for the child space.
121
+ * @returns {Promise<void>} Resolves when complete.
122
+ */
123
+ public async addChildRoom(roomId: string, childOpts: SpaceChildEntityOptions = {}): Promise<void> {
124
+ const via = childOpts.via ?? [new UserID(await this.client.getUserId()).domain];
125
+ const childContent: SpaceChildEventContent = { via };
126
+
127
+ if (childOpts.suggested) childContent.suggested = childOpts.suggested;
128
+ if (childOpts.order) {
129
+ validateSpaceOrderString(childOpts.order);
130
+ childContent.order = childOpts.order;
131
+ }
132
+
133
+ await this.client.sendStateEvent(this.roomId, "m.space.child", roomId, childContent);
134
+ }
135
+
136
+ /**
137
+ * Removes a child room from the space. Must be joined to the current space (not needed for child room).
138
+ * @param {string} roomId The room ID to remove.
139
+ * @returns {Promise<void>} Resolves when complete.
140
+ */
141
+ public async removeChildRoom(roomId: string): Promise<void> {
142
+ await this.client.sendStateEvent(this.roomId, "m.space.child", roomId, {});
143
+ }
144
+
145
+ /**
146
+ * Gets all the child rooms on the space. These may be spaces or other rooms.
147
+ * @returns {Promise<SpaceEntityMap>} Resolves to a map of children for this space.
148
+ */
149
+ public async getChildEntities(): Promise<SpaceEntityMap> {
150
+ const roomState = await this.client.getRoomState(this.roomId);
151
+ const mapping: SpaceEntityMap = {};
152
+ roomState
153
+ .filter(s => s.type === "m.space.child")
154
+ .filter(s => s.content?.via)
155
+ .forEach(s => mapping[s.state_key] = new SpaceChildEvent(s));
156
+ return mapping;
157
+ }
158
+
159
+ /**
160
+ * Invite a user to the current space.
161
+ * @param {string} userId The user ID to invite.
162
+ * @returns {Promise<void>} Resolves when completed.
163
+ */
164
+ public async inviteUser(userId: string) {
165
+ return this.client.inviteUser(userId, this.roomId);
166
+ }
167
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A Third Party Identifier (3PID or threepid)
3
+ * @category Models
4
+ */
5
+ export interface Threepid {
6
+ kind: "email" | "msisdn" | string;
7
+ address: string;
8
+ }