@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,37 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The content definition for m.room.aliases events
5
+ * @category Matrix event contents
6
+ * @see AliasesEvent
7
+ */
8
+ export interface AliasesEventContent {
9
+ /**
10
+ * The aliases this domain has published to the room.
11
+ */
12
+ aliases: string[];
13
+ }
14
+
15
+ /**
16
+ * Represents an m.room.aliases state event
17
+ * @category Matrix events
18
+ */
19
+ export class AliasesEvent extends StateEvent<AliasesEventContent> {
20
+ constructor(event: any) {
21
+ super(event);
22
+ }
23
+
24
+ /**
25
+ * The domain the aliases belong to.
26
+ */
27
+ public get forDomain(): string {
28
+ return this.stateKey;
29
+ }
30
+
31
+ /**
32
+ * The aliases the domain has published to the room.
33
+ */
34
+ public get aliases(): string[] {
35
+ return this.content.aliases || [];
36
+ }
37
+ }
@@ -0,0 +1,30 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The content definition for m.room.canonical_alias events
5
+ * @category Matrix event contents
6
+ * @see CanonicalAliasEvent
7
+ */
8
+ export interface CanonicalAliasEventContent {
9
+ /**
10
+ * The canonical alias for the room.
11
+ */
12
+ alias: string;
13
+ }
14
+
15
+ /**
16
+ * Represents an m.room.canonical_alias state event
17
+ * @category Matrix events
18
+ */
19
+ export class CanonicalAliasEvent extends StateEvent<CanonicalAliasEventContent> {
20
+ constructor(event: any) {
21
+ super(event);
22
+ }
23
+
24
+ /**
25
+ * The alias the room is considering canonical
26
+ */
27
+ public get aliases(): string {
28
+ return this.content.alias;
29
+ }
30
+ }
@@ -0,0 +1,82 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * Information about the previous room.
5
+ * @category Matrix event info
6
+ * @see CreateEventContent
7
+ */
8
+ export interface PreviousRoomInfo {
9
+ /**
10
+ * The old room ID.
11
+ */
12
+ room_id: string;
13
+
14
+ /**
15
+ * The last known event ID in the old room.
16
+ * Optional only for room versions >=12.
17
+ */
18
+ event_id?: string;
19
+ }
20
+
21
+ /**
22
+ * The content definition for m.room.create events
23
+ * @category Matrix event contents
24
+ * @see CreateEvent
25
+ */
26
+ export interface CreateEventContent extends Record<string, unknown> {
27
+ /**
28
+ * The user ID who created the room.
29
+ */
30
+ creator: string;
31
+
32
+ /**
33
+ * Whether or not this room is federated. Default true.
34
+ */
35
+ "m.federate"?: boolean;
36
+
37
+ /**
38
+ * The version of the room. Default "1".
39
+ */
40
+ room_version?: string;
41
+
42
+ /**
43
+ * Information about the old room.
44
+ */
45
+ predecessor?: PreviousRoomInfo;
46
+
47
+ /**
48
+ * The type of the room, if applicable. For example, `m.space`.
49
+ */
50
+ type?: string;
51
+ }
52
+
53
+ /**
54
+ * Represents an m.room.create state event
55
+ * @category Matrix events
56
+ */
57
+ export class CreateEvent extends StateEvent<CreateEventContent> {
58
+ constructor(event: any) {
59
+ super(event);
60
+ }
61
+
62
+ /**
63
+ * The user ID who created the room.
64
+ */
65
+ public get creator(): string {
66
+ return this.content.creator || this.sender;
67
+ }
68
+
69
+ /**
70
+ * The version of the room. Defaults to "1".
71
+ */
72
+ public get version(): string {
73
+ return this.content.room_version || "1";
74
+ }
75
+
76
+ /**
77
+ * Whether or not the room is federated. Default true (federated).
78
+ */
79
+ public get federated(): boolean {
80
+ return this.content['m.federate'] !== false;
81
+ }
82
+ }
@@ -0,0 +1,58 @@
1
+ import { RoomEvent } from "./RoomEvent";
2
+ import { EncryptionAlgorithm, IMegolmEncrypted } from "../Crypto";
3
+
4
+ /**
5
+ * The content definition for m.room.encrypted events
6
+ * @category Matrix event contents
7
+ * @see EncryptedRoomEvent
8
+ */
9
+ export interface EncryptedRoomEventContent {
10
+ algorithm: EncryptionAlgorithm;
11
+
12
+ /**
13
+ * For m.megolm.v1.aes-sha2 messages. The sender's Curve25519 key.
14
+ */
15
+ sender_key?: string;
16
+
17
+ /**
18
+ * For m.megolm.v1.aes-sha2 messages. The session ID established by the sender.
19
+ */
20
+ session_id?: string;
21
+
22
+ /**
23
+ * For m.megolm.v1.aes-sha2 messages. The encrypted payload.
24
+ */
25
+ ciphertext?: string;
26
+
27
+ /**
28
+ * For m.megolm.v1.aes-sha2 messages. The sender's device ID.
29
+ */
30
+ device_id?: string;
31
+
32
+ // Other algorithms not supported at the moment
33
+ }
34
+
35
+ /**
36
+ * Represents an m.room.encrypted room event
37
+ * @category Matrix events
38
+ */
39
+ export class EncryptedRoomEvent extends RoomEvent<EncryptedRoomEventContent> {
40
+ constructor(event: any) {
41
+ super(event);
42
+ }
43
+
44
+ /**
45
+ * The encryption algorithm used on the event. Should match the m.room.encryption
46
+ * state config.
47
+ */
48
+ public get algorithm(): EncryptionAlgorithm {
49
+ return this.content.algorithm;
50
+ }
51
+
52
+ /**
53
+ * The Megolm encrypted payload information.
54
+ */
55
+ public get megolmProperties(): IMegolmEncrypted {
56
+ return this.content as IMegolmEncrypted;
57
+ }
58
+ }
@@ -0,0 +1,63 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The kinds of room encryption algorithms allowed by the spec.
5
+ * @category Models
6
+ * @see EncryptionEvent
7
+ */
8
+ export enum RoomEncryptionAlgorithm {
9
+ MegolmV1AesSha2 = "m.megolm.v1.aes-sha2",
10
+ }
11
+
12
+ /**
13
+ * The content definition for m.room.encryption events
14
+ * @category Matrix event contents
15
+ * @see EncryptionEvent
16
+ */
17
+ export interface EncryptionEventContent {
18
+ /**
19
+ * The encryption algorithm for the room.
20
+ */
21
+ algorithm: string | RoomEncryptionAlgorithm;
22
+
23
+ /**
24
+ * How long a session should be used before changing it.
25
+ */
26
+ rotation_period_ms?: number;
27
+
28
+ /**
29
+ * How many messages should be sent before changing the session.
30
+ */
31
+ rotation_period_msgs?: number;
32
+ }
33
+
34
+ /**
35
+ * Represents an m.room.encryption state event
36
+ * @category Matrix events
37
+ */
38
+ export class EncryptionEvent extends StateEvent<EncryptionEventContent> {
39
+ constructor(event: any) {
40
+ super(event);
41
+ }
42
+
43
+ /**
44
+ * The encryption algorithm for the room.
45
+ */
46
+ public get algorithm(): string | RoomEncryptionAlgorithm {
47
+ return this.content.algorithm;
48
+ }
49
+
50
+ /**
51
+ * How long a session should be used before changing it. Defaults to a week.
52
+ */
53
+ public get rotationPeriodMs(): number {
54
+ return this.content.rotation_period_ms ?? 604800000; // 1 week
55
+ }
56
+
57
+ /**
58
+ * How many messages should be sent before a session changes. Defaults to 100.
59
+ */
60
+ public get rotationPeriodMessages(): number {
61
+ return this.content.rotation_period_msgs ?? 100;
62
+ }
63
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * A Matrix event.
3
+ * @category Matrix events
4
+ */
5
+ export class MatrixEvent<T extends (Object | unknown) = unknown> {
6
+ constructor(protected event: any) {
7
+ }
8
+
9
+ /**
10
+ * The user ID who sent this event.
11
+ */
12
+ public get sender(): string {
13
+ return this.event['sender'];
14
+ }
15
+
16
+ /**
17
+ * The type of this event.
18
+ */
19
+ public get type(): string {
20
+ return this.event['type'];
21
+ }
22
+
23
+ /**
24
+ * The content for this event. May have no properties.
25
+ */
26
+ public get content(): T {
27
+ return this.event['content'] || {};
28
+ }
29
+
30
+ /**
31
+ * Gets the raw event that this MatrixEvent is using.
32
+ * Note that there's no guarantees on formats here - it is the exact
33
+ * same input to the constructor.
34
+ */
35
+ public get raw(): any {
36
+ return this.event;
37
+ }
38
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Represents the different kinds of events a bot/appservice might see.
3
+ * @category Matrix events
4
+ */
5
+ export enum EventKind {
6
+ /**
7
+ * A room event. This could be a message event or a state event, and is associated with
8
+ * a room.
9
+ */
10
+ RoomEvent = "room",
11
+
12
+ /**
13
+ * An ephemeral event, such as typing notifications or presence.
14
+ */
15
+ EphemeralEvent = "ephemeral",
16
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Thrown when an event is invalid.
3
+ * @category Matrix events
4
+ */
5
+ export class InvalidEventError extends Error {
6
+ constructor(message: string = null) {
7
+ super(message);
8
+ }
9
+ }
10
+
11
+ /**
12
+ * Thrown when an event is redacted.
13
+ * @category Matrix events
14
+ */
15
+ export class EventRedactedError extends InvalidEventError {
16
+ constructor(message: string = null) {
17
+ super(message);
18
+ }
19
+ }
@@ -0,0 +1,37 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+
3
+ /**
4
+ * The types of join rules that are valid in Matrix.
5
+ * @category Matrix event info
6
+ * @see JoinRulesEventContent
7
+ */
8
+ export type JoinRule = "public" | "knock" | "invite" | "private";
9
+
10
+ /**
11
+ * The content definition for m.room.join_rules events
12
+ * @category Matrix event contents
13
+ * @see JoinRulesEvent
14
+ */
15
+ export interface JoinRulesEventContent {
16
+ /**
17
+ * The join rule for the room.
18
+ */
19
+ join_rule: JoinRule;
20
+ }
21
+
22
+ /**
23
+ * Represents an m.room.join_rules state event
24
+ * @category Matrix events
25
+ */
26
+ export class JoinRulesEvent extends StateEvent<JoinRulesEventContent> {
27
+ constructor(event: any) {
28
+ super(event);
29
+ }
30
+
31
+ /**
32
+ * The join rule for the room.
33
+ */
34
+ public get rule(): JoinRule {
35
+ return this.content.join_rule;
36
+ }
37
+ }
@@ -0,0 +1,77 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+ import { InvalidEventError } from "./InvalidEventError";
3
+
4
+ /**
5
+ * The types of membership that are valid in Matrix.
6
+ * @category Matrix event info
7
+ * @see MembershipEventContent
8
+ */
9
+ export type Membership = "join" | "leave" | "ban" | "invite";
10
+
11
+ /**
12
+ * The effective membership states a user can be in.
13
+ * @category Matrix event info
14
+ * @see MembershipEventContent
15
+ */
16
+ export type EffectiveMembership = "join" | "leave" | "invite";
17
+
18
+ /**
19
+ * The content definition for m.room.member events
20
+ * @category Matrix event contents
21
+ * @see MembershipEvent
22
+ */
23
+ export interface MembershipEventContent {
24
+ avatar_url?: string;
25
+ displayname?: string;
26
+ membership: Membership;
27
+ is_direct?: boolean;
28
+ unsigned?: any;
29
+ third_party_invite?: {
30
+ display_name: string;
31
+ signed: any;
32
+ };
33
+ }
34
+
35
+ /**
36
+ * Represents an m.room.member state event
37
+ * @category Matrix events
38
+ */
39
+ export class MembershipEvent extends StateEvent<MembershipEventContent> {
40
+ constructor(event: any) {
41
+ super(event);
42
+ }
43
+
44
+ /**
45
+ * True if the membership event targets the sender. False otherwise.
46
+ *
47
+ * This will typically by false for kicks and bans.
48
+ */
49
+ public get ownMembership(): boolean {
50
+ return this.membershipFor === this.sender;
51
+ }
52
+
53
+ /**
54
+ * The user ID the membership affects.
55
+ */
56
+ public get membershipFor(): string {
57
+ return this.stateKey;
58
+ }
59
+
60
+ /**
61
+ * The user's membership.
62
+ */
63
+ public get membership(): Membership {
64
+ const membership = this.content.membership;
65
+ if (!membership) throw new InvalidEventError("no membership field in content");
66
+ return membership;
67
+ }
68
+
69
+ /**
70
+ * The user's effective membership.
71
+ */
72
+ public get effectiveMembership(): EffectiveMembership {
73
+ if (this.membership === "join") return "join";
74
+ if (this.membership === "invite") return "invite";
75
+ return "leave";
76
+ }
77
+ }