@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,292 @@
1
+ import { RoomEvent } from "./RoomEvent";
2
+ import { EventRedactedError } from "./InvalidEventError";
3
+
4
+ /**
5
+ * The types of messages that are valid in Matrix.
6
+ * @category Matrix event info
7
+ * @see MessageEventContent
8
+ */
9
+ export type MessageType =
10
+ "m.text"
11
+ | "m.emote"
12
+ | "m.notice"
13
+ | "m.image"
14
+ | "m.file"
15
+ | "m.audio"
16
+ | "m.location"
17
+ | "m.video"
18
+ | string;
19
+
20
+ /**
21
+ * Information about a file in Matrix
22
+ * @category Matrix event info
23
+ * @see MessageEventContent
24
+ */
25
+ export interface FileInfo {
26
+ /**
27
+ * The size of the file in bytes.
28
+ */
29
+ size?: number;
30
+
31
+ /**
32
+ * The type of file.
33
+ */
34
+ mimetype?: string;
35
+ }
36
+
37
+ /**
38
+ * Information about a thumbnail in Matrix
39
+ * @category Matrix event info
40
+ * @see MessageEventContent
41
+ */
42
+ export interface ThumbnailInfo {
43
+ /**
44
+ * The size of the thumbnail in bytes.
45
+ */
46
+ size?: number;
47
+
48
+ /**
49
+ * The type of thumbnail.
50
+ */
51
+ mimetype?: string;
52
+
53
+ /**
54
+ * The intended height of the thumbnail in pixels.
55
+ */
56
+ h: number;
57
+
58
+ /**
59
+ * The intended width of the thumbnail in pixels.
60
+ */
61
+ w: number;
62
+ }
63
+
64
+ /**
65
+ * Information about a file's thumbnail.
66
+ * @category Matrix event info
67
+ * @see MessageEventContent
68
+ */
69
+ export interface ThumbnailedFileInfo {
70
+ /**
71
+ * A URL to a thumbnail for the file, if unencrypted.
72
+ */
73
+ thumbnail_url?: string;
74
+
75
+ /**
76
+ * The encrypted thumbnail file information, if encrypted.
77
+ */
78
+ thumbnail_file?: EncryptedFile;
79
+
80
+ /**
81
+ * Information about the thumbnail. Optionally included if a thumbnail_url is specified.
82
+ */
83
+ thumbnail_info?: ThumbnailInfo;
84
+ }
85
+
86
+ /**
87
+ * Information about a file that has a thumbnail
88
+ * @category Matrix event info
89
+ * @see MessageEventContent
90
+ */
91
+ export interface FileWithThumbnailInfo extends FileInfo, ThumbnailedFileInfo {
92
+ }
93
+
94
+ /**
95
+ * Information about a file that has a width and height.
96
+ * @category Matrix event info
97
+ * @see MessageEventContent
98
+ */
99
+ export interface DimensionalFileInfo extends FileWithThumbnailInfo {
100
+ /**
101
+ * The intended height of the media in pixels.
102
+ */
103
+ h: number;
104
+
105
+ /**
106
+ * The intended width of the media in pixels.
107
+ */
108
+ w: number;
109
+ }
110
+
111
+ /**
112
+ * Information about a file that has a time dimension.
113
+ * @category Matrix event info
114
+ * @see MessageEventContent
115
+ */
116
+ export interface TimedFileInfo extends FileInfo {
117
+ /**
118
+ * The duration of the media in milliseconds.
119
+ */
120
+ duration: number;
121
+ }
122
+
123
+ /**
124
+ * Information about a video file.
125
+ * @category Matrix event info
126
+ * @see MessageEventContent
127
+ */
128
+ export interface VideoFileInfo extends DimensionalFileInfo, TimedFileInfo {
129
+ // No new properties.
130
+ }
131
+
132
+ /**
133
+ * The content definition for m.room.message events with a type of m.audio
134
+ * @category Matrix event contents
135
+ * @see MessageEvent
136
+ */
137
+ export interface AudioMessageEventContent extends FileMessageEventContent {
138
+ /**
139
+ * Information about the file.
140
+ */
141
+ info?: TimedFileInfo;
142
+ }
143
+
144
+ /**
145
+ * The content definition for m.room.message events with a type of m.video
146
+ * @category Matrix event contents
147
+ * @see MessageEvent
148
+ */
149
+ export interface VideoMessageEventContent extends FileMessageEventContent {
150
+ /**
151
+ * Information about the file.
152
+ */
153
+ info?: VideoFileInfo;
154
+ }
155
+
156
+ /**
157
+ * The content definition for m.room.message events with a type of m.image
158
+ * @category Matrix event contents
159
+ * @see MessageEvent
160
+ */
161
+ export interface ImageMessageEventContent extends FileMessageEventContent {
162
+ /**
163
+ * Information about the file.
164
+ */
165
+ info?: DimensionalFileInfo;
166
+ }
167
+
168
+ /**
169
+ * The content definition for m.room.message events with a type of m.file
170
+ * @category Matrix event contents
171
+ * @see MessageEvent
172
+ */
173
+ export interface FileMessageEventContent extends MessageEventContent {
174
+ /**
175
+ * Information about the file.
176
+ */
177
+ info?: FileWithThumbnailInfo;
178
+
179
+ /**
180
+ * URL to the file, if unencrypted.
181
+ */
182
+ url: string;
183
+
184
+ /**
185
+ * The encrypted file, if encrypted.
186
+ */
187
+ file: EncryptedFile;
188
+ }
189
+
190
+ /**
191
+ * An encrypted file.
192
+ * @category Matrix event contents
193
+ * @see MessageEvent
194
+ */
195
+ export interface EncryptedFile {
196
+ url: string;
197
+ key: {
198
+ kty: "oct";
199
+ key_ops: string[];
200
+ alg: "A256CTR";
201
+ k: string;
202
+ ext: true;
203
+ };
204
+ iv: string;
205
+ hashes: {
206
+ sha256: string;
207
+ };
208
+ v: "v2";
209
+ }
210
+
211
+ /**
212
+ * The content definition for m.room.message events with a type of m.location
213
+ * @category Matrix event contents
214
+ * @see MessageEvent
215
+ */
216
+ export interface LocationMessageEventContent extends MessageEventContent {
217
+ /**
218
+ * Information about the location.
219
+ */
220
+ info?: ThumbnailedFileInfo;
221
+
222
+ /**
223
+ * A geo URI of the location.
224
+ */
225
+ geo_uri?: string;
226
+ }
227
+
228
+ /**
229
+ * The content definition for m.room.message events with types of m.text, m.emote, and m.notice
230
+ * @category Matrix event contents
231
+ * @see MessageEvent
232
+ */
233
+ export interface TextualMessageEventContent extends MessageEventContent {
234
+ format?: string;
235
+ formatted_body?: string;
236
+ }
237
+
238
+ /**
239
+ * The content definition for m.room.message events
240
+ * @category Matrix event contents
241
+ * @see MessageEvent
242
+ */
243
+ export interface MessageEventContent {
244
+ body: string;
245
+ msgtype: MessageType;
246
+ external_url?: string;
247
+ }
248
+
249
+ /**
250
+ * Represents an m.room.message room event
251
+ * @category Matrix events
252
+ */
253
+ export class MessageEvent<T extends MessageEventContent> extends RoomEvent<T> {
254
+ constructor(event: any) {
255
+ super(event);
256
+ }
257
+
258
+ /**
259
+ * Whether or not the event is redacted (or looked redacted).
260
+ */
261
+ public get isRedacted(): boolean {
262
+ // Presume the event redacted if we're missing a body or message type
263
+ const noContent = !this.content.body && this.content.body !== "";
264
+ const noMsgtype = !this.content.msgtype && this.content.msgtype !== "";
265
+ return noContent || noMsgtype;
266
+ }
267
+
268
+ /**
269
+ * The message's type.
270
+ */
271
+ public get messageType(): MessageType {
272
+ const type = this.content.msgtype;
273
+ if (!type && type !== "") throw new EventRedactedError("missing msgtype");
274
+ return type;
275
+ }
276
+
277
+ /**
278
+ * The `body` of the message.
279
+ */
280
+ public get textBody(): string {
281
+ const body = this.content.body;
282
+ if (!body && body !== "") throw new EventRedactedError("missing body");
283
+ return body;
284
+ }
285
+
286
+ /**
287
+ * The `external_url` of the message, if it exists
288
+ */
289
+ public get externalUrl(): string | undefined {
290
+ return this.content.external_url || undefined;
291
+ }
292
+ }
@@ -0,0 +1,30 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The content definition for m.room.pinned_events events
5
+ * @category Matrix event contents
6
+ * @see PinnedEventsEvent
7
+ */
8
+ export interface PinnedEventsEventContent {
9
+ /**
10
+ * The event IDs that are pinned in the room.
11
+ */
12
+ pinned: string[];
13
+ }
14
+
15
+ /**
16
+ * Represents an m.room.pinned_events state event
17
+ * @category Matrix events
18
+ */
19
+ export class PinnedEventsEvent extends StateEvent<PinnedEventsEventContent> {
20
+ constructor(event: any) {
21
+ super(event);
22
+ }
23
+
24
+ /**
25
+ * The event IDs that are pinned in the room.
26
+ */
27
+ public get pinnedEventIds(): string[] {
28
+ return this.content.pinned || [];
29
+ }
30
+ }
@@ -0,0 +1,135 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The content definition for m.room.power_levels events
5
+ * @category Matrix event contents
6
+ * @see PowerLevelsEvent
7
+ */
8
+ export interface PowerLevelsEventContent {
9
+ /**
10
+ * The power level required to ban. Default 50.
11
+ */
12
+ ban?: number;
13
+
14
+ /**
15
+ * A map of event types to the power level required to send them.
16
+ */
17
+ events?: { [eventType: string]: number };
18
+
19
+ /**
20
+ * The power level required to send events in the room. Default 50.
21
+ */
22
+ events_default?: number;
23
+
24
+ /**
25
+ * The power level required to invite users to the room. Default 50.
26
+ */
27
+ invite?: number;
28
+
29
+ /**
30
+ * The power level required to kick users from the room. Default 50.
31
+ */
32
+ kick?: number;
33
+
34
+ /**
35
+ * The power level required to redact other people's events in the room. Default 50.
36
+ */
37
+ redact?: number;
38
+
39
+ /**
40
+ * The power level required to send state events in the room. Default 50.
41
+ */
42
+ state_default?: number;
43
+
44
+ /**
45
+ * A map of user IDs to power levels.
46
+ */
47
+ users?: { [userId: string]: number };
48
+
49
+ /**
50
+ * The power level of users not listed in `users`. Default 0.
51
+ */
52
+ users_default?: number;
53
+
54
+ /**
55
+ * Power levels required to send certain kinds of notifications.
56
+ */
57
+ notifications?: {
58
+ /**
59
+ * The power level required to send "@room" notifications. Default 50.
60
+ */
61
+ room?: number;
62
+ };
63
+ }
64
+
65
+ function defaultNum(val: number | undefined, def: number): number {
66
+ if (!val && val !== 0) return def;
67
+ return val;
68
+ }
69
+
70
+ /**
71
+ * Represents an m.room.power_levels state event
72
+ * @category Matrix events
73
+ */
74
+ export class PowerLevelsEvent extends StateEvent<PowerLevelsEventContent> {
75
+ constructor(event: any) {
76
+ super(event);
77
+ }
78
+
79
+ /**
80
+ * The power level required to ban users.
81
+ */
82
+ public get banLevel(): number {
83
+ return defaultNum(this.content.ban, 50);
84
+ }
85
+
86
+ /**
87
+ * The power level required to invite users.
88
+ */
89
+ public get inviteLevel(): number {
90
+ return defaultNum(this.content.invite, 50);
91
+ }
92
+
93
+ /**
94
+ * The power level required to kick users.
95
+ */
96
+ public get kickLevel(): number {
97
+ return defaultNum(this.content.kick, 50);
98
+ }
99
+
100
+ /**
101
+ * The power level required to redact messages sent by other users.
102
+ */
103
+ public get redactLevel(): number {
104
+ return defaultNum(this.content.redact, 50);
105
+ }
106
+
107
+ /**
108
+ * The power level required to send "@room" notifications.
109
+ */
110
+ public get notifyWholeRoomLevel(): number {
111
+ if (!this.content.notifications) return 50;
112
+ return defaultNum(this.content.notifications.room, 50);
113
+ }
114
+
115
+ /**
116
+ * The default power level for users.
117
+ */
118
+ public get defaultUserLevel(): number {
119
+ return defaultNum(this.content.users_default, 0);
120
+ }
121
+
122
+ /**
123
+ * The default power level required to send state events.
124
+ */
125
+ public get defaultStateEventLevel(): number {
126
+ return defaultNum(this.content.state_default, 50);
127
+ }
128
+
129
+ /**
130
+ * The default power level required to send room events.
131
+ */
132
+ public get defaultEventLevel(): number {
133
+ return defaultNum(this.content.events_default, 50);
134
+ }
135
+ }
@@ -0,0 +1,69 @@
1
+ import { MatrixEvent } from "./Event";
2
+
3
+ /**
4
+ * The allowed states of presence in Matrix.
5
+ *
6
+ * * `online`: The default state when the user is connected to an event stream.
7
+ * * `unavailable`: The user is not reachable at this time e.g. they are idle.
8
+ * * `offline`: The user is not connected to an event stream or is explicitly suppressing their profile information from being sent.
9
+ *
10
+ * @category Matrix event info
11
+ * @see PresenceEventContent
12
+ */
13
+ export type PresenceState = "online" | "offline" | "unavailable";
14
+
15
+ /**
16
+ * Event content for m.presence events
17
+ * @category Matrix event contents
18
+ * @see PresenceEvent
19
+ */
20
+ export interface PresenceEventContent {
21
+ /**
22
+ * The avatar URL for the user, if any.
23
+ */
24
+ avatar_url?: string;
25
+
26
+ /**
27
+ * The display name for the user, if any.
28
+ */
29
+ displayname?: string;
30
+
31
+ /**
32
+ * How long ago the user performed some action, in milliseconds.
33
+ */
34
+ last_active_ago?: number;
35
+
36
+ /**
37
+ * The user's presence state.
38
+ *
39
+ * @see {@link PresenceState} for a description of each presence key.
40
+ */
41
+ presence: PresenceState;
42
+
43
+ /**
44
+ * Whether or not the user is currently active.
45
+ */
46
+ currently_active?: boolean;
47
+
48
+ /**
49
+ * A status message associated with this presence.
50
+ */
51
+ status_msg?: string;
52
+ }
53
+
54
+ /**
55
+ * Wraps a m.presence ephemeral event in Matrix
56
+ * @category Matrix events
57
+ */
58
+ export class PresenceEvent extends MatrixEvent<PresenceEventContent> {
59
+ constructor(event: any) {
60
+ super(event);
61
+ }
62
+
63
+ /**
64
+ * The current presence state for the user.
65
+ */
66
+ public get presence(): PresenceState {
67
+ return this.content.presence;
68
+ }
69
+ }
@@ -0,0 +1,44 @@
1
+ import { RoomEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The content definition for m.room.redaction events
5
+ * @category Matrix event contents
6
+ * @see RedactionEvent
7
+ */
8
+ export interface RedactionEventContent {
9
+ /**
10
+ * The event ID or IDs this event redacts.
11
+ */
12
+ redacts?: string | string[]; // MSC2174 & MSC2244
13
+ }
14
+
15
+ /**
16
+ * Represents an m.room.redaction room event
17
+ * @category Matrix events
18
+ */
19
+ export class RedactionEvent extends RoomEvent<RedactionEventContent> {
20
+ constructor(event: any) {
21
+ super(event);
22
+ }
23
+
24
+ /**
25
+ * The event ID this event redacts.
26
+ * @deprecated It is possible for multiple events to be redacted depending on the room version.
27
+ */
28
+ public get redactsEventId(): string {
29
+ return this.redactsEventIds[0];
30
+ }
31
+
32
+ /**
33
+ * The event IDs this event redacts.
34
+ */
35
+ public get redactsEventIds(): string[] {
36
+ if (Array.isArray(this.content.redacts)) {
37
+ return this.content.redacts;
38
+ } else if (this.content.redacts) {
39
+ return [this.content.redacts];
40
+ } else {
41
+ return [this.event['redacts']];
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,36 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+ import { DimensionalFileInfo } from "./MessageEvent";
3
+
4
+ /**
5
+ * The content definition for m.room.avatar events
6
+ * @category Matrix event contents
7
+ * @see RoomAvatarEvent
8
+ */
9
+ export interface RoomAvatarEventContent {
10
+ /**
11
+ * The URL to the image for the avatar of the room.
12
+ */
13
+ url: string;
14
+
15
+ /**
16
+ * Optional information about the avatar.
17
+ */
18
+ info?: DimensionalFileInfo;
19
+ }
20
+
21
+ /**
22
+ * Represents an m.room.avatar state event
23
+ * @category Matrix events
24
+ */
25
+ export class RoomAvatarEvent extends StateEvent<RoomAvatarEventContent> {
26
+ constructor(event: any) {
27
+ super(event);
28
+ }
29
+
30
+ /**
31
+ * The URL for the avatar of the room.
32
+ */
33
+ public get avatarUrl(): string {
34
+ return this.content.url;
35
+ }
36
+ }
@@ -0,0 +1,83 @@
1
+ import { MatrixEvent } from "./Event";
2
+
3
+ /**
4
+ * The typical unsigned data found on an event.
5
+ * @category Matrix event info
6
+ * @see RoomEvent
7
+ */
8
+ export interface TypicalUnsigned {
9
+ /**
10
+ * The age of this event in seconds.
11
+ */
12
+ age?: number;
13
+
14
+ /**
15
+ * Other properties which may be included.
16
+ */
17
+ [prop: string]: any;
18
+ }
19
+
20
+ /**
21
+ * Empty room event content.
22
+ * @category Matrix event contents
23
+ */
24
+ export interface RoomEventContent {
25
+ // This is empty so people can avoid using RoomEvent<any>
26
+ }
27
+
28
+ /**
29
+ * A Matrix room event.
30
+ * @category Matrix events
31
+ */
32
+ export class RoomEvent<T extends (Object | unknown) = unknown> extends MatrixEvent<T> {
33
+ constructor(protected event: any) {
34
+ super(event);
35
+ }
36
+
37
+ /**
38
+ * The event ID of this event.
39
+ */
40
+ public get eventId(): string {
41
+ return this.event['event_id'];
42
+ }
43
+
44
+ /**
45
+ * The timestamp in milliseconds this event was sent.
46
+ */
47
+ public get timestamp(): number {
48
+ return this.event['origin_server_ts'];
49
+ }
50
+
51
+ /**
52
+ * The unsigned content for this event. May have no properties.
53
+ */
54
+ public get unsigned(): TypicalUnsigned {
55
+ return this.event['unsigned'] || {};
56
+ }
57
+ }
58
+
59
+ /**
60
+ * A room state event.
61
+ * @category Matrix events
62
+ */
63
+ export class StateEvent<T extends (Object | unknown) = unknown> extends RoomEvent<T> {
64
+ constructor(event: any) {
65
+ super(event);
66
+ }
67
+
68
+ /**
69
+ * The state key for this event. May be an empty string.
70
+ */
71
+ public get stateKey(): string {
72
+ return this.event['state_key'];
73
+ }
74
+
75
+ /**
76
+ * The previous content for this state event. Will be an empty
77
+ * object if there is no previous content.
78
+ */
79
+ public get previousContent(): T {
80
+ return this.unsigned['prev_content'] || this.event['prev_content'] || {}; // v2, v1, fallback
81
+ }
82
+ }
83
+
@@ -0,0 +1,27 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The content definition for m.room.name events
5
+ * @category Matrix event contents
6
+ * @see RoomNameEvent
7
+ */
8
+ export interface RoomNameEventContent {
9
+ name: string;
10
+ }
11
+
12
+ /**
13
+ * Represents an m.room.name state event
14
+ * @category Matrix events
15
+ */
16
+ export class RoomNameEvent extends StateEvent<RoomNameEventContent> {
17
+ constructor(event: any) {
18
+ super(event);
19
+ }
20
+
21
+ /**
22
+ * The name of the room.
23
+ */
24
+ public get name(): string {
25
+ return this.content.name;
26
+ }
27
+ }