wechaty-puppet-matrix 0.0.4

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 (352) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +14 -0
  3. package/dist/cjs/package.json +3 -0
  4. package/dist/cjs/src/cleanup.d.ts +4 -0
  5. package/dist/cjs/src/cleanup.d.ts.map +1 -0
  6. package/dist/cjs/src/cleanup.js +31 -0
  7. package/dist/cjs/src/config.d.ts +5 -0
  8. package/dist/cjs/src/config.d.ts.map +1 -0
  9. package/dist/cjs/src/config.js +10 -0
  10. package/dist/cjs/src/engine-schema.d.ts +76 -0
  11. package/dist/cjs/src/engine-schema.d.ts.map +1 -0
  12. package/dist/cjs/src/engine-schema.js +14 -0
  13. package/dist/cjs/src/matrix/cache-manager.d.ts +58 -0
  14. package/dist/cjs/src/matrix/cache-manager.d.ts.map +1 -0
  15. package/dist/cjs/src/matrix/cache-manager.js +286 -0
  16. package/dist/cjs/src/matrix/events/event-friendship.d.ts +6 -0
  17. package/dist/cjs/src/matrix/events/event-friendship.d.ts.map +1 -0
  18. package/dist/cjs/src/matrix/events/event-friendship.js +109 -0
  19. package/dist/cjs/src/matrix/events/event-message.d.ts +6 -0
  20. package/dist/cjs/src/matrix/events/event-message.d.ts.map +1 -0
  21. package/dist/cjs/src/matrix/events/event-message.js +5 -0
  22. package/dist/cjs/src/matrix/events/event-room-invite.d.ts +6 -0
  23. package/dist/cjs/src/matrix/events/event-room-invite.d.ts.map +1 -0
  24. package/dist/cjs/src/matrix/events/event-room-invite.js +55 -0
  25. package/dist/cjs/src/matrix/events/event-room-join.d.ts +6 -0
  26. package/dist/cjs/src/matrix/events/event-room-join.d.ts.map +1 -0
  27. package/dist/cjs/src/matrix/events/event-room-join.js +127 -0
  28. package/dist/cjs/src/matrix/events/event-room-leave.d.ts +8 -0
  29. package/dist/cjs/src/matrix/events/event-room-leave.d.ts.map +1 -0
  30. package/dist/cjs/src/matrix/events/event-room-leave.js +83 -0
  31. package/dist/cjs/src/matrix/events/event-room-topic.d.ts +6 -0
  32. package/dist/cjs/src/matrix/events/event-room-topic.d.ts.map +1 -0
  33. package/dist/cjs/src/matrix/events/event-room-topic.js +56 -0
  34. package/dist/cjs/src/matrix/events/event.d.ts +28 -0
  35. package/dist/cjs/src/matrix/events/event.d.ts.map +1 -0
  36. package/dist/cjs/src/matrix/events/event.js +42 -0
  37. package/dist/cjs/src/matrix/events/mod.d.ts +3 -0
  38. package/dist/cjs/src/matrix/events/mod.d.ts.map +1 -0
  39. package/dist/cjs/src/matrix/events/mod.js +21 -0
  40. package/dist/cjs/src/matrix/messages/message-appmsg.d.ts +57 -0
  41. package/dist/cjs/src/matrix/messages/message-appmsg.d.ts.map +1 -0
  42. package/dist/cjs/src/matrix/messages/message-appmsg.js +60 -0
  43. package/dist/cjs/src/matrix/messages/message-audio.d.ts +32 -0
  44. package/dist/cjs/src/matrix/messages/message-audio.d.ts.map +1 -0
  45. package/dist/cjs/src/matrix/messages/message-audio.js +17 -0
  46. package/dist/cjs/src/matrix/messages/message-emotion.d.ts +13 -0
  47. package/dist/cjs/src/matrix/messages/message-emotion.d.ts.map +1 -0
  48. package/dist/cjs/src/matrix/messages/message-emotion.js +32 -0
  49. package/dist/cjs/src/matrix/messages/message-image.d.ts +33 -0
  50. package/dist/cjs/src/matrix/messages/message-image.d.ts.map +1 -0
  51. package/dist/cjs/src/matrix/messages/message-image.js +14 -0
  52. package/dist/cjs/src/matrix/messages/message-miniprogram.d.ts +4 -0
  53. package/dist/cjs/src/matrix/messages/message-miniprogram.d.ts.map +1 -0
  54. package/dist/cjs/src/matrix/messages/message-miniprogram.js +21 -0
  55. package/dist/cjs/src/matrix/messages/message-sysmsg.d.ts +18 -0
  56. package/dist/cjs/src/matrix/messages/message-sysmsg.d.ts.map +1 -0
  57. package/dist/cjs/src/matrix/messages/message-sysmsg.js +76 -0
  58. package/dist/cjs/src/matrix/messages/message-video.d.ts +43 -0
  59. package/dist/cjs/src/matrix/messages/message-video.d.ts.map +1 -0
  60. package/dist/cjs/src/matrix/messages/message-video.js +20 -0
  61. package/dist/cjs/src/matrix/messages/sysmsg/message-pat.d.ts +14 -0
  62. package/dist/cjs/src/matrix/messages/sysmsg/message-pat.d.ts.map +1 -0
  63. package/dist/cjs/src/matrix/messages/sysmsg/message-pat.js +11 -0
  64. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts +19 -0
  65. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -0
  66. package/dist/cjs/src/matrix/messages/sysmsg/message-revokemsg.js +48 -0
  67. package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts +59 -0
  68. package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts.map +1 -0
  69. package/dist/cjs/src/matrix/messages/sysmsg/message-sysmsgtemplate.js +61 -0
  70. package/dist/cjs/src/matrix/messages/sysmsg/message-todo.d.ts +31 -0
  71. package/dist/cjs/src/matrix/messages/sysmsg/message-todo.d.ts.map +1 -0
  72. package/dist/cjs/src/matrix/messages/sysmsg/message-todo.js +16 -0
  73. package/dist/cjs/src/matrix/schema-mapper/contact.d.ts +4 -0
  74. package/dist/cjs/src/matrix/schema-mapper/contact.d.ts.map +1 -0
  75. package/dist/cjs/src/matrix/schema-mapper/contact.js +62 -0
  76. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts +3 -0
  77. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts.map +1 -0
  78. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-appmsg.js +100 -0
  79. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts +3 -0
  80. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts.map +1 -0
  81. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-refermsg.js +67 -0
  82. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.d.ts +3 -0
  83. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.d.ts.map +1 -0
  84. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-room.js +40 -0
  85. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts +3 -0
  86. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts.map +1 -0
  87. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-single-chat.js +11 -0
  88. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts +3 -0
  89. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts.map +1 -0
  90. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-sysmsg.js +41 -0
  91. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.d.ts +3 -0
  92. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.d.ts.map +1 -0
  93. package/dist/cjs/src/matrix/schema-mapper/message/message-parser-type.js +65 -0
  94. package/dist/cjs/src/matrix/schema-mapper/message/message-parser.d.ts +13 -0
  95. package/dist/cjs/src/matrix/schema-mapper/message/message-parser.d.ts.map +1 -0
  96. package/dist/cjs/src/matrix/schema-mapper/message/message-parser.js +20 -0
  97. package/dist/cjs/src/matrix/schema-mapper/message/mod.d.ts +3 -0
  98. package/dist/cjs/src/matrix/schema-mapper/message/mod.d.ts.map +1 -0
  99. package/dist/cjs/src/matrix/schema-mapper/message/mod.js +17 -0
  100. package/dist/cjs/src/matrix/schema-mapper/message.d.ts +6 -0
  101. package/dist/cjs/src/matrix/schema-mapper/message.d.ts.map +1 -0
  102. package/dist/cjs/src/matrix/schema-mapper/message.js +47 -0
  103. package/dist/cjs/src/matrix/schema-mapper/room.d.ts +6 -0
  104. package/dist/cjs/src/matrix/schema-mapper/room.d.ts.map +1 -0
  105. package/dist/cjs/src/matrix/schema-mapper/room.js +27 -0
  106. package/dist/cjs/src/matrix/service/request.d.ts +290 -0
  107. package/dist/cjs/src/matrix/service/request.d.ts.map +1 -0
  108. package/dist/cjs/src/matrix/service/request.js +1315 -0
  109. package/dist/cjs/src/matrix/types.d.ts +34 -0
  110. package/dist/cjs/src/matrix/types.d.ts.map +1 -0
  111. package/dist/cjs/src/matrix/types.js +30 -0
  112. package/dist/cjs/src/matrix/utils/cached-promise.d.ts +5 -0
  113. package/dist/cjs/src/matrix/utils/cached-promise.d.ts.map +1 -0
  114. package/dist/cjs/src/matrix/utils/cached-promise.js +22 -0
  115. package/dist/cjs/src/matrix/utils/image-decrypt.d.ts +7 -0
  116. package/dist/cjs/src/matrix/utils/image-decrypt.d.ts.map +1 -0
  117. package/dist/cjs/src/matrix/utils/image-decrypt.js +158 -0
  118. package/dist/cjs/src/matrix/utils/index.d.ts +4 -0
  119. package/dist/cjs/src/matrix/utils/index.d.ts.map +1 -0
  120. package/dist/cjs/src/matrix/utils/index.js +32 -0
  121. package/dist/cjs/src/matrix/utils/is-type.d.ts +9 -0
  122. package/dist/cjs/src/matrix/utils/is-type.d.ts.map +1 -0
  123. package/dist/cjs/src/matrix/utils/is-type.js +72 -0
  124. package/dist/cjs/src/matrix/utils/regex.d.ts +3 -0
  125. package/dist/cjs/src/matrix/utils/regex.d.ts.map +1 -0
  126. package/dist/cjs/src/matrix/utils/regex.js +14 -0
  127. package/dist/cjs/src/matrix/utils/runner.d.ts +3 -0
  128. package/dist/cjs/src/matrix/utils/runner.d.ts.map +1 -0
  129. package/dist/cjs/src/matrix/utils/runner.js +12 -0
  130. package/dist/cjs/src/matrix/utils/string.d.ts +2 -0
  131. package/dist/cjs/src/matrix/utils/string.d.ts.map +1 -0
  132. package/dist/cjs/src/matrix/utils/string.js +7 -0
  133. package/dist/cjs/src/matrix/utils/xml-to-json.d.ts +5 -0
  134. package/dist/cjs/src/matrix/utils/xml-to-json.d.ts.map +1 -0
  135. package/dist/cjs/src/matrix/utils/xml-to-json.js +51 -0
  136. package/dist/cjs/src/mod.d.ts +5 -0
  137. package/dist/cjs/src/mod.d.ts.map +1 -0
  138. package/dist/cjs/src/mod.js +9 -0
  139. package/dist/cjs/src/package-json.d.ts +3 -0
  140. package/dist/cjs/src/package-json.d.ts.map +1 -0
  141. package/dist/cjs/src/package-json.js +4 -0
  142. package/dist/cjs/src/package-json.spec.d.ts +3 -0
  143. package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
  144. package/dist/cjs/src/package-json.spec.js +9 -0
  145. package/dist/cjs/src/puppet-matrix.d.ts +114 -0
  146. package/dist/cjs/src/puppet-matrix.d.ts.map +1 -0
  147. package/dist/cjs/src/puppet-matrix.js +1037 -0
  148. package/dist/cjs/tests/integration.spec.d.ts +3 -0
  149. package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
  150. package/dist/cjs/tests/integration.spec.js +7 -0
  151. package/dist/cjs/tests/tap.spec.d.ts +3 -0
  152. package/dist/cjs/tests/tap.spec.d.ts.map +1 -0
  153. package/dist/cjs/tests/tap.spec.js +32 -0
  154. package/dist/esm/src/cleanup.d.ts +4 -0
  155. package/dist/esm/src/cleanup.d.ts.map +1 -0
  156. package/dist/esm/src/cleanup.js +24 -0
  157. package/dist/esm/src/config.d.ts +5 -0
  158. package/dist/esm/src/config.d.ts.map +1 -0
  159. package/dist/esm/src/config.js +5 -0
  160. package/dist/esm/src/engine-schema.d.ts +76 -0
  161. package/dist/esm/src/engine-schema.d.ts.map +1 -0
  162. package/dist/esm/src/engine-schema.js +11 -0
  163. package/dist/esm/src/matrix/cache-manager.d.ts +58 -0
  164. package/dist/esm/src/matrix/cache-manager.d.ts.map +1 -0
  165. package/dist/esm/src/matrix/cache-manager.js +279 -0
  166. package/dist/esm/src/matrix/events/event-friendship.d.ts +6 -0
  167. package/dist/esm/src/matrix/events/event-friendship.d.ts.map +1 -0
  168. package/dist/esm/src/matrix/events/event-friendship.js +84 -0
  169. package/dist/esm/src/matrix/events/event-message.d.ts +6 -0
  170. package/dist/esm/src/matrix/events/event-message.d.ts.map +1 -0
  171. package/dist/esm/src/matrix/events/event-message.js +3 -0
  172. package/dist/esm/src/matrix/events/event-room-invite.d.ts +6 -0
  173. package/dist/esm/src/matrix/events/event-room-invite.d.ts.map +1 -0
  174. package/dist/esm/src/matrix/events/event-room-invite.js +53 -0
  175. package/dist/esm/src/matrix/events/event-room-join.d.ts +6 -0
  176. package/dist/esm/src/matrix/events/event-room-join.d.ts.map +1 -0
  177. package/dist/esm/src/matrix/events/event-room-join.js +125 -0
  178. package/dist/esm/src/matrix/events/event-room-leave.d.ts +8 -0
  179. package/dist/esm/src/matrix/events/event-room-leave.d.ts.map +1 -0
  180. package/dist/esm/src/matrix/events/event-room-leave.js +79 -0
  181. package/dist/esm/src/matrix/events/event-room-topic.d.ts +6 -0
  182. package/dist/esm/src/matrix/events/event-room-topic.d.ts.map +1 -0
  183. package/dist/esm/src/matrix/events/event-room-topic.js +54 -0
  184. package/dist/esm/src/matrix/events/event.d.ts +28 -0
  185. package/dist/esm/src/matrix/events/event.d.ts.map +1 -0
  186. package/dist/esm/src/matrix/events/event.js +37 -0
  187. package/dist/esm/src/matrix/events/mod.d.ts +3 -0
  188. package/dist/esm/src/matrix/events/mod.d.ts.map +1 -0
  189. package/dist/esm/src/matrix/events/mod.js +14 -0
  190. package/dist/esm/src/matrix/messages/message-appmsg.d.ts +57 -0
  191. package/dist/esm/src/matrix/messages/message-appmsg.d.ts.map +1 -0
  192. package/dist/esm/src/matrix/messages/message-appmsg.js +56 -0
  193. package/dist/esm/src/matrix/messages/message-audio.d.ts +32 -0
  194. package/dist/esm/src/matrix/messages/message-audio.d.ts.map +1 -0
  195. package/dist/esm/src/matrix/messages/message-audio.js +14 -0
  196. package/dist/esm/src/matrix/messages/message-emotion.d.ts +13 -0
  197. package/dist/esm/src/matrix/messages/message-emotion.d.ts.map +1 -0
  198. package/dist/esm/src/matrix/messages/message-emotion.js +28 -0
  199. package/dist/esm/src/matrix/messages/message-image.d.ts +33 -0
  200. package/dist/esm/src/matrix/messages/message-image.d.ts.map +1 -0
  201. package/dist/esm/src/matrix/messages/message-image.js +11 -0
  202. package/dist/esm/src/matrix/messages/message-miniprogram.d.ts +4 -0
  203. package/dist/esm/src/matrix/messages/message-miniprogram.d.ts.map +1 -0
  204. package/dist/esm/src/matrix/messages/message-miniprogram.js +18 -0
  205. package/dist/esm/src/matrix/messages/message-sysmsg.d.ts +18 -0
  206. package/dist/esm/src/matrix/messages/message-sysmsg.d.ts.map +1 -0
  207. package/dist/esm/src/matrix/messages/message-sysmsg.js +69 -0
  208. package/dist/esm/src/matrix/messages/message-video.d.ts +43 -0
  209. package/dist/esm/src/matrix/messages/message-video.d.ts.map +1 -0
  210. package/dist/esm/src/matrix/messages/message-video.js +17 -0
  211. package/dist/esm/src/matrix/messages/sysmsg/message-pat.d.ts +14 -0
  212. package/dist/esm/src/matrix/messages/sysmsg/message-pat.d.ts.map +1 -0
  213. package/dist/esm/src/matrix/messages/sysmsg/message-pat.js +8 -0
  214. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts +19 -0
  215. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.d.ts.map +1 -0
  216. package/dist/esm/src/matrix/messages/sysmsg/message-revokemsg.js +43 -0
  217. package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts +59 -0
  218. package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.d.ts.map +1 -0
  219. package/dist/esm/src/matrix/messages/sysmsg/message-sysmsgtemplate.js +56 -0
  220. package/dist/esm/src/matrix/messages/sysmsg/message-todo.d.ts +31 -0
  221. package/dist/esm/src/matrix/messages/sysmsg/message-todo.d.ts.map +1 -0
  222. package/dist/esm/src/matrix/messages/sysmsg/message-todo.js +13 -0
  223. package/dist/esm/src/matrix/schema-mapper/contact.d.ts +4 -0
  224. package/dist/esm/src/matrix/schema-mapper/contact.d.ts.map +1 -0
  225. package/dist/esm/src/matrix/schema-mapper/contact.js +36 -0
  226. package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts +3 -0
  227. package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.d.ts.map +1 -0
  228. package/dist/esm/src/matrix/schema-mapper/message/message-parser-appmsg.js +73 -0
  229. package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts +3 -0
  230. package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.d.ts.map +1 -0
  231. package/dist/esm/src/matrix/schema-mapper/message/message-parser-refermsg.js +40 -0
  232. package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.d.ts +3 -0
  233. package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.d.ts.map +1 -0
  234. package/dist/esm/src/matrix/schema-mapper/message/message-parser-room.js +36 -0
  235. package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts +3 -0
  236. package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.d.ts.map +1 -0
  237. package/dist/esm/src/matrix/schema-mapper/message/message-parser-single-chat.js +7 -0
  238. package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts +3 -0
  239. package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.d.ts.map +1 -0
  240. package/dist/esm/src/matrix/schema-mapper/message/message-parser-sysmsg.js +37 -0
  241. package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.d.ts +3 -0
  242. package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.d.ts.map +1 -0
  243. package/dist/esm/src/matrix/schema-mapper/message/message-parser-type.js +38 -0
  244. package/dist/esm/src/matrix/schema-mapper/message/message-parser.d.ts +13 -0
  245. package/dist/esm/src/matrix/schema-mapper/message/message-parser.d.ts.map +1 -0
  246. package/dist/esm/src/matrix/schema-mapper/message/message-parser.js +15 -0
  247. package/dist/esm/src/matrix/schema-mapper/message/mod.d.ts +3 -0
  248. package/dist/esm/src/matrix/schema-mapper/message/mod.d.ts.map +1 -0
  249. package/dist/esm/src/matrix/schema-mapper/message/mod.js +14 -0
  250. package/dist/esm/src/matrix/schema-mapper/message.d.ts +6 -0
  251. package/dist/esm/src/matrix/schema-mapper/message.d.ts.map +1 -0
  252. package/dist/esm/src/matrix/schema-mapper/message.js +21 -0
  253. package/dist/esm/src/matrix/schema-mapper/room.d.ts +6 -0
  254. package/dist/esm/src/matrix/schema-mapper/room.d.ts.map +1 -0
  255. package/dist/esm/src/matrix/schema-mapper/room.js +22 -0
  256. package/dist/esm/src/matrix/service/request.d.ts +290 -0
  257. package/dist/esm/src/matrix/service/request.d.ts.map +1 -0
  258. package/dist/esm/src/matrix/service/request.js +1286 -0
  259. package/dist/esm/src/matrix/types.d.ts +34 -0
  260. package/dist/esm/src/matrix/types.d.ts.map +1 -0
  261. package/dist/esm/src/matrix/types.js +27 -0
  262. package/dist/esm/src/matrix/utils/cached-promise.d.ts +5 -0
  263. package/dist/esm/src/matrix/utils/cached-promise.d.ts.map +1 -0
  264. package/dist/esm/src/matrix/utils/cached-promise.js +18 -0
  265. package/dist/esm/src/matrix/utils/image-decrypt.d.ts +7 -0
  266. package/dist/esm/src/matrix/utils/image-decrypt.d.ts.map +1 -0
  267. package/dist/esm/src/matrix/utils/image-decrypt.js +153 -0
  268. package/dist/esm/src/matrix/utils/index.d.ts +4 -0
  269. package/dist/esm/src/matrix/utils/index.d.ts.map +1 -0
  270. package/dist/esm/src/matrix/utils/index.js +24 -0
  271. package/dist/esm/src/matrix/utils/is-type.d.ts +9 -0
  272. package/dist/esm/src/matrix/utils/is-type.d.ts.map +1 -0
  273. package/dist/esm/src/matrix/utils/is-type.js +62 -0
  274. package/dist/esm/src/matrix/utils/regex.d.ts +3 -0
  275. package/dist/esm/src/matrix/utils/regex.d.ts.map +1 -0
  276. package/dist/esm/src/matrix/utils/regex.js +11 -0
  277. package/dist/esm/src/matrix/utils/runner.d.ts +3 -0
  278. package/dist/esm/src/matrix/utils/runner.d.ts.map +1 -0
  279. package/dist/esm/src/matrix/utils/runner.js +9 -0
  280. package/dist/esm/src/matrix/utils/string.d.ts +2 -0
  281. package/dist/esm/src/matrix/utils/string.d.ts.map +1 -0
  282. package/dist/esm/src/matrix/utils/string.js +3 -0
  283. package/dist/esm/src/matrix/utils/xml-to-json.d.ts +5 -0
  284. package/dist/esm/src/matrix/utils/xml-to-json.d.ts.map +1 -0
  285. package/dist/esm/src/matrix/utils/xml-to-json.js +45 -0
  286. package/dist/esm/src/mod.d.ts +5 -0
  287. package/dist/esm/src/mod.d.ts.map +1 -0
  288. package/dist/esm/src/mod.js +4 -0
  289. package/dist/esm/src/package-json.d.ts +3 -0
  290. package/dist/esm/src/package-json.d.ts.map +1 -0
  291. package/dist/esm/src/package-json.js +1 -0
  292. package/dist/esm/src/package-json.spec.d.ts +3 -0
  293. package/dist/esm/src/package-json.spec.d.ts.map +1 -0
  294. package/dist/esm/src/package-json.spec.js +7 -0
  295. package/dist/esm/src/puppet-matrix.d.ts +114 -0
  296. package/dist/esm/src/puppet-matrix.d.ts.map +1 -0
  297. package/dist/esm/src/puppet-matrix.js +1007 -0
  298. package/dist/esm/tests/integration.spec.d.ts +3 -0
  299. package/dist/esm/tests/integration.spec.d.ts.map +1 -0
  300. package/dist/esm/tests/integration.spec.js +5 -0
  301. package/dist/esm/tests/tap.spec.d.ts +3 -0
  302. package/dist/esm/tests/tap.spec.d.ts.map +1 -0
  303. package/dist/esm/tests/tap.spec.js +7 -0
  304. package/package.json +98 -0
  305. package/src/cleanup.ts +36 -0
  306. package/src/config.ts +15 -0
  307. package/src/engine-schema.ts +171 -0
  308. package/src/matrix/cache-manager.ts +359 -0
  309. package/src/matrix/events/event-friendship.ts +116 -0
  310. package/src/matrix/events/event-message.ts +7 -0
  311. package/src/matrix/events/event-room-invite.ts +64 -0
  312. package/src/matrix/events/event-room-join.ts +200 -0
  313. package/src/matrix/events/event-room-leave.ts +111 -0
  314. package/src/matrix/events/event-room-topic.ts +73 -0
  315. package/src/matrix/events/event.ts +60 -0
  316. package/src/matrix/events/mod.ts +16 -0
  317. package/src/matrix/messages/message-appmsg.ts +131 -0
  318. package/src/matrix/messages/message-audio.ts +48 -0
  319. package/src/matrix/messages/message-emotion.ts +68 -0
  320. package/src/matrix/messages/message-image.ts +46 -0
  321. package/src/matrix/messages/message-miniprogram.ts +45 -0
  322. package/src/matrix/messages/message-sysmsg.ts +106 -0
  323. package/src/matrix/messages/message-video.ts +62 -0
  324. package/src/matrix/messages/sysmsg/message-pat.ts +22 -0
  325. package/src/matrix/messages/sysmsg/message-revokemsg.ts +70 -0
  326. package/src/matrix/messages/sysmsg/message-sysmsgtemplate.ts +133 -0
  327. package/src/matrix/messages/sysmsg/message-todo.ts +45 -0
  328. package/src/matrix/schema-mapper/contact.ts +37 -0
  329. package/src/matrix/schema-mapper/message/message-parser-appmsg.ts +78 -0
  330. package/src/matrix/schema-mapper/message/message-parser-refermsg.ts +53 -0
  331. package/src/matrix/schema-mapper/message/message-parser-room.ts +62 -0
  332. package/src/matrix/schema-mapper/message/message-parser-single-chat.ts +12 -0
  333. package/src/matrix/schema-mapper/message/message-parser-sysmsg.ts +62 -0
  334. package/src/matrix/schema-mapper/message/message-parser-type.ts +48 -0
  335. package/src/matrix/schema-mapper/message/message-parser.ts +35 -0
  336. package/src/matrix/schema-mapper/message/mod.ts +17 -0
  337. package/src/matrix/schema-mapper/message.ts +30 -0
  338. package/src/matrix/schema-mapper/room.ts +28 -0
  339. package/src/matrix/service/request.ts +1944 -0
  340. package/src/matrix/types.ts +37 -0
  341. package/src/matrix/utils/cached-promise.ts +25 -0
  342. package/src/matrix/utils/image-decrypt.ts +198 -0
  343. package/src/matrix/utils/index.ts +34 -0
  344. package/src/matrix/utils/is-type.ts +72 -0
  345. package/src/matrix/utils/regex.ts +15 -0
  346. package/src/matrix/utils/runner.ts +12 -0
  347. package/src/matrix/utils/string.ts +3 -0
  348. package/src/matrix/utils/xml-to-json.ts +59 -0
  349. package/src/mod.ts +10 -0
  350. package/src/package-json.spec.ts +10 -0
  351. package/src/package-json.ts +11 -0
  352. package/src/puppet-matrix.ts +1402 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-room-invite.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/events/event-room-invite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;kCAOf,MAAM,CAAC,MAAM,WAAW,cAAc,KAAG,OAAO,CAAC,YAAY,CAAC;AAA7F,wBAoDC"}
