@juzi/wechaty-puppet-whatsapp 1.0.0

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 (479) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +83 -0
  3. package/dist/cjs/examples/ding-dong-bot.d.ts +2 -0
  4. package/dist/cjs/examples/ding-dong-bot.d.ts.map +1 -0
  5. package/dist/cjs/examples/ding-dong-bot.js +98 -0
  6. package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
  7. package/dist/cjs/package.json +1 -0
  8. package/dist/cjs/src/config.d.ts +41 -0
  9. package/dist/cjs/src/config.d.ts.map +1 -0
  10. package/dist/cjs/src/config.js +58 -0
  11. package/dist/cjs/src/config.js.map +1 -0
  12. package/dist/cjs/src/data/cache-manager.d.ts +83 -0
  13. package/dist/cjs/src/data/cache-manager.d.ts.map +1 -0
  14. package/dist/cjs/src/data/cache-manager.js +303 -0
  15. package/dist/cjs/src/data/cache-manager.js.map +1 -0
  16. package/dist/cjs/src/data/cache-manager.spec.d.ts +2 -0
  17. package/dist/cjs/src/data/cache-manager.spec.d.ts.map +1 -0
  18. package/dist/cjs/src/data/cache-manager.spec.js +32 -0
  19. package/dist/cjs/src/data/cache-manager.spec.js.map +1 -0
  20. package/dist/cjs/src/exception/error-type.d.ts +80 -0
  21. package/dist/cjs/src/exception/error-type.d.ts.map +1 -0
  22. package/dist/cjs/src/exception/error-type.js +61 -0
  23. package/dist/cjs/src/exception/error-type.js.map +1 -0
  24. package/dist/cjs/src/exception/whatsapp-error.d.ts +4 -0
  25. package/dist/cjs/src/exception/whatsapp-error.d.ts.map +1 -0
  26. package/dist/cjs/src/exception/whatsapp-error.js +14 -0
  27. package/dist/cjs/src/exception/whatsapp-error.js.map +1 -0
  28. package/dist/cjs/src/exception/whatsapp-error.spec.d.ts +3 -0
  29. package/dist/cjs/src/exception/whatsapp-error.spec.d.ts.map +1 -0
  30. package/dist/cjs/src/exception/whatsapp-error.spec.js +27 -0
  31. package/dist/cjs/src/exception/whatsapp-error.spec.js.map +1 -0
  32. package/dist/cjs/src/helper/index.d.ts +2 -0
  33. package/dist/cjs/src/helper/index.d.ts.map +1 -0
  34. package/dist/cjs/src/helper/index.js +3 -0
  35. package/dist/cjs/src/helper/index.js.map +1 -0
  36. package/dist/cjs/src/helper/miscellaneous.d.ts +8 -0
  37. package/dist/cjs/src/helper/miscellaneous.d.ts.map +1 -0
  38. package/dist/cjs/src/helper/miscellaneous.js +48 -0
  39. package/dist/cjs/src/helper/miscellaneous.js.map +1 -0
  40. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.d.ts +4 -0
  41. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.d.ts.map +1 -0
  42. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.js +62 -0
  43. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.js.map +1 -0
  44. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts +2 -0
  45. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts.map +1 -0
  46. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.js +86 -0
  47. package/dist/cjs/src/helper/pure-function/contact-raw-payload-parser.spec.js.map +1 -0
  48. package/dist/cjs/src/helper/pure-function/convert-function.d.ts +4 -0
  49. package/dist/cjs/src/helper/pure-function/convert-function.d.ts.map +1 -0
  50. package/dist/cjs/src/helper/pure-function/convert-function.js +17 -0
  51. package/dist/cjs/src/helper/pure-function/convert-function.js.map +1 -0
  52. package/dist/cjs/src/helper/pure-function/index.d.ts +5 -0
  53. package/dist/cjs/src/helper/pure-function/index.d.ts.map +1 -0
  54. package/dist/cjs/src/helper/pure-function/index.js +21 -0
  55. package/dist/cjs/src/helper/pure-function/index.js.map +1 -0
  56. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.d.ts +4 -0
  57. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.d.ts.map +1 -0
  58. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.js +136 -0
  59. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.js.map +1 -0
  60. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.d.ts +2 -0
  61. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.d.ts.map +1 -0
  62. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.js +229 -0
  63. package/dist/cjs/src/helper/pure-function/message-raw-payload-parser.spec.js.map +1 -0
  64. package/dist/cjs/src/helper/pure-function/room-event-generator.d.ts +28 -0
  65. package/dist/cjs/src/helper/pure-function/room-event-generator.d.ts.map +1 -0
  66. package/dist/cjs/src/helper/pure-function/room-event-generator.js +59 -0
  67. package/dist/cjs/src/helper/pure-function/room-event-generator.js.map +1 -0
  68. package/dist/cjs/src/helper/pure-function/room-event-generator.spec.d.ts +2 -0
  69. package/dist/cjs/src/helper/pure-function/room-event-generator.spec.d.ts.map +1 -0
  70. package/dist/cjs/src/helper/pure-function/room-event-generator.spec.js +101 -0
  71. package/dist/cjs/src/helper/pure-function/room-event-generator.spec.js.map +1 -0
  72. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.d.ts +4 -0
  73. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.d.ts.map +1 -0
  74. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.js +24 -0
  75. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.js.map +1 -0
  76. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.d.ts +2 -0
  77. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.d.ts.map +1 -0
  78. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.js +68 -0
  79. package/dist/cjs/src/helper/pure-function/room-raw-payload-parser.spec.js.map +1 -0
  80. package/dist/cjs/src/helper/pure-function/vcard-parser.d.ts +28 -0
  81. package/dist/cjs/src/helper/pure-function/vcard-parser.d.ts.map +1 -0
  82. package/dist/cjs/src/helper/pure-function/vcard-parser.js +109 -0
  83. package/dist/cjs/src/helper/pure-function/vcard-parser.js.map +1 -0
  84. package/dist/cjs/src/helper/schedule/schedule-manager.d.ts +19 -0
  85. package/dist/cjs/src/helper/schedule/schedule-manager.d.ts.map +1 -0
  86. package/dist/cjs/src/helper/schedule/schedule-manager.js +49 -0
  87. package/dist/cjs/src/helper/schedule/schedule-manager.js.map +1 -0
  88. package/dist/cjs/src/helper/schedule/schedule-manager.spec.d.ts +2 -0
  89. package/dist/cjs/src/helper/schedule/schedule-manager.spec.d.ts.map +1 -0
  90. package/dist/cjs/src/helper/schedule/schedule-manager.spec.js +45 -0
  91. package/dist/cjs/src/helper/schedule/schedule-manager.spec.js.map +1 -0
  92. package/dist/cjs/src/manager-event.d.ts +18 -0
  93. package/dist/cjs/src/manager-event.d.ts.map +1 -0
  94. package/dist/cjs/src/manager-event.js +3 -0
  95. package/dist/cjs/src/manager-event.js.map +1 -0
  96. package/dist/cjs/src/manager.d.ts +67 -0
  97. package/dist/cjs/src/manager.d.ts.map +1 -0
  98. package/dist/cjs/src/manager.js +270 -0
  99. package/dist/cjs/src/manager.js.map +1 -0
  100. package/dist/cjs/src/manager.spec.d.ts +3 -0
  101. package/dist/cjs/src/manager.spec.d.ts.map +1 -0
  102. package/dist/cjs/src/manager.spec.js +38 -0
  103. package/dist/cjs/src/manager.spec.js.map +1 -0
  104. package/dist/cjs/src/mod.d.ts +5 -0
  105. package/dist/cjs/src/mod.d.ts.map +1 -0
  106. package/dist/cjs/src/mod.js +9 -0
  107. package/dist/cjs/src/mod.js.map +1 -0
  108. package/dist/cjs/src/package-json.d.ts +6 -0
  109. package/dist/cjs/src/package-json.d.ts.map +1 -0
  110. package/dist/cjs/src/package-json.js +93 -0
  111. package/dist/cjs/src/package-json.js.map +1 -0
  112. package/dist/cjs/src/package-json.spec.d.ts +3 -0
  113. package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
  114. package/dist/cjs/src/package-json.spec.js +10 -0
  115. package/dist/cjs/src/package-json.spec.js.map +1 -0
  116. package/dist/cjs/src/puppet-mixin/contact-self.d.ts +5 -0
  117. package/dist/cjs/src/puppet-mixin/contact-self.d.ts.map +1 -0
  118. package/dist/cjs/src/puppet-mixin/contact-self.js +45 -0
  119. package/dist/cjs/src/puppet-mixin/contact-self.js.map +1 -0
  120. package/dist/cjs/src/puppet-mixin/contact.d.ts +16 -0
  121. package/dist/cjs/src/puppet-mixin/contact.d.ts.map +1 -0
  122. package/dist/cjs/src/puppet-mixin/contact.js +124 -0
  123. package/dist/cjs/src/puppet-mixin/contact.js.map +1 -0
  124. package/dist/cjs/src/puppet-mixin/conversation.d.ts +2 -0
  125. package/dist/cjs/src/puppet-mixin/conversation.d.ts.map +1 -0
  126. package/dist/cjs/src/puppet-mixin/conversation.js +35 -0
  127. package/dist/cjs/src/puppet-mixin/conversation.js.map +1 -0
  128. package/dist/cjs/src/puppet-mixin/friendship.d.ts +12 -0
  129. package/dist/cjs/src/puppet-mixin/friendship.d.ts.map +1 -0
  130. package/dist/cjs/src/puppet-mixin/friendship.js +99 -0
  131. package/dist/cjs/src/puppet-mixin/friendship.js.map +1 -0
  132. package/dist/cjs/src/puppet-mixin/message.d.ts +57 -0
  133. package/dist/cjs/src/puppet-mixin/message.d.ts.map +1 -0
  134. package/dist/cjs/src/puppet-mixin/message.js +327 -0
  135. package/dist/cjs/src/puppet-mixin/message.js.map +1 -0
  136. package/dist/cjs/src/puppet-mixin/room.d.ts +42 -0
  137. package/dist/cjs/src/puppet-mixin/room.d.ts.map +1 -0
  138. package/dist/cjs/src/puppet-mixin/room.js +319 -0
  139. package/dist/cjs/src/puppet-mixin/room.js.map +1 -0
  140. package/dist/cjs/src/puppet-mixin/tag.d.ts +5 -0
  141. package/dist/cjs/src/puppet-mixin/tag.d.ts.map +1 -0
  142. package/dist/cjs/src/puppet-mixin/tag.js +50 -0
  143. package/dist/cjs/src/puppet-mixin/tag.js.map +1 -0
  144. package/dist/cjs/src/puppet-whatsapp.d.ts +145 -0
  145. package/dist/cjs/src/puppet-whatsapp.d.ts.map +1 -0
  146. package/dist/cjs/src/puppet-whatsapp.js +309 -0
  147. package/dist/cjs/src/puppet-whatsapp.js.map +1 -0
  148. package/dist/cjs/src/puppet-whatsapp.spec.d.ts +3 -0
  149. package/dist/cjs/src/puppet-whatsapp.spec.d.ts.map +1 -0
  150. package/dist/cjs/src/puppet-whatsapp.spec.js +25 -0
  151. package/dist/cjs/src/puppet-whatsapp.spec.js.map +1 -0
  152. package/dist/cjs/src/request/rate-manager.d.ts +21 -0
  153. package/dist/cjs/src/request/rate-manager.d.ts.map +1 -0
  154. package/dist/cjs/src/request/rate-manager.js +92 -0
  155. package/dist/cjs/src/request/rate-manager.js.map +1 -0
  156. package/dist/cjs/src/request/request-manager.d.ts +54 -0
  157. package/dist/cjs/src/request/request-manager.d.ts.map +1 -0
  158. package/dist/cjs/src/request/request-manager.js +128 -0
  159. package/dist/cjs/src/request/request-manager.js.map +1 -0
  160. package/dist/cjs/src/request/request-pool.d.ts +10 -0
  161. package/dist/cjs/src/request/request-pool.d.ts.map +1 -0
  162. package/dist/cjs/src/request/request-pool.js +47 -0
  163. package/dist/cjs/src/request/request-pool.js.map +1 -0
  164. package/dist/cjs/src/request/request-pool.spec.d.ts +2 -0
  165. package/dist/cjs/src/request/request-pool.spec.d.ts.map +1 -0
  166. package/dist/cjs/src/request/request-pool.spec.js +36 -0
  167. package/dist/cjs/src/request/request-pool.spec.js.map +1 -0
  168. package/dist/cjs/src/schema/event-name.d.ts +9 -0
  169. package/dist/cjs/src/schema/event-name.d.ts.map +1 -0
  170. package/dist/cjs/src/schema/event-name.js +13 -0
  171. package/dist/cjs/src/schema/event-name.js.map +1 -0
  172. package/dist/cjs/src/schema/index.d.ts +2 -0
  173. package/dist/cjs/src/schema/index.d.ts.map +1 -0
  174. package/dist/cjs/src/schema/index.js +18 -0
  175. package/dist/cjs/src/schema/index.js.map +1 -0
  176. package/dist/cjs/src/schema/whatsapp-interface.d.ts +18 -0
  177. package/dist/cjs/src/schema/whatsapp-interface.d.ts.map +1 -0
  178. package/dist/cjs/src/schema/whatsapp-interface.js +26 -0
  179. package/dist/cjs/src/schema/whatsapp-interface.js.map +1 -0
  180. package/dist/cjs/src/schema/whatsapp-type.d.ts +42 -0
  181. package/dist/cjs/src/schema/whatsapp-type.d.ts.map +1 -0
  182. package/dist/cjs/src/schema/whatsapp-type.js +3 -0
  183. package/dist/cjs/src/schema/whatsapp-type.js.map +1 -0
  184. package/dist/cjs/src/whatsapp/event-handler/group-event-handler.d.ts +8 -0
  185. package/dist/cjs/src/whatsapp/event-handler/group-event-handler.d.ts.map +1 -0
  186. package/dist/cjs/src/whatsapp/event-handler/group-event-handler.js +84 -0
  187. package/dist/cjs/src/whatsapp/event-handler/group-event-handler.js.map +1 -0
  188. package/dist/cjs/src/whatsapp/event-handler/login-event-handler.d.ts +24 -0
  189. package/dist/cjs/src/whatsapp/event-handler/login-event-handler.d.ts.map +1 -0
  190. package/dist/cjs/src/whatsapp/event-handler/login-event-handler.js +203 -0
  191. package/dist/cjs/src/whatsapp/event-handler/login-event-handler.js.map +1 -0
  192. package/dist/cjs/src/whatsapp/event-handler/message-event-handler.d.ts +35 -0
  193. package/dist/cjs/src/whatsapp/event-handler/message-event-handler.d.ts.map +1 -0
  194. package/dist/cjs/src/whatsapp/event-handler/message-event-handler.js +203 -0
  195. package/dist/cjs/src/whatsapp/event-handler/message-event-handler.js.map +1 -0
  196. package/dist/cjs/src/whatsapp/whatsapp-base.d.ts +26 -0
  197. package/dist/cjs/src/whatsapp/whatsapp-base.d.ts.map +1 -0
  198. package/dist/cjs/src/whatsapp/whatsapp-base.js +69 -0
  199. package/dist/cjs/src/whatsapp/whatsapp-base.js.map +1 -0
  200. package/dist/cjs/src/whatsapp/whatsapp-manager.d.ts +16 -0
  201. package/dist/cjs/src/whatsapp/whatsapp-manager.d.ts.map +1 -0
  202. package/dist/cjs/src/whatsapp/whatsapp-manager.js +134 -0
  203. package/dist/cjs/src/whatsapp/whatsapp-manager.js.map +1 -0
  204. package/dist/cjs/tests/integration.spec.d.ts +3 -0
  205. package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
  206. package/dist/cjs/tests/integration.spec.js +8 -0
  207. package/dist/cjs/tests/integration.spec.js.map +1 -0
  208. package/dist/cjs/tests/memory-card.spec.d.ts +2 -0
  209. package/dist/cjs/tests/memory-card.spec.d.ts.map +1 -0
  210. package/dist/cjs/tests/memory-card.spec.js +25 -0
  211. package/dist/cjs/tests/memory-card.spec.js.map +1 -0
  212. package/dist/cjs/tests/qrcode.spec.d.ts +2 -0
  213. package/dist/cjs/tests/qrcode.spec.d.ts.map +1 -0
  214. package/dist/cjs/tests/qrcode.spec.js +51 -0
  215. package/dist/cjs/tests/qrcode.spec.js.map +1 -0
  216. package/dist/esm/examples/ding-dong-bot.d.ts +2 -0
  217. package/dist/esm/examples/ding-dong-bot.d.ts.map +1 -0
  218. package/dist/esm/examples/ding-dong-bot.js +93 -0
  219. package/dist/esm/examples/ding-dong-bot.js.map +1 -0
  220. package/dist/esm/src/config.d.ts +41 -0
  221. package/dist/esm/src/config.d.ts.map +1 -0
  222. package/dist/esm/src/config.js +50 -0
  223. package/dist/esm/src/config.js.map +1 -0
  224. package/dist/esm/src/data/cache-manager.d.ts +83 -0
  225. package/dist/esm/src/data/cache-manager.d.ts.map +1 -0
  226. package/dist/esm/src/data/cache-manager.js +273 -0
  227. package/dist/esm/src/data/cache-manager.js.map +1 -0
  228. package/dist/esm/src/data/cache-manager.spec.d.ts +2 -0
  229. package/dist/esm/src/data/cache-manager.spec.d.ts.map +1 -0
  230. package/dist/esm/src/data/cache-manager.spec.js +30 -0
  231. package/dist/esm/src/data/cache-manager.spec.js.map +1 -0
  232. package/dist/esm/src/exception/error-type.d.ts +80 -0
  233. package/dist/esm/src/exception/error-type.d.ts.map +1 -0
  234. package/dist/esm/src/exception/error-type.js +58 -0
  235. package/dist/esm/src/exception/error-type.js.map +1 -0
  236. package/dist/esm/src/exception/whatsapp-error.d.ts +4 -0
  237. package/dist/esm/src/exception/whatsapp-error.d.ts.map +1 -0
  238. package/dist/esm/src/exception/whatsapp-error.js +11 -0
  239. package/dist/esm/src/exception/whatsapp-error.js.map +1 -0
  240. package/dist/esm/src/exception/whatsapp-error.spec.d.ts +3 -0
  241. package/dist/esm/src/exception/whatsapp-error.spec.d.ts.map +1 -0
  242. package/dist/esm/src/exception/whatsapp-error.spec.js +22 -0
  243. package/dist/esm/src/exception/whatsapp-error.spec.js.map +1 -0
  244. package/dist/esm/src/helper/index.d.ts +2 -0
  245. package/dist/esm/src/helper/index.d.ts.map +1 -0
  246. package/dist/esm/src/helper/index.js +2 -0
  247. package/dist/esm/src/helper/index.js.map +1 -0
  248. package/dist/esm/src/helper/miscellaneous.d.ts +8 -0
  249. package/dist/esm/src/helper/miscellaneous.d.ts.map +1 -0
  250. package/dist/esm/src/helper/miscellaneous.js +38 -0
  251. package/dist/esm/src/helper/miscellaneous.js.map +1 -0
  252. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.d.ts +4 -0
  253. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.d.ts.map +1 -0
  254. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.js +35 -0
  255. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.js.map +1 -0
  256. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts +2 -0
  257. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.d.ts.map +1 -0
  258. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.js +61 -0
  259. package/dist/esm/src/helper/pure-function/contact-raw-payload-parser.spec.js.map +1 -0
  260. package/dist/esm/src/helper/pure-function/convert-function.d.ts +4 -0
  261. package/dist/esm/src/helper/pure-function/convert-function.d.ts.map +1 -0
  262. package/dist/esm/src/helper/pure-function/convert-function.js +12 -0
  263. package/dist/esm/src/helper/pure-function/convert-function.js.map +1 -0
  264. package/dist/esm/src/helper/pure-function/index.d.ts +5 -0
  265. package/dist/esm/src/helper/pure-function/index.d.ts.map +1 -0
  266. package/dist/esm/src/helper/pure-function/index.js +5 -0
  267. package/dist/esm/src/helper/pure-function/index.js.map +1 -0
  268. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.d.ts +4 -0
  269. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.d.ts.map +1 -0
  270. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.js +106 -0
  271. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.js.map +1 -0
  272. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.d.ts +2 -0
  273. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.d.ts.map +1 -0
  274. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.js +227 -0
  275. package/dist/esm/src/helper/pure-function/message-raw-payload-parser.spec.js.map +1 -0
  276. package/dist/esm/src/helper/pure-function/room-event-generator.d.ts +28 -0
  277. package/dist/esm/src/helper/pure-function/room-event-generator.d.ts.map +1 -0
  278. package/dist/esm/src/helper/pure-function/room-event-generator.js +53 -0
  279. package/dist/esm/src/helper/pure-function/room-event-generator.js.map +1 -0
  280. package/dist/esm/src/helper/pure-function/room-event-generator.spec.d.ts +2 -0
  281. package/dist/esm/src/helper/pure-function/room-event-generator.spec.d.ts.map +1 -0
  282. package/dist/esm/src/helper/pure-function/room-event-generator.spec.js +99 -0
  283. package/dist/esm/src/helper/pure-function/room-event-generator.spec.js.map +1 -0
  284. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.d.ts +4 -0
  285. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.d.ts.map +1 -0
  286. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.js +17 -0
  287. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.js.map +1 -0
  288. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.d.ts +2 -0
  289. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.d.ts.map +1 -0
  290. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.js +66 -0
  291. package/dist/esm/src/helper/pure-function/room-raw-payload-parser.spec.js.map +1 -0
  292. package/dist/esm/src/helper/pure-function/vcard-parser.d.ts +28 -0
  293. package/dist/esm/src/helper/pure-function/vcard-parser.d.ts.map +1 -0
  294. package/dist/esm/src/helper/pure-function/vcard-parser.js +102 -0
  295. package/dist/esm/src/helper/pure-function/vcard-parser.js.map +1 -0
  296. package/dist/esm/src/helper/schedule/schedule-manager.d.ts +19 -0
  297. package/dist/esm/src/helper/schedule/schedule-manager.d.ts.map +1 -0
  298. package/dist/esm/src/helper/schedule/schedule-manager.js +43 -0
  299. package/dist/esm/src/helper/schedule/schedule-manager.js.map +1 -0
  300. package/dist/esm/src/helper/schedule/schedule-manager.spec.d.ts +2 -0
  301. package/dist/esm/src/helper/schedule/schedule-manager.spec.d.ts.map +1 -0
  302. package/dist/esm/src/helper/schedule/schedule-manager.spec.js +40 -0
  303. package/dist/esm/src/helper/schedule/schedule-manager.spec.js.map +1 -0
  304. package/dist/esm/src/manager-event.d.ts +18 -0
  305. package/dist/esm/src/manager-event.d.ts.map +1 -0
  306. package/dist/esm/src/manager-event.js +2 -0
  307. package/dist/esm/src/manager-event.js.map +1 -0
  308. package/dist/esm/src/manager.d.ts +67 -0
  309. package/dist/esm/src/manager.d.ts.map +1 -0
  310. package/dist/esm/src/manager.js +264 -0
  311. package/dist/esm/src/manager.js.map +1 -0
  312. package/dist/esm/src/manager.spec.d.ts +3 -0
  313. package/dist/esm/src/manager.spec.d.ts.map +1 -0
  314. package/dist/esm/src/manager.spec.js +33 -0
  315. package/dist/esm/src/manager.spec.js.map +1 -0
  316. package/dist/esm/src/mod.d.ts +5 -0
  317. package/dist/esm/src/mod.d.ts.map +1 -0
  318. package/dist/esm/src/mod.js +5 -0
  319. package/dist/esm/src/mod.js.map +1 -0
  320. package/dist/esm/src/package-json.d.ts +6 -0
  321. package/dist/esm/src/package-json.d.ts.map +1 -0
  322. package/dist/esm/src/package-json.js +90 -0
  323. package/dist/esm/src/package-json.js.map +1 -0
  324. package/dist/esm/src/package-json.spec.d.ts +3 -0
  325. package/dist/esm/src/package-json.spec.d.ts.map +1 -0
  326. package/dist/esm/src/package-json.spec.js +8 -0
  327. package/dist/esm/src/package-json.spec.js.map +1 -0
  328. package/dist/esm/src/puppet-mixin/contact-self.d.ts +5 -0
  329. package/dist/esm/src/puppet-mixin/contact-self.d.ts.map +1 -0
  330. package/dist/esm/src/puppet-mixin/contact-self.js +16 -0
  331. package/dist/esm/src/puppet-mixin/contact-self.js.map +1 -0
  332. package/dist/esm/src/puppet-mixin/contact.d.ts +16 -0
  333. package/dist/esm/src/puppet-mixin/contact.d.ts.map +1 -0
  334. package/dist/esm/src/puppet-mixin/contact.js +87 -0
  335. package/dist/esm/src/puppet-mixin/contact.js.map +1 -0
  336. package/dist/esm/src/puppet-mixin/conversation.d.ts +2 -0
  337. package/dist/esm/src/puppet-mixin/conversation.d.ts.map +1 -0
  338. package/dist/esm/src/puppet-mixin/conversation.js +8 -0
  339. package/dist/esm/src/puppet-mixin/conversation.js.map +1 -0
  340. package/dist/esm/src/puppet-mixin/friendship.d.ts +12 -0
  341. package/dist/esm/src/puppet-mixin/friendship.d.ts.map +1 -0
  342. package/dist/esm/src/puppet-mixin/friendship.js +63 -0
  343. package/dist/esm/src/puppet-mixin/friendship.js.map +1 -0
  344. package/dist/esm/src/puppet-mixin/message.d.ts +57 -0
  345. package/dist/esm/src/puppet-mixin/message.d.ts.map +1 -0
  346. package/dist/esm/src/puppet-mixin/message.js +282 -0
  347. package/dist/esm/src/puppet-mixin/message.js.map +1 -0
  348. package/dist/esm/src/puppet-mixin/room.d.ts +42 -0
  349. package/dist/esm/src/puppet-mixin/room.d.ts.map +1 -0
  350. package/dist/esm/src/puppet-mixin/room.js +273 -0
  351. package/dist/esm/src/puppet-mixin/room.js.map +1 -0
  352. package/dist/esm/src/puppet-mixin/tag.d.ts +5 -0
  353. package/dist/esm/src/puppet-mixin/tag.d.ts.map +1 -0
  354. package/dist/esm/src/puppet-mixin/tag.js +20 -0
  355. package/dist/esm/src/puppet-mixin/tag.js.map +1 -0
  356. package/dist/esm/src/puppet-whatsapp.d.ts +145 -0
  357. package/dist/esm/src/puppet-whatsapp.d.ts.map +1 -0
  358. package/dist/esm/src/puppet-whatsapp.js +280 -0
  359. package/dist/esm/src/puppet-whatsapp.js.map +1 -0
  360. package/dist/esm/src/puppet-whatsapp.spec.d.ts +3 -0
  361. package/dist/esm/src/puppet-whatsapp.spec.d.ts.map +1 -0
  362. package/dist/esm/src/puppet-whatsapp.spec.js +23 -0
  363. package/dist/esm/src/puppet-whatsapp.spec.js.map +1 -0
  364. package/dist/esm/src/request/rate-manager.d.ts +21 -0
  365. package/dist/esm/src/request/rate-manager.d.ts.map +1 -0
  366. package/dist/esm/src/request/rate-manager.js +85 -0
  367. package/dist/esm/src/request/rate-manager.js.map +1 -0
  368. package/dist/esm/src/request/request-manager.d.ts +54 -0
  369. package/dist/esm/src/request/request-manager.d.ts.map +1 -0
  370. package/dist/esm/src/request/request-manager.js +124 -0
  371. package/dist/esm/src/request/request-manager.js.map +1 -0
  372. package/dist/esm/src/request/request-pool.d.ts +10 -0
  373. package/dist/esm/src/request/request-pool.d.ts.map +1 -0
  374. package/dist/esm/src/request/request-pool.js +40 -0
  375. package/dist/esm/src/request/request-pool.js.map +1 -0
  376. package/dist/esm/src/request/request-pool.spec.d.ts +2 -0
  377. package/dist/esm/src/request/request-pool.spec.d.ts.map +1 -0
  378. package/dist/esm/src/request/request-pool.spec.js +34 -0
  379. package/dist/esm/src/request/request-pool.spec.js.map +1 -0
  380. package/dist/esm/src/schema/event-name.d.ts +9 -0
  381. package/dist/esm/src/schema/event-name.d.ts.map +1 -0
  382. package/dist/esm/src/schema/event-name.js +10 -0
  383. package/dist/esm/src/schema/event-name.js.map +1 -0
  384. package/dist/esm/src/schema/index.d.ts +2 -0
  385. package/dist/esm/src/schema/index.d.ts.map +1 -0
  386. package/dist/esm/src/schema/index.js +2 -0
  387. package/dist/esm/src/schema/index.js.map +1 -0
  388. package/dist/esm/src/schema/whatsapp-interface.d.ts +18 -0
  389. package/dist/esm/src/schema/whatsapp-interface.d.ts.map +1 -0
  390. package/dist/esm/src/schema/whatsapp-interface.js +20 -0
  391. package/dist/esm/src/schema/whatsapp-interface.js.map +1 -0
  392. package/dist/esm/src/schema/whatsapp-type.d.ts +42 -0
  393. package/dist/esm/src/schema/whatsapp-type.d.ts.map +1 -0
  394. package/dist/esm/src/schema/whatsapp-type.js +2 -0
  395. package/dist/esm/src/schema/whatsapp-type.js.map +1 -0
  396. package/dist/esm/src/whatsapp/event-handler/group-event-handler.d.ts +8 -0
  397. package/dist/esm/src/whatsapp/event-handler/group-event-handler.d.ts.map +1 -0
  398. package/dist/esm/src/whatsapp/event-handler/group-event-handler.js +78 -0
  399. package/dist/esm/src/whatsapp/event-handler/group-event-handler.js.map +1 -0
  400. package/dist/esm/src/whatsapp/event-handler/login-event-handler.d.ts +24 -0
  401. package/dist/esm/src/whatsapp/event-handler/login-event-handler.d.ts.map +1 -0
  402. package/dist/esm/src/whatsapp/event-handler/login-event-handler.js +174 -0
  403. package/dist/esm/src/whatsapp/event-handler/login-event-handler.js.map +1 -0
  404. package/dist/esm/src/whatsapp/event-handler/message-event-handler.d.ts +35 -0
  405. package/dist/esm/src/whatsapp/event-handler/message-event-handler.d.ts.map +1 -0
  406. package/dist/esm/src/whatsapp/event-handler/message-event-handler.js +197 -0
  407. package/dist/esm/src/whatsapp/event-handler/message-event-handler.js.map +1 -0
  408. package/dist/esm/src/whatsapp/whatsapp-base.d.ts +26 -0
  409. package/dist/esm/src/whatsapp/whatsapp-base.d.ts.map +1 -0
  410. package/dist/esm/src/whatsapp/whatsapp-base.js +63 -0
  411. package/dist/esm/src/whatsapp/whatsapp-base.js.map +1 -0
  412. package/dist/esm/src/whatsapp/whatsapp-manager.d.ts +16 -0
  413. package/dist/esm/src/whatsapp/whatsapp-manager.d.ts.map +1 -0
  414. package/dist/esm/src/whatsapp/whatsapp-manager.js +128 -0
  415. package/dist/esm/src/whatsapp/whatsapp-manager.js.map +1 -0
  416. package/dist/esm/tests/integration.spec.d.ts +3 -0
  417. package/dist/esm/tests/integration.spec.d.ts.map +1 -0
  418. package/dist/esm/tests/integration.spec.js +6 -0
  419. package/dist/esm/tests/integration.spec.js.map +1 -0
  420. package/dist/esm/tests/memory-card.spec.d.ts +2 -0
  421. package/dist/esm/tests/memory-card.spec.d.ts.map +1 -0
  422. package/dist/esm/tests/memory-card.spec.js +23 -0
  423. package/dist/esm/tests/memory-card.spec.js.map +1 -0
  424. package/dist/esm/tests/qrcode.spec.d.ts +2 -0
  425. package/dist/esm/tests/qrcode.spec.d.ts.map +1 -0
  426. package/dist/esm/tests/qrcode.spec.js +26 -0
  427. package/dist/esm/tests/qrcode.spec.js.map +1 -0
  428. package/package.json +89 -0
  429. package/src/config.ts +70 -0
  430. package/src/data/cache-manager.spec.ts +33 -0
  431. package/src/data/cache-manager.ts +331 -0
  432. package/src/exception/error-type.ts +59 -0
  433. package/src/exception/whatsapp-error.spec.ts +26 -0
  434. package/src/exception/whatsapp-error.ts +15 -0
  435. package/src/helper/index.ts +3 -0
  436. package/src/helper/miscellaneous.ts +45 -0
  437. package/src/helper/pure-function/contact-raw-payload-parser.spec.ts +67 -0
  438. package/src/helper/pure-function/contact-raw-payload-parser.ts +36 -0
  439. package/src/helper/pure-function/convert-function.ts +24 -0
  440. package/src/helper/pure-function/index.ts +4 -0
  441. package/src/helper/pure-function/message-raw-payload-parser.spec.ts +243 -0
  442. package/src/helper/pure-function/message-raw-payload-parser.ts +117 -0
  443. package/src/helper/pure-function/room-event-generator.spec.ts +120 -0
  444. package/src/helper/pure-function/room-event-generator.ts +63 -0
  445. package/src/helper/pure-function/room-raw-payload-parser.spec.ts +70 -0
  446. package/src/helper/pure-function/room-raw-payload-parser.ts +19 -0
  447. package/src/helper/pure-function/vcard-parser.ts +128 -0
  448. package/src/helper/schedule/schedule-manager.spec.ts +46 -0
  449. package/src/helper/schedule/schedule-manager.ts +52 -0
  450. package/src/manager-event.ts +18 -0
  451. package/src/manager.spec.ts +40 -0
  452. package/src/manager.ts +297 -0
  453. package/src/mod.ts +8 -0
  454. package/src/package-json.spec.ts +10 -0
  455. package/src/package-json.ts +93 -0
  456. package/src/puppet-mixin/contact-self.ts +20 -0
  457. package/src/puppet-mixin/contact.ts +107 -0
  458. package/src/puppet-mixin/conversation.ts +12 -0
  459. package/src/puppet-mixin/friendship.ts +88 -0
  460. package/src/puppet-mixin/message.ts +311 -0
  461. package/src/puppet-mixin/room.ts +334 -0
  462. package/src/puppet-mixin/tag.ts +34 -0
  463. package/src/puppet-whatsapp.spec.ts +30 -0
  464. package/src/puppet-whatsapp.ts +339 -0
  465. package/src/request/rate-manager.ts +118 -0
  466. package/src/request/request-manager.ts +174 -0
  467. package/src/request/request-pool.spec.ts +36 -0
  468. package/src/request/request-pool.ts +45 -0
  469. package/src/schema/event-name.ts +8 -0
  470. package/src/schema/fix-type.d.ts +63 -0
  471. package/src/schema/index.ts +1 -0
  472. package/src/schema/whatsapp-interface.ts +31 -0
  473. package/src/schema/whatsapp-type.ts +79 -0
  474. package/src/typings.d.ts +0 -0
  475. package/src/whatsapp/event-handler/group-event-handler.ts +95 -0
  476. package/src/whatsapp/event-handler/login-event-handler.ts +210 -0
  477. package/src/whatsapp/event-handler/message-event-handler.ts +230 -0
  478. package/src/whatsapp/whatsapp-base.ts +78 -0
  479. package/src/whatsapp/whatsapp-manager.ts +160 -0
