@juzi/wechaty-puppet-service 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 (602) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +166 -0
  3. package/dist/cjs/examples/ding-dong-bot.d.ts +2 -0
  4. package/dist/cjs/examples/ding-dong-bot.d.ts.map +1 -0
  5. package/dist/cjs/examples/ding-dong-bot.js +156 -0
  6. package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
  7. package/dist/cjs/package.json +3 -0
  8. package/dist/cjs/src/auth/auth-impl-token.d.ts +4 -0
  9. package/dist/cjs/src/auth/auth-impl-token.d.ts.map +1 -0
  10. package/dist/cjs/src/auth/auth-impl-token.js +81 -0
  11. package/dist/cjs/src/auth/auth-impl-token.js.map +1 -0
  12. package/dist/cjs/src/auth/auth-impl-token.spec.d.ts +3 -0
  13. package/dist/cjs/src/auth/auth-impl-token.spec.d.ts.map +1 -0
  14. package/dist/cjs/src/auth/auth-impl-token.spec.js +65 -0
  15. package/dist/cjs/src/auth/auth-impl-token.spec.js.map +1 -0
  16. package/dist/cjs/src/auth/ca.d.ts +46 -0
  17. package/dist/cjs/src/auth/ca.d.ts.map +1 -0
  18. package/dist/cjs/src/auth/ca.js +135 -0
  19. package/dist/cjs/src/auth/ca.js.map +1 -0
  20. package/dist/cjs/src/auth/ca.spec.d.ts +3 -0
  21. package/dist/cjs/src/auth/ca.spec.d.ts.map +1 -0
  22. package/dist/cjs/src/auth/ca.spec.js +115 -0
  23. package/dist/cjs/src/auth/ca.spec.js.map +1 -0
  24. package/dist/cjs/src/auth/call-cred.d.ts +9 -0
  25. package/dist/cjs/src/auth/call-cred.d.ts.map +1 -0
  26. package/dist/cjs/src/auth/call-cred.js +17 -0
  27. package/dist/cjs/src/auth/call-cred.js.map +1 -0
  28. package/dist/cjs/src/auth/call-cred.spec.d.ts +3 -0
  29. package/dist/cjs/src/auth/call-cred.spec.d.ts.map +1 -0
  30. package/dist/cjs/src/auth/call-cred.spec.js +18 -0
  31. package/dist/cjs/src/auth/call-cred.spec.js.map +1 -0
  32. package/dist/cjs/src/auth/env-vars.d.ts +13 -0
  33. package/dist/cjs/src/auth/env-vars.d.ts.map +1 -0
  34. package/dist/cjs/src/auth/env-vars.js +29 -0
  35. package/dist/cjs/src/auth/env-vars.js.map +1 -0
  36. package/dist/cjs/src/auth/grpc-js.d.ts +7 -0
  37. package/dist/cjs/src/auth/grpc-js.d.ts.map +1 -0
  38. package/dist/cjs/src/auth/grpc-js.js +10 -0
  39. package/dist/cjs/src/auth/grpc-js.js.map +1 -0
  40. package/dist/cjs/src/auth/mod.d.ts +5 -0
  41. package/dist/cjs/src/auth/mod.d.ts.map +1 -0
  42. package/dist/cjs/src/auth/mod.js +10 -0
  43. package/dist/cjs/src/auth/mod.js.map +1 -0
  44. package/dist/cjs/src/auth/mokey-patch-header-authorization.d.ts +11 -0
  45. package/dist/cjs/src/auth/mokey-patch-header-authorization.d.ts.map +1 -0
  46. package/dist/cjs/src/auth/mokey-patch-header-authorization.js +32 -0
  47. package/dist/cjs/src/auth/mokey-patch-header-authorization.js.map +1 -0
  48. package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.d.ts +3 -0
  49. package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.d.ts.map +1 -0
  50. package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.js +19 -0
  51. package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.js.map +1 -0
  52. package/dist/cjs/src/client/duck/actions.d.ts +6 -0
  53. package/dist/cjs/src/client/duck/actions.d.ts.map +1 -0
  54. package/dist/cjs/src/client/duck/actions.js +54 -0
  55. package/dist/cjs/src/client/duck/actions.js.map +1 -0
  56. package/dist/cjs/src/client/duck/epic-recover.d.ts +36 -0
  57. package/dist/cjs/src/client/duck/epic-recover.d.ts.map +1 -0
  58. package/dist/cjs/src/client/duck/epic-recover.js +41 -0
  59. package/dist/cjs/src/client/duck/epic-recover.js.map +1 -0
  60. package/dist/cjs/src/client/duck/epic-recover.spec.d.ts +3 -0
  61. package/dist/cjs/src/client/duck/epic-recover.spec.d.ts.map +1 -0
  62. package/dist/cjs/src/client/duck/epic-recover.spec.js +131 -0
  63. package/dist/cjs/src/client/duck/epic-recover.spec.js.map +1 -0
  64. package/dist/cjs/src/client/duck/epics.d.ts +4 -0
  65. package/dist/cjs/src/client/duck/epics.d.ts.map +1 -0
  66. package/dist/cjs/src/client/duck/epics.js +36 -0
  67. package/dist/cjs/src/client/duck/epics.js.map +1 -0
  68. package/dist/cjs/src/client/duck/mod.d.ts +29 -0
  69. package/dist/cjs/src/client/duck/mod.d.ts.map +1 -0
  70. package/dist/cjs/src/client/duck/mod.js +63 -0
  71. package/dist/cjs/src/client/duck/mod.js.map +1 -0
  72. package/dist/cjs/src/client/duck/operations.d.ts +23 -0
  73. package/dist/cjs/src/client/duck/operations.d.ts.map +1 -0
  74. package/dist/cjs/src/client/duck/operations.js +30 -0
  75. package/dist/cjs/src/client/duck/operations.js.map +1 -0
  76. package/dist/cjs/src/client/duck/reducers.d.ts +59 -0
  77. package/dist/cjs/src/client/duck/reducers.d.ts.map +1 -0
  78. package/dist/cjs/src/client/duck/reducers.js +51 -0
  79. package/dist/cjs/src/client/duck/reducers.js.map +1 -0
  80. package/dist/cjs/src/client/duck/selectors.d.ts +21 -0
  81. package/dist/cjs/src/client/duck/selectors.d.ts.map +1 -0
  82. package/dist/cjs/src/client/duck/selectors.js +23 -0
  83. package/dist/cjs/src/client/duck/selectors.js.map +1 -0
  84. package/dist/cjs/src/client/duck/tests.spec.d.ts +3 -0
  85. package/dist/cjs/src/client/duck/tests.spec.d.ts.map +1 -0
  86. package/dist/cjs/src/client/duck/tests.spec.js +49 -0
  87. package/dist/cjs/src/client/duck/tests.spec.js.map +1 -0
  88. package/dist/cjs/src/client/duck/types.d.ts +21 -0
  89. package/dist/cjs/src/client/duck/types.d.ts.map +1 -0
  90. package/dist/cjs/src/client/duck/types.js +24 -0
  91. package/dist/cjs/src/client/duck/types.js.map +1 -0
  92. package/dist/cjs/src/client/duck/utils.d.ts +21 -0
  93. package/dist/cjs/src/client/duck/utils.d.ts.map +1 -0
  94. package/dist/cjs/src/client/duck/utils.js +3 -0
  95. package/dist/cjs/src/client/duck/utils.js.map +1 -0
  96. package/dist/cjs/src/client/grpc-manager.d.ts +29 -0
  97. package/dist/cjs/src/client/grpc-manager.d.ts.map +1 -0
  98. package/dist/cjs/src/client/grpc-manager.js +359 -0
  99. package/dist/cjs/src/client/grpc-manager.js.map +1 -0
  100. package/dist/cjs/src/client/grpc-manager.spec.d.ts +3 -0
  101. package/dist/cjs/src/client/grpc-manager.spec.d.ts.map +1 -0
  102. package/dist/cjs/src/client/grpc-manager.spec.js +19 -0
  103. package/dist/cjs/src/client/grpc-manager.spec.js.map +1 -0
  104. package/dist/cjs/src/client/payload-store.d.ts +26 -0
  105. package/dist/cjs/src/client/payload-store.d.ts.map +1 -0
  106. package/dist/cjs/src/client/payload-store.js +118 -0
  107. package/dist/cjs/src/client/payload-store.js.map +1 -0
  108. package/dist/cjs/src/client/payload-store.spec.d.ts +3 -0
  109. package/dist/cjs/src/client/payload-store.spec.d.ts.map +1 -0
  110. package/dist/cjs/src/client/payload-store.spec.js +17 -0
  111. package/dist/cjs/src/client/payload-store.spec.js.map +1 -0
  112. package/dist/cjs/src/client/puppet-service.d.ts +161 -0
  113. package/dist/cjs/src/client/puppet-service.d.ts.map +1 -0
  114. package/dist/cjs/src/client/puppet-service.js +1384 -0
  115. package/dist/cjs/src/client/puppet-service.js.map +1 -0
  116. package/dist/cjs/src/client/puppet-service.spec.d.ts +3 -0
  117. package/dist/cjs/src/client/puppet-service.spec.d.ts.map +1 -0
  118. package/dist/cjs/src/client/puppet-service.spec.js +55 -0
  119. package/dist/cjs/src/client/puppet-service.spec.js.map +1 -0
  120. package/dist/cjs/src/config.d.ts +20 -0
  121. package/dist/cjs/src/config.d.ts.map +1 -0
  122. package/dist/cjs/src/config.js +49 -0
  123. package/dist/cjs/src/config.js.map +1 -0
  124. package/dist/cjs/src/deprecated/chunk-pb.d.ts +15 -0
  125. package/dist/cjs/src/deprecated/chunk-pb.d.ts.map +1 -0
  126. package/dist/cjs/src/deprecated/chunk-pb.js +60 -0
  127. package/dist/cjs/src/deprecated/chunk-pb.js.map +1 -0
  128. package/dist/cjs/src/deprecated/chunk-pb.spec.d.ts +3 -0
  129. package/dist/cjs/src/deprecated/chunk-pb.spec.d.ts.map +1 -0
  130. package/dist/cjs/src/deprecated/chunk-pb.spec.js +144 -0
  131. package/dist/cjs/src/deprecated/chunk-pb.spec.js.map +1 -0
  132. package/dist/cjs/src/deprecated/conversation-id-file-box.d.ts +21 -0
  133. package/dist/cjs/src/deprecated/conversation-id-file-box.d.ts.map +1 -0
  134. package/dist/cjs/src/deprecated/conversation-id-file-box.js +43 -0
  135. package/dist/cjs/src/deprecated/conversation-id-file-box.js.map +1 -0
  136. package/dist/cjs/src/deprecated/conversation-id-file-box.spec.d.ts +3 -0
  137. package/dist/cjs/src/deprecated/conversation-id-file-box.spec.d.ts.map +1 -0
  138. package/dist/cjs/src/deprecated/conversation-id-file-box.spec.js +94 -0
  139. package/dist/cjs/src/deprecated/conversation-id-file-box.spec.js.map +1 -0
  140. package/dist/cjs/src/deprecated/file-box-chunk.d.ts +14 -0
  141. package/dist/cjs/src/deprecated/file-box-chunk.d.ts.map +1 -0
  142. package/dist/cjs/src/deprecated/file-box-chunk.js +67 -0
  143. package/dist/cjs/src/deprecated/file-box-chunk.js.map +1 -0
  144. package/dist/cjs/src/deprecated/file-box-chunk.spec.d.ts +3 -0
  145. package/dist/cjs/src/deprecated/file-box-chunk.spec.d.ts.map +1 -0
  146. package/dist/cjs/src/deprecated/file-box-chunk.spec.js +134 -0
  147. package/dist/cjs/src/deprecated/file-box-chunk.spec.js.map +1 -0
  148. package/dist/cjs/src/deprecated/file-box-pb.d.ts +15 -0
  149. package/dist/cjs/src/deprecated/file-box-pb.d.ts.map +1 -0
  150. package/dist/cjs/src/deprecated/file-box-pb.js +26 -0
  151. package/dist/cjs/src/deprecated/file-box-pb.js.map +1 -0
  152. package/dist/cjs/src/deprecated/file-box-pb.spec.d.ts +3 -0
  153. package/dist/cjs/src/deprecated/file-box-pb.spec.d.ts.map +1 -0
  154. package/dist/cjs/src/deprecated/file-box-pb.spec.js +18 -0
  155. package/dist/cjs/src/deprecated/file-box-pb.spec.js.map +1 -0
  156. package/dist/cjs/src/deprecated/file-box-pb.type.d.ts +15 -0
  157. package/dist/cjs/src/deprecated/file-box-pb.type.d.ts.map +1 -0
  158. package/dist/cjs/src/deprecated/file-box-pb.type.js +3 -0
  159. package/dist/cjs/src/deprecated/file-box-pb.type.js.map +1 -0
  160. package/dist/cjs/src/deprecated/mod.d.ts +3 -0
  161. package/dist/cjs/src/deprecated/mod.d.ts.map +1 -0
  162. package/dist/cjs/src/deprecated/mod.js +10 -0
  163. package/dist/cjs/src/deprecated/mod.js.map +1 -0
  164. package/dist/cjs/src/deprecated/next-data.d.ts +7 -0
  165. package/dist/cjs/src/deprecated/next-data.d.ts.map +1 -0
  166. package/dist/cjs/src/deprecated/next-data.js +26 -0
  167. package/dist/cjs/src/deprecated/next-data.js.map +1 -0
  168. package/dist/cjs/src/deprecated/serialize-file-box.d.ts +6 -0
  169. package/dist/cjs/src/deprecated/serialize-file-box.d.ts.map +1 -0
  170. package/dist/cjs/src/deprecated/serialize-file-box.js +22 -0
  171. package/dist/cjs/src/deprecated/serialize-file-box.js.map +1 -0
  172. package/dist/cjs/src/env-vars.d.ts +5 -0
  173. package/dist/cjs/src/env-vars.d.ts.map +1 -0
  174. package/dist/cjs/src/env-vars.js +88 -0
  175. package/dist/cjs/src/env-vars.js.map +1 -0
  176. package/dist/cjs/src/env-vars.spec.d.ts +3 -0
  177. package/dist/cjs/src/env-vars.spec.d.ts.map +1 -0
  178. package/dist/cjs/src/env-vars.spec.js +21 -0
  179. package/dist/cjs/src/env-vars.spec.js.map +1 -0
  180. package/dist/cjs/src/event-type-rev.d.ts +11 -0
  181. package/dist/cjs/src/event-type-rev.d.ts.map +1 -0
  182. package/dist/cjs/src/event-type-rev.js +17 -0
  183. package/dist/cjs/src/event-type-rev.js.map +1 -0
  184. package/dist/cjs/src/file-box-helper/mod.d.ts +4 -0
  185. package/dist/cjs/src/file-box-helper/mod.d.ts.map +1 -0
  186. package/dist/cjs/src/file-box-helper/mod.js +8 -0
  187. package/dist/cjs/src/file-box-helper/mod.js.map +1 -0
  188. package/dist/cjs/src/file-box-helper/normalize-filebox.d.ts +6 -0
  189. package/dist/cjs/src/file-box-helper/normalize-filebox.d.ts.map +1 -0
  190. package/dist/cjs/src/file-box-helper/normalize-filebox.js +76 -0
  191. package/dist/cjs/src/file-box-helper/normalize-filebox.js.map +1 -0
  192. package/dist/cjs/src/file-box-helper/normalize-filebox.spec.d.ts +3 -0
  193. package/dist/cjs/src/file-box-helper/normalize-filebox.spec.d.ts.map +1 -0
  194. package/dist/cjs/src/file-box-helper/normalize-filebox.spec.js +35 -0
  195. package/dist/cjs/src/file-box-helper/normalize-filebox.spec.js.map +1 -0
  196. package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.d.ts +6 -0
  197. package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.d.ts.map +1 -0
  198. package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.js +45 -0
  199. package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.js.map +1 -0
  200. package/dist/cjs/src/file-box-helper/uuidify-file-box-local.d.ts +5 -0
  201. package/dist/cjs/src/file-box-helper/uuidify-file-box-local.d.ts.map +1 -0
  202. package/dist/cjs/src/file-box-helper/uuidify-file-box-local.js +19 -0
  203. package/dist/cjs/src/file-box-helper/uuidify-file-box-local.js.map +1 -0
  204. package/dist/cjs/src/mod.d.ts +8 -0
  205. package/dist/cjs/src/mod.d.ts.map +1 -0
  206. package/dist/cjs/src/mod.js +13 -0
  207. package/dist/cjs/src/mod.js.map +1 -0
  208. package/dist/cjs/src/mod.spec.d.ts +3 -0
  209. package/dist/cjs/src/mod.spec.d.ts.map +1 -0
  210. package/dist/cjs/src/mod.spec.js +32 -0
  211. package/dist/cjs/src/mod.spec.js.map +1 -0
  212. package/dist/cjs/src/package-json.d.ts +6 -0
  213. package/dist/cjs/src/package-json.d.ts.map +1 -0
  214. package/dist/cjs/src/package-json.js +101 -0
  215. package/dist/cjs/src/package-json.js.map +1 -0
  216. package/dist/cjs/src/package-json.spec.d.ts +3 -0
  217. package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
  218. package/dist/cjs/src/package-json.spec.js +10 -0
  219. package/dist/cjs/src/package-json.spec.js.map +1 -0
  220. package/dist/cjs/src/pure-functions/timestamp.d.ts +8 -0
  221. package/dist/cjs/src/pure-functions/timestamp.d.ts.map +1 -0
  222. package/dist/cjs/src/pure-functions/timestamp.js +23 -0
  223. package/dist/cjs/src/pure-functions/timestamp.js.map +1 -0
  224. package/dist/cjs/src/server/event-stream-manager.d.ts +40 -0
  225. package/dist/cjs/src/server/event-stream-manager.d.ts.map +1 -0
  226. package/dist/cjs/src/server/event-stream-manager.js +344 -0
  227. package/dist/cjs/src/server/event-stream-manager.js.map +1 -0
  228. package/dist/cjs/src/server/grpc-error.d.ts +5 -0
  229. package/dist/cjs/src/server/grpc-error.d.ts.map +1 -0
  230. package/dist/cjs/src/server/grpc-error.js +12 -0
  231. package/dist/cjs/src/server/grpc-error.js.map +1 -0
  232. package/dist/cjs/src/server/health-implementation.d.ts +5 -0
  233. package/dist/cjs/src/server/health-implementation.d.ts.map +1 -0
  234. package/dist/cjs/src/server/health-implementation.js +55 -0
  235. package/dist/cjs/src/server/health-implementation.js.map +1 -0
  236. package/dist/cjs/src/server/puppet-implementation.d.ts +6 -0
  237. package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -0
  238. package/dist/cjs/src/server/puppet-implementation.js +1226 -0
  239. package/dist/cjs/src/server/puppet-implementation.js.map +1 -0
  240. package/dist/cjs/src/server/puppet-server.d.ts +23 -0
  241. package/dist/cjs/src/server/puppet-server.d.ts.map +1 -0
  242. package/dist/cjs/src/server/puppet-server.js +159 -0
  243. package/dist/cjs/src/server/puppet-server.js.map +1 -0
  244. package/dist/cjs/src/server/puppet-server.spec.d.ts +3 -0
  245. package/dist/cjs/src/server/puppet-server.spec.d.ts.map +1 -0
  246. package/dist/cjs/src/server/puppet-server.spec.js +15 -0
  247. package/dist/cjs/src/server/puppet-server.spec.js.map +1 -0
  248. package/dist/cjs/tests/grpc-client.spec.d.ts +3 -0
  249. package/dist/cjs/tests/grpc-client.spec.d.ts.map +1 -0
  250. package/dist/cjs/tests/grpc-client.spec.js +137 -0
  251. package/dist/cjs/tests/grpc-client.spec.js.map +1 -0
  252. package/dist/cjs/tests/grpc-stream.spec.d.ts +15 -0
  253. package/dist/cjs/tests/grpc-stream.spec.d.ts.map +1 -0
  254. package/dist/cjs/tests/grpc-stream.spec.js +67 -0
  255. package/dist/cjs/tests/grpc-stream.spec.js.map +1 -0
  256. package/dist/cjs/tests/integration.spec.d.ts +3 -0
  257. package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
  258. package/dist/cjs/tests/integration.spec.js +70 -0
  259. package/dist/cjs/tests/integration.spec.js.map +1 -0
  260. package/dist/cjs/tests/performance.spec.d.ts +14 -0
  261. package/dist/cjs/tests/performance.spec.d.ts.map +1 -0
  262. package/dist/cjs/tests/performance.spec.js +129 -0
  263. package/dist/cjs/tests/performance.spec.js.map +1 -0
  264. package/dist/cjs/tests/ready-event.spec.d.ts +3 -0
  265. package/dist/cjs/tests/ready-event.spec.d.ts.map +1 -0
  266. package/dist/cjs/tests/ready-event.spec.js +80 -0
  267. package/dist/cjs/tests/ready-event.spec.js.map +1 -0
  268. package/dist/cjs/tests/uuid-file-box.spec.d.ts +3 -0
  269. package/dist/cjs/tests/uuid-file-box.spec.d.ts.map +1 -0
  270. package/dist/cjs/tests/uuid-file-box.spec.js +77 -0
  271. package/dist/cjs/tests/uuid-file-box.spec.js.map +1 -0
  272. package/dist/esm/examples/ding-dong-bot.d.ts +2 -0
  273. package/dist/esm/examples/ding-dong-bot.d.ts.map +1 -0
  274. package/dist/esm/examples/ding-dong-bot.js +131 -0
  275. package/dist/esm/examples/ding-dong-bot.js.map +1 -0
  276. package/dist/esm/src/auth/auth-impl-token.d.ts +4 -0
  277. package/dist/esm/src/auth/auth-impl-token.d.ts.map +1 -0
  278. package/dist/esm/src/auth/auth-impl-token.js +78 -0
  279. package/dist/esm/src/auth/auth-impl-token.js.map +1 -0
  280. package/dist/esm/src/auth/auth-impl-token.spec.d.ts +3 -0
  281. package/dist/esm/src/auth/auth-impl-token.spec.d.ts.map +1 -0
  282. package/dist/esm/src/auth/auth-impl-token.spec.js +63 -0
  283. package/dist/esm/src/auth/auth-impl-token.spec.js.map +1 -0
  284. package/dist/esm/src/auth/ca.d.ts +46 -0
  285. package/dist/esm/src/auth/ca.d.ts.map +1 -0
  286. package/dist/esm/src/auth/ca.js +129 -0
  287. package/dist/esm/src/auth/ca.js.map +1 -0
  288. package/dist/esm/src/auth/ca.spec.d.ts +3 -0
  289. package/dist/esm/src/auth/ca.spec.d.ts.map +1 -0
  290. package/dist/esm/src/auth/ca.spec.js +87 -0
  291. package/dist/esm/src/auth/ca.spec.js.map +1 -0
  292. package/dist/esm/src/auth/call-cred.d.ts +9 -0
  293. package/dist/esm/src/auth/call-cred.d.ts.map +1 -0
  294. package/dist/esm/src/auth/call-cred.js +13 -0
  295. package/dist/esm/src/auth/call-cred.js.map +1 -0
  296. package/dist/esm/src/auth/call-cred.spec.d.ts +3 -0
  297. package/dist/esm/src/auth/call-cred.spec.d.ts.map +1 -0
  298. package/dist/esm/src/auth/call-cred.spec.js +16 -0
  299. package/dist/esm/src/auth/call-cred.spec.js.map +1 -0
  300. package/dist/esm/src/auth/env-vars.d.ts +13 -0
  301. package/dist/esm/src/auth/env-vars.d.ts.map +1 -0
  302. package/dist/esm/src/auth/env-vars.js +21 -0
  303. package/dist/esm/src/auth/env-vars.js.map +1 -0
  304. package/dist/esm/src/auth/grpc-js.d.ts +7 -0
  305. package/dist/esm/src/auth/grpc-js.d.ts.map +1 -0
  306. package/dist/esm/src/auth/grpc-js.js +4 -0
  307. package/dist/esm/src/auth/grpc-js.js.map +1 -0
  308. package/dist/esm/src/auth/mod.d.ts +5 -0
  309. package/dist/esm/src/auth/mod.d.ts.map +1 -0
  310. package/dist/esm/src/auth/mod.js +5 -0
  311. package/dist/esm/src/auth/mod.js.map +1 -0
  312. package/dist/esm/src/auth/mokey-patch-header-authorization.d.ts +11 -0
  313. package/dist/esm/src/auth/mokey-patch-header-authorization.d.ts.map +1 -0
  314. package/dist/esm/src/auth/mokey-patch-header-authorization.js +29 -0
  315. package/dist/esm/src/auth/mokey-patch-header-authorization.js.map +1 -0
  316. package/dist/esm/src/auth/monkey-patch-header-authorization.spec.d.ts +3 -0
  317. package/dist/esm/src/auth/monkey-patch-header-authorization.spec.d.ts.map +1 -0
  318. package/dist/esm/src/auth/monkey-patch-header-authorization.spec.js +17 -0
  319. package/dist/esm/src/auth/monkey-patch-header-authorization.spec.js.map +1 -0
  320. package/dist/esm/src/client/duck/actions.d.ts +6 -0
  321. package/dist/esm/src/client/duck/actions.d.ts.map +1 -0
  322. package/dist/esm/src/client/duck/actions.js +28 -0
  323. package/dist/esm/src/client/duck/actions.js.map +1 -0
  324. package/dist/esm/src/client/duck/epic-recover.d.ts +36 -0
  325. package/dist/esm/src/client/duck/epic-recover.d.ts.map +1 -0
  326. package/dist/esm/src/client/duck/epic-recover.js +36 -0
  327. package/dist/esm/src/client/duck/epic-recover.js.map +1 -0
  328. package/dist/esm/src/client/duck/epic-recover.spec.d.ts +3 -0
  329. package/dist/esm/src/client/duck/epic-recover.spec.d.ts.map +1 -0
  330. package/dist/esm/src/client/duck/epic-recover.spec.js +126 -0
  331. package/dist/esm/src/client/duck/epic-recover.spec.js.map +1 -0
  332. package/dist/esm/src/client/duck/epics.d.ts +4 -0
  333. package/dist/esm/src/client/duck/epics.d.ts.map +1 -0
  334. package/dist/esm/src/client/duck/epics.js +33 -0
  335. package/dist/esm/src/client/duck/epics.js.map +1 -0
  336. package/dist/esm/src/client/duck/mod.d.ts +29 -0
  337. package/dist/esm/src/client/duck/mod.d.ts.map +1 -0
  338. package/dist/esm/src/client/duck/mod.js +29 -0
  339. package/dist/esm/src/client/duck/mod.js.map +1 -0
  340. package/dist/esm/src/client/duck/operations.d.ts +23 -0
  341. package/dist/esm/src/client/duck/operations.d.ts.map +1 -0
  342. package/dist/esm/src/client/duck/operations.js +4 -0
  343. package/dist/esm/src/client/duck/operations.js.map +1 -0
  344. package/dist/esm/src/client/duck/reducers.d.ts +59 -0
  345. package/dist/esm/src/client/duck/reducers.d.ts.map +1 -0
  346. package/dist/esm/src/client/duck/reducers.js +26 -0
  347. package/dist/esm/src/client/duck/reducers.js.map +1 -0
  348. package/dist/esm/src/client/duck/selectors.d.ts +21 -0
  349. package/dist/esm/src/client/duck/selectors.d.ts.map +1 -0
  350. package/dist/esm/src/client/duck/selectors.js +22 -0
  351. package/dist/esm/src/client/duck/selectors.js.map +1 -0
  352. package/dist/esm/src/client/duck/tests.spec.d.ts +3 -0
  353. package/dist/esm/src/client/duck/tests.spec.d.ts.map +1 -0
  354. package/dist/esm/src/client/duck/tests.spec.js +24 -0
  355. package/dist/esm/src/client/duck/tests.spec.js.map +1 -0
  356. package/dist/esm/src/client/duck/types.d.ts +21 -0
  357. package/dist/esm/src/client/duck/types.d.ts.map +1 -0
  358. package/dist/esm/src/client/duck/types.js +21 -0
  359. package/dist/esm/src/client/duck/types.js.map +1 -0
  360. package/dist/esm/src/client/duck/utils.d.ts +21 -0
  361. package/dist/esm/src/client/duck/utils.d.ts.map +1 -0
  362. package/dist/esm/src/client/duck/utils.js +2 -0
  363. package/dist/esm/src/client/duck/utils.js.map +1 -0
  364. package/dist/esm/src/client/grpc-manager.d.ts +29 -0
  365. package/dist/esm/src/client/grpc-manager.d.ts.map +1 -0
  366. package/dist/esm/src/client/grpc-manager.js +353 -0
  367. package/dist/esm/src/client/grpc-manager.js.map +1 -0
  368. package/dist/esm/src/client/grpc-manager.spec.d.ts +3 -0
  369. package/dist/esm/src/client/grpc-manager.spec.d.ts.map +1 -0
  370. package/dist/esm/src/client/grpc-manager.spec.js +17 -0
  371. package/dist/esm/src/client/grpc-manager.spec.js.map +1 -0
  372. package/dist/esm/src/client/payload-store.d.ts +26 -0
  373. package/dist/esm/src/client/payload-store.d.ts.map +1 -0
  374. package/dist/esm/src/client/payload-store.js +112 -0
  375. package/dist/esm/src/client/payload-store.js.map +1 -0
  376. package/dist/esm/src/client/payload-store.spec.d.ts +3 -0
  377. package/dist/esm/src/client/payload-store.spec.d.ts.map +1 -0
  378. package/dist/esm/src/client/payload-store.spec.js +15 -0
  379. package/dist/esm/src/client/payload-store.spec.js.map +1 -0
  380. package/dist/esm/src/client/puppet-service.d.ts +161 -0
  381. package/dist/esm/src/client/puppet-service.d.ts.map +1 -0
  382. package/dist/esm/src/client/puppet-service.js +1357 -0
  383. package/dist/esm/src/client/puppet-service.js.map +1 -0
  384. package/dist/esm/src/client/puppet-service.spec.d.ts +3 -0
  385. package/dist/esm/src/client/puppet-service.spec.d.ts.map +1 -0
  386. package/dist/esm/src/client/puppet-service.spec.js +50 -0
  387. package/dist/esm/src/client/puppet-service.spec.js.map +1 -0
  388. package/dist/esm/src/config.d.ts +20 -0
  389. package/dist/esm/src/config.d.ts.map +1 -0
  390. package/dist/esm/src/config.js +20 -0
  391. package/dist/esm/src/config.js.map +1 -0
  392. package/dist/esm/src/deprecated/chunk-pb.d.ts +15 -0
  393. package/dist/esm/src/deprecated/chunk-pb.d.ts.map +1 -0
  394. package/dist/esm/src/deprecated/chunk-pb.js +56 -0
  395. package/dist/esm/src/deprecated/chunk-pb.js.map +1 -0
  396. package/dist/esm/src/deprecated/chunk-pb.spec.d.ts +3 -0
  397. package/dist/esm/src/deprecated/chunk-pb.spec.d.ts.map +1 -0
  398. package/dist/esm/src/deprecated/chunk-pb.spec.js +142 -0
  399. package/dist/esm/src/deprecated/chunk-pb.spec.js.map +1 -0
  400. package/dist/esm/src/deprecated/conversation-id-file-box.d.ts +21 -0
  401. package/dist/esm/src/deprecated/conversation-id-file-box.d.ts.map +1 -0
  402. package/dist/esm/src/deprecated/conversation-id-file-box.js +39 -0
  403. package/dist/esm/src/deprecated/conversation-id-file-box.js.map +1 -0
  404. package/dist/esm/src/deprecated/conversation-id-file-box.spec.d.ts +3 -0
  405. package/dist/esm/src/deprecated/conversation-id-file-box.spec.d.ts.map +1 -0
  406. package/dist/esm/src/deprecated/conversation-id-file-box.spec.js +92 -0
  407. package/dist/esm/src/deprecated/conversation-id-file-box.spec.js.map +1 -0
  408. package/dist/esm/src/deprecated/file-box-chunk.d.ts +14 -0
  409. package/dist/esm/src/deprecated/file-box-chunk.d.ts.map +1 -0
  410. package/dist/esm/src/deprecated/file-box-chunk.js +63 -0
  411. package/dist/esm/src/deprecated/file-box-chunk.js.map +1 -0
  412. package/dist/esm/src/deprecated/file-box-chunk.spec.d.ts +3 -0
  413. package/dist/esm/src/deprecated/file-box-chunk.spec.d.ts.map +1 -0
  414. package/dist/esm/src/deprecated/file-box-chunk.spec.js +132 -0
  415. package/dist/esm/src/deprecated/file-box-chunk.spec.js.map +1 -0
  416. package/dist/esm/src/deprecated/file-box-pb.d.ts +15 -0
  417. package/dist/esm/src/deprecated/file-box-pb.d.ts.map +1 -0
  418. package/dist/esm/src/deprecated/file-box-pb.js +22 -0
  419. package/dist/esm/src/deprecated/file-box-pb.js.map +1 -0
  420. package/dist/esm/src/deprecated/file-box-pb.spec.d.ts +3 -0
  421. package/dist/esm/src/deprecated/file-box-pb.spec.d.ts.map +1 -0
  422. package/dist/esm/src/deprecated/file-box-pb.spec.js +16 -0
  423. package/dist/esm/src/deprecated/file-box-pb.spec.js.map +1 -0
  424. package/dist/esm/src/deprecated/file-box-pb.type.d.ts +15 -0
  425. package/dist/esm/src/deprecated/file-box-pb.type.d.ts.map +1 -0
  426. package/dist/esm/src/deprecated/file-box-pb.type.js +2 -0
  427. package/dist/esm/src/deprecated/file-box-pb.type.js.map +1 -0
  428. package/dist/esm/src/deprecated/mod.d.ts +3 -0
  429. package/dist/esm/src/deprecated/mod.d.ts.map +1 -0
  430. package/dist/esm/src/deprecated/mod.js +3 -0
  431. package/dist/esm/src/deprecated/mod.js.map +1 -0
  432. package/dist/esm/src/deprecated/next-data.d.ts +7 -0
  433. package/dist/esm/src/deprecated/next-data.d.ts.map +1 -0
  434. package/dist/esm/src/deprecated/next-data.js +23 -0
  435. package/dist/esm/src/deprecated/next-data.js.map +1 -0
  436. package/dist/esm/src/deprecated/serialize-file-box.d.ts +6 -0
  437. package/dist/esm/src/deprecated/serialize-file-box.d.ts.map +1 -0
  438. package/dist/esm/src/deprecated/serialize-file-box.js +18 -0
  439. package/dist/esm/src/deprecated/serialize-file-box.js.map +1 -0
  440. package/dist/esm/src/env-vars.d.ts +5 -0
  441. package/dist/esm/src/env-vars.d.ts.map +1 -0
  442. package/dist/esm/src/env-vars.js +83 -0
  443. package/dist/esm/src/env-vars.js.map +1 -0
  444. package/dist/esm/src/env-vars.spec.d.ts +3 -0
  445. package/dist/esm/src/env-vars.spec.d.ts.map +1 -0
  446. package/dist/esm/src/env-vars.spec.js +19 -0
  447. package/dist/esm/src/env-vars.spec.js.map +1 -0
  448. package/dist/esm/src/event-type-rev.d.ts +11 -0
  449. package/dist/esm/src/event-type-rev.d.ts.map +1 -0
  450. package/dist/esm/src/event-type-rev.js +14 -0
  451. package/dist/esm/src/event-type-rev.js.map +1 -0
  452. package/dist/esm/src/file-box-helper/mod.d.ts +4 -0
  453. package/dist/esm/src/file-box-helper/mod.d.ts.map +1 -0
  454. package/dist/esm/src/file-box-helper/mod.js +4 -0
  455. package/dist/esm/src/file-box-helper/mod.js.map +1 -0
  456. package/dist/esm/src/file-box-helper/normalize-filebox.d.ts +6 -0
  457. package/dist/esm/src/file-box-helper/normalize-filebox.d.ts.map +1 -0
  458. package/dist/esm/src/file-box-helper/normalize-filebox.js +72 -0
  459. package/dist/esm/src/file-box-helper/normalize-filebox.js.map +1 -0
  460. package/dist/esm/src/file-box-helper/normalize-filebox.spec.d.ts +3 -0
  461. package/dist/esm/src/file-box-helper/normalize-filebox.spec.d.ts.map +1 -0
  462. package/dist/esm/src/file-box-helper/normalize-filebox.spec.js +33 -0
  463. package/dist/esm/src/file-box-helper/normalize-filebox.spec.js.map +1 -0
  464. package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.d.ts +6 -0
  465. package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.d.ts.map +1 -0
  466. package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.js +42 -0
  467. package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.js.map +1 -0
  468. package/dist/esm/src/file-box-helper/uuidify-file-box-local.d.ts +5 -0
  469. package/dist/esm/src/file-box-helper/uuidify-file-box-local.d.ts.map +1 -0
  470. package/dist/esm/src/file-box-helper/uuidify-file-box-local.js +16 -0
  471. package/dist/esm/src/file-box-helper/uuidify-file-box-local.js.map +1 -0
  472. package/dist/esm/src/mod.d.ts +8 -0
  473. package/dist/esm/src/mod.d.ts.map +1 -0
  474. package/dist/esm/src/mod.js +7 -0
  475. package/dist/esm/src/mod.js.map +1 -0
  476. package/dist/esm/src/mod.spec.d.ts +3 -0
  477. package/dist/esm/src/mod.spec.d.ts.map +1 -0
  478. package/dist/esm/src/mod.spec.js +7 -0
  479. package/dist/esm/src/mod.spec.js.map +1 -0
  480. package/dist/esm/src/package-json.d.ts +6 -0
  481. package/dist/esm/src/package-json.d.ts.map +1 -0
  482. package/dist/esm/src/package-json.js +98 -0
  483. package/dist/esm/src/package-json.js.map +1 -0
  484. package/dist/esm/src/package-json.spec.d.ts +3 -0
  485. package/dist/esm/src/package-json.spec.d.ts.map +1 -0
  486. package/dist/esm/src/package-json.spec.js +8 -0
  487. package/dist/esm/src/package-json.spec.js.map +1 -0
  488. package/dist/esm/src/pure-functions/timestamp.d.ts +8 -0
  489. package/dist/esm/src/pure-functions/timestamp.d.ts.map +1 -0
  490. package/dist/esm/src/pure-functions/timestamp.js +19 -0
  491. package/dist/esm/src/pure-functions/timestamp.js.map +1 -0
  492. package/dist/esm/src/server/event-stream-manager.d.ts +40 -0
  493. package/dist/esm/src/server/event-stream-manager.d.ts.map +1 -0
  494. package/dist/esm/src/server/event-stream-manager.js +318 -0
  495. package/dist/esm/src/server/event-stream-manager.js.map +1 -0
  496. package/dist/esm/src/server/grpc-error.d.ts +5 -0
  497. package/dist/esm/src/server/grpc-error.d.ts.map +1 -0
  498. package/dist/esm/src/server/grpc-error.js +8 -0
  499. package/dist/esm/src/server/grpc-error.js.map +1 -0
  500. package/dist/esm/src/server/health-implementation.d.ts +5 -0
  501. package/dist/esm/src/server/health-implementation.d.ts.map +1 -0
  502. package/dist/esm/src/server/health-implementation.js +52 -0
  503. package/dist/esm/src/server/health-implementation.js.map +1 -0
  504. package/dist/esm/src/server/puppet-implementation.d.ts +6 -0
  505. package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -0
  506. package/dist/esm/src/server/puppet-implementation.js +1200 -0
  507. package/dist/esm/src/server/puppet-implementation.js.map +1 -0
  508. package/dist/esm/src/server/puppet-server.d.ts +23 -0
  509. package/dist/esm/src/server/puppet-server.d.ts.map +1 -0
  510. package/dist/esm/src/server/puppet-server.js +152 -0
  511. package/dist/esm/src/server/puppet-server.js.map +1 -0
  512. package/dist/esm/src/server/puppet-server.spec.d.ts +3 -0
  513. package/dist/esm/src/server/puppet-server.spec.d.ts.map +1 -0
  514. package/dist/esm/src/server/puppet-server.spec.js +13 -0
  515. package/dist/esm/src/server/puppet-server.spec.js.map +1 -0
  516. package/dist/esm/tests/grpc-client.spec.d.ts +3 -0
  517. package/dist/esm/tests/grpc-client.spec.d.ts.map +1 -0
  518. package/dist/esm/tests/grpc-client.spec.js +132 -0
  519. package/dist/esm/tests/grpc-client.spec.js.map +1 -0
  520. package/dist/esm/tests/grpc-stream.spec.d.ts +15 -0
  521. package/dist/esm/tests/grpc-stream.spec.d.ts.map +1 -0
  522. package/dist/esm/tests/grpc-stream.spec.js +62 -0
  523. package/dist/esm/tests/grpc-stream.spec.js.map +1 -0
  524. package/dist/esm/tests/integration.spec.d.ts +3 -0
  525. package/dist/esm/tests/integration.spec.d.ts.map +1 -0
  526. package/dist/esm/tests/integration.spec.js +65 -0
  527. package/dist/esm/tests/integration.spec.js.map +1 -0
  528. package/dist/esm/tests/performance.spec.d.ts +14 -0
  529. package/dist/esm/tests/performance.spec.d.ts.map +1 -0
  530. package/dist/esm/tests/performance.spec.js +104 -0
  531. package/dist/esm/tests/performance.spec.js.map +1 -0
  532. package/dist/esm/tests/ready-event.spec.d.ts +3 -0
  533. package/dist/esm/tests/ready-event.spec.d.ts.map +1 -0
  534. package/dist/esm/tests/ready-event.spec.js +52 -0
  535. package/dist/esm/tests/ready-event.spec.js.map +1 -0
  536. package/dist/esm/tests/uuid-file-box.spec.d.ts +3 -0
  537. package/dist/esm/tests/uuid-file-box.spec.d.ts.map +1 -0
  538. package/dist/esm/tests/uuid-file-box.spec.js +49 -0
  539. package/dist/esm/tests/uuid-file-box.spec.js.map +1 -0
  540. package/package.json +97 -0
  541. package/src/auth/README.md +10 -0
  542. package/src/auth/auth-impl-token.spec.ts +81 -0
  543. package/src/auth/auth-impl-token.ts +108 -0
  544. package/src/auth/ca.spec.ts +116 -0
  545. package/src/auth/ca.ts +137 -0
  546. package/src/auth/call-cred.spec.ts +25 -0
  547. package/src/auth/call-cred.ts +22 -0
  548. package/src/auth/env-vars.ts +32 -0
  549. package/src/auth/grpc-js.ts +29 -0
  550. package/src/auth/mod.ts +9 -0
  551. package/src/auth/mokey-patch-header-authorization.ts +45 -0
  552. package/src/auth/monkey-patch-header-authorization.spec.ts +26 -0
  553. package/src/client/duck/actions.ts +31 -0
  554. package/src/client/duck/epic-recover.spec.ts +180 -0
  555. package/src/client/duck/epic-recover.ts +109 -0
  556. package/src/client/duck/epics.ts +53 -0
  557. package/src/client/duck/mod.ts +38 -0
  558. package/src/client/duck/operations.ts +28 -0
  559. package/src/client/duck/reducers.ts +36 -0
  560. package/src/client/duck/selectors.ts +27 -0
  561. package/src/client/duck/tests.spec.ts +25 -0
  562. package/src/client/duck/types.ts +20 -0
  563. package/src/client/duck/utils.ts +20 -0
  564. package/src/client/grpc-manager.spec.ts +20 -0
  565. package/src/client/grpc-manager.ts +440 -0
  566. package/src/client/payload-store.spec.ts +19 -0
  567. package/src/client/payload-store.ts +153 -0
  568. package/src/client/puppet-service.spec.ts +59 -0
  569. package/src/client/puppet-service.ts +1938 -0
  570. package/src/config.ts +31 -0
  571. package/src/deprecated/chunk-pb.spec.ts +210 -0
  572. package/src/deprecated/chunk-pb.ts +75 -0
  573. package/src/deprecated/conversation-id-file-box.spec.ts +131 -0
  574. package/src/deprecated/conversation-id-file-box.ts +72 -0
  575. package/src/deprecated/file-box-chunk.spec.ts +184 -0
  576. package/src/deprecated/file-box-chunk.ts +87 -0
  577. package/src/deprecated/file-box-pb.spec.ts +31 -0
  578. package/src/deprecated/file-box-pb.ts +41 -0
  579. package/src/deprecated/file-box-pb.type.ts +16 -0
  580. package/src/deprecated/mod.ts +8 -0
  581. package/src/deprecated/next-data.ts +35 -0
  582. package/src/deprecated/serialize-file-box.ts +24 -0
  583. package/src/env-vars.spec.ts +23 -0
  584. package/src/env-vars.ts +100 -0
  585. package/src/event-type-rev.ts +19 -0
  586. package/src/file-box-helper/mod.ts +11 -0
  587. package/src/file-box-helper/normalize-filebox.spec.ts +47 -0
  588. package/src/file-box-helper/normalize-filebox.ts +90 -0
  589. package/src/file-box-helper/uuidify-file-box-grpc.ts +83 -0
  590. package/src/file-box-helper/uuidify-file-box-local.ts +31 -0
  591. package/src/mod.spec.ts +9 -0
  592. package/src/mod.ts +25 -0
  593. package/src/package-json.spec.ts +10 -0
  594. package/src/package-json.ts +101 -0
  595. package/src/pure-functions/timestamp.ts +28 -0
  596. package/src/server/event-stream-manager.ts +383 -0
  597. package/src/server/grpc-error.ts +23 -0
  598. package/src/server/health-implementation.ts +78 -0
  599. package/src/server/puppet-implementation.ts +1539 -0
  600. package/src/server/puppet-server.spec.ts +21 -0
  601. package/src/server/puppet-server.ts +239 -0
  602. package/src/typings.d.ts +68 -0
