@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,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoomTopicEvent = void 0;
4
+ const RoomEvent_1 = require("./RoomEvent");
5
+ /**
6
+ * Represents an m.room.topic state event
7
+ * @category Matrix events
8
+ */
9
+ class RoomTopicEvent extends RoomEvent_1.StateEvent {
10
+ constructor(event) {
11
+ super(event);
12
+ }
13
+ /**
14
+ * The topic of the room.
15
+ */
16
+ get topic() {
17
+ return this.content.topic;
18
+ }
19
+ }
20
+ exports.RoomTopicEvent = RoomTopicEvent;
21
+ //# sourceMappingURL=RoomTopicEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoomTopicEvent.js","sourceRoot":"","sources":["../../../src/models/events/RoomTopicEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAWzC;;;GAGG;AACH,MAAa,cAAe,SAAQ,sBAAiC;IACjE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;CACJ;AAXD,wCAWC"}
@@ -0,0 +1,53 @@
1
+ import { StateEvent } from "./RoomEvent";
2
+ /**
3
+ * The content definition for m.space.child events
4
+ * @category Matrix event contents
5
+ * @see SpaceChildEvent
6
+ */
7
+ export interface SpaceChildEventContent {
8
+ /**
9
+ * The servers the client should provide to the server when trying to join the room.
10
+ * When not provided or empty, the child is considered not part of the space.
11
+ */
12
+ via: string[];
13
+ /**
14
+ * A short string to differentiate the rendering order of entities.
15
+ * @see validateSpaceOrderString
16
+ */
17
+ order?: string;
18
+ /**
19
+ * Whether or not the entity is intended to be a suggested entity.
20
+ */
21
+ suggested?: boolean;
22
+ }
23
+ /**
24
+ * Represents an m.space.child state event
25
+ * @category Matrix events
26
+ */
27
+ export declare class SpaceChildEvent extends StateEvent<SpaceChildEventContent> {
28
+ constructor(event: any);
29
+ /**
30
+ * The room ID of the space or room this child represents.
31
+ */
32
+ get entityRoomId(): string;
33
+ /**
34
+ * Whether or not this child is "active" or valid. Inactive children are
35
+ * not considered part of a space.
36
+ */
37
+ get isActiveChild(): boolean;
38
+ /**
39
+ * The servers the client should provide to the homeserver when trying to
40
+ * join the entity (room). May be empty or falsey to denote the child is
41
+ * inactive.
42
+ */
43
+ get viaServers(): string[];
44
+ /**
45
+ * An optional short string to differentiate the rendering order of entities.
46
+ * @see validateSpaceOrderString
47
+ */
48
+ get order(): string;
49
+ /**
50
+ * Whether or not the child is a suggested entity for users to join.
51
+ */
52
+ get suggested(): boolean;
53
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpaceChildEvent = void 0;
4
+ const RoomEvent_1 = require("./RoomEvent");
5
+ /**
6
+ * Represents an m.space.child state event
7
+ * @category Matrix events
8
+ */
9
+ class SpaceChildEvent extends RoomEvent_1.StateEvent {
10
+ constructor(event) {
11
+ super(event);
12
+ }
13
+ /**
14
+ * The room ID of the space or room this child represents.
15
+ */
16
+ get entityRoomId() {
17
+ return this.stateKey;
18
+ }
19
+ /**
20
+ * Whether or not this child is "active" or valid. Inactive children are
21
+ * not considered part of a space.
22
+ */
23
+ get isActiveChild() {
24
+ return !!this.viaServers?.length;
25
+ }
26
+ /**
27
+ * The servers the client should provide to the homeserver when trying to
28
+ * join the entity (room). May be empty or falsey to denote the child is
29
+ * inactive.
30
+ */
31
+ get viaServers() {
32
+ return this.content.via;
33
+ }
34
+ /**
35
+ * An optional short string to differentiate the rendering order of entities.
36
+ * @see validateSpaceOrderString
37
+ */
38
+ get order() {
39
+ return this.content.order;
40
+ }
41
+ /**
42
+ * Whether or not the child is a suggested entity for users to join.
43
+ */
44
+ get suggested() {
45
+ return this.content.suggested ?? false;
46
+ }
47
+ }
48
+ exports.SpaceChildEvent = SpaceChildEvent;
49
+ //# sourceMappingURL=SpaceChildEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpaceChildEvent.js","sourceRoot":"","sources":["../../../src/models/events/SpaceChildEvent.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AA0BzC;;;GAGG;AACH,MAAa,eAAgB,SAAQ,sBAAkC;IACnE,YAAY,KAAU;QAClB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAW,aAAa;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;CACJ;AA3CD,0CA2CC"}
@@ -0,0 +1,8 @@
1
+ import { RoomEvent } from "./RoomEvent";
2
+ /**
3
+ * Wraps a room event into a more suitable container.
4
+ * @param {any} event The event object to wrap.
5
+ * @returns {RoomEvent<any>} An instance of the most suitable container for the event.
6
+ * @category Matrix events
7
+ */
8
+ export declare function wrapRoomEvent(event: any): RoomEvent<any>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapRoomEvent = wrapRoomEvent;
4
+ const MembershipEvent_1 = require("./MembershipEvent");
5
+ const RoomEvent_1 = require("./RoomEvent");
6
+ const MessageEvent_1 = require("./MessageEvent");
7
+ /**
8
+ * Wraps a room event into a more suitable container.
9
+ * @param {any} event The event object to wrap.
10
+ * @returns {RoomEvent<any>} An instance of the most suitable container for the event.
11
+ * @category Matrix events
12
+ */
13
+ function wrapRoomEvent(event) {
14
+ if (!event)
15
+ return null;
16
+ if (typeof (event['state_key']) === 'string') {
17
+ if (event['type'] === 'm.room.member') {
18
+ return new MembershipEvent_1.MembershipEvent(event);
19
+ }
20
+ else {
21
+ return new RoomEvent_1.StateEvent(event);
22
+ }
23
+ }
24
+ else if (event['type'] === 'm.room.message') {
25
+ const content = event['content'];
26
+ const msgtype = content ? content['msgtype'] : null;
27
+ if (msgtype === "m.text" || msgtype === "m.notice" || msgtype === "m.emote") {
28
+ return new MessageEvent_1.MessageEvent(event);
29
+ }
30
+ else if (msgtype === "m.audio") {
31
+ return new MessageEvent_1.MessageEvent(event);
32
+ }
33
+ else if (msgtype === "m.video") {
34
+ return new MessageEvent_1.MessageEvent(event);
35
+ }
36
+ else if (msgtype === "m.image") {
37
+ return new MessageEvent_1.MessageEvent(event);
38
+ }
39
+ else if (msgtype === "m.location") {
40
+ return new MessageEvent_1.MessageEvent(event);
41
+ }
42
+ else {
43
+ return new MessageEvent_1.MessageEvent(event);
44
+ }
45
+ }
46
+ else {
47
+ return new RoomEvent_1.RoomEvent(event);
48
+ }
49
+ }
50
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/models/events/converter.ts"],"names":[],"mappings":";;AAkBA,sCA4BC;AA9CD,uDAAoD;AACpD,2CAAoD;AACpD,iDAQwB;AAExB;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAU;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,eAAe,EAAE,CAAC;YACpC,OAAO,IAAI,iCAAe,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,sBAAU,CAAM,KAAK,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,gBAAgB,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1E,OAAO,IAAI,2BAAY,CAA6B,KAAK,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,2BAAY,CAA2B,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,2BAAY,CAA2B,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,IAAI,2BAAY,CAA2B,KAAK,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;YAClC,OAAO,IAAI,2BAAY,CAA8B,KAAK,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,2BAAY,CAAsB,KAAK,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,qBAAS,CAAM,KAAK,CAAC,CAAC;IACrC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * This interface implements the schema defined in [MSC2380](https://github.com/matrix-org/matrix-doc/pull/2380).
3
+ * @category Unstable APIs
4
+ */
5
+ export interface MSC2380MediaInfo {
6
+ content_type: string;
7
+ width?: number;
8
+ height?: number;
9
+ size: number;
10
+ thumbnails?: {
11
+ width: number;
12
+ height: number;
13
+ ready: boolean;
14
+ }[];
15
+ duration?: number;
16
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=MediaInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaInfo.js","sourceRoot":"","sources":["../../../src/models/unstable/MediaInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { MatrixClient } from "../MatrixClient";
2
+ import { EventKind } from "..";
3
+ /**
4
+ * Represents a preprocessor.
5
+ * @category Preprocessors
6
+ */
7
+ export interface IPreprocessor {
8
+ /**
9
+ * Gets the types of events this preprocessor supports.
10
+ */
11
+ getSupportedEventTypes(): string[];
12
+ /**
13
+ * Processes an event, modifying it in-place if needed.
14
+ * @param {any} event The event that should be processed.
15
+ * @param {MatrixClient} client The Matrix client that is providing the event.
16
+ * @param {EventKind|null|undefined} kind Optional kind identifier for an event. When not
17
+ * supplied, the event is assumed to be a RoomEvent.
18
+ * @returns {Promise<any>} Resolved when the event is has been modified. The resolved
19
+ * value is ignored.
20
+ */
21
+ processEvent(event: any, client: MatrixClient, kind?: EventKind): Promise<any>;
22
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IPreprocessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPreprocessor.js","sourceRoot":"","sources":["../../src/preprocessors/IPreprocessor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import { MatrixClient } from "../MatrixClient";
2
+ import { IPreprocessor } from "./IPreprocessor";
3
+ import { EventKind } from "..";
4
+ /**
5
+ * Metadata for a rich reply. Usually stored under the "mx_richreply"
6
+ * field of an event (at the top level).
7
+ * @category Preprocessors
8
+ * @see RichRepliesPreprocessor
9
+ */
10
+ export interface IRichReplyMetadata {
11
+ /**
12
+ * If true, the preprocessor found some inconsistencies in the reply
13
+ * information that does not match the specification. For example,
14
+ * this may indicate that a reply was sent without an HTML component.
15
+ */
16
+ wasLenient: boolean;
17
+ /**
18
+ * The event ID the event references. May be an empty string if
19
+ * wasLenient is true.
20
+ */
21
+ parentEventId: string;
22
+ /**
23
+ * The fallback plain text the preprocessor found. May be an empty
24
+ * string if wasLenient is true. The prefix characters to indicate
25
+ * this is a fallback will have already been removed.
26
+ */
27
+ fallbackPlainBody: string;
28
+ /**
29
+ * The fallback HTML the processor found. May be an empty string if
30
+ * wasLenient is true. The fallback structure will have already been
31
+ * removed, leaving just the original assumed HTML.
32
+ */
33
+ fallbackHtmlBody: string;
34
+ /**
35
+ * The user ID that sent the parent event, as determined by the fallback
36
+ * text. This should not be relied upon for anything serious, and instead
37
+ * the preprocessor should be configured to fetch the real event to
38
+ * populate the realEvent property. May be an empty string if wasLenient
39
+ * is true.
40
+ */
41
+ fallbackSender: string;
42
+ /**
43
+ * If the preprocessor is configured to fetch event content, this field
44
+ * will contain the event as reported by the homeserver. May be null if
45
+ * wasLenient is true.
46
+ */
47
+ realEvent: any;
48
+ }
49
+ /**
50
+ * Processes rich replies found in events. This automatically strips
51
+ * the fallback representation from events, providing the information
52
+ * as a top level "mx_richreply" key. The "mx_richreply" property may
53
+ * be cast to the type IRichReplyMetadata.
54
+ * @category Preprocessors
55
+ */
56
+ export declare class RichRepliesPreprocessor implements IPreprocessor {
57
+ private fetchRealEventContents;
58
+ /**
59
+ * Creates a new rich replies preprocessor.
60
+ * @param fetchRealEventContents If enabled, this preprocessor will
61
+ * attempt to get the real event contents and append them to the event
62
+ * information.
63
+ */
64
+ constructor(fetchRealEventContents?: boolean);
65
+ getSupportedEventTypes(): string[];
66
+ processEvent(event: any, client: MatrixClient, kind?: EventKind): Promise<any>;
67
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RichRepliesPreprocessor = void 0;
4
+ const __1 = require("..");
5
+ /**
6
+ * Processes rich replies found in events. This automatically strips
7
+ * the fallback representation from events, providing the information
8
+ * as a top level "mx_richreply" key. The "mx_richreply" property may
9
+ * be cast to the type IRichReplyMetadata.
10
+ * @category Preprocessors
11
+ */
12
+ class RichRepliesPreprocessor {
13
+ /**
14
+ * Creates a new rich replies preprocessor.
15
+ * @param fetchRealEventContents If enabled, this preprocessor will
16
+ * attempt to get the real event contents and append them to the event
17
+ * information.
18
+ */
19
+ constructor(fetchRealEventContents = false) {
20
+ this.fetchRealEventContents = fetchRealEventContents;
21
+ }
22
+ getSupportedEventTypes() {
23
+ return ["m.room.message"];
24
+ }
25
+ async processEvent(event, client, kind) {
26
+ if (kind && kind !== __1.EventKind.RoomEvent)
27
+ return;
28
+ if (!event["content"])
29
+ return;
30
+ if (!event["content"]["m.relates_to"])
31
+ return;
32
+ if (!event["content"]["m.relates_to"]["m.in_reply_to"])
33
+ return;
34
+ const parentEventId = event["content"]["m.relates_to"]["m.in_reply_to"]["event_id"];
35
+ if (!parentEventId)
36
+ return;
37
+ let fallbackHtml = "";
38
+ let fallbackText = "";
39
+ let fallbackSender = "";
40
+ let realHtml = event["content"]["formatted_body"];
41
+ let realText = event["content"]["body"];
42
+ let lenient = false;
43
+ if (event["content"]["format"] !== "org.matrix.custom.html" || !event["content"]["formatted_body"]) {
44
+ lenient = true; // Not safe to parse: probably not HTML
45
+ }
46
+ else {
47
+ const formattedBody = event["content"]["formatted_body"];
48
+ if (!formattedBody.startsWith("<mx-reply>") || formattedBody.indexOf("</mx-reply>") === -1) {
49
+ lenient = true; // Doesn't look like a reply
50
+ }
51
+ else {
52
+ const parts = formattedBody.split("</mx-reply>");
53
+ const fbHtml = parts[0];
54
+ realHtml = parts[1];
55
+ const results = fbHtml.match(/<br[ ]*[/]{0,2}>(.*)<\/blockquote>\s*$/i);
56
+ if (!results) {
57
+ lenient = true;
58
+ }
59
+ else {
60
+ fallbackHtml = results[1];
61
+ }
62
+ }
63
+ }
64
+ let processedFallback = false;
65
+ const body = event["content"]["body"] || "";
66
+ for (const line of body.split("\n")) {
67
+ if (line.startsWith("> ") && !processedFallback) {
68
+ fallbackText += line.substring(2) + "\n";
69
+ }
70
+ else if (!processedFallback) {
71
+ realText = "";
72
+ processedFallback = true;
73
+ }
74
+ else {
75
+ realText += line + "\n";
76
+ }
77
+ }
78
+ const firstFallbackLine = fallbackText.split("\n")[0];
79
+ const matches = firstFallbackLine.match(/<(@.*:.*)>/);
80
+ if (!matches) {
81
+ lenient = true;
82
+ }
83
+ else {
84
+ fallbackSender = matches[1];
85
+ }
86
+ const metadata = {
87
+ wasLenient: lenient,
88
+ fallbackHtmlBody: fallbackHtml ? fallbackHtml.trim() : "",
89
+ fallbackPlainBody: fallbackText ? fallbackText.trim() : "",
90
+ fallbackSender: fallbackSender ? fallbackSender.trim() : "",
91
+ parentEventId: parentEventId ? parentEventId.trim() : "",
92
+ realEvent: null,
93
+ };
94
+ if (this.fetchRealEventContents) {
95
+ try {
96
+ metadata.realEvent = await client.getEvent(event["room_id"], parentEventId);
97
+ }
98
+ catch (e) {
99
+ __1.LogService.error("RichRepliesPreprocessor", "Failed to fetch real event:");
100
+ __1.LogService.error("RichRepliesPreprocessor", (0, __1.extractRequestError)(e));
101
+ metadata.wasLenient = true; // failed to fetch event
102
+ }
103
+ }
104
+ event["mx_richreply"] = metadata;
105
+ event["content"]["body"] = realText.trim();
106
+ if (realHtml)
107
+ event["content"]["formatted_body"] = realHtml.trim();
108
+ return event;
109
+ }
110
+ }
111
+ exports.RichRepliesPreprocessor = RichRepliesPreprocessor;
112
+ //# sourceMappingURL=RichRepliesPreprocessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichRepliesPreprocessor.js","sourceRoot":"","sources":["../../src/preprocessors/RichRepliesPreprocessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as origRequestFn from "request";
2
+ /**
3
+ * Sets the function to use for performing HTTP requests. Must be compatible with `request`.
4
+ * @param fn The new request function.
5
+ * @category Unit testing
6
+ */
7
+ export declare function setRequestFn(fn: any): void;
8
+ /**
9
+ * Gets the `request`-compatible function for performing HTTP requests.
10
+ * @returns The request function.
11
+ * @category Unit testing
12
+ */
13
+ export declare function getRequestFn(): typeof origRequestFn;
package/lib/request.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setRequestFn = setRequestFn;
4
+ exports.getRequestFn = getRequestFn;
5
+ const origRequestFn = require("request");
6
+ let requestFn = origRequestFn;
7
+ /**
8
+ * Sets the function to use for performing HTTP requests. Must be compatible with `request`.
9
+ * @param fn The new request function.
10
+ * @category Unit testing
11
+ */
12
+ function setRequestFn(fn) {
13
+ requestFn = fn;
14
+ }
15
+ /**
16
+ * Gets the `request`-compatible function for performing HTTP requests.
17
+ * @returns The request function.
18
+ * @category Unit testing
19
+ */
20
+ function getRequestFn() {
21
+ return requestFn;
22
+ }
23
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":";;AASA,oCAEC;AAOD,oCAEC;AApBD,yCAAyC;AAEzC,IAAI,SAAS,GAAG,aAAa,CAAC;AAE9B;;;;GAIG;AACH,SAAgB,YAAY,CAAC,EAAE;IAC3B,SAAS,GAAG,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY;IACxB,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Validate the 'order' parameter of a child space entry. It must be a
3
+ * string between the range of \x20 - \x7F and contain no more than 50
4
+ * characters.
5
+ * @param {string} order The 'order' parameter of a m.space.child
6
+ * @throws {Error} If the string is not valid
7
+ * @returns {boolean} True if the string is valid
8
+ * @category Utilities
9
+ */
10
+ export declare function validateSpaceOrderString(order: string): true;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSpaceOrderString = validateSpaceOrderString;
4
+ /**
5
+ * Validate the 'order' parameter of a child space entry. It must be a
6
+ * string between the range of \x20 - \x7F and contain no more than 50
7
+ * characters.
8
+ * @param {string} order The 'order' parameter of a m.space.child
9
+ * @throws {Error} If the string is not valid
10
+ * @returns {boolean} True if the string is valid
11
+ * @category Utilities
12
+ */
13
+ function validateSpaceOrderString(order) {
14
+ if (typeof (order) !== 'string') {
15
+ // Just in case, even though TS should catch this.
16
+ throw Error('order is not a string');
17
+ }
18
+ if (order.length === 0) {
19
+ throw Error('order cannot be empty');
20
+ }
21
+ if (order.length > 50) {
22
+ throw Error('order is more than 50 characters and is disallowed');
23
+ }
24
+ if (!order.match(/^[\x20-\x7E]+$/)) {
25
+ // String must be between this range
26
+ throw Error('order contained characters outside the range of the spec.');
27
+ }
28
+ return true;
29
+ }
30
+ //# sourceMappingURL=simple-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-validation.js","sourceRoot":"","sources":["../src/simple-validation.ts"],"names":[],"mappings":";;AASA,4DAoBC;AA7BD;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CAAC,KAAa;IAClD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC9B,kDAAkD;QAClD,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,oCAAoC;QACpC,MAAM,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { ICryptoStorageProvider } from "./ICryptoStorageProvider";
2
+ import { IStorageProvider } from "./IStorageProvider";
3
+ /**
4
+ * A storage provider definition for appservices to use.
5
+ * @category Storage providers
6
+ */
7
+ export interface IAppserviceStorageProvider {
8
+ /**
9
+ * Tracks a user ID as "registered".
10
+ * @returns {Promise<any>|void} Resolves when complete.
11
+ */
12
+ addRegisteredUser(userId: string): Promise<any> | void;
13
+ /**
14
+ * Determines if a user ID is registered or not.
15
+ * @returns {boolean|Promise<boolean>} True if registered. This may be a promise.
16
+ */
17
+ isUserRegistered(userId: string): boolean | Promise<boolean>;
18
+ /**
19
+ * Flags a transaction as completed.
20
+ * @param {string} transactionId The transaction ID.
21
+ * @returns {Promise<any>|void} Resolves when complete.
22
+ */
23
+ setTransactionCompleted(transactionId: string): Promise<any> | void;
24
+ /**
25
+ * Determines if a transaction has been flagged as completed.
26
+ * @param {string} transactionId The transaction ID to check.
27
+ * @returns {boolean} True if the transaction has been completed. This may be a promise.
28
+ */
29
+ isTransactionCompleted(transactionId: string): boolean | Promise<boolean>;
30
+ /**
31
+ * Gets a storage provider to use for the given user ID.
32
+ * @param {string} userId The user ID.
33
+ * @returns {ICryptoStorageProvider} The storage provider.
34
+ */
35
+ storageForUser?(userId: string): IStorageProvider;
36
+ }
37
+ /**
38
+ * A storage provider capable of only providing crypto-related storage to appservices.
39
+ * @category Storage providers
40
+ */
41
+ export interface IAppserviceCryptoStorageProvider {
42
+ /**
43
+ * Gets a storage provider to use for the given user ID.
44
+ * @param {string} userId The user ID.
45
+ * @returns {ICryptoStorageProvider} The storage provider.
46
+ */
47
+ storageForUser(userId: string): ICryptoStorageProvider;
48
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAppserviceStorageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAppserviceStorageProvider.js","sourceRoot":"","sources":["../../src/storage/IAppserviceStorageProvider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { ICryptoRoomInformation } from "../e2ee/ICryptoRoomInformation";
2
+ /**
3
+ * A storage provider capable of only providing crypto-related storage.
4
+ * @category Storage providers
5
+ */
6
+ export interface ICryptoStorageProvider {
7
+ /**
8
+ * Sets the client's device ID.
9
+ * @param {string} deviceId The device ID.
10
+ * @returns {Promise<void>} Resolves when complete.
11
+ */
12
+ setDeviceId(deviceId: string): Promise<void>;
13
+ /**
14
+ * Gets the client's device ID, if known.
15
+ * @returns {Promise<string>} Resolves to the device ID, or falsy if not known.
16
+ */
17
+ getDeviceId(): Promise<string>;
18
+ /**
19
+ * Stores a room's configuration.
20
+ * @param {string} roomId The room ID to store the configuration for.
21
+ * @param {ICryptoRoomInformation} config The room's encryption config. May be empty.
22
+ * @returns {Promise<void>} Resolves when complete.
23
+ */
24
+ storeRoom(roomId: string, config: ICryptoRoomInformation): Promise<void>;
25
+ /**
26
+ * Gets a room's configuration. If the room is unknown, a falsy value is returned.
27
+ * @param {string} roomId The room ID to get the configuration for.
28
+ * @returns {Promise<ICryptoRoomInformation>} Resolves to the room's configuration, or
29
+ * to falsy if the room is unknown.
30
+ */
31
+ getRoom(roomId: string): Promise<ICryptoRoomInformation>;
32
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ICryptoStorageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICryptoStorageProvider.js","sourceRoot":"","sources":["../../src/storage/ICryptoStorageProvider.ts"],"names":[],"mappings":""}