@juzi/wechaty 1.0.159 → 1.0.161

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 (373) hide show
  1. package/dist/cjs/src/io.js +40 -40
  2. package/dist/cjs/src/io.js.map +1 -1
  3. package/dist/cjs/src/package-json.js +4 -4
  4. package/dist/cjs/src/schemas/logger.d.ts +2 -0
  5. package/dist/cjs/src/schemas/logger.d.ts.map +1 -0
  6. package/dist/cjs/src/schemas/logger.js +3 -0
  7. package/dist/cjs/src/schemas/logger.js.map +1 -0
  8. package/dist/cjs/src/schemas/mod.d.ts +2 -1
  9. package/dist/cjs/src/schemas/mod.d.ts.map +1 -1
  10. package/dist/cjs/src/schemas/mod.js.map +1 -1
  11. package/dist/cjs/src/schemas/wechaty-options.d.ts +19 -0
  12. package/dist/cjs/src/schemas/wechaty-options.d.ts.map +1 -1
  13. package/dist/cjs/src/user-mixins/wechatify.d.ts +23 -0
  14. package/dist/cjs/src/user-mixins/wechatify.d.ts.map +1 -1
  15. package/dist/cjs/src/user-mixins/wechatify.js +25 -0
  16. package/dist/cjs/src/user-mixins/wechatify.js.map +1 -1
  17. package/dist/cjs/src/user-modules/call.d.ts +4 -0
  18. package/dist/cjs/src/user-modules/call.d.ts.map +1 -1
  19. package/dist/cjs/src/user-modules/call.js +6 -7
  20. package/dist/cjs/src/user-modules/call.js.map +1 -1
  21. package/dist/cjs/src/user-modules/channel-card.d.ts +2 -0
  22. package/dist/cjs/src/user-modules/channel-card.d.ts.map +1 -1
  23. package/dist/cjs/src/user-modules/channel-card.js +2 -3
  24. package/dist/cjs/src/user-modules/channel-card.js.map +1 -1
  25. package/dist/cjs/src/user-modules/channel.d.ts +2 -0
  26. package/dist/cjs/src/user-modules/channel.d.ts.map +1 -1
  27. package/dist/cjs/src/user-modules/channel.js +2 -3
  28. package/dist/cjs/src/user-modules/channel.js.map +1 -1
  29. package/dist/cjs/src/user-modules/chat-history.d.ts +2 -0
  30. package/dist/cjs/src/user-modules/chat-history.d.ts.map +1 -1
  31. package/dist/cjs/src/user-modules/chat-history.js +2 -3
  32. package/dist/cjs/src/user-modules/chat-history.js.map +1 -1
  33. package/dist/cjs/src/user-modules/consult-card.d.ts +2 -0
  34. package/dist/cjs/src/user-modules/consult-card.d.ts.map +1 -1
  35. package/dist/cjs/src/user-modules/consult-card.js +3 -4
  36. package/dist/cjs/src/user-modules/consult-card.js.map +1 -1
  37. package/dist/cjs/src/user-modules/contact-self.d.ts.map +1 -1
  38. package/dist/cjs/src/user-modules/contact-self.js +8 -9
  39. package/dist/cjs/src/user-modules/contact-self.js.map +1 -1
  40. package/dist/cjs/src/user-modules/contact.d.ts +2 -0
  41. package/dist/cjs/src/user-modules/contact.d.ts.map +1 -1
  42. package/dist/cjs/src/user-modules/contact.js +36 -37
  43. package/dist/cjs/src/user-modules/contact.js.map +1 -1
  44. package/dist/cjs/src/user-modules/delay.d.ts +2 -0
  45. package/dist/cjs/src/user-modules/delay.d.ts.map +1 -1
  46. package/dist/cjs/src/user-modules/douyin-one-click-phone-collection.d.ts +2 -0
  47. package/dist/cjs/src/user-modules/douyin-one-click-phone-collection.d.ts.map +1 -1
  48. package/dist/cjs/src/user-modules/douyin-one-click-phone-collection.js +2 -3
  49. package/dist/cjs/src/user-modules/douyin-one-click-phone-collection.js.map +1 -1
  50. package/dist/cjs/src/user-modules/favorite.d.ts +21 -0
  51. package/dist/cjs/src/user-modules/favorite.d.ts.map +1 -1
  52. package/dist/cjs/src/user-modules/favorite.js +1 -21
  53. package/dist/cjs/src/user-modules/favorite.js.map +1 -1
  54. package/dist/cjs/src/user-modules/friendship.d.ts +2 -0
  55. package/dist/cjs/src/user-modules/friendship.d.ts.map +1 -1
  56. package/dist/cjs/src/user-modules/friendship.js +11 -12
  57. package/dist/cjs/src/user-modules/friendship.js.map +1 -1
  58. package/dist/cjs/src/user-modules/im-specific.d.ts +2 -0
  59. package/dist/cjs/src/user-modules/im-specific.d.ts.map +1 -1
  60. package/dist/cjs/src/user-modules/im-specific.js +1 -2
  61. package/dist/cjs/src/user-modules/im-specific.js.map +1 -1
  62. package/dist/cjs/src/user-modules/image.d.ts +22 -0
  63. package/dist/cjs/src/user-modules/image.d.ts.map +1 -1
  64. package/dist/cjs/src/user-modules/image.js +5 -6
  65. package/dist/cjs/src/user-modules/image.js.map +1 -1
  66. package/dist/cjs/src/user-modules/location.d.ts +2 -0
  67. package/dist/cjs/src/user-modules/location.d.ts.map +1 -1
  68. package/dist/cjs/src/user-modules/location.js +2 -3
  69. package/dist/cjs/src/user-modules/location.js.map +1 -1
  70. package/dist/cjs/src/user-modules/message.d.ts +2 -0
  71. package/dist/cjs/src/user-modules/message.d.ts.map +1 -1
  72. package/dist/cjs/src/user-modules/message.js +55 -55
  73. package/dist/cjs/src/user-modules/message.js.map +1 -1
  74. package/dist/cjs/src/user-modules/mini-program.d.ts +2 -0
  75. package/dist/cjs/src/user-modules/mini-program.d.ts.map +1 -1
  76. package/dist/cjs/src/user-modules/mini-program.js +2 -3
  77. package/dist/cjs/src/user-modules/mini-program.js.map +1 -1
  78. package/dist/cjs/src/user-modules/moment.d.ts +21 -0
  79. package/dist/cjs/src/user-modules/moment.d.ts.map +1 -1
  80. package/dist/cjs/src/user-modules/moment.js +5 -25
  81. package/dist/cjs/src/user-modules/moment.js.map +1 -1
  82. package/dist/cjs/src/user-modules/money.d.ts +2 -0
  83. package/dist/cjs/src/user-modules/money.d.ts.map +1 -1
  84. package/dist/cjs/src/user-modules/post.d.ts +2 -0
  85. package/dist/cjs/src/user-modules/post.d.ts.map +1 -1
  86. package/dist/cjs/src/user-modules/post.js +25 -25
  87. package/dist/cjs/src/user-modules/post.js.map +1 -1
  88. package/dist/cjs/src/user-modules/premium-online-appointment-card.d.ts +2 -0
  89. package/dist/cjs/src/user-modules/premium-online-appointment-card.d.ts.map +1 -1
  90. package/dist/cjs/src/user-modules/premium-online-appointment-card.js +2 -3
  91. package/dist/cjs/src/user-modules/premium-online-appointment-card.js.map +1 -1
  92. package/dist/cjs/src/user-modules/room-invitation.d.ts +2 -0
  93. package/dist/cjs/src/user-modules/room-invitation.d.ts.map +1 -1
  94. package/dist/cjs/src/user-modules/room-invitation.js +10 -11
  95. package/dist/cjs/src/user-modules/room-invitation.js.map +1 -1
  96. package/dist/cjs/src/user-modules/room.d.ts +2 -0
  97. package/dist/cjs/src/user-modules/room.d.ts.map +1 -1
  98. package/dist/cjs/src/user-modules/room.js +43 -43
  99. package/dist/cjs/src/user-modules/room.js.map +1 -1
  100. package/dist/cjs/src/user-modules/tag-group.d.ts +2 -0
  101. package/dist/cjs/src/user-modules/tag-group.d.ts.map +1 -1
  102. package/dist/cjs/src/user-modules/tag-group.js +13 -14
  103. package/dist/cjs/src/user-modules/tag-group.js.map +1 -1
  104. package/dist/cjs/src/user-modules/tag.d.ts +2 -0
  105. package/dist/cjs/src/user-modules/tag.d.ts.map +1 -1
  106. package/dist/cjs/src/user-modules/tag.js +21 -22
  107. package/dist/cjs/src/user-modules/tag.js.map +1 -1
  108. package/dist/cjs/src/user-modules/url-link.d.ts +2 -0
  109. package/dist/cjs/src/user-modules/url-link.d.ts.map +1 -1
  110. package/dist/cjs/src/user-modules/url-link.js +2 -3
  111. package/dist/cjs/src/user-modules/url-link.js.map +1 -1
  112. package/dist/cjs/src/user-modules/voice.d.ts +2 -0
  113. package/dist/cjs/src/user-modules/voice.d.ts.map +1 -1
  114. package/dist/cjs/src/user-modules/voice.js +8 -9
  115. package/dist/cjs/src/user-modules/voice.js.map +1 -1
  116. package/dist/cjs/src/user-modules/wecom.d.ts +3 -1
  117. package/dist/cjs/src/user-modules/wecom.d.ts.map +1 -1
  118. package/dist/cjs/src/user-modules/wecom.js +2 -3
  119. package/dist/cjs/src/user-modules/wecom.js.map +1 -1
  120. package/dist/cjs/src/user-modules/wxxd-order.d.ts +2 -0
  121. package/dist/cjs/src/user-modules/wxxd-order.d.ts.map +1 -1
  122. package/dist/cjs/src/user-modules/wxxd-order.js +9 -10
  123. package/dist/cjs/src/user-modules/wxxd-order.js.map +1 -1
  124. package/dist/cjs/src/user-modules/wxxd-product.d.ts +2 -0
  125. package/dist/cjs/src/user-modules/wxxd-product.d.ts.map +1 -1
  126. package/dist/cjs/src/user-modules/wxxd-product.js +6 -7
  127. package/dist/cjs/src/user-modules/wxxd-product.js.map +1 -1
  128. package/dist/cjs/src/wechaty/wechaty-base.d.ts +21 -37
  129. package/dist/cjs/src/wechaty/wechaty-base.d.ts.map +1 -1
  130. package/dist/cjs/src/wechaty/wechaty-base.js +17 -17
  131. package/dist/cjs/src/wechaty/wechaty-base.js.map +1 -1
  132. package/dist/cjs/src/wechaty/wechaty-skeleton.d.ts +15 -4
  133. package/dist/cjs/src/wechaty/wechaty-skeleton.d.ts.map +1 -1
  134. package/dist/cjs/src/wechaty/wechaty-skeleton.js +17 -6
  135. package/dist/cjs/src/wechaty/wechaty-skeleton.js.map +1 -1
  136. package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts +3 -2
  137. package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts.map +1 -1
  138. package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts +12 -6
  139. package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts.map +1 -1
  140. package/dist/cjs/src/wechaty-mixins/io-mixin.js +8 -8
  141. package/dist/cjs/src/wechaty-mixins/io-mixin.js.map +1 -1
  142. package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts +53 -19
  143. package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts.map +1 -1
  144. package/dist/cjs/src/wechaty-mixins/login-mixin.js +5 -5
  145. package/dist/cjs/src/wechaty-mixins/login-mixin.js.map +1 -1
  146. package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts +15 -10
  147. package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts.map +1 -1
  148. package/dist/cjs/src/wechaty-mixins/misc-mixin.js +1 -1
  149. package/dist/cjs/src/wechaty-mixins/misc-mixin.js.map +1 -1
  150. package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts +18 -12
  151. package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts.map +1 -1
  152. package/dist/cjs/src/wechaty-mixins/plugin-mixin.js +5 -5
  153. package/dist/cjs/src/wechaty-mixins/plugin-mixin.js.map +1 -1
  154. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts +16 -34
  155. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
  156. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js +90 -90
  157. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js.map +1 -1
  158. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +3 -2
  159. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts.map +1 -1
  160. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.js +4 -4
  161. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.js.map +1 -1
  162. package/dist/esm/src/io.js +40 -40
  163. package/dist/esm/src/io.js.map +1 -1
  164. package/dist/esm/src/package-json.js +4 -4
  165. package/dist/esm/src/schemas/logger.d.ts +2 -0
  166. package/dist/esm/src/schemas/logger.d.ts.map +1 -0
  167. package/dist/esm/src/schemas/logger.js +2 -0
  168. package/dist/esm/src/schemas/logger.js.map +1 -0
  169. package/dist/esm/src/schemas/mod.d.ts +2 -1
  170. package/dist/esm/src/schemas/mod.d.ts.map +1 -1
  171. package/dist/esm/src/schemas/mod.js.map +1 -1
  172. package/dist/esm/src/schemas/wechaty-options.d.ts +19 -0
  173. package/dist/esm/src/schemas/wechaty-options.d.ts.map +1 -1
  174. package/dist/esm/src/user-mixins/wechatify.d.ts +23 -0
  175. package/dist/esm/src/user-mixins/wechatify.d.ts.map +1 -1
  176. package/dist/esm/src/user-mixins/wechatify.js +25 -0
  177. package/dist/esm/src/user-mixins/wechatify.js.map +1 -1
  178. package/dist/esm/src/user-modules/call.d.ts +4 -0
  179. package/dist/esm/src/user-modules/call.d.ts.map +1 -1
  180. package/dist/esm/src/user-modules/call.js +6 -7
  181. package/dist/esm/src/user-modules/call.js.map +1 -1
  182. package/dist/esm/src/user-modules/channel-card.d.ts +2 -0
  183. package/dist/esm/src/user-modules/channel-card.d.ts.map +1 -1
  184. package/dist/esm/src/user-modules/channel-card.js +2 -3
  185. package/dist/esm/src/user-modules/channel-card.js.map +1 -1
  186. package/dist/esm/src/user-modules/channel.d.ts +2 -0
  187. package/dist/esm/src/user-modules/channel.d.ts.map +1 -1
  188. package/dist/esm/src/user-modules/channel.js +2 -3
  189. package/dist/esm/src/user-modules/channel.js.map +1 -1
  190. package/dist/esm/src/user-modules/chat-history.d.ts +2 -0
  191. package/dist/esm/src/user-modules/chat-history.d.ts.map +1 -1
  192. package/dist/esm/src/user-modules/chat-history.js +2 -3
  193. package/dist/esm/src/user-modules/chat-history.js.map +1 -1
  194. package/dist/esm/src/user-modules/consult-card.d.ts +2 -0
  195. package/dist/esm/src/user-modules/consult-card.d.ts.map +1 -1
  196. package/dist/esm/src/user-modules/consult-card.js +3 -4
  197. package/dist/esm/src/user-modules/consult-card.js.map +1 -1
  198. package/dist/esm/src/user-modules/contact-self.d.ts.map +1 -1
  199. package/dist/esm/src/user-modules/contact-self.js +8 -9
  200. package/dist/esm/src/user-modules/contact-self.js.map +1 -1
  201. package/dist/esm/src/user-modules/contact.d.ts +2 -0
  202. package/dist/esm/src/user-modules/contact.d.ts.map +1 -1
  203. package/dist/esm/src/user-modules/contact.js +36 -37
  204. package/dist/esm/src/user-modules/contact.js.map +1 -1
  205. package/dist/esm/src/user-modules/delay.d.ts +2 -0
  206. package/dist/esm/src/user-modules/delay.d.ts.map +1 -1
  207. package/dist/esm/src/user-modules/douyin-one-click-phone-collection.d.ts +2 -0
  208. package/dist/esm/src/user-modules/douyin-one-click-phone-collection.d.ts.map +1 -1
  209. package/dist/esm/src/user-modules/douyin-one-click-phone-collection.js +2 -3
  210. package/dist/esm/src/user-modules/douyin-one-click-phone-collection.js.map +1 -1
  211. package/dist/esm/src/user-modules/favorite.d.ts +21 -0
  212. package/dist/esm/src/user-modules/favorite.d.ts.map +1 -1
  213. package/dist/esm/src/user-modules/favorite.js +1 -21
  214. package/dist/esm/src/user-modules/favorite.js.map +1 -1
  215. package/dist/esm/src/user-modules/friendship.d.ts +2 -0
  216. package/dist/esm/src/user-modules/friendship.d.ts.map +1 -1
  217. package/dist/esm/src/user-modules/friendship.js +11 -12
  218. package/dist/esm/src/user-modules/friendship.js.map +1 -1
  219. package/dist/esm/src/user-modules/im-specific.d.ts +2 -0
  220. package/dist/esm/src/user-modules/im-specific.d.ts.map +1 -1
  221. package/dist/esm/src/user-modules/im-specific.js +1 -2
  222. package/dist/esm/src/user-modules/im-specific.js.map +1 -1
  223. package/dist/esm/src/user-modules/image.d.ts +22 -0
  224. package/dist/esm/src/user-modules/image.d.ts.map +1 -1
  225. package/dist/esm/src/user-modules/image.js +5 -6
  226. package/dist/esm/src/user-modules/image.js.map +1 -1
  227. package/dist/esm/src/user-modules/location.d.ts +2 -0
  228. package/dist/esm/src/user-modules/location.d.ts.map +1 -1
  229. package/dist/esm/src/user-modules/location.js +2 -3
  230. package/dist/esm/src/user-modules/location.js.map +1 -1
  231. package/dist/esm/src/user-modules/message.d.ts +2 -0
  232. package/dist/esm/src/user-modules/message.d.ts.map +1 -1
  233. package/dist/esm/src/user-modules/message.js +56 -56
  234. package/dist/esm/src/user-modules/message.js.map +1 -1
  235. package/dist/esm/src/user-modules/mini-program.d.ts +2 -0
  236. package/dist/esm/src/user-modules/mini-program.d.ts.map +1 -1
  237. package/dist/esm/src/user-modules/mini-program.js +2 -3
  238. package/dist/esm/src/user-modules/mini-program.js.map +1 -1
  239. package/dist/esm/src/user-modules/moment.d.ts +21 -0
  240. package/dist/esm/src/user-modules/moment.d.ts.map +1 -1
  241. package/dist/esm/src/user-modules/moment.js +5 -25
  242. package/dist/esm/src/user-modules/moment.js.map +1 -1
  243. package/dist/esm/src/user-modules/money.d.ts +2 -0
  244. package/dist/esm/src/user-modules/money.d.ts.map +1 -1
  245. package/dist/esm/src/user-modules/post.d.ts +2 -0
  246. package/dist/esm/src/user-modules/post.d.ts.map +1 -1
  247. package/dist/esm/src/user-modules/post.js +25 -25
  248. package/dist/esm/src/user-modules/post.js.map +1 -1
  249. package/dist/esm/src/user-modules/premium-online-appointment-card.d.ts +2 -0
  250. package/dist/esm/src/user-modules/premium-online-appointment-card.d.ts.map +1 -1
  251. package/dist/esm/src/user-modules/premium-online-appointment-card.js +2 -3
  252. package/dist/esm/src/user-modules/premium-online-appointment-card.js.map +1 -1
  253. package/dist/esm/src/user-modules/room-invitation.d.ts +2 -0
  254. package/dist/esm/src/user-modules/room-invitation.d.ts.map +1 -1
  255. package/dist/esm/src/user-modules/room-invitation.js +10 -11
  256. package/dist/esm/src/user-modules/room-invitation.js.map +1 -1
  257. package/dist/esm/src/user-modules/room.d.ts +2 -0
  258. package/dist/esm/src/user-modules/room.d.ts.map +1 -1
  259. package/dist/esm/src/user-modules/room.js +44 -44
  260. package/dist/esm/src/user-modules/room.js.map +1 -1
  261. package/dist/esm/src/user-modules/tag-group.d.ts +2 -0
  262. package/dist/esm/src/user-modules/tag-group.d.ts.map +1 -1
  263. package/dist/esm/src/user-modules/tag-group.js +13 -14
  264. package/dist/esm/src/user-modules/tag-group.js.map +1 -1
  265. package/dist/esm/src/user-modules/tag.d.ts +2 -0
  266. package/dist/esm/src/user-modules/tag.d.ts.map +1 -1
  267. package/dist/esm/src/user-modules/tag.js +21 -22
  268. package/dist/esm/src/user-modules/tag.js.map +1 -1
  269. package/dist/esm/src/user-modules/url-link.d.ts +2 -0
  270. package/dist/esm/src/user-modules/url-link.d.ts.map +1 -1
  271. package/dist/esm/src/user-modules/url-link.js +2 -3
  272. package/dist/esm/src/user-modules/url-link.js.map +1 -1
  273. package/dist/esm/src/user-modules/voice.d.ts +2 -0
  274. package/dist/esm/src/user-modules/voice.d.ts.map +1 -1
  275. package/dist/esm/src/user-modules/voice.js +8 -9
  276. package/dist/esm/src/user-modules/voice.js.map +1 -1
  277. package/dist/esm/src/user-modules/wecom.d.ts +3 -1
  278. package/dist/esm/src/user-modules/wecom.d.ts.map +1 -1
  279. package/dist/esm/src/user-modules/wecom.js +2 -3
  280. package/dist/esm/src/user-modules/wecom.js.map +1 -1
  281. package/dist/esm/src/user-modules/wxxd-order.d.ts +2 -0
  282. package/dist/esm/src/user-modules/wxxd-order.d.ts.map +1 -1
  283. package/dist/esm/src/user-modules/wxxd-order.js +9 -10
  284. package/dist/esm/src/user-modules/wxxd-order.js.map +1 -1
  285. package/dist/esm/src/user-modules/wxxd-product.d.ts +2 -0
  286. package/dist/esm/src/user-modules/wxxd-product.d.ts.map +1 -1
  287. package/dist/esm/src/user-modules/wxxd-product.js +6 -7
  288. package/dist/esm/src/user-modules/wxxd-product.js.map +1 -1
  289. package/dist/esm/src/wechaty/wechaty-base.d.ts +21 -37
  290. package/dist/esm/src/wechaty/wechaty-base.d.ts.map +1 -1
  291. package/dist/esm/src/wechaty/wechaty-base.js +17 -17
  292. package/dist/esm/src/wechaty/wechaty-base.js.map +1 -1
  293. package/dist/esm/src/wechaty/wechaty-skeleton.d.ts +15 -4
  294. package/dist/esm/src/wechaty/wechaty-skeleton.d.ts.map +1 -1
  295. package/dist/esm/src/wechaty/wechaty-skeleton.js +17 -6
  296. package/dist/esm/src/wechaty/wechaty-skeleton.js.map +1 -1
  297. package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts +3 -2
  298. package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts.map +1 -1
  299. package/dist/esm/src/wechaty-mixins/io-mixin.d.ts +12 -6
  300. package/dist/esm/src/wechaty-mixins/io-mixin.d.ts.map +1 -1
  301. package/dist/esm/src/wechaty-mixins/io-mixin.js +8 -8
  302. package/dist/esm/src/wechaty-mixins/io-mixin.js.map +1 -1
  303. package/dist/esm/src/wechaty-mixins/login-mixin.d.ts +53 -19
  304. package/dist/esm/src/wechaty-mixins/login-mixin.d.ts.map +1 -1
  305. package/dist/esm/src/wechaty-mixins/login-mixin.js +5 -5
  306. package/dist/esm/src/wechaty-mixins/login-mixin.js.map +1 -1
  307. package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts +15 -10
  308. package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts.map +1 -1
  309. package/dist/esm/src/wechaty-mixins/misc-mixin.js +1 -1
  310. package/dist/esm/src/wechaty-mixins/misc-mixin.js.map +1 -1
  311. package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts +18 -12
  312. package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts.map +1 -1
  313. package/dist/esm/src/wechaty-mixins/plugin-mixin.js +5 -5
  314. package/dist/esm/src/wechaty-mixins/plugin-mixin.js.map +1 -1
  315. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts +16 -34
  316. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
  317. package/dist/esm/src/wechaty-mixins/puppet-mixin.js +90 -90
  318. package/dist/esm/src/wechaty-mixins/puppet-mixin.js.map +1 -1
  319. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +3 -2
  320. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts.map +1 -1
  321. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.js +4 -4
  322. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.js.map +1 -1
  323. package/package.json +3 -3
  324. package/src/io.ts +40 -40
  325. package/src/package-json.ts +4 -4
  326. package/src/schemas/logger.ts +1 -0
  327. package/src/schemas/mod.ts +4 -0
  328. package/src/schemas/wechaty-options.ts +21 -0
  329. package/src/user-mixins/wechatify.ts +26 -0
  330. package/src/user-modules/call.ts +6 -7
  331. package/src/user-modules/channel-card.ts +2 -3
  332. package/src/user-modules/channel.ts +2 -3
  333. package/src/user-modules/chat-history.ts +2 -3
  334. package/src/user-modules/consult-card.ts +3 -5
  335. package/src/user-modules/contact-self.ts +8 -11
  336. package/src/user-modules/contact.ts +36 -40
  337. package/src/user-modules/douyin-one-click-phone-collection.ts +2 -3
  338. package/src/user-modules/favorite.ts +1 -2
  339. package/src/user-modules/friendship.ts +11 -12
  340. package/src/user-modules/im-specific.ts +1 -2
  341. package/src/user-modules/image.ts +5 -6
  342. package/src/user-modules/location.ts +2 -3
  343. package/src/user-modules/message.ts +55 -56
  344. package/src/user-modules/mini-program.ts +2 -3
  345. package/src/user-modules/moment.ts +5 -6
  346. package/src/user-modules/post.ts +25 -25
  347. package/src/user-modules/premium-online-appointment-card.ts +2 -3
  348. package/src/user-modules/room-invitation.ts +10 -11
  349. package/src/user-modules/room.ts +43 -44
  350. package/src/user-modules/tag-group.ts +13 -14
  351. package/src/user-modules/tag.ts +21 -22
  352. package/src/user-modules/url-link.ts +2 -3
  353. package/src/user-modules/voice.ts +8 -9
  354. package/src/user-modules/wecom.ts +3 -3
  355. package/src/user-modules/wxxd-order.ts +9 -10
  356. package/src/user-modules/wxxd-product.ts +6 -7
  357. package/src/wechaty/wechaty-base.ts +17 -17
  358. package/src/wechaty/wechaty-skeleton.ts +21 -8
  359. package/src/wechaty-mixins/io-mixin.ts +8 -8
  360. package/src/wechaty-mixins/login-mixin.ts +5 -5
  361. package/src/wechaty-mixins/misc-mixin.ts +1 -1
  362. package/src/wechaty-mixins/plugin-mixin.ts +5 -5
  363. package/src/wechaty-mixins/puppet-mixin.ts +97 -86
  364. package/src/wechaty-mixins/wechatify-user-module-mixin.ts +4 -4
  365. package/dist/cjs/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.d.ts +0 -3
  366. package/dist/cjs/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.d.ts.map +0 -1
  367. package/dist/cjs/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.js +0 -121
  368. package/dist/cjs/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.js.map +0 -1
  369. package/dist/esm/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.d.ts +0 -3
  370. package/dist/esm/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.d.ts.map +0 -1
  371. package/dist/esm/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.js +0 -96
  372. package/dist/esm/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.js.map +0 -1
  373. package/src/wechaty-mixins/puppet-mixin-dirty-pool.spec.ts +0 -144