@@ -0,0 +1,67 @@
1
+ /* eslint-disable sort-keys */
2
+
3
+ import { test } from 'tstest'
4
+ import { parserContactRawPayload } from './contact-raw-payload-parser.js'
5
+ import * as PUPPET from '@juzi/wechaty-puppet'
6
+
7
+ test('parse self contact info', async t => {
8
+ const selfContactInfo = {
9
+ id: {
10
+ server: 'c.us',
11
+ user: '8613812345678',
12
+ _serialized: '8613812345678@c.us',
13
+ },
14
+ number: '8613812345678',
15
+ type: 'in',
16
+ isMe: true,
17
+ isUser: true,
18
+ isGroup: false,
19
+ isWAContact: true,
20
+ isMyContact: false,
21
+ isBlocked: false,
22
+ avatar: 'https://pps.whatsapp.net/v/t61.24694-24/260815595_1420796841651457_5795692773524767952_n.jpg?ccb=11-4&oh=01_AVzaQSF48-MYxwWUL9qX9i4f1tBjIvIX1h5xnwS3THYPkA&oe=6222761E',
23
+ }
24
+
25
+ const result = parserContactRawPayload(selfContactInfo as any, 'testUserName')
26
+ console.info(result)
27
+ t.ok(result.name === 'testUserName', 'should get correct contact name')
28
+ t.ok(result.type === PUPPET.types.Contact.Individual, 'should get correct contact type')
29
+ t.ok(result.phone[0] === '8613812345678', 'should get correct phone number')
30
+ t.ok(result.id === '8613812345678@c.us', 'should get correct user id')
31
+ t.ok(!result.friend, 'should get correct friendship status')
32
+
33
+ t.pass('parse self contact info pass')
34
+ })
35
+
36
+ test('parse individual contact info', async t => {
37
+ const contactInfo = {
38
+ id: {
39
+ server: 'c.us',
40
+ user: '918879481247',
41
+ _serialized: '918879481247@c.us',
42
+ },
43
+ number: '918879481247',
44
+ isBusiness: false,
45
+ isEnterprise: false,
46
+ labels: [],
47
+ pushname: 'Prince Arora',
48
+ statusMute: false,
49
+ type: 'in',
50
+ isMe: false,
51
+ isUser: true,
52
+ isGroup: false,
53
+ isWAContact: true,
54
+ isMyContact: true,
55
+ isBlocked: false,
56
+ }
57
+
58
+ const result = parserContactRawPayload(contactInfo as any, 'testUserName')
59
+ console.info(result)
60
+ t.ok(result.name === 'Prince Arora', 'should get correct contact name')
61
+ t.ok(result.type === PUPPET.types.Contact.Individual, 'should get correct contact type')
62
+ t.ok(result.phone[0] === '918879481247', 'should get correct phone number')
63
+ t.ok(result.id === '918879481247@c.us', 'should get correct user id')
64
+ t.ok(result.friend, 'should get correct friendship status')
65
+
66
+ t.pass('parse individual contact info pass')
67
+ })
@@ -0,0 +1,36 @@
1
+ import * as PUPPET from '@juzi/wechaty-puppet'
2
+ import { SPECIAL_BOT_PUSHNAME } from '../../config.js'
3
+
4
+ import type { WhatsAppContactPayload } from '../../schema/whatsapp-type.js'
5
+
6
+ export function parserContactRawPayload (contactPayload: WhatsAppContactPayload, userName?: string): PUPPET.payloads.Contact {
7
+ let type
8
+ if (contactPayload.isUser) {
9
+ type = PUPPET.types.Contact.Individual
10
+ } else if (contactPayload.isEnterprise) {
11
+ type = PUPPET.types.Contact.Corporation
12
+ } else {
13
+ type = PUPPET.types.Contact.Unknown
14
+ }
15
+ let name
16
+
17
+ if (contactPayload.isMe) {
18
+ name = userName || contactPayload.pushname
19
+ if (name === SPECIAL_BOT_PUSHNAME) {
20
+ name = contactPayload.shortName
21
+ }
22
+ } else {
23
+ name = contactPayload.pushname || contactPayload.name
24
+ }
25
+
26
+ return {
27
+ avatar: contactPayload.avatar,
28
+ friend: contactPayload.isMyContact && contactPayload.isUser,
29
+ gender: PUPPET.types.ContactGender.Unknown,
30
+ id: contactPayload.id._serialized,
31
+ name: name || contactPayload.id._serialized,
32
+ phone: [contactPayload.number],
33
+ type: type,
34
+ weixin: contactPayload.number,
35
+ }
36
+ }
@@ -0,0 +1,24 @@
1
+ import {
2
+ ContactClass,
3
+ MessageClass,
4
+ } from '../../schema/whatsapp-interface.js'
5
+
6
+ import type {
7
+ WhatsAppClientType,
8
+ WhatsAppContact,
9
+ WhatsAppMessage,
10
+ WhatsAppContactPayload,
11
+ WhatsAppMessagePayload,
12
+ } from '../../schema/whatsapp-type.js'
13
+
14
+ export function convertContactPayloadToClass (client: WhatsAppClientType, payload: WhatsAppContactPayload): WhatsAppContact {
15
+ const contactIns = new ContactClass(client)
16
+ Object.assign(contactIns, payload)
17
+ return contactIns
18
+ }
19
+
20
+ export function convertMessagePayloadToClass (client: WhatsAppClientType, payload: WhatsAppMessagePayload): WhatsAppMessage {
21
+ const messageIns = new MessageClass(client)
22
+ Object.assign(messageIns, payload)
23
+ return messageIns
24
+ }
@@ -0,0 +1,4 @@
1
+ export * from './message-raw-payload-parser.js'
2
+ export * from './vcard-parser.js'
3
+ export * from './convert-function.js'
4
+ export * from './room-event-generator.js'
@@ -0,0 +1,243 @@
1
+ /* eslint-disable sort-keys */
2
+ import { test } from 'tstest'
3
+ import { parserMessageRawPayload } from './message-raw-payload-parser.js'
4
+ import { MessageTypes } from '../../schema/whatsapp-interface.js'
5
+
6
+ test('message parser for room message which send from bot by web ', async t => {
7
+ const roomMessageFromBotByWeb = {
8
+ id: {
9
+ fromMe: true,
10
+ remote: '120363039010379837@g.us',
11
+ id: '3EB03A5D078A2D81D10A',
12
+ _serialized: 'true_120363039010379837@g.us_3EB03A5D078A2D81D10A',
13
+ },
14
+ ack: 0,
15
+ hasMedia: false,
16
+ body: 'ding',
17
+ type: MessageTypes.TEXT,
18
+ timestamp: 1644563786,
19
+ from: '8613812345679@c.us',
20
+ to: '120363039010379837@g.us',
21
+ deviceType: 'web',
22
+ isForwarded: false,
23
+ forwardingScore: 0,
24
+ isStatus: false,
25
+ isStarred: false,
26
+ broadcast: false,
27
+ fromMe: true,
28
+ hasQuotedMsg: false,
29
+ vCards: [],
30
+ mentionedIds: [],
31
+ isGif: false,
32
+ isEphemeral: false,
33
+ links: [],
34
+ }
35
+ const messagePayload = parserMessageRawPayload(roomMessageFromBotByWeb)
36
+ t.ok(messagePayload.listenerId === undefined, 'should get no target id')
37
+ t.ok(messagePayload.roomId === '120363039010379837@g.us', 'should get correct room id')
38
+ t.ok(messagePayload.talkerId === '8613812345679@c.us', 'shuold get correct sender id')
39
+ t.ok(messagePayload.text === 'ding', 'should get correct message content')
40
+
41
+ t.pass('message parser for room message which send from bot by web pass')
42
+ })
43
+
44
+ test('message parser for room message which send from bot by api ', async t => {
45
+ const roomMessageFromBotByApi = {
46
+ id: {
47
+ fromMe: true,
48
+ remote: {
49
+ server: 'g.us',
50
+ user: '120363039010379837',
51
+ _serialized: '120363039010379837@g.us',
52
+ },
53
+ id: '9A0E0DB7663CA62AFD57C73290B11248',
54
+ _serialized: 'true_120363039010379837@g.us_9A0E0DB7663CA62AFD57C73290B11248',
55
+ },
56
+ ack: 0,
57
+ hasMedia: false,
58
+ body: 'dong',
59
+ type: MessageTypes.TEXT,
60
+ timestamp: 1644563785,
61
+ from: '8613812345679@c.us',
62
+ to: '120363039010379837@g.us',
63
+ deviceType: 'android',
64
+ isForwarded: false,
65
+ isStatus: false,
66
+ broadcast: false,
67
+ forwardingScore: 0,
68
+ isStarred: false,
69
+ fromMe: true,
70
+ hasQuotedMsg: false,
71
+ vCards: [],
72
+ mentionedIds: [],
73
+ isGif: false,
74
+ isEphemeral: false,
75
+ links: [],
76
+ }
77
+ const messagePayload = parserMessageRawPayload(roomMessageFromBotByApi)
78
+
79
+ t.ok(messagePayload.listenerId === undefined, 'should get no target id')
80
+ t.ok(messagePayload.roomId === '120363039010379837@g.us', 'should get correct room id')
81
+ t.ok(messagePayload.talkerId === '8613812345679@c.us', 'shuold get correct sender id')
82
+ t.ok(messagePayload.text === 'dong', 'should get correct message content')
83
+
84
+ t.pass('message parser for room message which send from bot by api pass')
85
+ })
86
+
87
+ test('message parser for room message which send from other contact ', async t => {
88
+ const roomMessageFromOtherContact = {
89
+ id: {
90
+ fromMe: false,
91
+ remote: '120363039010379837@g.us',
92
+ id: 'CC4B5F84340A87BAEFBC87B0588C78E8',
93
+ participant: '8613812345678@c.us',
94
+ _serialized: 'false_120363039010379837@g.us_CC4B5F84340A87BAEFBC87B0588C78E8_8613812345678@c.us',
95
+ },
96
+ ack: 0,
97
+ hasMedia: false,
98
+ body: 'hello',
99
+ type: MessageTypes.TEXT,
100
+ timestamp: 1644565075,
101
+ from: '120363039010379837@g.us',
102
+ to: '8613812345679@c.us',
103
+ author: '8613812345678@c.us',
104
+ deviceType: 'android',
105
+ isForwarded: false,
106
+ forwardingScore: 0,
107
+ isStatus: false,
108
+ isStarred: false,
109
+ broadcast: false,
110
+ fromMe: false,
111
+ hasQuotedMsg: false,
112
+ vCards: [],
113
+ mentionedIds: [],
114
+ isGif: false,
115
+ isEphemeral: false,
116
+ links: [],
117
+ }
118
+ const messagePayload = parserMessageRawPayload(roomMessageFromOtherContact)
119
+
120
+ t.ok(messagePayload.listenerId === undefined, 'should get no target id')
121
+ t.ok(messagePayload.roomId === '120363039010379837@g.us', 'should get correct room id')
122
+ t.ok(messagePayload.talkerId === '8613812345678@c.us', 'shuold get correct sender id')
123
+ t.ok(messagePayload.text === 'hello', 'should get correct message content')
124
+
125
+ t.pass('message parser for room message which send from other contact pass')
126
+ })
127
+
128
+ test('message parser for contact message which send from bot by web ', async t => {
129
+ const contactMessageFromBotByWeb = {
130
+ id: {
131
+ fromMe: true,
132
+ remote: '8618710175700@c.us',
133
+ id: '3EB0B7678EED11EE37FC',
134
+ _serialized: 'true_8618710175700@c.us_3EB0B7678EED11EE37FC',
135
+ },
136
+ ack: 0,
137
+ hasMedia: false,
138
+ body: 'ding',
139
+ type: MessageTypes.TEXT,
140
+ timestamp: 1644564200,
141
+ from: '8613812345679@c.us',
142
+ to: '8618710175700@c.us',
143
+ deviceType: 'web',
144
+ isForwarded: false,
145
+ forwardingScore: 0,
146
+ isStatus: false,
147
+ isStarred: false,
148
+ broadcast: false,
149
+ fromMe: true,
150
+ hasQuotedMsg: false,
151
+ vCards: [],
152
+ mentionedIds: [],
153
+ isGif: false,
154
+ isEphemeral: false,
155
+ links: [],
156
+ }
157
+ const messagePayload = parserMessageRawPayload(contactMessageFromBotByWeb)
158
+
159
+ t.ok(messagePayload.listenerId === '8618710175700@c.us', 'should get correct target id')
160
+ t.ok(messagePayload.roomId === undefined, 'should get no room id')
161
+ t.ok(messagePayload.talkerId === '8613812345679@c.us', 'shuold get correct sender id')
162
+ t.ok(messagePayload.text === 'ding', 'should get correct message content')
163
+
164
+ t.pass('message parser for contact message which send from bot by web pass')
165
+ })
166
+
167
+ test('message parser for contact message which send from bot by api ', async t => {
168
+ const contactMessageFromBotByApi = {
169
+ id: {
170
+ fromMe: true,
171
+ remote: '8613811286503@c.us',
172
+ id: 'AD99715B4191F82F6E7DB26F5EF883DA',
173
+ _serialized: 'true_8613811286503@c.us_AD99715B4191F82F6E7DB26F5EF883DA',
174
+ },
175
+ ack: 0,
176
+ hasMedia: false,
177
+ body: 'dong',
178
+ type: MessageTypes.TEXT,
179
+ timestamp: 1644570007,
180
+ from: '8613812345679@c.us',
181
+ to: '8613811286503@c.us',
182
+ deviceType: 'android',
183
+ isForwarded: false,
184
+ forwardingScore: 0,
185
+ isStatus: false,
186
+ isStarred: false,
187
+ broadcast: false,
188
+ fromMe: true,
189
+ hasQuotedMsg: false,
190
+ vCards: [],
191
+ mentionedIds: [],
192
+ isGif: false,
193
+ isEphemeral: false,
194
+ links: [],
195
+ }
196
+ const messagePayload = parserMessageRawPayload(contactMessageFromBotByApi)
197
+
198
+ t.ok(messagePayload.listenerId === '8613811286503@c.us', 'should get correct target id')
199
+ t.ok(messagePayload.roomId === undefined, 'should get no room id')
200
+ t.ok(messagePayload.talkerId === '8613812345679@c.us', 'shuold get correct sender id')
201
+ t.ok(messagePayload.text === 'dong', 'should get correct message content')
202
+
203
+ t.pass('message parser for contact message which send from bot by api pass')
204
+ })
205
+
206
+ test('message parser for contact message which send from other contact', async t => {
207
+ const contactMessageFromOtherContact = {
208
+ id: {
209
+ fromMe: false,
210
+ remote: '8613812345678@c.us',
211
+ id: '157D906AC6B04EA897002C7CCCD7A339',
212
+ _serialized: 'false_8613812345678@c.us_157D906AC6B04EA897002C7CCCD7A339',
213
+ },
214
+ ack: 0,
215
+ hasMedia: false,
216
+ body: 'hola',
217
+ type: MessageTypes.TEXT,
218
+ timestamp: 1644565052,
219
+ from: '8613812345678@c.us',
220
+ to: '8613812345679@c.us',
221
+ deviceType: 'android',
222
+ isForwarded: false,
223
+ forwardingScore: 0,
224
+ isStatus: false,
225
+ isStarred: false,
226
+ broadcast: false,
227
+ fromMe: false,
228
+ hasQuotedMsg: false,
229
+ vCards: [],
230
+ mentionedIds: [],
231
+ isGif: false,
232
+ isEphemeral: false,
233
+ links: [],
234
+ }
235
+ const messagePayload = parserMessageRawPayload(contactMessageFromOtherContact)
236
+
237
+ t.ok(messagePayload.listenerId === '8613812345679@c.us', 'should get correct target id')
238
+ t.ok(messagePayload.roomId === undefined, 'should get no room id')
239
+ t.ok(messagePayload.talkerId === '8613812345678@c.us', 'shuold get correct sender id')
240
+ t.ok(messagePayload.text === 'hola', 'should get correct message content')
241
+
242
+ t.pass('message parser for contact message which send from other contact pass')
243
+ })
@@ -0,0 +1,117 @@
1
+ import * as PUPPET from '@juzi/wechaty-puppet'
2
+ import { WA_ERROR_TYPE } from '../../exception/error-type.js'
3
+ import WAError from '../../exception/whatsapp-error.js'
4
+ import { isRoomId } from '../miscellaneous.js'
5
+
6
+ import {
7
+ MessageTypes as WhatsAppMessageType,
8
+ } from '../../schema/whatsapp-interface.js'
9
+
10
+ import type {
11
+ WhatsAppMessagePayload,
12
+ } from '../../schema/whatsapp-type.js'
13
+
14
+ export function parserMessageRawPayload (messagePayload: WhatsAppMessagePayload): PUPPET.payloads.Message {
15
+ const talkerId = messagePayload.author || messagePayload.from
16
+ let listenerId: string | undefined
17
+ let roomId: string | undefined
18
+
19
+ if (typeof messagePayload.id.remote === 'object') {
20
+ const { _serialized } = messagePayload.id.remote
21
+ roomId = isRoomId(_serialized) ? _serialized : undefined
22
+ listenerId = isRoomId(_serialized) ? undefined : messagePayload.to
23
+ } else {
24
+ roomId = isRoomId(messagePayload.id.remote) ? messagePayload.id.remote : undefined
25
+ listenerId = isRoomId(messagePayload.id.remote) ? undefined : messagePayload.to
26
+ }
27
+
28
+ if (!talkerId) {
29
+ throw WAError(WA_ERROR_TYPE.ERR_MSG_NOT_FOUND, 'empty talkerIdId!')
30
+ }
31
+
32
+ if (!roomId && !listenerId) {
33
+ throw WAError(WA_ERROR_TYPE.ERR_MSG_NOT_FOUND, 'empty roomId and empty listenerId!')
34
+ }
35
+
36
+ return {
37
+ /**
38
+ * @deprecated `fromId` is deprecated, use `talkerId` instead.
39
+ * `fromId` will be removed in v2.0
40
+ */
41
+ fromId: talkerId,
42
+ talkerId,
43
+ // eslint-disable-next-line sort-keys
44
+ id: messagePayload.id.id,
45
+ mentionIdList: messagePayload.mentionedIds,
46
+ roomId,
47
+ text: messagePayload.body,
48
+ timestamp: messagePayload.timestamp,
49
+ /**
50
+ * @deprecated `toId` is deprecated, use `listenerId` instead.
51
+ * `toId` will be removed in v2.0
52
+ */
53
+ toId: listenerId,
54
+ // eslint-disable-next-line sort-keys
55
+ listenerId,
56
+
57
+ type: getMessageType(messagePayload),
58
+ } as any
59
+
60
+ }
61
+
62
+ function getMessageType (messagePayload: WhatsAppMessagePayload): PUPPET.types.Message {
63
+ let type: PUPPET.types.Message = PUPPET.types.Message.Unknown
64
+
65
+ // @ts-ignore
66
+ if (messagePayload.type === 'notification') {
67
+ type = PUPPET.types.Message.Text
68
+ }
69
+
70
+ switch (messagePayload.type) {
71
+ case WhatsAppMessageType.TEXT:
72
+ if (messagePayload.title || messagePayload.description) {
73
+ type = PUPPET.types.Message.Url
74
+ } else if (messagePayload.isStatus) {
75
+ type = PUPPET.types.Message.Post
76
+ } else {
77
+ type = PUPPET.types.Message.Text
78
+ }
79
+ break
80
+ case WhatsAppMessageType.STICKER:
81
+ type = PUPPET.types.Message.Emoticon
82
+ break
83
+ case WhatsAppMessageType.VOICE:
84
+ type = PUPPET.types.Message.Audio
85
+ break
86
+ case WhatsAppMessageType.IMAGE:
87
+ if (messagePayload.isStatus) {
88
+ type = PUPPET.types.Message.Post
89
+ } else {
90
+ type = PUPPET.types.Message.Image
91
+ }
92
+ break
93
+ case WhatsAppMessageType.AUDIO:
94
+ type = PUPPET.types.Message.Audio
95
+ break
96
+ case WhatsAppMessageType.VIDEO:
97
+ if (messagePayload.isStatus) {
98
+ type = PUPPET.types.Message.Post
99
+ } else {
100
+ type = PUPPET.types.Message.Video
101
+ }
102
+ break
103
+ case WhatsAppMessageType.CONTACT_CARD:
104
+ type = PUPPET.types.Message.Contact
105
+ break
106
+ case WhatsAppMessageType.DOCUMENT:
107
+ type = PUPPET.types.Message.Attachment
108
+ break
109
+ case WhatsAppMessageType.LOCATION:
110
+ type = PUPPET.types.Message.Location
111
+ break
112
+ case WhatsAppMessageType.REVOKED:
113
+ type = PUPPET.types.Message.Recalled
114
+ break
115
+ }
116
+ return type
117
+ }
@@ -0,0 +1,120 @@
1
+ /* eslint-disable sort-keys */
2
+ import {
3
+ test,
4
+ } from 'tstest'
5
+
6
+ import {
7
+ MessageTypes as WhatsAppMessageType,
8
+ } from '../../schema/whatsapp-interface.js'
9
+
10
+ import {
11
+ genRoomTopicEvent,
12
+ genRoomJoinEvent,
13
+ genRoomAnnounce,
14
+ } from './room-event-generator.js'
15
+
16
+ test('generate room topic event', async t => {
17
+ const roomUpdateForTopic = {
18
+ id: {
19
+ fromMe: false,
20
+ remote: '120363037070043803@g.us',
21
+ id: '3AA08D567DC17E203763',
22
+ participant: '8613812345679@c.us',
23
+ _serialized: 'false_120363037070043803@g.us_3AA08D567DC17E203763_8613812345679@c.us',
24
+ },
25
+ body: 'wechaty puppet whatsapp room topic',
26
+ type: 'subject',
27
+ timestamp: 1644839917,
28
+ chatId: '8613812345679@c.us',
29
+ author: '8613812345679@c.us',
30
+ recipientIds: [],
31
+ } as any
32
+
33
+ const roomPayload = {
34
+ id: {
35
+ server: 'g.us',
36
+ user: '120363037070043803',
37
+ _serialized: '120363037070043803@g.us',
38
+ },
39
+ number: null,
40
+ isBusiness: false,
41
+ isEnterprise: false,
42
+ labels: [],
43
+ name: 'wechaty puppet whatsapp room old topic',
44
+ statusMute: false,
45
+ type: 'in',
46
+ isMe: false,
47
+ isUser: false,
48
+ isGroup: true,
49
+ isWAContact: false,
50
+ isMyContact: false,
51
+ isBlocked: false,
52
+ } as any
53
+ const roomTopicEvent = genRoomTopicEvent(roomUpdateForTopic, roomPayload)
54
+
55
+ t.ok(roomTopicEvent.newTopic === roomUpdateForTopic.body, 'should get correct room topic')
56
+ t.ok(roomTopicEvent.oldTopic === roomPayload.name, 'should get correct previoud room topic')
57
+ t.ok(roomTopicEvent.changerId === roomUpdateForTopic.author, 'shuold get correct event author')
58
+ t.ok(roomTopicEvent.roomId === roomUpdateForTopic.id.remote, 'shuold get correct room id')
59
+
60
+ t.pass('generate room topic event pass')
61
+ })
62
+
63
+ test('generate room join event', async t => {
64
+ const roomUpdateForJoin = {
65
+ id: {
66
+ fromMe: false,
67
+ remote: '120363043127306839@g.us',
68
+ id: '3AC7E4A87767BD63D328',
69
+ participant: '8613812345679@c.us',
70
+ _serialized: 'false_120363043127306839@g.us_3AC7E4A87767BD63D328_8613812345679@c.us',
71
+ },
72
+ body: '测试新建群聊',
73
+ type: 'create',
74
+ timestamp: 1644842251,
75
+ chatId: '8613812345679@c.us',
76
+ author: '8613812345679@c.us',
77
+ recipientIds: [],
78
+ } as any
79
+ const members = ['8618710175700@c.us', '8617316842524@c.us', '8613812345678@c.us', '8613240330438@c.us', '8613812345679@c.us']
80
+ const roomJoinEvent = genRoomJoinEvent(roomUpdateForJoin, members)
81
+
82
+ t.ok(roomJoinEvent.inviteeIdList === members, 'should get correct invite list')
83
+ t.ok(roomJoinEvent.inviterId === roomUpdateForJoin.author, 'should get correct event author')
84
+ t.ok(roomJoinEvent.roomId === roomUpdateForJoin.id.remote, 'should get correct room id')
85
+
86
+ t.pass('generate room join event pass')
87
+ })
88
+
89
+ test('generate room announce message', async t => {
90
+ const roomUpdateForDescription = {
91
+ id: {
92
+ fromMe: false,
93
+ remote: '120363037070043803@g.us',
94
+ id: '3A1D56DE1A988011D635',
95
+ participant: '8613812345679@c.us',
96
+ _serialized: 'false_120363037070043803@g.us_3A1D56DE1A988011D635_8613812345679@c.us',
97
+ },
98
+ body: '',
99
+ type: 'description',
100
+ timestamp: 1644842154,
101
+ chatId: '8613812345679@c.us',
102
+ author: '8613812345679@c.us',
103
+ recipientIds: [],
104
+ } as any
105
+ const description = 'wechaty puppet whatsapp room description for room announce message'
106
+ const messagePayload = genRoomAnnounce(roomUpdateForDescription, description)
107
+ t.ok(
108
+ messagePayload.type === WhatsAppMessageType.TEXT
109
+ && messagePayload.author === roomUpdateForDescription.author
110
+ && messagePayload.body === description
111
+ && messagePayload.to === roomUpdateForDescription.id.remote,
112
+ )
113
+
114
+ t.ok(messagePayload.type === WhatsAppMessageType.TEXT, 'should get correct message type')
115
+ t.ok(messagePayload.author === roomUpdateForDescription.author, 'should get correct author')
116
+ t.ok(messagePayload.body === description, 'shuold get correct anouncement content')
117
+ t.ok(messagePayload.to === roomUpdateForDescription.id.remote, 'shuold get correct room id')
118
+
119
+ t.pass('generate room announce message pass')
120
+ })
@@ -0,0 +1,63 @@
1
+ import type * as PUPPET from '@juzi/wechaty-puppet'
2
+ import type { } from '@juzi/whatsapp-web.js'
3
+ import type {
4
+ GroupNotification,
5
+ WhatsAppContactPayload,
6
+ } from '../../schema/whatsapp-type.js'
7
+ import {
8
+ MessageTypes as WhatsAppMessageType,
9
+ } from '../../schema/whatsapp-interface.js'
10
+
11
+ export function genRoomTopicEvent (notification: GroupNotification, roomPayload: WhatsAppContactPayload) {
12
+ const roomIdObj = notification.id
13
+ const roomId = roomIdObj.remote
14
+ const roomTopicPayload: PUPPET.payloads.EventRoomTopic = {
15
+ changerId: notification.author,
16
+ newTopic: notification.body,
17
+ oldTopic: roomPayload.name || '',
18
+ roomId,
19
+ timestamp: notification.timestamp,
20
+ }
21
+ return roomTopicPayload
22
+ }
23
+
24
+ export function genRoomJoinEvent (notification: GroupNotification, members: string[]) {
25
+ const roomIdObj = notification.id
26
+ const roomId = roomIdObj.remote
27
+ const roomJoinPayload: PUPPET.payloads.EventRoomJoin = {
28
+ inviteeIdList: members,
29
+ inviterId: notification.author,
30
+ roomId,
31
+ timestamp: notification.timestamp,
32
+ }
33
+ return roomJoinPayload
34
+ }
35
+
36
+ export function genRoomAnnounce (notification: GroupNotification, description: string) {
37
+ const roomIdObj = notification.id
38
+ const roomId = roomIdObj.remote
39
+ const genMessagePayload = {
40
+ ack: 2,
41
+ author: notification.author,
42
+ body: description,
43
+ broadcast: false,
44
+ forwardingScore: 0,
45
+ from: roomIdObj.participant || notification.author,
46
+ fromMe: roomIdObj.fromMe,
47
+ hasMedia: false,
48
+ hasQuotedMsg: false,
49
+ id: notification.id,
50
+ isEphemeral: false,
51
+ isForwarded: false,
52
+ isGif: false,
53
+ isStarred: false,
54
+ isStatus: false,
55
+ links: [],
56
+ mentionedIds: [],
57
+ timestamp: Date.now(),
58
+ to: roomId,
59
+ type: WhatsAppMessageType.TEXT,
60
+ vCards: [],
61
+ }
62
+ return genMessagePayload
63
+ }