@juzi/wechaty 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 (1026) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +565 -0
  3. package/bin/clean-json.js +15 -0
  4. package/bin/cli.ts +36 -0
  5. package/bin/doctor.ts +55 -0
  6. package/bin/entrypoint.sh +338 -0
  7. package/bin/io-client.ts +95 -0
  8. package/bin/providers-trends.ts +13 -0
  9. package/bin/puppet-install.ts +69 -0
  10. package/bin/version.ts +24 -0
  11. package/dist/cjs/bin/cli.d.ts +14 -0
  12. package/dist/cjs/bin/cli.d.ts.map +1 -0
  13. package/dist/cjs/bin/cli.js +50 -0
  14. package/dist/cjs/bin/cli.js.map +1 -0
  15. package/dist/cjs/bin/doctor.d.ts +22 -0
  16. package/dist/cjs/bin/doctor.d.ts.map +1 -0
  17. package/dist/cjs/bin/doctor.js +55 -0
  18. package/dist/cjs/bin/doctor.js.map +1 -0
  19. package/dist/cjs/bin/io-client.d.ts +22 -0
  20. package/dist/cjs/bin/io-client.d.ts.map +1 -0
  21. package/dist/cjs/bin/io-client.js +74 -0
  22. package/dist/cjs/bin/io-client.js.map +1 -0
  23. package/dist/cjs/bin/providers-trends.d.ts +3 -0
  24. package/dist/cjs/bin/providers-trends.d.ts.map +1 -0
  25. package/dist/cjs/bin/providers-trends.js +14 -0
  26. package/dist/cjs/bin/providers-trends.js.map +1 -0
  27. package/dist/cjs/bin/puppet-install.d.ts +3 -0
  28. package/dist/cjs/bin/puppet-install.d.ts.map +1 -0
  29. package/dist/cjs/bin/puppet-install.js +60 -0
  30. package/dist/cjs/bin/puppet-install.js.map +1 -0
  31. package/dist/cjs/bin/version.d.ts +22 -0
  32. package/dist/cjs/bin/version.d.ts.map +1 -0
  33. package/dist/cjs/bin/version.js +25 -0
  34. package/dist/cjs/bin/version.js.map +1 -0
  35. package/dist/cjs/examples/ding-dong-bot.d.ts +2 -0
  36. package/dist/cjs/examples/ding-dong-bot.d.ts.map +1 -0
  37. package/dist/cjs/examples/ding-dong-bot.js +183 -0
  38. package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
  39. package/dist/cjs/examples/video-post.d.ts +2 -0
  40. package/dist/cjs/examples/video-post.d.ts.map +1 -0
  41. package/dist/cjs/examples/video-post.js +75 -0
  42. package/dist/cjs/examples/video-post.js.map +1 -0
  43. package/dist/cjs/package.json +3 -0
  44. package/dist/cjs/scripts/retry-unit-tests.d.ts +3 -0
  45. package/dist/cjs/scripts/retry-unit-tests.d.ts.map +1 -0
  46. package/dist/cjs/scripts/retry-unit-tests.js +58 -0
  47. package/dist/cjs/scripts/retry-unit-tests.js.map +1 -0
  48. package/dist/cjs/scripts/sort-contributiveness.d.ts +3 -0
  49. package/dist/cjs/scripts/sort-contributiveness.d.ts.map +1 -0
  50. package/dist/cjs/scripts/sort-contributiveness.js +122 -0
  51. package/dist/cjs/scripts/sort-contributiveness.js.map +1 -0
  52. package/dist/cjs/scripts/update-license.d.ts +3 -0
  53. package/dist/cjs/scripts/update-license.d.ts.map +1 -0
  54. package/dist/cjs/scripts/update-license.js +163 -0
  55. package/dist/cjs/scripts/update-license.js.map +1 -0
  56. package/dist/cjs/src/cli/friday.d.ts +7 -0
  57. package/dist/cjs/src/cli/friday.d.ts.map +1 -0
  58. package/dist/cjs/src/cli/friday.js +18 -0
  59. package/dist/cjs/src/cli/friday.js.map +1 -0
  60. package/dist/cjs/src/cli/gateway.d.ts +17 -0
  61. package/dist/cjs/src/cli/gateway.d.ts.map +1 -0
  62. package/dist/cjs/src/cli/gateway.js +154 -0
  63. package/dist/cjs/src/cli/gateway.js.map +1 -0
  64. package/dist/cjs/src/cli/mod.d.ts +6 -0
  65. package/dist/cjs/src/cli/mod.d.ts.map +1 -0
  66. package/dist/cjs/src/cli/mod.js +14 -0
  67. package/dist/cjs/src/cli/mod.js.map +1 -0
  68. package/dist/cjs/src/cli/provider.d.ts +7 -0
  69. package/dist/cjs/src/cli/provider.d.ts.map +1 -0
  70. package/dist/cjs/src/cli/provider.js +18 -0
  71. package/dist/cjs/src/cli/provider.js.map +1 -0
  72. package/dist/cjs/src/cli/service.d.ts +7 -0
  73. package/dist/cjs/src/cli/service.d.ts.map +1 -0
  74. package/dist/cjs/src/cli/service.js +18 -0
  75. package/dist/cjs/src/cli/service.js.map +1 -0
  76. package/dist/cjs/src/cli/token.d.ts +39 -0
  77. package/dist/cjs/src/cli/token.d.ts.map +1 -0
  78. package/dist/cjs/src/cli/token.js +15 -0
  79. package/dist/cjs/src/cli/token.js.map +1 -0
  80. package/dist/cjs/src/config.d.ts +61 -0
  81. package/dist/cjs/src/config.d.ts.map +1 -0
  82. package/dist/cjs/src/config.js +110 -0
  83. package/dist/cjs/src/config.js.map +1 -0
  84. package/dist/cjs/src/config.spec.d.ts +22 -0
  85. package/dist/cjs/src/config.spec.d.ts.map +1 -0
  86. package/dist/cjs/src/config.spec.js +84 -0
  87. package/dist/cjs/src/config.spec.js.map +1 -0
  88. package/dist/cjs/src/doctor.d.ts +9 -0
  89. package/dist/cjs/src/doctor.d.ts.map +1 -0
  90. package/dist/cjs/src/doctor.js +82 -0
  91. package/dist/cjs/src/doctor.js.map +1 -0
  92. package/dist/cjs/src/helper-functions/open-graph.d.ts +22 -0
  93. package/dist/cjs/src/helper-functions/open-graph.d.ts.map +1 -0
  94. package/dist/cjs/src/helper-functions/open-graph.js +43 -0
  95. package/dist/cjs/src/helper-functions/open-graph.js.map +1 -0
  96. package/dist/cjs/src/helper-functions/stringify-filter.d.ts +3 -0
  97. package/dist/cjs/src/helper-functions/stringify-filter.d.ts.map +1 -0
  98. package/dist/cjs/src/helper-functions/stringify-filter.js +12 -0
  99. package/dist/cjs/src/helper-functions/stringify-filter.js.map +1 -0
  100. package/dist/cjs/src/io-client.d.ts +28 -0
  101. package/dist/cjs/src/io-client.d.ts.map +1 -0
  102. package/dist/cjs/src/io-client.js +217 -0
  103. package/dist/cjs/src/io-client.js.map +1 -0
  104. package/dist/cjs/src/io-peer/io-peer.d.ts +12 -0
  105. package/dist/cjs/src/io-peer/io-peer.d.ts.map +1 -0
  106. package/dist/cjs/src/io-peer/io-peer.js +71 -0
  107. package/dist/cjs/src/io-peer/io-peer.js.map +1 -0
  108. package/dist/cjs/src/io-peer/io-peer.spec.d.ts +3 -0
  109. package/dist/cjs/src/io-peer/io-peer.spec.d.ts.map +1 -0
  110. package/dist/cjs/src/io-peer/io-peer.spec.js +61 -0
  111. package/dist/cjs/src/io-peer/io-peer.spec.js.map +1 -0
  112. package/dist/cjs/src/io.d.ts +98 -0
  113. package/dist/cjs/src/io.d.ts.map +1 -0
  114. package/dist/cjs/src/io.js +468 -0
  115. package/dist/cjs/src/io.js.map +1 -0
  116. package/dist/cjs/src/io.spec.d.ts +3 -0
  117. package/dist/cjs/src/io.spec.d.ts.map +1 -0
  118. package/dist/cjs/src/io.spec.js +45 -0
  119. package/dist/cjs/src/io.spec.js.map +1 -0
  120. package/dist/cjs/src/mods/helpers.d.ts +2 -0
  121. package/dist/cjs/src/mods/helpers.d.ts.map +1 -0
  122. package/dist/cjs/src/mods/helpers.js +8 -0
  123. package/dist/cjs/src/mods/helpers.js.map +1 -0
  124. package/dist/cjs/src/mods/impls.d.ts +36 -0
  125. package/dist/cjs/src/mods/impls.d.ts.map +1 -0
  126. package/dist/cjs/src/mods/impls.js +53 -0
  127. package/dist/cjs/src/mods/impls.js.map +1 -0
  128. package/dist/cjs/src/mods/impls.spec.d.ts +3 -0
  129. package/dist/cjs/src/mods/impls.spec.d.ts.map +1 -0
  130. package/dist/cjs/src/mods/impls.spec.js +36 -0
  131. package/dist/cjs/src/mods/impls.spec.js.map +1 -0
  132. package/dist/cjs/src/mods/mod.d.ts +40 -0
  133. package/dist/cjs/src/mods/mod.d.ts.map +1 -0
  134. package/dist/cjs/src/mods/mod.js +67 -0
  135. package/dist/cjs/src/mods/mod.js.map +1 -0
  136. package/dist/cjs/src/mods/mod.spec.d.ts +3 -0
  137. package/dist/cjs/src/mods/mod.spec.d.ts.map +1 -0
  138. package/dist/cjs/src/mods/mod.spec.js +39 -0
  139. package/dist/cjs/src/mods/mod.spec.js.map +1 -0
  140. package/dist/cjs/src/mods/users.d.ts +26 -0
  141. package/dist/cjs/src/mods/users.d.ts.map +1 -0
  142. package/dist/cjs/src/mods/users.js +22 -0
  143. package/dist/cjs/src/mods/users.js.map +1 -0
  144. package/dist/cjs/src/package-json.d.ts +7 -0
  145. package/dist/cjs/src/package-json.d.ts.map +1 -0
  146. package/dist/cjs/src/package-json.js +178 -0
  147. package/dist/cjs/src/package-json.js.map +1 -0
  148. package/dist/cjs/src/package-json.spec.d.ts +3 -0
  149. package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
  150. package/dist/cjs/src/package-json.spec.js +17 -0
  151. package/dist/cjs/src/package-json.spec.js.map +1 -0
  152. package/dist/cjs/src/plugin.d.ts +9 -0
  153. package/dist/cjs/src/plugin.d.ts.map +1 -0
  154. package/dist/cjs/src/plugin.js +8 -0
  155. package/dist/cjs/src/plugin.js.map +1 -0
  156. package/dist/cjs/src/plugin.spec.d.ts +3 -0
  157. package/dist/cjs/src/plugin.spec.d.ts.map +1 -0
  158. package/dist/cjs/src/plugin.spec.js +70 -0
  159. package/dist/cjs/src/plugin.spec.js.map +1 -0
  160. package/dist/cjs/src/puppet-config.d.ts +78 -0
  161. package/dist/cjs/src/puppet-config.d.ts.map +1 -0
  162. package/dist/cjs/src/puppet-config.js +84 -0
  163. package/dist/cjs/src/puppet-config.js.map +1 -0
  164. package/dist/cjs/src/pure-functions/escape-regexp.d.ts +21 -0
  165. package/dist/cjs/src/pure-functions/escape-regexp.d.ts.map +1 -0
  166. package/dist/cjs/src/pure-functions/escape-regexp.js +27 -0
  167. package/dist/cjs/src/pure-functions/escape-regexp.js.map +1 -0
  168. package/dist/cjs/src/pure-functions/guard-qr-code-value.d.ts +2 -0
  169. package/dist/cjs/src/pure-functions/guard-qr-code-value.d.ts.map +1 -0
  170. package/dist/cjs/src/pure-functions/guard-qr-code-value.js +31 -0
  171. package/dist/cjs/src/pure-functions/guard-qr-code-value.js.map +1 -0
  172. package/dist/cjs/src/pure-functions/is-template-string-array.d.ts +3 -0
  173. package/dist/cjs/src/pure-functions/is-template-string-array.d.ts.map +1 -0
  174. package/dist/cjs/src/pure-functions/is-template-string-array.js +8 -0
  175. package/dist/cjs/src/pure-functions/is-template-string-array.js.map +1 -0
  176. package/dist/cjs/src/pure-functions/is-template-string-array.spec.d.ts +3 -0
  177. package/dist/cjs/src/pure-functions/is-template-string-array.spec.d.ts.map +1 -0
  178. package/dist/cjs/src/pure-functions/is-template-string-array.spec.js +40 -0
  179. package/dist/cjs/src/pure-functions/is-template-string-array.spec.js.map +1 -0
  180. package/dist/cjs/src/pure-functions/mod.d.ts +22 -0
  181. package/dist/cjs/src/pure-functions/mod.d.ts.map +1 -0
  182. package/dist/cjs/src/pure-functions/mod.js +32 -0
  183. package/dist/cjs/src/pure-functions/mod.js.map +1 -0
  184. package/dist/cjs/src/pure-functions/retry-policy.d.ts +10 -0
  185. package/dist/cjs/src/pure-functions/retry-policy.d.ts.map +1 -0
  186. package/dist/cjs/src/pure-functions/retry-policy.js +32 -0
  187. package/dist/cjs/src/pure-functions/retry-policy.js.map +1 -0
  188. package/dist/cjs/src/pure-functions/timestamp-to-date.d.ts +21 -0
  189. package/dist/cjs/src/pure-functions/timestamp-to-date.d.ts.map +1 -0
  190. package/dist/cjs/src/pure-functions/timestamp-to-date.js +35 -0
  191. package/dist/cjs/src/pure-functions/timestamp-to-date.js.map +1 -0
  192. package/dist/cjs/src/pure-functions/timestamp-to-date.spec.d.ts +3 -0
  193. package/dist/cjs/src/pure-functions/timestamp-to-date.spec.d.ts.map +1 -0
  194. package/dist/cjs/src/pure-functions/timestamp-to-date.spec.js +42 -0
  195. package/dist/cjs/src/pure-functions/timestamp-to-date.spec.js.map +1 -0
  196. package/dist/cjs/src/pure-functions/xml.d.ts +33 -0
  197. package/dist/cjs/src/pure-functions/xml.d.ts.map +1 -0
  198. package/dist/cjs/src/pure-functions/xml.js +83 -0
  199. package/dist/cjs/src/pure-functions/xml.js.map +1 -0
  200. package/dist/cjs/src/pure-functions/xml.spec.d.ts +3 -0
  201. package/dist/cjs/src/pure-functions/xml.spec.d.ts.map +1 -0
  202. package/dist/cjs/src/pure-functions/xml.spec.js +97 -0
  203. package/dist/cjs/src/pure-functions/xml.spec.js.map +1 -0
  204. package/dist/cjs/src/raven.d.ts +4 -0
  205. package/dist/cjs/src/raven.d.ts.map +1 -0
  206. package/dist/cjs/src/raven.js +83 -0
  207. package/dist/cjs/src/raven.js.map +1 -0
  208. package/dist/cjs/src/sayable/deliver-sayable.d.ts +8 -0
  209. package/dist/cjs/src/sayable/deliver-sayable.d.ts.map +1 -0
  210. package/dist/cjs/src/sayable/deliver-sayable.js +75 -0
  211. package/dist/cjs/src/sayable/deliver-sayable.js.map +1 -0
  212. package/dist/cjs/src/sayable/message-to-sayable.d.ts +5 -0
  213. package/dist/cjs/src/sayable/message-to-sayable.d.ts.map +1 -0
  214. package/dist/cjs/src/sayable/message-to-sayable.js +57 -0
  215. package/dist/cjs/src/sayable/message-to-sayable.js.map +1 -0
  216. package/dist/cjs/src/sayable/mod.d.ts +8 -0
  217. package/dist/cjs/src/sayable/mod.d.ts.map +1 -0
  218. package/dist/cjs/src/sayable/mod.js +12 -0
  219. package/dist/cjs/src/sayable/mod.js.map +1 -0
  220. package/dist/cjs/src/sayable/payload-to-sayable.d.ts +6 -0
  221. package/dist/cjs/src/sayable/payload-to-sayable.d.ts.map +1 -0
  222. package/dist/cjs/src/sayable/payload-to-sayable.js +55 -0
  223. package/dist/cjs/src/sayable/payload-to-sayable.js.map +1 -0
  224. package/dist/cjs/src/sayable/sayable-to-payload.d.ts +5 -0
  225. package/dist/cjs/src/sayable/sayable-to-payload.d.ts.map +1 -0
  226. package/dist/cjs/src/sayable/sayable-to-payload.js +73 -0
  227. package/dist/cjs/src/sayable/sayable-to-payload.js.map +1 -0
  228. package/dist/cjs/src/sayable/types.d.ts +30 -0
  229. package/dist/cjs/src/sayable/types.d.ts.map +1 -0
  230. package/dist/cjs/src/sayable/types.js +3 -0
  231. package/dist/cjs/src/sayable/types.js.map +1 -0
  232. package/dist/cjs/src/schemas/acceptable.d.ts +27 -0
  233. package/dist/cjs/src/schemas/acceptable.d.ts.map +1 -0
  234. package/dist/cjs/src/schemas/acceptable.js +3 -0
  235. package/dist/cjs/src/schemas/acceptable.js.map +1 -0
  236. package/dist/cjs/src/schemas/contact-events.d.ts +12 -0
  237. package/dist/cjs/src/schemas/contact-events.d.ts.map +1 -0
  238. package/dist/cjs/src/schemas/contact-events.js +7 -0
  239. package/dist/cjs/src/schemas/contact-events.js.map +1 -0
  240. package/dist/cjs/src/schemas/mod.d.ts +7 -0
  241. package/dist/cjs/src/schemas/mod.d.ts.map +1 -0
  242. package/dist/cjs/src/schemas/mod.js +10 -0
  243. package/dist/cjs/src/schemas/mod.js.map +1 -0
  244. package/dist/cjs/src/schemas/room-events.d.ts +103 -0
  245. package/dist/cjs/src/schemas/room-events.d.ts.map +1 -0
  246. package/dist/cjs/src/schemas/room-events.js +14 -0
  247. package/dist/cjs/src/schemas/room-events.js.map +1 -0
  248. package/dist/cjs/src/schemas/wechaty-events.d.ts +218 -0
  249. package/dist/cjs/src/schemas/wechaty-events.d.ts.map +1 -0
  250. package/dist/cjs/src/schemas/wechaty-events.js +41 -0
  251. package/dist/cjs/src/schemas/wechaty-events.js.map +1 -0
  252. package/dist/cjs/src/schemas/wechaty-options.d.ts +20 -0
  253. package/dist/cjs/src/schemas/wechaty-options.d.ts.map +1 -0
  254. package/dist/cjs/src/schemas/wechaty-options.js +3 -0
  255. package/dist/cjs/src/schemas/wechaty-options.js.map +1 -0
  256. package/dist/cjs/src/user-mixins/mod.d.ts +7 -0
  257. package/dist/cjs/src/user-mixins/mod.d.ts.map +1 -0
  258. package/dist/cjs/src/user-mixins/mod.js +11 -0
  259. package/dist/cjs/src/user-mixins/mod.js.map +1 -0
  260. package/dist/cjs/src/user-mixins/poolify.d.ts +32 -0
  261. package/dist/cjs/src/user-mixins/poolify.d.ts.map +1 -0
  262. package/dist/cjs/src/user-mixins/poolify.js +47 -0
  263. package/dist/cjs/src/user-mixins/poolify.js.map +1 -0
  264. package/dist/cjs/src/user-mixins/poolify.spec.d.ts +3 -0
  265. package/dist/cjs/src/user-mixins/poolify.spec.d.ts.map +1 -0
  266. package/dist/cjs/src/user-mixins/poolify.spec.js +53 -0
  267. package/dist/cjs/src/user-mixins/poolify.spec.js.map +1 -0
  268. package/dist/cjs/src/user-mixins/validation.d.ts +9 -0
  269. package/dist/cjs/src/user-mixins/validation.d.ts.map +1 -0
  270. package/dist/cjs/src/user-mixins/validation.js +29 -0
  271. package/dist/cjs/src/user-mixins/validation.js.map +1 -0
  272. package/dist/cjs/src/user-mixins/validation.spec.d.ts +3 -0
  273. package/dist/cjs/src/user-mixins/validation.spec.d.ts.map +1 -0
  274. package/dist/cjs/src/user-mixins/validation.spec.js +56 -0
  275. package/dist/cjs/src/user-mixins/validation.spec.js.map +1 -0
  276. package/dist/cjs/src/user-mixins/wechatify.d.ts +24 -0
  277. package/dist/cjs/src/user-mixins/wechatify.d.ts.map +1 -0
  278. package/dist/cjs/src/user-mixins/wechatify.js +47 -0
  279. package/dist/cjs/src/user-mixins/wechatify.js.map +1 -0
  280. package/dist/cjs/src/user-mixins/wechatify.spec.d.ts +3 -0
  281. package/dist/cjs/src/user-mixins/wechatify.spec.d.ts.map +1 -0
  282. package/dist/cjs/src/user-mixins/wechatify.spec.js +20 -0
  283. package/dist/cjs/src/user-mixins/wechatify.spec.js.map +1 -0
  284. package/dist/cjs/src/user-modules/contact-self.d.ts +110 -0
  285. package/dist/cjs/src/user-modules/contact-self.d.ts.map +1 -0
  286. package/dist/cjs/src/user-modules/contact-self.js +133 -0
  287. package/dist/cjs/src/user-modules/contact-self.js.map +1 -0
  288. package/dist/cjs/src/user-modules/contact.d.ts +388 -0
  289. package/dist/cjs/src/user-modules/contact.d.ts.map +1 -0
  290. package/dist/cjs/src/user-modules/contact.js +667 -0
  291. package/dist/cjs/src/user-modules/contact.js.map +1 -0
  292. package/dist/cjs/src/user-modules/contact.spec.d.ts +3 -0
  293. package/dist/cjs/src/user-modules/contact.spec.d.ts.map +1 -0
  294. package/dist/cjs/src/user-modules/contact.spec.js +71 -0
  295. package/dist/cjs/src/user-modules/contact.spec.js.map +1 -0
  296. package/dist/cjs/src/user-modules/delay.d.ts +47 -0
  297. package/dist/cjs/src/user-modules/delay.d.ts.map +1 -0
  298. package/dist/cjs/src/user-modules/delay.js +24 -0
  299. package/dist/cjs/src/user-modules/delay.js.map +1 -0
  300. package/dist/cjs/src/user-modules/favorite.d.ts +38 -0
  301. package/dist/cjs/src/user-modules/favorite.d.ts.map +1 -0
  302. package/dist/cjs/src/user-modules/favorite.js +68 -0
  303. package/dist/cjs/src/user-modules/favorite.js.map +1 -0
  304. package/dist/cjs/src/user-modules/friendship.d.ts +244 -0
  305. package/dist/cjs/src/user-modules/friendship.d.ts.map +1 -0
  306. package/dist/cjs/src/user-modules/friendship.js +369 -0
  307. package/dist/cjs/src/user-modules/friendship.js.map +1 -0
  308. package/dist/cjs/src/user-modules/image.d.ts +31 -0
  309. package/dist/cjs/src/user-modules/image.d.ts.map +1 -0
  310. package/dist/cjs/src/user-modules/image.js +81 -0
  311. package/dist/cjs/src/user-modules/image.js.map +1 -0
  312. package/dist/cjs/src/user-modules/location.d.ts +59 -0
  313. package/dist/cjs/src/user-modules/location.d.ts.map +1 -0
  314. package/dist/cjs/src/user-modules/location.js +58 -0
  315. package/dist/cjs/src/user-modules/location.js.map +1 -0
  316. package/dist/cjs/src/user-modules/message.d.ts +459 -0
  317. package/dist/cjs/src/user-modules/message.d.ts.map +1 -0
  318. package/dist/cjs/src/user-modules/message.js +932 -0
  319. package/dist/cjs/src/user-modules/message.js.map +1 -0
  320. package/dist/cjs/src/user-modules/message.spec.d.ts +22 -0
  321. package/dist/cjs/src/user-modules/message.spec.d.ts.map +1 -0
  322. package/dist/cjs/src/user-modules/message.spec.js +125 -0
  323. package/dist/cjs/src/user-modules/message.spec.js.map +1 -0
  324. package/dist/cjs/src/user-modules/mini-program.d.ts +59 -0
  325. package/dist/cjs/src/user-modules/mini-program.d.ts.map +1 -0
  326. package/dist/cjs/src/user-modules/mini-program.js +63 -0
  327. package/dist/cjs/src/user-modules/mini-program.js.map +1 -0
  328. package/dist/cjs/src/user-modules/mod.d.ts +40 -0
  329. package/dist/cjs/src/user-modules/mod.d.ts.map +1 -0
  330. package/dist/cjs/src/user-modules/mod.js +57 -0
  331. package/dist/cjs/src/user-modules/mod.js.map +1 -0
  332. package/dist/cjs/src/user-modules/moment.d.ts +28 -0
  333. package/dist/cjs/src/user-modules/moment.d.ts.map +1 -0
  334. package/dist/cjs/src/user-modules/moment.js +46 -0
  335. package/dist/cjs/src/user-modules/moment.js.map +1 -0
  336. package/dist/cjs/src/user-modules/money.d.ts +44 -0
  337. package/dist/cjs/src/user-modules/money.d.ts.map +1 -0
  338. package/dist/cjs/src/user-modules/money.js +14 -0
  339. package/dist/cjs/src/user-modules/money.js.map +1 -0
  340. package/dist/cjs/src/user-modules/post.d.ts +114 -0
  341. package/dist/cjs/src/user-modules/post.d.ts.map +1 -0
  342. package/dist/cjs/src/user-modules/post.js +372 -0
  343. package/dist/cjs/src/user-modules/post.js.map +1 -0
  344. package/dist/cjs/src/user-modules/post.spec.d.ts +3 -0
  345. package/dist/cjs/src/user-modules/post.spec.d.ts.map +1 -0
  346. package/dist/cjs/src/user-modules/post.spec.js +89 -0
  347. package/dist/cjs/src/user-modules/post.spec.js.map +1 -0
  348. package/dist/cjs/src/user-modules/room-invitation.d.ts +154 -0
  349. package/dist/cjs/src/user-modules/room-invitation.d.ts.map +1 -0
  350. package/dist/cjs/src/user-modules/room-invitation.js +201 -0
  351. package/dist/cjs/src/user-modules/room-invitation.js.map +1 -0
  352. package/dist/cjs/src/user-modules/room.d.ts +404 -0
  353. package/dist/cjs/src/user-modules/room.d.ts.map +1 -0
  354. package/dist/cjs/src/user-modules/room.js +932 -0
  355. package/dist/cjs/src/user-modules/room.js.map +1 -0
  356. package/dist/cjs/src/user-modules/room.spec.d.ts +3 -0
  357. package/dist/cjs/src/user-modules/room.spec.d.ts.map +1 -0
  358. package/dist/cjs/src/user-modules/room.spec.js +135 -0
  359. package/dist/cjs/src/user-modules/room.spec.js.map +1 -0
  360. package/dist/cjs/src/user-modules/tag.d.ts +92 -0
  361. package/dist/cjs/src/user-modules/tag.d.ts.map +1 -0
  362. package/dist/cjs/src/user-modules/tag.js +163 -0
  363. package/dist/cjs/src/user-modules/tag.js.map +1 -0
  364. package/dist/cjs/src/user-modules/url-link.d.ts +38 -0
  365. package/dist/cjs/src/user-modules/url-link.d.ts.map +1 -0
  366. package/dist/cjs/src/user-modules/url-link.js +116 -0
  367. package/dist/cjs/src/user-modules/url-link.js.map +1 -0
  368. package/dist/cjs/src/user-modules/url-link.spec.d.ts +3 -0
  369. package/dist/cjs/src/user-modules/url-link.spec.d.ts.map +1 -0
  370. package/dist/cjs/src/user-modules/url-link.spec.js +31 -0
  371. package/dist/cjs/src/user-modules/url-link.spec.js.map +1 -0
  372. package/dist/cjs/src/wechaty/mod.d.ts +6 -0
  373. package/dist/cjs/src/wechaty/mod.d.ts.map +1 -0
  374. package/dist/cjs/src/wechaty/mod.js +8 -0
  375. package/dist/cjs/src/wechaty/mod.js.map +1 -0
  376. package/dist/cjs/src/wechaty/wechaty-base.d.ts +545 -0
  377. package/dist/cjs/src/wechaty/wechaty-base.d.ts.map +1 -0
  378. package/dist/cjs/src/wechaty/wechaty-base.js +221 -0
  379. package/dist/cjs/src/wechaty/wechaty-base.js.map +1 -0
  380. package/dist/cjs/src/wechaty/wechaty-base.spec.d.ts +14 -0
  381. package/dist/cjs/src/wechaty/wechaty-base.spec.d.ts.map +1 -0
  382. package/dist/cjs/src/wechaty/wechaty-base.spec.js +288 -0
  383. package/dist/cjs/src/wechaty/wechaty-base.spec.js.map +1 -0
  384. package/dist/cjs/src/wechaty/wechaty-impl.d.ts +56 -0
  385. package/dist/cjs/src/wechaty/wechaty-impl.d.ts.map +1 -0
  386. package/dist/cjs/src/wechaty/wechaty-impl.js +17 -0
  387. package/dist/cjs/src/wechaty/wechaty-impl.js.map +1 -0
  388. package/dist/cjs/src/wechaty/wechaty-impl.spec.d.ts +3 -0
  389. package/dist/cjs/src/wechaty/wechaty-impl.spec.d.ts.map +1 -0
  390. package/dist/cjs/src/wechaty/wechaty-impl.spec.js +64 -0
  391. package/dist/cjs/src/wechaty/wechaty-impl.spec.js.map +1 -0
  392. package/dist/cjs/src/wechaty/wechaty-skeleton.d.ts +51 -0
  393. package/dist/cjs/src/wechaty/wechaty-skeleton.d.ts.map +1 -0
  394. package/dist/cjs/src/wechaty/wechaty-skeleton.js +119 -0
  395. package/dist/cjs/src/wechaty/wechaty-skeleton.js.map +1 -0
  396. package/dist/cjs/src/wechaty/wechaty-skelton.spec.d.ts +3 -0
  397. package/dist/cjs/src/wechaty/wechaty-skelton.spec.d.ts.map +1 -0
  398. package/dist/cjs/src/wechaty/wechaty-skelton.spec.js +9 -0
  399. package/dist/cjs/src/wechaty/wechaty-skelton.spec.js.map +1 -0
  400. package/dist/cjs/src/wechaty-builder.d.ts +38 -0
  401. package/dist/cjs/src/wechaty-builder.d.ts.map +1 -0
  402. package/dist/cjs/src/wechaty-builder.js +98 -0
  403. package/dist/cjs/src/wechaty-builder.js.map +1 -0
  404. package/dist/cjs/src/wechaty-builder.spec.d.ts +22 -0
  405. package/dist/cjs/src/wechaty-builder.spec.d.ts.map +1 -0
  406. package/dist/cjs/src/wechaty-builder.spec.js +66 -0
  407. package/dist/cjs/src/wechaty-builder.spec.js.map +1 -0
  408. package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts +52 -0
  409. package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts.map +1 -0
  410. package/dist/cjs/src/wechaty-mixins/gerror-mixin.js +54 -0
  411. package/dist/cjs/src/wechaty-mixins/gerror-mixin.js.map +1 -0
  412. package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.d.ts +3 -0
  413. package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.d.ts.map +1 -0
  414. package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.js +9 -0
  415. package/dist/cjs/src/wechaty-mixins/gerror-mixin.spec.js.map +1 -0
  416. package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts +75 -0
  417. package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts.map +1 -0
  418. package/dist/cjs/src/wechaty-mixins/io-mixin.js +86 -0
  419. package/dist/cjs/src/wechaty-mixins/io-mixin.js.map +1 -0
  420. package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts +290 -0
  421. package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts.map +1 -0
  422. package/dist/cjs/src/wechaty-mixins/login-mixin.js +89 -0
  423. package/dist/cjs/src/wechaty-mixins/login-mixin.js.map +1 -0
  424. package/dist/cjs/src/wechaty-mixins/login-mixin.spec.d.ts +3 -0
  425. package/dist/cjs/src/wechaty-mixins/login-mixin.spec.d.ts.map +1 -0
  426. package/dist/cjs/src/wechaty-mixins/login-mixin.spec.js +9 -0
  427. package/dist/cjs/src/wechaty-mixins/login-mixin.spec.js.map +1 -0
  428. package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts +295 -0
  429. package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts.map +1 -0
  430. package/dist/cjs/src/wechaty-mixins/misc-mixin.js +67 -0
  431. package/dist/cjs/src/wechaty-mixins/misc-mixin.js.map +1 -0
  432. package/dist/cjs/src/wechaty-mixins/mod.d.ts +18 -0
  433. package/dist/cjs/src/wechaty-mixins/mod.d.ts.map +1 -0
  434. package/dist/cjs/src/wechaty-mixins/mod.js +18 -0
  435. package/dist/cjs/src/wechaty-mixins/mod.js.map +1 -0
  436. package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts +384 -0
  437. package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts.map +1 -0
  438. package/dist/cjs/src/wechaty-mixins/plugin-mixin.js +56 -0
  439. package/dist/cjs/src/wechaty-mixins/plugin-mixin.js.map +1 -0
  440. package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.d.ts +13 -0
  441. package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.d.ts.map +1 -0
  442. package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.js +60 -0
  443. package/dist/cjs/src/wechaty-mixins/plugin-mixin.spec.js.map +1 -0
  444. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts +194 -0
  445. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -0
  446. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js +425 -0
  447. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js.map +1 -0
  448. package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.d.ts +3 -0
  449. package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.d.ts.map +1 -0
  450. package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.js +9 -0
  451. package/dist/cjs/src/wechaty-mixins/puppet-mixin.spec.js.map +1 -0
  452. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +61 -0
  453. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts.map +1 -0
  454. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.js +84 -0
  455. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.js.map +1 -0
  456. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts +3 -0
  457. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts.map +1 -0
  458. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.js +9 -0
  459. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.spec.js.map +1 -0
  460. package/dist/cjs/tests/electron.spec.d.ts +3 -0
  461. package/dist/cjs/tests/electron.spec.d.ts.map +1 -0
  462. package/dist/cjs/tests/electron.spec.js +30 -0
  463. package/dist/cjs/tests/electron.spec.js.map +1 -0
  464. package/dist/cjs/tests/node.spec.d.ts +3 -0
  465. package/dist/cjs/tests/node.spec.d.ts.map +1 -0
  466. package/dist/cjs/tests/node.spec.js +43 -0
  467. package/dist/cjs/tests/node.spec.js.map +1 -0
  468. package/dist/esm/bin/cli.d.ts +14 -0
  469. package/dist/esm/bin/cli.d.ts.map +1 -0
  470. package/dist/esm/bin/cli.js +25 -0
  471. package/dist/esm/bin/cli.js.map +1 -0
  472. package/dist/esm/bin/doctor.d.ts +22 -0
  473. package/dist/esm/bin/doctor.d.ts.map +1 -0
  474. package/dist/esm/bin/doctor.js +50 -0
  475. package/dist/esm/bin/doctor.js.map +1 -0
  476. package/dist/esm/bin/io-client.d.ts +22 -0
  477. package/dist/esm/bin/io-client.d.ts.map +1 -0
  478. package/dist/esm/bin/io-client.js +72 -0
  479. package/dist/esm/bin/io-client.js.map +1 -0
  480. package/dist/esm/bin/providers-trends.d.ts +3 -0
  481. package/dist/esm/bin/providers-trends.d.ts.map +1 -0
  482. package/dist/esm/bin/providers-trends.js +12 -0
  483. package/dist/esm/bin/providers-trends.js.map +1 -0
  484. package/dist/esm/bin/puppet-install.d.ts +3 -0
  485. package/dist/esm/bin/puppet-install.d.ts.map +1 -0
  486. package/dist/esm/bin/puppet-install.js +55 -0
  487. package/dist/esm/bin/puppet-install.js.map +1 -0
  488. package/dist/esm/bin/version.d.ts +22 -0
  489. package/dist/esm/bin/version.d.ts.map +1 -0
  490. package/dist/esm/bin/version.js +23 -0
  491. package/dist/esm/bin/version.js.map +1 -0
  492. package/dist/esm/examples/ding-dong-bot.d.ts +2 -0
  493. package/dist/esm/examples/ding-dong-bot.d.ts.map +1 -0
  494. package/dist/esm/examples/ding-dong-bot.js +178 -0
  495. package/dist/esm/examples/ding-dong-bot.js.map +1 -0
  496. package/dist/esm/examples/video-post.d.ts +2 -0
  497. package/dist/esm/examples/video-post.d.ts.map +1 -0
  498. package/dist/esm/examples/video-post.js +70 -0
  499. package/dist/esm/examples/video-post.js.map +1 -0
  500. package/dist/esm/scripts/retry-unit-tests.d.ts +3 -0
  501. package/dist/esm/scripts/retry-unit-tests.d.ts.map +1 -0
  502. package/dist/esm/scripts/retry-unit-tests.js +56 -0
  503. package/dist/esm/scripts/retry-unit-tests.js.map +1 -0
  504. package/dist/esm/scripts/sort-contributiveness.d.ts +3 -0
  505. package/dist/esm/scripts/sort-contributiveness.d.ts.map +1 -0
  506. package/dist/esm/scripts/sort-contributiveness.js +117 -0
  507. package/dist/esm/scripts/sort-contributiveness.js.map +1 -0
  508. package/dist/esm/scripts/update-license.d.ts +3 -0
  509. package/dist/esm/scripts/update-license.d.ts.map +1 -0
  510. package/dist/esm/scripts/update-license.js +163 -0
  511. package/dist/esm/scripts/update-license.js.map +1 -0
  512. package/dist/esm/src/cli/friday.d.ts +7 -0
  513. package/dist/esm/src/cli/friday.d.ts.map +1 -0
  514. package/dist/esm/src/cli/friday.js +15 -0
  515. package/dist/esm/src/cli/friday.js.map +1 -0
  516. package/dist/esm/src/cli/gateway.d.ts +17 -0
  517. package/dist/esm/src/cli/gateway.d.ts.map +1 -0
  518. package/dist/esm/src/cli/gateway.js +148 -0
  519. package/dist/esm/src/cli/gateway.js.map +1 -0
  520. package/dist/esm/src/cli/mod.d.ts +6 -0
  521. package/dist/esm/src/cli/mod.d.ts.map +1 -0
  522. package/dist/esm/src/cli/mod.js +6 -0
  523. package/dist/esm/src/cli/mod.js.map +1 -0
  524. package/dist/esm/src/cli/provider.d.ts +7 -0
  525. package/dist/esm/src/cli/provider.d.ts.map +1 -0
  526. package/dist/esm/src/cli/provider.js +15 -0
  527. package/dist/esm/src/cli/provider.js.map +1 -0
  528. package/dist/esm/src/cli/service.d.ts +7 -0
  529. package/dist/esm/src/cli/service.d.ts.map +1 -0
  530. package/dist/esm/src/cli/service.js +15 -0
  531. package/dist/esm/src/cli/service.js.map +1 -0
  532. package/dist/esm/src/cli/token.d.ts +39 -0
  533. package/dist/esm/src/cli/token.d.ts.map +1 -0
  534. package/dist/esm/src/cli/token.js +12 -0
  535. package/dist/esm/src/cli/token.js.map +1 -0
  536. package/dist/esm/src/config.d.ts +61 -0
  537. package/dist/esm/src/config.d.ts.map +1 -0
  538. package/dist/esm/src/config.js +100 -0
  539. package/dist/esm/src/config.js.map +1 -0
  540. package/dist/esm/src/config.spec.d.ts +22 -0
  541. package/dist/esm/src/config.spec.d.ts.map +1 -0
  542. package/dist/esm/src/config.spec.js +82 -0
  543. package/dist/esm/src/config.spec.js.map +1 -0
  544. package/dist/esm/src/doctor.d.ts +9 -0
  545. package/dist/esm/src/doctor.d.ts.map +1 -0
  546. package/dist/esm/src/doctor.js +78 -0
  547. package/dist/esm/src/doctor.js.map +1 -0
  548. package/dist/esm/src/helper-functions/open-graph.d.ts +22 -0
  549. package/dist/esm/src/helper-functions/open-graph.d.ts.map +1 -0
  550. package/dist/esm/src/helper-functions/open-graph.js +36 -0
  551. package/dist/esm/src/helper-functions/open-graph.js.map +1 -0
  552. package/dist/esm/src/helper-functions/stringify-filter.d.ts +3 -0
  553. package/dist/esm/src/helper-functions/stringify-filter.d.ts.map +1 -0
  554. package/dist/esm/src/helper-functions/stringify-filter.js +9 -0
  555. package/dist/esm/src/helper-functions/stringify-filter.js.map +1 -0
  556. package/dist/esm/src/io-client.d.ts +28 -0
  557. package/dist/esm/src/io-client.d.ts.map +1 -0
  558. package/dist/esm/src/io-client.js +213 -0
  559. package/dist/esm/src/io-client.js.map +1 -0
  560. package/dist/esm/src/io-peer/io-peer.d.ts +12 -0
  561. package/dist/esm/src/io-peer/io-peer.d.ts.map +1 -0
  562. package/dist/esm/src/io-peer/io-peer.js +61 -0
  563. package/dist/esm/src/io-peer/io-peer.js.map +1 -0
  564. package/dist/esm/src/io-peer/io-peer.spec.d.ts +3 -0
  565. package/dist/esm/src/io-peer/io-peer.spec.d.ts.map +1 -0
  566. package/dist/esm/src/io-peer/io-peer.spec.js +56 -0
  567. package/dist/esm/src/io-peer/io-peer.spec.js.map +1 -0
  568. package/dist/esm/src/io.d.ts +98 -0
  569. package/dist/esm/src/io.d.ts.map +1 -0
  570. package/dist/esm/src/io.js +438 -0
  571. package/dist/esm/src/io.js.map +1 -0
  572. package/dist/esm/src/io.spec.d.ts +3 -0
  573. package/dist/esm/src/io.spec.d.ts.map +1 -0
  574. package/dist/esm/src/io.spec.js +43 -0
  575. package/dist/esm/src/io.spec.js.map +1 -0
  576. package/dist/esm/src/mods/helpers.d.ts +2 -0
  577. package/dist/esm/src/mods/helpers.d.ts.map +1 -0
  578. package/dist/esm/src/mods/helpers.js +2 -0
  579. package/dist/esm/src/mods/helpers.js.map +1 -0
  580. package/dist/esm/src/mods/impls.d.ts +36 -0
  581. package/dist/esm/src/mods/impls.d.ts.map +1 -0
  582. package/dist/esm/src/mods/impls.js +33 -0
  583. package/dist/esm/src/mods/impls.js.map +1 -0
  584. package/dist/esm/src/mods/impls.spec.d.ts +3 -0
  585. package/dist/esm/src/mods/impls.spec.d.ts.map +1 -0
  586. package/dist/esm/src/mods/impls.spec.js +11 -0
  587. package/dist/esm/src/mods/impls.spec.js.map +1 -0
  588. package/dist/esm/src/mods/mod.d.ts +40 -0
  589. package/dist/esm/src/mods/mod.d.ts.map +1 -0
  590. package/dist/esm/src/mods/mod.js +31 -0
  591. package/dist/esm/src/mods/mod.js.map +1 -0
  592. package/dist/esm/src/mods/mod.spec.d.ts +3 -0
  593. package/dist/esm/src/mods/mod.spec.d.ts.map +1 -0
  594. package/dist/esm/src/mods/mod.spec.js +14 -0
  595. package/dist/esm/src/mods/mod.spec.js.map +1 -0
  596. package/dist/esm/src/mods/users.d.ts +26 -0
  597. package/dist/esm/src/mods/users.d.ts.map +1 -0
  598. package/dist/esm/src/mods/users.js +21 -0
  599. package/dist/esm/src/mods/users.js.map +1 -0
  600. package/dist/esm/src/package-json.d.ts +7 -0
  601. package/dist/esm/src/package-json.d.ts.map +1 -0
  602. package/dist/esm/src/package-json.js +175 -0
  603. package/dist/esm/src/package-json.js.map +1 -0
  604. package/dist/esm/src/package-json.spec.d.ts +3 -0
  605. package/dist/esm/src/package-json.spec.d.ts.map +1 -0
  606. package/dist/esm/src/package-json.spec.js +15 -0
  607. package/dist/esm/src/package-json.spec.js.map +1 -0
  608. package/dist/esm/src/plugin.d.ts +9 -0
  609. package/dist/esm/src/plugin.d.ts.map +1 -0
  610. package/dist/esm/src/plugin.js +5 -0
  611. package/dist/esm/src/plugin.js.map +1 -0
  612. package/dist/esm/src/plugin.spec.d.ts +3 -0
  613. package/dist/esm/src/plugin.spec.d.ts.map +1 -0
  614. package/dist/esm/src/plugin.spec.js +68 -0
  615. package/dist/esm/src/plugin.spec.js.map +1 -0
  616. package/dist/esm/src/puppet-config.d.ts +78 -0
  617. package/dist/esm/src/puppet-config.d.ts.map +1 -0
  618. package/dist/esm/src/puppet-config.js +80 -0
  619. package/dist/esm/src/puppet-config.js.map +1 -0
  620. package/dist/esm/src/pure-functions/escape-regexp.d.ts +21 -0
  621. package/dist/esm/src/pure-functions/escape-regexp.d.ts.map +1 -0
  622. package/dist/esm/src/pure-functions/escape-regexp.js +23 -0
  623. package/dist/esm/src/pure-functions/escape-regexp.js.map +1 -0
  624. package/dist/esm/src/pure-functions/guard-qr-code-value.d.ts +2 -0
  625. package/dist/esm/src/pure-functions/guard-qr-code-value.d.ts.map +1 -0
  626. package/dist/esm/src/pure-functions/guard-qr-code-value.js +27 -0
  627. package/dist/esm/src/pure-functions/guard-qr-code-value.js.map +1 -0
  628. package/dist/esm/src/pure-functions/is-template-string-array.d.ts +3 -0
  629. package/dist/esm/src/pure-functions/is-template-string-array.d.ts.map +1 -0
  630. package/dist/esm/src/pure-functions/is-template-string-array.js +5 -0
  631. package/dist/esm/src/pure-functions/is-template-string-array.js.map +1 -0
  632. package/dist/esm/src/pure-functions/is-template-string-array.spec.d.ts +3 -0
  633. package/dist/esm/src/pure-functions/is-template-string-array.spec.d.ts.map +1 -0
  634. package/dist/esm/src/pure-functions/is-template-string-array.spec.js +38 -0
  635. package/dist/esm/src/pure-functions/is-template-string-array.spec.js.map +1 -0
  636. package/dist/esm/src/pure-functions/mod.d.ts +22 -0
  637. package/dist/esm/src/pure-functions/mod.d.ts.map +1 -0
  638. package/dist/esm/src/pure-functions/mod.js +22 -0
  639. package/dist/esm/src/pure-functions/mod.js.map +1 -0
  640. package/dist/esm/src/pure-functions/retry-policy.d.ts +10 -0
  641. package/dist/esm/src/pure-functions/retry-policy.d.ts.map +1 -0
  642. package/dist/esm/src/pure-functions/retry-policy.js +29 -0
  643. package/dist/esm/src/pure-functions/retry-policy.js.map +1 -0
  644. package/dist/esm/src/pure-functions/timestamp-to-date.d.ts +21 -0
  645. package/dist/esm/src/pure-functions/timestamp-to-date.d.ts.map +1 -0
  646. package/dist/esm/src/pure-functions/timestamp-to-date.js +31 -0
  647. package/dist/esm/src/pure-functions/timestamp-to-date.js.map +1 -0
  648. package/dist/esm/src/pure-functions/timestamp-to-date.spec.d.ts +3 -0
  649. package/dist/esm/src/pure-functions/timestamp-to-date.spec.d.ts.map +1 -0
  650. package/dist/esm/src/pure-functions/timestamp-to-date.spec.js +40 -0
  651. package/dist/esm/src/pure-functions/timestamp-to-date.spec.js.map +1 -0
  652. package/dist/esm/src/pure-functions/xml.d.ts +33 -0
  653. package/dist/esm/src/pure-functions/xml.d.ts.map +1 -0
  654. package/dist/esm/src/pure-functions/xml.js +74 -0
  655. package/dist/esm/src/pure-functions/xml.js.map +1 -0
  656. package/dist/esm/src/pure-functions/xml.spec.d.ts +3 -0
  657. package/dist/esm/src/pure-functions/xml.spec.d.ts.map +1 -0
  658. package/dist/esm/src/pure-functions/xml.spec.js +95 -0
  659. package/dist/esm/src/pure-functions/xml.spec.js.map +1 -0
  660. package/dist/esm/src/raven.d.ts +4 -0
  661. package/dist/esm/src/raven.d.ts.map +1 -0
  662. package/dist/esm/src/raven.js +54 -0
  663. package/dist/esm/src/raven.js.map +1 -0
  664. package/dist/esm/src/sayable/deliver-sayable.d.ts +8 -0
  665. package/dist/esm/src/sayable/deliver-sayable.d.ts.map +1 -0
  666. package/dist/esm/src/sayable/deliver-sayable.js +72 -0
  667. package/dist/esm/src/sayable/deliver-sayable.js.map +1 -0
  668. package/dist/esm/src/sayable/message-to-sayable.d.ts +5 -0
  669. package/dist/esm/src/sayable/message-to-sayable.d.ts.map +1 -0
  670. package/dist/esm/src/sayable/message-to-sayable.js +31 -0
  671. package/dist/esm/src/sayable/message-to-sayable.js.map +1 -0
  672. package/dist/esm/src/sayable/mod.d.ts +8 -0
  673. package/dist/esm/src/sayable/mod.d.ts.map +1 -0
  674. package/dist/esm/src/sayable/mod.js +6 -0
  675. package/dist/esm/src/sayable/mod.js.map +1 -0
  676. package/dist/esm/src/sayable/payload-to-sayable.d.ts +6 -0
  677. package/dist/esm/src/sayable/payload-to-sayable.d.ts.map +1 -0
  678. package/dist/esm/src/sayable/payload-to-sayable.js +29 -0
  679. package/dist/esm/src/sayable/payload-to-sayable.js.map +1 -0
  680. package/dist/esm/src/sayable/sayable-to-payload.d.ts +5 -0
  681. package/dist/esm/src/sayable/sayable-to-payload.d.ts.map +1 -0
  682. package/dist/esm/src/sayable/sayable-to-payload.js +47 -0
  683. package/dist/esm/src/sayable/sayable-to-payload.js.map +1 -0
  684. package/dist/esm/src/sayable/types.d.ts +30 -0
  685. package/dist/esm/src/sayable/types.d.ts.map +1 -0
  686. package/dist/esm/src/sayable/types.js +2 -0
  687. package/dist/esm/src/sayable/types.js.map +1 -0
  688. package/dist/esm/src/schemas/acceptable.d.ts +27 -0
  689. package/dist/esm/src/schemas/acceptable.d.ts.map +1 -0
  690. package/dist/esm/src/schemas/acceptable.js +2 -0
  691. package/dist/esm/src/schemas/acceptable.js.map +1 -0
  692. package/dist/esm/src/schemas/contact-events.d.ts +12 -0
  693. package/dist/esm/src/schemas/contact-events.d.ts.map +1 -0
  694. package/dist/esm/src/schemas/contact-events.js +4 -0
  695. package/dist/esm/src/schemas/contact-events.js.map +1 -0
  696. package/dist/esm/src/schemas/mod.d.ts +7 -0
  697. package/dist/esm/src/schemas/mod.d.ts.map +1 -0
  698. package/dist/esm/src/schemas/mod.js +5 -0
  699. package/dist/esm/src/schemas/mod.js.map +1 -0
  700. package/dist/esm/src/schemas/room-events.d.ts +103 -0
  701. package/dist/esm/src/schemas/room-events.d.ts.map +1 -0
  702. package/dist/esm/src/schemas/room-events.js +11 -0
  703. package/dist/esm/src/schemas/room-events.js.map +1 -0
  704. package/dist/esm/src/schemas/wechaty-events.d.ts +218 -0
  705. package/dist/esm/src/schemas/wechaty-events.d.ts.map +1 -0
  706. package/dist/esm/src/schemas/wechaty-events.js +15 -0
  707. package/dist/esm/src/schemas/wechaty-events.js.map +1 -0
  708. package/dist/esm/src/schemas/wechaty-options.d.ts +20 -0
  709. package/dist/esm/src/schemas/wechaty-options.d.ts.map +1 -0
  710. package/dist/esm/src/schemas/wechaty-options.js +2 -0
  711. package/dist/esm/src/schemas/wechaty-options.js.map +1 -0
  712. package/dist/esm/src/user-mixins/mod.d.ts +7 -0
  713. package/dist/esm/src/user-mixins/mod.d.ts.map +1 -0
  714. package/dist/esm/src/user-mixins/mod.js +5 -0
  715. package/dist/esm/src/user-mixins/mod.js.map +1 -0
  716. package/dist/esm/src/user-mixins/poolify.d.ts +32 -0
  717. package/dist/esm/src/user-mixins/poolify.d.ts.map +1 -0
  718. package/dist/esm/src/user-mixins/poolify.js +44 -0
  719. package/dist/esm/src/user-mixins/poolify.js.map +1 -0
  720. package/dist/esm/src/user-mixins/poolify.spec.d.ts +3 -0
  721. package/dist/esm/src/user-mixins/poolify.spec.d.ts.map +1 -0
  722. package/dist/esm/src/user-mixins/poolify.spec.js +51 -0
  723. package/dist/esm/src/user-mixins/poolify.spec.js.map +1 -0
  724. package/dist/esm/src/user-mixins/validation.d.ts +9 -0
  725. package/dist/esm/src/user-mixins/validation.d.ts.map +1 -0
  726. package/dist/esm/src/user-mixins/validation.js +26 -0
  727. package/dist/esm/src/user-mixins/validation.js.map +1 -0
  728. package/dist/esm/src/user-mixins/validation.spec.d.ts +3 -0
  729. package/dist/esm/src/user-mixins/validation.spec.d.ts.map +1 -0
  730. package/dist/esm/src/user-mixins/validation.spec.js +54 -0
  731. package/dist/esm/src/user-mixins/validation.spec.js.map +1 -0
  732. package/dist/esm/src/user-mixins/wechatify.d.ts +24 -0
  733. package/dist/esm/src/user-mixins/wechatify.d.ts.map +1 -0
  734. package/dist/esm/src/user-mixins/wechatify.js +41 -0
  735. package/dist/esm/src/user-mixins/wechatify.js.map +1 -0
  736. package/dist/esm/src/user-mixins/wechatify.spec.d.ts +3 -0
  737. package/dist/esm/src/user-mixins/wechatify.spec.d.ts.map +1 -0
  738. package/dist/esm/src/user-mixins/wechatify.spec.js +18 -0
  739. package/dist/esm/src/user-mixins/wechatify.spec.js.map +1 -0
  740. package/dist/esm/src/user-modules/contact-self.d.ts +110 -0
  741. package/dist/esm/src/user-modules/contact-self.d.ts.map +1 -0
  742. package/dist/esm/src/user-modules/contact-self.js +130 -0
  743. package/dist/esm/src/user-modules/contact-self.js.map +1 -0
  744. package/dist/esm/src/user-modules/contact.d.ts +388 -0
  745. package/dist/esm/src/user-modules/contact.d.ts.map +1 -0
  746. package/dist/esm/src/user-modules/contact.js +641 -0
  747. package/dist/esm/src/user-modules/contact.js.map +1 -0
  748. package/dist/esm/src/user-modules/contact.spec.d.ts +3 -0
  749. package/dist/esm/src/user-modules/contact.spec.d.ts.map +1 -0
  750. package/dist/esm/src/user-modules/contact.spec.js +69 -0
  751. package/dist/esm/src/user-modules/contact.spec.js.map +1 -0
  752. package/dist/esm/src/user-modules/delay.d.ts +47 -0
  753. package/dist/esm/src/user-modules/delay.d.ts.map +1 -0
  754. package/dist/esm/src/user-modules/delay.js +21 -0
  755. package/dist/esm/src/user-modules/delay.js.map +1 -0
  756. package/dist/esm/src/user-modules/favorite.d.ts +38 -0
  757. package/dist/esm/src/user-modules/favorite.d.ts.map +1 -0
  758. package/dist/esm/src/user-modules/favorite.js +65 -0
  759. package/dist/esm/src/user-modules/favorite.js.map +1 -0
  760. package/dist/esm/src/user-modules/friendship.d.ts +244 -0
  761. package/dist/esm/src/user-modules/friendship.d.ts.map +1 -0
  762. package/dist/esm/src/user-modules/friendship.js +343 -0
  763. package/dist/esm/src/user-modules/friendship.js.map +1 -0
  764. package/dist/esm/src/user-modules/image.d.ts +31 -0
  765. package/dist/esm/src/user-modules/image.d.ts.map +1 -0
  766. package/dist/esm/src/user-modules/image.js +55 -0
  767. package/dist/esm/src/user-modules/image.js.map +1 -0
  768. package/dist/esm/src/user-modules/location.d.ts +59 -0
  769. package/dist/esm/src/user-modules/location.d.ts.map +1 -0
  770. package/dist/esm/src/user-modules/location.js +55 -0
  771. package/dist/esm/src/user-modules/location.js.map +1 -0
  772. package/dist/esm/src/user-modules/message.d.ts +459 -0
  773. package/dist/esm/src/user-modules/message.d.ts.map +1 -0
  774. package/dist/esm/src/user-modules/message.js +906 -0
  775. package/dist/esm/src/user-modules/message.js.map +1 -0
  776. package/dist/esm/src/user-modules/message.spec.d.ts +22 -0
  777. package/dist/esm/src/user-modules/message.spec.d.ts.map +1 -0
  778. package/dist/esm/src/user-modules/message.spec.js +100 -0
  779. package/dist/esm/src/user-modules/message.spec.js.map +1 -0
  780. package/dist/esm/src/user-modules/mini-program.d.ts +59 -0
  781. package/dist/esm/src/user-modules/mini-program.d.ts.map +1 -0
  782. package/dist/esm/src/user-modules/mini-program.js +60 -0
  783. package/dist/esm/src/user-modules/mini-program.js.map +1 -0
  784. package/dist/esm/src/user-modules/mod.d.ts +40 -0
  785. package/dist/esm/src/user-modules/mod.d.ts.map +1 -0
  786. package/dist/esm/src/user-modules/mod.js +38 -0
  787. package/dist/esm/src/user-modules/mod.js.map +1 -0
  788. package/dist/esm/src/user-modules/moment.d.ts +28 -0
  789. package/dist/esm/src/user-modules/moment.d.ts.map +1 -0
  790. package/dist/esm/src/user-modules/moment.js +43 -0
  791. package/dist/esm/src/user-modules/moment.js.map +1 -0
  792. package/dist/esm/src/user-modules/money.d.ts +44 -0
  793. package/dist/esm/src/user-modules/money.d.ts.map +1 -0
  794. package/dist/esm/src/user-modules/money.js +11 -0
  795. package/dist/esm/src/user-modules/money.js.map +1 -0
  796. package/dist/esm/src/user-modules/post.d.ts +114 -0
  797. package/dist/esm/src/user-modules/post.d.ts.map +1 -0
  798. package/dist/esm/src/user-modules/post.js +345 -0
  799. package/dist/esm/src/user-modules/post.js.map +1 -0
  800. package/dist/esm/src/user-modules/post.spec.d.ts +3 -0
  801. package/dist/esm/src/user-modules/post.spec.d.ts.map +1 -0
  802. package/dist/esm/src/user-modules/post.spec.js +61 -0
  803. package/dist/esm/src/user-modules/post.spec.js.map +1 -0
  804. package/dist/esm/src/user-modules/room-invitation.d.ts +154 -0
  805. package/dist/esm/src/user-modules/room-invitation.d.ts.map +1 -0
  806. package/dist/esm/src/user-modules/room-invitation.js +198 -0
  807. package/dist/esm/src/user-modules/room-invitation.js.map +1 -0
  808. package/dist/esm/src/user-modules/room.d.ts +404 -0
  809. package/dist/esm/src/user-modules/room.d.ts.map +1 -0
  810. package/dist/esm/src/user-modules/room.js +929 -0
  811. package/dist/esm/src/user-modules/room.js.map +1 -0
  812. package/dist/esm/src/user-modules/room.spec.d.ts +3 -0
  813. package/dist/esm/src/user-modules/room.spec.d.ts.map +1 -0
  814. package/dist/esm/src/user-modules/room.spec.js +133 -0
  815. package/dist/esm/src/user-modules/room.spec.js.map +1 -0
  816. package/dist/esm/src/user-modules/tag.d.ts +92 -0
  817. package/dist/esm/src/user-modules/tag.d.ts.map +1 -0
  818. package/dist/esm/src/user-modules/tag.js +160 -0
  819. package/dist/esm/src/user-modules/tag.js.map +1 -0
  820. package/dist/esm/src/user-modules/url-link.d.ts +38 -0
  821. package/dist/esm/src/user-modules/url-link.d.ts.map +1 -0
  822. package/dist/esm/src/user-modules/url-link.js +110 -0
  823. package/dist/esm/src/user-modules/url-link.js.map +1 -0
  824. package/dist/esm/src/user-modules/url-link.spec.d.ts +3 -0
  825. package/dist/esm/src/user-modules/url-link.spec.d.ts.map +1 -0
  826. package/dist/esm/src/user-modules/url-link.spec.js +29 -0
  827. package/dist/esm/src/user-modules/url-link.spec.js.map +1 -0
  828. package/dist/esm/src/wechaty/mod.d.ts +6 -0
  829. package/dist/esm/src/wechaty/mod.d.ts.map +1 -0
  830. package/dist/esm/src/wechaty/mod.js +4 -0
  831. package/dist/esm/src/wechaty/mod.js.map +1 -0
  832. package/dist/esm/src/wechaty/wechaty-base.d.ts +545 -0
  833. package/dist/esm/src/wechaty/wechaty-base.d.ts.map +1 -0
  834. package/dist/esm/src/wechaty/wechaty-base.js +218 -0
  835. package/dist/esm/src/wechaty/wechaty-base.js.map +1 -0
  836. package/dist/esm/src/wechaty/wechaty-base.spec.d.ts +14 -0
  837. package/dist/esm/src/wechaty/wechaty-base.spec.d.ts.map +1 -0
  838. package/dist/esm/src/wechaty/wechaty-base.spec.js +286 -0
  839. package/dist/esm/src/wechaty/wechaty-base.spec.js.map +1 -0
  840. package/dist/esm/src/wechaty/wechaty-impl.d.ts +56 -0
  841. package/dist/esm/src/wechaty/wechaty-impl.d.ts.map +1 -0
  842. package/dist/esm/src/wechaty/wechaty-impl.js +14 -0
  843. package/dist/esm/src/wechaty/wechaty-impl.js.map +1 -0
  844. package/dist/esm/src/wechaty/wechaty-impl.spec.d.ts +3 -0
  845. package/dist/esm/src/wechaty/wechaty-impl.spec.d.ts.map +1 -0
  846. package/dist/esm/src/wechaty/wechaty-impl.spec.js +61 -0
  847. package/dist/esm/src/wechaty/wechaty-impl.spec.js.map +1 -0
  848. package/dist/esm/src/wechaty/wechaty-skeleton.d.ts +51 -0
  849. package/dist/esm/src/wechaty/wechaty-skeleton.d.ts.map +1 -0
  850. package/dist/esm/src/wechaty/wechaty-skeleton.js +93 -0
  851. package/dist/esm/src/wechaty/wechaty-skeleton.js.map +1 -0
  852. package/dist/esm/src/wechaty/wechaty-skelton.spec.d.ts +3 -0
  853. package/dist/esm/src/wechaty/wechaty-skelton.spec.d.ts.map +1 -0
  854. package/dist/esm/src/wechaty/wechaty-skelton.spec.js +7 -0
  855. package/dist/esm/src/wechaty/wechaty-skelton.spec.js.map +1 -0
  856. package/dist/esm/src/wechaty-builder.d.ts +38 -0
  857. package/dist/esm/src/wechaty-builder.d.ts.map +1 -0
  858. package/dist/esm/src/wechaty-builder.js +95 -0
  859. package/dist/esm/src/wechaty-builder.js.map +1 -0
  860. package/dist/esm/src/wechaty-builder.spec.d.ts +22 -0
  861. package/dist/esm/src/wechaty-builder.spec.d.ts.map +1 -0
  862. package/dist/esm/src/wechaty-builder.spec.js +64 -0
  863. package/dist/esm/src/wechaty-builder.spec.js.map +1 -0
  864. package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts +52 -0
  865. package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts.map +1 -0
  866. package/dist/esm/src/wechaty-mixins/gerror-mixin.js +51 -0
  867. package/dist/esm/src/wechaty-mixins/gerror-mixin.js.map +1 -0
  868. package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.d.ts +3 -0
  869. package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.d.ts.map +1 -0
  870. package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.js +7 -0
  871. package/dist/esm/src/wechaty-mixins/gerror-mixin.spec.js.map +1 -0
  872. package/dist/esm/src/wechaty-mixins/io-mixin.d.ts +75 -0
  873. package/dist/esm/src/wechaty-mixins/io-mixin.d.ts.map +1 -0
  874. package/dist/esm/src/wechaty-mixins/io-mixin.js +83 -0
  875. package/dist/esm/src/wechaty-mixins/io-mixin.js.map +1 -0
  876. package/dist/esm/src/wechaty-mixins/login-mixin.d.ts +290 -0
  877. package/dist/esm/src/wechaty-mixins/login-mixin.d.ts.map +1 -0
  878. package/dist/esm/src/wechaty-mixins/login-mixin.js +86 -0
  879. package/dist/esm/src/wechaty-mixins/login-mixin.js.map +1 -0
  880. package/dist/esm/src/wechaty-mixins/login-mixin.spec.d.ts +3 -0
  881. package/dist/esm/src/wechaty-mixins/login-mixin.spec.d.ts.map +1 -0
  882. package/dist/esm/src/wechaty-mixins/login-mixin.spec.js +7 -0
  883. package/dist/esm/src/wechaty-mixins/login-mixin.spec.js.map +1 -0
  884. package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts +295 -0
  885. package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts.map +1 -0
  886. package/dist/esm/src/wechaty-mixins/misc-mixin.js +64 -0
  887. package/dist/esm/src/wechaty-mixins/misc-mixin.js.map +1 -0
  888. package/dist/esm/src/wechaty-mixins/mod.d.ts +18 -0
  889. package/dist/esm/src/wechaty-mixins/mod.d.ts.map +1 -0
  890. package/dist/esm/src/wechaty-mixins/mod.js +9 -0
  891. package/dist/esm/src/wechaty-mixins/mod.js.map +1 -0
  892. package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts +384 -0
  893. package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts.map +1 -0
  894. package/dist/esm/src/wechaty-mixins/plugin-mixin.js +53 -0
  895. package/dist/esm/src/wechaty-mixins/plugin-mixin.js.map +1 -0
  896. package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.d.ts +13 -0
  897. package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.d.ts.map +1 -0
  898. package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.js +58 -0
  899. package/dist/esm/src/wechaty-mixins/plugin-mixin.spec.js.map +1 -0
  900. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts +194 -0
  901. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -0
  902. package/dist/esm/src/wechaty-mixins/puppet-mixin.js +399 -0
  903. package/dist/esm/src/wechaty-mixins/puppet-mixin.js.map +1 -0
  904. package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.d.ts +3 -0
  905. package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.d.ts.map +1 -0
  906. package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.js +7 -0
  907. package/dist/esm/src/wechaty-mixins/puppet-mixin.spec.js.map +1 -0
  908. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +61 -0
  909. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts.map +1 -0
  910. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.js +81 -0
  911. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.js.map +1 -0
  912. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts +3 -0
  913. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.d.ts.map +1 -0
  914. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.js +7 -0
  915. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.spec.js.map +1 -0
  916. package/dist/esm/tests/electron.spec.d.ts +3 -0
  917. package/dist/esm/tests/electron.spec.d.ts.map +1 -0
  918. package/dist/esm/tests/electron.spec.js +28 -0
  919. package/dist/esm/tests/electron.spec.js.map +1 -0
  920. package/dist/esm/tests/node.spec.d.ts +3 -0
  921. package/dist/esm/tests/node.spec.d.ts.map +1 -0
  922. package/dist/esm/tests/node.spec.js +41 -0
  923. package/dist/esm/tests/node.spec.js.map +1 -0
  924. package/package.json +173 -0
  925. package/src/cli/friday.ts +20 -0
  926. package/src/cli/gateway.ts +190 -0
  927. package/src/cli/mod.ts +5 -0
  928. package/src/cli/provider.ts +20 -0
  929. package/src/cli/service.ts +20 -0
  930. package/src/cli/token.ts +19 -0
  931. package/src/config.spec.ts +97 -0
  932. package/src/config.ts +165 -0
  933. package/src/doctor.ts +92 -0
  934. package/src/helper-functions/open-graph.ts +34 -0
  935. package/src/helper-functions/stringify-filter.ts +13 -0
  936. package/src/io-client.ts +276 -0
  937. package/src/io-peer/io-peer.spec.ts +64 -0
  938. package/src/io-peer/io-peer.ts +79 -0
  939. package/src/io-peer/json-rpc-peer.d.ts +68 -0
  940. package/src/io.spec.ts +44 -0
  941. package/src/io.ts +585 -0
  942. package/src/mods/helpers.ts +5 -0
  943. package/src/mods/impls.spec.ts +13 -0
  944. package/src/mods/impls.ts +115 -0
  945. package/src/mods/mod.spec.ts +17 -0
  946. package/src/mods/mod.ts +74 -0
  947. package/src/mods/users.ts +44 -0
  948. package/src/package-json.spec.ts +18 -0
  949. package/src/package-json.ts +180 -0
  950. package/src/plugin.spec.ts +87 -0
  951. package/src/plugin.ts +19 -0
  952. package/src/puppet-config.ts +104 -0
  953. package/src/pure-functions/escape-regexp.ts +22 -0
  954. package/src/pure-functions/guard-qr-code-value.ts +27 -0
  955. package/src/pure-functions/is-template-string-array.spec.ts +44 -0
  956. package/src/pure-functions/is-template-string-array.ts +5 -0
  957. package/src/pure-functions/mod.ts +28 -0
  958. package/src/pure-functions/retry-policy.ts +45 -0
  959. package/src/pure-functions/timestamp-to-date.spec.ts +43 -0
  960. package/src/pure-functions/timestamp-to-date.ts +31 -0
  961. package/src/pure-functions/xml.spec.ts +116 -0
  962. package/src/pure-functions/xml.ts +98 -0
  963. package/src/raven.ts +75 -0
  964. package/src/sayable/deliver-sayable.ts +107 -0
  965. package/src/sayable/message-to-sayable.ts +57 -0
  966. package/src/sayable/mod.ts +27 -0
  967. package/src/sayable/payload-to-sayable.ts +51 -0
  968. package/src/sayable/sayable-to-payload.ts +54 -0
  969. package/src/sayable/types.ts +62 -0
  970. package/src/schemas/acceptable.ts +30 -0
  971. package/src/schemas/contact-events.ts +29 -0
  972. package/src/schemas/mod.ts +29 -0
  973. package/src/schemas/room-events.ts +128 -0
  974. package/src/schemas/wechaty-events.ts +251 -0
  975. package/src/schemas/wechaty-options.ts +40 -0
  976. package/src/user-mixins/mod.ts +23 -0
  977. package/src/user-mixins/poolify.spec.ts +110 -0
  978. package/src/user-mixins/poolify.ts +72 -0
  979. package/src/user-mixins/validation.spec.ts +87 -0
  980. package/src/user-mixins/validation.ts +39 -0
  981. package/src/user-mixins/wechatify.spec.ts +27 -0
  982. package/src/user-mixins/wechatify.ts +72 -0
  983. package/src/user-modules/contact-self.ts +217 -0
  984. package/src/user-modules/contact.spec.ts +91 -0
  985. package/src/user-modules/contact.ts +806 -0
  986. package/src/user-modules/delay.ts +61 -0
  987. package/src/user-modules/favorite.ts +89 -0
  988. package/src/user-modules/friendship.ts +441 -0
  989. package/src/user-modules/image.ts +91 -0
  990. package/src/user-modules/location.ts +103 -0
  991. package/src/user-modules/message.spec.ts +124 -0
  992. package/src/user-modules/message.ts +1109 -0
  993. package/src/user-modules/mini-program.ts +111 -0
  994. package/src/user-modules/mod.ts +160 -0
  995. package/src/user-modules/moment.ts +64 -0
  996. package/src/user-modules/money.ts +49 -0
  997. package/src/user-modules/post.spec.ts +77 -0
  998. package/src/user-modules/post.ts +549 -0
  999. package/src/user-modules/room-invitation.ts +291 -0
  1000. package/src/user-modules/room.spec.ts +170 -0
  1001. package/src/user-modules/room.ts +1158 -0
  1002. package/src/user-modules/tag.ts +202 -0
  1003. package/src/user-modules/url-link.spec.ts +35 -0
  1004. package/src/user-modules/url-link.ts +145 -0
  1005. package/src/wechaty/mod.ts +18 -0
  1006. package/src/wechaty/wechaty-base.spec.ts +392 -0
  1007. package/src/wechaty/wechaty-base.ts +307 -0
  1008. package/src/wechaty/wechaty-impl.spec.ts +118 -0
  1009. package/src/wechaty/wechaty-impl.ts +65 -0
  1010. package/src/wechaty/wechaty-skeleton.ts +129 -0
  1011. package/src/wechaty/wechaty-skelton.spec.ts +18 -0
  1012. package/src/wechaty-builder.spec.ts +79 -0
  1013. package/src/wechaty-builder.ts +123 -0
  1014. package/src/wechaty-mixins/gerror-mixin.spec.ts +15 -0
  1015. package/src/wechaty-mixins/gerror-mixin.ts +78 -0
  1016. package/src/wechaty-mixins/io-mixin.ts +117 -0
  1017. package/src/wechaty-mixins/login-mixin.spec.ts +15 -0
  1018. package/src/wechaty-mixins/login-mixin.ts +124 -0
  1019. package/src/wechaty-mixins/misc-mixin.ts +93 -0
  1020. package/src/wechaty-mixins/mod.ts +84 -0
  1021. package/src/wechaty-mixins/plugin-mixin.spec.ts +98 -0
  1022. package/src/wechaty-mixins/plugin-mixin.ts +99 -0
  1023. package/src/wechaty-mixins/puppet-mixin.spec.ts +15 -0
  1024. package/src/wechaty-mixins/puppet-mixin.ts +501 -0
  1025. package/src/wechaty-mixins/wechatify-user-module-mixin.spec.ts +18 -0
  1026. package/src/wechaty-mixins/wechatify-user-module-mixin.ts +151 -0
