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,68 @@
1
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition */
2
+ import type { MessagePayload } from '../../engine-schema.js'
3
+ import { xmlToJson } from '../utils/xml-to-json.js'
4
+
5
+ interface EmotionXmlSchema {
6
+ msg: {
7
+ emoji: {
8
+ $: {
9
+ type: string;
10
+ len: string;
11
+ cdnurl: string;
12
+ width: string;
13
+ height: string;
14
+ md5: string;
15
+ };
16
+ };
17
+ gameext: {
18
+ $: {
19
+ content: string;
20
+ type: string;
21
+ };
22
+ };
23
+ };
24
+ }
25
+
26
+ export interface EmojiMessagePayload {
27
+ type: number;
28
+ len: number;
29
+ md5: string;
30
+ cdnurl: string;
31
+ width: number;
32
+ height: number;
33
+ gameext?: string;
34
+ }
35
+
36
+ export async function parseEmotionMessagePayload (message: MessagePayload): Promise<EmojiMessagePayload> {
37
+ const jsonPayload: EmotionXmlSchema = await xmlToJson(message.msg)
38
+
39
+ const len = parseInt(jsonPayload.msg.emoji.$.len, 10) || 0
40
+ const width = parseInt(jsonPayload.msg.emoji.$.width, 10) || 0
41
+ const height = parseInt(jsonPayload.msg.emoji.$.height, 10) || 0
42
+ const cdnurl = jsonPayload.msg.emoji.$.cdnurl
43
+ const type = parseInt(jsonPayload.msg.emoji.$.type, 10) || 0
44
+ const md5 = jsonPayload.msg.emoji.$.md5
45
+
46
+ let gameext
47
+ if (jsonPayload.msg.gameext) {
48
+ const gameextType = parseInt(jsonPayload.msg.gameext.$.type, 10) || 0
49
+ const gameextContent = parseInt(jsonPayload.msg.gameext.$.content, 10) || 0
50
+ gameext = `<gameext type="${gameextType}" content="${gameextContent}" ></gameext>`
51
+ }
52
+
53
+ return {
54
+ cdnurl,
55
+ gameext,
56
+ height,
57
+ len,
58
+ md5,
59
+ type,
60
+ width,
61
+ }
62
+ }
63
+
64
+ export function generateEmotionPayload (emojiMessagePayload: EmojiMessagePayload): string {
65
+ return `<msg><emoji cdnurl="${emojiMessagePayload.cdnurl}" len="${emojiMessagePayload.len}" md5="${
66
+ emojiMessagePayload.md5
67
+ }" type="${emojiMessagePayload.type}"/>${emojiMessagePayload.gameext || ''}</msg>`
68
+ }
@@ -0,0 +1,46 @@
1
+ import { MessagePayload } from '../../engine-schema.js'
2
+ import { xmlToJson } from '../utils/xml-to-json.js'
3
+
4
+ export interface ImageXmlSchema {
5
+ msg: {
6
+ img: {
7
+ $: {
8
+ aeskey: string
9
+ encryver: string
10
+ cdnthumbaeskey: string
11
+ cdnthumburl: string
12
+ cdnthumblength: string
13
+ cdnthumbheight: string
14
+ cdnthumbwidth: string
15
+ cdnmidheight: string
16
+ cdnmidwidth: string
17
+ cdnhdheight: string
18
+ cdnhdwidth: string
19
+ cdnmidimgurl: string
20
+ length: string
21
+ cdnbigimgurl: string
22
+ hdlength: string
23
+ md5: string
24
+ }
25
+ }
26
+ }
27
+ }
28
+
29
+ export interface ImageMessagePayload {
30
+ aes_key: string,
31
+ file_id: string,
32
+ file_size: string,
33
+ file_name: string,
34
+ }
35
+
36
+ export async function parseImageMessagePayload (rawPayload: MessagePayload): Promise<ImageMessagePayload> {
37
+ const imageXml: ImageXmlSchema = await xmlToJson(rawPayload.msg)
38
+ const schema = imageXml.msg.img.$
39
+
40
+ return {
41
+ aes_key: schema.aeskey,
42
+ file_id: schema.cdnmidimgurl,
43
+ file_size: schema.length,
44
+ file_name: '',
45
+ }
46
+ }
@@ -0,0 +1,45 @@
1
+ import type * as PUPPET from '@juzi/wechaty-puppet'
2
+ import type { MessagePayload } from '../../engine-schema.js'
3
+ import { xmlToJson } from '../utils/xml-to-json.js'
4
+
5
+ interface MiniProgramXmlSchema {
6
+ msg: {
7
+ appmsg: {
8
+ title: string;
9
+ sourcedisplayname: string;
10
+ appattach: {
11
+ cdnthumbaeskey: string;
12
+ cdnthumburl: string;
13
+ };
14
+ weappinfo: {
15
+ username: string;
16
+ appid: string;
17
+ pagepath: string;
18
+ weappiconurl: string;
19
+ shareId: string;
20
+ };
21
+ thumburl: string;
22
+ md5: any;
23
+ };
24
+ fromusername: string;
25
+ };
26
+ }
27
+
28
+ export async function parseMiniProgramMessagePayload (rawPayload: MessagePayload): Promise<PUPPET.payloads.MiniProgram> {
29
+ const miniProgramXml: MiniProgramXmlSchema = await xmlToJson(rawPayload.msg)
30
+ const appmsg = miniProgramXml.msg.appmsg
31
+ const weappinfo = appmsg.weappinfo
32
+ const appattach = appmsg.appattach
33
+
34
+ return {
35
+ appid: weappinfo.appid,
36
+ description: appmsg.sourcedisplayname,
37
+ iconUrl: weappinfo.weappiconurl,
38
+ pagePath: weappinfo.pagepath,
39
+ shareId: weappinfo.shareId,
40
+ thumbKey: appattach.cdnthumbaeskey,
41
+ thumbUrl: appattach.cdnthumburl,
42
+ title: appmsg.title,
43
+ username: weappinfo.username,
44
+ }
45
+ }
@@ -0,0 +1,106 @@
1
+ import type { MessagePayload } from '../../engine-schema.js'
2
+ import { WechatMessageType } from '../types.js'
3
+ import { xmlToJson } from '../utils/xml-to-json.js'
4
+ import type { PatMessagePayload, PatXmlSchema } from './sysmsg/message-pat.js'
5
+ import type { SysmsgTemplateMessagePayload, SysmsgTemplateXmlSchema } from './sysmsg/message-sysmsgtemplate.js'
6
+ import { parsePatMessagePayload } from './sysmsg/message-pat.js'
7
+ import { parseSysmsgTemplateMessagePayload } from './sysmsg/message-sysmsgtemplate.js'
8
+ import type { TodoMessagePayload, TodoXmlSchema } from './sysmsg/message-todo.js'
9
+ import { parseTodoMessagePayload } from './sysmsg/message-todo.js'
10
+ import type { RevokeMsgMessagePayload, RevokeMsgXmlSchema } from './sysmsg/message-revokemsg.js'
11
+ import { parseRevokeMsgMessagePayload } from './sysmsg/message-revokemsg.js'
12
+
13
+ interface SysmsgXmlSchema {
14
+ sysmsg: {
15
+ $: {
16
+ type: string;
17
+ },
18
+ pat?: PatXmlSchema,
19
+ sysmsgtemplate?: SysmsgTemplateXmlSchema,
20
+ todo?: TodoXmlSchema,
21
+ revokemsg?: RevokeMsgXmlSchema,
22
+ };
23
+ }
24
+
25
+ type SysMsgType = 'pat' | 'sysmsgtemplate' | 'roomtoolstips' | 'revokemsg';
26
+ type SysMsgPayload = PatMessagePayload | SysmsgTemplateMessagePayload | TodoMessagePayload | RevokeMsgMessagePayload;
27
+
28
+ export interface SysmsgMessagePayload {
29
+ type: SysMsgType;
30
+ payload: SysMsgPayload
31
+ }
32
+
33
+ export async function parseSysmsgMessagePayload (message: MessagePayload): Promise<SysmsgMessagePayload | null> {
34
+ if (message.msgType !== WechatMessageType.Sys) {
35
+ return null
36
+ }
37
+
38
+ const content = message.msg.trim()
39
+ const sysmsgIndex = content.indexOf('<sysmsg')
40
+ if (sysmsgIndex === -1) {
41
+ return null
42
+ }
43
+
44
+ const sysmsgXml: SysmsgXmlSchema = await xmlToJson(content.substring(sysmsgIndex))
45
+
46
+ let payload : SysMsgPayload | undefined
47
+ switch (sysmsgXml.sysmsg.$.type) {
48
+ case 'pat':
49
+ payload = await parsePatMessagePayload(sysmsgXml.sysmsg.pat!)
50
+ break
51
+ case 'sysmsgtemplate':
52
+ payload = await parseSysmsgTemplateMessagePayload(sysmsgXml.sysmsg.sysmsgtemplate!)
53
+ break
54
+ case 'roomtoolstips':
55
+ payload = await parseTodoMessagePayload(sysmsgXml.sysmsg.todo!)
56
+ break
57
+ case 'revokemsg':
58
+ payload = await parseRevokeMsgMessagePayload(sysmsgXml.sysmsg.revokemsg!)
59
+ break
60
+ }
61
+
62
+ if (payload) {
63
+ return {
64
+ payload,
65
+ type: sysmsgXml.sysmsg.$.type as SysMsgType,
66
+ }
67
+ } else {
68
+ return null
69
+ }
70
+ }
71
+
72
+ export async function parseSysmsgPatMessagePayload (message: MessagePayload) : Promise<PatMessagePayload | null> {
73
+ const sysmsgPayload = await parseSysmsgMessagePayload(message)
74
+ if (!sysmsgPayload || sysmsgPayload.type !== 'pat') {
75
+ return null
76
+ }
77
+
78
+ return sysmsgPayload.payload as PatMessagePayload
79
+ }
80
+
81
+ export async function parseSysmsgSysmsgTemplateMessagePayload (message: MessagePayload) : Promise<SysmsgTemplateMessagePayload | null> {
82
+ const sysmsgPayload = await parseSysmsgMessagePayload(message)
83
+ if (!sysmsgPayload || sysmsgPayload.type !== 'sysmsgtemplate') {
84
+ return null
85
+ }
86
+
87
+ return sysmsgPayload.payload as SysmsgTemplateMessagePayload
88
+ }
89
+
90
+ export async function parseSysmsgTodoMessagePayload (message: MessagePayload) : Promise<TodoMessagePayload | null> {
91
+ const sysmsgPayload = await parseSysmsgMessagePayload(message)
92
+ if (!sysmsgPayload || sysmsgPayload.type !== 'roomtoolstips') {
93
+ return null
94
+ }
95
+
96
+ return sysmsgPayload.payload as TodoMessagePayload
97
+ }
98
+
99
+ export async function parseSysmsgRevokeMsgMessagePayload (message: MessagePayload) : Promise<RevokeMsgMessagePayload | null> {
100
+ const sysmsgPayload = await parseSysmsgMessagePayload(message)
101
+ if (!sysmsgPayload || sysmsgPayload.type !== 'revokemsg') {
102
+ return null
103
+ }
104
+
105
+ return sysmsgPayload.payload as RevokeMsgMessagePayload
106
+ }
@@ -0,0 +1,62 @@
1
+ import { MessagePayload } from '../../engine-schema.js'
2
+ import { xmlToJson } from '../utils/xml-to-json.js'
3
+
4
+ export interface VideoXmlSchema {
5
+ msg: {
6
+ videomsg: {
7
+ $: {
8
+ aeskey: string
9
+ cdnvideourl: string
10
+ cdnthumbaeskey: string
11
+ cdnthumburl: string
12
+ length: string
13
+ playlength: string
14
+ cdnthumblength: string
15
+ cdnthumbwidth: string
16
+ cdnthumbheight: string
17
+ fromusername: string
18
+ md5: string
19
+ newmd5: string
20
+ isplaceholder: string
21
+ rawmd5: string
22
+ rawlength: string
23
+ cdnrawvideourl: string
24
+ cdnrawvideoaeskey: string
25
+ overwritenewmsgid: string
26
+ originsourcemd5: string
27
+ isad: string
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ export interface VideoMessagePayload {
34
+ aes_key: string,
35
+ file_id: string,
36
+ file_size: string,
37
+ play_length: string,
38
+ thumb_aes_key: string,
39
+ thumb_url: string,
40
+ thumb_size: string,
41
+ thumb_width: string,
42
+ thumb_height: string,
43
+ file_name: ''
44
+ }
45
+
46
+ export async function parseVideoMessagePayload (rawPayload: MessagePayload): Promise<VideoMessagePayload> {
47
+ const videoXml: VideoXmlSchema = await xmlToJson(rawPayload.msg)
48
+ const videoSchema = videoXml.msg.videomsg.$
49
+
50
+ return {
51
+ aes_key: videoSchema.aeskey,
52
+ file_id: videoSchema.cdnvideourl,
53
+ file_size: videoSchema.length,
54
+ play_length: videoSchema.playlength,
55
+ thumb_aes_key: videoSchema.cdnthumbaeskey,
56
+ thumb_url: videoSchema.cdnthumburl,
57
+ thumb_size: videoSchema.cdnthumblength,
58
+ thumb_width: videoSchema.cdnthumbwidth,
59
+ thumb_height: videoSchema.cdnthumbheight,
60
+ file_name: '',
61
+ }
62
+ }
@@ -0,0 +1,22 @@
1
+ export interface PatXmlSchema {
2
+ fromusername: string;
3
+ chatusername: string;
4
+ pattedusername: string;
5
+ template: string;
6
+ }
7
+
8
+ export interface PatMessagePayload {
9
+ fromUserName: string;
10
+ chatUserName: string;
11
+ pattedUserName: string;
12
+ template: string;
13
+ }
14
+
15
+ export async function parsePatMessagePayload (patXml: PatXmlSchema): Promise<PatMessagePayload> {
16
+ return {
17
+ chatUserName: patXml.chatusername,
18
+ fromUserName: patXml.fromusername,
19
+ pattedUserName: patXml.pattedusername,
20
+ template: patXml.template,
21
+ }
22
+ }
@@ -0,0 +1,70 @@
1
+ import { parseTextWithRegexList } from '../../utils/regex.js'
2
+ import { executeRunners } from '../../utils/runner.js'
3
+ import type * as PUPPET from '@juzi/wechaty-puppet'
4
+ import { isIMRoomId, isRoomId } from '../../utils/is-type.js'
5
+
6
+ export interface RevokeMsgXmlSchema {
7
+ session: string;
8
+ msgid: string;
9
+ newmsgid: string;
10
+ replacemsg: string;
11
+ }
12
+
13
+ export type RevokeMsgType = 'You' | 'Other';
14
+
15
+ export interface RevokeMsgMessagePayload {
16
+ content: string;
17
+ operatorNickName?: string,
18
+ originalMessageId: string;
19
+ session: string;
20
+ type: RevokeMsgType;
21
+ }
22
+
23
+ const YOU_REVOKE_REGEX_LIST = [
24
+ /你撤回了一条消息/,
25
+ /You recalled a message/,
26
+ ]
27
+ const OTHER_REVOKE_REGEX_LIST = [
28
+ /"(.+)" 撤回了一条消息/,
29
+ /"(.+)" has recalled a message./,
30
+ ]
31
+
32
+ export async function parseRevokeMsgMessagePayload (revokeMsgXmlSchema: RevokeMsgXmlSchema): Promise<RevokeMsgMessagePayload> {
33
+ let nickName: string | undefined
34
+
35
+ const youRevoke = async () => parseTextWithRegexList<RevokeMsgType>(revokeMsgXmlSchema.replacemsg, YOU_REVOKE_REGEX_LIST, async () => 'You')
36
+ const otherRevoke = async () => parseTextWithRegexList<RevokeMsgType>(revokeMsgXmlSchema.replacemsg, OTHER_REVOKE_REGEX_LIST, async (_, match) => {
37
+ nickName = match[1]
38
+ return 'Other'
39
+ })
40
+
41
+ const type = (await executeRunners<RevokeMsgType>([ youRevoke, otherRevoke ]))!
42
+
43
+ return {
44
+ content: revokeMsgXmlSchema.replacemsg,
45
+ operatorNickName: nickName,
46
+ originalMessageId: revokeMsgXmlSchema.newmsgid,
47
+ session: revokeMsgXmlSchema.session,
48
+ type,
49
+ }
50
+ }
51
+
52
+ export async function getRevokeOriginalMessage (puppet: PUPPET.Puppet, revokemsgPayload:RevokeMsgMessagePayload): Promise<PUPPET.payloads.Message | null> {
53
+ const messageIdList = await puppet.messageSearch({ id: revokemsgPayload.originalMessageId })
54
+ if (messageIdList.length) {
55
+ return puppet.messagePayload(messageIdList[0]!)
56
+ }
57
+
58
+ return null
59
+ }
60
+
61
+ export async function getRevokeOperatorIdForRoomMessage (puppet: PUPPET.Puppet, revokemsgPayload:RevokeMsgMessagePayload) : Promise<string | null> {
62
+ if (isRoomId(revokemsgPayload.session) || isIMRoomId(revokemsgPayload.session)) {
63
+ const contactIdList = await puppet.roomMemberSearch(revokemsgPayload.session, revokemsgPayload.operatorNickName!)
64
+ if (contactIdList.length) {
65
+ return contactIdList[0]!
66
+ }
67
+ }
68
+
69
+ return null
70
+ }
@@ -0,0 +1,133 @@
1
+ /* eslint-disable camelcase */
2
+ import { parseTextWithRegexList } from '../../utils/regex.js'
3
+ import type { Runner } from '../../utils/runner.js'
4
+
5
+ export interface SysmsgTemplateXmlSchema {
6
+ content_template: {
7
+ $: {
8
+ type: string;
9
+ };
10
+ plain: string;
11
+ template: string;
12
+ link_list: {
13
+ link: [
14
+ {
15
+ $: {
16
+ name: string;
17
+ type: string;
18
+ hidden?: string;
19
+ };
20
+ memberlist?: {
21
+ member: [
22
+ {
23
+ username?: string;
24
+ nickname: string;
25
+ }
26
+ ];
27
+ };
28
+ separator?: string;
29
+ title?: string;
30
+ usernamelist?: {
31
+ username: string[];
32
+ };
33
+ }
34
+ ];
35
+ };
36
+ };
37
+ }
38
+
39
+ export interface SysmsgTemplateLinkMember {
40
+ userName?: string,
41
+ nickName: string,
42
+ }
43
+
44
+ export type SysmsgTemplateLinkProfile = Array<SysmsgTemplateLinkMember>;
45
+
46
+ export interface SysmsgTemplateLinkRevoke {
47
+ title: string,
48
+ userNameList: string[],
49
+ }
50
+
51
+ export type SysmsgTemplateLinkType = 'link_profile' | 'link_revoke';
52
+
53
+ export type SysmsgTemplateLinkPayload = SysmsgTemplateLinkProfile | SysmsgTemplateLinkRevoke;
54
+
55
+ export interface SysmsgTemplateLink {
56
+ name: string,
57
+ payload: SysmsgTemplateLinkPayload,
58
+ type: SysmsgTemplateLinkType,
59
+ }
60
+
61
+ export interface SysmsgTemplateMessagePayload {
62
+ template: string;
63
+ templateLinkList: Array<SysmsgTemplateLink>; // link list is sorted by template variable name order
64
+ }
65
+
66
+ /**
67
+ * xmlToJson will return element instead of array if xml node only contains one child.
68
+ * @param list
69
+ */
70
+ function toList (list: any): any[] {
71
+ if (!Array.isArray(list)) {
72
+ return [ list ]
73
+ } else {
74
+ return list
75
+ }
76
+ }
77
+
78
+ export async function parseSysmsgTemplateMessagePayload (sysmsgTemplateXml: SysmsgTemplateXmlSchema): Promise<SysmsgTemplateMessagePayload> {
79
+ const linkList = toList(sysmsgTemplateXml.content_template.link_list.link)
80
+
81
+ const allLinkList = linkList.map((link): SysmsgTemplateLink => {
82
+ const type = link.$.type as SysmsgTemplateLinkType
83
+ let payload: SysmsgTemplateLinkPayload | undefined
84
+
85
+ if (type === 'link_profile') {
86
+ const memberList = toList(link.memberlist!.member)
87
+ payload = memberList.map((member: { nickname: string; username?: string; }): SysmsgTemplateLinkMember => {
88
+ return {
89
+ nickName: member.nickname,
90
+ userName: member.username,
91
+ }
92
+ })
93
+ } else if (link.$.type === 'link_revoke') {
94
+ payload = {
95
+ title: link.title!,
96
+ userNameList: toList(link.usernamelist!.username),
97
+ }
98
+ } else {
99
+ // handle more link type here
100
+ }
101
+
102
+ return {
103
+ name: link.$.name,
104
+ payload: payload!,
105
+ type,
106
+ }
107
+ })
108
+
109
+ const template = sysmsgTemplateXml.content_template.template
110
+ const matches = [ ...template.matchAll(/\$(.+?)\$/g) ]
111
+
112
+ const templateLinkList = matches.map(match => {
113
+ const linkName = match[1]
114
+ return allLinkList.filter((link) => link.name === linkName)[0]!
115
+ })
116
+
117
+ return {
118
+ template,
119
+ templateLinkList,
120
+ }
121
+ }
122
+
123
+ export type SysmsgTemplateHandler<T> = (templateLinkList: SysmsgTemplateLink[], matchedRegexIndex: number) => Promise<T>;
124
+
125
+ export async function parseSysmsgTemplate<T> (sysmsgTemplatePayload: SysmsgTemplateMessagePayload, regexList: RegExp[], handler: SysmsgTemplateHandler<T>) : Promise<T | null> {
126
+ return parseTextWithRegexList(sysmsgTemplatePayload.template, regexList, async (matchedRegexIndex) => {
127
+ return handler(sysmsgTemplatePayload.templateLinkList, matchedRegexIndex)
128
+ })
129
+ }
130
+
131
+ export function createSysmsgTemplateRunner<T> (sysmsgTemplatePayload: SysmsgTemplateMessagePayload, regexList: RegExp[], handler: SysmsgTemplateHandler<T>): Runner<T> {
132
+ return async () => parseSysmsgTemplate<T>(sysmsgTemplatePayload, regexList, handler)
133
+ }
@@ -0,0 +1,45 @@
1
+ /* eslint-disable camelcase */
2
+ export interface TodoXmlSchema {
3
+ op: string;
4
+ todoid: string;
5
+ username: string;
6
+ path: string;
7
+ time: number;
8
+ custominfo: string;
9
+ title: string;
10
+ creator: string;
11
+ related_msgid: string;
12
+ manager: string;
13
+ nreply: number;
14
+ scene: string;
15
+ oper: string;
16
+ sharekey: string;
17
+ sharename: string;
18
+ template?: string;
19
+ }
20
+
21
+ export interface TodoMessagePayload {
22
+ id: string;
23
+ creatorUserName: string;
24
+ operatorUserName: string;
25
+ numberOfReply: number;
26
+ appId: string;
27
+ path: string;
28
+ relatedMessageId: string;
29
+ title: string;
30
+ template?: string;
31
+ }
32
+
33
+ export async function parseTodoMessagePayload (todoXml: TodoXmlSchema): Promise<TodoMessagePayload> {
34
+ return {
35
+ appId: todoXml.username,
36
+ creatorUserName: todoXml.creator,
37
+ id: todoXml.todoid,
38
+ numberOfReply: todoXml.nreply,
39
+ operatorUserName: todoXml.oper,
40
+ path: todoXml.path,
41
+ relatedMessageId: todoXml.related_msgid,
42
+ template: todoXml.template,
43
+ title: todoXml.title,
44
+ }
45
+ }
@@ -0,0 +1,37 @@
1
+ import * as PUPPET from '@juzi/wechaty-puppet'
2
+ import { isContactOfficialId } from '../utils/is-type.js'
3
+ import type { ContactPayload } from '../../engine-schema.js'
4
+
5
+ export function engineContactToWechaty (contact?: ContactPayload): PUPPET.payloads.Contact {
6
+ if (contact) {
7
+ return {
8
+ alias: contact.remark, // 备注
9
+ avatar: contact.avatar, // 头像
10
+ city: contact.city, // 城市
11
+ gender: contact.sex, // 性别
12
+ id: contact.wxid, // wxid
13
+ name: contact.name, // 昵称
14
+ friend: !!contact.isFriend, // 是否是好友
15
+ phone: [],
16
+ province: contact.province,
17
+ signature: contact.sign, // 签名
18
+ type: isContactOfficialId(contact.wxid) ? PUPPET.types.Contact.Official : PUPPET.types.Contact.Individual,
19
+ weixin: contact.wxNum,
20
+ }
21
+ } else {
22
+ return {
23
+ alias: '', // 备注
24
+ avatar: '', // 头像
25
+ city: '', // 城市
26
+ gender: 0, // 性别
27
+ id: '', // wxid
28
+ name: '', // 昵称
29
+ friend: false, // 是否是好友
30
+ phone: [],
31
+ province: '',
32
+ signature: '', // 签名
33
+ type: PUPPET.types.Contact.Individual,
34
+ weixin: '',
35
+ }
36
+ }
37
+ }