@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,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GrpcManager = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Wechaty Open Source Software - https://github.com/wechaty
|
|
9
|
+
*
|
|
10
|
+
* @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
|
|
11
|
+
* Wechaty Contributors <https://github.com/wechaty>.
|
|
12
|
+
*
|
|
13
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
* you may not use this file except in compliance with the License.
|
|
15
|
+
* You may obtain a copy of the License at
|
|
16
|
+
*
|
|
17
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
20
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
+
* See the License for the specific language governing permissions and
|
|
23
|
+
* limitations under the License.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
const util_1 = __importDefault(require("util"));
|
|
27
|
+
const events_1 = __importDefault(require("events"));
|
|
28
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
29
|
+
const wechaty_puppet_1 = require("@juzi/wechaty-puppet");
|
|
30
|
+
const wechaty_grpc_1 = require("@juzi/wechaty-grpc");
|
|
31
|
+
const gerror_1 = require("gerror");
|
|
32
|
+
const wechaty_token_1 = require("wechaty-token");
|
|
33
|
+
const config_js_1 = require("../config.js");
|
|
34
|
+
const mod_js_1 = require("../auth/mod.js");
|
|
35
|
+
const grpc_js_js_1 = require("../auth/grpc-js.js");
|
|
36
|
+
const ca_js_1 = require("../auth/ca.js");
|
|
37
|
+
/**
|
|
38
|
+
* Huan(202108): register `wechaty` schema for gRPC service discovery
|
|
39
|
+
* so that we can use `wechaty:///SNI_UUIDv4` for gRPC address
|
|
40
|
+
*
|
|
41
|
+
* See: https://github.com/wechaty/wechaty-puppet-service/issues/155
|
|
42
|
+
*/
|
|
43
|
+
wechaty_token_1.WechatyResolver.setup();
|
|
44
|
+
class GrpcManager extends events_1.default {
|
|
45
|
+
options;
|
|
46
|
+
_client;
|
|
47
|
+
get client() {
|
|
48
|
+
if (!this._client) {
|
|
49
|
+
throw new Error('NO CLIENT');
|
|
50
|
+
}
|
|
51
|
+
return this._client;
|
|
52
|
+
}
|
|
53
|
+
eventStream;
|
|
54
|
+
/**
|
|
55
|
+
* gRPC settings
|
|
56
|
+
*/
|
|
57
|
+
caCert;
|
|
58
|
+
disableTls;
|
|
59
|
+
endpoint;
|
|
60
|
+
serverName;
|
|
61
|
+
token;
|
|
62
|
+
constructor(options) {
|
|
63
|
+
super();
|
|
64
|
+
this.options = options;
|
|
65
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'constructor(%s)', JSON.stringify(options));
|
|
66
|
+
this.caCert = Buffer.from(config_js_1.envVars.WECHATY_PUPPET_SERVICE_TLS_CA_CERT(this.options.tls?.caCert) || ca_js_1.TLS_CA_CERT);
|
|
67
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'constructor() tlsRootCert(hash): "%s"', crypto_1.default.createHash('sha256')
|
|
68
|
+
.update(this.caCert)
|
|
69
|
+
.digest('hex'));
|
|
70
|
+
/**
|
|
71
|
+
* Token will be used in the gRPC resolver (in endpoint)
|
|
72
|
+
*/
|
|
73
|
+
this.token = new wechaty_token_1.WechatyToken(config_js_1.envVars.WECHATY_PUPPET_SERVICE_TOKEN(this.options.token));
|
|
74
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'constructor() token: "%s"', this.token);
|
|
75
|
+
this.endpoint = config_js_1.envVars.WECHATY_PUPPET_SERVICE_ENDPOINT(this.options.endpoint)
|
|
76
|
+
/**
|
|
77
|
+
* Wechaty Token Discovery-able URL
|
|
78
|
+
* See: wechaty-token / https://github.com/wechaty/wechaty-puppet-service/issues/155
|
|
79
|
+
*/
|
|
80
|
+
|| [
|
|
81
|
+
'wechaty://',
|
|
82
|
+
config_js_1.envVars.WECHATY_PUPPET_SERVICE_AUTHORITY(this.options.authority),
|
|
83
|
+
'/',
|
|
84
|
+
this.token,
|
|
85
|
+
].join('');
|
|
86
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'constructor() endpoint: "%s"', this.endpoint);
|
|
87
|
+
/**
|
|
88
|
+
* Disable TLS
|
|
89
|
+
*/
|
|
90
|
+
this.disableTls = config_js_1.envVars.WECHATY_PUPPET_SERVICE_NO_TLS_INSECURE_CLIENT(this.options.tls?.disable);
|
|
91
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'constructor() disableTls: "%s"', this.disableTls);
|
|
92
|
+
/**
|
|
93
|
+
* for Node.js TLS SNI
|
|
94
|
+
* https://en.wikipedia.org/wiki/Server_Name_Indication
|
|
95
|
+
*/
|
|
96
|
+
const serverNameIndication = config_js_1.envVars.WECHATY_PUPPET_SERVICE_TLS_SERVER_NAME(this.options.tls?.serverName)
|
|
97
|
+
/**
|
|
98
|
+
* Huan(202108): we use SNI from token
|
|
99
|
+
* if there is
|
|
100
|
+
* neither override from environment variable: `WECHATY_PUPPET_SERVICE_TLS_SERVER_NAME`
|
|
101
|
+
* nor set from: `options.tls.serverName`
|
|
102
|
+
*/
|
|
103
|
+
|| this.token.sni;
|
|
104
|
+
if (!serverNameIndication) {
|
|
105
|
+
throw new Error([
|
|
106
|
+
'Wechaty Puppet Service requires a SNI as prefix of the token from version 0.30 and later.',
|
|
107
|
+
`You can add the "${ca_js_1.TLS_INSECURE_SERVER_CERT_COMMON_NAME}_" prefix to your token`,
|
|
108
|
+
`like: "${ca_js_1.TLS_INSECURE_SERVER_CERT_COMMON_NAME}_${this.token}"`,
|
|
109
|
+
'and try again.',
|
|
110
|
+
].join('\n'));
|
|
111
|
+
}
|
|
112
|
+
this.serverName = serverNameIndication;
|
|
113
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'constructor() serverName(SNI): "%s"', this.serverName);
|
|
114
|
+
}
|
|
115
|
+
async start() {
|
|
116
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start()');
|
|
117
|
+
/**
|
|
118
|
+
* 1. Init grpc client
|
|
119
|
+
*/
|
|
120
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() initializing client ...');
|
|
121
|
+
await this.initClient();
|
|
122
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() initializing client ... done');
|
|
123
|
+
/**
|
|
124
|
+
* 2. Connect to stream
|
|
125
|
+
*/
|
|
126
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() starting stream ...');
|
|
127
|
+
await this.startStream();
|
|
128
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() starting stream ... done');
|
|
129
|
+
/**
|
|
130
|
+
* 3. Start the puppet
|
|
131
|
+
*/
|
|
132
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() calling grpc server: start() ...');
|
|
133
|
+
await util_1.default.promisify(this.client.start
|
|
134
|
+
.bind(this.client))(new wechaty_grpc_1.puppet.StartRequest());
|
|
135
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() calling grpc server: start() ... done');
|
|
136
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'start() ... done');
|
|
137
|
+
}
|
|
138
|
+
async stop() {
|
|
139
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop()');
|
|
140
|
+
/**
|
|
141
|
+
* 1. Disconnect from stream
|
|
142
|
+
*/
|
|
143
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() stop stream ...');
|
|
144
|
+
this.stopStream();
|
|
145
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() stop stream ... done');
|
|
146
|
+
/**
|
|
147
|
+
* 2. Stop the puppet
|
|
148
|
+
*/
|
|
149
|
+
try {
|
|
150
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() stop client ...');
|
|
151
|
+
await util_1.default.promisify(this.client.stop
|
|
152
|
+
.bind(this.client))(new wechaty_grpc_1.puppet.StopRequest());
|
|
153
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() stop client ... done');
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
this.emit('error', e);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 3. Destroy grpc client
|
|
160
|
+
*/
|
|
161
|
+
try {
|
|
162
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() destroy client ...');
|
|
163
|
+
this.destroyClient();
|
|
164
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() destroy client ... done');
|
|
165
|
+
}
|
|
166
|
+
catch (e) {
|
|
167
|
+
this.emit('error', e);
|
|
168
|
+
}
|
|
169
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stop() ... done');
|
|
170
|
+
}
|
|
171
|
+
async initClient() {
|
|
172
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'initClient()');
|
|
173
|
+
/**
|
|
174
|
+
* Huan(202108): for maximum compatible with the non-tls community servers/clients,
|
|
175
|
+
* we introduced the WECHATY_PUPPET_SERVICE_NO_TLS_INSECURE_{SERVER,CLIENT} environment variables.
|
|
176
|
+
* if it has been set, then we will run under HTTP instead of HTTPS
|
|
177
|
+
*/
|
|
178
|
+
let credential;
|
|
179
|
+
if (this.disableTls) {
|
|
180
|
+
wechaty_puppet_1.log.warn('GrpcManager', 'initClient() TLS: disabled (INSECURE)');
|
|
181
|
+
credential = wechaty_grpc_1.grpc.credentials.createInsecure();
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'initClient() TLS: enabled');
|
|
185
|
+
const callCred = (0, mod_js_1.callCredToken)(this.token.token);
|
|
186
|
+
const channelCred = wechaty_grpc_1.grpc.credentials.createSsl(this.caCert);
|
|
187
|
+
const combCreds = wechaty_grpc_1.grpc.credentials.combineChannelCredentials(channelCred, callCred);
|
|
188
|
+
credential = combCreds;
|
|
189
|
+
}
|
|
190
|
+
const clientOptions = {
|
|
191
|
+
...config_js_1.GRPC_OPTIONS,
|
|
192
|
+
'grpc.ssl_target_name_override': this.serverName,
|
|
193
|
+
};
|
|
194
|
+
{
|
|
195
|
+
// Deprecated: this block will be removed after Dec 21, 2022.
|
|
196
|
+
/**
|
|
197
|
+
* Huan(202108): `grpc.default_authority` is a workaround
|
|
198
|
+
* for compatiblity with the non-tls community servers/clients.
|
|
199
|
+
*
|
|
200
|
+
* See: https://github.com/wechaty/wechaty-puppet-service/pull/78
|
|
201
|
+
*/
|
|
202
|
+
const grpcDefaultAuthority = this.token.token;
|
|
203
|
+
clientOptions['grpc.default_authority'] = grpcDefaultAuthority;
|
|
204
|
+
}
|
|
205
|
+
if (this._client) {
|
|
206
|
+
wechaty_puppet_1.log.warn('GrpcManager', 'initClient() this.#client exists? Old client has been dropped.');
|
|
207
|
+
this._client = undefined;
|
|
208
|
+
}
|
|
209
|
+
this._client = new wechaty_grpc_1.puppet.PuppetClient(this.endpoint, credential, clientOptions);
|
|
210
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'initClient() ... done');
|
|
211
|
+
}
|
|
212
|
+
destroyClient() {
|
|
213
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'destroyClient()');
|
|
214
|
+
if (!this._client) {
|
|
215
|
+
wechaty_puppet_1.log.warn('GrpcManager', 'destroyClient() this.#client not exist');
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
const client = this._client;
|
|
219
|
+
/**
|
|
220
|
+
* Huan(202108): we should set `this.client` to `undefined` at the current event loop
|
|
221
|
+
* to prevent the future usage of the old client.
|
|
222
|
+
*/
|
|
223
|
+
this._client = undefined;
|
|
224
|
+
try {
|
|
225
|
+
client.close();
|
|
226
|
+
}
|
|
227
|
+
catch (e) {
|
|
228
|
+
wechaty_puppet_1.log.error('GrpcManager', 'destroyClient() client.close() rejection: %s\n%s', e && e.message, e.stack);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async startStream() {
|
|
232
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream()');
|
|
233
|
+
if (this.eventStream) {
|
|
234
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() this.eventStream exists, dropped.');
|
|
235
|
+
this.eventStream = undefined;
|
|
236
|
+
}
|
|
237
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() grpc -> event() ...');
|
|
238
|
+
const eventStream = this.client.event(new wechaty_grpc_1.puppet.EventRequest());
|
|
239
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() grpc -> event() ... done');
|
|
240
|
+
/**
|
|
241
|
+
* Store the event data from the stream when we test connection,
|
|
242
|
+
* and re-emit the event data when we have finished testing the connection
|
|
243
|
+
*/
|
|
244
|
+
let peekedData;
|
|
245
|
+
/**
|
|
246
|
+
* Huan(202108): future must be placed before other listenser registration
|
|
247
|
+
* because the on('data') will start drain the stream
|
|
248
|
+
*/
|
|
249
|
+
const future = new Promise((resolve, reject) => eventStream
|
|
250
|
+
/**
|
|
251
|
+
* Huan(202108): we need a `heartbeat` event to confirm the connection is alive
|
|
252
|
+
* for our wechaty-puppet-service server code, when the gRPC event stream is opened,
|
|
253
|
+
* it will emit a `heartbeat` event as early as possible.
|
|
254
|
+
*
|
|
255
|
+
* However, the `heartbeat` event is not guaranteed to be emitted,
|
|
256
|
+
* if the puppet service provider is coming from the community, like:
|
|
257
|
+
* - paimon
|
|
258
|
+
*
|
|
259
|
+
* So we also need a timeout for compatible with those providers
|
|
260
|
+
* in case of they are not following this special protocol.
|
|
261
|
+
*/
|
|
262
|
+
.once('data', (resp) => {
|
|
263
|
+
peekedData = resp;
|
|
264
|
+
resolve();
|
|
265
|
+
})
|
|
266
|
+
/**
|
|
267
|
+
* Any of the following events will be emitted means that there's a problem.
|
|
268
|
+
*/
|
|
269
|
+
.once('cancel', reject)
|
|
270
|
+
.once('end', reject)
|
|
271
|
+
.once('error', reject)
|
|
272
|
+
/**
|
|
273
|
+
* The `status` event is import when we connect a gRPC stream.
|
|
274
|
+
*
|
|
275
|
+
* Huan(202108): according to the unit tests (tests/grpc-client.spec.ts)
|
|
276
|
+
* 1. If client TLS is not ok (client no-tls but server TLS is required)
|
|
277
|
+
* then status will be:
|
|
278
|
+
* { code: 14, details: 'Connection dropped' }
|
|
279
|
+
* 2. If client TLS is ok but the client token is invalid,
|
|
280
|
+
* then status will be:
|
|
281
|
+
* { code: 16, details: 'Invalid Wechaty TOKEN "0.XXX"' }
|
|
282
|
+
*/
|
|
283
|
+
.once('status', status => {
|
|
284
|
+
// console.info('once(status)', status)
|
|
285
|
+
status.code === grpc_js_js_1.GrpcStatus.OK
|
|
286
|
+
? resolve()
|
|
287
|
+
: reject(new Error('once(status)'));
|
|
288
|
+
}));
|
|
289
|
+
/**
|
|
290
|
+
* Huan(202108): the `heartbeat` event is not guaranteed to be emitted
|
|
291
|
+
* if a puppet service provider is coming from the community, it might not follow the protocol specification.
|
|
292
|
+
* So we need a timeout for compatible with those providers
|
|
293
|
+
*/
|
|
294
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() grpc -> event peeking data or timeout ...');
|
|
295
|
+
try {
|
|
296
|
+
await (0, gerror_1.timeoutPromise)(future, 5 * 1000); // 5 seconds
|
|
297
|
+
}
|
|
298
|
+
catch (_) {
|
|
299
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() grpc -> event peeking data or timeout ... timeout');
|
|
300
|
+
}
|
|
301
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() grpc -> event peeking data or timeout ... data peeked');
|
|
302
|
+
/**
|
|
303
|
+
* Bridge the events
|
|
304
|
+
* Huan(202108): adding the below event listeners
|
|
305
|
+
* must be after the `await future` above,
|
|
306
|
+
* so that if there's any `error` event,
|
|
307
|
+
* it will be triggered already.
|
|
308
|
+
*/
|
|
309
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() initializing event stream ...');
|
|
310
|
+
eventStream
|
|
311
|
+
.on('cancel', (...args) => this.emit('cancel', ...args))
|
|
312
|
+
.on('data', (...args) => this.emit('data', ...args))
|
|
313
|
+
.on('end', (...args) => this.emit('end', ...args))
|
|
314
|
+
.on('error', (...args) => this.emit('error', ...args))
|
|
315
|
+
.on('metadata', (...args) => this.emit('metadata', ...args))
|
|
316
|
+
.on('status', (...args) => this.emit('status', ...args));
|
|
317
|
+
this.eventStream = eventStream;
|
|
318
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() initializing event stream ... done');
|
|
319
|
+
/**
|
|
320
|
+
* Re-emit the peeked data if there's any
|
|
321
|
+
*/
|
|
322
|
+
if (peekedData) {
|
|
323
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() sending back the peeked data ...');
|
|
324
|
+
this.emit('data', peekedData);
|
|
325
|
+
peekedData = undefined;
|
|
326
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() sending back the peeked data ... done');
|
|
327
|
+
}
|
|
328
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'startStream() ... done');
|
|
329
|
+
}
|
|
330
|
+
stopStream() {
|
|
331
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stopStream()');
|
|
332
|
+
if (!this.eventStream) {
|
|
333
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stopStream() no eventStream when stop, skip destroy.');
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Huan(202108): we should set `this.eventStream` to `undefined` at the current event loop
|
|
338
|
+
* to prevent the future usage of the old eventStream.
|
|
339
|
+
*/
|
|
340
|
+
const eventStream = this.eventStream;
|
|
341
|
+
this.eventStream = undefined;
|
|
342
|
+
/**
|
|
343
|
+
* Huan(202003):
|
|
344
|
+
* destroy() will be enough to terminate a stream call.
|
|
345
|
+
* cancel() is not needed.
|
|
346
|
+
*/
|
|
347
|
+
// this.eventStream.cancel()
|
|
348
|
+
try {
|
|
349
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stopStream() destroying event stream ...');
|
|
350
|
+
eventStream.destroy();
|
|
351
|
+
wechaty_puppet_1.log.verbose('GrpcManager', 'stopStream() destroying event stream ... done');
|
|
352
|
+
}
|
|
353
|
+
catch (e) {
|
|
354
|
+
this.emit('error', e);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
exports.GrpcManager = GrpcManager;
|
|
359
|
+
//# sourceMappingURL=grpc-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-manager.js","sourceRoot":"","sources":["../../../../src/client/grpc-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-manager.spec.d.ts","sourceRoot":"","sources":["../../../../src/client/grpc-manager.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tstest_1 = require("tstest");
|
|
5
|
+
const grpc_manager_js_1 = require("./grpc-manager.js");
|
|
6
|
+
/**
|
|
7
|
+
* Huan(202108):
|
|
8
|
+
* the Server Name Identifier (SNI) in the token
|
|
9
|
+
* is required by the gRPC client.
|
|
10
|
+
*/
|
|
11
|
+
(0, tstest_1.test)('GrpcManager smoke testing', async (t) => {
|
|
12
|
+
t.throws(() => new grpc_manager_js_1.GrpcManager({
|
|
13
|
+
token: 'UUIDv4',
|
|
14
|
+
}), 'should throw if there is no SNI prefix in token');
|
|
15
|
+
t.doesNotThrow(() => new grpc_manager_js_1.GrpcManager({
|
|
16
|
+
token: 'SNI_UUIDv4',
|
|
17
|
+
}), 'should not throw if there is SNI prefix in token');
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=grpc-manager.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grpc-manager.spec.js","sourceRoot":"","sources":["../../../../src/client/grpc-manager.spec.ts"],"names":[],"mappings":";;;AAEA,mCAA8B;AAE9B,uDAA+C;AAE/C;;;;GAIG;AACH,IAAA,aAAI,EAAC,2BAA2B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC1C,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,6BAAW,CAAC;QAC7B,KAAK,EAAE,QAAQ;KAChB,CAAC,EAAE,iDAAiD,CAAC,CAAA;IAEtD,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,6BAAW,CAAC;QACnC,KAAK,EAAE,YAAY;KACpB,CAAC,EAAE,kDAAkD,CAAC,CAAA;AACzD,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type * as PUPPET from '@juzi/wechaty-puppet';
|
|
2
|
+
import { FlashStore } from 'flash-store';
|
|
3
|
+
interface PayloadStoreOptions {
|
|
4
|
+
token: string;
|
|
5
|
+
}
|
|
6
|
+
interface StoreRoomMemberPayload {
|
|
7
|
+
[roomMemberContactId: string]: PUPPET.payloads.RoomMember;
|
|
8
|
+
}
|
|
9
|
+
declare class PayloadStore {
|
|
10
|
+
private options;
|
|
11
|
+
contact?: FlashStore<string, PUPPET.payloads.Contact>;
|
|
12
|
+
roomMember?: FlashStore<string, StoreRoomMemberPayload>;
|
|
13
|
+
room?: FlashStore<string, PUPPET.payloads.Room>;
|
|
14
|
+
protected storeDir: string;
|
|
15
|
+
protected accountId?: string;
|
|
16
|
+
constructor(options: PayloadStoreOptions);
|
|
17
|
+
/**
|
|
18
|
+
* When starting the store, we need to know the accountId
|
|
19
|
+
* so that we can save the payloads under a specific account folder.
|
|
20
|
+
*/
|
|
21
|
+
start(accountId: string): Promise<void>;
|
|
22
|
+
stop(): Promise<void>;
|
|
23
|
+
destroy(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export { PayloadStore };
|
|
26
|
+
//# sourceMappingURL=payload-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-store.d.ts","sourceRoot":"","sources":["../../../../src/client/payload-store.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AASxC,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,sBAAsB;IAC9B,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAA;CAC1D;AAED,cAAM,YAAY;IAWH,OAAO,CAAC,OAAO;IAPrB,OAAO,CAAC,EAAM,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IACzD,UAAU,CAAC,EAAG,UAAU,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IACxD,IAAI,CAAC,EAAS,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE7D,SAAS,CAAC,QAAQ,EAAI,MAAM,CAAA;IAC5B,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;gBAEP,OAAO,EAAE,mBAAmB;IAajD;;;OAGG;IACG,KAAK,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCxC,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IA0BtB,OAAO,IAAK,OAAO,CAAC,IAAI,CAAC;CAgBhC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PayloadStore = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Wechaty Open Source Software - https://github.com/wechaty
|
|
9
|
+
*
|
|
10
|
+
* @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
|
|
11
|
+
* Wechaty Contributors <https://github.com/wechaty>.
|
|
12
|
+
*
|
|
13
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
+
* you may not use this file except in compliance with the License.
|
|
15
|
+
* You may obtain a copy of the License at
|
|
16
|
+
*
|
|
17
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
+
*
|
|
19
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
20
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
+
* See the License for the specific language governing permissions and
|
|
23
|
+
* limitations under the License.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
const path_1 = __importDefault(require("path"));
|
|
27
|
+
const os_1 = __importDefault(require("os"));
|
|
28
|
+
const fs_1 = __importDefault(require("fs"));
|
|
29
|
+
const semver_1 = __importDefault(require("semver"));
|
|
30
|
+
const flash_store_1 = require("flash-store");
|
|
31
|
+
const config_js_1 = require("../config.js");
|
|
32
|
+
const { major, minor } = semver_1.default;
|
|
33
|
+
class PayloadStore {
|
|
34
|
+
options;
|
|
35
|
+
// public message? : LRU<string, MessagePayload>
|
|
36
|
+
contact;
|
|
37
|
+
roomMember;
|
|
38
|
+
room;
|
|
39
|
+
storeDir;
|
|
40
|
+
accountId;
|
|
41
|
+
constructor(options) {
|
|
42
|
+
this.options = options;
|
|
43
|
+
config_js_1.log.verbose('PayloadStore', 'constructor(%s)', JSON.stringify(options));
|
|
44
|
+
this.storeDir = path_1.default.join(os_1.default.homedir(), '.wechaty', 'wechaty-puppet-service', this.options.token, `v${major(config_js_1.VERSION)}.${minor(config_js_1.VERSION)}`);
|
|
45
|
+
config_js_1.log.silly('PayloadStore', 'constructor() storeDir: "%s"', this.storeDir);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* When starting the store, we need to know the accountId
|
|
49
|
+
* so that we can save the payloads under a specific account folder.
|
|
50
|
+
*/
|
|
51
|
+
async start(accountId) {
|
|
52
|
+
config_js_1.log.verbose('PayloadStore', 'start(%s)', accountId);
|
|
53
|
+
if (this.accountId) {
|
|
54
|
+
throw new Error('PayloadStore should be stop() before start() again.');
|
|
55
|
+
}
|
|
56
|
+
this.accountId = accountId;
|
|
57
|
+
const accountDir = path_1.default.join(this.storeDir, accountId);
|
|
58
|
+
if (!fs_1.default.existsSync(accountDir)) {
|
|
59
|
+
fs_1.default.mkdirSync(accountDir, { recursive: true });
|
|
60
|
+
}
|
|
61
|
+
this.contact = new flash_store_1.FlashStore(path_1.default.join(accountDir, 'contact-payload'));
|
|
62
|
+
this.roomMember = new flash_store_1.FlashStore(path_1.default.join(accountDir, 'room-member-payload'));
|
|
63
|
+
this.room = new flash_store_1.FlashStore(path_1.default.join(accountDir, 'room-payload'));
|
|
64
|
+
/**
|
|
65
|
+
* LRU
|
|
66
|
+
*
|
|
67
|
+
* Huan(202108): the Wechaty Puppet has LRU cache already,
|
|
68
|
+
* there's no need to do it again.
|
|
69
|
+
*
|
|
70
|
+
* We can focus on providing a persistent store for the performance.
|
|
71
|
+
*/
|
|
72
|
+
// const lruOptions: LRU.Options<string, MessagePayload> = {
|
|
73
|
+
// dispose (key, val) {
|
|
74
|
+
// log.silly('PayloadStore', `constructor() lruOptions.dispose(${key}, ${JSON.stringify(val)})`)
|
|
75
|
+
// },
|
|
76
|
+
// max : 1000, // 1000 messages
|
|
77
|
+
// maxAge : 60 * 60 * 1000, // 1 hour
|
|
78
|
+
// }
|
|
79
|
+
// this.message = new LRU(lruOptions)
|
|
80
|
+
}
|
|
81
|
+
async stop() {
|
|
82
|
+
config_js_1.log.verbose('PayloadStore', 'stop()');
|
|
83
|
+
const contactStore = this.contact;
|
|
84
|
+
const roomMemberStore = this.roomMember;
|
|
85
|
+
const roomStore = this.room;
|
|
86
|
+
/**
|
|
87
|
+
* Huan(202108): we must set all the instances of the store to underfined
|
|
88
|
+
* in the current event loop as soon as possible
|
|
89
|
+
* to prevent the future store calls.
|
|
90
|
+
*/
|
|
91
|
+
this.contact = undefined;
|
|
92
|
+
this.roomMember = undefined;
|
|
93
|
+
this.room = undefined;
|
|
94
|
+
// LRU
|
|
95
|
+
// this.message = undefined
|
|
96
|
+
// clear accountId
|
|
97
|
+
this.accountId = undefined;
|
|
98
|
+
await contactStore?.close();
|
|
99
|
+
await roomMemberStore?.close();
|
|
100
|
+
await roomStore?.close();
|
|
101
|
+
}
|
|
102
|
+
async destroy() {
|
|
103
|
+
config_js_1.log.verbose('PayloadStore', 'destroy()');
|
|
104
|
+
if (this.accountId) {
|
|
105
|
+
throw new Error('Can not destroy() a start()-ed store. Call stop() to stop it first');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Huan(202108): `fs.rm` was introduced from Node.js v14.14
|
|
109
|
+
* https://nodejs.org/api/fs.html#fs_fspromises_rm_path_options
|
|
110
|
+
*/
|
|
111
|
+
await fs_1.default.promises.rmdir(this.storeDir, {
|
|
112
|
+
// force: true,
|
|
113
|
+
recursive: true,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.PayloadStore = PayloadStore;
|
|
118
|
+
//# sourceMappingURL=payload-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-store.js","sourceRoot":"","sources":["../../../../src/client/payload-store.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,gDAAuB;AACvB,4CAAmB;AACnB,4CAAmB;AAEnB,oDAA8B;AAI9B,6CAAwC;AAExC,4CAGiC;AAEjC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,gBAAS,CAAA;AAUlC,MAAM,YAAY;IAWK;IATrB,mDAAmD;IAE5C,OAAO,CAAkD;IACzD,UAAU,CAA8C;IACxD,IAAI,CAAkD;IAEnD,QAAQ,CAAU;IAClB,SAAS,CAAS;IAE5B,YAAqB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAC/C,eAAG,CAAC,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAEvE,IAAI,CAAC,QAAQ,GAAG,cAAI,CAAC,IAAI,CACvB,YAAE,CAAC,OAAO,EAAE,EACZ,UAAU,EACV,wBAAwB,EACxB,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,IAAI,KAAK,CAAC,mBAAO,CAAC,IAAI,KAAK,CAAC,mBAAO,CAAC,EAAE,CACvC,CAAA;QACD,eAAG,CAAC,KAAK,CAAC,cAAc,EAAE,8BAA8B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAE,SAAiB;QAC5B,eAAG,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;QAEnD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;SACvE;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAEtD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,YAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;SAC9C;QAED,IAAI,CAAC,OAAO,GAAM,IAAI,wBAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAA;QAC1E,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAA;QAC9E,IAAI,CAAC,IAAI,GAAS,IAAI,wBAAU,CAAC,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;QAEvE;;;;;;;WAOG;QACH,4DAA4D;QAC5D,yBAAyB;QACzB,oGAAoG;QACpG,OAAO;QACP,qCAAqC;QACrC,wCAAwC;QACxC,IAAI;QACJ,qCAAqC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,eAAG,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QAErC,MAAM,YAAY,GAAM,IAAI,CAAC,OAAO,CAAA;QACpC,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAA;QACvC,MAAM,SAAS,GAAS,IAAI,CAAC,IAAI,CAAA;QACjC;;;;YAII;QACJ,IAAI,CAAC,OAAO,GAAM,SAAS,CAAA;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAS,SAAS,CAAA;QAE3B,MAAM;QACN,8BAA8B;QAE9B,kBAAkB;QAClB,IAAI,CAAC,SAAS,GAAI,SAAS,CAAA;QAE3B,MAAM,YAAY,EAAE,KAAK,EAAE,CAAA;QAC3B,MAAM,eAAe,EAAE,KAAK,EAAE,CAAA;QAC9B,MAAM,SAAS,EAAE,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,eAAG,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA;QACxC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;SACtF;QAED;;;WAGG;QACH,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,eAAe;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAA;IACJ,CAAC;CAEF;AAEQ,oCAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-store.spec.d.ts","sourceRoot":"","sources":["../../../../src/client/payload-store.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tstest_1 = require("tstest");
|
|
5
|
+
const payload_store_js_1 = require("./payload-store.js");
|
|
6
|
+
(0, tstest_1.test)('PayloadStore perfect restart', async (t) => {
|
|
7
|
+
const token = Math.random().toString(36);
|
|
8
|
+
const store = new payload_store_js_1.PayloadStore({ token });
|
|
9
|
+
for (let i = 0; i < 3; i++) {
|
|
10
|
+
const accountId = Math.random().toString(36);
|
|
11
|
+
await store.start(accountId);
|
|
12
|
+
await store.stop();
|
|
13
|
+
t.pass('start/stop-ed at #' + i);
|
|
14
|
+
}
|
|
15
|
+
await store.destroy();
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=payload-store.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-store.spec.js","sourceRoot":"","sources":["../../../../src/client/payload-store.spec.ts"],"names":[],"mappings":";;;AAEA,mCAA8B;AAE9B,yDAAiD;AAEjD,IAAA,aAAI,EAAC,8BAA8B,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,+BAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC5C,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAClB,CAAC,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAA;KACjC;IAED,MAAM,KAAK,CAAC,OAAO,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA"}
|