@@ -0,0 +1,1109 @@
1
+ /**
2
+ * Wechaty Chatbot SDK - https://github.com/wechaty/wechaty
3
+ *
4
+ * @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
5
+ * Wechaty Contributors <https://github.com/wechaty>.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ import { EventEmitter } from 'events'
21
+ import * as PUPPET from 'wechaty-puppet'
22
+ import type {
23
+ FileBoxInterface,
24
+ } from 'file-box'
25
+
26
+ import type { Constructor } from 'clone-class'
27
+
28
+ import { escapeRegExp } from '../pure-functions/escape-regexp.js'
29
+ import { timestampToDate } from '../pure-functions/timestamp-to-date.js'
30
+
31
+ import {
32
+ log,
33
+ AT_SEPARATOR_REGEX,
34
+ } from '../config.js'
35
+ import type {
36
+ SayableSayer,
37
+ Sayable,
38
+ } from '../sayable/mod.js'
39
+ import {
40
+ messageToSayable,
41
+ } from '../sayable/mod.js'
42
+
43
+ import {
44
+ wechatifyMixin,
45
+ } from '../user-mixins/wechatify.js'
46
+
47
+ import type {
48
+ ContactInterface,
49
+ ContactImpl,
50
+ } from './contact.js'
51
+ import type {
52
+ RoomInterface,
53
+ RoomImpl,
54
+ } from './room.js'
55
+ import type {
56
+ UrlLinkInterface,
57
+ } from './url-link.js'
58
+ import type {
59
+ MiniProgramInterface,
60
+ } from './mini-program.js'
61
+ import type {
62
+ ImageInterface,
63
+ } from './image.js'
64
+ import {
65
+ PostInterface,
66
+ PostImpl,
67
+ } from './post.js'
68
+ import {
69
+ LocationInterface,
70
+ LocationImpl,
71
+ } from './location.js'
72
+
73
+ import { validationMixin } from '../user-mixins/validation.js'
74
+ import type { ContactSelfImpl } from './contact-self.js'
75
+
76
+ const MixinBase = wechatifyMixin(
77
+ EventEmitter,
78
+ )
79
+
80
+ /**
81
+ * All wechat messages will be encapsulated as a Message.
82
+ *
83
+ * [Examples/Ding-Dong-Bot]{@link https://github.com/wechaty/wechaty/blob/1523c5e02be46ebe2cc172a744b2fbe53351540e/examples/ding-dong-bot.ts}
84
+ */
85
+ class MessageMixin extends MixinBase implements SayableSayer {
86
+
87
+ /**
88
+ *
89
+ * Static Properties
90
+ *
91
+ */
92
+
93
+ /**
94
+ * @ignore
95
+ */
96
+ static readonly Type = PUPPET.types.Message
97
+
98
+ /**
99
+ * Find message in cache
100
+ */
101
+ static async find (
102
+ query : string | PUPPET.filters.Message,
103
+ ): Promise<undefined | MessageInterface> {
104
+ log.verbose('Message', 'find(%s)', JSON.stringify(query))
105
+
106
+ if (typeof query === 'string') {
107
+ query = { text: query }
108
+ }
109
+
110
+ const messageList = await this.findAll(query)
111
+ if (messageList.length < 1) {
112
+ return undefined
113
+ }
114
+
115
+ if (messageList.length > 1) {
116
+ log.warn('Message', 'findAll() got more than one(%d) result', messageList.length)
117
+ }
118
+
119
+ return messageList[0]!
120
+ }
121
+
122
+ /**
123
+ * Find messages in cache
124
+ */
125
+ static async findAll (
126
+ query? : PUPPET.filters.Message,
127
+ ): Promise<MessageInterface[]> {
128
+ log.verbose('Message', 'findAll(%s)', JSON.stringify(query) || '')
129
+
130
+ // Huan(202111): { id } query has been optimized in the PuppetAbstract class
131
+
132
+ const invalidDict: { [id: string]: true } = {}
133
+
134
+ try {
135
+ const MessageIdList = await this.wechaty.puppet.messageSearch(query)
136
+ const messageList = MessageIdList.map(id => this.load(id))
137
+ await Promise.all(
138
+ messageList.map(
139
+ message => message.ready()
140
+ .catch(e => {
141
+ log.warn('Room', 'findAll() message.ready() rejection: %s', e)
142
+ invalidDict[message.id] = true
143
+ }),
144
+ ),
145
+ )
146
+
147
+ return messageList.filter(message => !invalidDict[message.id])
148
+
149
+ } catch (e) {
150
+ this.wechaty.emitError(e)
151
+ log.warn('Message', 'findAll() rejected: %s', (e as Error).message)
152
+ return [] // fail safe
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Create a Mobile Terminated Message
158
+ * @ignore
159
+ * "mobile originated" or "mobile terminated"
160
+ * https://www.tatango.com/resources/video-lessons/video-mo-mt-sms-messaging/
161
+ */
162
+ static load (id: string): MessageImplInterface {
163
+ log.verbose('Message', 'static load(%s)', id)
164
+
165
+ /**
166
+ * Must NOT use `Message` at here
167
+ * MUST use `this` at here
168
+ *
169
+ * because the class will be `cloneClass`-ed
170
+ */
171
+ const msg = new this(id)
172
+
173
+ return msg
174
+ }
175
+
176
+ /**
177
+ *
178
+ * Instance Properties
179
+ * @hidden
180
+ *
181
+ */
182
+ payload?: PUPPET.payloads.Message
183
+
184
+ /**
185
+ * @hideconstructor
186
+ */
187
+ constructor (
188
+ public readonly id: string,
189
+ ) {
190
+ super()
191
+ log.verbose('Message', 'constructor(%s) for class %s',
192
+ id || '',
193
+ this.constructor.name,
194
+ )
195
+ }
196
+
197
+ /**
198
+ * @ignore
199
+ */
200
+ override toString () {
201
+ if (!this.payload) {
202
+ return this.constructor.name
203
+ }
204
+
205
+ let talker
206
+ try {
207
+ talker = this.talker()
208
+ } catch (e) {
209
+ talker = (e as Error).message
210
+ }
211
+
212
+ const msgStrList = [
213
+ 'Message',
214
+ `#${PUPPET.types.Message[this.type()]}`,
215
+ '[',
216
+ '🗣',
217
+ talker,
218
+ this.room()
219
+ ? '@👥' + this.room()
220
+ : '',
221
+ ']',
222
+ ]
223
+
224
+ if (this.type() === PUPPET.types.Message.Text
225
+ || this.type() === PUPPET.types.Message.Unknown
226
+ ) {
227
+ msgStrList.push(`\t${this.text().substr(0, 70)}`)
228
+ } else {
229
+ log.silly('Message', 'toString() for message type: %s(%s)', PUPPET.types.Message[this.type()], this.type())
230
+ // if (!this.#payload) {
231
+ // throw new Error('no payload')
232
+ // }
233
+ }
234
+
235
+ return msgStrList.join('')
236
+ }
237
+
238
+ conversation (): ContactInterface | RoomInterface {
239
+ if (this.room()) {
240
+ return this.room()!
241
+ } else {
242
+ return this.talker()
243
+ }
244
+ }
245
+
246
+ /**
247
+ * Get the talker of a message.
248
+ * @returns {ContactInterface}
249
+ * @example
250
+ * const bot = new Wechaty()
251
+ * bot
252
+ * .on('message', async m => {
253
+ * const talker = msg.talker()
254
+ * const text = msg.text()
255
+ * const room = msg.room()
256
+ * if (room) {
257
+ * const topic = await room.topic()
258
+ * console.log(`Room: ${topic} Contact: ${talker.name()} Text: ${text}`)
259
+ * } else {
260
+ * console.log(`Contact: ${talker.name()} Text: ${text}`)
261
+ * }
262
+ * })
263
+ * .start()
264
+ */
265
+ talker (): ContactInterface {
266
+ if (!this.payload) {
267
+ throw new Error('no payload')
268
+ }
269
+
270
+ let talkerId = this.payload.talkerId
271
+ if (!talkerId) {
272
+ /**
273
+ * `fromId` is deprecated, this code block will be removed in v2.0
274
+ */
275
+ if (this.payload.fromId) {
276
+ talkerId = this.payload.fromId
277
+ } else {
278
+ throw new Error('no talkerId found for talker')
279
+ }
280
+
281
+ log.warn('Message', 'talker() payload.talkerId not exist! See: https://github.com/wechaty/puppet/issues/187')
282
+ console.error('Puppet: %s@%s', this.wechaty.puppet.name(), this.wechaty.puppet.version())
283
+ console.error(new Error().stack)
284
+ }
285
+
286
+ let talker
287
+ if (this.wechaty.isLoggedIn && talkerId === this.wechaty.puppet.currentUserId) {
288
+ talker = (this.wechaty.ContactSelf as typeof ContactSelfImpl).load(talkerId)
289
+ } else {
290
+ talker = (this.wechaty.Contact as typeof ContactImpl).load(talkerId)
291
+ }
292
+ return talker
293
+ }
294
+
295
+ /**
296
+ * @depreacated Use `message.talker()` to replace `message.from()`
297
+ * https://github.com/wechaty/wechaty/issues/2094
298
+ */
299
+ from (): undefined | ContactInterface {
300
+ log.warn('Message', 'from() is deprecated, use talker() instead. Call stack: %s',
301
+ new Error().stack,
302
+ )
303
+ try {
304
+ return this.talker()
305
+ } catch (e) {
306
+ this.wechaty.emitError(e)
307
+ return undefined
308
+ }
309
+ }
310
+
311
+ /**
312
+ * Get the destination of the message
313
+ * Message.to() will return null if a message is in a room, use Message.room() to get the room.
314
+ * @returns {(ContactInterface|null)}
315
+ * @deprecated use `listener()` instead
316
+ */
317
+ to (): undefined | ContactInterface {
318
+ // Huan(202108): I want to deprecate this method name in the future,
319
+ // and use `message.listener()` to replace it.
320
+ return this.listener()
321
+ }
322
+
323
+ /**
324
+ * Get the destination of the message
325
+ * Message.listener() will return null if a message is in a room,
326
+ * use Message.room() to get the room.
327
+ * @returns {(undefined | ContactInterface)}
328
+ */
329
+ listener (): undefined | ContactInterface {
330
+ if (!this.payload) {
331
+ throw new Error('no payload')
332
+ }
333
+
334
+ let listenerId = this.payload.listenerId
335
+
336
+ if (!listenerId && this.payload.toId) {
337
+ /**
338
+ * `toId` is deprecated, this code block will be removed in v2.0
339
+ */
340
+ listenerId = this.payload.toId
341
+
342
+ log.warn('Message', 'listener() payload.listenerId should be set! See: https://github.com/wechaty/puppet/issues/187')
343
+ console.error('Puppet: %s@%s', this.wechaty.puppet.name(), this.wechaty.puppet.version())
344
+ console.error(new Error().stack)
345
+ }
346
+
347
+ if (!listenerId) {
348
+ return undefined
349
+ }
350
+
351
+ let listener
352
+ if (listenerId === this.wechaty.puppet.currentUserId) {
353
+ listener = (this.wechaty.ContactSelf as typeof ContactSelfImpl).load(listenerId)
354
+ } else {
355
+ listener = (this.wechaty.Contact as typeof ContactImpl).load(listenerId)
356
+ }
357
+ return listener
358
+ }
359
+
360
+ /**
361
+ * Get the room from the message.
362
+ * If the message is not in a room, then will return `null`
363
+ *
364
+ * @returns {(RoomInterface | null)}
365
+ * @example
366
+ * const bot = new Wechaty()
367
+ * bot
368
+ * .on('message', async m => {
369
+ * const contact = msg.from()
370
+ * const text = msg.text()
371
+ * const room = msg.room()
372
+ * if (room) {
373
+ * const topic = await room.topic()
374
+ * console.log(`Room: ${topic} Contact: ${contact.name()} Text: ${text}`)
375
+ * } else {
376
+ * console.log(`Contact: ${contact.name()} Text: ${text}`)
377
+ * }
378
+ * })
379
+ * .start()
380
+ */
381
+ room (): undefined | RoomInterface {
382
+ if (!this.payload) {
383
+ throw new Error('no payload')
384
+ }
385
+ const roomId = this.payload.roomId
386
+ if (!roomId) {
387
+ return undefined
388
+ }
389
+
390
+ const room = (this.wechaty.Room as typeof RoomImpl).load(roomId)
391
+ return room
392
+ }
393
+
394
+ /**
395
+ * Get the text content of the message
396
+ *
397
+ * @returns {string}
398
+ * @example
399
+ * const bot = new Wechaty()
400
+ * bot
401
+ * .on('message', async m => {
402
+ * const contact = msg.from()
403
+ * const text = msg.text()
404
+ * const room = msg.room()
405
+ * if (room) {
406
+ * const topic = await room.topic()
407
+ * console.log(`Room: ${topic} Contact: ${contact.name()} Text: ${text}`)
408
+ * } else {
409
+ * console.log(`Contact: ${contact.name()} Text: ${text}`)
410
+ * }
411
+ * })
412
+ * .start()
413
+ */
414
+ text (): string {
415
+ if (!this.payload) {
416
+ throw new Error('no payload')
417
+ }
418
+
419
+ return this.payload.text || ''
420
+ }
421
+
422
+ /**
423
+ * Get the recalled message
424
+ *
425
+ * @example
426
+ * const bot = new Wechaty()
427
+ * bot
428
+ * .on('message', async m => {
429
+ * if (m.type() === PUPPET.types.Message.Recalled) {
430
+ * const recalledMessage = await m.toRecalled()
431
+ * console.log(`Message: ${recalledMessage} has been recalled.`)
432
+ * }
433
+ * })
434
+ * .start()
435
+ */
436
+ async toRecalled (): Promise<undefined | MessageInterface> {
437
+ if (this.type() !== PUPPET.types.Message.Recalled) {
438
+ throw new Error('Can not call toRecalled() on message which is not recalled type.')
439
+ }
440
+ const originalMessageId = this.text()
441
+ if (!originalMessageId) {
442
+ throw new Error('Can not find recalled message')
443
+ }
444
+ try {
445
+ const message = await this.wechaty.Message.find({ id: originalMessageId })
446
+ if (message) {
447
+ return message
448
+ }
449
+
450
+ } catch (e) {
451
+ this.wechaty.emitError(e)
452
+ log.verbose(`Can not retrieve the recalled message with id ${originalMessageId}.`)
453
+ }
454
+ return undefined
455
+ }
456
+
457
+ /**
458
+ * Reply a Text or Media File message to the sender.
459
+ * > Tips:
460
+ * This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
461
+ *
462
+ * @see {@link https://github.com/wechaty/wechaty/blob/1523c5e02be46ebe2cc172a744b2fbe53351540e/examples/ding-dong-bot.ts|Examples/ding-dong-bot}
463
+ * @param {(string | ContactInterface | FileBox | UrlLinkInterface | MiniProgramInterface | LocationInterface)} textOrContactOrFile
464
+ * send text, Contact, or file to bot. </br>
465
+ * You can use {@link https://www.npmjs.com/package/file-box|FileBox} to send file
466
+ * @param {(ContactInterface|ContactInterface[])} [mention]
467
+ * If this is a room message, when you set mention param, you can `@` Contact in the room.
468
+ * @returns {Promise<void | MessageInterface>}
469
+ *
470
+ * @example
471
+ * import { FileBox } from 'wechaty'
472
+ * const bot = new Wechaty()
473
+ * bot
474
+ * .on('message', async m => {
475
+ *
476
+ * // 1. send Image
477
+ *
478
+ * if (/^ding$/i.test(m.text())) {
479
+ * const fileBox = FileBox.fromUrl('https://wechaty.github.io/wechaty/images/bot-qr-code.png')
480
+ * await msg.say(fileBox)
481
+ * const message = await msg.say(fileBox) // only supported by puppet-padplus
482
+ * }
483
+ *
484
+ * // 2. send Text
485
+ *
486
+ * if (/^dong$/i.test(m.text())) {
487
+ * await msg.say('ding')
488
+ * const message = await msg.say('ding') // only supported by puppet-padplus
489
+ * }
490
+ *
491
+ * // 3. send Contact
492
+ *
493
+ * if (/^lijiarui$/i.test(m.text())) {
494
+ * const contactCard = await bot.Contact.find({name: 'lijiarui'})
495
+ * if (!contactCard) {
496
+ * console.log('not found')
497
+ * return
498
+ * }
499
+ * await msg.say(contactCard)
500
+ * const message = await msg.say(contactCard) // only supported by puppet-padplus
501
+ * }
502
+ *
503
+ * // 4. send Link
504
+ *
505
+ * if (/^link$/i.test(m.text())) {
506
+ * const linkPayload = new UrlLink ({
507
+ * description : 'WeChat Bot SDK for Individual Account, Powered by TypeScript, Docker, and Love',
508
+ * thumbnailUrl: 'https://avatars0.githubusercontent.com/u/25162437?s=200&v=4',
509
+ * title : 'Welcome to Wechaty',
510
+ * url : 'https://github.com/wechaty/wechaty',
511
+ * })
512
+ * await msg.say(linkPayload)
513
+ * const message = await msg.say(linkPayload) // only supported by puppet-padplus
514
+ * }
515
+ *
516
+ * // 5. send MiniProgram
517
+ *
518
+ * if (/^miniProgram$/i.test(m.text())) {
519
+ * const miniProgramPayload = new MiniProgram ({
520
+ * username : 'gh_xxxxxxx', //get from mp.weixin.qq.com
521
+ * appid : '', //optional, get from mp.weixin.qq.com
522
+ * title : '', //optional
523
+ * pagepath : '', //optional
524
+ * description : '', //optional
525
+ * thumbnailurl : '', //optional
526
+ * })
527
+ * await msg.say(miniProgramPayload)
528
+ * const message = await msg.say(miniProgramPayload) // only supported by puppet-padplus
529
+ * }
530
+ *
531
+ * // 6. send Location
532
+ * if (/^location$/i.test(m.text())) {
533
+ * const location = new Location ({
534
+ * accuracy : 15,
535
+ * address : '北京市北京市海淀区45 Chengfu Rd',
536
+ * latitude : 39.995120999999997,
537
+ * longitude : 116.334154,
538
+ * name : '东升乡人民政府(海淀区成府路45号)',
539
+ * })
540
+ * await contact.say(location)
541
+ * const msg = await msg.say(location)
542
+ * }
543
+ * })
544
+ * .start()
545
+ */
546
+ async say (
547
+ sayable: Sayable,
548
+ ): Promise<void | MessageInterface> {
549
+ log.verbose('Message', 'say(%s)', sayable)
550
+
551
+ const talker = this.talker()
552
+ const room = this.room()
553
+
554
+ if (room) {
555
+ return room.say(sayable)
556
+ } else {
557
+ return talker.say(sayable)
558
+ }
559
+ }
560
+
561
+ /**
562
+ * Recall a message.
563
+ * > Tips:
564
+ * @returns {Promise<boolean>}
565
+ *
566
+ * @example
567
+ * const bot = new Wechaty()
568
+ * bot
569
+ * .on('message', async m => {
570
+ * const recallMessage = await msg.say('123')
571
+ * if (recallMessage) {
572
+ * const isSuccess = await recallMessage.recall()
573
+ * }
574
+ * })
575
+ */
576
+
577
+ async recall (): Promise<boolean> {
578
+ log.verbose('Message', 'recall()')
579
+ const isSuccess = await this.wechaty.puppet.messageRecall(this.id)
580
+ return isSuccess
581
+ }
582
+
583
+ /**
584
+ * Get the type from the message.
585
+ * > Tips: PUPPET.types.Message is Enum here. </br>
586
+ * - PUPPET.types.Message.Unknown </br>
587
+ * - PUPPET.types.Message.Attachment </br>
588
+ * - PUPPET.types.Message.Audio </br>
589
+ * - PUPPET.types.Message.Contact </br>
590
+ * - PUPPET.types.Message.Emoticon </br>
591
+ * - PUPPET.types.Message.Image </br>
592
+ * - PUPPET.types.Message.Text </br>
593
+ * - PUPPET.types.Message.Video </br>
594
+ * - PUPPET.types.Message.Url </br>
595
+ * @returns {PUPPET.types.Message}
596
+ *
597
+ * @example
598
+ * const bot = new Wechaty()
599
+ * if (message.type() === bot.Message.Type.Text) {
600
+ * console.log('This is a text message')
601
+ * }
602
+ */
603
+ type (): PUPPET.types.Message {
604
+ if (!this.payload) {
605
+ throw new Error('no payload')
606
+ }
607
+ return this.payload.type || PUPPET.types.Message.Unknown
608
+ }
609
+
610
+ /**
611
+ * Check if a message is sent by self.
612
+ *
613
+ * @returns {boolean} - Return `true` for send from self, `false` for send from others.
614
+ * @example
615
+ * if (message.self()) {
616
+ * console.log('this message is sent by myself!')
617
+ * }
618
+ */
619
+ self (): boolean {
620
+ try {
621
+ const talker = this.talker()
622
+
623
+ return talker.id === this.wechaty.puppet.currentUserId
624
+ } catch (e) {
625
+ this.wechaty.emitError(e)
626
+ log.error('Message', 'self() rejection: %s', (e as Error).message)
627
+ return false
628
+ }
629
+ }
630
+
631
+ /**
632
+ *
633
+ * Get message mentioned contactList.
634
+ *
635
+ * Message event table as follows
636
+ *
637
+ * | | Web | Mac PC Client | iOS Mobile | android Mobile |
638
+ * | :--- | :--: | :----: | :---: | :---: |
639
+ * | [You were mentioned] tip ([有人@我]的提示) | ✘ | √ | √ | √ |
640
+ * | Identify magic code (8197) by copy & paste in mobile | ✘ | √ | √ | ✘ |
641
+ * | Identify magic code (8197) by programming | ✘ | ✘ | ✘ | ✘ |
642
+ * | Identify two contacts with the same roomAlias by [You were mentioned] tip | ✘ | ✘ | √ | √ |
643
+ *
644
+ * @returns {Promise<ContactInterface[]>} - Return message mentioned contactList
645
+ *
646
+ * @example
647
+ * const contactList = await message.mentionList()
648
+ * console.log(contactList)
649
+ */
650
+ async mentionList (): Promise<ContactInterface[]> {
651
+ log.verbose('Message', 'mentionList()')
652
+
653
+ const room = this.room()
654
+ if (this.type() !== PUPPET.types.Message.Text || !room) {
655
+ return []
656
+ }
657
+
658
+ /**
659
+ * 1. Use mention list if mention list is available
660
+ */
661
+ if (this.payload
662
+ && 'mentionIdList' in this.payload
663
+ && Array.isArray(this.payload.mentionIdList)
664
+ ) {
665
+ const idToContact = (id: string) => this.wechaty.Contact.find({ id })
666
+ const allContact = await Promise.all(
667
+ this.payload.mentionIdList
668
+ .map(idToContact),
669
+ )
670
+ // remove `undefined` types because we use a `filter(Boolean)`
671
+ return allContact.filter(Boolean) as ContactInterface[]
672
+ }
673
+
674
+ /**
675
+ * 2. Otherwise, process the message and get the mention list
676
+ */
677
+
678
+ /**
679
+ * define magic code `8197` to identify @xxx
680
+ * const AT_SEPARATOR = String.fromCharCode(8197)
681
+ */
682
+ const atList = this.text().split(AT_SEPARATOR_REGEX)
683
+ // console.log('atList: ', atList)
684
+ if (atList.length === 0) return []
685
+
686
+ // Using `filter(e => e.indexOf('@') > -1)` to filter the string without `@`
687
+ const rawMentionList = atList
688
+ .filter(str => str.includes('@'))
689
+ .map(str => multipleAt(str))
690
+
691
+ // convert 'hello@a@b@c' to [ 'c', 'b@c', 'a@b@c' ]
692
+ function multipleAt (str: string) {
693
+ str = str.replace(/^.*?@/, '@')
694
+ let name = ''
695
+ const nameList: string[] = []
696
+ str.split('@')
697
+ .filter(mentionName => !!mentionName)
698
+ .reverse()
699
+ .forEach(mentionName => {
700
+ // console.log('mentionName: ', mentionName)
701
+ name = mentionName + '@' + name
702
+ nameList.push(name.slice(0, -1)) // get rid of the `@` at beginning
703
+ })
704
+ return nameList
705
+ }
706
+
707
+ let mentionNameList: string[] = []
708
+ // Flatten Array
709
+ // see http://stackoverflow.com/a/10865042/1123955
710
+ mentionNameList = mentionNameList.concat.apply([], rawMentionList)
711
+ // filter blank string
712
+ mentionNameList = mentionNameList.filter(s => !!s)
713
+
714
+ log.verbose('Message', 'mentionList() text = "%s", mentionNameList = "%s"',
715
+ this.text(),
716
+ JSON.stringify(mentionNameList),
717
+ )
718
+
719
+ const contactListNested = await Promise.all(
720
+ mentionNameList.map(
721
+ name => room.memberAll(name),
722
+ ),
723
+ )
724
+
725
+ let contactList: ContactInterface[] = []
726
+ contactList = contactList.concat.apply([], contactListNested)
727
+
728
+ if (contactList.length === 0) {
729
+ log.silly('Message', `message.mentionList() can not found member using room.member() from mentionList, mention string: ${JSON.stringify(mentionNameList)}`)
730
+ }
731
+ return contactList
732
+ }
733
+
734
+ /**
735
+ * @deprecated mention() DEPRECATED. use mentionList() instead.
736
+ */
737
+ async mention (): Promise<ContactInterface[]> {
738
+ log.warn('Message', 'mention() DEPRECATED. use mentionList() instead. Call stack: %s',
739
+ new Error().stack,
740
+ )
741
+ return this.mentionList()
742
+ }
743
+
744
+ async mentionText (): Promise<string> {
745
+ const text = this.text()
746
+ const room = this.room()
747
+
748
+ const mentionList = await this.mentionList()
749
+
750
+ if (!room || mentionList.length === 0) {
751
+ return text
752
+ }
753
+
754
+ const toAliasName = async (member: ContactInterface) => {
755
+ const alias = await room.alias(member)
756
+ const name = member.name()
757
+ return alias || name
758
+ }
759
+
760
+ const mentionNameList = await Promise.all(mentionList.map(toAliasName))
761
+
762
+ const textWithoutMention = mentionNameList.reduce((prev, cur) => {
763
+ const escapedCur = escapeRegExp(cur)
764
+ const regex = new RegExp(`@${escapedCur}(\u2005|\u0020|$)`)
765
+ return prev.replace(regex, '')
766
+ }, text)
767
+
768
+ return textWithoutMention.trim()
769
+ }
770
+
771
+ /**
772
+ * Check if a message is mention self.
773
+ *
774
+ * @returns {Promise<boolean>} - Return `true` for mention me.
775
+ * @example
776
+ * if (await message.mentionSelf()) {
777
+ * console.log('this message were mentioned me! [You were mentioned] tip ([有人@我]的提示)')
778
+ * }
779
+ */
780
+ async mentionSelf (): Promise<boolean> {
781
+ const currentUserId = this.wechaty.puppet.currentUserId
782
+ const mentionList = await this.mentionList()
783
+ return mentionList.some(contact => contact.id === currentUserId)
784
+ }
785
+
786
+ /**
787
+ * @ignore
788
+ */
789
+ isReady (): boolean {
790
+ return !!this.payload
791
+ }
792
+
793
+ /**
794
+ * @ignore
795
+ */
796
+ async ready (): Promise<void> {
797
+ log.verbose('Message', 'ready()')
798
+
799
+ if (this.isReady()) {
800
+ return
801
+ }
802
+
803
+ this.payload = await this.wechaty.puppet.messagePayload(this.id)
804
+
805
+ let talkerId = this.payload.talkerId
806
+ if (!talkerId) {
807
+ /**
808
+ * `fromId` is deprecated: this code block will be removed in v2.0
809
+ */
810
+ if (this.payload.fromId) {
811
+ talkerId = this.payload.fromId
812
+ } else {
813
+ throw new Error('no talkerId found for talker')
814
+ }
815
+
816
+ log.warn('Message', 'ready() payload.talkerId not exist! See: https://github.com/wechaty/puppet/issues/187')
817
+ console.error('Puppet: %s@%s', this.wechaty.puppet.name(), this.wechaty.puppet.version())
818
+ console.error(new Error().stack)
819
+ }
820
+
821
+ const roomId = this.payload.roomId
822
+
823
+ let listenerId = this.payload.listenerId
824
+ if (!listenerId && this.payload.toId) {
825
+ /**
826
+ * `fromId` is deprecated: this code block will be removed in v2.0
827
+ */
828
+ listenerId = this.payload.toId
829
+
830
+ log.warn('Message', 'ready() payload.listenerId should be set! See: https://github.com/wechaty/puppet/issues/187')
831
+ console.error('Puppet: %s@%s', this.wechaty.puppet.name(), this.wechaty.puppet.version())
832
+ console.error(new Error().stack)
833
+ }
834
+
835
+ if (roomId) {
836
+ await this.wechaty.Room.find({ id: roomId })
837
+ }
838
+ if (talkerId) {
839
+ await this.wechaty.Contact.find({ id: talkerId })
840
+ }
841
+ if (listenerId) {
842
+ await this.wechaty.Contact.find({ id: listenerId })
843
+ }
844
+ }
845
+
846
+ // case WebMsgType.APP:
847
+ // if (!this.rawObj) {
848
+ // throw new Error('no rawObj')
849
+ // }
850
+ // switch (this.typeApp()) {
851
+ // case WebAppMsgType.ATTACH:
852
+ // if (!this.rawObj.MMAppMsgDownloadUrl) {
853
+ // throw new Error('no MMAppMsgDownloadUrl')
854
+ // }
855
+ // // had set in Message
856
+ // // url = this.rawObj.MMAppMsgDownloadUrl
857
+ // break
858
+
859
+ // case WebAppMsgType.URL:
860
+ // case WebAppMsgType.READER_TYPE:
861
+ // if (!this.rawObj.Url) {
862
+ // throw new Error('no Url')
863
+ // }
864
+ // // had set in Message
865
+ // // url = this.rawObj.Url
866
+ // break
867
+
868
+ // default:
869
+ // const e = new Error('ready() unsupported typeApp(): ' + this.typeApp())
870
+ // log.warn('PuppeteerMessage', e.message)
871
+ // throw e
872
+ // }
873
+ // break
874
+
875
+ // case WebMsgType.TEXT:
876
+ // if (this.typeSub() === WebMsgType.LOCATION) {
877
+ // url = await puppet.bridge.getMsgPublicLinkImg(this.id)
878
+ // }
879
+ // break
880
+
881
+ /**
882
+ * Forward the received message.
883
+ *
884
+ * @param {(Sayable | Sayable[])} to Room or Contact
885
+ * The recipient of the message, the room, or the contact
886
+ * @returns {Promise<void>}
887
+ * @example
888
+ * const bot = new Wechaty()
889
+ * bot
890
+ * .on('message', async m => {
891
+ * const room = await bot.Room.find({topic: 'wechaty'})
892
+ * if (room) {
893
+ * await m.forward(room)
894
+ * console.log('forward this message to wechaty room!')
895
+ * }
896
+ * })
897
+ * .start()
898
+ */
899
+ async forward (to: RoomInterface | ContactInterface): Promise<void | MessageInterface> {
900
+ log.verbose('Message', 'forward(%s)', to)
901
+
902
+ // let roomId
903
+ // let contactId
904
+
905
+ try {
906
+ const msgId = await this.wechaty.puppet.messageForward(
907
+ to.id,
908
+ this.id,
909
+ )
910
+ if (msgId) {
911
+ const msg = await this.wechaty.Message.find({ id: msgId })
912
+ return msg
913
+ }
914
+ } catch (e) {
915
+ log.error('Message', 'forward(%s) exception: %s', to, e)
916
+ throw e
917
+ }
918
+ }
919
+
920
+ /**
921
+ * Message sent date
922
+ */
923
+ date (): Date {
924
+ if (!this.payload) {
925
+ throw new Error('no payload')
926
+ }
927
+
928
+ const timestamp = this.payload.timestamp
929
+ return timestampToDate(timestamp)
930
+ }
931
+
932
+ /**
933
+ * Returns the message age in seconds. <br>
934
+ *
935
+ * For example, the message is sent at time `8:43:01`,
936
+ * and when we received it in Wechaty, the time is `8:43:15`,
937
+ * then the age() will return `8:43:15 - 8:43:01 = 14 (seconds)`
938
+ *
939
+ * @returns {number} message age in seconds.
940
+ */
941
+ age (): number {
942
+ const ageMilliseconds = Date.now() - this.date().getTime()
943
+ const ageSeconds = Math.floor(ageMilliseconds / 1000)
944
+ return ageSeconds
945
+ }
946
+
947
+ /**
948
+ * Extract the Media File from the Message, and put it into the FileBox.
949
+ * > Tips:
950
+ * This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
951
+ *
952
+ * @returns {Promise<FileBoxInterface>}
953
+ *
954
+ * @example <caption>Save media file from a message</caption>
955
+ * const fileBox = await message.toFileBox()
956
+ * const fileName = fileBox.name
957
+ * fileBox.toFile(fileName)
958
+ */
959
+ async toFileBox (): Promise<FileBoxInterface> {
960
+ log.verbose('Message', 'toFileBox()')
961
+ if (this.type() === PUPPET.types.Message.Text) {
962
+ throw new Error('text message no file')
963
+ }
964
+ const fileBox = await this.wechaty.puppet.messageFile(this.id)
965
+ return fileBox
966
+ }
967
+
968
+ /**
969
+ * Extract the Image File from the Message, so that we can use different image sizes.
970
+ * > Tips:
971
+ * This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
972
+ *
973
+ * @returns {ImageInterface}
974
+ *
975
+ * @example <caption>Save image file from a message</caption>
976
+ * const image = message.toImage()
977
+ * const fileBox = await image.artwork()
978
+ * const fileName = fileBox.name
979
+ * fileBox.toFile(fileName)
980
+ */
981
+ toImage (): ImageInterface {
982
+ log.verbose('Message', 'toImage() for message id: %s', this.id)
983
+ if (this.type() !== PUPPET.types.Message.Image) {
984
+ throw new Error(`not a image type message. type: ${this.type()}`)
985
+ }
986
+ return this.wechaty.Image.create(this.id)
987
+ }
988
+
989
+ /**
990
+ * Get Share Card of the Message
991
+ * Extract the Contact Card from the Message, and encapsulate it into Contact class
992
+ * > Tips:
993
+ * This function is depending on the Puppet Implementation, see [puppet-compatible-table](https://github.com/wechaty/wechaty/wiki/Puppet#3-puppet-compatible-table)
994
+ * @returns {Promise<ContactInterface>}
995
+ */
996
+ async toContact (): Promise<ContactInterface> {
997
+ log.verbose('Message', 'toContact()')
998
+
999
+ if (this.type() !== PUPPET.types.Message.Contact) {
1000
+ throw new Error('message not a ShareCard')
1001
+ }
1002
+
1003
+ const contactId = await this.wechaty.puppet.messageContact(this.id)
1004
+
1005
+ if (!contactId) {
1006
+ throw new Error(`can not get Contact id by message: ${contactId}`)
1007
+ }
1008
+
1009
+ const contact = await this.wechaty.Contact.find({ id: contactId })
1010
+ if (!contact) {
1011
+ throw new Error(`can not get Contact payload by from id: ${contactId}`)
1012
+ }
1013
+
1014
+ return contact
1015
+ }
1016
+
1017
+ async toUrlLink (): Promise<UrlLinkInterface> {
1018
+ log.verbose('Message', 'toUrlLink()')
1019
+
1020
+ if (!this.payload) {
1021
+ throw new Error('no payload')
1022
+ }
1023
+
1024
+ if (this.type() !== PUPPET.types.Message.Url) {
1025
+ throw new Error('message not a Url Link')
1026
+ }
1027
+
1028
+ const urlPayload = await this.wechaty.puppet.messageUrl(this.id)
1029
+
1030
+ return new this.wechaty.UrlLink(urlPayload)
1031
+ }
1032
+
1033
+ async toMiniProgram (): Promise<MiniProgramInterface> {
1034
+ log.verbose('Message', 'toMiniProgram()')
1035
+
1036
+ if (!this.payload) {
1037
+ throw new Error('no payload')
1038
+ }
1039
+
1040
+ if (this.type() !== PUPPET.types.Message.MiniProgram) {
1041
+ throw new Error('message not a MiniProgram')
1042
+ }
1043
+
1044
+ const miniProgramPayload = await this.wechaty.puppet.messageMiniProgram(this.id)
1045
+
1046
+ return new this.wechaty.MiniProgram(miniProgramPayload)
1047
+ }
1048
+
1049
+ async toLocation (): Promise<LocationInterface> {
1050
+ log.verbose('Message', 'toLocation()')
1051
+
1052
+ if (!this.payload) {
1053
+ throw new Error('no payload')
1054
+ }
1055
+
1056
+ if (this.type() !== PUPPET.types.Message.Location) {
1057
+ throw new Error('message not a Location')
1058
+ }
1059
+
1060
+ const locationPayload = await this.wechaty.puppet.messageLocation(this.id)
1061
+
1062
+ return new LocationImpl(locationPayload)
1063
+ }
1064
+
1065
+ public async toPost (): Promise<PostInterface> {
1066
+ log.verbose('Message', 'toPost()')
1067
+
1068
+ if (!this.payload) {
1069
+ throw new Error('no payload')
1070
+ }
1071
+
1072
+ if (this.type() !== PUPPET.types.Message.Post) {
1073
+ throw new Error('message type not a Post')
1074
+ }
1075
+
1076
+ const post = PostImpl.load(this.id)
1077
+ await post.ready()
1078
+ return post
1079
+ }
1080
+
1081
+ async toSayable (): Promise<undefined | Sayable> {
1082
+ log.verbose('Message', 'toSayable()')
1083
+ return messageToSayable(this)
1084
+ }
1085
+
1086
+ }
1087
+
1088
+ class MessageImplBase extends validationMixin(MessageMixin)<MessageImplInterface>() {}
1089
+ interface MessageImplInterface extends MessageImplBase {}
1090
+
1091
+ type MessageProtectedProperty =
1092
+ | 'ready'
1093
+
1094
+ type MessageInterface = Omit<MessageImplInterface, MessageProtectedProperty>
1095
+ class MessageImpl extends validationMixin(MessageImplBase)<MessageInterface>() {}
1096
+
1097
+ type MessageConstructor = Constructor<
1098
+ MessageInterface,
1099
+ Omit<typeof MessageImpl, 'load'>
1100
+ >
1101
+
1102
+ export type {
1103
+ MessageInterface,
1104
+ MessageProtectedProperty,
1105
+ MessageConstructor,
1106
+ }
1107
+ export {
1108
+ MessageImpl,
1109
+ }