@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,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SynapseAdminApis = exports.SynapseRoomProperty = void 0;
4
+ const MatrixError_1 = require("./models/MatrixError");
5
+ /**
6
+ * Available properties on a Synapse room listing to order by.
7
+ * @category Admin APIs
8
+ */
9
+ var SynapseRoomProperty;
10
+ (function (SynapseRoomProperty) {
11
+ SynapseRoomProperty["Name"] = "name";
12
+ SynapseRoomProperty["CanonicalAlias"] = "canonical_alias";
13
+ SynapseRoomProperty["JoinedMembers"] = "joined_members";
14
+ SynapseRoomProperty["JoinedLocalMembers"] = "joined_local_members";
15
+ SynapseRoomProperty["Version"] = "version";
16
+ SynapseRoomProperty["Creator"] = "creator";
17
+ SynapseRoomProperty["Encryption"] = "encryption";
18
+ SynapseRoomProperty["CanFederate"] = "federatable";
19
+ SynapseRoomProperty["IsPublic"] = "public";
20
+ SynapseRoomProperty["JoinRules"] = "join_rules";
21
+ SynapseRoomProperty["GuestAccess"] = "guest_access";
22
+ SynapseRoomProperty["HistoryVisibility"] = "history_visibility";
23
+ SynapseRoomProperty["NumStateEvents"] = "state_events";
24
+ })(SynapseRoomProperty || (exports.SynapseRoomProperty = SynapseRoomProperty = {}));
25
+ /**
26
+ * Access to various administrative APIs specifically available in Synapse.
27
+ * @category Admin APIs
28
+ */
29
+ class SynapseAdminApis {
30
+ constructor(client) {
31
+ this.client = client;
32
+ }
33
+ /**
34
+ * Get information about a user. The client making the request must be an admin user.
35
+ * @param {string} userId The user ID to check.
36
+ * @returns {Promise<SynapseUser>} The resulting Synapse user record
37
+ */
38
+ async getUser(userId) {
39
+ return this.client.doRequest("GET", "/_synapse/admin/v2/users/" + encodeURIComponent(userId));
40
+ }
41
+ /**
42
+ * Create or update a given user on a Synapse server. The
43
+ * client making the request must be an admin user.
44
+ * @param {string} userId The user ID to check.
45
+ * @param {SynapseUserProperties} opts Options to set when creating or updating the user.
46
+ * @returns {Promise<SynapseUser>} The resulting Synapse user record
47
+ */
48
+ async upsertUser(userId, opts = {}) {
49
+ return this.client.doRequest("PUT", "/_synapse/admin/v2/users/" + encodeURIComponent(userId), undefined, opts);
50
+ }
51
+ /**
52
+ * Get a list of users registered with Synapse, optionally filtered by some criteria. The
53
+ * client making the request must be an admin user.
54
+ * @param {string} from The token to continue listing users from.
55
+ * @param {number} limit The maximum number of users to request.
56
+ * @param {string} name Optional localpart or display name filter for results.
57
+ * @param {boolean} guests Whether or not to include guest accounts. Default true.
58
+ * @param {boolean} deactivated Whether or not to include deactivated accounts. Default false.
59
+ * @returns {Promise<SynapseUserList>} A batch of user results.
60
+ */
61
+ async listUsers(from, limit, name, guests = true, deactivated = false) {
62
+ const qs = { guests, deactivated };
63
+ if (from)
64
+ qs['from'] = from;
65
+ if (limit)
66
+ qs['limit'] = limit;
67
+ if (name)
68
+ qs['name'] = name;
69
+ return this.client.doRequest("GET", "/_synapse/admin/v2/users", qs);
70
+ }
71
+ /**
72
+ * Get a list of all users registered with Synapse, optionally filtered by some criteria. The
73
+ * client making the request must be an admin user.
74
+ *
75
+ * This method returns an async generator that can be used to filter results.
76
+ * @param options Options to pass to the user listing function
77
+ * @example
78
+ * for await (const user of synapseAdminApis.listAllUsers()) {
79
+ * if (user.name === '@alice:example.com') {
80
+ * return user;
81
+ * }
82
+ * }
83
+ */
84
+ async *listAllUsers(options = {}) {
85
+ let from = undefined;
86
+ let response;
87
+ do {
88
+ const qs = {
89
+ ...options,
90
+ ...(from && { from }),
91
+ };
92
+ response = await this.client.doRequest("GET", "/_synapse/admin/v2/users", qs);
93
+ for (const user of response.users) {
94
+ yield user;
95
+ }
96
+ from = response.next_token;
97
+ } while (from);
98
+ }
99
+ /**
100
+ * Determines if the given user is a Synapse server administrator for this homeserver. The
101
+ * client making the request must be an admin user themselves (check with `isSelfAdmin`)
102
+ * @param {string} userId The user ID to check.
103
+ * @returns {Promise<boolean>} Resolves to true if the user is an admin, false otherwise.
104
+ * Throws if there's an error.
105
+ */
106
+ async isAdmin(userId) {
107
+ const response = await this.client.doRequest("GET", `/_synapse/admin/v1/users/${encodeURIComponent(userId)}/admin`);
108
+ return response['admin'] || false;
109
+ }
110
+ /**
111
+ * Determines if the current user is an admin for the Synapse homeserver.
112
+ * @returns {Promise<boolean>} Resolve to true if the user is an admin, false otherwise.
113
+ * Throws if there's an error.
114
+ */
115
+ async isSelfAdmin() {
116
+ try {
117
+ return await this.isAdmin(await this.client.getUserId());
118
+ }
119
+ catch (err) {
120
+ if (err instanceof MatrixError_1.MatrixError && err.errcode === 'M_FORBIDDEN') {
121
+ return false;
122
+ }
123
+ throw err;
124
+ }
125
+ }
126
+ /**
127
+ * Lists the rooms on the server.
128
+ * @param {string} searchTerm A term to search for in the room names
129
+ * @param {string} from A previous batch token to search from
130
+ * @param {number} limit The maximum number of rooms to return
131
+ * @param {SynapseRoomProperty} orderBy A property of rooms to order by
132
+ * @param {boolean} reverseOrder True to reverse the orderBy direction.
133
+ * @returns {Promise<SynapseRoomList>} Resolves to the server's rooms, ordered and filtered.
134
+ */
135
+ async listRooms(searchTerm, from, limit, orderBy, reverseOrder = false) {
136
+ const params = {};
137
+ if (from)
138
+ params['from'] = from;
139
+ if (limit)
140
+ params['limit'] = limit;
141
+ if (searchTerm)
142
+ params['search_term'] = searchTerm;
143
+ if (orderBy)
144
+ params['order_by'] = orderBy;
145
+ if (reverseOrder) {
146
+ params['dir'] = 'b';
147
+ }
148
+ else {
149
+ params['dir'] = 'f';
150
+ }
151
+ return this.client.doRequest("GET", "/_synapse/admin/v1/rooms", params);
152
+ }
153
+ /**
154
+ * Gets a list of state events in a room.
155
+ * @param {string} roomId The room ID to get state for.
156
+ * @returns {Promise<any[]>} Resolves to the room's state events.
157
+ */
158
+ async getRoomState(roomId) {
159
+ const r = await this.client.doRequest("GET", `/_synapse/admin/v1/rooms/${encodeURIComponent(roomId)}/state`);
160
+ return r?.['state'] || [];
161
+ }
162
+ /**
163
+ * Deletes a room from the server, purging all record of it.
164
+ * @param {string} roomId The room to delete.
165
+ * @returns {Promise} Resolves when complete.
166
+ */
167
+ async deleteRoom(roomId) {
168
+ return this.client.doRequest("DELETE", `/_synapse/admin/v2/rooms/${encodeURIComponent(roomId)}`, {}, { purge: true });
169
+ }
170
+ /**
171
+ * Gets the status of all active deletion tasks, and all those completed in the last 24h, for the given room_id.
172
+ * @param {string} roomId The room ID to get deletion state for.
173
+ * @returns {Promise<any[]>} Resolves to the room's deletion status results.
174
+ */
175
+ async getDeleteRoomState(roomId) {
176
+ const r = await this.client.doRequest("GET", `/_synapse/admin/v2/rooms/${encodeURIComponent(roomId)}/delete_status`);
177
+ return r?.['results'] || [];
178
+ }
179
+ /**
180
+ * List all registration tokens on the homeserver.
181
+ * @param valid If true, only valid tokens are returned.
182
+ * If false, only tokens that have expired or have had all uses exhausted are returned.
183
+ * If omitted, all tokens are returned regardless of validity.
184
+
185
+ * @returns An array of registration tokens.
186
+ */
187
+ async listRegistrationTokens(valid) {
188
+ const res = await this.client.doRequest("GET", `/_synapse/admin/v1/registration_tokens`, { valid });
189
+ return res.registration_tokens;
190
+ }
191
+ /**
192
+ * Get details about a single token.
193
+ * @param token The token to fetch.
194
+ * @returns A registration tokens, or null if not found.
195
+ */
196
+ async getRegistrationToken(token) {
197
+ try {
198
+ return await this.client.doRequest("GET", `/_synapse/admin/v1/registration_tokens/${encodeURIComponent(token)}`);
199
+ }
200
+ catch (e) {
201
+ if (e?.statusCode === 404) {
202
+ return null;
203
+ }
204
+ throw e;
205
+ }
206
+ }
207
+ /**
208
+ * Create a new registration token.
209
+ * @param options Options to pass to the request.
210
+ * @returns The newly created token.
211
+ */
212
+ async createRegistrationToken(options = {}) {
213
+ return this.client.doRequest("POST", `/_synapse/admin/v1/registration_tokens/new`, undefined, options);
214
+ }
215
+ /**
216
+ * Update an existing registration token.
217
+ * @param token The token to update.
218
+ * @param options Options to pass to the request.
219
+ * @returns The newly created token.
220
+ */
221
+ async updateRegistrationToken(token, options) {
222
+ return this.client.doRequest("PUT", `/_synapse/admin/v1/registration_tokens/${encodeURIComponent(token)}`, undefined, options);
223
+ }
224
+ /**
225
+ * Delete a registration token
226
+ * @param token The token to update.
227
+ * @returns A promise that resolves upon success.
228
+ */
229
+ async deleteRegistrationToken(token) {
230
+ return this.client.doRequest("DELETE", `/_synapse/admin/v1/registration_tokens/${encodeURIComponent(token)}`, undefined, {});
231
+ }
232
+ /**
233
+ * Grants another user the highest power available to a local user who is in the room.
234
+ * If the user is not in the room, and it is not publicly joinable, then invite the user.
235
+ * @param roomId The room to make the user admin in.
236
+ * @param userId The user to make admin in the room. If undefined, it uses the authenticated user.
237
+ * @returns Resolves when complete.
238
+ */
239
+ async makeRoomAdmin(roomId, userId) {
240
+ return this.client.doRequest("POST", `/_synapse/admin/v1/rooms/${encodeURIComponent(roomId)}/make_room_admin`, {}, { user_id: userId });
241
+ }
242
+ }
243
+ exports.SynapseAdminApis = SynapseAdminApis;
244
+ //# sourceMappingURL=SynapseAdminApis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SynapseAdminApis.js","sourceRoot":"","sources":["../src/SynapseAdminApis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { MatrixClient } from "./MatrixClient";
2
+ /**
3
+ * A MatrixClient class that handles events in sync for the /sync loop, instead
4
+ * of trying to push its way through the /sync loop as fast as possible. It is
5
+ * intended that the consumer extend this class and override the onWhatever()
6
+ * functions it needs. All of the onWhatever() functions have a default behaviour
7
+ * of doing nothing.
8
+ */
9
+ export declare abstract class SynchronousMatrixClient extends MatrixClient {
10
+ /**
11
+ * Creates a new SynchronousMatrixClient. Note that this accepts a MatrixClient, though
12
+ * much of the class's properties are not brought over. Always convert your MatrixClient
13
+ * instance to a SynchronousMatrixClient as soon as possible to avoid diversion in which
14
+ * properties are proxied over.
15
+ * @param {MatrixClient} baseClient The client to wrap.
16
+ */
17
+ protected constructor(baseClient: MatrixClient);
18
+ private handleEvent;
19
+ protected startSyncInternal(): Promise<any>;
20
+ /**
21
+ * Handles the `account_data` event raised by the client.
22
+ * @param {any} event The account data event.
23
+ * @returns {Promise<any>} Resolves when complete.
24
+ */
25
+ protected onAccountData(event: any): Promise<any>;
26
+ /**
27
+ * Handles the `room.account_data` event raised by the client.
28
+ * @param {string} roomId The Room ID the account data applies to.
29
+ * @param {any} event The room account data event.
30
+ * @returns {Promise<any>} Resolves when complete.
31
+ */
32
+ protected onRoomAccountData(roomId: string, event: any): Promise<any>;
33
+ /**
34
+ * Handles the `room.leave` event raised by the client.
35
+ * @param {string} roomId The Room ID the event happened in.
36
+ * @param {any} event The event.
37
+ * @returns {Promise<any>} Resolves when complete.
38
+ */
39
+ protected onRoomLeave(roomId: string, event: any): Promise<any>;
40
+ /**
41
+ * Handles the `room.invite` event raised by the client.
42
+ * @param {string} roomId The Room ID the event happened in.
43
+ * @param {any} event The event.
44
+ * @returns {Promise<any>} Resolves when complete.
45
+ */
46
+ protected onRoomInvite(roomId: string, event: any): Promise<any>;
47
+ /**
48
+ * Handles the `room.join` event raised by the client.
49
+ * @param {string} roomId The Room ID the event happened in.
50
+ * @param {any} event The event.
51
+ * @returns {Promise<any>} Resolves when complete.
52
+ */
53
+ protected onRoomJoin(roomId: string, event: any): Promise<any>;
54
+ /**
55
+ * Handles the `room.message` event raised by the client.
56
+ * @param {string} roomId The Room ID the event happened in.
57
+ * @param {any} event The event.
58
+ * @returns {Promise<any>} Resolves when complete.
59
+ */
60
+ protected onRoomMessage(roomId: string, event: any): Promise<any>;
61
+ /**
62
+ * Handles the `room.archived` event raised by the client.
63
+ * @param {string} roomId The Room ID the event happened in.
64
+ * @param {any} event The event.
65
+ * @returns {Promise<any>} Resolves when complete.
66
+ */
67
+ protected onRoomArchived(roomId: string, event: any): Promise<any>;
68
+ /**
69
+ * Handles the `room.upgraded` event raised by the client.
70
+ * @param {string} roomId The Room ID the event happened in.
71
+ * @param {any} event The event.
72
+ * @returns {Promise<any>} Resolves when complete.
73
+ */
74
+ protected onRoomUpgraded(roomId: string, event: any): Promise<any>;
75
+ /**
76
+ * Handles the `room.event` event raised by the client.
77
+ * @param {string} roomId The Room ID the event happened in.
78
+ * @param {any} event The event.
79
+ * @returns {Promise<any>} Resolves when complete.
80
+ */
81
+ protected onRoomEvent(roomId: string, event: any): Promise<any>;
82
+ }
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SynchronousMatrixClient = void 0;
4
+ const MatrixClient_1 = require("./MatrixClient");
5
+ /**
6
+ * A MatrixClient class that handles events in sync for the /sync loop, instead
7
+ * of trying to push its way through the /sync loop as fast as possible. It is
8
+ * intended that the consumer extend this class and override the onWhatever()
9
+ * functions it needs. All of the onWhatever() functions have a default behaviour
10
+ * of doing nothing.
11
+ */
12
+ class SynchronousMatrixClient extends MatrixClient_1.MatrixClient {
13
+ /**
14
+ * Creates a new SynchronousMatrixClient. Note that this accepts a MatrixClient, though
15
+ * much of the class's properties are not brought over. Always convert your MatrixClient
16
+ * instance to a SynchronousMatrixClient as soon as possible to avoid diversion in which
17
+ * properties are proxied over.
18
+ * @param {MatrixClient} baseClient The client to wrap.
19
+ */
20
+ constructor(baseClient) {
21
+ super(baseClient.homeserverUrl, baseClient.accessToken, baseClient.storageProvider);
22
+ }
23
+ async handleEvent(emitType, arg1, arg2) {
24
+ if (emitType === 'account_data')
25
+ await this.onAccountData(arg1);
26
+ if (emitType === 'room.account_data')
27
+ await this.onRoomAccountData(arg1, arg2);
28
+ if (emitType === 'room.leave')
29
+ await this.onRoomLeave(arg1, arg2);
30
+ if (emitType === 'room.invite')
31
+ await this.onRoomInvite(arg1, arg2);
32
+ if (emitType === 'room.join')
33
+ await this.onRoomJoin(arg1, arg2);
34
+ if (emitType === 'room.archived')
35
+ await this.onRoomArchived(arg1, arg2);
36
+ if (emitType === 'room.upgraded')
37
+ await this.onRoomUpgraded(arg1, arg2);
38
+ if (emitType === 'room.message')
39
+ await this.onRoomMessage(arg1, arg2);
40
+ if (emitType === 'room.event')
41
+ await this.onRoomEvent(arg1, arg2);
42
+ // Still emit though for easier support of plugins.
43
+ this.emit(emitType, arg1, arg2);
44
+ }
45
+ startSyncInternal() {
46
+ return this.startSync(this.handleEvent.bind(this));
47
+ }
48
+ /**
49
+ * Handles the `account_data` event raised by the client.
50
+ * @param {any} event The account data event.
51
+ * @returns {Promise<any>} Resolves when complete.
52
+ */
53
+ onAccountData(event) {
54
+ return;
55
+ }
56
+ /**
57
+ * Handles the `room.account_data` event raised by the client.
58
+ * @param {string} roomId The Room ID the account data applies to.
59
+ * @param {any} event The room account data event.
60
+ * @returns {Promise<any>} Resolves when complete.
61
+ */
62
+ onRoomAccountData(roomId, event) {
63
+ return;
64
+ }
65
+ /**
66
+ * Handles the `room.leave` event raised by the client.
67
+ * @param {string} roomId The Room ID the event happened in.
68
+ * @param {any} event The event.
69
+ * @returns {Promise<any>} Resolves when complete.
70
+ */
71
+ onRoomLeave(roomId, event) {
72
+ return;
73
+ }
74
+ /**
75
+ * Handles the `room.invite` event raised by the client.
76
+ * @param {string} roomId The Room ID the event happened in.
77
+ * @param {any} event The event.
78
+ * @returns {Promise<any>} Resolves when complete.
79
+ */
80
+ onRoomInvite(roomId, event) {
81
+ return;
82
+ }
83
+ /**
84
+ * Handles the `room.join` event raised by the client.
85
+ * @param {string} roomId The Room ID the event happened in.
86
+ * @param {any} event The event.
87
+ * @returns {Promise<any>} Resolves when complete.
88
+ */
89
+ onRoomJoin(roomId, event) {
90
+ return;
91
+ }
92
+ /**
93
+ * Handles the `room.message` event raised by the client.
94
+ * @param {string} roomId The Room ID the event happened in.
95
+ * @param {any} event The event.
96
+ * @returns {Promise<any>} Resolves when complete.
97
+ */
98
+ onRoomMessage(roomId, event) {
99
+ return;
100
+ }
101
+ /**
102
+ * Handles the `room.archived` event raised by the client.
103
+ * @param {string} roomId The Room ID the event happened in.
104
+ * @param {any} event The event.
105
+ * @returns {Promise<any>} Resolves when complete.
106
+ */
107
+ onRoomArchived(roomId, event) {
108
+ return;
109
+ }
110
+ /**
111
+ * Handles the `room.upgraded` event raised by the client.
112
+ * @param {string} roomId The Room ID the event happened in.
113
+ * @param {any} event The event.
114
+ * @returns {Promise<any>} Resolves when complete.
115
+ */
116
+ onRoomUpgraded(roomId, event) {
117
+ return;
118
+ }
119
+ /**
120
+ * Handles the `room.event` event raised by the client.
121
+ * @param {string} roomId The Room ID the event happened in.
122
+ * @param {any} event The event.
123
+ * @returns {Promise<any>} Resolves when complete.
124
+ */
125
+ onRoomEvent(roomId, event) {
126
+ return;
127
+ }
128
+ }
129
+ exports.SynchronousMatrixClient = SynchronousMatrixClient;
130
+ //# sourceMappingURL=SynchronousMatrixClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SynchronousMatrixClient.js","sourceRoot":"","sources":["../src/SynchronousMatrixClient.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C;;;;;;GAMG;AACH,MAAsB,uBAAwB,SAAQ,2BAAY;IAC9D;;;;;;OAMG;IACH,YAAsB,UAAwB;QAC1C,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IACxF,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,IAAS,EAAE,IAAS;QAC5D,IAAI,QAAQ,KAAK,cAAc;YAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,QAAQ,KAAK,mBAAmB;YAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/E,IAAI,QAAQ,KAAK,YAAY;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,QAAQ,KAAK,aAAa;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,WAAW;YAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,QAAQ,KAAK,eAAe;YAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,eAAe;YAAE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,cAAc;YAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,QAAQ,KAAK,YAAY;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAElE,mDAAmD;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,iBAAiB;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;OAIG;IACO,aAAa,CAAC,KAAU;QAC9B,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,iBAAiB,CAAC,MAAc,EAAE,KAAU;QAClD,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,WAAW,CAAC,MAAc,EAAE,KAAU;QAC5C,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,YAAY,CAAC,MAAc,EAAE,KAAU;QAC7C,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,UAAU,CAAC,MAAc,EAAE,KAAU;QAC3C,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,aAAa,CAAC,MAAc,EAAE,KAAU;QAC9C,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,cAAc,CAAC,MAAc,EAAE,KAAU;QAC/C,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,cAAc,CAAC,MAAc,EAAE,KAAU;QAC/C,OAAO;IACX,CAAC;IAED;;;;;OAKG;IACO,WAAW,CAAC,MAAc,EAAE,KAAU;QAC5C,OAAO;IACX,CAAC;CACJ;AAvHD,0DAuHC"}
@@ -0,0 +1,43 @@
1
+ import { MatrixClient } from "./MatrixClient";
2
+ import { MSC2380MediaInfo } from "./models/unstable/MediaInfo";
3
+ /**
4
+ * Unstable APIs that shouldn't be used in most circumstances.
5
+ * @category Unstable APIs
6
+ */
7
+ export declare class UnstableApis {
8
+ private client;
9
+ constructor(client: MatrixClient);
10
+ /**
11
+ * Gets the local room aliases that are published for a given room.
12
+ * @param {string} roomId The room ID to get local aliases for.
13
+ * @returns {Promise<string[]>} Resolves to the aliases on the room, or an empty array.
14
+ * @deprecated Relies on MSC2432 endpoint.
15
+ */
16
+ getRoomAliases(roomId: string): Promise<string[]>;
17
+ /**
18
+ * Adds a reaction to an event. The contract for this function may change in the future.
19
+ * @param {string} roomId The room ID to react in
20
+ * @param {string} eventId The event ID to react against, in the given room
21
+ * @param {string} emoji The emoji to react with
22
+ * @returns {Promise<string>} Resolves to the event ID of the reaction
23
+ */
24
+ addReactionToEvent(roomId: string, eventId: string, emoji: string): Promise<string>;
25
+ /**
26
+ * Get relations for a given event.
27
+ * @param {string} roomId The room ID to for the given event.
28
+ * @param {string} eventId The event ID to list relations for.
29
+ * @param {string?} relationType The type of relations (e.g. `m.room.member`) to filter for. Optional.
30
+ * @param {string?} eventType The type of event to look for (e.g. `m.room.member`). Optional.
31
+ * @returns {Promise<{chunk: any[]}>} Resolves to an object containing the chunk of relations
32
+ * @deprecated Please use the function of the same name in MatrixClient. This will be removed in a future release.
33
+ */
34
+ getRelationsForEvent(roomId: string, eventId: string, relationType?: string, eventType?: string): Promise<{
35
+ chunk: any[];
36
+ }>;
37
+ /**
38
+ * Get information about a media item. Implements MSC2380
39
+ * @param {string} mxcUrl The MXC to get information about.
40
+ * @returns {Promise<MSC2380MediaInfo>} Resolves to an object containing the media information.
41
+ */
42
+ getMediaInfo(mxcUrl: string): Promise<MSC2380MediaInfo>;
43
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnstableApis = void 0;
4
+ /**
5
+ * Unstable APIs that shouldn't be used in most circumstances.
6
+ * @category Unstable APIs
7
+ */
8
+ class UnstableApis {
9
+ constructor(client) {
10
+ this.client = client;
11
+ }
12
+ /**
13
+ * Gets the local room aliases that are published for a given room.
14
+ * @param {string} roomId The room ID to get local aliases for.
15
+ * @returns {Promise<string[]>} Resolves to the aliases on the room, or an empty array.
16
+ * @deprecated Relies on MSC2432 endpoint.
17
+ */
18
+ async getRoomAliases(roomId) {
19
+ const r = await this.client.doRequest("GET", "/_matrix/client/unstable/org.matrix.msc2432/rooms/" + encodeURIComponent(roomId) + "/aliases");
20
+ return r['aliases'] || [];
21
+ }
22
+ /**
23
+ * Adds a reaction to an event. The contract for this function may change in the future.
24
+ * @param {string} roomId The room ID to react in
25
+ * @param {string} eventId The event ID to react against, in the given room
26
+ * @param {string} emoji The emoji to react with
27
+ * @returns {Promise<string>} Resolves to the event ID of the reaction
28
+ */
29
+ async addReactionToEvent(roomId, eventId, emoji) {
30
+ return this.client.sendRawEvent(roomId, "m.reaction", {
31
+ "m.relates_to": {
32
+ event_id: eventId,
33
+ key: emoji,
34
+ rel_type: "m.annotation",
35
+ },
36
+ });
37
+ }
38
+ /**
39
+ * Get relations for a given event.
40
+ * @param {string} roomId The room ID to for the given event.
41
+ * @param {string} eventId The event ID to list relations for.
42
+ * @param {string?} relationType The type of relations (e.g. `m.room.member`) to filter for. Optional.
43
+ * @param {string?} eventType The type of event to look for (e.g. `m.room.member`). Optional.
44
+ * @returns {Promise<{chunk: any[]}>} Resolves to an object containing the chunk of relations
45
+ * @deprecated Please use the function of the same name in MatrixClient. This will be removed in a future release.
46
+ */
47
+ async getRelationsForEvent(roomId, eventId, relationType, eventType) {
48
+ let url = `/_matrix/client/unstable/rooms/${encodeURIComponent(roomId)}/relations/${encodeURIComponent(eventId)}`;
49
+ if (relationType) {
50
+ url += `/${relationType}`;
51
+ }
52
+ if (eventType) {
53
+ url += `/${eventType}`;
54
+ }
55
+ return this.client.doRequest("GET", url);
56
+ }
57
+ /**
58
+ * Get information about a media item. Implements MSC2380
59
+ * @param {string} mxcUrl The MXC to get information about.
60
+ * @returns {Promise<MSC2380MediaInfo>} Resolves to an object containing the media information.
61
+ */
62
+ async getMediaInfo(mxcUrl) {
63
+ if (!mxcUrl.toLowerCase().startsWith("mxc://")) {
64
+ throw Error("'mxcUrl' does not begin with mxc://");
65
+ }
66
+ const [domain, mediaId] = mxcUrl.substring("mxc://".length).split("/");
67
+ if (!domain || !mediaId) {
68
+ throw Error('Missing domain or media ID');
69
+ }
70
+ return this.client.doRequest("GET", `/_matrix/media/unstable/info/${encodeURIComponent(domain)}/${encodeURIComponent(mediaId)}`);
71
+ }
72
+ }
73
+ exports.UnstableApis = UnstableApis;
74
+ //# sourceMappingURL=UnstableApis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnstableApis.js","sourceRoot":"","sources":["../src/UnstableApis.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,YAAY;IACrB,YAAoB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IACxC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CAAC,MAAc;QACtC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,oDAAoD,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC;QAC7I,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,OAAe,EAAE,KAAa;QAC1E,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE;YAClD,cAAc,EAAE;gBACZ,QAAQ,EAAE,OAAO;gBACjB,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,cAAc;aAC3B;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,OAAe,EAAE,YAAqB,EAAE,SAAkB;QACxG,IAAI,GAAG,GAAG,kCAAkC,kBAAkB,CAAC,MAAM,CAAC,cAAc,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClH,IAAI,YAAY,EAAE,CAAC;YACf,GAAG,IAAI,IAAI,YAAY,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACZ,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,MAAc;QACpC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,gCAAgC,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrI,CAAC;CACJ;AAnED,oCAmEC"}