@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,1539 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wechaty Open Source Software - https://github.com/wechaty
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
|
|
5
|
+
* Wechaty Contributors <https://github.com/wechaty>.
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
/* eslint-disable sort-keys */
|
|
21
|
+
import type { Writable } from 'stream'
|
|
22
|
+
import {
|
|
23
|
+
chunkDecoder,
|
|
24
|
+
chunkEncoder,
|
|
25
|
+
StringValue,
|
|
26
|
+
grpc,
|
|
27
|
+
puppet as grpcPuppet,
|
|
28
|
+
} from '@juzi/wechaty-grpc'
|
|
29
|
+
import type {
|
|
30
|
+
FileBoxInterface,
|
|
31
|
+
FileBox,
|
|
32
|
+
} from 'file-box'
|
|
33
|
+
import * as PUPPET from '@juzi/wechaty-puppet'
|
|
34
|
+
import { timeoutPromise } from 'gerror'
|
|
35
|
+
|
|
36
|
+
import {
|
|
37
|
+
packFileBoxToPb,
|
|
38
|
+
unpackConversationIdFileBoxArgsFromPb,
|
|
39
|
+
} from '../deprecated/mod.js'
|
|
40
|
+
|
|
41
|
+
import {
|
|
42
|
+
timestampFromMilliseconds,
|
|
43
|
+
} from '../pure-functions/timestamp.js'
|
|
44
|
+
import {
|
|
45
|
+
normalizeFileBoxUuid,
|
|
46
|
+
} from '../file-box-helper/mod.js'
|
|
47
|
+
import { log } from '../config.js'
|
|
48
|
+
import { grpcError } from './grpc-error.js'
|
|
49
|
+
import { EventStreamManager } from './event-stream-manager.js'
|
|
50
|
+
|
|
51
|
+
function puppetImplementation (
|
|
52
|
+
puppet : PUPPET.impls.PuppetInterface,
|
|
53
|
+
FileBoxUuid : typeof FileBox,
|
|
54
|
+
): grpcPuppet.IPuppetServer {
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Save scan payload to send it to the puppet-service right after connected (if needed)
|
|
58
|
+
*
|
|
59
|
+
* TODO: clean the listeners if necessary
|
|
60
|
+
*/
|
|
61
|
+
let scanPayload: undefined | PUPPET.payloads.EventScan
|
|
62
|
+
let readyPayload: undefined | PUPPET.payloads.EventReady
|
|
63
|
+
let readyTimeout: undefined | ReturnType<typeof setTimeout>
|
|
64
|
+
|
|
65
|
+
puppet.on('scan', payload => { scanPayload = payload })
|
|
66
|
+
puppet.on('ready', payload => { readyPayload = payload })
|
|
67
|
+
puppet.on('logout', _ => {
|
|
68
|
+
readyPayload = undefined
|
|
69
|
+
if (readyTimeout) {
|
|
70
|
+
clearTimeout(readyTimeout)
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
puppet.on('login', _ => {
|
|
74
|
+
scanPayload = undefined
|
|
75
|
+
readyTimeout = setTimeout(() => {
|
|
76
|
+
// Huan(202110): should we emit ready event here?
|
|
77
|
+
readyPayload && eventStreamManager.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_READY, readyPayload)
|
|
78
|
+
}, 5 * 1000)
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
const eventStreamManager = new EventStreamManager(puppet)
|
|
82
|
+
|
|
83
|
+
const serializeFileBox = async (fileBox: FileBoxInterface) => {
|
|
84
|
+
/**
|
|
85
|
+
* 1. if the fileBox is one of type `Url`, `QRCode`, `Uuid`, etc,
|
|
86
|
+
* then it can be serialized by `fileBox.toString()`
|
|
87
|
+
* 2. if the fileBox is one of type `Stream`, `Buffer`, `File`, etc,
|
|
88
|
+
* then it need to be convert to type `Uuid`
|
|
89
|
+
* before serialized by `fileBox.toString()`
|
|
90
|
+
*/
|
|
91
|
+
const normalizedFileBox = await normalizeFileBoxUuid(FileBoxUuid)(fileBox)
|
|
92
|
+
return JSON.stringify(normalizedFileBox)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const puppetServerImpl: grpcPuppet.IPuppetServer = {
|
|
96
|
+
|
|
97
|
+
contactAlias: async (call, callback) => {
|
|
98
|
+
log.verbose('PuppetServiceImpl', 'contactAlias()')
|
|
99
|
+
|
|
100
|
+
const id = call.request.getId()
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Set
|
|
104
|
+
*/
|
|
105
|
+
if (call.request.hasAlias()) {
|
|
106
|
+
try {
|
|
107
|
+
await puppet.contactAlias(id, call.request.getAlias())
|
|
108
|
+
return callback(null, new grpcPuppet.ContactAliasResponse())
|
|
109
|
+
} catch (e) {
|
|
110
|
+
return grpcError('contactAlias', e, callback)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get
|
|
116
|
+
*/
|
|
117
|
+
try {
|
|
118
|
+
const alias = await puppet.contactAlias(id)
|
|
119
|
+
|
|
120
|
+
const response = new grpcPuppet.ContactAliasResponse()
|
|
121
|
+
response.setAlias(alias)
|
|
122
|
+
|
|
123
|
+
return callback(null, response)
|
|
124
|
+
} catch (e) {
|
|
125
|
+
return grpcError('contactAlias', e, callback)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
contactAvatar: async (call, callback) => {
|
|
131
|
+
log.verbose('PuppetServiceImpl', 'contactAvatar()')
|
|
132
|
+
|
|
133
|
+
const id = call.request.getId()
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Set
|
|
137
|
+
*/
|
|
138
|
+
try {
|
|
139
|
+
if (call.request.hasFileBox()) {
|
|
140
|
+
|
|
141
|
+
const fileBox = FileBoxUuid.fromJSON(
|
|
142
|
+
call.request.getFileBox(),
|
|
143
|
+
)
|
|
144
|
+
await puppet.contactAvatar(id, fileBox)
|
|
145
|
+
|
|
146
|
+
return callback(null, new grpcPuppet.ContactAvatarResponse())
|
|
147
|
+
}
|
|
148
|
+
} catch (e) {
|
|
149
|
+
return grpcError('contactAvatar', e, callback)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Get
|
|
154
|
+
*/
|
|
155
|
+
try {
|
|
156
|
+
const fileBox = await puppet.contactAvatar(id)
|
|
157
|
+
const serializedFileBox = await serializeFileBox(fileBox)
|
|
158
|
+
|
|
159
|
+
const response = new grpcPuppet.ContactAvatarResponse()
|
|
160
|
+
response.setFileBox(serializedFileBox)
|
|
161
|
+
|
|
162
|
+
return callback(null, response)
|
|
163
|
+
} catch (e) {
|
|
164
|
+
return grpcError('contactAvatar', e, callback)
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
contactCorporationRemark: async (call, callback) => {
|
|
169
|
+
log.verbose('PuppetServiceImpl', 'contactCorporationRemark()')
|
|
170
|
+
|
|
171
|
+
const contactId = call.request.getContactId()
|
|
172
|
+
try {
|
|
173
|
+
await puppet.contactCorporationRemark(
|
|
174
|
+
contactId,
|
|
175
|
+
call.request.getCorporationRemark() || null,
|
|
176
|
+
)
|
|
177
|
+
return callback(null, new grpcPuppet.ContactCorporationRemarkResponse())
|
|
178
|
+
} catch (e) {
|
|
179
|
+
return grpcError('contactCorporationRemark', e, callback)
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
contactDescription: async (call, callback) => {
|
|
184
|
+
log.verbose('PuppetServiceImpl', 'contactDescription()')
|
|
185
|
+
|
|
186
|
+
const contactId = call.request.getContactId()
|
|
187
|
+
|
|
188
|
+
try {
|
|
189
|
+
const description = call.request.getDescription()
|
|
190
|
+
await puppet.contactDescription(contactId, description || null)
|
|
191
|
+
return callback(null, new grpcPuppet.ContactDescriptionResponse())
|
|
192
|
+
} catch (e) {
|
|
193
|
+
return grpcError('contactDescription', e, callback)
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
contactList: async (call, callback) => {
|
|
198
|
+
log.verbose('PuppetServiceImpl', 'contactList()')
|
|
199
|
+
|
|
200
|
+
void call // empty request
|
|
201
|
+
|
|
202
|
+
try {
|
|
203
|
+
const idList = await puppet.contactList()
|
|
204
|
+
const response = new grpcPuppet.ContactListResponse()
|
|
205
|
+
response.setIdsList(idList)
|
|
206
|
+
|
|
207
|
+
return callback(null, response)
|
|
208
|
+
} catch (e) {
|
|
209
|
+
return grpcError('contactList', e, callback)
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
contactPayload: async (call, callback) => {
|
|
214
|
+
log.verbose('PuppetServiceImpl', 'contactPayload()')
|
|
215
|
+
|
|
216
|
+
const id = call.request.getId()
|
|
217
|
+
|
|
218
|
+
try {
|
|
219
|
+
const payload = await puppet.contactPayload(id)
|
|
220
|
+
|
|
221
|
+
const response = new grpcPuppet.ContactPayloadResponse()
|
|
222
|
+
response.setAddress(payload.address || '')
|
|
223
|
+
response.setAlias(payload.alias || '')
|
|
224
|
+
response.setAvatar(payload.avatar)
|
|
225
|
+
response.setCity(payload.city || '')
|
|
226
|
+
response.setFriend(payload.friend || false)
|
|
227
|
+
response.setGender(payload.gender)
|
|
228
|
+
response.setId(payload.id)
|
|
229
|
+
response.setName(payload.name)
|
|
230
|
+
response.setProvince(payload.province || '')
|
|
231
|
+
response.setSignature(payload.signature || '')
|
|
232
|
+
response.setStar(payload.star || false)
|
|
233
|
+
response.setType(payload.type)
|
|
234
|
+
/**
|
|
235
|
+
* @deprecated `payload.weixin` will be removed in v2.0
|
|
236
|
+
* @link https://github.com/wechaty/grpc/issues/174
|
|
237
|
+
*/
|
|
238
|
+
response.setWeixin(payload.handle || payload.weixin || '')
|
|
239
|
+
response.setPhonesList(payload.phone)
|
|
240
|
+
response.setCoworker(payload.coworker || false)
|
|
241
|
+
response.setCorporation(payload.corporation || '')
|
|
242
|
+
response.setTitle(payload.title || '')
|
|
243
|
+
response.setDescription(payload.description || '')
|
|
244
|
+
|
|
245
|
+
return callback(null, response)
|
|
246
|
+
} catch (e) {
|
|
247
|
+
return grpcError('contactPayload', e, callback)
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
|
|
251
|
+
contactPhone: async (call, callback) => {
|
|
252
|
+
log.verbose('PuppetServiceImpl', 'contactPhone()')
|
|
253
|
+
|
|
254
|
+
try {
|
|
255
|
+
const contactId = call.request.getContactId()
|
|
256
|
+
const phoneList = call.request.getPhonesList()
|
|
257
|
+
|
|
258
|
+
await puppet.contactPhone(contactId, phoneList)
|
|
259
|
+
return callback(null, new grpcPuppet.ContactPhoneResponse())
|
|
260
|
+
} catch (e) {
|
|
261
|
+
return grpcError('contactPhone', e, callback)
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
|
|
265
|
+
contactSelfName: async (call, callback) => {
|
|
266
|
+
log.verbose('PuppetServiceImpl', 'contactSelfName()')
|
|
267
|
+
|
|
268
|
+
try {
|
|
269
|
+
const name = call.request.getName()
|
|
270
|
+
await puppet.contactSelfName(name)
|
|
271
|
+
|
|
272
|
+
return callback(null, new grpcPuppet.ContactSelfNameResponse())
|
|
273
|
+
|
|
274
|
+
} catch (e) {
|
|
275
|
+
return grpcError('contactSelfName', e, callback)
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
contactSelfQRCode: async (call, callback) => {
|
|
280
|
+
log.verbose('PuppetServiceImpl', 'contactSelfName()')
|
|
281
|
+
void call
|
|
282
|
+
|
|
283
|
+
try {
|
|
284
|
+
const qrcode = await puppet.contactSelfQRCode()
|
|
285
|
+
|
|
286
|
+
const response = new grpcPuppet.ContactSelfQRCodeResponse()
|
|
287
|
+
response.setQrcode(qrcode)
|
|
288
|
+
|
|
289
|
+
return callback(null, response)
|
|
290
|
+
|
|
291
|
+
} catch (e) {
|
|
292
|
+
return grpcError('contactSelfQRCode', e, callback)
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
},
|
|
296
|
+
|
|
297
|
+
contactSelfSignature: async (call, callback) => {
|
|
298
|
+
log.verbose('PuppetServiceImpl', 'contactSelfSignature()')
|
|
299
|
+
|
|
300
|
+
try {
|
|
301
|
+
const signature = call.request.getSignature()
|
|
302
|
+
await puppet.contactSelfSignature(signature)
|
|
303
|
+
|
|
304
|
+
return callback(null, new grpcPuppet.ContactSelfSignatureResponse())
|
|
305
|
+
|
|
306
|
+
} catch (e) {
|
|
307
|
+
return grpcError('contactSelfSignature', e, callback)
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
},
|
|
311
|
+
|
|
312
|
+
ding: async (call, callback) => {
|
|
313
|
+
log.verbose('PuppetServiceImpl', 'ding()')
|
|
314
|
+
|
|
315
|
+
try {
|
|
316
|
+
const data = call.request.getData()
|
|
317
|
+
await puppet.ding(data)
|
|
318
|
+
return callback(null, new grpcPuppet.DingResponse())
|
|
319
|
+
|
|
320
|
+
} catch (e) {
|
|
321
|
+
return grpcError('ding', e, callback)
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
|
|
325
|
+
dirtyPayload: async (call, callback) => {
|
|
326
|
+
log.verbose('PuppetServiceImpl', 'dirtyPayload()')
|
|
327
|
+
|
|
328
|
+
try {
|
|
329
|
+
const id = call.request.getId()
|
|
330
|
+
const type: PUPPET.types.Dirty = call.request.getType()
|
|
331
|
+
|
|
332
|
+
await puppet.dirtyPayload(type, id)
|
|
333
|
+
return callback(null, new grpcPuppet.DirtyPayloadResponse())
|
|
334
|
+
} catch (e) {
|
|
335
|
+
return grpcError('puppet.dirtyPayload() rejection: ', e, callback)
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
*
|
|
341
|
+
* Bridge Event Emitter Events
|
|
342
|
+
*
|
|
343
|
+
*/
|
|
344
|
+
event: (streamingCall) => {
|
|
345
|
+
log.verbose('PuppetServiceImpl', 'event()')
|
|
346
|
+
|
|
347
|
+
if (eventStreamManager.busy()) {
|
|
348
|
+
log.error('PuppetServiceImpl', 'event() there is another event() call not end when receiving a new one.')
|
|
349
|
+
|
|
350
|
+
const error: grpc.ServiceError = {
|
|
351
|
+
...new Error('GrpcServerImpl.event() can not call twice.'),
|
|
352
|
+
code: grpc.status.ALREADY_EXISTS,
|
|
353
|
+
details: 'GrpcServerImpl.event() can not call twice.',
|
|
354
|
+
metadata: streamingCall.metadata,
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Send error from gRPC server stream:
|
|
359
|
+
* https://github.com/grpc/grpc-node/issues/287#issuecomment-383218225
|
|
360
|
+
*
|
|
361
|
+
* Streaming RPCs
|
|
362
|
+
* - https://grpc.io/docs/tutorials/basic/node/
|
|
363
|
+
* Only one of 'error' or 'end' will be emitted. Finally, the 'status' event fires when the server sends the status.
|
|
364
|
+
*/
|
|
365
|
+
streamingCall.emit('error', error)
|
|
366
|
+
return
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
eventStreamManager.start(streamingCall)
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* If `scanPayload` is not undefined, then we emit it to downstream immediatelly
|
|
373
|
+
*/
|
|
374
|
+
if (scanPayload) {
|
|
375
|
+
eventStreamManager.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_SCAN, scanPayload)
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
|
|
379
|
+
friendshipAccept: async (call, callback) => {
|
|
380
|
+
log.verbose('PuppetServiceImpl', 'friendshipAccept()')
|
|
381
|
+
|
|
382
|
+
try {
|
|
383
|
+
const id = call.request.getId()
|
|
384
|
+
await puppet.friendshipAccept(id)
|
|
385
|
+
return callback(null, new grpcPuppet.FriendshipAcceptResponse())
|
|
386
|
+
|
|
387
|
+
} catch (e) {
|
|
388
|
+
return grpcError('friendshipAccept', e, callback)
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
|
|
392
|
+
friendshipAdd: async (call, callback) => {
|
|
393
|
+
log.verbose('PuppetServiceImpl', 'friendshipAdd()')
|
|
394
|
+
|
|
395
|
+
try {
|
|
396
|
+
const contactId = call.request.getContactId()
|
|
397
|
+
// FIXME: for backward compatibility, need to be removed after all puppet has updated.
|
|
398
|
+
const hello = call.request.getHello()
|
|
399
|
+
|
|
400
|
+
const referrer = call.request.getReferrer()
|
|
401
|
+
const friendshipAddOptions: PUPPET.types.FriendshipAddOptions = {
|
|
402
|
+
hello,
|
|
403
|
+
...referrer,
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
{
|
|
407
|
+
// Deprecated: will be removed after Dec 31, 2022
|
|
408
|
+
const sourceContactId = call.request.getSourceContactIdStringValueDeprecated()?.getValue()
|
|
409
|
+
const sourceRoomId = call.request.getSourceRoomIdStringValueDeprecated()?.getValue()
|
|
410
|
+
if (sourceContactId) { friendshipAddOptions['contactId'] = sourceContactId }
|
|
411
|
+
if (sourceRoomId) { friendshipAddOptions['roomId'] = sourceRoomId }
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
await puppet.friendshipAdd(contactId, friendshipAddOptions)
|
|
415
|
+
return callback(null, new grpcPuppet.FriendshipAddResponse())
|
|
416
|
+
|
|
417
|
+
} catch (e) {
|
|
418
|
+
return grpcError('friendshipAdd', e, callback)
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
|
|
422
|
+
friendshipPayload: async (call, callback) => {
|
|
423
|
+
log.verbose('PuppetServiceImpl', 'friendshipPayload()')
|
|
424
|
+
|
|
425
|
+
try {
|
|
426
|
+
const id = call.request.getId()
|
|
427
|
+
const payload = await puppet.friendshipPayload(id)
|
|
428
|
+
const payloadReceive = payload as PUPPET.payloads.FriendshipReceive
|
|
429
|
+
|
|
430
|
+
const response = new grpcPuppet.FriendshipPayloadResponse()
|
|
431
|
+
|
|
432
|
+
response.setContactId(payload.contactId)
|
|
433
|
+
response.setHello(payload.hello || '')
|
|
434
|
+
response.setId(payload.id)
|
|
435
|
+
response.setScene(payloadReceive.scene || PUPPET.types.FriendshipScene.Unknown)
|
|
436
|
+
response.setStranger(payloadReceive.stranger || '')
|
|
437
|
+
response.setTicket(payloadReceive.ticket)
|
|
438
|
+
response.setType(payload.type)
|
|
439
|
+
|
|
440
|
+
return callback(null, response)
|
|
441
|
+
|
|
442
|
+
} catch (e) {
|
|
443
|
+
return grpcError('friendshipPayload', e, callback)
|
|
444
|
+
}
|
|
445
|
+
},
|
|
446
|
+
|
|
447
|
+
friendshipSearchPhone: async (call, callback) => {
|
|
448
|
+
log.verbose('PuppetServiceImpl', 'friendshipSearchPhone()')
|
|
449
|
+
|
|
450
|
+
try {
|
|
451
|
+
const phone = call.request.getPhone()
|
|
452
|
+
const contactId = await puppet.friendshipSearchPhone(phone)
|
|
453
|
+
|
|
454
|
+
const response = new grpcPuppet.FriendshipSearchPhoneResponse()
|
|
455
|
+
|
|
456
|
+
if (contactId) {
|
|
457
|
+
response.setContactId(contactId)
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
return callback(null, response)
|
|
461
|
+
|
|
462
|
+
} catch (e) {
|
|
463
|
+
return grpcError('friendshipSearchPhone', e, callback)
|
|
464
|
+
}
|
|
465
|
+
},
|
|
466
|
+
/**
|
|
467
|
+
* @deprecated use `friendshipSearchHandle()` instead, will be removed in v3.0
|
|
468
|
+
*/
|
|
469
|
+
friendshipSearchWeixin: async (call, callback) => {
|
|
470
|
+
log.warn('PuppetServiceImpl', 'friendshipSearchWeixin() is deprecated, use friendshipSearchHandle() instead. %s', new Error().stack)
|
|
471
|
+
return puppetServerImpl.friendshipSearchHandle(call, callback)
|
|
472
|
+
},
|
|
473
|
+
|
|
474
|
+
friendshipSearchHandle: async (call, callback) => {
|
|
475
|
+
log.verbose('PuppetServiceImpl', 'friendshipSearchHandle()')
|
|
476
|
+
|
|
477
|
+
try {
|
|
478
|
+
/**
|
|
479
|
+
* Huan(202203): rename `getWeixin()` to `getHandle()` in v2.0.0
|
|
480
|
+
* @link https://github.com/wechaty/grpc/issues/174
|
|
481
|
+
*/
|
|
482
|
+
const handle = call.request.getWeixin()
|
|
483
|
+
const contactId = await puppet.friendshipSearchHandle(handle)
|
|
484
|
+
|
|
485
|
+
const response = new grpcPuppet.FriendshipSearchHandleResponse()
|
|
486
|
+
|
|
487
|
+
if (contactId) {
|
|
488
|
+
response.setContactId(contactId)
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return callback(null, response)
|
|
492
|
+
|
|
493
|
+
} catch (e) {
|
|
494
|
+
return grpcError('friendshipSearchHandle', e, callback)
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
|
|
498
|
+
logout: async (call, callback) => {
|
|
499
|
+
log.verbose('PuppetServiceImpl', 'logout()')
|
|
500
|
+
void call // empty arguments
|
|
501
|
+
|
|
502
|
+
try {
|
|
503
|
+
await puppet.logout()
|
|
504
|
+
|
|
505
|
+
return callback(null, new grpcPuppet.LogoutResponse())
|
|
506
|
+
|
|
507
|
+
} catch (e) {
|
|
508
|
+
return grpcError('logout', e, callback)
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
|
|
512
|
+
messageContact: async (call, callback) => {
|
|
513
|
+
log.verbose('PuppetServiceImpl', 'messageContact()')
|
|
514
|
+
|
|
515
|
+
try {
|
|
516
|
+
const id = call.request.getId()
|
|
517
|
+
|
|
518
|
+
const contactId = await puppet.messageContact(id)
|
|
519
|
+
|
|
520
|
+
const response = new grpcPuppet.MessageContactResponse()
|
|
521
|
+
response.setId(contactId)
|
|
522
|
+
|
|
523
|
+
return callback(null, response)
|
|
524
|
+
|
|
525
|
+
} catch (e) {
|
|
526
|
+
return grpcError('messageContact', e, callback)
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
|
|
530
|
+
messageFile: async (call, callback) => {
|
|
531
|
+
log.verbose('PuppetServiceImpl', 'messageFile()')
|
|
532
|
+
|
|
533
|
+
try {
|
|
534
|
+
const id = call.request.getId()
|
|
535
|
+
|
|
536
|
+
const fileBox = await puppet.messageFile(id)
|
|
537
|
+
const serializedFileBox = await serializeFileBox(fileBox)
|
|
538
|
+
|
|
539
|
+
const response = new grpcPuppet.MessageFileResponse()
|
|
540
|
+
response.setFileBox(serializedFileBox)
|
|
541
|
+
|
|
542
|
+
return callback(null, response)
|
|
543
|
+
|
|
544
|
+
} catch (e) {
|
|
545
|
+
return grpcError('messageFile', e, callback)
|
|
546
|
+
}
|
|
547
|
+
},
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* @deprecated will be removed after Dec 31, 2022
|
|
551
|
+
*/
|
|
552
|
+
messageFileStream: async (call) => {
|
|
553
|
+
log.verbose('PuppetServiceImpl', 'messageFileStream()')
|
|
554
|
+
|
|
555
|
+
try {
|
|
556
|
+
const id = call.request.getId()
|
|
557
|
+
|
|
558
|
+
const fileBox = await puppet.messageFile(id)
|
|
559
|
+
const response = await packFileBoxToPb(grpcPuppet.MessageFileStreamResponse)(fileBox)
|
|
560
|
+
|
|
561
|
+
response.on('error', e => call.destroy(e as Error))
|
|
562
|
+
response.pipe(call as unknown as Writable) // Huan(202203): FIXME: as unknown as
|
|
563
|
+
|
|
564
|
+
} catch (e) {
|
|
565
|
+
log.error('PuppetServiceImpl', 'grpcError() messageFileStream() rejection: %s', e && (e as Error).message)
|
|
566
|
+
call.destroy(e as Error)
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
|
|
570
|
+
messageForward: async (call, callback) => {
|
|
571
|
+
log.verbose('PuppetServiceImpl', 'messageForward()')
|
|
572
|
+
|
|
573
|
+
try {
|
|
574
|
+
const conversationId = call.request.getConversationId()
|
|
575
|
+
const messageId = call.request.getMessageId()
|
|
576
|
+
|
|
577
|
+
const id = await puppet.messageForward(conversationId, messageId)
|
|
578
|
+
|
|
579
|
+
const response = new grpcPuppet.MessageForwardResponse()
|
|
580
|
+
if (id) {
|
|
581
|
+
response.setId(id)
|
|
582
|
+
{
|
|
583
|
+
/**
|
|
584
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
585
|
+
*/
|
|
586
|
+
const idWrapper = new StringValue()
|
|
587
|
+
idWrapper.setValue(id)
|
|
588
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
return callback(null, response)
|
|
593
|
+
|
|
594
|
+
} catch (e) {
|
|
595
|
+
return grpcError('messageForward', e, callback)
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
|
|
599
|
+
messageImage: async (call, callback) => {
|
|
600
|
+
log.verbose('PuppetServiceImpl', 'messageImage()')
|
|
601
|
+
|
|
602
|
+
try {
|
|
603
|
+
const id = call.request.getId()
|
|
604
|
+
const type = call.request.getType()
|
|
605
|
+
|
|
606
|
+
const fileBox = await puppet.messageImage(id, type)
|
|
607
|
+
const serializedFileBox = await serializeFileBox(fileBox)
|
|
608
|
+
|
|
609
|
+
const response = new grpcPuppet.MessageImageResponse()
|
|
610
|
+
response.setFileBox(serializedFileBox)
|
|
611
|
+
|
|
612
|
+
return callback(null, response)
|
|
613
|
+
|
|
614
|
+
} catch (e) {
|
|
615
|
+
return grpcError('messageImage', e, callback)
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* @deprecated will be removed after Dec 31, 2022
|
|
621
|
+
*/
|
|
622
|
+
messageImageStream: async (call) => {
|
|
623
|
+
log.verbose('PuppetServiceImpl', 'messageImageStream()')
|
|
624
|
+
|
|
625
|
+
try {
|
|
626
|
+
const id = call.request.getId()
|
|
627
|
+
const type = call.request.getType()
|
|
628
|
+
|
|
629
|
+
const fileBox = await puppet.messageImage(id, type) // as number as PUPPET.types.Image
|
|
630
|
+
const response = await packFileBoxToPb(grpcPuppet.MessageImageStreamResponse)(fileBox)
|
|
631
|
+
|
|
632
|
+
response.on('error', e => call.destroy(e as Error))
|
|
633
|
+
response.pipe(call as unknown as Writable) // Huan(202203) FIXME: as unknown as
|
|
634
|
+
|
|
635
|
+
} catch (e) {
|
|
636
|
+
log.error('PuppetServiceImpl', 'grpcError() messageImageStream() rejection: %s', (e as Error).message)
|
|
637
|
+
call.destroy(e as Error)
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
|
|
641
|
+
messageLocation: async (call, callback) => {
|
|
642
|
+
log.verbose('PuppetServiceImpl', 'messageLocation()')
|
|
643
|
+
|
|
644
|
+
try {
|
|
645
|
+
const id = call.request.getId()
|
|
646
|
+
|
|
647
|
+
const payload = await puppet.messageLocation(id)
|
|
648
|
+
|
|
649
|
+
const response = new grpcPuppet.MessageLocationResponse()
|
|
650
|
+
|
|
651
|
+
const pbLocationPayload = new grpcPuppet.LocationPayload()
|
|
652
|
+
pbLocationPayload.setLatitude(payload.latitude)
|
|
653
|
+
pbLocationPayload.setLongitude(payload.longitude)
|
|
654
|
+
pbLocationPayload.setAccuracy(payload.accuracy)
|
|
655
|
+
pbLocationPayload.setAddress(payload.address)
|
|
656
|
+
pbLocationPayload.setName(payload.name)
|
|
657
|
+
response.setLocation(pbLocationPayload)
|
|
658
|
+
|
|
659
|
+
return callback(null, response)
|
|
660
|
+
|
|
661
|
+
} catch (e) {
|
|
662
|
+
return grpcError('messageLocation', e, callback)
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
|
|
666
|
+
messageMiniProgram: async (call, callback) => {
|
|
667
|
+
log.verbose('PuppetServiceImpl', 'messageMiniProgram()')
|
|
668
|
+
|
|
669
|
+
try {
|
|
670
|
+
const id = call.request.getId()
|
|
671
|
+
|
|
672
|
+
const payload = await puppet.messageMiniProgram(id)
|
|
673
|
+
|
|
674
|
+
const response = new grpcPuppet.MessageMiniProgramResponse()
|
|
675
|
+
|
|
676
|
+
const pbMiniProgramPayload = new grpcPuppet.MiniProgramPayload()
|
|
677
|
+
if (payload.appid) { pbMiniProgramPayload.setAppid(payload.appid) }
|
|
678
|
+
if (payload.description) { pbMiniProgramPayload.setDescription(payload.description) }
|
|
679
|
+
if (payload.iconUrl) { pbMiniProgramPayload.setIconUrl(payload.iconUrl) }
|
|
680
|
+
if (payload.pagePath) { pbMiniProgramPayload.setPagePath(payload.pagePath) }
|
|
681
|
+
if (payload.shareId) { pbMiniProgramPayload.setShareId(payload.shareId) }
|
|
682
|
+
if (payload.thumbKey) { pbMiniProgramPayload.setThumbKey(payload.thumbKey) }
|
|
683
|
+
if (payload.thumbUrl) { pbMiniProgramPayload.setThumbUrl(payload.thumbUrl) }
|
|
684
|
+
if (payload.title) { pbMiniProgramPayload.setTitle(payload.title) }
|
|
685
|
+
if (payload.username) { pbMiniProgramPayload.setUsername(payload.username) }
|
|
686
|
+
response.setMiniProgram(pbMiniProgramPayload)
|
|
687
|
+
|
|
688
|
+
// Deprecated after Dec 31, 2022
|
|
689
|
+
response.setMiniProgramDeprecated(JSON.stringify(payload))
|
|
690
|
+
|
|
691
|
+
return callback(null, response)
|
|
692
|
+
|
|
693
|
+
} catch (e) {
|
|
694
|
+
return grpcError('messageMiniProgram', e, callback)
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
|
|
698
|
+
messagePayload: async (call, callback) => {
|
|
699
|
+
log.verbose('PuppetServiceImpl', 'messagePayload()')
|
|
700
|
+
|
|
701
|
+
try {
|
|
702
|
+
const id = call.request.getId()
|
|
703
|
+
|
|
704
|
+
const payload = await puppet.messagePayload(id)
|
|
705
|
+
|
|
706
|
+
const mentionIdList = ('mentionIdList' in payload)
|
|
707
|
+
? payload.mentionIdList || []
|
|
708
|
+
: []
|
|
709
|
+
|
|
710
|
+
const response = new grpcPuppet.MessagePayloadResponse()
|
|
711
|
+
response.setFilename(payload.filename || '')
|
|
712
|
+
/**
|
|
713
|
+
* Huan(202203):`payload.fromId` is deprecated, will be removed in v2.0
|
|
714
|
+
*/
|
|
715
|
+
response.setTalkerId(payload.talkerId || payload.fromId || '')
|
|
716
|
+
response.setId(payload.id)
|
|
717
|
+
response.setMentionIdsList(mentionIdList)
|
|
718
|
+
response.setRoomId(payload.roomId || '')
|
|
719
|
+
response.setText(payload.text || '')
|
|
720
|
+
|
|
721
|
+
response.setReceiveTime(timestampFromMilliseconds(payload.timestamp))
|
|
722
|
+
// Deprecated: will be removed after Dec 31, 2022
|
|
723
|
+
response.setTimestampDeprecated(Math.floor(payload.timestamp))
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* Huan(202203):`payload.toId` is deprecated, will be removed in v2.0
|
|
727
|
+
*/
|
|
728
|
+
response.setListenerId(payload.listenerId || payload.toId || '')
|
|
729
|
+
response.setType(payload.type as grpcPuppet.MessageTypeMap[keyof grpcPuppet.MessageTypeMap])
|
|
730
|
+
|
|
731
|
+
return callback(null, response)
|
|
732
|
+
|
|
733
|
+
} catch (e) {
|
|
734
|
+
return grpcError('messagePayload', e, callback)
|
|
735
|
+
}
|
|
736
|
+
},
|
|
737
|
+
|
|
738
|
+
messageRecall: async (call, callback) => {
|
|
739
|
+
log.verbose('PuppetServiceImpl', 'messageRecall()')
|
|
740
|
+
|
|
741
|
+
try {
|
|
742
|
+
const id = call.request.getId()
|
|
743
|
+
|
|
744
|
+
const success = await puppet.messageRecall(id)
|
|
745
|
+
|
|
746
|
+
const response = new grpcPuppet.MessageRecallResponse()
|
|
747
|
+
response.setSuccess(success)
|
|
748
|
+
|
|
749
|
+
return callback(null, response)
|
|
750
|
+
|
|
751
|
+
} catch (e) {
|
|
752
|
+
return grpcError('messageRecall', e, callback)
|
|
753
|
+
}
|
|
754
|
+
},
|
|
755
|
+
|
|
756
|
+
messageSendContact: async (call, callback) => {
|
|
757
|
+
log.verbose('PuppetServiceImpl', 'messageSendContact()')
|
|
758
|
+
|
|
759
|
+
try {
|
|
760
|
+
const conversationId = call.request.getConversationId()
|
|
761
|
+
const contactId = call.request.getContactId()
|
|
762
|
+
|
|
763
|
+
const messageId = await puppet.messageSendContact(conversationId, contactId)
|
|
764
|
+
|
|
765
|
+
const response = new grpcPuppet.MessageSendContactResponse()
|
|
766
|
+
|
|
767
|
+
if (messageId) {
|
|
768
|
+
response.setId(messageId)
|
|
769
|
+
{
|
|
770
|
+
/**
|
|
771
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
772
|
+
*/
|
|
773
|
+
const idWrapper = new StringValue()
|
|
774
|
+
idWrapper.setValue(messageId)
|
|
775
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
return callback(null, response)
|
|
780
|
+
|
|
781
|
+
} catch (e) {
|
|
782
|
+
return grpcError('messageSendContact', e, callback)
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
|
|
786
|
+
messageSendFile: async (call, callback) => {
|
|
787
|
+
log.verbose('PuppetServiceImpl', 'messageSendFile()')
|
|
788
|
+
|
|
789
|
+
try {
|
|
790
|
+
const conversationId = call.request.getConversationId()
|
|
791
|
+
const jsonText = call.request.getFileBox()
|
|
792
|
+
|
|
793
|
+
const fileBox = FileBoxUuid.fromJSON(jsonText)
|
|
794
|
+
|
|
795
|
+
const messageId = await puppet.messageSendFile(conversationId, fileBox)
|
|
796
|
+
|
|
797
|
+
const response = new grpcPuppet.MessageSendFileResponse()
|
|
798
|
+
|
|
799
|
+
if (messageId) {
|
|
800
|
+
response.setId(messageId)
|
|
801
|
+
{
|
|
802
|
+
/**
|
|
803
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
804
|
+
*/
|
|
805
|
+
const idWrapper = new StringValue()
|
|
806
|
+
idWrapper.setValue(messageId)
|
|
807
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
return callback(null, response)
|
|
812
|
+
|
|
813
|
+
} catch (e) {
|
|
814
|
+
return grpcError('messageSendFile', e, callback)
|
|
815
|
+
}
|
|
816
|
+
},
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* @deprecated will be removed after Dec 31, 2022
|
|
820
|
+
*/
|
|
821
|
+
messageSendFileStream: async (call, callback) => {
|
|
822
|
+
log.verbose('PuppetServiceImpl', 'messageSendFileStream()')
|
|
823
|
+
|
|
824
|
+
try {
|
|
825
|
+
const requestArgs = await unpackConversationIdFileBoxArgsFromPb(call)
|
|
826
|
+
const conversationId = requestArgs.conversationId
|
|
827
|
+
const fileBox = requestArgs.fileBox
|
|
828
|
+
|
|
829
|
+
const messageId = await puppet.messageSendFile(conversationId, fileBox)
|
|
830
|
+
|
|
831
|
+
const response = new grpcPuppet.MessageSendFileStreamResponse()
|
|
832
|
+
|
|
833
|
+
if (messageId) {
|
|
834
|
+
response.setId(messageId)
|
|
835
|
+
{
|
|
836
|
+
/**
|
|
837
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
838
|
+
*/
|
|
839
|
+
const idWrapper = new StringValue()
|
|
840
|
+
idWrapper.setValue(messageId)
|
|
841
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
return callback(null, response)
|
|
846
|
+
|
|
847
|
+
} catch (e) {
|
|
848
|
+
return grpcError('messageSendFileStream', e, callback)
|
|
849
|
+
}
|
|
850
|
+
},
|
|
851
|
+
|
|
852
|
+
messageSendLocation: async (call, callback) => {
|
|
853
|
+
log.verbose('PuppetServiceImpl', 'messageSendLocation()')
|
|
854
|
+
|
|
855
|
+
try {
|
|
856
|
+
const conversationId = call.request.getConversationId()
|
|
857
|
+
const pbLocationPayload = call.request.getLocation()
|
|
858
|
+
|
|
859
|
+
const payload: PUPPET.payloads.Location = {
|
|
860
|
+
accuracy : 0,
|
|
861
|
+
address : 'NOADDRESS',
|
|
862
|
+
latitude : 0,
|
|
863
|
+
longitude : 0,
|
|
864
|
+
name : 'NONAME',
|
|
865
|
+
...pbLocationPayload,
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
const messageId = await puppet.messageSendLocation(conversationId, payload)
|
|
869
|
+
|
|
870
|
+
const response = new grpcPuppet.MessageSendLocationResponse()
|
|
871
|
+
|
|
872
|
+
if (messageId) {
|
|
873
|
+
response.setId(messageId)
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
return callback(null, response)
|
|
877
|
+
|
|
878
|
+
} catch (e) {
|
|
879
|
+
return grpcError('messageSendLocation', e, callback)
|
|
880
|
+
}
|
|
881
|
+
},
|
|
882
|
+
|
|
883
|
+
messageSendMiniProgram: async (call, callback) => {
|
|
884
|
+
log.verbose('PuppetServiceImpl', 'messageSendMiniProgram()')
|
|
885
|
+
|
|
886
|
+
try {
|
|
887
|
+
const conversationId = call.request.getConversationId()
|
|
888
|
+
let pbMiniProgramPayload = call.request.getMiniProgram()?.toObject()
|
|
889
|
+
if (!pbMiniProgramPayload) {
|
|
890
|
+
// Deprecated: will be removed after Dec 31, 2022
|
|
891
|
+
const jsonText = call.request.getMiniProgramDeprecated()
|
|
892
|
+
pbMiniProgramPayload = JSON.parse(jsonText)
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
const payload: PUPPET.payloads.MiniProgram = {
|
|
896
|
+
...pbMiniProgramPayload,
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
const messageId = await puppet.messageSendMiniProgram(conversationId, payload)
|
|
900
|
+
|
|
901
|
+
const response = new grpcPuppet.MessageSendMiniProgramResponse()
|
|
902
|
+
|
|
903
|
+
if (messageId) {
|
|
904
|
+
response.setId(messageId)
|
|
905
|
+
{
|
|
906
|
+
/**
|
|
907
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
908
|
+
*/
|
|
909
|
+
const idWrapper = new StringValue()
|
|
910
|
+
idWrapper.setValue(messageId)
|
|
911
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
return callback(null, response)
|
|
916
|
+
|
|
917
|
+
} catch (e) {
|
|
918
|
+
return grpcError('messageSendMiniProgram', e, callback)
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
|
|
922
|
+
messageSendText: async (call, callback) => {
|
|
923
|
+
log.verbose('PuppetServiceImpl', 'messageSendText()')
|
|
924
|
+
|
|
925
|
+
try {
|
|
926
|
+
const conversationId = call.request.getConversationId()
|
|
927
|
+
const text = call.request.getText()
|
|
928
|
+
const mentionIdList = call.request.getMentionalIdsList()
|
|
929
|
+
|
|
930
|
+
const messageId = await puppet.messageSendText(conversationId, text, mentionIdList)
|
|
931
|
+
|
|
932
|
+
const response = new grpcPuppet.MessageSendTextResponse()
|
|
933
|
+
|
|
934
|
+
if (messageId) {
|
|
935
|
+
response.setId(messageId)
|
|
936
|
+
{
|
|
937
|
+
/**
|
|
938
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
939
|
+
*/
|
|
940
|
+
const idWrapper = new StringValue()
|
|
941
|
+
idWrapper.setValue(messageId)
|
|
942
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
return callback(null, response)
|
|
947
|
+
|
|
948
|
+
} catch (e) {
|
|
949
|
+
return grpcError('messageSendText', e, callback)
|
|
950
|
+
}
|
|
951
|
+
},
|
|
952
|
+
|
|
953
|
+
messageSendUrl: async (call, callback) => {
|
|
954
|
+
log.verbose('PuppetServiceImpl', 'messageSendUrl()')
|
|
955
|
+
|
|
956
|
+
try {
|
|
957
|
+
const conversationId = call.request.getConversationId()
|
|
958
|
+
let pbUrlLinkPayload = call.request.getUrlLink()?.toObject()
|
|
959
|
+
|
|
960
|
+
if (!pbUrlLinkPayload) {
|
|
961
|
+
// Deprecated: will be removed after Dec 31, 2022
|
|
962
|
+
const jsonText = call.request.getUrlLinkDeprecated()
|
|
963
|
+
pbUrlLinkPayload = JSON.parse(jsonText)
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
const payload: PUPPET.payloads.UrlLink = {
|
|
967
|
+
title : 'NOTITLE',
|
|
968
|
+
url : 'NOURL',
|
|
969
|
+
...pbUrlLinkPayload,
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
const messageId = await puppet.messageSendUrl(conversationId, payload)
|
|
973
|
+
|
|
974
|
+
const response = new grpcPuppet.MessageSendUrlResponse()
|
|
975
|
+
|
|
976
|
+
if (messageId) {
|
|
977
|
+
response.setId(messageId)
|
|
978
|
+
{
|
|
979
|
+
/**
|
|
980
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
981
|
+
*/
|
|
982
|
+
const idWrapper = new StringValue()
|
|
983
|
+
idWrapper.setValue(messageId)
|
|
984
|
+
response.setIdStringValueDeprecated(idWrapper)
|
|
985
|
+
}
|
|
986
|
+
}
|
|
987
|
+
|
|
988
|
+
return callback(null, response)
|
|
989
|
+
|
|
990
|
+
} catch (e) {
|
|
991
|
+
return grpcError('messageSendUrl', e, callback)
|
|
992
|
+
}
|
|
993
|
+
},
|
|
994
|
+
|
|
995
|
+
messageUrl: async (call, callback) => {
|
|
996
|
+
log.verbose('PuppetServiceImpl', 'messageUrl()')
|
|
997
|
+
|
|
998
|
+
try {
|
|
999
|
+
const id = call.request.getId()
|
|
1000
|
+
const payload = await puppet.messageUrl(id)
|
|
1001
|
+
|
|
1002
|
+
const response = new grpcPuppet.MessageUrlResponse()
|
|
1003
|
+
|
|
1004
|
+
const pbUrlLinkPayload = new grpcPuppet.UrlLinkPayload()
|
|
1005
|
+
pbUrlLinkPayload.setTitle(payload.title)
|
|
1006
|
+
pbUrlLinkPayload.setUrl(payload.url)
|
|
1007
|
+
if (payload.thumbnailUrl) { pbUrlLinkPayload.setThumbnailUrl(payload.thumbnailUrl) }
|
|
1008
|
+
if (payload.description) { pbUrlLinkPayload.setDescription(payload.description) }
|
|
1009
|
+
response.setUrlLink(pbUrlLinkPayload)
|
|
1010
|
+
|
|
1011
|
+
// Deprecated: will be removed after Dec 31, 2022
|
|
1012
|
+
response.setUrlLinkDeprecated(JSON.stringify(payload))
|
|
1013
|
+
|
|
1014
|
+
return callback(null, response)
|
|
1015
|
+
|
|
1016
|
+
} catch (e) {
|
|
1017
|
+
return grpcError('messageUrl', e, callback)
|
|
1018
|
+
}
|
|
1019
|
+
},
|
|
1020
|
+
|
|
1021
|
+
roomAdd: async (call, callback) => {
|
|
1022
|
+
log.verbose('PuppetServiceImpl', 'roomAdd()')
|
|
1023
|
+
|
|
1024
|
+
try {
|
|
1025
|
+
const roomId = call.request.getId()
|
|
1026
|
+
const contactId = call.request.getContactId()
|
|
1027
|
+
const inviteOnly = call.request.getInviteOnly()
|
|
1028
|
+
|
|
1029
|
+
await puppet.roomAdd(roomId, contactId, inviteOnly)
|
|
1030
|
+
|
|
1031
|
+
return callback(null, new grpcPuppet.RoomAddResponse())
|
|
1032
|
+
|
|
1033
|
+
} catch (e) {
|
|
1034
|
+
return grpcError('roomAdd', e, callback)
|
|
1035
|
+
}
|
|
1036
|
+
},
|
|
1037
|
+
|
|
1038
|
+
roomAnnounce: async (call, callback) => {
|
|
1039
|
+
log.verbose('PuppetServiceImpl', 'roomAnnounce()')
|
|
1040
|
+
|
|
1041
|
+
try {
|
|
1042
|
+
const roomId = call.request.getId()
|
|
1043
|
+
|
|
1044
|
+
/**
|
|
1045
|
+
* Set
|
|
1046
|
+
*/
|
|
1047
|
+
if (call.request.hasText()) {
|
|
1048
|
+
await puppet.roomAnnounce(roomId, call.request.getText())
|
|
1049
|
+
return callback(null, new grpcPuppet.RoomAnnounceResponse())
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
/**
|
|
1053
|
+
* Get
|
|
1054
|
+
*/
|
|
1055
|
+
const text = await puppet.roomAnnounce(roomId)
|
|
1056
|
+
|
|
1057
|
+
const response = new grpcPuppet.RoomAnnounceResponse()
|
|
1058
|
+
response.setText(text)
|
|
1059
|
+
|
|
1060
|
+
return callback(null, response)
|
|
1061
|
+
|
|
1062
|
+
} catch (e) {
|
|
1063
|
+
return grpcError('roomAnnounce', e, callback)
|
|
1064
|
+
}
|
|
1065
|
+
},
|
|
1066
|
+
|
|
1067
|
+
roomAvatar: async (call, callback) => {
|
|
1068
|
+
log.verbose('PuppetServiceImpl', 'roomAvatar()')
|
|
1069
|
+
|
|
1070
|
+
try {
|
|
1071
|
+
const roomId = call.request.getId()
|
|
1072
|
+
|
|
1073
|
+
const fileBox = await puppet.roomAvatar(roomId)
|
|
1074
|
+
const serializedFileBox = await serializeFileBox(fileBox)
|
|
1075
|
+
|
|
1076
|
+
const response = new grpcPuppet.RoomAvatarResponse()
|
|
1077
|
+
response.setFileBox(serializedFileBox)
|
|
1078
|
+
|
|
1079
|
+
return callback(null, response)
|
|
1080
|
+
|
|
1081
|
+
} catch (e) {
|
|
1082
|
+
return grpcError('roomAvatar', e, callback)
|
|
1083
|
+
}
|
|
1084
|
+
},
|
|
1085
|
+
|
|
1086
|
+
roomCreate: async (call, callback) => {
|
|
1087
|
+
log.verbose('PuppetServiceImpl', 'roomCreate()')
|
|
1088
|
+
|
|
1089
|
+
try {
|
|
1090
|
+
const contactIdList = call.request.getContactIdsList()
|
|
1091
|
+
const topic = call.request.getTopic()
|
|
1092
|
+
|
|
1093
|
+
const roomId = await puppet.roomCreate(contactIdList, topic)
|
|
1094
|
+
|
|
1095
|
+
const response = new grpcPuppet.RoomCreateResponse()
|
|
1096
|
+
response.setId(roomId)
|
|
1097
|
+
|
|
1098
|
+
return callback(null, response)
|
|
1099
|
+
|
|
1100
|
+
} catch (e) {
|
|
1101
|
+
return grpcError('roomCreate', e, callback)
|
|
1102
|
+
}
|
|
1103
|
+
},
|
|
1104
|
+
|
|
1105
|
+
roomDel: async (call, callback) => {
|
|
1106
|
+
log.verbose('PuppetServiceImpl', 'roomDel()')
|
|
1107
|
+
|
|
1108
|
+
try {
|
|
1109
|
+
const roomId = call.request.getId()
|
|
1110
|
+
const contactId = call.request.getContactId()
|
|
1111
|
+
|
|
1112
|
+
await puppet.roomDel(roomId, contactId)
|
|
1113
|
+
|
|
1114
|
+
return callback(null, new grpcPuppet.RoomDelResponse())
|
|
1115
|
+
|
|
1116
|
+
} catch (e) {
|
|
1117
|
+
return grpcError('roomDel', e, callback)
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
|
|
1121
|
+
roomInvitationAccept: async (call, callback) => {
|
|
1122
|
+
log.verbose('PuppetServiceImpl', 'roomInvitationAccept()')
|
|
1123
|
+
|
|
1124
|
+
try {
|
|
1125
|
+
const id = call.request.getId()
|
|
1126
|
+
|
|
1127
|
+
await puppet.roomInvitationAccept(id)
|
|
1128
|
+
|
|
1129
|
+
return callback(null, new grpcPuppet.RoomInvitationAcceptResponse())
|
|
1130
|
+
|
|
1131
|
+
} catch (e) {
|
|
1132
|
+
return grpcError('roomInvitationAccept', e, callback)
|
|
1133
|
+
}
|
|
1134
|
+
},
|
|
1135
|
+
|
|
1136
|
+
roomInvitationPayload: async (call, callback) => {
|
|
1137
|
+
log.verbose('PuppetServiceImpl', 'roomInvitationPayload()')
|
|
1138
|
+
|
|
1139
|
+
try {
|
|
1140
|
+
const roomInvitationId = call.request.getId()
|
|
1141
|
+
/**
|
|
1142
|
+
* Set
|
|
1143
|
+
*/
|
|
1144
|
+
{
|
|
1145
|
+
const jsonText = call.request.getPayload()
|
|
1146
|
+
|
|
1147
|
+
if (jsonText) {
|
|
1148
|
+
const payload = JSON.parse(jsonText) as PUPPET.payloads.RoomInvitation
|
|
1149
|
+
await puppet.roomInvitationPayload(roomInvitationId, payload)
|
|
1150
|
+
|
|
1151
|
+
return callback(null, new grpcPuppet.RoomInvitationPayloadResponse())
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
{
|
|
1155
|
+
/**
|
|
1156
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
1157
|
+
*/
|
|
1158
|
+
const payloadWrapper = call.request.getPayloadStringValueDeprecated()
|
|
1159
|
+
|
|
1160
|
+
if (payloadWrapper) {
|
|
1161
|
+
const jsonText = payloadWrapper.getValue()
|
|
1162
|
+
const payload = JSON.parse(jsonText) as PUPPET.payloads.RoomInvitation
|
|
1163
|
+
await puppet.roomInvitationPayload(roomInvitationId, payload)
|
|
1164
|
+
|
|
1165
|
+
return callback(null, new grpcPuppet.RoomInvitationPayloadResponse())
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
/**
|
|
1171
|
+
* Get
|
|
1172
|
+
*/
|
|
1173
|
+
const payload = await puppet.roomInvitationPayload(roomInvitationId)
|
|
1174
|
+
|
|
1175
|
+
const response = new grpcPuppet.RoomInvitationPayloadResponse()
|
|
1176
|
+
response.setAvatar(payload.avatar)
|
|
1177
|
+
response.setId(payload.id)
|
|
1178
|
+
response.setInvitation(payload.invitation)
|
|
1179
|
+
response.setInviterId(payload.inviterId)
|
|
1180
|
+
response.setReceiverId(payload.receiverId)
|
|
1181
|
+
response.setMemberCount(payload.memberCount)
|
|
1182
|
+
response.setMemberIdsList(payload.memberIdList)
|
|
1183
|
+
|
|
1184
|
+
response.setReceiveTime(timestampFromMilliseconds(payload.timestamp))
|
|
1185
|
+
|
|
1186
|
+
{
|
|
1187
|
+
// Deprecated: will be removed after Dec 31, 2022
|
|
1188
|
+
const deprecated = true
|
|
1189
|
+
void deprecated
|
|
1190
|
+
response.setTimestampUint64Deprecated(Math.floor(payload.timestamp))
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
response.setTopic(payload.topic)
|
|
1194
|
+
|
|
1195
|
+
return callback(null, response)
|
|
1196
|
+
|
|
1197
|
+
} catch (e) {
|
|
1198
|
+
return grpcError('roomInvitationPayload', e, callback)
|
|
1199
|
+
}
|
|
1200
|
+
},
|
|
1201
|
+
|
|
1202
|
+
roomList: async (call, callback) => {
|
|
1203
|
+
log.verbose('PuppetServiceImpl', 'roomList()')
|
|
1204
|
+
void call
|
|
1205
|
+
|
|
1206
|
+
try {
|
|
1207
|
+
const roomIdList = await puppet.roomList()
|
|
1208
|
+
|
|
1209
|
+
const response = new grpcPuppet.RoomListResponse()
|
|
1210
|
+
response.setIdsList(roomIdList)
|
|
1211
|
+
|
|
1212
|
+
return callback(null, response)
|
|
1213
|
+
|
|
1214
|
+
} catch (e) {
|
|
1215
|
+
return grpcError('roomList', e, callback)
|
|
1216
|
+
}
|
|
1217
|
+
},
|
|
1218
|
+
|
|
1219
|
+
roomMemberList: async (call, callback) => {
|
|
1220
|
+
log.verbose('PuppetServiceImpl', 'roomMemberList()')
|
|
1221
|
+
|
|
1222
|
+
try {
|
|
1223
|
+
const roomId = call.request.getId()
|
|
1224
|
+
|
|
1225
|
+
const roomMemberIdList = await puppet.roomMemberList(roomId)
|
|
1226
|
+
|
|
1227
|
+
const response = new grpcPuppet.RoomMemberListResponse()
|
|
1228
|
+
response.setMemberIdsList(roomMemberIdList)
|
|
1229
|
+
|
|
1230
|
+
return callback(null, response)
|
|
1231
|
+
|
|
1232
|
+
} catch (e) {
|
|
1233
|
+
return grpcError('roomMemberList', e, callback)
|
|
1234
|
+
}
|
|
1235
|
+
},
|
|
1236
|
+
|
|
1237
|
+
roomMemberPayload: async (call, callback) => {
|
|
1238
|
+
log.verbose('PuppetServiceImpl', 'roomMemberPayload()')
|
|
1239
|
+
|
|
1240
|
+
try {
|
|
1241
|
+
const roomId = call.request.getId()
|
|
1242
|
+
const memberId = call.request.getMemberId()
|
|
1243
|
+
|
|
1244
|
+
const payload = await puppet.roomMemberPayload(roomId, memberId)
|
|
1245
|
+
|
|
1246
|
+
const response = new grpcPuppet.RoomMemberPayloadResponse()
|
|
1247
|
+
|
|
1248
|
+
response.setAvatar(payload.avatar)
|
|
1249
|
+
response.setId(payload.id)
|
|
1250
|
+
response.setInviterId(payload.inviterId || '')
|
|
1251
|
+
response.setName(payload.name)
|
|
1252
|
+
response.setRoomAlias(payload.roomAlias || '')
|
|
1253
|
+
|
|
1254
|
+
return callback(null, response)
|
|
1255
|
+
|
|
1256
|
+
} catch (e) {
|
|
1257
|
+
return grpcError('roomMemberPayload', e, callback)
|
|
1258
|
+
}
|
|
1259
|
+
},
|
|
1260
|
+
|
|
1261
|
+
roomPayload: async (call, callback) => {
|
|
1262
|
+
log.verbose('PuppetServiceImpl', 'roomPayload()')
|
|
1263
|
+
|
|
1264
|
+
try {
|
|
1265
|
+
const roomId = call.request.getId()
|
|
1266
|
+
|
|
1267
|
+
const payload = await puppet.roomPayload(roomId)
|
|
1268
|
+
|
|
1269
|
+
const response = new grpcPuppet.RoomPayloadResponse()
|
|
1270
|
+
response.setAdminIdsList(payload.adminIdList)
|
|
1271
|
+
response.setAvatar(payload.avatar || '')
|
|
1272
|
+
response.setHandle(payload.handle || '')
|
|
1273
|
+
response.setId(payload.id)
|
|
1274
|
+
response.setMemberIdsList(payload.memberIdList)
|
|
1275
|
+
response.setOwnerId(payload.ownerId || '')
|
|
1276
|
+
response.setTopic(payload.topic)
|
|
1277
|
+
|
|
1278
|
+
return callback(null, response)
|
|
1279
|
+
|
|
1280
|
+
} catch (e) {
|
|
1281
|
+
return grpcError('roomPayload', e, callback)
|
|
1282
|
+
}
|
|
1283
|
+
},
|
|
1284
|
+
|
|
1285
|
+
roomQRCode: async (call, callback) => {
|
|
1286
|
+
log.verbose('PuppetServiceImpl', 'roomQRCode()')
|
|
1287
|
+
|
|
1288
|
+
try {
|
|
1289
|
+
const roomId = call.request.getId()
|
|
1290
|
+
|
|
1291
|
+
const qrcode = await puppet.roomQRCode(roomId)
|
|
1292
|
+
|
|
1293
|
+
const response = new grpcPuppet.RoomQRCodeResponse()
|
|
1294
|
+
response.setQrcode(qrcode)
|
|
1295
|
+
|
|
1296
|
+
return callback(null, response)
|
|
1297
|
+
|
|
1298
|
+
} catch (e) {
|
|
1299
|
+
return grpcError('roomQRCode', e, callback)
|
|
1300
|
+
}
|
|
1301
|
+
},
|
|
1302
|
+
|
|
1303
|
+
roomQuit: async (call, callback) => {
|
|
1304
|
+
log.verbose('PuppetServiceImpl', 'roomQuit()')
|
|
1305
|
+
|
|
1306
|
+
try {
|
|
1307
|
+
const roomId = call.request.getId()
|
|
1308
|
+
|
|
1309
|
+
await puppet.roomQuit(roomId)
|
|
1310
|
+
|
|
1311
|
+
return callback(null, new grpcPuppet.RoomQuitResponse())
|
|
1312
|
+
|
|
1313
|
+
} catch (e) {
|
|
1314
|
+
return grpcError('roomQuit', e, callback)
|
|
1315
|
+
}
|
|
1316
|
+
},
|
|
1317
|
+
|
|
1318
|
+
roomTopic: async (call, callback) => {
|
|
1319
|
+
log.verbose('PuppetServiceImpl', 'roomTopic()')
|
|
1320
|
+
|
|
1321
|
+
try {
|
|
1322
|
+
const roomId = call.request.getId()
|
|
1323
|
+
|
|
1324
|
+
/**
|
|
1325
|
+
* Set
|
|
1326
|
+
*/
|
|
1327
|
+
if (call.request.hasTopic()) {
|
|
1328
|
+
await puppet.roomTopic(roomId, call.request.getTopic())
|
|
1329
|
+
|
|
1330
|
+
return callback(null, new grpcPuppet.RoomTopicResponse())
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
/**
|
|
1334
|
+
* Get
|
|
1335
|
+
*/
|
|
1336
|
+
|
|
1337
|
+
const topic = await puppet.roomTopic(roomId)
|
|
1338
|
+
|
|
1339
|
+
const response = new grpcPuppet.RoomTopicResponse()
|
|
1340
|
+
response.setTopic(topic)
|
|
1341
|
+
|
|
1342
|
+
return callback(null, response)
|
|
1343
|
+
|
|
1344
|
+
} catch (e) {
|
|
1345
|
+
return grpcError('roomTopic', e, callback)
|
|
1346
|
+
}
|
|
1347
|
+
},
|
|
1348
|
+
|
|
1349
|
+
start: async (call, callback) => {
|
|
1350
|
+
log.verbose('PuppetServiceImpl', 'start()')
|
|
1351
|
+
void call
|
|
1352
|
+
|
|
1353
|
+
try {
|
|
1354
|
+
await timeoutPromise(
|
|
1355
|
+
puppet.start(),
|
|
1356
|
+
15 * 1000, // 15 seconds timeout
|
|
1357
|
+
)
|
|
1358
|
+
|
|
1359
|
+
return callback(null, new grpcPuppet.StartResponse())
|
|
1360
|
+
|
|
1361
|
+
} catch (e) {
|
|
1362
|
+
return grpcError('start', e, callback)
|
|
1363
|
+
}
|
|
1364
|
+
},
|
|
1365
|
+
|
|
1366
|
+
stop: async (call, callback) => {
|
|
1367
|
+
log.verbose('PuppetServiceImpl', 'stop()')
|
|
1368
|
+
void call
|
|
1369
|
+
|
|
1370
|
+
try {
|
|
1371
|
+
|
|
1372
|
+
if (eventStreamManager.busy()) {
|
|
1373
|
+
eventStreamManager.stop()
|
|
1374
|
+
} else {
|
|
1375
|
+
log.error('PuppetServiceImpl', 'stop() eventStreamManager is not busy?')
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
readyPayload = undefined
|
|
1379
|
+
|
|
1380
|
+
await timeoutPromise(
|
|
1381
|
+
puppet.stop(),
|
|
1382
|
+
15 * 1000, // 15 seconds timeout
|
|
1383
|
+
)
|
|
1384
|
+
|
|
1385
|
+
return callback(null, new grpcPuppet.StopResponse())
|
|
1386
|
+
|
|
1387
|
+
} catch (e) {
|
|
1388
|
+
return grpcError('stop', e, callback)
|
|
1389
|
+
}
|
|
1390
|
+
},
|
|
1391
|
+
|
|
1392
|
+
tagContactAdd: async (call, callback) => {
|
|
1393
|
+
log.verbose('PuppetServiceImpl', 'tagContactAdd()')
|
|
1394
|
+
|
|
1395
|
+
try {
|
|
1396
|
+
const tagId = call.request.getId()
|
|
1397
|
+
const contactId = call.request.getContactId()
|
|
1398
|
+
|
|
1399
|
+
await puppet.tagContactAdd(tagId, contactId)
|
|
1400
|
+
|
|
1401
|
+
return callback(null, new grpcPuppet.TagContactAddResponse())
|
|
1402
|
+
|
|
1403
|
+
} catch (e) {
|
|
1404
|
+
return grpcError('tagContactAdd', e, callback)
|
|
1405
|
+
}
|
|
1406
|
+
},
|
|
1407
|
+
|
|
1408
|
+
tagContactDelete: async (call, callback) => {
|
|
1409
|
+
log.verbose('PuppetServiceImpl', 'tagContactDelete()')
|
|
1410
|
+
|
|
1411
|
+
try {
|
|
1412
|
+
const tagId = call.request.getId()
|
|
1413
|
+
|
|
1414
|
+
await puppet.tagContactDelete(tagId)
|
|
1415
|
+
|
|
1416
|
+
return callback(null, new grpcPuppet.TagContactDeleteResponse())
|
|
1417
|
+
|
|
1418
|
+
} catch (e) {
|
|
1419
|
+
return grpcError('tagContactDelete', e, callback)
|
|
1420
|
+
}
|
|
1421
|
+
},
|
|
1422
|
+
|
|
1423
|
+
tagContactList: async (call, callback) => {
|
|
1424
|
+
log.verbose('PuppetServiceImpl', 'tagContactList()')
|
|
1425
|
+
|
|
1426
|
+
try {
|
|
1427
|
+
const contactId = call.request.getContactId()
|
|
1428
|
+
|
|
1429
|
+
/**
|
|
1430
|
+
* for a specific contact
|
|
1431
|
+
*/
|
|
1432
|
+
if (contactId) {
|
|
1433
|
+
const tagIdList = await puppet.tagContactList(contactId)
|
|
1434
|
+
|
|
1435
|
+
const response = new grpcPuppet.TagContactListResponse()
|
|
1436
|
+
response.setIdsList(tagIdList)
|
|
1437
|
+
|
|
1438
|
+
return callback(null, new grpcPuppet.TagContactListResponse())
|
|
1439
|
+
}
|
|
1440
|
+
|
|
1441
|
+
{
|
|
1442
|
+
/**
|
|
1443
|
+
* Huan(202110): Deprecated: will be removed after Dec 31, 2022
|
|
1444
|
+
*/
|
|
1445
|
+
const contactIdWrapper = call.request.getContactIdStringValueDeprecated()
|
|
1446
|
+
|
|
1447
|
+
if (contactIdWrapper) {
|
|
1448
|
+
const contactId = contactIdWrapper.getValue()
|
|
1449
|
+
|
|
1450
|
+
const tagIdList = await puppet.tagContactList(contactId)
|
|
1451
|
+
|
|
1452
|
+
const response = new grpcPuppet.TagContactListResponse()
|
|
1453
|
+
response.setIdsList(tagIdList)
|
|
1454
|
+
|
|
1455
|
+
return callback(null, new grpcPuppet.TagContactListResponse())
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
/**
|
|
1460
|
+
* get all tags for all contact
|
|
1461
|
+
*/
|
|
1462
|
+
const tagIdList = await puppet.tagContactList()
|
|
1463
|
+
|
|
1464
|
+
const response = new grpcPuppet.TagContactListResponse()
|
|
1465
|
+
response.setIdsList(tagIdList)
|
|
1466
|
+
|
|
1467
|
+
return callback(null, response)
|
|
1468
|
+
|
|
1469
|
+
} catch (e) {
|
|
1470
|
+
return grpcError('tagContactList', e, callback)
|
|
1471
|
+
}
|
|
1472
|
+
},
|
|
1473
|
+
|
|
1474
|
+
tagContactRemove: async (call, callback) => {
|
|
1475
|
+
log.verbose('PuppetServiceImpl', 'tagContactRemove()')
|
|
1476
|
+
|
|
1477
|
+
try {
|
|
1478
|
+
const tagId = call.request.getId()
|
|
1479
|
+
const contactId = call.request.getContactId()
|
|
1480
|
+
|
|
1481
|
+
await puppet.tagContactRemove(tagId, contactId)
|
|
1482
|
+
|
|
1483
|
+
return callback(null, new grpcPuppet.TagContactRemoveResponse())
|
|
1484
|
+
|
|
1485
|
+
} catch (e) {
|
|
1486
|
+
return grpcError('tagContactRemove', e, callback)
|
|
1487
|
+
}
|
|
1488
|
+
},
|
|
1489
|
+
|
|
1490
|
+
version: async (call, callback) => {
|
|
1491
|
+
log.verbose('PuppetServiceImpl', 'version() v%s', puppet.version())
|
|
1492
|
+
void call
|
|
1493
|
+
|
|
1494
|
+
try {
|
|
1495
|
+
const version = puppet.version()
|
|
1496
|
+
|
|
1497
|
+
const response = new grpcPuppet.VersionResponse()
|
|
1498
|
+
response.setVersion(version)
|
|
1499
|
+
|
|
1500
|
+
return callback(null, response)
|
|
1501
|
+
|
|
1502
|
+
} catch (e) {
|
|
1503
|
+
return grpcError('version', e, callback)
|
|
1504
|
+
}
|
|
1505
|
+
},
|
|
1506
|
+
|
|
1507
|
+
download: async (call) => {
|
|
1508
|
+
log.verbose('PuppetServiceImpl', 'download()')
|
|
1509
|
+
|
|
1510
|
+
const uuid = call.request.getId()
|
|
1511
|
+
const fileBox = FileBoxUuid.fromUuid(uuid, { name: 'uuid.dat' })
|
|
1512
|
+
|
|
1513
|
+
fileBox
|
|
1514
|
+
.pipe(chunkEncoder(grpcPuppet.DownloadResponse))
|
|
1515
|
+
.pipe(call as unknown as Writable) // Huan(202203) FIXME: as unknown as
|
|
1516
|
+
},
|
|
1517
|
+
|
|
1518
|
+
upload: async (call, callback) => {
|
|
1519
|
+
log.verbose('PuppetServiceImpl', 'upload()')
|
|
1520
|
+
|
|
1521
|
+
const fileBox = FileBoxUuid.fromStream(
|
|
1522
|
+
call.pipe(chunkDecoder()),
|
|
1523
|
+
'uuid.dat',
|
|
1524
|
+
)
|
|
1525
|
+
|
|
1526
|
+
const uuid = await fileBox.toUuid()
|
|
1527
|
+
|
|
1528
|
+
const response = new grpcPuppet.UploadResponse()
|
|
1529
|
+
response.setId(uuid)
|
|
1530
|
+
|
|
1531
|
+
return callback(null, response)
|
|
1532
|
+
},
|
|
1533
|
+
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
return puppetServerImpl
|
|
1537
|
+
}
|
|
1538
|
+
|
|
1539
|
+
export { puppetImplementation }
|