@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.
- package/LICENSE +201 -0
- package/README.md +166 -0
- package/dist/cjs/examples/ding-dong-bot.d.ts +2 -0
- package/dist/cjs/examples/ding-dong-bot.d.ts.map +1 -0
- package/dist/cjs/examples/ding-dong-bot.js +156 -0
- package/dist/cjs/examples/ding-dong-bot.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/src/auth/auth-impl-token.d.ts +4 -0
- package/dist/cjs/src/auth/auth-impl-token.d.ts.map +1 -0
- package/dist/cjs/src/auth/auth-impl-token.js +81 -0
- package/dist/cjs/src/auth/auth-impl-token.js.map +1 -0
- package/dist/cjs/src/auth/auth-impl-token.spec.d.ts +3 -0
- package/dist/cjs/src/auth/auth-impl-token.spec.d.ts.map +1 -0
- package/dist/cjs/src/auth/auth-impl-token.spec.js +65 -0
- package/dist/cjs/src/auth/auth-impl-token.spec.js.map +1 -0
- package/dist/cjs/src/auth/ca.d.ts +46 -0
- package/dist/cjs/src/auth/ca.d.ts.map +1 -0
- package/dist/cjs/src/auth/ca.js +135 -0
- package/dist/cjs/src/auth/ca.js.map +1 -0
- package/dist/cjs/src/auth/ca.spec.d.ts +3 -0
- package/dist/cjs/src/auth/ca.spec.d.ts.map +1 -0
- package/dist/cjs/src/auth/ca.spec.js +115 -0
- package/dist/cjs/src/auth/ca.spec.js.map +1 -0
- package/dist/cjs/src/auth/call-cred.d.ts +9 -0
- package/dist/cjs/src/auth/call-cred.d.ts.map +1 -0
- package/dist/cjs/src/auth/call-cred.js +17 -0
- package/dist/cjs/src/auth/call-cred.js.map +1 -0
- package/dist/cjs/src/auth/call-cred.spec.d.ts +3 -0
- package/dist/cjs/src/auth/call-cred.spec.d.ts.map +1 -0
- package/dist/cjs/src/auth/call-cred.spec.js +18 -0
- package/dist/cjs/src/auth/call-cred.spec.js.map +1 -0
- package/dist/cjs/src/auth/env-vars.d.ts +13 -0
- package/dist/cjs/src/auth/env-vars.d.ts.map +1 -0
- package/dist/cjs/src/auth/env-vars.js +29 -0
- package/dist/cjs/src/auth/env-vars.js.map +1 -0
- package/dist/cjs/src/auth/grpc-js.d.ts +7 -0
- package/dist/cjs/src/auth/grpc-js.d.ts.map +1 -0
- package/dist/cjs/src/auth/grpc-js.js +10 -0
- package/dist/cjs/src/auth/grpc-js.js.map +1 -0
- package/dist/cjs/src/auth/mod.d.ts +5 -0
- package/dist/cjs/src/auth/mod.d.ts.map +1 -0
- package/dist/cjs/src/auth/mod.js +10 -0
- package/dist/cjs/src/auth/mod.js.map +1 -0
- package/dist/cjs/src/auth/mokey-patch-header-authorization.d.ts +11 -0
- package/dist/cjs/src/auth/mokey-patch-header-authorization.d.ts.map +1 -0
- package/dist/cjs/src/auth/mokey-patch-header-authorization.js +32 -0
- package/dist/cjs/src/auth/mokey-patch-header-authorization.js.map +1 -0
- package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.d.ts +3 -0
- package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.d.ts.map +1 -0
- package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.js +19 -0
- package/dist/cjs/src/auth/monkey-patch-header-authorization.spec.js.map +1 -0
- package/dist/cjs/src/client/duck/actions.d.ts +6 -0
- package/dist/cjs/src/client/duck/actions.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/actions.js +54 -0
- package/dist/cjs/src/client/duck/actions.js.map +1 -0
- package/dist/cjs/src/client/duck/epic-recover.d.ts +36 -0
- package/dist/cjs/src/client/duck/epic-recover.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/epic-recover.js +41 -0
- package/dist/cjs/src/client/duck/epic-recover.js.map +1 -0
- package/dist/cjs/src/client/duck/epic-recover.spec.d.ts +3 -0
- package/dist/cjs/src/client/duck/epic-recover.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/epic-recover.spec.js +131 -0
- package/dist/cjs/src/client/duck/epic-recover.spec.js.map +1 -0
- package/dist/cjs/src/client/duck/epics.d.ts +4 -0
- package/dist/cjs/src/client/duck/epics.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/epics.js +36 -0
- package/dist/cjs/src/client/duck/epics.js.map +1 -0
- package/dist/cjs/src/client/duck/mod.d.ts +29 -0
- package/dist/cjs/src/client/duck/mod.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/mod.js +63 -0
- package/dist/cjs/src/client/duck/mod.js.map +1 -0
- package/dist/cjs/src/client/duck/operations.d.ts +23 -0
- package/dist/cjs/src/client/duck/operations.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/operations.js +30 -0
- package/dist/cjs/src/client/duck/operations.js.map +1 -0
- package/dist/cjs/src/client/duck/reducers.d.ts +59 -0
- package/dist/cjs/src/client/duck/reducers.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/reducers.js +51 -0
- package/dist/cjs/src/client/duck/reducers.js.map +1 -0
- package/dist/cjs/src/client/duck/selectors.d.ts +21 -0
- package/dist/cjs/src/client/duck/selectors.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/selectors.js +23 -0
- package/dist/cjs/src/client/duck/selectors.js.map +1 -0
- package/dist/cjs/src/client/duck/tests.spec.d.ts +3 -0
- package/dist/cjs/src/client/duck/tests.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/tests.spec.js +49 -0
- package/dist/cjs/src/client/duck/tests.spec.js.map +1 -0
- package/dist/cjs/src/client/duck/types.d.ts +21 -0
- package/dist/cjs/src/client/duck/types.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/types.js +24 -0
- package/dist/cjs/src/client/duck/types.js.map +1 -0
- package/dist/cjs/src/client/duck/utils.d.ts +21 -0
- package/dist/cjs/src/client/duck/utils.d.ts.map +1 -0
- package/dist/cjs/src/client/duck/utils.js +3 -0
- package/dist/cjs/src/client/duck/utils.js.map +1 -0
- package/dist/cjs/src/client/grpc-manager.d.ts +29 -0
- package/dist/cjs/src/client/grpc-manager.d.ts.map +1 -0
- package/dist/cjs/src/client/grpc-manager.js +359 -0
- package/dist/cjs/src/client/grpc-manager.js.map +1 -0
- package/dist/cjs/src/client/grpc-manager.spec.d.ts +3 -0
- package/dist/cjs/src/client/grpc-manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/grpc-manager.spec.js +19 -0
- package/dist/cjs/src/client/grpc-manager.spec.js.map +1 -0
- package/dist/cjs/src/client/payload-store.d.ts +26 -0
- package/dist/cjs/src/client/payload-store.d.ts.map +1 -0
- package/dist/cjs/src/client/payload-store.js +118 -0
- package/dist/cjs/src/client/payload-store.js.map +1 -0
- package/dist/cjs/src/client/payload-store.spec.d.ts +3 -0
- package/dist/cjs/src/client/payload-store.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/payload-store.spec.js +17 -0
- package/dist/cjs/src/client/payload-store.spec.js.map +1 -0
- package/dist/cjs/src/client/puppet-service.d.ts +161 -0
- package/dist/cjs/src/client/puppet-service.d.ts.map +1 -0
- package/dist/cjs/src/client/puppet-service.js +1384 -0
- package/dist/cjs/src/client/puppet-service.js.map +1 -0
- package/dist/cjs/src/client/puppet-service.spec.d.ts +3 -0
- package/dist/cjs/src/client/puppet-service.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/puppet-service.spec.js +55 -0
- package/dist/cjs/src/client/puppet-service.spec.js.map +1 -0
- package/dist/cjs/src/config.d.ts +20 -0
- package/dist/cjs/src/config.d.ts.map +1 -0
- package/dist/cjs/src/config.js +49 -0
- package/dist/cjs/src/config.js.map +1 -0
- package/dist/cjs/src/deprecated/chunk-pb.d.ts +15 -0
- package/dist/cjs/src/deprecated/chunk-pb.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/chunk-pb.js +60 -0
- package/dist/cjs/src/deprecated/chunk-pb.js.map +1 -0
- package/dist/cjs/src/deprecated/chunk-pb.spec.d.ts +3 -0
- package/dist/cjs/src/deprecated/chunk-pb.spec.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/chunk-pb.spec.js +144 -0
- package/dist/cjs/src/deprecated/chunk-pb.spec.js.map +1 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.d.ts +21 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.js +43 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.js.map +1 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.spec.d.ts +3 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.spec.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.spec.js +94 -0
- package/dist/cjs/src/deprecated/conversation-id-file-box.spec.js.map +1 -0
- package/dist/cjs/src/deprecated/file-box-chunk.d.ts +14 -0
- package/dist/cjs/src/deprecated/file-box-chunk.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/file-box-chunk.js +67 -0
- package/dist/cjs/src/deprecated/file-box-chunk.js.map +1 -0
- package/dist/cjs/src/deprecated/file-box-chunk.spec.d.ts +3 -0
- package/dist/cjs/src/deprecated/file-box-chunk.spec.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/file-box-chunk.spec.js +134 -0
- package/dist/cjs/src/deprecated/file-box-chunk.spec.js.map +1 -0
- package/dist/cjs/src/deprecated/file-box-pb.d.ts +15 -0
- package/dist/cjs/src/deprecated/file-box-pb.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/file-box-pb.js +26 -0
- package/dist/cjs/src/deprecated/file-box-pb.js.map +1 -0
- package/dist/cjs/src/deprecated/file-box-pb.spec.d.ts +3 -0
- package/dist/cjs/src/deprecated/file-box-pb.spec.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/file-box-pb.spec.js +18 -0
- package/dist/cjs/src/deprecated/file-box-pb.spec.js.map +1 -0
- package/dist/cjs/src/deprecated/file-box-pb.type.d.ts +15 -0
- package/dist/cjs/src/deprecated/file-box-pb.type.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/file-box-pb.type.js +3 -0
- package/dist/cjs/src/deprecated/file-box-pb.type.js.map +1 -0
- package/dist/cjs/src/deprecated/mod.d.ts +3 -0
- package/dist/cjs/src/deprecated/mod.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/mod.js +10 -0
- package/dist/cjs/src/deprecated/mod.js.map +1 -0
- package/dist/cjs/src/deprecated/next-data.d.ts +7 -0
- package/dist/cjs/src/deprecated/next-data.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/next-data.js +26 -0
- package/dist/cjs/src/deprecated/next-data.js.map +1 -0
- package/dist/cjs/src/deprecated/serialize-file-box.d.ts +6 -0
- package/dist/cjs/src/deprecated/serialize-file-box.d.ts.map +1 -0
- package/dist/cjs/src/deprecated/serialize-file-box.js +22 -0
- package/dist/cjs/src/deprecated/serialize-file-box.js.map +1 -0
- package/dist/cjs/src/env-vars.d.ts +5 -0
- package/dist/cjs/src/env-vars.d.ts.map +1 -0
- package/dist/cjs/src/env-vars.js +88 -0
- package/dist/cjs/src/env-vars.js.map +1 -0
- package/dist/cjs/src/env-vars.spec.d.ts +3 -0
- package/dist/cjs/src/env-vars.spec.d.ts.map +1 -0
- package/dist/cjs/src/env-vars.spec.js +21 -0
- package/dist/cjs/src/env-vars.spec.js.map +1 -0
- package/dist/cjs/src/event-type-rev.d.ts +11 -0
- package/dist/cjs/src/event-type-rev.d.ts.map +1 -0
- package/dist/cjs/src/event-type-rev.js +17 -0
- package/dist/cjs/src/event-type-rev.js.map +1 -0
- package/dist/cjs/src/file-box-helper/mod.d.ts +4 -0
- package/dist/cjs/src/file-box-helper/mod.d.ts.map +1 -0
- package/dist/cjs/src/file-box-helper/mod.js +8 -0
- package/dist/cjs/src/file-box-helper/mod.js.map +1 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.d.ts +6 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.d.ts.map +1 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.js +76 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.js.map +1 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.spec.d.ts +3 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.spec.d.ts.map +1 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.spec.js +35 -0
- package/dist/cjs/src/file-box-helper/normalize-filebox.spec.js.map +1 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.d.ts +6 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.d.ts.map +1 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.js +45 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-grpc.js.map +1 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-local.d.ts +5 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-local.d.ts.map +1 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-local.js +19 -0
- package/dist/cjs/src/file-box-helper/uuidify-file-box-local.js.map +1 -0
- package/dist/cjs/src/mod.d.ts +8 -0
- package/dist/cjs/src/mod.d.ts.map +1 -0
- package/dist/cjs/src/mod.js +13 -0
- package/dist/cjs/src/mod.js.map +1 -0
- package/dist/cjs/src/mod.spec.d.ts +3 -0
- package/dist/cjs/src/mod.spec.d.ts.map +1 -0
- package/dist/cjs/src/mod.spec.js +32 -0
- package/dist/cjs/src/mod.spec.js.map +1 -0
- package/dist/cjs/src/package-json.d.ts +6 -0
- package/dist/cjs/src/package-json.d.ts.map +1 -0
- package/dist/cjs/src/package-json.js +101 -0
- package/dist/cjs/src/package-json.js.map +1 -0
- package/dist/cjs/src/package-json.spec.d.ts +3 -0
- package/dist/cjs/src/package-json.spec.d.ts.map +1 -0
- package/dist/cjs/src/package-json.spec.js +10 -0
- package/dist/cjs/src/package-json.spec.js.map +1 -0
- package/dist/cjs/src/pure-functions/timestamp.d.ts +8 -0
- package/dist/cjs/src/pure-functions/timestamp.d.ts.map +1 -0
- package/dist/cjs/src/pure-functions/timestamp.js +23 -0
- package/dist/cjs/src/pure-functions/timestamp.js.map +1 -0
- package/dist/cjs/src/server/event-stream-manager.d.ts +40 -0
- package/dist/cjs/src/server/event-stream-manager.d.ts.map +1 -0
- package/dist/cjs/src/server/event-stream-manager.js +344 -0
- package/dist/cjs/src/server/event-stream-manager.js.map +1 -0
- package/dist/cjs/src/server/grpc-error.d.ts +5 -0
- package/dist/cjs/src/server/grpc-error.d.ts.map +1 -0
- package/dist/cjs/src/server/grpc-error.js +12 -0
- package/dist/cjs/src/server/grpc-error.js.map +1 -0
- package/dist/cjs/src/server/health-implementation.d.ts +5 -0
- package/dist/cjs/src/server/health-implementation.d.ts.map +1 -0
- package/dist/cjs/src/server/health-implementation.js +55 -0
- package/dist/cjs/src/server/health-implementation.js.map +1 -0
- package/dist/cjs/src/server/puppet-implementation.d.ts +6 -0
- package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -0
- package/dist/cjs/src/server/puppet-implementation.js +1226 -0
- package/dist/cjs/src/server/puppet-implementation.js.map +1 -0
- package/dist/cjs/src/server/puppet-server.d.ts +23 -0
- package/dist/cjs/src/server/puppet-server.d.ts.map +1 -0
- package/dist/cjs/src/server/puppet-server.js +159 -0
- package/dist/cjs/src/server/puppet-server.js.map +1 -0
- package/dist/cjs/src/server/puppet-server.spec.d.ts +3 -0
- package/dist/cjs/src/server/puppet-server.spec.d.ts.map +1 -0
- package/dist/cjs/src/server/puppet-server.spec.js +15 -0
- package/dist/cjs/src/server/puppet-server.spec.js.map +1 -0
- package/dist/cjs/tests/grpc-client.spec.d.ts +3 -0
- package/dist/cjs/tests/grpc-client.spec.d.ts.map +1 -0
- package/dist/cjs/tests/grpc-client.spec.js +137 -0
- package/dist/cjs/tests/grpc-client.spec.js.map +1 -0
- package/dist/cjs/tests/grpc-stream.spec.d.ts +15 -0
- package/dist/cjs/tests/grpc-stream.spec.d.ts.map +1 -0
- package/dist/cjs/tests/grpc-stream.spec.js +67 -0
- package/dist/cjs/tests/grpc-stream.spec.js.map +1 -0
- package/dist/cjs/tests/integration.spec.d.ts +3 -0
- package/dist/cjs/tests/integration.spec.d.ts.map +1 -0
- package/dist/cjs/tests/integration.spec.js +70 -0
- package/dist/cjs/tests/integration.spec.js.map +1 -0
- package/dist/cjs/tests/performance.spec.d.ts +14 -0
- package/dist/cjs/tests/performance.spec.d.ts.map +1 -0
- package/dist/cjs/tests/performance.spec.js +129 -0
- package/dist/cjs/tests/performance.spec.js.map +1 -0
- package/dist/cjs/tests/ready-event.spec.d.ts +3 -0
- package/dist/cjs/tests/ready-event.spec.d.ts.map +1 -0
- package/dist/cjs/tests/ready-event.spec.js +80 -0
- package/dist/cjs/tests/ready-event.spec.js.map +1 -0
- package/dist/cjs/tests/uuid-file-box.spec.d.ts +3 -0
- package/dist/cjs/tests/uuid-file-box.spec.d.ts.map +1 -0
- package/dist/cjs/tests/uuid-file-box.spec.js +77 -0
- package/dist/cjs/tests/uuid-file-box.spec.js.map +1 -0
- package/dist/esm/examples/ding-dong-bot.d.ts +2 -0
- package/dist/esm/examples/ding-dong-bot.d.ts.map +1 -0
- package/dist/esm/examples/ding-dong-bot.js +131 -0
- package/dist/esm/examples/ding-dong-bot.js.map +1 -0
- package/dist/esm/src/auth/auth-impl-token.d.ts +4 -0
- package/dist/esm/src/auth/auth-impl-token.d.ts.map +1 -0
- package/dist/esm/src/auth/auth-impl-token.js +78 -0
- package/dist/esm/src/auth/auth-impl-token.js.map +1 -0
- package/dist/esm/src/auth/auth-impl-token.spec.d.ts +3 -0
- package/dist/esm/src/auth/auth-impl-token.spec.d.ts.map +1 -0
- package/dist/esm/src/auth/auth-impl-token.spec.js +63 -0
- package/dist/esm/src/auth/auth-impl-token.spec.js.map +1 -0
- package/dist/esm/src/auth/ca.d.ts +46 -0
- package/dist/esm/src/auth/ca.d.ts.map +1 -0
- package/dist/esm/src/auth/ca.js +129 -0
- package/dist/esm/src/auth/ca.js.map +1 -0
- package/dist/esm/src/auth/ca.spec.d.ts +3 -0
- package/dist/esm/src/auth/ca.spec.d.ts.map +1 -0
- package/dist/esm/src/auth/ca.spec.js +87 -0
- package/dist/esm/src/auth/ca.spec.js.map +1 -0
- package/dist/esm/src/auth/call-cred.d.ts +9 -0
- package/dist/esm/src/auth/call-cred.d.ts.map +1 -0
- package/dist/esm/src/auth/call-cred.js +13 -0
- package/dist/esm/src/auth/call-cred.js.map +1 -0
- package/dist/esm/src/auth/call-cred.spec.d.ts +3 -0
- package/dist/esm/src/auth/call-cred.spec.d.ts.map +1 -0
- package/dist/esm/src/auth/call-cred.spec.js +16 -0
- package/dist/esm/src/auth/call-cred.spec.js.map +1 -0
- package/dist/esm/src/auth/env-vars.d.ts +13 -0
- package/dist/esm/src/auth/env-vars.d.ts.map +1 -0
- package/dist/esm/src/auth/env-vars.js +21 -0
- package/dist/esm/src/auth/env-vars.js.map +1 -0
- package/dist/esm/src/auth/grpc-js.d.ts +7 -0
- package/dist/esm/src/auth/grpc-js.d.ts.map +1 -0
- package/dist/esm/src/auth/grpc-js.js +4 -0
- package/dist/esm/src/auth/grpc-js.js.map +1 -0
- package/dist/esm/src/auth/mod.d.ts +5 -0
- package/dist/esm/src/auth/mod.d.ts.map +1 -0
- package/dist/esm/src/auth/mod.js +5 -0
- package/dist/esm/src/auth/mod.js.map +1 -0
- package/dist/esm/src/auth/mokey-patch-header-authorization.d.ts +11 -0
- package/dist/esm/src/auth/mokey-patch-header-authorization.d.ts.map +1 -0
- package/dist/esm/src/auth/mokey-patch-header-authorization.js +29 -0
- package/dist/esm/src/auth/mokey-patch-header-authorization.js.map +1 -0
- package/dist/esm/src/auth/monkey-patch-header-authorization.spec.d.ts +3 -0
- package/dist/esm/src/auth/monkey-patch-header-authorization.spec.d.ts.map +1 -0
- package/dist/esm/src/auth/monkey-patch-header-authorization.spec.js +17 -0
- package/dist/esm/src/auth/monkey-patch-header-authorization.spec.js.map +1 -0
- package/dist/esm/src/client/duck/actions.d.ts +6 -0
- package/dist/esm/src/client/duck/actions.d.ts.map +1 -0
- package/dist/esm/src/client/duck/actions.js +28 -0
- package/dist/esm/src/client/duck/actions.js.map +1 -0
- package/dist/esm/src/client/duck/epic-recover.d.ts +36 -0
- package/dist/esm/src/client/duck/epic-recover.d.ts.map +1 -0
- package/dist/esm/src/client/duck/epic-recover.js +36 -0
- package/dist/esm/src/client/duck/epic-recover.js.map +1 -0
- package/dist/esm/src/client/duck/epic-recover.spec.d.ts +3 -0
- package/dist/esm/src/client/duck/epic-recover.spec.d.ts.map +1 -0
- package/dist/esm/src/client/duck/epic-recover.spec.js +126 -0
- package/dist/esm/src/client/duck/epic-recover.spec.js.map +1 -0
- package/dist/esm/src/client/duck/epics.d.ts +4 -0
- package/dist/esm/src/client/duck/epics.d.ts.map +1 -0
- package/dist/esm/src/client/duck/epics.js +33 -0
- package/dist/esm/src/client/duck/epics.js.map +1 -0
- package/dist/esm/src/client/duck/mod.d.ts +29 -0
- package/dist/esm/src/client/duck/mod.d.ts.map +1 -0
- package/dist/esm/src/client/duck/mod.js +29 -0
- package/dist/esm/src/client/duck/mod.js.map +1 -0
- package/dist/esm/src/client/duck/operations.d.ts +23 -0
- package/dist/esm/src/client/duck/operations.d.ts.map +1 -0
- package/dist/esm/src/client/duck/operations.js +4 -0
- package/dist/esm/src/client/duck/operations.js.map +1 -0
- package/dist/esm/src/client/duck/reducers.d.ts +59 -0
- package/dist/esm/src/client/duck/reducers.d.ts.map +1 -0
- package/dist/esm/src/client/duck/reducers.js +26 -0
- package/dist/esm/src/client/duck/reducers.js.map +1 -0
- package/dist/esm/src/client/duck/selectors.d.ts +21 -0
- package/dist/esm/src/client/duck/selectors.d.ts.map +1 -0
- package/dist/esm/src/client/duck/selectors.js +22 -0
- package/dist/esm/src/client/duck/selectors.js.map +1 -0
- package/dist/esm/src/client/duck/tests.spec.d.ts +3 -0
- package/dist/esm/src/client/duck/tests.spec.d.ts.map +1 -0
- package/dist/esm/src/client/duck/tests.spec.js +24 -0
- package/dist/esm/src/client/duck/tests.spec.js.map +1 -0
- package/dist/esm/src/client/duck/types.d.ts +21 -0
- package/dist/esm/src/client/duck/types.d.ts.map +1 -0
- package/dist/esm/src/client/duck/types.js +21 -0
- package/dist/esm/src/client/duck/types.js.map +1 -0
- package/dist/esm/src/client/duck/utils.d.ts +21 -0
- package/dist/esm/src/client/duck/utils.d.ts.map +1 -0
- package/dist/esm/src/client/duck/utils.js +2 -0
- package/dist/esm/src/client/duck/utils.js.map +1 -0
- package/dist/esm/src/client/grpc-manager.d.ts +29 -0
- package/dist/esm/src/client/grpc-manager.d.ts.map +1 -0
- package/dist/esm/src/client/grpc-manager.js +353 -0
- package/dist/esm/src/client/grpc-manager.js.map +1 -0
- package/dist/esm/src/client/grpc-manager.spec.d.ts +3 -0
- package/dist/esm/src/client/grpc-manager.spec.d.ts.map +1 -0
- package/dist/esm/src/client/grpc-manager.spec.js +17 -0
- package/dist/esm/src/client/grpc-manager.spec.js.map +1 -0
- package/dist/esm/src/client/payload-store.d.ts +26 -0
- package/dist/esm/src/client/payload-store.d.ts.map +1 -0
- package/dist/esm/src/client/payload-store.js +112 -0
- package/dist/esm/src/client/payload-store.js.map +1 -0
- package/dist/esm/src/client/payload-store.spec.d.ts +3 -0
- package/dist/esm/src/client/payload-store.spec.d.ts.map +1 -0
- package/dist/esm/src/client/payload-store.spec.js +15 -0
- package/dist/esm/src/client/payload-store.spec.js.map +1 -0
- package/dist/esm/src/client/puppet-service.d.ts +161 -0
- package/dist/esm/src/client/puppet-service.d.ts.map +1 -0
- package/dist/esm/src/client/puppet-service.js +1357 -0
- package/dist/esm/src/client/puppet-service.js.map +1 -0
- package/dist/esm/src/client/puppet-service.spec.d.ts +3 -0
- package/dist/esm/src/client/puppet-service.spec.d.ts.map +1 -0
- package/dist/esm/src/client/puppet-service.spec.js +50 -0
- package/dist/esm/src/client/puppet-service.spec.js.map +1 -0
- package/dist/esm/src/config.d.ts +20 -0
- package/dist/esm/src/config.d.ts.map +1 -0
- package/dist/esm/src/config.js +20 -0
- package/dist/esm/src/config.js.map +1 -0
- package/dist/esm/src/deprecated/chunk-pb.d.ts +15 -0
- package/dist/esm/src/deprecated/chunk-pb.d.ts.map +1 -0
- package/dist/esm/src/deprecated/chunk-pb.js +56 -0
- package/dist/esm/src/deprecated/chunk-pb.js.map +1 -0
- package/dist/esm/src/deprecated/chunk-pb.spec.d.ts +3 -0
- package/dist/esm/src/deprecated/chunk-pb.spec.d.ts.map +1 -0
- package/dist/esm/src/deprecated/chunk-pb.spec.js +142 -0
- package/dist/esm/src/deprecated/chunk-pb.spec.js.map +1 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.d.ts +21 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.d.ts.map +1 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.js +39 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.js.map +1 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.spec.d.ts +3 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.spec.d.ts.map +1 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.spec.js +92 -0
- package/dist/esm/src/deprecated/conversation-id-file-box.spec.js.map +1 -0
- package/dist/esm/src/deprecated/file-box-chunk.d.ts +14 -0
- package/dist/esm/src/deprecated/file-box-chunk.d.ts.map +1 -0
- package/dist/esm/src/deprecated/file-box-chunk.js +63 -0
- package/dist/esm/src/deprecated/file-box-chunk.js.map +1 -0
- package/dist/esm/src/deprecated/file-box-chunk.spec.d.ts +3 -0
- package/dist/esm/src/deprecated/file-box-chunk.spec.d.ts.map +1 -0
- package/dist/esm/src/deprecated/file-box-chunk.spec.js +132 -0
- package/dist/esm/src/deprecated/file-box-chunk.spec.js.map +1 -0
- package/dist/esm/src/deprecated/file-box-pb.d.ts +15 -0
- package/dist/esm/src/deprecated/file-box-pb.d.ts.map +1 -0
- package/dist/esm/src/deprecated/file-box-pb.js +22 -0
- package/dist/esm/src/deprecated/file-box-pb.js.map +1 -0
- package/dist/esm/src/deprecated/file-box-pb.spec.d.ts +3 -0
- package/dist/esm/src/deprecated/file-box-pb.spec.d.ts.map +1 -0
- package/dist/esm/src/deprecated/file-box-pb.spec.js +16 -0
- package/dist/esm/src/deprecated/file-box-pb.spec.js.map +1 -0
- package/dist/esm/src/deprecated/file-box-pb.type.d.ts +15 -0
- package/dist/esm/src/deprecated/file-box-pb.type.d.ts.map +1 -0
- package/dist/esm/src/deprecated/file-box-pb.type.js +2 -0
- package/dist/esm/src/deprecated/file-box-pb.type.js.map +1 -0
- package/dist/esm/src/deprecated/mod.d.ts +3 -0
- package/dist/esm/src/deprecated/mod.d.ts.map +1 -0
- package/dist/esm/src/deprecated/mod.js +3 -0
- package/dist/esm/src/deprecated/mod.js.map +1 -0
- package/dist/esm/src/deprecated/next-data.d.ts +7 -0
- package/dist/esm/src/deprecated/next-data.d.ts.map +1 -0
- package/dist/esm/src/deprecated/next-data.js +23 -0
- package/dist/esm/src/deprecated/next-data.js.map +1 -0
- package/dist/esm/src/deprecated/serialize-file-box.d.ts +6 -0
- package/dist/esm/src/deprecated/serialize-file-box.d.ts.map +1 -0
- package/dist/esm/src/deprecated/serialize-file-box.js +18 -0
- package/dist/esm/src/deprecated/serialize-file-box.js.map +1 -0
- package/dist/esm/src/env-vars.d.ts +5 -0
- package/dist/esm/src/env-vars.d.ts.map +1 -0
- package/dist/esm/src/env-vars.js +83 -0
- package/dist/esm/src/env-vars.js.map +1 -0
- package/dist/esm/src/env-vars.spec.d.ts +3 -0
- package/dist/esm/src/env-vars.spec.d.ts.map +1 -0
- package/dist/esm/src/env-vars.spec.js +19 -0
- package/dist/esm/src/env-vars.spec.js.map +1 -0
- package/dist/esm/src/event-type-rev.d.ts +11 -0
- package/dist/esm/src/event-type-rev.d.ts.map +1 -0
- package/dist/esm/src/event-type-rev.js +14 -0
- package/dist/esm/src/event-type-rev.js.map +1 -0
- package/dist/esm/src/file-box-helper/mod.d.ts +4 -0
- package/dist/esm/src/file-box-helper/mod.d.ts.map +1 -0
- package/dist/esm/src/file-box-helper/mod.js +4 -0
- package/dist/esm/src/file-box-helper/mod.js.map +1 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.d.ts +6 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.d.ts.map +1 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.js +72 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.js.map +1 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.spec.d.ts +3 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.spec.d.ts.map +1 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.spec.js +33 -0
- package/dist/esm/src/file-box-helper/normalize-filebox.spec.js.map +1 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.d.ts +6 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.d.ts.map +1 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.js +42 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-grpc.js.map +1 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-local.d.ts +5 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-local.d.ts.map +1 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-local.js +16 -0
- package/dist/esm/src/file-box-helper/uuidify-file-box-local.js.map +1 -0
- package/dist/esm/src/mod.d.ts +8 -0
- package/dist/esm/src/mod.d.ts.map +1 -0
- package/dist/esm/src/mod.js +7 -0
- package/dist/esm/src/mod.js.map +1 -0
- package/dist/esm/src/mod.spec.d.ts +3 -0
- package/dist/esm/src/mod.spec.d.ts.map +1 -0
- package/dist/esm/src/mod.spec.js +7 -0
- package/dist/esm/src/mod.spec.js.map +1 -0
- package/dist/esm/src/package-json.d.ts +6 -0
- package/dist/esm/src/package-json.d.ts.map +1 -0
- package/dist/esm/src/package-json.js +98 -0
- package/dist/esm/src/package-json.js.map +1 -0
- package/dist/esm/src/package-json.spec.d.ts +3 -0
- package/dist/esm/src/package-json.spec.d.ts.map +1 -0
- package/dist/esm/src/package-json.spec.js +8 -0
- package/dist/esm/src/package-json.spec.js.map +1 -0
- package/dist/esm/src/pure-functions/timestamp.d.ts +8 -0
- package/dist/esm/src/pure-functions/timestamp.d.ts.map +1 -0
- package/dist/esm/src/pure-functions/timestamp.js +19 -0
- package/dist/esm/src/pure-functions/timestamp.js.map +1 -0
- package/dist/esm/src/server/event-stream-manager.d.ts +40 -0
- package/dist/esm/src/server/event-stream-manager.d.ts.map +1 -0
- package/dist/esm/src/server/event-stream-manager.js +318 -0
- package/dist/esm/src/server/event-stream-manager.js.map +1 -0
- package/dist/esm/src/server/grpc-error.d.ts +5 -0
- package/dist/esm/src/server/grpc-error.d.ts.map +1 -0
- package/dist/esm/src/server/grpc-error.js +8 -0
- package/dist/esm/src/server/grpc-error.js.map +1 -0
- package/dist/esm/src/server/health-implementation.d.ts +5 -0
- package/dist/esm/src/server/health-implementation.d.ts.map +1 -0
- package/dist/esm/src/server/health-implementation.js +52 -0
- package/dist/esm/src/server/health-implementation.js.map +1 -0
- package/dist/esm/src/server/puppet-implementation.d.ts +6 -0
- package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -0
- package/dist/esm/src/server/puppet-implementation.js +1200 -0
- package/dist/esm/src/server/puppet-implementation.js.map +1 -0
- package/dist/esm/src/server/puppet-server.d.ts +23 -0
- package/dist/esm/src/server/puppet-server.d.ts.map +1 -0
- package/dist/esm/src/server/puppet-server.js +152 -0
- package/dist/esm/src/server/puppet-server.js.map +1 -0
- package/dist/esm/src/server/puppet-server.spec.d.ts +3 -0
- package/dist/esm/src/server/puppet-server.spec.d.ts.map +1 -0
- package/dist/esm/src/server/puppet-server.spec.js +13 -0
- package/dist/esm/src/server/puppet-server.spec.js.map +1 -0
- package/dist/esm/tests/grpc-client.spec.d.ts +3 -0
- package/dist/esm/tests/grpc-client.spec.d.ts.map +1 -0
- package/dist/esm/tests/grpc-client.spec.js +132 -0
- package/dist/esm/tests/grpc-client.spec.js.map +1 -0
- package/dist/esm/tests/grpc-stream.spec.d.ts +15 -0
- package/dist/esm/tests/grpc-stream.spec.d.ts.map +1 -0
- package/dist/esm/tests/grpc-stream.spec.js +62 -0
- package/dist/esm/tests/grpc-stream.spec.js.map +1 -0
- package/dist/esm/tests/integration.spec.d.ts +3 -0
- package/dist/esm/tests/integration.spec.d.ts.map +1 -0
- package/dist/esm/tests/integration.spec.js +65 -0
- package/dist/esm/tests/integration.spec.js.map +1 -0
- package/dist/esm/tests/performance.spec.d.ts +14 -0
- package/dist/esm/tests/performance.spec.d.ts.map +1 -0
- package/dist/esm/tests/performance.spec.js +104 -0
- package/dist/esm/tests/performance.spec.js.map +1 -0
- package/dist/esm/tests/ready-event.spec.d.ts +3 -0
- package/dist/esm/tests/ready-event.spec.d.ts.map +1 -0
- package/dist/esm/tests/ready-event.spec.js +52 -0
- package/dist/esm/tests/ready-event.spec.js.map +1 -0
- package/dist/esm/tests/uuid-file-box.spec.d.ts +3 -0
- package/dist/esm/tests/uuid-file-box.spec.d.ts.map +1 -0
- package/dist/esm/tests/uuid-file-box.spec.js +49 -0
- package/dist/esm/tests/uuid-file-box.spec.js.map +1 -0
- package/package.json +97 -0
- package/src/auth/README.md +10 -0
- package/src/auth/auth-impl-token.spec.ts +81 -0
- package/src/auth/auth-impl-token.ts +108 -0
- package/src/auth/ca.spec.ts +116 -0
- package/src/auth/ca.ts +137 -0
- package/src/auth/call-cred.spec.ts +25 -0
- package/src/auth/call-cred.ts +22 -0
- package/src/auth/env-vars.ts +32 -0
- package/src/auth/grpc-js.ts +29 -0
- package/src/auth/mod.ts +9 -0
- package/src/auth/mokey-patch-header-authorization.ts +45 -0
- package/src/auth/monkey-patch-header-authorization.spec.ts +26 -0
- package/src/client/duck/actions.ts +31 -0
- package/src/client/duck/epic-recover.spec.ts +180 -0
- package/src/client/duck/epic-recover.ts +109 -0
- package/src/client/duck/epics.ts +53 -0
- package/src/client/duck/mod.ts +38 -0
- package/src/client/duck/operations.ts +28 -0
- package/src/client/duck/reducers.ts +36 -0
- package/src/client/duck/selectors.ts +27 -0
- package/src/client/duck/tests.spec.ts +25 -0
- package/src/client/duck/types.ts +20 -0
- package/src/client/duck/utils.ts +20 -0
- package/src/client/grpc-manager.spec.ts +20 -0
- package/src/client/grpc-manager.ts +440 -0
- package/src/client/payload-store.spec.ts +19 -0
- package/src/client/payload-store.ts +153 -0
- package/src/client/puppet-service.spec.ts +59 -0
- package/src/client/puppet-service.ts +1938 -0
- package/src/config.ts +31 -0
- package/src/deprecated/chunk-pb.spec.ts +210 -0
- package/src/deprecated/chunk-pb.ts +75 -0
- package/src/deprecated/conversation-id-file-box.spec.ts +131 -0
- package/src/deprecated/conversation-id-file-box.ts +72 -0
- package/src/deprecated/file-box-chunk.spec.ts +184 -0
- package/src/deprecated/file-box-chunk.ts +87 -0
- package/src/deprecated/file-box-pb.spec.ts +31 -0
- package/src/deprecated/file-box-pb.ts +41 -0
- package/src/deprecated/file-box-pb.type.ts +16 -0
- package/src/deprecated/mod.ts +8 -0
- package/src/deprecated/next-data.ts +35 -0
- package/src/deprecated/serialize-file-box.ts +24 -0
- package/src/env-vars.spec.ts +23 -0
- package/src/env-vars.ts +100 -0
- package/src/event-type-rev.ts +19 -0
- package/src/file-box-helper/mod.ts +11 -0
- package/src/file-box-helper/normalize-filebox.spec.ts +47 -0
- package/src/file-box-helper/normalize-filebox.ts +90 -0
- package/src/file-box-helper/uuidify-file-box-grpc.ts +83 -0
- package/src/file-box-helper/uuidify-file-box-local.ts +31 -0
- package/src/mod.spec.ts +9 -0
- package/src/mod.ts +25 -0
- package/src/package-json.spec.ts +10 -0
- package/src/package-json.ts +101 -0
- package/src/pure-functions/timestamp.ts +28 -0
- package/src/server/event-stream-manager.ts +383 -0
- package/src/server/grpc-error.ts +23 -0
- package/src/server/health-implementation.ts +78 -0
- package/src/server/puppet-implementation.ts +1539 -0
- package/src/server/puppet-server.spec.ts +21 -0
- package/src/server/puppet-server.ts +239 -0
- 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
|