@@ -1,5 +1,5 @@
1
1
  import * as PUPPET from '@juzi/wechaty-puppet'
2
- import { log } from '@juzi/wechaty-puppet'
2
+ import { log, type LoggerLike } from '@juzi/wechaty-puppet'
3
3
  import {
4
4
  GError,
5
5
  timeoutPromise,
@@ -18,8 +18,12 @@ import type {
18
18
  CallImpl,
19
19
  ContactImpl,
20
20
  ContactInterface,
21
+ MessageImpl,
22
+ RoomImpl,
21
23
  TagGroupInterface,
22
24
  TagInterface,
25
+ WxxdOrderImpl,
26
+ WxxdProductImpl,
23
27
  } from '../user-modules/mod.js'
24
28
 
25
29
  import type {
@@ -81,11 +85,11 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
81
85
  }
82
86
 
83
87
  override async start (): Promise<void> {
84
- log.verbose('WechatyPuppetMixin', 'start()')
88
+ this.log.verbose('WechatyPuppetMixin', 'start()')
85
89
 
86
- log.verbose('WechatyPuppetMixin', 'start() super.start() ...')
90
+ this.log.verbose('WechatyPuppetMixin', 'start() super.start() ...')
87
91
  await super.start()
88
- log.verbose('WechatyPuppetMixin', 'start() super.start() ... done')
92
+ this.log.verbose('WechatyPuppetMixin', 'start() super.start() ... done')
89
93
 
90
94
  try {
91
95
  /**
@@ -97,12 +101,12 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
97
101
  }
98
102
 
99
103
  try {
100
- log.verbose('WechatyPuppetMixin', 'start() starting puppet ...')
104
+ this.log.verbose('WechatyPuppetMixin', 'start() starting puppet ...')
101
105
  await timeoutPromise(
102
106
  this.puppet.start(),
103
107
  15 * 1000, // 15 seconds timeout
104
108
  )
105
- log.verbose('WechatyPuppetMixin', 'start() starting puppet ... done')
109
+ this.log.verbose('WechatyPuppetMixin', 'start() starting puppet ... done')
106
110
  } catch (e) {
107
111
  if (e instanceof TimeoutPromiseGError) {
108
112
  /**
@@ -115,8 +119,8 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
115
119
  *
116
120
  * e.g. after resolve @issue https://github.com/padlocal/wechaty-puppet-padlocal/issues/116
117
121
  */
118
- log.warn('WechatyPuppetMixin', 'start() starting puppet ... timeout')
119
- log.warn('WechatyPuppetMixin', 'start() puppet info: %s', this.puppet)
122
+ this.log.warn('WechatyPuppetMixin', 'start() starting puppet ... timeout')
123
+ this.log.warn('WechatyPuppetMixin', 'start() puppet info: %s', this.puppet)
120
124
  } else {
121
125
  throw e
122
126
  }
@@ -128,88 +132,116 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
128
132
  }
129
133
 
130
134
  override async stop (): Promise<void> {
131
- log.verbose('WechatyPuppetMixin', 'stop()')
135
+ this.log.verbose('WechatyPuppetMixin', 'stop()')
132
136
 
133
137
  try {
134
- log.verbose('WechatyPuppetMixin', 'stop() stopping puppet ...')
138
+ this.log.verbose('WechatyPuppetMixin', 'stop() stopping puppet ...')
135
139
  await timeoutPromise(
136
140
  this.puppet.stop(),
137
141
  15 * 1000, // 15 seconds timeout
138
142
  )
139
- log.verbose('WechatyPuppetMixin', 'stop() stopping puppet ... done')
143
+ this.log.verbose('WechatyPuppetMixin', 'stop() stopping puppet ... done')
140
144
  } catch (e) {
141
145
  if (e instanceof TimeoutPromiseGError) {
142
- log.warn('WechatyPuppetMixin', 'stop() stopping puppet ... timeout')
143
- log.warn('WechatyPuppetMixin', 'stop() puppet info: %s', this.puppet)
146
+ this.log.warn('WechatyPuppetMixin', 'stop() stopping puppet ... timeout')
147
+ this.log.warn('WechatyPuppetMixin', 'stop() puppet info: %s', this.puppet)
144
148
  }
145
149
  this.emitError(e)
146
150
  }
147
151
 
148
- log.verbose('WechatyPuppetMixin', 'stop() super.stop() ...')
152
+ this.log.verbose('WechatyPuppetMixin', 'stop() super.stop() ...')
149
153
  await super.stop()
150
- log.verbose('WechatyPuppetMixin', 'stop() super.stop() ... done')
154
+ this.log.verbose('WechatyPuppetMixin', 'stop() super.stop() ... done')
151
155
 
152
156
  this.__callPool.clear()
153
157
  }
154
158
 
155
159
  async ready (): Promise<void> {
156
- log.verbose('WechatyPuppetMixin', 'ready()')
160
+ this.log.verbose('WechatyPuppetMixin', 'ready()')
157
161
  await this.__readyState.stable('active')
158
- log.silly('WechatyPuppetMixin', 'ready() this.readyState.stable(on) resolved')
162
+ this.log.silly('WechatyPuppetMixin', 'ready() this.readyState.stable(on) resolved')
159
163
  }
160
164
 
161
165
  override async init (): Promise<void> {
162
- log.verbose('WechatyPuppetMixin', 'init()')
166
+ this.log.verbose('WechatyPuppetMixin', 'init()')
163
167
  await super.init()
164
168
 
165
169
  if (this.__puppetMixinInited) {
166
- log.verbose('WechatyPuppetMixin', 'init() skipped because this puppet has already been inited before.')
170
+ this.log.verbose('WechatyPuppetMixin', 'init() skipped because this puppet has already been inited before.')
167
171
  return
168
172
  }
169
173
  this.__puppetMixinInited = true
170
174
 
171
- log.verbose('WechatyPuppetMixin', 'init() instanciating puppet instance ...')
175
+ this.log.verbose('WechatyPuppetMixin', 'init() instanciating puppet instance ...')
176
+ /**
177
+ * Forward `WechatyOptions.logger` down into `PuppetOptions.logger` so
178
+ * that the puppet layer emits logs through the same logger the caller
179
+ * supplied to Wechaty.
180
+ */
181
+ const basePuppetOptions = 'puppetOptions' in this.__options
182
+ ? this.__options.puppetOptions
183
+ : undefined
184
+ const mergedPuppetOptions = this.__options.logger
185
+ ? { ...(basePuppetOptions ?? {}), logger: this.__options.logger }
186
+ : basePuppetOptions
172
187
  const puppetInstance = await PUPPET.helpers.resolvePuppet({
173
188
  puppet: this.__options.puppet || config.systemPuppetName(),
174
- puppetOptions: 'puppetOptions' in this.__options
175
- ? this.__options.puppetOptions
176
- : undefined,
189
+ puppetOptions: mergedPuppetOptions,
177
190
  })
178
- log.verbose('WechatyPuppetMixin', 'init() instanciating puppet instance ... done')
191
+
192
+ /**
193
+ * Adopt the puppet's effective logger onto the Wechaty side, so that
194
+ * `wechaty.log` and, via the accessory chain, every user module
195
+ * (`Contact.log`, `Message.log`, ...) route through it. `PuppetInterface`
196
+ * hides `log` (via `PuppetSkeletonProtectedProperty`), so a structural
197
+ * cast is required. The `??` guards third-party puppets that never
198
+ * adopted the pluggable logger — those fall back to the brolog `log`
199
+ * already assigned in WechatySkeleton.
200
+ *
201
+ * Adopted immediately after `resolvePuppet` so the rest of init() —
202
+ * setMemory / setupPuppetEvents / the sync `emit('puppet')` listeners —
203
+ * all route through the caller-supplied logger, not brolog.
204
+ */
205
+ const puppetLog = (puppetInstance as unknown as { log?: LoggerLike }).log
206
+ if (puppetLog) {
207
+ this.__log = puppetLog
208
+ }
209
+
210
+ this.log.verbose('WechatyPuppetMixin', 'init() instanciating puppet instance ... done')
179
211
 
180
212
  /**
181
213
  * Plug the Memory Card to Puppet
182
214
  */
183
- log.verbose('WechatyPuppetMixin', 'init() setting memory ...')
215
+ this.log.verbose('WechatyPuppetMixin', 'init() setting memory ...')
184
216
  const puppetMemory = this.memory.multiplex(PUPPET_MEMORY_NAME)
185
217
  puppetInstance.setMemory(puppetMemory)
186
- log.verbose('WechatyPuppetMixin', 'init() setting memory ... done')
218
+ this.log.verbose('WechatyPuppetMixin', 'init() setting memory ... done')
187
219
 
188
220
  /**
189
221
  * Propagate Puppet Events to Wechaty
190
222
  */
191
- log.verbose('WechatyPuppetMixin', 'init() setting up events ...')
223
+ this.log.verbose('WechatyPuppetMixin', 'init() setting up events ...')
192
224
  this.__setupPuppetEvents(puppetInstance)
193
- log.verbose('WechatyPuppetMixin', 'init() setting up events ... done')
225
+ this.log.verbose('WechatyPuppetMixin', 'init() setting up events ... done')
194
226
 
195
227
  /**
196
228
  * Private Event
197
229
  * - Huan(202005): emit puppet when set
198
230
  * - Huan(202110): @see https://github.com/wechaty/redux/blob/16af0ae01f72e37f0ee286b49fa5ccf69850323d/src/wechaty-redux.ts#L82-L98
199
231
  */
200
- log.verbose('WechatyPuppetMixin', 'init() emitting "puppet" event ...')
232
+ this.log.verbose('WechatyPuppetMixin', 'init() emitting "puppet" event ...')
201
233
  ;(this.emit as any)('puppet', puppetInstance)
202
- log.verbose('WechatyPuppetMixin', 'init() emitting "puppet" event ... done')
234
+ this.log.verbose('WechatyPuppetMixin', 'init() emitting "puppet" event ... done')
203
235
 
204
236
  this.__puppet = puppetInstance
205
237
  }
206
238
 
207
239
  __setupPuppetEvents (puppet: PUPPET.impls.PuppetInterface): void {
208
- log.verbose('WechatyPuppetMixin', '__setupPuppetEvents(%s)', puppet)
240
+ this.log.verbose('WechatyPuppetMixin', '__setupPuppetEvents(%s)', puppet)
209
241
 
210
242
  const eventNameList: PUPPET.types.PuppetEventName[] = Object.keys(PUPPET.types.PUPPET_EVENT_DICT) as PUPPET.types.PuppetEventName[]
211
243
  for (const eventName of eventNameList) {
212
- log.verbose('PuppetMixin',
244
+ this.log.verbose('PuppetMixin',
213
245
  '__setupPuppetEvents() puppet.on(%s) (listenerCount:%s) registering...',
214
246
  eventName,
215
247
  puppet.listenerCount(eventName),
@@ -289,7 +321,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
289
321
  if (contact) {
290
322
  this.emit('logout', contact, payload.data)
291
323
  } else {
292
- log.verbose('PuppetMixin',
324
+ this.log.verbose('PuppetMixin',
293
325
  '__setupPuppetEvents() logout event contact self not found for id: %s',
294
326
  payload.contactId,
295
327
  )
@@ -386,7 +418,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
386
418
 
387
419
  case 'ready':
388
420
  puppet.on('ready', async () => {
389
- log.silly('WechatyPuppetMixin', '__setupPuppetEvents() puppet.on(ready)')
421
+ this.log.silly('WechatyPuppetMixin', '__setupPuppetEvents() puppet.on(ready)')
390
422
 
391
423
  // ready event should be emitted 15s after login
392
424
  let onceLogout: () => void
@@ -415,7 +447,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
415
447
  this.__readyState.active(true)
416
448
  }
417
449
  } catch (e) {
418
- log.error(`ready error: ${(e as Error).message}, will emit event anyway if it's logged in now`)
450
+ this.log.error(`ready error: ${(e as Error).message}, will emit event anyway if it's logged in now`)
419
451
  if (this.puppet.isLoggedIn) {
420
452
  this.emit('ready')
421
453
  this.__loginIndicator.value(true)
@@ -537,7 +569,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
537
569
  changer = await this.Contact.find({ id: payload.changerId })
538
570
  }
539
571
  } catch (e) {
540
- log.warn('room-announce', 'room-announce event error: %s', (e as Error).message)
572
+ this.log.warn('room-announce', 'room-announce event error: %s', (e as Error).message)
541
573
  }
542
574
  const date = timestampToDate(payload.timestamp)
543
575
  this.emit('room-announce', room, payload.newAnnounce, changer, payload.oldAnnounce, date)
@@ -584,7 +616,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
584
616
  return tag.name() === oldName
585
617
  })
586
618
  if (!result) {
587
- log.warn('WechatyPuppetMixin', 'tagRenameEvent still get old name after %s retries for tag %s', PUPPET_PAYLOAD_SYNC_MAX_RETRY, tag.id)
619
+ this.log.warn('WechatyPuppetMixin', 'tagRenameEvent still get old name after %s retries for tag %s', PUPPET_PAYLOAD_SYNC_MAX_RETRY, tag.id)
588
620
  }
589
621
  }))
590
622
  this.emit('tag', payload.type, renamedTags, date)
@@ -630,7 +662,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
630
662
  return tagGroup.name() === oldName
631
663
  })
