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,200 @@
1
+ import type { MessagePayload } from '../../engine-schema.js'
2
+ import type * as PUPPET from '@juzi/wechaty-puppet'
3
+ import { isRoomId } from '../utils/is-type.js'
4
+ import type { EventPayload } from './event.js'
5
+ import { WechatMessageType } from '../types.js'
6
+ import { xmlToJson, getUserName } from '../utils/xml-to-json.js'
7
+
8
+ const ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_ZH = [
9
+ /^你邀请"(.+)"加入了群聊 {2}\$revoke\$/,
10
+ /^" ?(.+)"通过扫描你分享的二维码加入群聊/,
11
+ ]
12
+
13
+ const ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_ZH = [
14
+ /^"([^"]+?)"邀请你加入了群聊,群聊参与人还有:(.+)/,
15
+ /^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
16
+ ]
17
+ const ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_ZH = [
18
+ /^"(.+)"邀请"(.+)"加入了群聊/,
19
+ ]
20
+ const ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_ZH = [
21
+ /^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
22
+ ]
23
+
24
+ const ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_EN = [
25
+ /^You invited (.+) to the group chat/,
26
+ /^" ?(.+)" joined group chat via the QR code you shared/,
27
+ ]
28
+ const ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_EN = [
29
+ /^(.+) invited you to a group chat with (.+)/,
30
+ ]
31
+ const ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_EN = [
32
+ /^(.+?) invited (.+?) to (the|a) group chat/,
33
+ ]
34
+ const ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_EN = [
35
+ /^"(.+)" joined the group chat via the QR Code shared by "(.+)"/,
36
+ ]
37
+ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
38
+ const roomId = message.fromWxid || ''
39
+ if (!isRoomId(roomId)) {
40
+ return null
41
+ }
42
+
43
+ const timestamp = message.timeStamp
44
+ // 都是系统消息
45
+ if (message.msgType !== WechatMessageType.Sys && message.msgType !== WechatMessageType.SysTemplate) {
46
+ return null
47
+ }
48
+
49
+ const jsonPayload = await xmlToJson(message.msg)
50
+ if (
51
+ !jsonPayload
52
+ || !jsonPayload.sysmsg
53
+ || !jsonPayload.sysmsg.sysmsgtemplate
54
+ ) {
55
+ return null
56
+ }
57
+
58
+ const content = jsonPayload.sysmsg.sysmsgtemplate.content_template.template
59
+ const linkList
60
+ = jsonPayload.sysmsg.sysmsgtemplate.content_template.link_list.link
61
+
62
+ /**
63
+ * Process English language
64
+ */
65
+ let matchesForBotInviteOtherEn = null as null | string[]
66
+ let matchesForOtherInviteBotEn = null as null | string[]
67
+ let matchesForOtherInviteOtherEn = null as null | string[]
68
+ let matchesForOtherInviteOtherQrcodeEn = null as null | string[]
69
+
70
+ ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_EN.some(
71
+ (regex) => !!(matchesForBotInviteOtherEn = content.match(regex)),
72
+ )
73
+ ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_EN.some(
74
+ (regex) => !!(matchesForOtherInviteBotEn = content.match(regex)),
75
+ )
76
+ ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_EN.some(
77
+ (regex) => !!(matchesForOtherInviteOtherEn = content.match(regex)),
78
+ )
79
+ ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_EN.some(
80
+ (regex) => !!(matchesForOtherInviteOtherQrcodeEn = content.match(regex)),
81
+ )
82
+
83
+ /**
84
+ * Process Chinese language
85
+ */
86
+ let matchesForBotInviteOtherZh = null as null | string[]
87
+ let matchesForOtherInviteBotZh = null as null | string[]
88
+ let matchesForOtherInviteOtherZh = null as null | string[]
89
+ let matchesForOtherInviteOtherQrcodeZh = null as null | string[]
90
+
91
+ ROOM_JOIN_BOT_INVITE_OTHER_REGEX_LIST_ZH.some(
92
+ (regex) => !!(matchesForBotInviteOtherZh = content.match(regex)),
93
+ )
94
+ ROOM_JOIN_OTHER_INVITE_BOT_REGEX_LIST_ZH.some(
95
+ (regex) => !!(matchesForOtherInviteBotZh = content.match(regex)),
96
+ )
97
+ ROOM_JOIN_OTHER_INVITE_OTHER_REGEX_LIST_ZH.some(
98
+ (regex) => !!(matchesForOtherInviteOtherZh = content.match(regex)),
99
+ )
100
+ ROOM_JOIN_OTHER_INVITE_OTHER_QRCODE_REGEX_LIST_ZH.some(
101
+ (regex) => !!(matchesForOtherInviteOtherQrcodeZh = content.match(regex)),
102
+ )
103
+
104
+ const matchesForBotInviteOther
105
+ = matchesForBotInviteOtherEn || matchesForBotInviteOtherZh
106
+ const matchesForOtherInviteBot
107
+ = matchesForOtherInviteBotEn || matchesForOtherInviteBotZh
108
+ const matchesForOtherInviteOther
109
+ = matchesForOtherInviteOtherEn || matchesForOtherInviteOtherZh
110
+ const matchesForOtherInviteOtherQrcode
111
+ = matchesForOtherInviteOtherQrcodeEn || matchesForOtherInviteOtherQrcodeZh
112
+
113
+ const matches
114
+ = matchesForBotInviteOther
115
+ || matchesForOtherInviteBot
116
+ || matchesForOtherInviteOther
117
+ || matchesForOtherInviteOtherQrcode
118
+
119
+ if (!matches) {
120
+ return null
121
+ }
122
+
123
+ const checkString = (inviteeIdList: string | string[]) => {
124
+ return typeof inviteeIdList !== 'string'
125
+ ? inviteeIdList
126
+ : [ inviteeIdList ]
127
+ }
128
+
129
+ /**
130
+ * Parse all Names From the Event Text
131
+ */
132
+ if (matchesForBotInviteOther) {
133
+ /**
134
+ * 1. Bot Invite Other to join the Room
135
+ * (include invite via QrCode)
136
+ */
137
+ const other = matches[1] || ''
138
+ const inviteeIdList = getUserName(linkList, other)
139
+
140
+ return {
141
+ inviteeIdList: checkString(inviteeIdList),
142
+ inviterId: puppet.currentUserId,
143
+ roomId,
144
+ timestamp,
145
+ } as PUPPET.payloads.EventRoomJoin
146
+ } else if (matchesForOtherInviteBot) {
147
+ /**
148
+ * 2. Other Invite Bot to join the Room
149
+ */
150
+ // /^"([^"]+?)"邀请你加入了群聊/,
151
+ // /^"([^"]+?)"邀请你和"(.+?)"加入了群聊/,
152
+ const _inviterName = matches[1] || ''
153
+ const inviterId = getUserName(linkList, _inviterName)
154
+
155
+ return {
156
+ inviteeIdList: [ puppet.currentUserId ],
157
+ inviterId,
158
+ roomId,
159
+ timestamp,
160
+ } as PUPPET.payloads.EventRoomJoin
161
+ } else if (matchesForOtherInviteOther) {
162
+ /**
163
+ * 3. Other Invite Other to a Room
164
+ * (NOT include invite via Qrcode)
165
+ */
166
+ // /^"([^"]+?)"邀请"([^"]+)"加入了群聊$/,
167
+ // /^([^"]+?) invited ([^"]+?) to (the|a) group chat/,
168
+ const _inviterName = matches[1] || ''
169
+ const inviterId = getUserName(linkList, _inviterName)
170
+
171
+ const _others = matches[2] || ''
172
+ const inviteeIdList = getUserName(linkList, _others)
173
+
174
+ return {
175
+ inviteeIdList: checkString(inviteeIdList),
176
+ inviterId,
177
+ roomId,
178
+ timestamp,
179
+ } as PUPPET.payloads.EventRoomJoin
180
+ } else if (matchesForOtherInviteOtherQrcode) {
181
+ /**
182
+ * 4. Other Invite Other via Qrcode to join a Room
183
+ * /^" (.+)"通过扫描"(.+)"分享的二维码加入群聊/,
184
+ */
185
+ const _inviterName = matches[2] || ''
186
+ const inviterId = getUserName(linkList, _inviterName)
187
+
188
+ const other = matches[1] || ''
189
+ const inviteeIdList = getUserName(linkList, other)
190
+
191
+ return {
192
+ inviteeIdList: checkString(inviteeIdList),
193
+ inviterId,
194
+ roomId,
195
+ timestamp,
196
+ } as PUPPET.payloads.EventRoomJoin
197
+ }
198
+
199
+ return null
200
+ }
@@ -0,0 +1,111 @@
1
+ import type { MessagePayload } from '../../engine-schema.js'
2
+ import type * as PUPPET from '@juzi/wechaty-puppet'
3
+ import { isRoomId } from '../utils/is-type.js'
4
+ import type { EventPayload } from './event.js'
5
+ import { WechatMessageType } from '../types.js'
6
+ import { executeRunners } from '../utils/runner.js'
7
+
8
+ const YOU_REMOVE_OTHER_REGEX_LIST = [
9
+ /^(你)将"(.+)"移出了群聊/,
10
+ /^(You) removed "(.+)" from the group chat/,
11
+ ]
12
+ const OTHER_REMOVE_YOU_REGEX_LIST = [
13
+ /^(你)被"([^"]+?)"移出群聊/,
14
+ /^(You) were removed from the group chat by "([^"]+)"/,
15
+ ]
16
+
17
+ const roomLeaveDebounceMap: Map<string, ReturnType<typeof setTimeout>> = new Map()
18
+ const DEBOUNCE_TIMEOUT = 3600 * 1000 // 1 hour
19
+
20
+ function roomLeaveDebounceKey (roomId: string, removeeId: string) {
21
+ return `${roomId}:${removeeId}`
22
+ }
23
+
24
+ function roomLeaveAddDebounce (roomId: string, removeeId: string) {
25
+ const key = roomLeaveDebounceKey(roomId, removeeId)
26
+ const oldTimeout = roomLeaveDebounceMap.get(key)
27
+ if (oldTimeout) {
28
+ clearTimeout(oldTimeout)
29
+ }
30
+
31
+ const timeout = setTimeout(() => {
32
+ roomLeaveDebounceMap.delete(key)
33
+ }, DEBOUNCE_TIMEOUT)
34
+ roomLeaveDebounceMap.set(key, timeout)
35
+ }
36
+
37
+ // to fix: https://github.com/padlocal/wechaty-puppet-padlocal/issues/43
38
+ export function removeRoomLeaveDebounce (roomId: string, removeeId: string) {
39
+ const key = roomLeaveDebounceKey(roomId, removeeId)
40
+ roomLeaveDebounceMap.delete(key)
41
+ }
42
+
43
+ export function isRoomLeaveDebouncing (roomId: string, removeeId: string): boolean {
44
+ const key = roomLeaveDebounceKey(roomId, removeeId)
45
+ return roomLeaveDebounceMap.get(key) !== undefined
46
+ }
47
+
48
+ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
49
+ const roomId = message.fromWxid || ''
50
+ if (!isRoomId(roomId) || message.msgType !== WechatMessageType.Sys) {
51
+ return null
52
+ }
53
+ // @ts-ignore
54
+ await puppet._updateRoom(roomId)
55
+
56
+ /**
57
+ * 1. 我将别人移除
58
+ * /^(你)将"(.+)"移出了群聊/,
59
+ * 我移除别人是 10000: https://gist.github.com/padlocal/5676b96ad0ca918fdd53849417eff422
60
+ */
61
+ const youRemoveOther = async () => {
62
+ let matches: null | string[] = null
63
+ YOU_REMOVE_OTHER_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)))
64
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
65
+ if (matches) {
66
+ const removerName = matches[2]!
67
+ const removerId = (await puppet.roomMemberSearch(roomId, removerName))[0]!
68
+
69
+ return {
70
+ removeeIdList: [ removerId ],
71
+ removerId: puppet.currentUserId,
72
+ roomId,
73
+ timestamp: message.timeStamp,
74
+ } as PUPPET.payloads.EventRoomLeave
75
+ }
76
+ return null
77
+ }
78
+
79
+ /**
80
+ * 2. 别人移除我
81
+ * /^(你)被"([^"]+?)"移出群聊/,
82
+ * // 我被别人移除是 10000:https://gist.github.com/padlocal/60be89334d4d743937f07023da20291e
83
+ */
84
+ const otherRemoveYou = async () => {
85
+ let matches: null | string[] = null
86
+ OTHER_REMOVE_YOU_REGEX_LIST.some((re) => !!(matches = message.msg.match(re)))
87
+
88
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
89
+ if (matches) {
90
+ const removerName = matches[2]!
91
+ const removerId = (await puppet.roomMemberSearch(roomId, removerName))[0]!
92
+
93
+ return {
94
+ removeeIdList: [ puppet.currentUserId ],
95
+ removerId,
96
+ roomId,
97
+ timestamp: message.timeStamp,
98
+ } as PUPPET.payloads.EventRoomLeave
99
+ }
100
+
101
+ return null
102
+ }
103
+
104
+ const ret = await executeRunners<PUPPET.payloads.EventRoomLeave>([ youRemoveOther, otherRemoveYou ])
105
+ if (ret) {
106
+ ret.removeeIdList.forEach((leaverId) => {
107
+ roomLeaveAddDebounce(roomId, leaverId)
108
+ })
109
+ }
110
+ return ret
111
+ }
@@ -0,0 +1,73 @@
1
+ import type { MessagePayload } from '../../engine-schema.js'
2
+ import type * as PUPPET from '@juzi/wechaty-puppet'
3
+ import { isRoomId } from '../utils/is-type.js'
4
+ import type { EventPayload } from './event.js'
5
+ import { parseTextWithRegexList } from '../utils/regex.js'
6
+ import { WechatMessageType } from '../types.js'
7
+ import { executeRunners } from '../utils/runner.js'
8
+
9
+ const OTHER_CHANGE_TOPIC_REGEX_LIST = [
10
+ /^"(.+)"修改群名为“(.+)”$/,
11
+ /^"(.+)" changed the group name to "(.+)"$/,
12
+ ]
13
+ const YOU_CHANGE_TOPIC_REGEX_LIST = [
14
+ /^(你)修改群名为“(.+)”$/,
15
+ /^(You) changed the group name to "(.+)"$/,
16
+ ]
17
+
18
+ type TopicChange = {changerId: string, newTopic: string};
19
+
20
+ export default async (puppet: PUPPET.Puppet, message: MessagePayload): Promise<EventPayload> => {
21
+ const roomId = message.fromWxid || ''
22
+ if (!isRoomId(roomId) || message.msgType !== WechatMessageType.Sys) {
23
+ return null
24
+ }
25
+
26
+ /**
27
+ * 1. Message payload "you change the room topic" is plain text with type 10000 : https://gist.github.com/padlocal/0c7bb4f5d51e7e94a0efa108bebb4645
28
+ * 你修改群名
29
+ */
30
+ const youChangeTopic = async () => {
31
+ return parseTextWithRegexList(message.msg, YOU_CHANGE_TOPIC_REGEX_LIST, async (_, match) => {
32
+ const newTopic = match[2]
33
+ return {
34
+ changerId: puppet.currentUserId,
35
+ newTopic,
36
+ } as TopicChange
37
+ })
38
+ }
39
+
40
+ /**
41
+ * 2. Message payload "others change room topic" is xml text with type 10002: https://gist.github.com/padlocal/3480ada677839c8c11578d47e820e893
42
+ * 别人修改群名
43
+ */
44
+ const otherChangeTopic = async () => {
45
+ return parseTextWithRegexList(message.msg, OTHER_CHANGE_TOPIC_REGEX_LIST, async (_, match) => {
46
+ const newTopic = match[2]
47
+ const changeName = match[1]
48
+ let changeId = ''
49
+ if (changeName) {
50
+ changeId = (await puppet.roomMemberSearch(roomId, changeName))[0]!
51
+ }
52
+ return {
53
+ changerId: changeId,
54
+ newTopic,
55
+ } as TopicChange
56
+ })
57
+ }
58
+
59
+ const topicChange = await executeRunners<TopicChange>([ youChangeTopic, otherChangeTopic ])
60
+ if (topicChange) {
61
+ const room = await puppet.roomPayload(roomId)
62
+ const oldTopic = room.topic
63
+ return {
64
+ changerId: topicChange.changerId,
65
+ newTopic: topicChange.newTopic,
66
+ oldTopic,
67
+ roomId,
68
+ timestamp: message.timeStamp,
69
+ } as PUPPET.payloads.EventRoomTopic
70
+ }
71
+
72
+ return null
73
+ }
@@ -0,0 +1,60 @@
1
+ import { Puppet, log } from '@juzi/wechaty-puppet'
2
+ import type * as PUPPET from '@juzi/wechaty-puppet'
3
+ import type { MessagePayload } from '../../engine-schema.js'
4
+
5
+ export enum EventType {
6
+ Message,
7
+ Friendship,
8
+ RoomInvite,
9
+ RoomJoin,
10
+ RoomLeave,
11
+ RoomTopic,
12
+ }
13
+
14
+ export interface EventPayloadSpec {
15
+ [EventType.Message]: MessagePayload;
16
+ [EventType.Friendship]: PUPPET.payloads.Friendship;
17
+ [EventType.RoomInvite]: PUPPET.payloads.RoomInvitation;
18
+ [EventType.RoomJoin]: PUPPET.payloads.EventRoomJoin;
19
+ [EventType.RoomLeave]: PUPPET.payloads.EventRoomLeave;
20
+ [EventType.RoomTopic]: PUPPET.payloads.EventRoomTopic;
21
+ }
22
+
23
+ export interface Event<T extends keyof EventPayloadSpec> {
24
+ type: T;
25
+ payload: EventPayloadSpec[T];
26
+ }
27
+
28
+ export type EventPayload = EventPayloadSpec[keyof EventPayloadSpec] | null;
29
+ export type EventParserHandler = (puppet: Puppet, message: MessagePayload) => Promise<EventPayload>;
30
+ type EventParser = { type: EventType, handler: EventParserHandler, };
31
+
32
+ const EventParserList: Array<EventParser> = []
33
+ export function addEventParser (eventType: EventType, parser: EventParserHandler): void {
34
+ EventParserList.push({
35
+ handler: parser,
36
+ type: eventType,
37
+ })
38
+ }
39
+
40
+ export async function parseEvent (puppet: Puppet, message: MessagePayload): Promise<Event<any>> {
41
+ for (const parser of EventParserList) {
42
+ try {
43
+ const parsedPayload = await parser.handler(puppet, message)
44
+ if (parsedPayload) {
45
+ return {
46
+ payload: parsedPayload,
47
+ type: parser.type,
48
+ }
49
+ }
50
+ } catch (e) {
51
+ log.error('[Event]', `parse message error: ${(e as Error).stack}`)
52
+ }
53
+ }
54
+
55
+ // return normal as message bvy default
56
+ return {
57
+ payload: message,
58
+ type: EventType.Message,
59
+ }
60
+ }
@@ -0,0 +1,16 @@
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
+
9
+ addEventParser(EventType.Friendship, friendShipParser)
10
+ addEventParser(EventType.RoomInvite, roomInviteParser)
11
+ addEventParser(EventType.RoomJoin, roomJoinParser)
12
+ addEventParser(EventType.RoomLeave, roomLeaveParser)
13
+ addEventParser(EventType.RoomTopic, roomTopicParser)
14
+ addEventParser(EventType.Message, messageParser)
15
+
16
+ export { parseEvent, EventType }
@@ -0,0 +1,131 @@
1
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
2
+ import { xmlToJson } from '../utils/xml-to-json.js'
3
+
4
+ interface AppMsgXmlSchema {
5
+ msg: {
6
+ appmsg: {
7
+ title: string;
8
+ des: string;
9
+ type: string;
10
+ url: string;
11
+ appattach: {
12
+ totallen: string;
13
+ attachid: string;
14
+ emoticonmd5: string;
15
+ fileext: string;
16
+ cdnattachurl: string;
17
+ cdnthumbaeskey: string;
18
+ aeskey: string;
19
+ encryver: string;
20
+ islargefilemsg: string;
21
+ };
22
+ thumburl: string;
23
+ md5: any;
24
+ recorditem?: string;
25
+ refermsg?: {
26
+ type: string;
27
+ svrid: string;
28
+ fromusr: string;
29
+ chatusr: string;
30
+ displayname: string;
31
+ content: string;
32
+ };
33
+ };
34
+ fromusername: string;
35
+ appinfo: {
36
+ appname: any;
37
+ };
38
+ };
39
+ }
40
+
41
+ export enum AppMessageType {
42
+ Text = 1,
43
+ Img = 2,
44
+ Audio = 3,
45
+ Video = 4,
46
+ Url = 5,
47
+ Attach = 6,
48
+ Open = 7,
49
+ Emoji = 8,
50
+ VoiceRemind = 9,
51
+ ScanGood = 10,
52
+ Good = 13,
53
+ Emotion = 15,
54
+ CardTicket = 16,
55
+ RealtimeShareLocation = 17,
56
+ ChatHistory = 19,
57
+ MiniProgram = 33,
58
+ MiniProgramApp = 36, // this is forwardable mini program
59
+ GroupNote = 53,
60
+ ReferMsg = 57,
61
+ Transfers = 2000,
62
+ RedEnvelopes = 2001,
63
+ ReaderType = 100001,
64
+ }
65
+
66
+ export interface AppAttachPayload {
67
+ totallen?: number;
68
+ attachid?: string;
69
+ emoticonmd5?: string;
70
+ fileext?: string;
71
+ cdnattachurl?: string;
72
+ aeskey?: string;
73
+ cdnthumbaeskey?: string;
74
+ encryver?: number;
75
+ islargefilemsg: number;
76
+ }
77
+
78
+ export interface ReferMsgPayload {
79
+ type: string;
80
+ svrid: string;
81
+ fromusr: string;
82
+ chatusr: string;
83
+ displayname: string;
84
+ content: string;
85
+ }
86
+
87
+ export interface AppMessagePayload {
88
+ des?: string;
89
+ thumburl?: string;
90
+ title: string;
91
+ url: string;
92
+ appattach?: AppAttachPayload;
93
+ type: AppMessageType;
94
+ md5?: string;
95
+ fromusername?: string;
96
+ recorditem?: string;
97
+ refermsg?: ReferMsgPayload;
98
+ }
99
+
100
+ export async function parseAppmsgMessagePayload (messageContent: string): Promise<AppMessagePayload> {
101
+ const appMsgXml: AppMsgXmlSchema = await xmlToJson(messageContent)
102
+ const { title, des, url, thumburl, type, md5, recorditem } = appMsgXml?.msg.appmsg
103
+
104
+ let appattach: AppAttachPayload | undefined
105
+ const tmp = appMsgXml?.msg.appmsg.appattach
106
+ if (tmp) {
107
+ appattach = {
108
+ aeskey: tmp.aeskey,
109
+ attachid: tmp.attachid,
110
+ cdnattachurl: tmp.cdnattachurl,
111
+ cdnthumbaeskey: tmp.cdnthumbaeskey,
112
+ emoticonmd5: tmp.emoticonmd5,
113
+ encryver: (tmp.encryver && parseInt(tmp.encryver, 10)) || 0,
114
+ fileext: tmp.fileext,
115
+ islargefilemsg: (tmp.islargefilemsg && parseInt(tmp.islargefilemsg, 10)) || 0,
116
+ totallen: (tmp.totallen && parseInt(tmp.totallen, 10)) || 0,
117
+ }
118
+ }
119
+
120
+ return {
121
+ appattach,
122
+ des,
123
+ md5,
124
+ recorditem,
125
+ refermsg: appMsgXml.msg.appmsg.refermsg,
126
+ thumburl,
127
+ title,
128
+ type: parseInt(type, 10),
129
+ url,
130
+ }
131
+ }
@@ -0,0 +1,48 @@
1
+ import { MessagePayload } from '../../engine-schema.js'
2
+ import { xmlToJson } from '../utils/xml-to-json.js'
3
+
4
+ export interface VoiceXmlSchema {
5
+ msg: {
6
+ voicemsg: {
7
+ $: {
8
+ endflag: string
9
+ cancelflag: string
10
+ forwardflag: string
11
+ voiceformat: string
12
+ voicelength: string
13
+ length: string
14
+ bufid: string
15
+ aeskey: string
16
+ voiceurl: string
17
+ voicemd5: string
18
+ clientmsgid: string
19
+ fromusername: string
20
+ }
21
+ }
22
+ }
23
+ }
24
+
25
+ export interface AudioMessagePayload {
26
+ aesKey: string,
27
+ length: string,
28
+ voicelength: string,
29
+ voiceurl: string,
30
+ voicemd5: string,
31
+ clientmsgid: string,
32
+ fromusername: string,
33
+ }
34
+
35
+ export async function parseAudioMessagePayload (rawPayload: MessagePayload): Promise<AudioMessagePayload> {
36
+ const audioXml: VoiceXmlSchema = await xmlToJson(rawPayload.msg)
37
+ const schema = audioXml.msg.voicemsg.$
38
+
39
+ return {
40
+ aesKey: schema.aeskey,
41
+ length: schema.length,
42
+ voicelength: schema.length,
43
+ voiceurl: schema.voiceurl,
44
+ voicemd5: schema.voicemd5,
45
+ clientmsgid: schema.clientmsgid,
46
+ fromusername: schema.fromusername,
47
+ }
48
+ }