@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,87 @@
|
|
|
1
|
+
import { FileBox } from 'file-box'
|
|
2
|
+
import type { FileBoxInterface } from 'file-box'
|
|
3
|
+
import { PassThrough } from 'stream'
|
|
4
|
+
import {
|
|
5
|
+
Readable,
|
|
6
|
+
Transform,
|
|
7
|
+
} from 'stronger-typed-streams'
|
|
8
|
+
|
|
9
|
+
import { puppet } from '@juzi/wechaty-grpc'
|
|
10
|
+
|
|
11
|
+
import { nextData } from './next-data.js'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
15
|
+
*/
|
|
16
|
+
const decoder = () => new Transform<puppet.FileBoxChunk, any>({
|
|
17
|
+
objectMode: true,
|
|
18
|
+
transform: (chunk: puppet.FileBoxChunk, _: any, callback: any) => {
|
|
19
|
+
if (!chunk.hasData()) {
|
|
20
|
+
callback(new Error('no data'))
|
|
21
|
+
return
|
|
22
|
+
}
|
|
23
|
+
const data = chunk.getData()
|
|
24
|
+
callback(null, data)
|
|
25
|
+
},
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
30
|
+
*/
|
|
31
|
+
async function unpackFileBoxFromChunk (
|
|
32
|
+
stream: Readable<puppet.FileBoxChunk>,
|
|
33
|
+
): Promise<FileBox> {
|
|
34
|
+
const chunk = await nextData(stream)
|
|
35
|
+
if (!chunk.hasName()) {
|
|
36
|
+
throw new Error('no name')
|
|
37
|
+
}
|
|
38
|
+
const fileName = chunk.getName()
|
|
39
|
+
|
|
40
|
+
const fileStream = new PassThrough({ objectMode: true })
|
|
41
|
+
const transformedStream = stream.pipe(decoder())
|
|
42
|
+
transformedStream.pipe(fileStream)
|
|
43
|
+
stream.on('error', e => fileStream.emit('error', e))
|
|
44
|
+
transformedStream.on('error', e => fileStream.emit('error', e))
|
|
45
|
+
|
|
46
|
+
const fileBox = FileBox.fromStream(fileStream, fileName)
|
|
47
|
+
|
|
48
|
+
return fileBox
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
53
|
+
*/
|
|
54
|
+
const encoder = () => new Transform<any, puppet.FileBoxChunk>({
|
|
55
|
+
objectMode: true,
|
|
56
|
+
transform: (chunk: any, _: any, callback: any) => {
|
|
57
|
+
const fileBoxChunk = new puppet.FileBoxChunk()
|
|
58
|
+
fileBoxChunk.setData(chunk)
|
|
59
|
+
callback(null, fileBoxChunk)
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
65
|
+
*/
|
|
66
|
+
async function packFileBoxToChunk (
|
|
67
|
+
fileBox: FileBoxInterface,
|
|
68
|
+
): Promise<Readable<puppet.FileBoxChunk>> {
|
|
69
|
+
const stream = new PassThrough({ objectMode: true })
|
|
70
|
+
|
|
71
|
+
const chunk = new puppet.FileBoxChunk()
|
|
72
|
+
chunk.setName(fileBox.name)
|
|
73
|
+
|
|
74
|
+
// FIXME: Huan(202010) write might return false
|
|
75
|
+
stream.write(chunk)
|
|
76
|
+
|
|
77
|
+
fileBox
|
|
78
|
+
.pipe(encoder())
|
|
79
|
+
.pipe(stream)
|
|
80
|
+
|
|
81
|
+
return stream
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export {
|
|
85
|
+
unpackFileBoxFromChunk,
|
|
86
|
+
packFileBoxToChunk,
|
|
87
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
|
|
3
|
+
import { test } from 'tstest'
|
|
4
|
+
|
|
5
|
+
import { FileBox } from 'file-box'
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
puppet,
|
|
9
|
+
} from '@juzi/wechaty-grpc'
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
packFileBoxToPb,
|
|
13
|
+
unpackFileBoxFromPb,
|
|
14
|
+
} from './file-box-pb.js'
|
|
15
|
+
|
|
16
|
+
test('packFileBoxToPb()', async t => {
|
|
17
|
+
const FILE_BOX_DATA = 'test'
|
|
18
|
+
const FILE_BOX_NAME = 'test.dat'
|
|
19
|
+
|
|
20
|
+
const fileBox = FileBox.fromBuffer(
|
|
21
|
+
Buffer.from(FILE_BOX_DATA),
|
|
22
|
+
FILE_BOX_NAME,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
const pb = await packFileBoxToPb(puppet.MessageFileStreamResponse)(fileBox)
|
|
26
|
+
const restoredFileBox = await unpackFileBoxFromPb(pb)
|
|
27
|
+
t.ok(restoredFileBox instanceof FileBox, 'should get an instance of FileBOX')
|
|
28
|
+
|
|
29
|
+
t.equal(restoredFileBox.name, fileBox.name, 'should get the right file box name')
|
|
30
|
+
t.equal(await restoredFileBox.toBase64(), await fileBox.toBase64(), 'should get the right file box content')
|
|
31
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { FileBoxInterface } from 'file-box'
|
|
2
|
+
import type { Readable } from 'stronger-typed-streams'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
packFileBoxToChunk,
|
|
6
|
+
unpackFileBoxFromChunk,
|
|
7
|
+
} from './file-box-chunk.js'
|
|
8
|
+
import {
|
|
9
|
+
packFileBoxChunkToPb,
|
|
10
|
+
unpackFileBoxChunkFromPb,
|
|
11
|
+
} from './chunk-pb.js'
|
|
12
|
+
import type { FileBoxPb } from './file-box-pb.type.js'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
16
|
+
*/
|
|
17
|
+
function packFileBoxToPb<T extends FileBoxPb> (
|
|
18
|
+
PbConstructor: { new(): T },
|
|
19
|
+
) {
|
|
20
|
+
return async (fileBox: FileBoxInterface) => {
|
|
21
|
+
const fileBoxChunkStream = await packFileBoxToChunk(fileBox)
|
|
22
|
+
const pbFileBox = packFileBoxChunkToPb(PbConstructor)(fileBoxChunkStream)
|
|
23
|
+
return pbFileBox
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
29
|
+
*/
|
|
30
|
+
async function unpackFileBoxFromPb<T extends FileBoxPb> (
|
|
31
|
+
pbStream: Readable<T>,
|
|
32
|
+
): Promise<FileBoxInterface> {
|
|
33
|
+
const fileBoxChunkStream = unpackFileBoxChunkFromPb(pbStream)
|
|
34
|
+
const fileBox = await unpackFileBoxFromChunk(fileBoxChunkStream)
|
|
35
|
+
return fileBox
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
packFileBoxToPb,
|
|
40
|
+
unpackFileBoxFromPb,
|
|
41
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { puppet } from '@juzi/wechaty-grpc'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Any Protocol Buffer message that include a FileBoxChunk
|
|
5
|
+
*/
|
|
6
|
+
export interface FileBoxPb {
|
|
7
|
+
hasFileBoxChunk(): boolean
|
|
8
|
+
getFileBoxChunk(): puppet.FileBoxChunk | undefined
|
|
9
|
+
setFileBoxChunk(value?: puppet.FileBoxChunk): void
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ConversationIdFileBoxPb extends FileBoxPb {
|
|
13
|
+
hasConversationId(): boolean
|
|
14
|
+
getConversationId(): string
|
|
15
|
+
setConversationId(value: string): void
|
|
16
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Readable,
|
|
3
|
+
} from 'stronger-typed-streams'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* windmemory(20201027): generating fileBox data in server side might take longer.
|
|
7
|
+
* Set to 60 sec to avoid unexpected timeout.
|
|
8
|
+
*/
|
|
9
|
+
const TIMEOUT = 60 * 1000
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
13
|
+
*/
|
|
14
|
+
async function nextData<T> (
|
|
15
|
+
stream: Readable<T>,
|
|
16
|
+
): Promise<T> {
|
|
17
|
+
const chunk = await new Promise<T>((resolve, reject) => {
|
|
18
|
+
const timer = setTimeout(reject, TIMEOUT)
|
|
19
|
+
stream.once('data', chunk => {
|
|
20
|
+
stream.pause()
|
|
21
|
+
clearTimeout(timer)
|
|
22
|
+
|
|
23
|
+
resolve(chunk)
|
|
24
|
+
})
|
|
25
|
+
stream.once('error', reject)
|
|
26
|
+
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
stream.resume()
|
|
30
|
+
return chunk
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
nextData,
|
|
35
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FileBox,
|
|
3
|
+
FileBoxType,
|
|
4
|
+
} from 'file-box'
|
|
5
|
+
import type {
|
|
6
|
+
FileBoxInterface,
|
|
7
|
+
} from 'file-box'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Will be removed after Dec 31, 2022
|
|
11
|
+
*/
|
|
12
|
+
export const serializeFileBox = async (fileBox: FileBoxInterface): Promise<string> => {
|
|
13
|
+
const serializableFileBoxTypes = [
|
|
14
|
+
FileBoxType.Base64,
|
|
15
|
+
FileBoxType.Url,
|
|
16
|
+
FileBoxType.QRCode,
|
|
17
|
+
]
|
|
18
|
+
if (serializableFileBoxTypes.includes(fileBox.type)) {
|
|
19
|
+
return JSON.stringify(fileBox)
|
|
20
|
+
}
|
|
21
|
+
const base64 = await fileBox.toBase64()
|
|
22
|
+
const name = fileBox.name
|
|
23
|
+
return JSON.stringify(FileBox.fromBase64(base64, name))
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
|
|
3
|
+
// tslint:disable:no-shadowed-variable
|
|
4
|
+
import { test } from 'tstest'
|
|
5
|
+
|
|
6
|
+
import { WECHATY_PUPPET_SERVICE_AUTHORITY } from './env-vars.js'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Huan(202108): compatible with old env var
|
|
10
|
+
* See: https://github.com/wechaty/wechaty-puppet-service/issues/156
|
|
11
|
+
*
|
|
12
|
+
* This feature will be removed after Dec 31, 2022
|
|
13
|
+
*/
|
|
14
|
+
test('WECHATY_PUPPET_SERVICE_AUTHORITY()', async t => {
|
|
15
|
+
const EXPECTED_AUTHORITY = 'api.wechaty.io'
|
|
16
|
+
const oldValue = process.env['WECHATY_SERVICE_DISCOVERY_ENDPOINT']
|
|
17
|
+
process.env['WECHATY_SERVICE_DISCOVERY_ENDPOINT'] = `https://${EXPECTED_AUTHORITY}`
|
|
18
|
+
|
|
19
|
+
const result = WECHATY_PUPPET_SERVICE_AUTHORITY()
|
|
20
|
+
t.equal(result, EXPECTED_AUTHORITY, 'should extract authority')
|
|
21
|
+
|
|
22
|
+
process.env['WECHATY_SERVICE_DISCOVERY_ENDPOINT'] = oldValue
|
|
23
|
+
})
|
package/src/env-vars.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { log } from '@juzi/wechaty-puppet'
|
|
2
|
+
|
|
3
|
+
// Huan(202011): use a function to return the value in time.
|
|
4
|
+
const WECHATY_PUPPET_SERVICE_TOKEN: (token?: string) => string = token => {
|
|
5
|
+
if (token) {
|
|
6
|
+
return token
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (process.env['WECHATY_PUPPET_SERVICE_TOKEN']) {
|
|
10
|
+
return process.env['WECHATY_PUPPET_SERVICE_TOKEN']
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Huan(202102): remove this deprecated warning after Dec 31, 2021
|
|
15
|
+
*/
|
|
16
|
+
if (process.env['WECHATY_PUPPET_HOSTIE_TOKEN']) {
|
|
17
|
+
log.warn('wechaty-puppet-service', [
|
|
18
|
+
'',
|
|
19
|
+
'WECHATY_PUPPET_HOSTIE_TOKEN has been deprecated,',
|
|
20
|
+
'please use WECHATY_PUPPET_SERVICE_TOKEN instead.',
|
|
21
|
+
'See: https://github.com/wechaty/wechaty-puppet-service/issues/118',
|
|
22
|
+
'',
|
|
23
|
+
].join(' '))
|
|
24
|
+
return process.env['WECHATY_PUPPET_HOSTIE_TOKEN']
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const tokenNotFoundError = 'wechaty-puppet-service: WECHATY_PUPPET_SERVICE_TOKEN not found'
|
|
28
|
+
|
|
29
|
+
console.error([
|
|
30
|
+
'',
|
|
31
|
+
tokenNotFoundError,
|
|
32
|
+
'(save token to WECHATY_PUPPET_SERVICE_TOKEN env var or pass it to puppet options is required.).',
|
|
33
|
+
'',
|
|
34
|
+
'To learn how to get Wechaty Puppet Service Token,',
|
|
35
|
+
'please visit <https://wechaty.js.org/docs/puppet-services/>',
|
|
36
|
+
'to see our Wechaty Puppet Service Providers.',
|
|
37
|
+
'',
|
|
38
|
+
].join('\n'))
|
|
39
|
+
|
|
40
|
+
throw new Error(tokenNotFoundError)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const WECHATY_PUPPET_SERVICE_ENDPOINT = (endpoint?: string) => {
|
|
44
|
+
if (endpoint) {
|
|
45
|
+
return endpoint
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (process.env['WECHATY_PUPPET_SERVICE_ENDPOINT']) {
|
|
49
|
+
return process.env['WECHATY_PUPPET_SERVICE_ENDPOINT']
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Huan(202102): remove this deprecated warning after Dec 31, 2021
|
|
53
|
+
*/
|
|
54
|
+
if (process.env['WECHATY_PUPPET_HOSTIE_ENDPOINT']) {
|
|
55
|
+
log.warn('wechaty-puppet-service', [
|
|
56
|
+
'',
|
|
57
|
+
'WECHATY_PUPPET_HOSTIE_ENDPOINT has been deprecated,',
|
|
58
|
+
'please use WECHATY_PUPPET_SERVICE_ENDPOINT instead.',
|
|
59
|
+
'See: https://github.com/wechaty/wechaty-puppet-service/issues/118',
|
|
60
|
+
'',
|
|
61
|
+
].join(' '))
|
|
62
|
+
return process.env['WECHATY_PUPPET_HOSTIE_ENDPOINT']
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return undefined
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const WECHATY_PUPPET_SERVICE_AUTHORITY = (authority?: string) => {
|
|
69
|
+
if (authority) {
|
|
70
|
+
return authority
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
authority = process.env['WECHATY_PUPPET_SERVICE_AUTHORITY']
|
|
74
|
+
if (authority) {
|
|
75
|
+
return authority
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const deprecatedDiscoveryEndpoint = process.env['WECHATY_SERVICE_DISCOVERY_ENDPOINT']
|
|
79
|
+
if (deprecatedDiscoveryEndpoint) {
|
|
80
|
+
console.error([
|
|
81
|
+
'Environment variable WECHATY_SERVICE_DISCOVERY_ENDPOINT is deprecated,',
|
|
82
|
+
'Use WECHATY_PUPPET_SERVICE_AUTHORITY instead.',
|
|
83
|
+
'See: https://github.com/wechaty/wechaty-puppet-service/issues/156',
|
|
84
|
+
].join('\n'))
|
|
85
|
+
return deprecatedDiscoveryEndpoint
|
|
86
|
+
.replace(/^https?:\/\//, '')
|
|
87
|
+
.replace(/\/*$/, '')
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Huan(202108): Wechaty community default authority
|
|
92
|
+
*/
|
|
93
|
+
return 'api.chatie.io'
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export {
|
|
97
|
+
WECHATY_PUPPET_SERVICE_ENDPOINT,
|
|
98
|
+
WECHATY_PUPPET_SERVICE_TOKEN,
|
|
99
|
+
WECHATY_PUPPET_SERVICE_AUTHORITY,
|
|
100
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
puppet,
|
|
3
|
+
} from '@juzi/wechaty-grpc'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Huan(202003):
|
|
7
|
+
* @chatie/GRPC proto gen TS does not generate the ENUM type with reverse mapping.
|
|
8
|
+
* So we need to do it by ourselves:
|
|
9
|
+
* 1. define the EventTypeRev, and
|
|
10
|
+
* 2. loop EventType to fill it.
|
|
11
|
+
*/
|
|
12
|
+
export const EventTypeRev = {} as {
|
|
13
|
+
[key: number]: string,
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
for (const key in puppet.EventType) {
|
|
17
|
+
const val = puppet.EventType[key as keyof puppet.EventTypeMap]
|
|
18
|
+
EventTypeRev[val] = key
|
|
19
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
|
|
3
|
+
import { test } from 'tstest'
|
|
4
|
+
import { FileBox } from 'file-box'
|
|
5
|
+
|
|
6
|
+
import { canPassthrough } from './normalize-filebox.js'
|
|
7
|
+
|
|
8
|
+
const kbFileBox = (size: number) => FileBox.fromBuffer(Buffer.from(
|
|
9
|
+
new Int8Array(size * 1024).fill(0),
|
|
10
|
+
), size + 'KB.txt')
|
|
11
|
+
|
|
12
|
+
test('canPassthrough() size threshold', async t => {
|
|
13
|
+
t.ok(canPassthrough(kbFileBox(16)), 'should passthrough 16KB')
|
|
14
|
+
t.notOk(canPassthrough(kbFileBox(32)), 'should not passthrough 32KB')
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
test('canPassthrough(): always true for green types', async t => {
|
|
18
|
+
const URL = 'https://example.com'
|
|
19
|
+
const QRCODE = 'qrcode'
|
|
20
|
+
const UUID = '12345678-1234-5678-1234-567812345678'
|
|
21
|
+
|
|
22
|
+
t.ok(canPassthrough(FileBox.fromUrl(URL)), 'should passthrough Url')
|
|
23
|
+
t.ok(canPassthrough(FileBox.fromQRCode(QRCODE)), 'should passthrough QRCode')
|
|
24
|
+
t.ok(canPassthrough(FileBox.fromUuid(UUID)), 'should passthrough UUID')
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
test('canPassthrough(): always false for red types', async t => {
|
|
28
|
+
const streamFileBox = FileBox.fromStream(
|
|
29
|
+
await FileBox.fromQRCode('qr').toStream(),
|
|
30
|
+
)
|
|
31
|
+
const localFileBox = FileBox.fromFile('tests/fixtures/smoke-testing.ts')
|
|
32
|
+
|
|
33
|
+
t.notOk(canPassthrough(streamFileBox), 'should not passthrough Stream')
|
|
34
|
+
t.notOk(canPassthrough(localFileBox), 'should not passthrough File')
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
test('canPassthrough(): will depend on the size for yellow types', async t => {
|
|
38
|
+
const bufferFileBox = FileBox.fromBuffer(Buffer.from('buf'))
|
|
39
|
+
const base64FileBox = FileBox.fromBase64(Buffer.from('buf').toString('base64'))
|
|
40
|
+
|
|
41
|
+
t.ok(canPassthrough(bufferFileBox), 'should not passthrough small Buffer')
|
|
42
|
+
t.ok(canPassthrough(base64FileBox), 'should not passthrough small Base64')
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* TODO: add the large size test which will over the threshold
|
|
46
|
+
*/
|
|
47
|
+
})
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
FileBox,
|
|
3
|
+
} from 'file-box'
|
|
4
|
+
import {
|
|
5
|
+
FileBoxType,
|
|
6
|
+
FileBoxInterface,
|
|
7
|
+
} from 'file-box'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Huan(202110): for testing propose, use 20KB as the threshold
|
|
11
|
+
* after stable we should use a value between 64KB to 256KB as the threshold
|
|
12
|
+
*/
|
|
13
|
+
const PASS_THROUGH_THRESHOLD_BYTES = 20 * 1024 // 20KB
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 1. Green:
|
|
17
|
+
* Can be serialized directly
|
|
18
|
+
*/
|
|
19
|
+
const greenFileBoxTypes = [
|
|
20
|
+
FileBoxType.Url,
|
|
21
|
+
FileBoxType.Uuid,
|
|
22
|
+
FileBoxType.QRCode,
|
|
23
|
+
]
|
|
24
|
+
/**
|
|
25
|
+
* 2. Yellow:
|
|
26
|
+
* Can be serialized directly, if the size is less than a threshold
|
|
27
|
+
* if it's bigger than the threshold,
|
|
28
|
+
* then it should be convert to a UUID file box before send out
|
|
29
|
+
*/
|
|
30
|
+
const yellowFileBoxTypes = [
|
|
31
|
+
FileBoxType.Buffer,
|
|
32
|
+
FileBoxType.Base64,
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
const canPassthrough = (fileBox: FileBoxInterface) => {
|
|
36
|
+
/**
|
|
37
|
+
* 1. Green types: YES
|
|
38
|
+
*/
|
|
39
|
+
if (greenFileBoxTypes.includes(fileBox.type)) {
|
|
40
|
+
return true
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 2. Red types: NO
|
|
45
|
+
*/
|
|
46
|
+
if (!yellowFileBoxTypes.includes(fileBox.type)) {
|
|
47
|
+
return false
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 3. Yellow types: CHECK size
|
|
52
|
+
*/
|
|
53
|
+
const size = fileBox.size
|
|
54
|
+
if (size < 0) {
|
|
55
|
+
// 1. Size unknown: NO
|
|
56
|
+
return false
|
|
57
|
+
} else if (size > PASS_THROUGH_THRESHOLD_BYTES) {
|
|
58
|
+
// 2. Size: bigger than threshold: NO
|
|
59
|
+
return false
|
|
60
|
+
} else {
|
|
61
|
+
// 3. Size: smaller than threshold: YES
|
|
62
|
+
return true
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const normalizeFileBoxUuid = (FileBoxUuid: typeof FileBox) => async (fileBox: FileBoxInterface) => {
|
|
68
|
+
if (canPassthrough(fileBox)) {
|
|
69
|
+
return fileBox
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const stream = await fileBox.toStream()
|
|
73
|
+
|
|
74
|
+
const uuid = await FileBoxUuid
|
|
75
|
+
.fromStream(stream, fileBox.name)
|
|
76
|
+
.toUuid()
|
|
77
|
+
|
|
78
|
+
const uuidFileBox = FileBoxUuid.fromUuid(uuid, {
|
|
79
|
+
md5 : fileBox.md5,
|
|
80
|
+
name : fileBox.name,
|
|
81
|
+
size : fileBox.size,
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
return uuidFileBox
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export {
|
|
88
|
+
canPassthrough,
|
|
89
|
+
normalizeFileBoxUuid,
|
|
90
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Readable,
|
|
3
|
+
Writable,
|
|
4
|
+
} from 'stream'
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
FileBox,
|
|
8
|
+
UuidLoader,
|
|
9
|
+
UuidSaver,
|
|
10
|
+
} from 'file-box'
|
|
11
|
+
import {
|
|
12
|
+
chunkDecoder,
|
|
13
|
+
chunkEncoder,
|
|
14
|
+
puppet as pbPuppet,
|
|
15
|
+
} from '@juzi/wechaty-grpc'
|
|
16
|
+
import {
|
|
17
|
+
cloneClass,
|
|
18
|
+
Constructor,
|
|
19
|
+
} from 'clone-class'
|
|
20
|
+
|
|
21
|
+
const uuidResolverGrpc: (grpcClient: () => pbPuppet.PuppetClient) => UuidLoader = (
|
|
22
|
+
grpcClient,
|
|
23
|
+
) => async function uuidResolver (
|
|
24
|
+
this : FileBox,
|
|
25
|
+
uuid : string,
|
|
26
|
+
) {
|
|
27
|
+
const request = new pbPuppet.DownloadRequest()
|
|
28
|
+
request.setId(uuid)
|
|
29
|
+
|
|
30
|
+
const response = grpcClient().download(request)
|
|
31
|
+
|
|
32
|
+
const stream = response
|
|
33
|
+
.pipe(chunkDecoder())
|
|
34
|
+
|
|
35
|
+
return stream
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const uuidRegisterGrpc: (grpcClient: () => pbPuppet.PuppetClient) => UuidSaver = (
|
|
39
|
+
grpcClient,
|
|
40
|
+
) => async function uuidRegister (
|
|
41
|
+
this : FileBox,
|
|
42
|
+
stream : Readable,
|
|
43
|
+
) {
|
|
44
|
+
const response = await new Promise<pbPuppet.UploadResponse>((resolve, reject) => {
|
|
45
|
+
const request = grpcClient().upload((err, response) => {
|
|
46
|
+
if (err) {
|
|
47
|
+
reject(err)
|
|
48
|
+
} else {
|
|
49
|
+
resolve(response)
|
|
50
|
+
}
|
|
51
|
+
}) as unknown as Writable // Huan(202203) FIXME: as unknown as
|
|
52
|
+
|
|
53
|
+
stream
|
|
54
|
+
.pipe(chunkEncoder(pbPuppet.UploadRequest))
|
|
55
|
+
.pipe(request)
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const uuid = response.getId()
|
|
59
|
+
return uuid
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
type UuidifyFileBoxGrpcFactory = (grpcClient: () => pbPuppet.PuppetClient) => typeof FileBox
|
|
63
|
+
|
|
64
|
+
const uuidifyFileBoxGrpc: UuidifyFileBoxGrpcFactory = (
|
|
65
|
+
grpcClient,
|
|
66
|
+
) => {
|
|
67
|
+
/**
|
|
68
|
+
* `as any`:
|
|
69
|
+
*
|
|
70
|
+
* Huan(202110): TypeError: Cannot read property 'valueDeclaration' of undefined #58
|
|
71
|
+
* https://github.com/huan/clone-class/issues/58
|
|
72
|
+
*/
|
|
73
|
+
const FileBoxUuid: typeof FileBox = cloneClass(FileBox as any as Constructor<FileBox>) as any
|
|
74
|
+
|
|
75
|
+
FileBoxUuid.setUuidLoader(uuidResolverGrpc(grpcClient))
|
|
76
|
+
FileBoxUuid.setUuidSaver(uuidRegisterGrpc(grpcClient))
|
|
77
|
+
|
|
78
|
+
return FileBoxUuid
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export {
|
|
82
|
+
uuidifyFileBoxGrpc,
|
|
83
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FileBox,
|
|
3
|
+
UniformResourceNameRegistry,
|
|
4
|
+
} from 'file-box'
|
|
5
|
+
import {
|
|
6
|
+
cloneClass,
|
|
7
|
+
Constructor,
|
|
8
|
+
} from 'clone-class'
|
|
9
|
+
|
|
10
|
+
type UuidifyFileBoxLocalFactory = (urnRegistry: UniformResourceNameRegistry) => typeof FileBox
|
|
11
|
+
|
|
12
|
+
const uuidifyFileBoxLocal: UuidifyFileBoxLocalFactory = (
|
|
13
|
+
urnRegistry,
|
|
14
|
+
) => {
|
|
15
|
+
/**
|
|
16
|
+
* `as any`:
|
|
17
|
+
*
|
|
18
|
+
* Huan(202110): TypeError: Cannot read property 'valueDeclaration' of undefined #58
|
|
19
|
+
* https://github.com/huan/clone-class/issues/58
|
|
20
|
+
*/
|
|
21
|
+
const FileBoxUuid: typeof FileBox = cloneClass(FileBox as any as Constructor<FileBox>) as any
|
|
22
|
+
|
|
23
|
+
FileBoxUuid.setUuidLoader(uuid => urnRegistry.load(uuid))
|
|
24
|
+
FileBoxUuid.setUuidSaver(stream => urnRegistry.save(stream))
|
|
25
|
+
|
|
26
|
+
return FileBoxUuid
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
uuidifyFileBoxLocal,
|
|
31
|
+
}
|
package/src/mod.spec.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --no-warnings --loader ts-node/esm
|
|
2
|
+
|
|
3
|
+
import { test } from 'tstest'
|
|
4
|
+
|
|
5
|
+
import * as mod from './mod.js'
|
|
6
|
+
|
|
7
|
+
test('default export', async t => {
|
|
8
|
+
t.equal(typeof mod.default, 'function', 'should export Puppet class as default, which is required from PuppetManager of Wechaty')
|
|
9
|
+
})
|
package/src/mod.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
log,
|
|
3
|
+
} from '@juzi/wechaty-puppet'
|
|
4
|
+
import {
|
|
5
|
+
PuppetService,
|
|
6
|
+
} from './client/puppet-service.js'
|
|
7
|
+
import {
|
|
8
|
+
VERSION,
|
|
9
|
+
} from './config.js'
|
|
10
|
+
import {
|
|
11
|
+
PuppetServer,
|
|
12
|
+
PuppetServerOptions,
|
|
13
|
+
} from './server/puppet-server.js'
|
|
14
|
+
|
|
15
|
+
export {
|
|
16
|
+
log,
|
|
17
|
+
PuppetServer,
|
|
18
|
+
PuppetService,
|
|
19
|
+
VERSION,
|
|
20
|
+
}
|
|
21
|
+
export type {
|
|
22
|
+
PuppetServerOptions,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default PuppetService
|