632
664
  if (!result) {
633
- log.warn('WechatyPuppetMixin', 'tagGroupRenameEvent still get old name after %s retries for tagGroup %s', PUPPET_PAYLOAD_SYNC_MAX_RETRY, tagGroup.id)
665
+ this.log.warn('WechatyPuppetMixin', 'tagGroupRenameEvent still get old name after %s retries for tagGroup %s', PUPPET_PAYLOAD_SYNC_MAX_RETRY, tagGroup.id)
634
666
  }
635
667
  }))
636
668
  this.emit('tag-group', payload.type, renamedTagGroups, date)
@@ -664,7 +696,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
664
696
  this.emit('contact-enter-conversation', contact, date, payload.scene)
665
697
  contact.emit('enter-conversation', date, payload.scene)
666
698
  } else {
667
- log.verbose('PuppetMixin',
699
+ this.log.verbose('PuppetMixin',
668
700
  '__setupPuppetEvents() contact-enter-conversation event contact not found for id: %s',
669
701
  payload.contactId,
670
702
  )
@@ -681,7 +713,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
681
713
  this.emit('contact-lead-filled', contact, leads, date)
682
714
  contact.emit('lead-filled', leads, date)
683
715
  } else {
684
- log.verbose('PuppetMixin',
716
+ this.log.verbose('PuppetMixin',
685
717
  '__setupPuppetEvents() contact-lead-filled event contact not found for id: %s',
686
718
  payload.contactId,
687
719
  )
@@ -696,46 +728,26 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
696
728
  case 'dirty':
697
729
  /**
698
730
  * https://github.com/wechaty/wechaty-puppet-service/issues/43
699
- *
700
- * `dirty` semantics: the puppet-service told us the cached payload
701
- * for this id is stale. It is NOT a request to load the payload.
702
- *
703
- * The old handler used `this.Xxx.find({ id })` which, on pool miss,
704
- * constructs a fresh user-layer instance AND calls `.ready()` — a
705
- * puppet-side gRPC round-trip. For a `dirty` event about an id
706
- * that no business code has ever touched, this turned a passive
707
- * "invalidate if cached" signal into an active fetch, amplifying
708
- * dirty-event bursts (e.g. during message storms) into extra
709
- * puppet-service QPS.
710
- *
711
- * Fix: for pooled user-modules, look the instance up in the pool
712
- * directly and only call `.ready(true)` when it is already there.
713
- * The Call branch (below) already follows this shape via
714
- * `__callPool.get(...)`. Message has no pool, so its branch is a
715
- * no-op break (any caller wanting a Message must load it itself).
716
731
  */
717
732
  puppet.on('dirty', async ({ payloadType, payloadId }) => {
718
733
  try {
719
734
  switch (payloadType) {
720
735
  case PUPPET.types.Payload.Contact: {
721
- const cached = this.Contact.pool.get(payloadId)
722
- if (cached) await cached.ready(true)
736
+ const contact = await this.Contact.find({ id: payloadId }) as unknown as undefined | ContactImpl
737
+ await contact?.ready(true)
723
738
  break
724
739
  }
725
740
  case PUPPET.types.Payload.Room: {
726
- const cached = this.Room.pool.get(payloadId)
727
- if (cached) await cached.ready(true)
741
+ const room = await this.Room.find({ id: payloadId }) as unknown as undefined | RoomImpl
742
+ await room?.ready(true)
728
743
  break
729
744
  }
730
745
  case PUPPET.types.Payload.RoomMember: {
731
746
  if (payloadId.includes(PUPPET.STRING_SPLITTER)) {
732
747
  break
733
748
  }
734
- // A bare (non-composite) RoomMember dirty id addresses the
735
- // whole room, mirroring the Room branch — but never load
736
- // a new Room here.
737
- const cached = this.Room.pool.get(payloadId)
738
- if (cached) await cached.ready()
749
+ const room = await this.Room.find({ id: payloadId }) as unknown as undefined | RoomImpl
750
+ await room?.ready()
739
751
  break
740
752
  }
741
753
 
@@ -745,13 +757,12 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
745
757
  case PUPPET.types.Payload.Friendship:
746
758
  // Friendship has no payload
747
759
  break
748
- case PUPPET.types.Payload.Message:
749
- // Message has no user-layer pool (see message.ts: `load`
750
- // constructs a fresh instance every call). Dirty for a
751
- // Message id is therefore a no-op at this layer — the
752
- // cache-mixin listener still invalidates the puppet-side
753
- // payload cache alongside this handler.
760
+ case PUPPET.types.Payload.Message: {
761
+ // Message does not need to dirty (?)
762
+ const message = await this.Message.find({ id: payloadId }) as unknown as undefined | MessageImpl
763
+ await message?.ready(true)
754
764
  break
765
+ }
755
766
  case PUPPET.types.Payload.Tag:
756
767
  break
757
768
  case PUPPET.types.Payload.TagGroup:
@@ -759,13 +770,13 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
759
770
  case PUPPET.types.Payload.Post:
760
771
  break
761
772
  case PUPPET.types.Payload.WxxdProduct: {
762
- const cached = this.WxxdProduct.pool.get(payloadId)
763
- if (cached) await cached.ready(true)
773
+ const product = await this.WxxdProduct.find({ id: payloadId }) as unknown as undefined | WxxdProductImpl
774
+ await product?.ready(true)
764
775
  break
765
776
  }
766
777
  case PUPPET.types.Payload.WxxdOrder: {
767
- const cached = this.WxxdOrder.pool.get(payloadId)
768
- if (cached) await cached.ready(true)
778
+ const order = await this.WxxdOrder.find({ id: payloadId }) as unknown as undefined | WxxdOrderImpl
779
+ await order?.ready(true)
769
780
  break
770
781
  }
771
782
  case PUPPET.types.Payload.Call: {
@@ -790,7 +801,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
790
801
  try {
791
802
  await call.ready(true)
792
803
  } catch (e) {
793
- log.warn(
804
+ this.log.warn(
794
805
  'WechatyPuppetMixin',
795
806
  'dirty(Call) ready failed for callId=%s: %s',
796
807
  payloadId,
@@ -803,7 +814,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
803
814
 
804
815
  case PUPPET.types.Payload.Unspecified:
805
816
  default:
806
- log.warn('unknown payload type: ' + payloadType)
817
+ this.log.warn('unknown payload type: ' + payloadType)
807
818
  }
808
819
  this.emit('dirty', payloadId, payloadType)
809
820
  } catch (e) {
@@ -851,7 +862,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
851
862
  try {
852
863
  if (payload.signal === PUPPET.types.CallSignal.Invite) {
853
864
  if (this.__callPool.has(payload.callId)) {
854
- log.warn('WechatyPuppetMixin', '__setupPuppetEvents() duplicate Invite for callId=%s, ignoring', payload.callId)
865
+ this.log.warn('WechatyPuppetMixin', '__setupPuppetEvents() duplicate Invite for callId=%s, ignoring', payload.callId)
855
866
  return
856
867
  }
857
868
  const call = new (this.Call as any)({
@@ -870,13 +881,13 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
870
881
  // are expected within race windows (e.g. a Ringing ack arriving
871
882
  // before callInvite returns) or after the Call has been finalized
872
883
  // and removed from the pool. Drop silently — log.warn, not error.
873
- log.warn('WechatyPuppetMixin', '__setupPuppetEvents() call event for unknown callId=%s, dropping', payload.callId)
884
+ this.log.warn('WechatyPuppetMixin', '__setupPuppetEvents() call event for unknown callId=%s, dropping', payload.callId)
874
885
  return
875
886
  }
876
887
 
877
888
  const actor = await (this.Contact as typeof ContactImpl).find({ id: payload.contactId })
878
889
  if (!actor) {
879
- log.warn('WechatyPuppetMixin', '__setupPuppetEvents() actor contact not found for callId=%s contactId=%s, dropping', payload.callId, payload.contactId)
890
+ this.log.warn('WechatyPuppetMixin', '__setupPuppetEvents() actor contact not found for callId=%s contactId=%s, dropping', payload.callId, payload.contactId)
880
891
  return
881
892
  }
882
893
 
@@ -921,7 +932,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
921
932
  }
922
933
  }
923
934
 
924
- log.verbose('WechatyPuppetMixin', '__setupPuppetEvents() ... done')
935
+ this.log.verbose('WechatyPuppetMixin', '__setupPuppetEvents() ... done')
925
936
  }
926
937
 
927
938
  /**
@@ -959,7 +970,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
959
970
  await call.sync()
960
971
  ended = !!call.endTime()
961
972
  } catch (e) {
962
- log.warn(
973
+ this.log.warn(
963
974
  'WechatyPuppetMixin',
964
975
  '__finalizeIfEnded() sync attempt %d failed for callId=%s: %s',
965
976
  attempt + 1,
@@ -977,7 +988,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
977
988
  try {
978
989
  const participants = await call.participants()
979
990
  if (participants.length === 2) {
980
- log.warn(
991
+ this.log.warn(
981
992
  'WechatyPuppetMixin',
982
993
  '__finalizeIfEnded() 1v1 fallback after sync failure for callId=%s (rosterLength=%d)',
983
994
  call.id,
@@ -985,7 +996,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
985
996
  )
986
997
  ended = true
987
998
  } else {
988
- log.error(
999
+ this.log.error(
989
1000
  'WechatyPuppetMixin',
990
1001
  '__finalizeIfEnded() sync failed, leaving callId=%s in pool for next dirty signal (rosterLength=%d)',
991
1002
  call.id,
@@ -993,7 +1004,7 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
993
1004
  )
994
1005
  }
995
1006
  } catch (e) {
996
- log.error(
1007
+ this.log.error(
997
1008
  'WechatyPuppetMixin',
998
1009
  '__finalizeIfEnded() participants lookup failed for callId=%s: %s',
999
1010
  call.id,
@@ -134,18 +134,18 @@ const wechatifyUserModuleMixin = <MixinBase extends typeof WechatySkeleton> (mix
134
134
  get WxxdOrder () : WxxdOrderConstructor { return guardWechatify(this.__wechatifiedWxxdOrder) }
135
135
 
136
136
  override async init (): Promise<void> {
137
- log.verbose('WechatifyUserModuleMixin', 'init()')
137
+ this.log.verbose('WechatifyUserModuleMixin', 'init()')
138
138
  await super.init()
139
139
 
140
140
  /**
141
141
  * Skip if already wechatified
142
142
  */
143
143
  if (this.__wechatifiedMessage) {
144
- log.verbose('WechatifyUserModuleMixin', 'init() Wechaty User Module (WUM)s have already wechatified: skip')
144
+ this.log.verbose('WechatifyUserModuleMixin', 'init() Wechaty User Module (WUM)s have already wechatified: skip')
145
145
  return
146
146
  }
147
147
 
148
- log.verbose('WechatifyUserModuleMixin', 'init() initializing Wechaty User Module (WUM) ...')
148
+ this.log.verbose('WechatifyUserModuleMixin', 'init() initializing Wechaty User Module (WUM) ...')
149
149
 
150
150
  /**
151
151
  * Wechatify User Classes
@@ -182,7 +182,7 @@ const wechatifyUserModuleMixin = <MixinBase extends typeof WechatySkeleton> (mix
182
182
  this.__wechatifiedWxxdProduct = wechatifyUserModule(WxxdProductImpl)(this as any)
183
183
  this.__wechatifiedWxxdOrder = wechatifyUserModule(WxxdOrderImpl)(this as any)
184
184
 
185
- log.verbose('WechatifyUserModuleMixin', 'init() initializing Wechaty User Module (WUM) ... done')
185
+ this.log.verbose('WechatifyUserModuleMixin', 'init() initializing Wechaty User Module (WUM) ... done')
186
186
  }
187
187
 
188
188
  }
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
- export {};
3
- //# sourceMappingURL=puppet-mixin-dirty-pool.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"puppet-mixin-dirty-pool.spec.d.ts","sourceRoot":"","sources":["../../../../src/wechaty-mixins/puppet-mixin-dirty-pool.spec.ts"],"names":[],"mappings":""}
@@ -1,121 +0,0 @@
1
- #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
- "use strict";
3
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
- if (k2 === undefined) k2 = k;
5
- var desc = Object.getOwnPropertyDescriptor(m, k);
6
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
- desc = { enumerable: true, get: function() { return m[k]; } };
8
- }
9
- Object.defineProperty(o, k2, desc);
10
- }) : (function(o, m, k, k2) {
11
- if (k2 === undefined) k2 = k;
12
- o[k2] = m[k];
13
- }));
14
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
- Object.defineProperty(o, "default", { enumerable: true, value: v });
16
- }) : function(o, v) {
17
- o["default"] = v;
18
- });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
26
- Object.defineProperty(exports, "__esModule", { value: true });
27
- const tstest_1 = require("tstest");
28
- const PUPPET = __importStar(require("@juzi/wechaty-puppet"));
29
- const wechaty_puppet_mock_1 = require("@juzi/wechaty-puppet-mock");
30
- const wechaty_builder_js_1 = require("../wechaty-builder.js");
31
- /**
32
- * Regression: the `dirty` event handler for pooled user-modules
33
- * (Contact / Room / WxxdProduct / WxxdOrder) used to call
34
- * `this.Xxx.find({ id }).ready(true)`. `find({ id })` on a pool miss
35
- * constructs a fresh instance and calls `ready()` — a puppet-side gRPC
36
- * round-trip — turning a passive "invalidate if cached" signal into an
37
- * active fetch for ids no business code has touched.
38
- *
39
- * The fix looks the id up in the pool directly and only calls
40
- * `.ready(true)` when the instance is already pooled.
41
- */
42
- async function delay(ms) {
43
- await new Promise(resolve => setTimeout(resolve, ms));
44
- }
45
- (0, tstest_1.test)('dirty handler does not fetch payload for un-pooled ids, but still refreshes pooled ones', async (t) => {
46
- const puppet = new wechaty_puppet_mock_1.PuppetMock();
47
- const wechaty = wechaty_builder_js_1.WechatyBuilder.build({ puppet });
48
- const botContact = puppet.mocker.createContact({ name: 'test-bot' });
49
- await wechaty.start();
50
- await puppet.mocker.login(botContact);
51
- // --- Case 1: un-pooled Contact id must not trigger contactRawPayload ---
52
- let contactRawPayloadCalls = 0;
53
- const originalContactRawPayload = puppet.contactRawPayload.bind(puppet);
54
- puppet.contactRawPayload = async (id) => {
55
- contactRawPayloadCalls++;
56
- return originalContactRawPayload(id);
57
- };
58
- puppet.emit('dirty', {
59
- payloadType: PUPPET.types.Payload.Contact,
60
- payloadId: 'never-loaded-contact-id',
61
- });
62
- await delay(50);
63
- t.equal(contactRawPayloadCalls, 0, `dirty(Contact) for un-pooled id must not trigger contactRawPayload; got ${contactRawPayloadCalls} call(s)`);
64
- // --- Case 2: un-pooled Room id must not trigger roomRawPayload ---
65
- let roomRawPayloadCalls = 0;
66
- const originalRoomRawPayload = puppet.roomRawPayload.bind(puppet);
67
- puppet.roomRawPayload = async (id) => {
68
- roomRawPayloadCalls++;
69
- return originalRoomRawPayload(id);
70
- };
71
- puppet.emit('dirty', {
72
- payloadType: PUPPET.types.Payload.Room,
73
- payloadId: 'never-loaded-room-id',
74
- });
75
- await delay(50);
76
- t.equal(roomRawPayloadCalls, 0, `dirty(Room) for un-pooled id must not trigger roomRawPayload; got ${roomRawPayloadCalls} call(s)`);
77
- // --- Case 3: Message dirty must not trigger messageRawPayload (Message has no user-layer pool) ---
78
- let messageRawPayloadCalls = 0;
79
- const originalMessageRawPayload = puppet.messageRawPayload.bind(puppet);
80
- puppet.messageRawPayload = async (id) => {
81
- messageRawPayloadCalls++;
82
- return originalMessageRawPayload(id);
83
- };
84
- puppet.emit('dirty', {
85
- payloadType: PUPPET.types.Payload.Message,
86
- payloadId: 'some-message-id',
87
- });
88
- await delay(50);
89
- t.equal(messageRawPayloadCalls, 0, `dirty(Message) must not trigger messageRawPayload at the user layer; got ${messageRawPayloadCalls} call(s)`);
90
- // --- Case 4: un-pooled Contact still emits the user-facing dirty event ---
91
- let wechatyDirtyEmits = 0;
92
- wechaty.on('dirty', () => {
93
- wechatyDirtyEmits++;
94
- });
95
- puppet.emit('dirty', {
96
- payloadType: PUPPET.types.Payload.Contact,
97
- payloadId: 'yet-another-un-pooled-id',
98
- });
99
- await delay(50);
100
- t.equal(wechatyDirtyEmits, 1, `wechaty.emit('dirty', ...) must fire once even when the id is not pooled; got ${wechatyDirtyEmits}`);
101
- // --- Case 5: pooled Contact MUST re-fetch on dirty ---
102
- const pooledContact = puppet.mocker.createContact({ name: 'pooled-contact' });
103
- // Force the contact into the wechatified pool via find(). Payload gets
104
- // loaded once as part of find()'s ready() call — subsequent counts we
105
- // measure from AFTER this seed.
106
- await wechaty.Contact.find({ id: pooledContact.id });
107
- let contactPayloadCalls = 0;
108
- const originalContactPayload = puppet.contactPayload.bind(puppet);
109
- puppet.contactPayload = async (id) => {
110
- contactPayloadCalls++;
111
- return originalContactPayload(id);
112
- };
113
- puppet.emit('dirty', {
114
- payloadType: PUPPET.types.Payload.Contact,
115
- payloadId: pooledContact.id,
116
- });
117
- await delay(50);
118
- t.ok(contactPayloadCalls >= 1, `dirty(Contact) for pooled id must trigger contactPayload via ready(true); got ${contactPayloadCalls} call(s)`);
119
- await wechaty.stop();
120
- });
121
- //# sourceMappingURL=puppet-mixin-dirty-pool.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"puppet-mixin-dirty-pool.spec.js","sourceRoot":"","sources":["../../../../src/wechaty-mixins/puppet-mixin-dirty-pool.spec.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
- export {};
3
- //# sourceMappingURL=puppet-mixin-dirty-pool.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"puppet-mixin-dirty-pool.spec.d.ts","sourceRoot":"","sources":["../../../../src/wechaty-mixins/puppet-mixin-dirty-pool.spec.ts"],"names":[],"mappings":""}