@@ -0,0 +1,1384 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.PuppetService = void 0;
30
+ /**
31
+ * Wechaty Open Source Software - https://github.com/wechaty
32
+ *
33
+ * @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
34
+ * Wechaty Contributors <https://github.com/wechaty>.
35
+ *
36
+ * Licensed under the Apache License, Version 2.0 (the "License");
37
+ * you may not use this file except in compliance with the License.
38
+ * You may obtain a copy of the License at
39
+ *
40
+ * http://www.apache.org/licenses/LICENSE-2.0
41
+ *
42
+ * Unless required by applicable law or agreed to in writing, software
43
+ * distributed under the License is distributed on an "AS IS" BASIS,
44
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45
+ * See the License for the specific language governing permissions and
46
+ * limitations under the License.
47
+ *
48
+ */
49
+ const util_1 = __importDefault(require("util"));
50
+ const PUPPET = __importStar(require("@juzi/wechaty-puppet"));
51
+ const wechaty_grpc_1 = require("@juzi/wechaty-grpc");
52
+ const wechaty_redux_1 = require("wechaty-redux");
53
+ const ducks_1 = require("ducks");
54
+ // import type { Subscription } from 'rxjs'
55
+ /**
56
+ * Deprecated. Will be removed after Dec 31, 2022
57
+ */
58
+ const mod_js_1 = require("../deprecated/mod.js");
59
+ const serialize_file_box_js_1 = require("../deprecated/serialize-file-box.js");
60
+ const timestamp_js_1 = require("../pure-functions/timestamp.js");
61
+ const mod_js_2 = require("../file-box-helper/mod.js");
62
+ const config_js_1 = require("../config.js");
63
+ const event_type_rev_js_1 = require("../event-type-rev.js");
64
+ const package_json_js_1 = require("../package-json.js");
65
+ const grpc_manager_js_1 = require("./grpc-manager.js");
66
+ const payload_store_js_1 = require("./payload-store.js");
67
+ class PuppetService extends PUPPET.Puppet {
68
+ options;
69
+ static VERSION = config_js_1.VERSION;
70
+ _cleanupCallbackList;
71
+ _payloadStore;
72
+ /**
73
+ * Wechaty Redux
74
+ */
75
+ _ducks;
76
+ _store;
77
+ _grpcManager;
78
+ get grpcManager() {
79
+ if (!this._grpcManager) {
80
+ throw new Error('no grpc manager');
81
+ }
82
+ return this._grpcManager;
83
+ }
84
+ /**
85
+ * UUIDify:
86
+ * We need to clone a FileBox
87
+ * to set uuid loader/saver with this grpc client
88
+ */
89
+ FileBoxUuid;
90
+ constructor(options = {}) {
91
+ super(options);
92
+ this.options = options;
93
+ this._payloadStore = new payload_store_js_1.PayloadStore({
94
+ token: config_js_1.envVars.WECHATY_PUPPET_SERVICE_TOKEN(this.options.token),
95
+ });
96
+ this.hookPayloadStore();
97
+ this._ducks = new ducks_1.Ducks({ puppet: wechaty_redux_1.Duck });
98
+ this._store = this._ducks.configureStore();
99
+ this._cleanupCallbackList = [];
100
+ this.FileBoxUuid = (0, mod_js_2.uuidifyFileBoxGrpc)(() => this.grpcManager.client);
101
+ }
102
+ async serializeFileBox(fileBox) {
103
+ /**
104
+ * 1. if the fileBox is one of type `Url`, `QRCode`, `Uuid`, etc,
105
+ * then it can be serialized by `fileBox.toString()`
106
+ * 2. if the fileBox is one of type `Stream`, `Buffer`, `File`, etc,
107
+ * then it need to be convert to type `Uuid`
108
+ * before serialized by `fileBox.toString()`
109
+ */
110
+ const normalizedFileBox = await (0, mod_js_2.normalizeFileBoxUuid)(this.FileBoxUuid)(fileBox);
111
+ return JSON.stringify(normalizedFileBox);
112
+ }
113
+ name() {
114
+ return package_json_js_1.packageJson.name || 'wechaty-puppet-service';
115
+ }
116
+ version() {
117
+ return package_json_js_1.packageJson.version || '0.0.0';
118
+ }
119
+ async onStart() {
120
+ config_js_1.log.verbose('PuppetService', 'onStart()');
121
+ if (this._grpcManager) {
122
+ config_js_1.log.warn('PuppetService', 'onStart() found this.grpc is already existed. dropped.');
123
+ this._grpcManager = undefined;
124
+ }
125
+ config_js_1.log.verbose('PuppetService', 'start() instanciating GrpcManager ...');
126
+ const grpcManager = new grpc_manager_js_1.GrpcManager(this.options);
127
+ config_js_1.log.verbose('PuppetService', 'start() instanciating GrpcManager ... done');
128
+ /**
129
+ * Huan(202108): when we started the event stream,
130
+ * the `this.grpc` need to be available for all listeners.
131
+ */
132
+ this._grpcManager = grpcManager;
133
+ config_js_1.log.verbose('PuppetService', 'start() setting up bridge grpc event stream ...');
134
+ this.bridgeGrpcEventStream(grpcManager);
135
+ config_js_1.log.verbose('PuppetService', 'start() setting up bridge grpc event stream ... done');
136
+ config_js_1.log.verbose('PuppetService', 'start() starting grpc manager...');
137
+ await grpcManager.start();
138
+ config_js_1.log.verbose('PuppetService', 'start() starting grpc manager... done');
139
+ /**
140
+ * Ducks management
141
+ */
142
+ const subscription = (0, wechaty_redux_1.puppet$)(this)
143
+ .subscribe(this._store.dispatch);
144
+ this._cleanupCallbackList.push(() => subscription.unsubscribe());
145
+ config_js_1.log.verbose('PuppetService', 'onStart() ... done');
146
+ }
147
+ async onStop() {
148
+ config_js_1.log.verbose('PuppetService', 'onStop()');
149
+ this._cleanupCallbackList.map(setImmediate);
150
+ this._cleanupCallbackList.length = 0;
151
+ if (this._grpcManager) {
152
+ config_js_1.log.verbose('PuppetService', 'onStop() stopping grpc manager ...');
153
+ const grpcManager = this._grpcManager;
154
+ this._grpcManager = undefined;
155
+ await grpcManager.stop();
156
+ config_js_1.log.verbose('PuppetService', 'onStop() stopping grpc manager ... done');
157
+ }
158
+ config_js_1.log.verbose('PuppetService', 'onStop() ... done');
159
+ }
160
+ hookPayloadStore() {
161
+ config_js_1.log.verbose('PuppetService', 'hookPayloadStore()');
162
+ this.on('login', async ({ contactId }) => {
163
+ try {
164
+ config_js_1.log.verbose('PuppetService', 'hookPayloadStore() this.on(login) contactId: "%s"', contactId);
165
+ await this._payloadStore.start(contactId);
166
+ }
167
+ catch (e) {
168
+ config_js_1.log.verbose('PuppetService', 'hookPayloadStore() this.on(login) rejection "%s"', e.message);
169
+ }
170
+ });
171
+ this.on('logout', async ({ contactId }) => {
172
+ config_js_1.log.verbose('PuppetService', 'hookPayloadStore() this.on(logout) contactId: "%s"', contactId);
173
+ try {
174
+ await this._payloadStore.stop();
175
+ }
176
+ catch (e) {
177
+ config_js_1.log.verbose('PuppetService', 'hookPayloadStore() this.on(logout) rejection "%s"', e.message);
178
+ }
179
+ });
180
+ }
181
+ bridgeGrpcEventStream(client) {
182
+ config_js_1.log.verbose('PuppetService', 'bridgeGrpcEventStream(client)');
183
+ client
184
+ .on('data', this.onGrpcStreamEvent.bind(this))
185
+ .on('end', () => {
186
+ config_js_1.log.verbose('PuppetService', 'bridgeGrpcEventStream() eventStream.on(end)');
187
+ })
188
+ .on('error', (e) => {
189
+ this.emit('error', e);
190
+ // https://github.com/wechaty/wechaty-puppet-service/issues/16
191
+ // log.verbose('PuppetService', 'bridgeGrpcEventStream() eventStream.on(error) %s', e)
192
+ // const reason = 'bridgeGrpcEventStream() eventStream.on(error) ' + e
193
+ /**
194
+ * Huan(202110): simple reset puppet when grpc client has error? (or not?)
195
+ */
196
+ // this.wrapAsync(this.reset())
197
+ // /**
198
+ // * The `Puppet` class have a throttleQueue for receiving the `reset` events
199
+ // * and it's the `Puppet` class's duty for call the `puppet.reset()` to reset the puppet.
200
+ // */
201
+ // if (this.state.on()) {
202
+ // this.emit('reset', { data: reason })
203
+ // }
204
+ })
205
+ .on('cancel', (...args) => {
206
+ config_js_1.log.verbose('PuppetService', 'bridgeGrpcEventStream() eventStream.on(cancel), %s', JSON.stringify(args));
207
+ });
208
+ }
209
+ onGrpcStreamEvent(event) {
210
+ const type = event.getType();
211
+ const payload = event.getPayload();
212
+ config_js_1.log.verbose('PuppetService', 'onGrpcStreamEvent({type:%s(%s), payload(len:%s)})', event_type_rev_js_1.EventTypeRev[type], type, payload.length);
213
+ config_js_1.log.silly('PuppetService', 'onGrpcStreamEvent({type:%s(%s), payload:"%s"})', event_type_rev_js_1.EventTypeRev[type], type, payload);
214
+ if (type !== wechaty_grpc_1.puppet.EventType.EVENT_TYPE_HEARTBEAT) {
215
+ this.emit('heartbeat', {
216
+ data: `onGrpcStreamEvent(${event_type_rev_js_1.EventTypeRev[type]})`,
217
+ });
218
+ }
219
+ switch (type) {
220
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_DONG:
221
+ this.emit('dong', JSON.parse(payload));
222
+ break;
223
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_ERROR:
224
+ this.emit('error', JSON.parse(payload));
225
+ break;
226
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_HEARTBEAT:
227
+ this.emit('heartbeat', JSON.parse(payload));
228
+ break;
229
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_FRIENDSHIP:
230
+ this.emit('friendship', JSON.parse(payload));
231
+ break;
232
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_LOGIN:
233
+ {
234
+ const loginPayload = JSON.parse(payload);
235
+ (async () => this.login(loginPayload.contactId))().catch(e => config_js_1.log.error('PuppetService', 'onGrpcStreamEvent() this.login() rejection %s', e.message));
236
+ }
237
+ break;
238
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_LOGOUT:
239
+ {
240
+ const logoutPayload = JSON.parse(payload);
241
+ (async () => this.logout(logoutPayload.data))().catch(e => config_js_1.log.error('PuppetService', 'onGrpcStreamEvent() this.logout() rejection %s', e.message));
242
+ }
243
+ break;
244
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_DIRTY:
245
+ this.emit('dirty', JSON.parse(payload));
246
+ break;
247
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_MESSAGE:
248
+ this.emit('message', JSON.parse(payload));
249
+ break;
250
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_POST:
251
+ this.emit('post', JSON.parse(payload));
252
+ break;
253
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_READY:
254
+ this.emit('ready', JSON.parse(payload));
255
+ break;
256
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_ROOM_INVITE:
257
+ this.emit('room-invite', JSON.parse(payload));
258
+ break;
259
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_ROOM_JOIN:
260
+ this.emit('room-join', JSON.parse(payload));
261
+ break;
262
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_ROOM_LEAVE:
263
+ this.emit('room-leave', JSON.parse(payload));
264
+ break;
265
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_ROOM_TOPIC:
266
+ this.emit('room-topic', JSON.parse(payload));
267
+ break;
268
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_SCAN:
269
+ this.emit('scan', JSON.parse(payload));
270
+ break;
271
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_RESET:
272
+ config_js_1.log.warn('PuppetService', 'onGrpcStreamEvent() got an EventType.EVENT_TYPE_RESET ?');
273
+ // the `reset` event should be dealed not send out
274
+ break;
275
+ case wechaty_grpc_1.puppet.EventType.EVENT_TYPE_UNSPECIFIED:
276
+ config_js_1.log.error('PuppetService', 'onGrpcStreamEvent() got an EventType.EVENT_TYPE_UNSPECIFIED ?');
277
+ break;
278
+ default:
279
+ // Huan(202003): in default, the `type` type should be `never`, please check.
280
+ throw new Error('eventType ' + type + ' unsupported! (code should not reach here)');
281
+ }
282
+ }
283
+ async logout(reason) {
284
+ config_js_1.log.verbose('PuppetService', 'logout(%s)', reason ? `"${reason}"` : '');
285
+ await super.logout(reason);
286
+ try {
287
+ await util_1.default.promisify(this.grpcManager.client.logout
288
+ .bind(this.grpcManager.client))(new wechaty_grpc_1.puppet.LogoutRequest());
289
+ }
290
+ catch (e) {
291
+ config_js_1.log.silly('PuppetService', 'logout() no grpc client');
292
+ }
293
+ }
294
+ ding(data) {
295
+ config_js_1.log.silly('PuppetService', 'ding(%s)', data);
296
+ const request = new wechaty_grpc_1.puppet.DingRequest();
297
+ request.setData(data || '');
298
+ this.grpcManager.client.ding(request, (error, _response) => {
299
+ if (error) {
300
+ config_js_1.log.error('PuppetService', 'ding() rejection: %s', error);
301
+ }
302
+ });
303
+ }
304
+ /**
305
+ *
306
+ * Huan(202111) Issue #158 - Refactoring the 'dirty' event, dirtyPayload(),
307
+ * and XXXPayloadDirty() methods logic & spec
308
+ *
309
+ * @see https://github.com/wechaty/puppet/issues/158
310
+ *
311
+ */
312
+ async dirtyPayload(type, id) {
313
+ config_js_1.log.verbose('PuppetService', 'dirtyPayload(%s, %s)', type, id);
314
+ const request = new wechaty_grpc_1.puppet.DirtyPayloadRequest();
315
+ request.setId(id);
316
+ request.setType(type);
317
+ try {
318
+ await util_1.default.promisify(this.grpcManager.client.dirtyPayload
319
+ .bind(this.grpcManager.client))(request);
320
+ }
321
+ catch (e) {
322
+ config_js_1.log.error('PuppetService', 'dirtyPayload() rejection: %s', e && e.message);
323
+ throw e;
324
+ }
325
+ }
326
+ /**
327
+ * `onDirty()` is called when the puppet emit `dirty` event.
328
+ * the event listener will be registered in `start()` from the `PuppetAbstract` class
329
+ */
330
+ onDirty({ payloadType, payloadId, }) {
331
+ config_js_1.log.verbose('PuppetService', 'onDirty(%s<%s>, %s)', PUPPET.types.Dirty[payloadType], payloadType, payloadId);
332
+ const dirtyMap = {
333
+ [PUPPET.types.Dirty.Contact]: async (id) => this._payloadStore.contact?.delete(id),
334
+ [PUPPET.types.Dirty.Friendship]: async (_) => { },
335
+ [PUPPET.types.Dirty.Message]: async (_) => { },
336
+ [PUPPET.types.Dirty.Post]: async (_) => { },
337
+ [PUPPET.types.Dirty.Room]: async (id) => this._payloadStore.room?.delete(id),
338
+ [PUPPET.types.Dirty.RoomMember]: async (id) => this._payloadStore.roomMember?.delete(id),
339
+ [PUPPET.types.Dirty.Unspecified]: async (id) => { throw new Error('Unspecified type with id: ' + id); },
340
+ };
341
+ const dirtyFuncSync = this.wrapAsync(dirtyMap[payloadType]);
342
+ dirtyFuncSync(payloadId);
343
+ /**
344
+ * We need to call `super.onDirty()` to clean the `PuppetAbstract` LRUCache
345
+ */
346
+ super.onDirty({ payloadId, payloadType });
347
+ }
348
+ async contactAlias(contactId, alias) {
349
+ config_js_1.log.verbose('PuppetService', 'contactAlias(%s, %s)', contactId, alias);
350
+ /**
351
+ * Get alias
352
+ */
353
+ if (typeof alias === 'undefined') {
354
+ const request = new wechaty_grpc_1.puppet.ContactAliasRequest();
355
+ request.setId(contactId);
356
+ const response = await util_1.default.promisify(this.grpcManager.client.contactAlias
357
+ .bind(this.grpcManager.client))(request);
358
+ const result = response.getAlias();
359
+ if (result) {
360
+ return result;
361
+ }
362
+ {
363
+ // DEPRECATED, will be removed after Dec 31, 2022
364
+ const aliasWrapper = response.getAliasStringValueDeprecated();
365
+ if (!aliasWrapper) {
366
+ throw new Error('can not get aliasWrapper');
367
+ }
368
+ return aliasWrapper.getValue();
369
+ }
370
+ }
371
+ /**
372
+ * Set alias
373
+ */
374
+ const request = new wechaty_grpc_1.puppet.ContactAliasRequest();
375
+ request.setId(contactId);
376
+ request.setAlias(alias || ''); // null -> '', in server, we treat '' as null
377
+ {
378
+ // DEPRECATED, will be removed after Dec 31, 2022
379
+ const aliasWrapper = new wechaty_grpc_1.StringValue();
380
+ aliasWrapper.setValue(alias || ''); // null -> '', in server, we treat '' as null
381
+ request.setAliasStringValueDeprecated(aliasWrapper);
382
+ }
383
+ await util_1.default.promisify(this.grpcManager.client.contactAlias
384
+ .bind(this.grpcManager.client))(request);
385
+ }
386
+ async contactPhone(contactId, phoneList) {
387
+ config_js_1.log.verbose('PuppetService', 'contactPhone(%s, %s)', contactId, phoneList);
388
+ const request = new wechaty_grpc_1.puppet.ContactPhoneRequest();
389
+ request.setContactId(contactId);
390
+ request.setPhonesList(phoneList);
391
+ await util_1.default.promisify(this.grpcManager.client.contactPhone
392
+ .bind(this.grpcManager.client))(request);
393
+ }
394
+ async contactCorporationRemark(contactId, corporationRemark) {
395
+ config_js_1.log.verbose('PuppetService', 'contactCorporationRemark(%s, %s)', contactId, corporationRemark);
396
+ const request = new wechaty_grpc_1.puppet.ContactCorporationRemarkRequest();
397
+ request.setContactId(contactId);
398
+ if (corporationRemark) {
399
+ request.setCorporationRemark(corporationRemark);
400
+ }
401
+ {
402
+ // DEPRECATED, will be removed after Dec 31, 2022
403
+ const corporationRemarkWrapper = new wechaty_grpc_1.StringValue();
404
+ if (corporationRemark) {
405
+ corporationRemarkWrapper.setValue(corporationRemark);
406
+ request.setCorporationRemarkStringValueDeprecated(corporationRemarkWrapper);
407
+ }
408
+ }
409
+ await util_1.default.promisify(this.grpcManager.client.contactCorporationRemark
410
+ .bind(this.grpcManager.client))(request);
411
+ }
412
+ async contactDescription(contactId, description) {
413
+ config_js_1.log.verbose('PuppetService', 'contactDescription(%s, %s)', contactId, description);
414
+ const request = new wechaty_grpc_1.puppet.ContactDescriptionRequest();
415
+ request.setContactId(contactId);
416
+ if (description) {
417
+ request.setDescription(description);
418
+ }
419
+ {
420
+ // DEPRECATED, will be removed after Dec 31, 2022
421
+ const descriptionWrapper = new wechaty_grpc_1.StringValue();
422
+ if (description) {
423
+ descriptionWrapper.setValue(description);
424
+ request.setDescriptionStringValueDeprecated(descriptionWrapper);
425
+ }
426
+ }
427
+ await util_1.default.promisify(this.grpcManager.client.contactDescription
428
+ .bind(this.grpcManager.client))(request);
429
+ }
430
+ async contactList() {
431
+ config_js_1.log.verbose('PuppetService', 'contactList()');
432
+ const response = await util_1.default.promisify(this.grpcManager.client.contactList
433
+ .bind(this.grpcManager.client))(new wechaty_grpc_1.puppet.ContactListRequest());
434
+ return response.getIdsList();
435
+ }
436
+ async contactAvatar(contactId, fileBox) {
437
+ config_js_1.log.verbose('PuppetService', 'contactAvatar(%s)', contactId);
438
+ /**
439
+ * 1. set
440
+ */
441
+ if (fileBox) {
442
+ const request = new wechaty_grpc_1.puppet.ContactAvatarRequest();
443
+ request.setId(contactId);
444
+ const serializedFileBox = await this.serializeFileBox(fileBox);
445
+ request.setFileBox(serializedFileBox);
446
+ {
447
+ // DEPRECATED, will be removed after Dec 31, 2022
448
+ const fileboxWrapper = new wechaty_grpc_1.StringValue();
449
+ fileboxWrapper.setValue(await (0, serialize_file_box_js_1.serializeFileBox)(fileBox));
450
+ request.setFileboxStringValueDeprecated(fileboxWrapper);
451
+ }
452
+ await util_1.default.promisify(this.grpcManager.client.contactAvatar
453
+ .bind(this.grpcManager.client))(request);
454
+ return;
455
+ }
456
+ /**
457
+ * 2. get
458
+ */
459
+ const request = new wechaty_grpc_1.puppet.ContactAvatarRequest();
460
+ request.setId(contactId);
461
+ const response = await util_1.default.promisify(this.grpcManager.client.contactAvatar
462
+ .bind(this.grpcManager.client))(request);
463
+ let jsonText;
464
+ jsonText = response.getFileBox();
465
+ {
466
+ // DEPRECATED, will be removed after Dec 31, 2022
467
+ const deprecated = true;
468
+ void deprecated;
469
+ if (!jsonText) {
470
+ const textWrapper = response.getFileboxStringValueDeprecated();
471
+ if (!textWrapper) {
472
+ throw new Error('can not get textWrapper');
473
+ }
474
+ jsonText = textWrapper.getValue();
475
+ }
476
+ }
477
+ return this.FileBoxUuid.fromJSON(jsonText);
478
+ }
479
+ async contactRawPayload(id) {
480
+ config_js_1.log.verbose('PuppetService', 'contactRawPayload(%s)', id);
481
+ const cachedPayload = await this._payloadStore.contact?.get(id);
482
+ if (cachedPayload) {
483
+ config_js_1.log.silly('PuppetService', 'contactRawPayload(%s) cache HIT', id);
484
+ return cachedPayload;
485
+ }
486
+ const request = new wechaty_grpc_1.puppet.ContactPayloadRequest();
487
+ request.setId(id);
488
+ const response = await util_1.default.promisify(this.grpcManager.client.contactPayload
489
+ .bind(this.grpcManager.client))(request);
490
+ const payload = {
491
+ address: response.getAddress(),
492
+ alias: response.getAlias(),
493
+ avatar: response.getAvatar(),
494
+ city: response.getCity(),
495
+ corporation: response.getCorporation(),
496
+ coworker: response.getCoworker(),
497
+ description: response.getDescription(),
498
+ friend: response.getFriend(),
499
+ gender: response.getGender(),
500
+ /**
501
+ * Huan(202203): rename `getWeixin()` to `getHandle()` in v2.0.0
502
+ * @link https://github.com/wechaty/grpc/issues/174
503
+ */
504
+ handle: response.getWeixin(),
505
+ id: response.getId(),
506
+ name: response.getName(),
507
+ phone: response.getPhonesList(),
508
+ province: response.getProvince(),
509
+ signature: response.getSignature(),
510
+ star: response.getStar(),
511
+ title: response.getTitle(),
512
+ type: response.getType(),
513
+ /**
514
+ * `weixin` is deprecated, will be removed after Dec 31, 2022
515
+ * use `handle` instead.
516
+ */
517
+ weixin: response.getWeixin(),
518
+ };
519
+ await this._payloadStore.contact?.set(id, payload);
520
+ config_js_1.log.silly('PuppetService', 'contactRawPayload(%s) cache SET', id);
521
+ return payload;
522
+ }
523
+ async contactRawPayloadParser(payload) {
524
+ // log.silly('PuppetService', 'contactRawPayloadParser({id:%s})', payload.id)
525
+ // passthrough
526
+ return payload;
527
+ }
528
+ async contactSelfName(name) {
529
+ config_js_1.log.verbose('PuppetService', 'contactSelfName(%s)', name);
530
+ const request = new wechaty_grpc_1.puppet.ContactSelfNameRequest();
531
+ request.setName(name);
532
+ await util_1.default.promisify(this.grpcManager.client.contactSelfName
533
+ .bind(this.grpcManager.client))(request);
534
+ }
535
+ async contactSelfQRCode() {
536
+ config_js_1.log.verbose('PuppetService', 'contactSelfQRCode()');
537
+ const response = await util_1.default.promisify(this.grpcManager.client.contactSelfQRCode
538
+ .bind(this.grpcManager.client))(new wechaty_grpc_1.puppet.ContactSelfQRCodeRequest());
539
+ return response.getQrcode();
540
+ }
541
+ async contactSelfSignature(signature) {
542
+ config_js_1.log.verbose('PuppetService', 'contactSelfSignature(%s)', signature);
543
+ const request = new wechaty_grpc_1.puppet.ContactSelfSignatureRequest();
544
+ request.setSignature(signature);
545
+ await util_1.default.promisify(this.grpcManager.client.contactSelfSignature
546
+ .bind(this.grpcManager.client))(request);
547
+ }
548
+ /**
549
+ *
550
+ * Conversation
551
+ *
552
+ */
553
+ conversationReadMark(conversationId, hasRead = true) {
554
+ config_js_1.log.verbose('PuppetService', 'conversationMarkRead(%s, %s)', conversationId, hasRead);
555
+ return PUPPET.throwUnsupportedError('not implemented. See https://github.com/wechaty/wechaty-puppet/pull/132');
556
+ }
557
+ /**
558
+ *
559
+ * Message
560
+ *
561
+ */
562
+ async messageMiniProgram(messageId) {
563
+ config_js_1.log.verbose('PuppetService', 'messageMiniProgram(%s)', messageId);
564
+ const request = new wechaty_grpc_1.puppet.MessageMiniProgramRequest();
565
+ request.setId(messageId);
566
+ const response = await util_1.default.promisify(this.grpcManager.client.messageMiniProgram
567
+ .bind(this.grpcManager.client))(request);
568
+ let miniProgramPayload = response.getMiniProgram()?.toObject();
569
+ if (!miniProgramPayload) {
570
+ /**
571
+ * Deprecated: will be removed after Dec 22, 2022
572
+ */
573
+ const jsonText = response.getMiniProgramDeprecated();
574
+ miniProgramPayload = JSON.parse(jsonText);
575
+ }
576
+ const payload = {
577
+ ...miniProgramPayload,
578
+ };
579
+ return payload;
580
+ }
581
+ async messageLocation(messageId) {
582
+ config_js_1.log.verbose('PuppetService', 'messageLocation(%s)', messageId);
583
+ const request = new wechaty_grpc_1.puppet.MessageLocationRequest();
584
+ request.setId(messageId);
585
+ const response = await util_1.default.promisify(this.grpcManager.client.messageLocation
586
+ .bind(this.grpcManager.client))(request);
587
+ const locationPayload = response.getLocation();
588
+ const payload = {
589
+ accuracy: 0,
590
+ address: 'NOADDRESS',
591
+ latitude: 0,
592
+ longitude: 0,
593
+ name: 'NONAME',
594
+ ...locationPayload,
595
+ };
596
+ return payload;
597
+ }
598
+ async messageImage(messageId, imageType) {
599
+ config_js_1.log.verbose('PuppetService', 'messageImage(%s, %s[%s])', messageId, imageType, PUPPET.types.Image[imageType]);
600
+ try {
601
+ const request = new wechaty_grpc_1.puppet.MessageImageRequest();
602
+ request.setId(messageId);
603
+ request.setType(imageType);
604
+ const response = await util_1.default.promisify(this.grpcManager.client.messageImage
605
+ .bind(this.grpcManager.client))(request);
606
+ const jsonText = response.getFileBox();
607
+ if (jsonText) {
608
+ return this.FileBoxUuid.fromJSON(jsonText);
609
+ }
610
+ }
611
+ catch (e) {
612
+ config_js_1.log.verbose('PuppetService', 'messageImage() rejection %s', e.message);
613
+ }
614
+ {
615
+ // Deprecated. Will be removed after Dec 31, 2022
616
+ const request = new wechaty_grpc_1.puppet.MessageImageStreamRequest();
617
+ request.setId(messageId);
618
+ request.setType(imageType);
619
+ const pbStream = this.grpcManager.client.messageImageStream(request);
620
+ const fileBox = await (0, mod_js_1.unpackFileBoxFromPb)(pbStream);
621
+ // const fileBoxChunkStream = unpackFileBoxChunk(stream)
622
+ // return unpackFileBox(fileBoxChunkStream)
623
+ return fileBox;
624
+ }
625
+ }
626
+ async messageContact(messageId) {
627
+ config_js_1.log.verbose('PuppetService', 'messageContact(%s)', messageId);
628
+ const request = new wechaty_grpc_1.puppet.MessageContactRequest();
629
+ request.setId(messageId);
630
+ const response = await util_1.default.promisify(this.grpcManager.client.messageContact
631
+ .bind(this.grpcManager.client))(request);
632
+ const contactId = response.getId();
633
+ return contactId;
634
+ }
635
+ async messageSendMiniProgram(conversationId, miniProgramPayload) {
636
+ config_js_1.log.verbose('PuppetService', 'messageSendMiniProgram(%s, "%s")', conversationId, JSON.stringify(miniProgramPayload));
637
+ const request = new wechaty_grpc_1.puppet.MessageSendMiniProgramRequest();
638
+ request.setConversationId(conversationId);
639
+ const pbMiniProgramPayload = new wechaty_grpc_1.puppet.MiniProgramPayload();
640
+ if (miniProgramPayload.appid) {
641
+ pbMiniProgramPayload.setAppid(miniProgramPayload.appid);
642
+ }
643
+ if (miniProgramPayload.description) {
644
+ pbMiniProgramPayload.setDescription(miniProgramPayload.description);
645
+ }
646
+ if (miniProgramPayload.iconUrl) {
647
+ pbMiniProgramPayload.setIconUrl(miniProgramPayload.iconUrl);
648
+ }
649
+ if (miniProgramPayload.pagePath) {
650
+ pbMiniProgramPayload.setPagePath(miniProgramPayload.pagePath);
651
+ }
652
+ if (miniProgramPayload.shareId) {
653
+ pbMiniProgramPayload.setShareId(miniProgramPayload.shareId);
654
+ }
655
+ if (miniProgramPayload.thumbKey) {
656
+ pbMiniProgramPayload.setThumbKey(miniProgramPayload.thumbKey);
657
+ }
658
+ if (miniProgramPayload.thumbUrl) {
659
+ pbMiniProgramPayload.setThumbUrl(miniProgramPayload.thumbUrl);
660
+ }
661
+ if (miniProgramPayload.title) {
662
+ pbMiniProgramPayload.setTitle(miniProgramPayload.title);
663
+ }
664
+ if (miniProgramPayload.username) {
665
+ pbMiniProgramPayload.setUsername(miniProgramPayload.username);
666
+ }
667
+ request.setMiniProgram(pbMiniProgramPayload);
668
+ /**
669
+ * Deprecated: will be removed after Dec 31, 2022
670
+ */
671
+ request.setMiniProgramDeprecated(JSON.stringify(miniProgramPayload));
672
+ const response = await util_1.default.promisify(this.grpcManager.client.messageSendMiniProgram
673
+ .bind(this.grpcManager.client))(request);
674
+ const messageId = response.getId();
675
+ if (messageId) {
676
+ return messageId;
677
+ }
678
+ {
679
+ /**
680
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
681
+ */
682
+ const messageIdWrapper = response.getIdStringValueDeprecated();
683
+ if (messageIdWrapper) {
684
+ return messageIdWrapper.getValue();
685
+ }
686
+ }
687
+ }
688
+ async messageSendLocation(conversationId, locationPayload) {
689
+ config_js_1.log.verbose('PuppetService', 'messageSendLocation(%s)', conversationId, JSON.stringify(locationPayload));
690
+ const request = new wechaty_grpc_1.puppet.MessageSendLocationRequest();
691
+ request.setConversationId(conversationId);
692
+ const pbLocationPayload = new wechaty_grpc_1.puppet.LocationPayload();
693
+ pbLocationPayload.setAccuracy(locationPayload.accuracy);
694
+ pbLocationPayload.setAddress(locationPayload.address);
695
+ pbLocationPayload.setLatitude(locationPayload.latitude);
696
+ pbLocationPayload.setLongitude(locationPayload.longitude);
697
+ pbLocationPayload.setName(locationPayload.name);
698
+ request.setLocation(pbLocationPayload);
699
+ const response = await util_1.default.promisify(this.grpcManager.client.messageSendLocation
700
+ .bind(this.grpcManager.client))(request);
701
+ const id = response.getId();
702
+ if (id) {
703
+ return id;
704
+ }
705
+ }
706
+ async messageRecall(messageId) {
707
+ config_js_1.log.verbose('PuppetService', 'messageRecall(%s)', messageId);
708
+ const request = new wechaty_grpc_1.puppet.MessageRecallRequest();
709
+ request.setId(messageId);
710
+ const response = await util_1.default.promisify(this.grpcManager.client.messageRecall
711
+ .bind(this.grpcManager.client))(request);
712
+ return response.getSuccess();
713
+ }
714
+ async messageFile(id) {
715
+ config_js_1.log.verbose('PuppetService', 'messageFile(%s)', id);
716
+ try {
717
+ const request = new wechaty_grpc_1.puppet.MessageFileRequest();
718
+ request.setId(id);
719
+ const response = await util_1.default.promisify(this.grpcManager.client.messageFile
720
+ .bind(this.grpcManager.client))(request);
721
+ const jsonText = response.getFileBox();
722
+ if (jsonText) {
723
+ return this.FileBoxUuid.fromJSON(jsonText);
724
+ }
725
+ }
726
+ catch (e) {
727
+ config_js_1.log.warn('PuppetService', 'messageFile() rejection: %s', e.message);
728
+ config_js_1.log.warn('PuppetService', [
729
+ 'This might because you are using Wechaty v1.x with a Puppet Service v0.x',
730
+ 'Contact your Wechaty Puppet Service provided to report this problem',
731
+ 'Related issues:',
732
+ ' - https://github.com/wechaty/puppet-service/issues/179',
733
+ ' - https://github.com/wechaty/puppet-service/pull/170',
734
+ ].join('\n'));
735
+ }
736
+ {
737
+ // Deprecated. `MessageFileStream` Will be removed after Dec 31, 2022
738
+ const request = new wechaty_grpc_1.puppet.MessageFileStreamRequest();
739
+ request.setId(id);
740
+ const pbStream = this.grpcManager.client.messageFileStream(request);
741
+ // const fileBoxChunkStream = unpackFileBoxChunk(pbStream)
742
+ // return unpackFileBox(fileBoxChunkStream)
743
+ const fileBox = await (0, mod_js_1.unpackFileBoxFromPb)(pbStream);
744
+ return fileBox;
745
+ }
746
+ }
747
+ async messageForward(conversationId, messageId) {
748
+ config_js_1.log.verbose('PuppetService', 'messageForward(%s, %s)', conversationId, messageId);
749
+ const request = new wechaty_grpc_1.puppet.MessageForwardRequest();
750
+ request.setConversationId(conversationId);
751
+ request.setMessageId(messageId);
752
+ const response = await util_1.default.promisify(this.grpcManager.client.messageForward
753
+ .bind(this.grpcManager.client))(request);
754
+ const forwardedMessageId = response.getId();
755
+ if (forwardedMessageId) {
756
+ return forwardedMessageId;
757
+ }
758
+ {
759
+ /**
760
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
761
+ */
762
+ const messageIdWrapper = response.getIdStringValueDeprecated();
763
+ if (messageIdWrapper) {
764
+ return messageIdWrapper.getValue();
765
+ }
766
+ }
767
+ }
768
+ async messageRawPayload(id) {
769
+ config_js_1.log.verbose('PuppetService', 'messageRawPayload(%s)', id);
770
+ // const cachedPayload = await this.payloadStore.message?.get(id)
771
+ // if (cachedPayload) {
772
+ // log.silly('PuppetService', 'messageRawPayload(%s) cache HIT', id)
773
+ // return cachedPayload
774
+ // }
775
+ const request = new wechaty_grpc_1.puppet.MessagePayloadRequest();
776
+ request.setId(id);
777
+ const response = await util_1.default.promisify(this.grpcManager.client.messagePayload
778
+ .bind(this.grpcManager.client))(request);
779
+ let timestamp;
780
+ const receiveTime = response.getReceiveTime();
781
+ if (receiveTime) {
782
+ timestamp = (0, timestamp_js_1.millisecondsFromTimestamp)(receiveTime);
783
+ }
784
+ else {
785
+ // Deprecated: will be removed after Dec 31, 2022
786
+ timestamp = response.getTimestampDeprecated();
787
+ }
788
+ const payload = {
789
+ filename: response.getFilename(),
790
+ id: response.getId(),
791
+ listenerId: response.getListenerId(),
792
+ mentionIdList: response.getMentionIdsList(),
793
+ roomId: response.getRoomId(),
794
+ talkerId: response.getTalkerId(),
795
+ text: response.getText(),
796
+ timestamp,
797
+ type: response.getType(),
798
+ };
799
+ // log.silly('PuppetService', 'messageRawPayload(%s) cache SET', id)
800
+ // await this.payloadStore.message?.set(id, payload)
801
+ return payload;
802
+ }
803
+ async messageRawPayloadParser(payload) {
804
+ // log.silly('PuppetService', 'messagePayload({id:%s})', payload.id)
805
+ // passthrough
806
+ return payload;
807
+ }
808
+ async messageSendText(conversationId, text, mentionIdList) {
809
+ config_js_1.log.verbose('PuppetService', 'messageSend(%s, %s)', conversationId, text);
810
+ const request = new wechaty_grpc_1.puppet.MessageSendTextRequest();
811
+ request.setConversationId(conversationId);
812
+ request.setText(text);
813
+ if (typeof mentionIdList !== 'undefined') {
814
+ request.setMentionalIdsList(mentionIdList);
815
+ }
816
+ const response = await util_1.default.promisify(this.grpcManager.client.messageSendText
817
+ .bind(this.grpcManager.client))(request);
818
+ const messageId = response.getId();
819
+ if (messageId) {
820
+ return messageId;
821
+ }
822
+ {
823
+ /**
824
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
825
+ */
826
+ const messageIdWrapper = response.getIdStringValueDeprecated();
827
+ if (messageIdWrapper) {
828
+ return messageIdWrapper.getValue();
829
+ }
830
+ }
831
+ }
832
+ async messageSendFile(conversationId, fileBox) {
833
+ config_js_1.log.verbose('PuppetService', 'messageSendFile(%s, %s)', conversationId, fileBox);
834
+ try {
835
+ const request = new wechaty_grpc_1.puppet.MessageSendFileRequest();
836
+ request.setConversationId(conversationId);
837
+ const serializedFileBox = await this.serializeFileBox(fileBox);
838
+ request.setFileBox(serializedFileBox);
839
+ const response = await util_1.default.promisify(this.grpcManager.client.messageSendFile
840
+ .bind(this.grpcManager.client))(request);
841
+ const messageId = response.getId();
842
+ if (messageId) {
843
+ return messageId;
844
+ }
845
+ else {
846
+ /**
847
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
848
+ */
849
+ const messageIdWrapper = response.getIdStringValueDeprecated();
850
+ if (messageIdWrapper) {
851
+ return messageIdWrapper.getValue();
852
+ }
853
+ }
854
+ return; // void
855
+ }
856
+ catch (e) {
857
+ config_js_1.log.verbose('PuppetService', 'messageSendFile() rejection: %s', e.message);
858
+ }
859
+ /**
860
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
861
+ * The old server will not support `Upload` gRPC method,
862
+ * which I'm expecting the above code will throw a exception,
863
+ * then the below code will be executed.
864
+ */
865
+ return this.messageSendFileStream(conversationId, fileBox);
866
+ }
867
+ async messageSendContact(conversationId, contactId) {
868
+ config_js_1.log.verbose('PuppetService', 'messageSend("%s", %s)', conversationId, contactId);
869
+ const request = new wechaty_grpc_1.puppet.MessageSendContactRequest();
870
+ request.setConversationId(conversationId);
871
+ request.setContactId(contactId);
872
+ const response = await util_1.default.promisify(this.grpcManager.client.messageSendContact
873
+ .bind(this.grpcManager.client))(request);
874
+ const messageId = response.getId();
875
+ if (messageId) {
876
+ return messageId;
877
+ }
878
+ {
879
+ /**
880
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
881
+ */
882
+ const messageIdWrapper = response.getIdStringValueDeprecated();
883
+ if (messageIdWrapper) {
884
+ return messageIdWrapper.getValue();
885
+ }
886
+ }
887
+ }
888
+ async messageSendUrl(conversationId, urlLinkPayload) {
889
+ config_js_1.log.verbose('PuppetService', 'messageSendUrl("%s", %s)', conversationId, JSON.stringify(urlLinkPayload));
890
+ const request = new wechaty_grpc_1.puppet.MessageSendUrlRequest();
891
+ request.setConversationId(conversationId);
892
+ const pbUrlLinkPayload = new wechaty_grpc_1.puppet.UrlLinkPayload();
893
+ pbUrlLinkPayload.setUrl(urlLinkPayload.url);
894
+ pbUrlLinkPayload.setTitle(urlLinkPayload.title);
895
+ if (urlLinkPayload.description) {
896
+ pbUrlLinkPayload.setDescription(urlLinkPayload.description);
897
+ }
898
+ if (urlLinkPayload.thumbnailUrl) {
899
+ pbUrlLinkPayload.setThumbnailUrl(urlLinkPayload.thumbnailUrl);
900
+ }
901
+ request.setUrlLink(pbUrlLinkPayload);
902
+ // Deprecated: will be removed after Dec 31, 2022
903
+ request.setUrlLinkDeprecated(JSON.stringify(urlLinkPayload));
904
+ const response = await util_1.default.promisify(this.grpcManager.client.messageSendUrl
905
+ .bind(this.grpcManager.client))(request);
906
+ const messageId = response.getId();
907
+ if (messageId) {
908
+ return messageId;
909
+ }
910
+ {
911
+ /**
912
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
913
+ */
914
+ const messageIdWrapper = response.getIdStringValueDeprecated();
915
+ if (messageIdWrapper) {
916
+ return messageIdWrapper.getValue();
917
+ }
918
+ }
919
+ }
920
+ async messageUrl(messageId) {
921
+ config_js_1.log.verbose('PuppetService', 'messageUrl(%s)', messageId);
922
+ const request = new wechaty_grpc_1.puppet.MessageUrlRequest();
923
+ request.setId(messageId);
924
+ const response = await util_1.default.promisify(this.grpcManager.client.messageUrl
925
+ .bind(this.grpcManager.client))(request);
926
+ let pbUrlLinkPayload = response.getUrlLink()?.toObject();
927
+ if (!pbUrlLinkPayload) {
928
+ // Deprecated: will be removed after Dec 31, 2022
929
+ const jsonText = response.getUrlLinkDeprecated();
930
+ pbUrlLinkPayload = JSON.parse(jsonText);
931
+ }
932
+ const payload = {
933
+ title: 'NOTITLE',
934
+ url: 'NOURL',
935
+ ...pbUrlLinkPayload,
936
+ };
937
+ return payload;
938
+ }
939
+ /**
940
+ *
941
+ * Room
942
+ *
943
+ */
944
+ async roomRawPayload(id) {
945
+ config_js_1.log.verbose('PuppetService', 'roomRawPayload(%s)', id);
946
+ const cachedPayload = await this._payloadStore.room?.get(id);
947
+ if (cachedPayload) {
948
+ config_js_1.log.silly('PuppetService', 'roomRawPayload(%s) cache HIT', id);
949
+ return cachedPayload;
950
+ }
951
+ const request = new wechaty_grpc_1.puppet.RoomPayloadRequest();
952
+ request.setId(id);
953
+ const response = await util_1.default.promisify(this.grpcManager.client.roomPayload
954
+ .bind(this.grpcManager.client))(request);
955
+ const payload = {
956
+ adminIdList: response.getAdminIdsList(),
957
+ avatar: response.getAvatar(),
958
+ handle: response.getHandle(),
959
+ id: response.getId(),
960
+ memberIdList: response.getMemberIdsList(),
961
+ ownerId: response.getOwnerId(),
962
+ topic: response.getTopic(),
963
+ };
964
+ await this._payloadStore.room?.set(id, payload);
965
+ config_js_1.log.silly('PuppetService', 'roomRawPayload(%s) cache SET', id);
966
+ return payload;
967
+ }
968
+ async roomRawPayloadParser(payload) {
969
+ // log.silly('PuppetService', 'roomRawPayloadParser({id:%s})', payload.id)
970
+ // passthrough
971
+ return payload;
972
+ }
973
+ async roomList() {
974
+ config_js_1.log.verbose('PuppetService', 'roomList()');
975
+ const response = await util_1.default.promisify(this.grpcManager.client.roomList
976
+ .bind(this.grpcManager.client))(new wechaty_grpc_1.puppet.RoomListRequest());
977
+ return response.getIdsList();
978
+ }
979
+ async roomDel(roomId, contactId) {
980
+ config_js_1.log.verbose('PuppetService', 'roomDel(%s, %s)', roomId, contactId);
981
+ const request = new wechaty_grpc_1.puppet.RoomDelRequest();
982
+ request.setId(roomId);
983
+ request.setContactId(contactId);
984
+ await util_1.default.promisify(this.grpcManager.client.roomDel
985
+ .bind(this.grpcManager.client))(request);
986
+ }
987
+ async roomAvatar(roomId) {
988
+ config_js_1.log.verbose('PuppetService', 'roomAvatar(%s)', roomId);
989
+ const request = new wechaty_grpc_1.puppet.RoomAvatarRequest();
990
+ request.setId(roomId);
991
+ const response = await util_1.default.promisify(this.grpcManager.client.roomAvatar
992
+ .bind(this.grpcManager.client))(request);
993
+ const jsonText = response.getFileBox();
994
+ return this.FileBoxUuid.fromJSON(jsonText);
995
+ }
996
+ async roomAdd(roomId, contactId, inviteOnly) {
997
+ config_js_1.log.verbose('PuppetService', 'roomAdd(%s, %s)', roomId, contactId);
998
+ const request = new wechaty_grpc_1.puppet.RoomAddRequest();
999
+ request.setId(roomId);
1000
+ request.setContactId(contactId);
1001
+ request.setInviteOnly(inviteOnly);
1002
+ await util_1.default.promisify(this.grpcManager.client.roomAdd
1003
+ .bind(this.grpcManager.client))(request);
1004
+ }
1005
+ async roomTopic(roomId, topic) {
1006
+ config_js_1.log.verbose('PuppetService', 'roomTopic(%s, %s)', roomId, topic);
1007
+ /**
1008
+ * Get
1009
+ */
1010
+ if (typeof topic === 'undefined') {
1011
+ const request = new wechaty_grpc_1.puppet.RoomTopicRequest();
1012
+ request.setId(roomId);
1013
+ const response = await util_1.default.promisify(this.grpcManager.client.roomTopic
1014
+ .bind(this.grpcManager.client))(request);
1015
+ const result = response.getTopic();
1016
+ if (result) {
1017
+ return result;
1018
+ }
1019
+ {
1020
+ // DEPRECATED, will be removed after Dec 31, 2022
1021
+ const topicWrapper = response.getTopicStringValueDeprecated();
1022
+ if (topicWrapper) {
1023
+ return topicWrapper.getValue();
1024
+ }
1025
+ }
1026
+ return '';
1027
+ }
1028
+ /**
1029
+ * Set
1030
+ */
1031
+ const request = new wechaty_grpc_1.puppet.RoomTopicRequest();
1032
+ request.setId(roomId);
1033
+ request.setTopic(topic);
1034
+ {
1035
+ // DEPRECATED, will be removed after Dec 31, 2022
1036
+ const topicWrapper = new wechaty_grpc_1.StringValue();
1037
+ topicWrapper.setValue(topic);
1038
+ request.setTopicStringValueDeprecated(topicWrapper);
1039
+ }
1040
+ await util_1.default.promisify(this.grpcManager.client.roomTopic
1041
+ .bind(this.grpcManager.client))(request);
1042
+ }
1043
+ async roomCreate(contactIdList, topic) {
1044
+ config_js_1.log.verbose('PuppetService', 'roomCreate(%s, %s)', contactIdList, topic);
1045
+ const request = new wechaty_grpc_1.puppet.RoomCreateRequest();
1046
+ request.setContactIdsList(contactIdList);
1047
+ request.setTopic(topic);
1048
+ const response = await util_1.default.promisify(this.grpcManager.client.roomCreate
1049
+ .bind(this.grpcManager.client))(request);
1050
+ return response.getId();
1051
+ }
1052
+ async roomQuit(roomId) {
1053
+ config_js_1.log.verbose('PuppetService', 'roomQuit(%s)', roomId);
1054
+ const request = new wechaty_grpc_1.puppet.RoomQuitRequest();
1055
+ request.setId(roomId);
1056
+ await util_1.default.promisify(this.grpcManager.client.roomQuit
1057
+ .bind(this.grpcManager.client))(request);
1058
+ }
1059
+ async roomQRCode(roomId) {
1060
+ config_js_1.log.verbose('PuppetService', 'roomQRCode(%s)', roomId);
1061
+ const request = new wechaty_grpc_1.puppet.RoomQRCodeRequest();
1062
+ request.setId(roomId);
1063
+ const response = await util_1.default.promisify(this.grpcManager.client.roomQRCode
1064
+ .bind(this.grpcManager.client))(request);
1065
+ return response.getQrcode();
1066
+ }
1067
+ async roomMemberList(roomId) {
1068
+ config_js_1.log.verbose('PuppetService', 'roomMemberList(%s)', roomId);
1069
+ const request = new wechaty_grpc_1.puppet.RoomMemberListRequest();
1070
+ request.setId(roomId);
1071
+ const response = await util_1.default.promisify(this.grpcManager.client.roomMemberList
1072
+ .bind(this.grpcManager.client))(request);
1073
+ return response.getMemberIdsList();
1074
+ }
1075
+ async roomMemberRawPayload(roomId, contactId) {
1076
+ config_js_1.log.verbose('PuppetService', 'roomMemberRawPayload(%s, %s)', roomId, contactId);
1077
+ const cachedPayload = await this._payloadStore.roomMember?.get(roomId);
1078
+ const cachedRoomMemberPayload = cachedPayload && cachedPayload[contactId];
1079
+ if (cachedRoomMemberPayload) {
1080
+ config_js_1.log.silly('PuppetService', 'roomMemberRawPayload(%s, %s) cache HIT', roomId, contactId);
1081
+ return cachedRoomMemberPayload;
1082
+ }
1083
+ const request = new wechaty_grpc_1.puppet.RoomMemberPayloadRequest();
1084
+ request.setId(roomId);
1085
+ request.setMemberId(contactId);
1086
+ const response = await util_1.default.promisify(this.grpcManager.client.roomMemberPayload
1087
+ .bind(this.grpcManager.client))(request);
1088
+ const payload = {
1089
+ avatar: response.getAvatar(),
1090
+ id: response.getId(),
1091
+ inviterId: response.getInviterId(),
1092
+ name: response.getName(),
1093
+ roomAlias: response.getRoomAlias(),
1094
+ };
1095
+ await this._payloadStore.roomMember?.set(roomId, {
1096
+ ...cachedPayload,
1097
+ [contactId]: payload,
1098
+ });
1099
+ config_js_1.log.silly('PuppetService', 'roomMemberRawPayload(%s, %s) cache SET', roomId, contactId);
1100
+ return payload;
1101
+ }
1102
+ async roomMemberRawPayloadParser(payload) {
1103
+ // log.silly('PuppetService', 'roomMemberRawPayloadParser({id:%s})', payload.id)
1104
+ // passthrough
1105
+ return payload;
1106
+ }
1107
+ async roomAnnounce(roomId, text) {
1108
+ config_js_1.log.verbose('PuppetService', 'roomAnnounce(%s%s)', roomId, typeof text === 'undefined'
1109
+ ? ''
1110
+ : `, ${text}`);
1111
+ /**
1112
+ * Set
1113
+ */
1114
+ if (text) {
1115
+ const request = new wechaty_grpc_1.puppet.RoomAnnounceRequest();
1116
+ request.setId(roomId);
1117
+ request.setText(text);
1118
+ {
1119
+ // DEPRECATED, will be removed after Dec 31, 2022
1120
+ const textWrapper = new wechaty_grpc_1.StringValue();
1121
+ textWrapper.setValue(text);
1122
+ request.setTextStringValueDeprecated(textWrapper);
1123
+ }
1124
+ await util_1.default.promisify(this.grpcManager.client.roomAnnounce
1125
+ .bind(this.grpcManager.client))(request);
1126
+ return;
1127
+ }
1128
+ /**
1129
+ * Get
1130
+ */
1131
+ const request = new wechaty_grpc_1.puppet.RoomAnnounceRequest();
1132
+ request.setId(roomId);
1133
+ const response = await util_1.default.promisify(this.grpcManager.client.roomAnnounce
1134
+ .bind(this.grpcManager.client))(request);
1135
+ const result = response.getText();
1136
+ if (result) {
1137
+ return result;
1138
+ }
1139
+ {
1140
+ // DEPRECATED, will be removed after Dec 31, 2022
1141
+ const textWrapper = response.getTextStringValueDeprecated();
1142
+ if (textWrapper) {
1143
+ return textWrapper.getValue();
1144
+ }
1145
+ }
1146
+ return '';
1147
+ }
1148
+ async roomInvitationAccept(roomInvitationId) {
1149
+ config_js_1.log.verbose('PuppetService', 'roomInvitationAccept(%s)', roomInvitationId);
1150
+ const request = new wechaty_grpc_1.puppet.RoomInvitationAcceptRequest();
1151
+ request.setId(roomInvitationId);
1152
+ await util_1.default.promisify(this.grpcManager.client.roomInvitationAccept
1153
+ .bind(this.grpcManager.client))(request);
1154
+ }
1155
+ async roomInvitationRawPayload(id) {
1156
+ config_js_1.log.verbose('PuppetService', 'roomInvitationRawPayload(%s)', id);
1157
+ const request = new wechaty_grpc_1.puppet.RoomInvitationPayloadRequest();
1158
+ request.setId(id);
1159
+ const response = await util_1.default.promisify(this.grpcManager.client.roomInvitationPayload
1160
+ .bind(this.grpcManager.client))(request);
1161
+ let timestamp;
1162
+ const receiveTime = response.getReceiveTime();
1163
+ if (receiveTime) {
1164
+ timestamp = (0, timestamp_js_1.millisecondsFromTimestamp)(receiveTime);
1165
+ }
1166
+ {
1167
+ // Deprecated: will be removed after Dec 31, 2022
1168
+ const deprecated = true;
1169
+ void deprecated;
1170
+ if (!receiveTime) {
1171
+ timestamp = response.getTimestampUint64Deprecated();
1172
+ }
1173
+ }
1174
+ // FIXME: how to set it better?
1175
+ timestamp ??= 0;
1176
+ const payload = {
1177
+ avatar: response.getAvatar(),
1178
+ id: response.getId(),
1179
+ invitation: response.getInvitation(),
1180
+ inviterId: response.getInviterId(),
1181
+ memberCount: response.getMemberCount(),
1182
+ memberIdList: response.getMemberIdsList(),
1183
+ receiverId: response.getReceiverId(),
1184
+ timestamp,
1185
+ topic: response.getTopic(),
1186
+ };
1187
+ return payload;
1188
+ }
1189
+ async roomInvitationRawPayloadParser(payload) {
1190
+ // log.silly('PuppetService', 'roomInvitationRawPayloadParser({id:%s})', payload.id)
1191
+ // passthrough
1192
+ return payload;
1193
+ }
1194
+ /**
1195
+ *
1196
+ * Friendship
1197
+ *
1198
+ */
1199
+ async friendshipSearchPhone(phone) {
1200
+ config_js_1.log.verbose('PuppetService', 'friendshipSearchPhone(%s)', phone);
1201
+ const request = new wechaty_grpc_1.puppet.FriendshipSearchPhoneRequest();
1202
+ request.setPhone(phone);
1203
+ const response = await util_1.default.promisify(this.grpcManager.client.friendshipSearchPhone
1204
+ .bind(this.grpcManager.client))(request);
1205
+ const contactId = response.getContactId();
1206
+ if (contactId) {
1207
+ return contactId;
1208
+ }
1209
+ {
1210
+ // DEPRECATED, will be removed after Dec 31, 2022
1211
+ const contactIdWrapper = response.getContactIdStringValueDeprecated();
1212
+ if (contactIdWrapper) {
1213
+ return contactIdWrapper.getValue();
1214
+ }
1215
+ }
1216
+ return null;
1217
+ }
1218
+ async friendshipSearchHandle(handle) {
1219
+ config_js_1.log.verbose('PuppetService', 'friendshipSearchHandle(%s)', handle);
1220
+ const request = new wechaty_grpc_1.puppet.FriendshipSearchHandleRequest();
1221
+ /**
1222
+ * TODO: use `setHandle()` in v2.0.0
1223
+ * @link https://github.com/wechaty/grpc/issues/174
1224
+ */
1225
+ request.setWeixin(handle);
1226
+ const response = await util_1.default.promisify(this.grpcManager.client.friendshipSearchHandle
1227
+ .bind(this.grpcManager.client))(request);
1228
+ const contactId = response.getContactId();
1229
+ if (contactId) {
1230
+ return contactId;
1231
+ }
1232
+ {
1233
+ // DEPRECATED, will be removed after Dec 31, 2022
1234
+ const contactIdWrapper = response.getContactIdStringValueDeprecated();
1235
+ if (contactIdWrapper) {
1236
+ return contactIdWrapper.getValue();
1237
+ }
1238
+ }
1239
+ return null;
1240
+ }
1241
+ async friendshipRawPayload(id) {
1242
+ config_js_1.log.verbose('PuppetService', 'friendshipRawPayload(%s)', id);
1243
+ const request = new wechaty_grpc_1.puppet.FriendshipPayloadRequest();
1244
+ request.setId(id);
1245
+ const response = await util_1.default.promisify(this.grpcManager.client.friendshipPayload
1246
+ .bind(this.grpcManager.client))(request);
1247
+ const payload = {
1248
+ contactId: response.getContactId(),
1249
+ hello: response.getHello(),
1250
+ id,
1251
+ scene: response.getScene(),
1252
+ stranger: response.getStranger(),
1253
+ ticket: response.getTicket(),
1254
+ type: response.getType(),
1255
+ }; // FIXME: Huan(202002)
1256
+ return payload;
1257
+ }
1258
+ async friendshipRawPayloadParser(payload) {
1259
+ // log.silly('PuppetService', 'friendshipRawPayloadParser({id:%s})', payload.id)
1260
+ // passthrough
1261
+ return payload;
1262
+ }
1263
+ async friendshipAdd(contactId, options) {
1264
+ config_js_1.log.verbose('PuppetService', 'friendshipAdd(%s, %s)', contactId, JSON.stringify(options));
1265
+ const request = new wechaty_grpc_1.puppet.FriendshipAddRequest();
1266
+ request.setContactId(contactId);
1267
+ // FIXME: for backward compatibility, need to be removed after all puppet has updated.
1268
+ if (typeof options === 'string') {
1269
+ request.setHello(options);
1270
+ }
1271
+ else {
1272
+ request.setHello(options.hello);
1273
+ const referrer = new wechaty_grpc_1.puppet.Referrer();
1274
+ if (options.contactId) {
1275
+ referrer.setContactId(options.contactId);
1276
+ }
1277
+ if (options.roomId) {
1278
+ referrer.setRoomId(options.roomId);
1279
+ }
1280
+ request.setReferrer(referrer);
1281
+ {
1282
+ // Deprecated: will be removed after Dec 31, 2022
1283
+ const contactIdWrapper = new wechaty_grpc_1.StringValue();
1284
+ contactIdWrapper.setValue(options.contactId || '');
1285
+ const roomIdWrapper = new wechaty_grpc_1.StringValue();
1286
+ roomIdWrapper.setValue(options.roomId || '');
1287
+ request.setSourceRoomIdStringValueDeprecated(roomIdWrapper);
1288
+ request.setSourceContactIdStringValueDeprecated(contactIdWrapper);
1289
+ }
1290
+ }
1291
+ await util_1.default.promisify(this.grpcManager.client.friendshipAdd
1292
+ .bind(this.grpcManager.client))(request);
1293
+ }
1294
+ async friendshipAccept(friendshipId) {
1295
+ config_js_1.log.verbose('PuppetService', 'friendshipAccept(%s)', friendshipId);
1296
+ const request = new wechaty_grpc_1.puppet.FriendshipAcceptRequest();
1297
+ request.setId(friendshipId);
1298
+ await util_1.default.promisify(this.grpcManager.client.friendshipAccept
1299
+ .bind(this.grpcManager.client))(request);
1300
+ }
1301
+ /**
1302
+ *
1303
+ * Tag
1304
+ *
1305
+ */
1306
+ // add a tag for a Contact. Create it first if it not exist.
1307
+ async tagContactAdd(id, contactId) {
1308
+ config_js_1.log.verbose('PuppetService', 'tagContactAdd(%s, %s)', id, contactId);
1309
+ const request = new wechaty_grpc_1.puppet.TagContactAddRequest();
1310
+ request.setId(id);
1311
+ request.setContactId(contactId);
1312
+ await util_1.default.promisify(this.grpcManager.client.tagContactAdd
1313
+ .bind(this.grpcManager.client))(request);
1314
+ }
1315
+ // remove a tag from the Contact
1316
+ async tagContactRemove(id, contactId) {
1317
+ config_js_1.log.verbose('PuppetService', 'tagContactRemove(%s, %s)', id, contactId);
1318
+ const request = new wechaty_grpc_1.puppet.TagContactRemoveRequest();
1319
+ request.setId(id);
1320
+ request.setContactId(contactId);
1321
+ await util_1.default.promisify(this.grpcManager.client.tagContactRemove
1322
+ .bind(this.grpcManager.client))(request);
1323
+ }
1324
+ // delete a tag from Wechat
1325
+ async tagContactDelete(id) {
1326
+ config_js_1.log.verbose('PuppetService', 'tagContactDelete(%s)', id);
1327
+ const request = new wechaty_grpc_1.puppet.TagContactDeleteRequest();
1328
+ request.setId(id);
1329
+ await util_1.default.promisify(this.grpcManager.client.tagContactDelete
1330
+ .bind(this.grpcManager.client))(request);
1331
+ }
1332
+ // get tags from a specific Contact
1333
+ async tagContactList(contactId) {
1334
+ config_js_1.log.verbose('PuppetService', 'tagContactList(%s)', contactId);
1335
+ const request = new wechaty_grpc_1.puppet.TagContactListRequest();
1336
+ if (typeof contactId !== 'undefined') {
1337
+ request.setContactId(contactId);
1338
+ {
1339
+ /**
1340
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
1341
+ */
1342
+ const contactIdWrapper = new wechaty_grpc_1.StringValue();
1343
+ contactIdWrapper.setValue(contactId);
1344
+ request.setContactIdStringValueDeprecated(contactIdWrapper);
1345
+ }
1346
+ }
1347
+ const response = await util_1.default.promisify(this.grpcManager.client.tagContactList
1348
+ .bind(this.grpcManager.client))(request);
1349
+ return response.getIdsList();
1350
+ }
1351
+ /**
1352
+ * @deprecated Will be removed in v2.0
1353
+ */
1354
+ async messageSendFileStream(conversationId, file) {
1355
+ const request = await (0, mod_js_1.packConversationIdFileBoxToPb)(wechaty_grpc_1.puppet.MessageSendFileStreamRequest)(conversationId, file);
1356
+ const response = await new Promise((resolve, reject) => {
1357
+ const stream = this.grpcManager.client.messageSendFileStream((err, response) => {
1358
+ if (err) {
1359
+ reject(err);
1360
+ }
1361
+ else {
1362
+ resolve(response);
1363
+ }
1364
+ });
1365
+ request.pipe(stream); // Huan(202203): FIXME: as unknown as
1366
+ });
1367
+ const messageId = response.getId();
1368
+ if (messageId) {
1369
+ return messageId;
1370
+ }
1371
+ {
1372
+ /**
1373
+ * Huan(202110): Deprecated: will be removed after Dec 31, 2022
1374
+ */
1375
+ const messageIdWrapper = response.getIdStringValueDeprecated();
1376
+ if (messageIdWrapper) {
1377
+ return messageIdWrapper.getValue();
1378
+ }
1379
+ }
1380
+ }
1381
+ }
1382
+ exports.PuppetService = PuppetService;
1383
+ exports.default = PuppetService;
1384
+ //# sourceMappingURL=puppet-service.js.map