@@ -0,0 +1,53 @@
1
+ import { parseAppmsgMessagePayload, AppMessageType } from '../messages/message-appmsg.js';
2
+ import { isRoomId } from '../utils/is-type.js';
3
+ const ROOM_OTHER_INVITE_TITLE_ZH = [/邀请你加入群聊/];
4
+ const ROOM_OTHER_INVITE_TITLE_EN = [/Group Chat Invitation/];
5
+ const ROOM_OTHER_INVITE_LIST_ZH = [/^"(.+)"邀请你加入群聊(.*),进入可查看详情。/];
6
+ const ROOM_OTHER_INVITE_LIST_EN = [/"(.+)" invited you to join the group chat "(.+)"\. Enter to view details\./];
7
+ export default async (_puppet, message) => {
8
+ let appMsgPayload;
9
+ try {
10
+ appMsgPayload = await parseAppmsgMessagePayload(message.msg);
11
+ }
12
+ catch (e) {
13
+ return null;
14
+ }
15
+ if (appMsgPayload.type !== AppMessageType.Url) {
16
+ return null;
17
+ }
18
+ if (!appMsgPayload.title || !appMsgPayload.des) {
19
+ return null;
20
+ }
21
+ let matchesForOtherInviteTitleEn = null;
22
+ let matchesForOtherInviteTitleZh = null;
23
+ let matchesForOtherInviteEn = null;
24
+ let matchesForOtherInviteZh = null;
25
+ ROOM_OTHER_INVITE_TITLE_EN.some((regex) => !!(matchesForOtherInviteTitleEn = appMsgPayload.title.match(regex)));
26
+ ROOM_OTHER_INVITE_TITLE_ZH.some((regex) => !!(matchesForOtherInviteTitleZh = appMsgPayload.title.match(regex)));
27
+ ROOM_OTHER_INVITE_LIST_EN.some((regex) => !!(matchesForOtherInviteEn = appMsgPayload.des.match(regex)));
28
+ ROOM_OTHER_INVITE_LIST_ZH.some((regex) => !!(matchesForOtherInviteZh = appMsgPayload.des.match(regex)));
29
+ const titleMatch = matchesForOtherInviteTitleEn || matchesForOtherInviteTitleZh;
30
+ const matchInviteEvent = matchesForOtherInviteEn || matchesForOtherInviteZh;
31
+ const matches = !!titleMatch && !!matchInviteEvent;
32
+ if (!matches) {
33
+ return null;
34
+ }
35
+ let receiverId = '';
36
+ if (!isRoomId(message.talkerId)) {
37
+ receiverId = _puppet.currentUserId;
38
+ }
39
+ else {
40
+ receiverId = message.talkerId;
41
+ }
42
+ return {
43
+ avatar: appMsgPayload.thumburl,
44
+ id: message.id,
45
+ invitation: appMsgPayload.url,
46
+ inviterId: message.talkerId,
47
+ memberCount: 0,
48
+ memberIdList: [],
49
+ receiverId,
50
+ timestamp: message.timeStamp,
51
+ topic: matchInviteEvent[2],
52
+ };
53
+ };
@@ -0,0 +1,6 @@
1
+ import type { MessagePayload } from '../../engine-schema.js';
2
+ import type * as PUPPET from '@juzi/wechaty-puppet';
3
+ import type { EventPayload } from './event.js';
4
+ declare const _default: (puppet: PUPPET.Puppet, message: MessagePayload) => Promise<EventPayload>;
5
+ export default _default;
6
+ //# sourceMappingURL=event-room-join.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-room-join.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/events/event-room-join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;iCAiChB,MAAM,CAAC,MAAM,WAAW,cAAc,KAAG,OAAO,CAAC,YAAY,CAAC;AAA5F,wBAmKC"}
@@ -0,0 +1,125 @@
1
+ import { isRoomId } from '../utils/is-type.js';
2
+ import { WechatMessageType } from '../types.js';
3
+ import { xmlToJson, getUserName } from '../utils/xml-to-json.js';
4
+ const ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_ZH = [
5
+ /^你邀请"(.+)"加入了群聊 {2}\$revoke\$/,
6
+ /^" ?(.+)"通过扫描你分享的二维码加入群聊/,
7
+ ];
8
+ const ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_ZH = [
9
+ /^"([^"]+?)"邀请你加入了群聊,群聊参与人还有:(.+)/,
10
+ /^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
11
+ ];
12
+ const ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_ZH = [
13
+ /^"(.+)"邀请"(.+)"加入了群聊/,
14
+ ];
15
+ const ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_ZH = [
16
+ /^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
17
+ ];
18
+ const ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_EN = [
19
+ /^You invited (.+) to the group chat/,
20
+ /^" ?(.+)" joined group chat via the QR code you shared/,
21
+ ];
22
+ const ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_EN = [
23
+ /^(.+) invited you to a group chat with (.+)/,
24
+ ];
25
+ const ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_EN = [
26
+ /^(.+?) invited (.+?) to (the|a) group chat/,
27
+ ];
28
+ const ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_EN = [
29
+ /^"(.+)" joined the group chat via the QR Code shared by "(.+)"/,
30
+ ];
31
+ export default async (puppet, message) => {
32
+ const roomId = message.fromWxid || '';
33
+ if (!isRoomId(roomId)) {
34
+ return null;
35
+ }
36
+ const timestamp = message.timeStamp;
37
+ if (message.msgType !== WechatMessageType.Sys && message.msgType !== WechatMessageType.SysTemplate) {
38
+ return null;
39
+ }
40
+ const jsonPayload = await xmlToJson(message.msg);
41
+ if (!jsonPayload
42
+ || !jsonPayload.sysmsg
43
+ || !jsonPayload.sysmsg.sysmsgtemplate) {
44
+ return null;
45
+ }
46
+ const content = jsonPayload.sysmsg.sysmsgtemplate.content_template.template;
47
+ const linkList = jsonPayload.sysmsg.sysmsgtemplate.content_template.link_list.link;
48
+ let matchesForBotInviteOtherEn = null;
49
+ let matchesForOtherInviteBotEn = null;
50
+ let matchesForOtherInviteOtherEn = null;
51
+ let matchesForOtherInviteOtherQrcodeEn = null;
52
+ ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_EN.some((regex) => !!(matchesForBotInviteOtherEn = content.match(regex)));
53
+ ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_EN.some((regex) => !!(matchesForOtherInviteBotEn = content.match(regex)));
54
+ ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_EN.some((regex) => !!(matchesForOtherInviteOtherEn = content.match(regex)));
55
+ ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_EN.some((regex) => !!(matchesForOtherInviteOtherQrcodeEn = content.match(regex)));
56
+ let matchesForBotInviteOtherZh = null;
57
+ let matchesForOtherInviteBotZh = null;
58
+ let matchesForOtherInviteOtherZh = null;
59
+ let matchesForOtherInviteOtherQrcodeZh = null;
60
+ ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_ZH.some((regex) => !!(matchesForBotInviteOtherZh = content.match(regex)));
61
+ ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_ZH.some((regex) => !!(matchesForOtherInviteBotZh = content.match(regex)));
62
+ ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_ZH.some((regex) => !!(matchesForOtherInviteOtherZh = content.match(regex)));
63
+ ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_ZH.some((regex) => !!(matchesForOtherInviteOtherQrcodeZh = content.match(regex)));
64
+ const matchesForBotInviteOther = matchesForBotInviteOtherEn || matchesForBotInviteOtherZh;
65
+ const matchesForOtherInviteBot = matchesForOtherInviteBotEn || matchesForOtherInviteBotZh;
66
+ const matchesForOtherInviteOther = matchesForOtherInviteOtherEn || matchesForOtherInviteOtherZh;
67
+ const matchesForOtherInviteOtherQrcode = matchesForOtherInviteOtherQrcodeEn || matchesForOtherInviteOtherQrcodeZh;
68
+ const matches = matchesForBotInviteOther
69
+ || matchesForOtherInviteBot
70
+ || matchesForOtherInviteOther
71
+ || matchesForOtherInviteOtherQrcode;
72
+ if (!matches) {
73
+ return null;
74
+ }
75
+ const checkString = (inviteeIdList) => {
76
+ return typeof inviteeIdList !== 'string'
77
+ ? inviteeIdList
78
+ : [inviteeIdList];
79
+ };
80
+ if (matchesForBotInviteOther) {
81
+ const other = matches[1] || '';
82
+ const inviteeIdList = getUserName(linkList, other);
83
+ return {
84
+ inviteeIdList: checkString(inviteeIdList),
85
+ inviterId: puppet.currentUserId,
86
+ roomId,
87
+ timestamp,
88
+ };
89
+ }
90
+ else if (matchesForOtherInviteBot) {
91
+ const _inviterName = matches[1] || '';
92
+ const inviterId = getUserName(linkList, _inviterName);
93
+ return {
94
+ inviteeIdList: [puppet.currentUserId],
95
+ inviterId,
96
+ roomId,
97
+ timestamp,
98
+ };
99
+ }
100
+ else if (matchesForOtherInviteOther) {
101
+ const _inviterName = matches[1] || '';
102
+ const inviterId = getUserName(linkList, _inviterName);
103
+ const _others = matches[2] || '';
104
+ const inviteeIdList = getUserName(linkList, _others);
105
+ return {
106
+ inviteeIdList: checkString(inviteeIdList),
107
+ inviterId,
108
+ roomId,
109
+ timestamp,
110
+ };
111
+ }
112
+ else if (matchesForOtherInviteOtherQrcode) {
113
+ const _inviterName = matches[2] || '';
114
+ const inviterId = getUserName(linkList, _inviterName);
115
+ const other = matches[1] || '';
116
+ const inviteeIdList = getUserName(linkList, other);
117
+ return {
118
+ inviteeIdList: checkString(inviteeIdList),
119
+ inviterId,
120
+ roomId,
121
+ timestamp,
122
+ };
123
+ }
124
+ return null;
125
+ };
@@ -0,0 +1,8 @@
1
+ import type { MessagePayload } from '../../engine-schema.js';
2
+ import type * as PUPPET from '@juzi/wechaty-puppet';
3
+ import type { EventPayload } from './event.js';
4
+ export declare function removeRoomLeaveDebounce(roomId: string, removeeId: string): void;
5
+ export declare function isRoomLeaveDebouncing(roomId: string, removeeId: string): boolean;
6
+ declare const _default: (puppet: PUPPET.Puppet, message: MessagePayload) => Promise<EventPayload>;
7
+ export default _default;
8
+ //# sourceMappingURL=event-room-leave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-room-leave.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/events/event-room-leave.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAkC9C,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAGzE;AAED,wBAAgB,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGjF;iCAE6B,MAAM,CAAC,MAAM,WAAW,cAAc,KAAG,OAAO,CAAC,YAAY,CAAC;AAA5F,wBA+DC"}
@@ -0,0 +1,79 @@
1
+ import { isRoomId } from '../utils/is-type.js';
2
+ import { WechatMessageType } from '../types.js';
3
+ import { executeRunners } from '../utils/runner.js';
4
+ const YOU_REMOVE_OTHER_REGEX_LIST = [
5
+ /^(你)将"(.+)"移出了群聊/,
6
+ /^(You) removed "(.+)" from the group chat/,
7
+ ];
8
+ const OTHER_REMOVE_YOU_REGEX_LIST = [
9
+ /^(你)被"([^"]+?)"移出群聊/,
10
+ /^(You) were removed from the group chat by "([^"]+)"/,
11
+ ];
12
+ const roomLeaveDebounceMap = new Map();
13
+ const DEBOUNCE_TIMEOUT = 3600 * 1000;
14
+ function roomLeaveDebounceKey(roomId, removeeId) {
15
+ return `${roomId}:${removeeId}`;
16
+ }
17
+ function roomLeaveAddDebounce(roomId, removeeId) {
18
+ const key = roomLeaveDebounceKey(roomId, removeeId);
19
+ const oldTimeout = roomLeaveDebounceMap.get(key);
20
+ if (oldTimeout) {
21
+ clearTimeout(oldTimeout);
22
+ }
23
+ const timeout = setTimeout(() => {
24
+ roomLeaveDebounceMap.delete(key);
25
+ }, DEBOUNCE_TIMEOUT);
26
+ roomLeaveDebounceMap.set(key, timeout);
27
+ }
28
+ export function removeRoomLeaveDebounce(roomId, removeeId) {
29
+ const key = roomLeaveDebounceKey(roomId, removeeId);
30
+ roomLeaveDebounceMap.delete(key);
31
+ }
32
+ export function isRoomLeaveDebouncing(roomId, removeeId) {
33
+ const key = roomLeaveDebounceKey(roomId, removeeId);
34
+ return roomLeaveDebounceMap.get(key) !== undefined;
35
+ }
36
+ export default async (puppet, message) => {
37
+ const roomId = message.fromWxid || '';
38
+ if (!isRoomId(roomId) || message.msgType !== WechatMessageType.Sys) {
39
+ return null;
40
+ }
41
+ await puppet._updateRoom(roomId);
42
+ const youRemoveOther = async () => {
43
+ let matches = null;
44
+ YOU_REMOVE_OTHER_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)));
45
+ if (matches) {
46
+ const removerName = matches[2];
47
+ const removerId = (await puppet.roomMemberSearch(roomId, removerName))[0];
48
+ return {
49
+ removeeIdList: [removerId],
50
+ removerId: puppet.currentUserId,
51
+ roomId,
52
+ timestamp: message.timeStamp,
53
+ };
54
+ }
55
+ return null;
56
+ };
57
+ const otherRemoveYou = async () => {
58
+ let matches = null;
59
+ OTHER_REMOVE_YOU_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)));
60
+ if (matches) {
61
+ const removerName = matches[2];
62
+ const removerId = (await puppet.roomMemberSearch(roomId, removerName))[0];
63
+ return {
64
+ removeeIdList: [puppet.currentUserId],
65
+ removerId,
66
+ roomId,
67
+ timestamp: message.timeStamp,
68
+ };
69
+ }
70
+ return null;
71
+ };
72
+ const ret = await executeRunners([youRemoveOther, otherRemoveYou]);
73
+ if (ret) {
74
+ ret.removeeIdList.forEach((leaverId) => {
75
+ roomLeaveAddDebounce(roomId, leaverId);
76
+ });
77
+ }
78
+ return ret;
79
+ };
@@ -0,0 +1,6 @@
1
+ import type { MessagePayload } from '../../engine-schema.js';
2
+ import type * as PUPPET from '@juzi/wechaty-puppet';
3
+ import type { EventPayload } from './event.js';
4
+ declare const _default: (puppet: PUPPET.Puppet, message: MessagePayload) => Promise<EventPayload>;
5
+ export default _default;
6
+ //# sourceMappingURL=event-room-topic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-room-topic.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/events/event-room-topic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;iCAgBhB,MAAM,CAAC,MAAM,WAAW,cAAc,KAAG,OAAO,CAAC,YAAY,CAAC;AAA5F,wBAqDC"}
@@ -0,0 +1,54 @@
1
+ import { isRoomId } from '../utils/is-type.js';
2
+ import { parseTextWithRegexList } from '../utils/regex.js';
3
+ import { WechatMessageType } from '../types.js';
4
+ import { executeRunners } from '../utils/runner.js';
5
+ const OTHER_CHANGE_TOPIC_REGEX_LIST = [
6
+ /^"(.+)"修改群名为“(.+)”$/,
7
+ /^"(.+)" changed the group name to "(.+)"$/,
8
+ ];
9
+ const YOU_CHANGE_TOPIC_REGEX_LIST = [
10
+ /^(你)修改群名为“(.+)”$/,
11
+ /^(You) changed the group name to "(.+)"$/,
12
+ ];
13
+ export default async (puppet, message) => {
14
+ const roomId = message.fromWxid || '';
15
+ if (!isRoomId(roomId) || message.msgType !== WechatMessageType.Sys) {
16
+ return null;
17
+ }
18
+ const youChangeTopic = async () => {
19
+ return parseTextWithRegexList(message.msg, YOU_CHANGE_TOPIC_REGEX_LIST, async (_, match) => {
20
+ const newTopic = match[2];
21
+ return {
22
+ changerId: puppet.currentUserId,
23
+ newTopic,
24
+ };
25
+ });
26
+ };
27
+ const otherChangeTopic = async () => {
28
+ return parseTextWithRegexList(message.msg, OTHER_CHANGE_TOPIC_REGEX_LIST, async (_, match) => {
29
+ const newTopic = match[2];
30
+ const changeName = match[1];
31
+ let changeId = '';
32
+ if (changeName) {
33
+ changeId = (await puppet.roomMemberSearch(roomId, changeName))[0];
34
+ }
35
+ return {
36
+ changerId: changeId,
37
+ newTopic,
38
+ };
39
+ });
40
+ };
41
+ const topicChange = await executeRunners([youChangeTopic, otherChangeTopic]);
42
+ if (topicChange) {
43
+ const room = await puppet.roomPayload(roomId);
44
+ const oldTopic = room.topic;
45
+ return {
46
+ changerId: topicChange.changerId,
47
+ newTopic: topicChange.newTopic,
48
+ oldTopic,
49
+ roomId,
50
+ timestamp: message.timeStamp,
51
+ };
52
+ }
53
+ return null;
54
+ };
@@ -0,0 +1,28 @@
1
+ import { Puppet } from '@juzi/wechaty-puppet';
2
+ import type * as PUPPET from '@juzi/wechaty-puppet';
3
+ import type { MessagePayload } from '../../engine-schema.js';
4
+ export declare enum EventType {
5
+ Message = 0,
6
+ Friendship = 1,
7
+ RoomInvite = 2,
8
+ RoomJoin = 3,
9
+ RoomLeave = 4,
10
+ RoomTopic = 5
11
+ }
12
+ export interface EventPayloadSpec {
13
+ [EventType.Message]: MessagePayload;
14
+ [EventType.Friendship]: PUPPET.payloads.Friendship;
15
+ [EventType.RoomInvite]: PUPPET.payloads.RoomInvitation;
16
+ [EventType.RoomJoin]: PUPPET.payloads.EventRoomJoin;
17
+ [EventType.RoomLeave]: PUPPET.payloads.EventRoomLeave;
18
+ [EventType.RoomTopic]: PUPPET.payloads.EventRoomTopic;
19
+ }
20
+ export interface Event<T extends keyof EventPayloadSpec> {
21
+ type: T;
22
+ payload: EventPayloadSpec[T];
23
+ }
24
+ export type EventPayload = EventPayloadSpec[keyof EventPayloadSpec] | null;
25
+ export type EventParserHandler = (puppet: Puppet, message: MessagePayload) => Promise<EventPayload>;
26
+ export declare function addEventParser(eventType: EventType, parser: EventParserHandler): void;
27
+ export declare function parseEvent(puppet: Puppet, message: MessagePayload): Promise<Event<any>>;
28
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/events/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAO,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,oBAAY,SAAS;IACnB,OAAO,IAAA;IACP,UAAU,IAAA;IACV,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,SAAS,IAAA;CACV;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;IACpC,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;IACnD,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;IACvD,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;IACpD,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;IACtD,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;CACvD;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,MAAM,gBAAgB;IACrD,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,GAAG,IAAI,CAAC;AAC3E,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAIpG,wBAAgB,cAAc,CAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAKtF;AAED,wBAAsB,UAAU,CAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAoB9F"}
@@ -0,0 +1,37 @@
1
+ import { log } from '@juzi/wechaty-puppet';
2
+ export var EventType;
3
+ (function (EventType) {
4
+ EventType[EventType["Message"] = 0] = "Message";
5
+ EventType[EventType["Friendship"] = 1] = "Friendship";
6
+ EventType[EventType["RoomInvite"] = 2] = "RoomInvite";
7
+ EventType[EventType["RoomJoin"] = 3] = "RoomJoin";
8
+ EventType[EventType["RoomLeave"] = 4] = "RoomLeave";
9
+ EventType[EventType["RoomTopic"] = 5] = "RoomTopic";
10
+ })(EventType || (EventType = {}));
11
+ const EventParserList = [];
12
+ export function addEventParser(eventType, parser) {
13
+ EventParserList.push({
14
+ handler: parser,
15
+ type: eventType,
16
+ });
17
+ }
18
+ export async function parseEvent(puppet, message) {
19
+ for (const parser of EventParserList) {
20
+ try {
21
+ const parsedPayload = await parser.handler(puppet, message);
22
+ if (parsedPayload) {
23
+ return {
24
+ payload: parsedPayload,
25
+ type: parser.type,
26
+ };
27
+ }
28
+ }
29
+ catch (e) {
30
+ log.error('[Event]', `parse message error: ${e.stack}`);
31
+ }
32
+ }
33
+ return {
34
+ payload: message,
35
+ type: EventType.Message,
36
+ };
37
+ }
@@ -0,0 +1,3 @@
1
+ import { EventType, parseEvent } from './event.js';
2
+ export { parseEvent, EventType };
3
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/events/mod.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AASlE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ import friendShipParser from './event-friendship.js';
2
+ import roomInviteParser from './event-room-invite.js';
3
+ import roomJoinParser from './event-room-join.js';
4
+ import roomLeaveParser from './event-room-leave.js';
5
+ import roomTopicParser from './event-room-topic.js';
6
+ import messageParser from './event-message.js';
7
+ import { addEventParser, EventType, parseEvent } from './event.js';
8
+ addEventParser(EventType.Friendship, friendShipParser);
9
+ addEventParser(EventType.RoomInvite, roomInviteParser);
10
+ addEventParser(EventType.RoomJoin, roomJoinParser);
11
+ addEventParser(EventType.RoomLeave, roomLeaveParser);
12
+ addEventParser(EventType.RoomTopic, roomTopicParser);
13
+ addEventParser(EventType.Message, messageParser);
14
+ export { parseEvent, EventType };
@@ -0,0 +1,57 @@
1
+ export declare enum AppMessageType {
2
+ Text = 1,
3
+ Img = 2,
4
+ Audio = 3,
5
+ Video = 4,
6
+ Url = 5,
7
+ Attach = 6,
8
+ Open = 7,
9
+ Emoji = 8,
10
+ VoiceRemind = 9,
11
+ ScanGood = 10,
12
+ Good = 13,
13
+ Emotion = 15,
14
+ CardTicket = 16,
15
+ RealtimeShareLocation = 17,
16
+ ChatHistory = 19,
17
+ MiniProgram = 33,
18
+ MiniProgramApp = 36,
19
+ GroupNote = 53,
20
+ ReferMsg = 57,
21
+ Transfers = 2000,
22
+ RedEnvelopes = 2001,
23
+ ReaderType = 100001
24
+ }
25
+ export interface AppAttachPayload {
26
+ totallen?: number;
27
+ attachid?: string;
28
+ emoticonmd5?: string;
29
+ fileext?: string;
30
+ cdnattachurl?: string;
31
+ aeskey?: string;
32
+ cdnthumbaeskey?: string;
33
+ encryver?: number;
34
+ islargefilemsg: number;
35
+ }
36
+ export interface ReferMsgPayload {
37
+ type: string;
38
+ svrid: string;
39
+ fromusr: string;
40
+ chatusr: string;
41
+ displayname: string;
42
+ content: string;
43
+ }
44
+ export interface AppMessagePayload {
45
+ des?: string;
46
+ thumburl?: string;
47
+ title: string;
48
+ url: string;
49
+ appattach?: AppAttachPayload;
50
+ type: AppMessageType;
51
+ md5?: string;
52
+ fromusername?: string;
53
+ recorditem?: string;
54
+ refermsg?: ReferMsgPayload;
55
+ }
56
+ export declare function parseAppmsgMessagePayload(messageContent: string): Promise<AppMessagePayload>;
57
+ //# sourceMappingURL=message-appmsg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-appmsg.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/messages/message-appmsg.ts"],"names":[],"mappings":"AAwCA,oBAAY,cAAc;IACxB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,KAAK,IAAI;IACT,KAAK,IAAI;IACT,GAAG,IAAI;IACP,MAAM,IAAI;IACV,IAAI,IAAI;IACR,KAAK,IAAI;IACT,WAAW,IAAI;IACf,QAAQ,KAAK;IACb,IAAI,KAAK;IACT,OAAO,KAAK;IACZ,UAAU,KAAK;IACf,qBAAqB,KAAK;IAC1B,WAAW,KAAK;IAChB,WAAW,KAAK;IAChB,cAAc,KAAK;IACnB,SAAS,KAAK;IACd,QAAQ,KAAK;IACb,SAAS,OAAO;IAChB,YAAY,OAAO;IACnB,UAAU,SAAS;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,wBAAsB,yBAAyB,CAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+BnG"}
@@ -0,0 +1,56 @@
1
+ import { xmlToJson } from '../utils/xml-to-json.js';
2
+ export var AppMessageType;
3
+ (function (AppMessageType) {
4
+ AppMessageType[AppMessageType["Text"] = 1] = "Text";
5
+ AppMessageType[AppMessageType["Img"] = 2] = "Img";
6
+ AppMessageType[AppMessageType["Audio"] = 3] = "Audio";
7
+ AppMessageType[AppMessageType["Video"] = 4] = "Video";
8
+ AppMessageType[AppMessageType["Url"] = 5] = "Url";
9
+ AppMessageType[AppMessageType["Attach"] = 6] = "Attach";
10
+ AppMessageType[AppMessageType["Open"] = 7] = "Open";
11
+ AppMessageType[AppMessageType["Emoji"] = 8] = "Emoji";
12
+ AppMessageType[AppMessageType["VoiceRemind"] = 9] = "VoiceRemind";
13
+ AppMessageType[AppMessageType["ScanGood"] = 10] = "ScanGood";
14
+ AppMessageType[AppMessageType["Good"] = 13] = "Good";
15
+ AppMessageType[AppMessageType["Emotion"] = 15] = "Emotion";
16
+ AppMessageType[AppMessageType["CardTicket"] = 16] = "CardTicket";
17
+ AppMessageType[AppMessageType["RealtimeShareLocation"] = 17] = "RealtimeShareLocation";
18
+ AppMessageType[AppMessageType["ChatHistory"] = 19] = "ChatHistory";
19
+ AppMessageType[AppMessageType["MiniProgram"] = 33] = "MiniProgram";
20
+ AppMessageType[AppMessageType["MiniProgramApp"] = 36] = "MiniProgramApp";
21
+ AppMessageType[AppMessageType["GroupNote"] = 53] = "GroupNote";
22
+ AppMessageType[AppMessageType["ReferMsg"] = 57] = "ReferMsg";
23
+ AppMessageType[AppMessageType["Transfers"] = 2000] = "Transfers";
24
+ AppMessageType[AppMessageType["RedEnvelopes"] = 2001] = "RedEnvelopes";
25
+ AppMessageType[AppMessageType["ReaderType"] = 100001] = "ReaderType";
26
+ })(AppMessageType || (AppMessageType = {}));
27
+ export async function parseAppmsgMessagePayload(messageContent) {
28
+ const appMsgXml = await xmlToJson(messageContent);
29
+ const { title, des, url, thumburl, type, md5, recorditem } = appMsgXml?.msg.appmsg;
30
+ let appattach;
31
+ const tmp = appMsgXml?.msg.appmsg.appattach;
32
+ if (tmp) {
33
+ appattach = {
34
+ aeskey: tmp.aeskey,
35
+ attachid: tmp.attachid,
36
+ cdnattachurl: tmp.cdnattachurl,
37
+ cdnthumbaeskey: tmp.cdnthumbaeskey,
38
+ emoticonmd5: tmp.emoticonmd5,
39
+ encryver: (tmp.encryver && parseInt(tmp.encryver, 10)) || 0,
40
+ fileext: tmp.fileext,
41
+ islargefilemsg: (tmp.islargefilemsg && parseInt(tmp.islargefilemsg, 10)) || 0,
42
+ totallen: (tmp.totallen && parseInt(tmp.totallen, 10)) || 0,
43
+ };
44
+ }
45
+ return {
46
+ appattach,
47
+ des,
48
+ md5,
49
+ recorditem,
50
+ refermsg: appMsgXml.msg.appmsg.refermsg,
51
+ thumburl,
52
+ title,
53
+ type: parseInt(type, 10),
54
+ url,
55
+ };
56
+ }
@@ -0,0 +1,32 @@
1
+ import { MessagePayload } from '../../engine-schema.js';
2
+ export interface VoiceXmlSchema {
3
+ msg: {
4
+ voicemsg: {
5
+ $: {
6
+ endflag: string;
7
+ cancelflag: string;
8
+ forwardflag: string;
9
+ voiceformat: string;
10
+ voicelength: string;
11
+ length: string;
12
+ bufid: string;
13
+ aeskey: string;
14
+ voiceurl: string;
15
+ voicemd5: string;
16
+ clientmsgid: string;
17
+ fromusername: string;
18
+ };
19
+ };
20
+ };
21
+ }
22
+ export interface AudioMessagePayload {
23
+ aesKey: string;
24
+ length: string;
25
+ voicelength: string;
26
+ voiceurl: string;
27
+ voicemd5: string;
28
+ clientmsgid: string;
29
+ fromusername: string;
30
+ }
31
+ export declare function parseAudioMessagePayload(rawPayload: MessagePayload): Promise<AudioMessagePayload>;
32
+ //# sourceMappingURL=message-audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-audio.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/messages/message-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE;QACH,QAAQ,EAAE;YACR,CAAC,EAAE;gBACD,OAAO,EAAE,MAAM,CAAA;gBACf,UAAU,EAAE,MAAM,CAAA;gBAClB,WAAW,EAAE,MAAM,CAAA;gBACnB,WAAW,EAAE,MAAM,CAAA;gBACnB,WAAW,EAAE,MAAM,CAAA;gBACnB,MAAM,EAAE,MAAM,CAAA;gBACd,KAAK,EAAE,MAAM,CAAA;gBACb,MAAM,EAAE,MAAM,CAAA;gBACd,QAAQ,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,WAAW,EAAE,MAAM,CAAA;gBACnB,YAAY,EAAE,MAAM,CAAA;aACvB,CAAA;SACE,CAAA;KACJ,CAAA;CACJ;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,wBAAwB,CAAE,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAaxG"}
@@ -0,0 +1,14 @@
1
+ import { xmlToJson } from '../utils/xml-to-json.js';
2
+ export async function parseAudioMessagePayload(rawPayload) {
3
+ const audioXml = await xmlToJson(rawPayload.msg);
4
+ const schema = audioXml.msg.voicemsg.$;
5
+ return {
6
+ aesKey: schema.aeskey,
7
+ length: schema.length,
8
+ voicelength: schema.length,
9
+ voiceurl: schema.voiceurl,
10
+ voicemd5: schema.voicemd5,
11
+ clientmsgid: schema.clientmsgid,
12
+ fromusername: schema.fromusername,
13
+ };
14
+ }
@@ -0,0 +1,13 @@
1
+ import type { MessagePayload } from '../../engine-schema.js';
2
+ export interface EmojiMessagePayload {
3
+ type: number;
4
+ len: number;
5
+ md5: string;
6
+ cdnurl: string;
7
+ width: number;
8
+ height: number;
9
+ gameext?: string;
10
+ }
11
+ export declare function parseEmotionMessagePayload(message: MessagePayload): Promise<EmojiMessagePayload>;
12
+ export declare function generateEmotionPayload(emojiMessagePayload: EmojiMessagePayload): string;
13
+ //# sourceMappingURL=message-emotion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-emotion.d.ts","sourceRoot":"","sources":["../../../../../src/matrix/messages/message-emotion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAwB5D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,0BAA0B,CAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA0BvG;AAED,wBAAgB,sBAAsB,CAAE,mBAAmB,EAAE,mBAAmB,GAAG,MAAM,CAIxF"}