{"_id":"@chandre/egg-grpc-client","_rev":"2-798bdc215a537248a68e79889c603fff","name":"@chandre/egg-grpc-client","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@chandre/egg-grpc-client","version":"1.0.0","description":"grpc microservice","eggPlugin":{"name":"grpcClient"},"keywords":["egg","eggPlugin","egg-plugin"],"dependencies":{"@grpc/grpc-js":"^1.8.0"},"devDependencies":{"egg":"^3","egg-bin":"^5","egg-ci":"^2","egg-mock":"^5","eslint":"^8","eslint-config-egg":"^12"},"engines":{"node":">=16.0.0"},"scripts":{"test":"npm run lint -- --fix && npm run test-local","test-local":"egg-bin test","cov":"egg-bin cov","lint":"eslint .","ci":"npm run lint && npm run cov"},"ci":{"version":"16, 18"},"repository":{"type":"git","url":"git+https://github.com/eggjs/@chandre/egg-grpc-client.git"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"homepage":"https://github.com/eggjs/@chandre/egg-grpc-client#readme","author":{"name":"chandre"},"license":"MIT","_id":"@chandre/egg-grpc-client@1.0.0","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-8wpr1mKHqWxVD2mS8LfZV4E9qEbGeHgzDD8RaR6uSobJ2jt9e0d3pBF4fr92einQ7wi6IN5i1pJ5jjFWfsUSdg==","shasum":"dd18eb0ff87fbb40f1b7d302536d6f7e1e64f0a0","tarball":"https://registry.npmjs.org/@chandre/egg-grpc-client/-/egg-grpc-client-1.0.0.tgz","fileCount":9,"unpackedSize":11023,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICBe6jTnVw5OfqbZprPPl+EmGaTEXCCLBNfPIAbhJnL2AiBHzNzP8YeiamgyZUAe62tPZCqOtUr2cuodIIGpWjcmag=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvUodACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq36Q/+JEiGV1OSlGIep7tDzmhr055OmsphSLCWtKel9jXck2o8gaQ1\r\nR2arpruB863M9uFXY6R9fh8FteFTao94OJjjoKtq99t+6Zt9Wcu+gKIAlcYj\r\n4W5oG0uIOduYvZvdPzTOuNcSxYxIqn2IY+MujqJGfwQCIF8fi+vHF94nDoBA\r\nT4dctfAvv91V3oBtQiCMOdtoBoGyb4Sf8A6BgVYpGGlRpclHyaPNQjQAgzLi\r\nfyAMS+7dfu4Lqxbdzifp7zaIHGUhVhOr35alYqm7xMaDKaBg6oBZ1O5MMLgM\r\nSGxatxwxNskBK/OKhzT5meWs3Qf729OxhMcwiIvm+/homzikgmfisZHOF/yD\r\n2NZofEbNew0/cmObkc2M9MpzPxmsDJEMdFZUEht1xpx9/pkmtm639g2qaJOX\r\nrbUj6vHSH5wjxGdKLnR2eBJmAy1c4cnhiwxvz76+pnww/fChqZNNa5VPSKZd\r\nskDN/za5FbzvPnlzLp/li4CTokROq+Fdk/t+EBJAfdfseBarJkiUT/Rk0OGB\r\n2clnbcndimruaHxc/nYuGJvRi9Pfa4Dm+AuvHv09wR25iLNtI6EgohPp7E02\r\ny/vnqh6G7I3u1VOsHd3e9at8vBZT6Nq5EMjVa4CovdmetxOEUnXduO/8YjAW\r\nqegIzBtWkeRrhvvC3WBvSUga2ZkAqVDZY+U=\r\n=whST\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chandre","email":"chandre21cn@gmail.com"},"directories":{},"maintainers":[{"name":"chandre","email":"chandre21cn@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-grpc-client_1.0.0_1673349661246_0.886228719959725"},"_hasShrinkwrap":false},"1.0.1":{"name":"@chandre/egg-grpc-client","version":"1.0.1","description":"grpc microservice","eggPlugin":{"name":"grpcClient"},"keywords":["egg","eggPlugin","egg-plugin"],"dependencies":{"@grpc/grpc-js":"^1.8.0"},"devDependencies":{"egg":"^3","egg-bin":"^5","egg-ci":"^2","egg-mock":"^5","eslint":"^8","eslint-config-egg":"^12"},"engines":{"node":">=16.0.0"},"scripts":{"test":"npm run lint -- --fix && npm run test-local","test-local":"egg-bin test","cov":"egg-bin cov","lint":"eslint .","ci":"npm run lint && npm run cov"},"ci":{"version":"16, 18"},"repository":{"type":"git","url":"git+https://github.com/eggjs/@chandre/egg-grpc-client.git"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"homepage":"https://github.com/eggjs/@chandre/egg-grpc-client#readme","author":{"name":"chandre"},"license":"MIT","_id":"@chandre/egg-grpc-client@1.0.1","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-K9FJaI80LkPXZBUvGKCK9g90V85k1SqdCr21EtEeklEKb1L9MBHOh/4saRsAzncrKm0au92cl8AfDvbAZKrSyQ==","shasum":"5ea86945b8b416e22a01036d2f16940639607647","tarball":"https://registry.npmjs.org/@chandre/egg-grpc-client/-/egg-grpc-client-1.0.1.tgz","fileCount":9,"unpackedSize":11766,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFT8mij3l7D+ZqbigSHexY0WHQE4IMwql4m0LC2HNrLmAiByXe/8ZrfEqwpj/LkfsxKrqXSw+SWkyyvDFSiN6+q2Ww=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAGpaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrSZRAAoJLPdRiahxJ8zFkdJz0IonRlA0mh8TrkIa2DZZqtOuWbWWTX\r\nF1ybDZ2CW0RPQK6y7DLA8NpK97XLE0Sz8hQ5r7tKi7rZURqAPva1EpaCDhI1\r\nV3cNebnwENnQu+OJiZ06iE4AUf9q77byxQnGOAE9p2QmnPmfJCtJtfLy7SMe\r\nGx8yKVAf2w6HmDhPgybpT26dPdSY+fITXw2/Ov5YHeSBJUv4ENf03VC5uHS2\r\nXTk0S8ALKscAxukEObr/rnwm1qdXwyruHVJv4KAAZblCSHscnsYzgPcVPiMX\r\npkxgKPxiBnC5e/Yob8KwutMFm1mN6jebkB16N0zTtVtbey0Sa3OLIUE1giLO\r\nd0tZLUO48wGreGigdq99cHFb+a/QL1JCHKT6sqjdBCEHgUJbB1qRb9HjL12f\r\nB7EUCbBB8FnVXT1XzPn7VoZUhERnyL7uvPSJaXmTsSy0UULSdB8/xgAk826g\r\nUWk0btZiSC8NbaV78tfqsLnE94+k6841yj7nSMBKYBGdUZYv8IklmEjArPtt\r\n0nB1DRNmX6d5r48fOc6TagrlcLZEUzcYJYdIcbJ1UdeDlBUgYknubINnWm74\r\nXX8fXYes2k1D/zpQspUa+T9jutjnF4Gj8QqoCW8inpb9c6Xg6siGT+oyKCEX\r\nk0JOqxnSDQGJU7kpDIntM8b/8aFTPIk1AEY=\r\n=teeR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chandre","email":"chandre21cn@gmail.com"},"directories":{},"maintainers":[{"name":"chandre","email":"chandre21cn@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-grpc-client_1.0.1_1677748826514_0.5718482495844872"},"_hasShrinkwrap":false},"1.0.2":{"name":"@chandre/egg-grpc-client","version":"1.0.2","description":"grpc microservice","eggPlugin":{"name":"grpcClient"},"keywords":["egg","eggPlugin","egg-plugin"],"dependencies":{"@grpc/grpc-js":"^1.8.0"},"devDependencies":{"egg":"^3","egg-bin":"^5","egg-ci":"^2","egg-mock":"^5","eslint":"^8","eslint-config-egg":"^12"},"engines":{"node":">=16.0.0"},"scripts":{"test":"npm run lint -- --fix && npm run test-local","test-local":"egg-bin test","cov":"egg-bin cov","lint":"eslint .","ci":"npm run lint && npm run cov"},"ci":{"version":"16, 18"},"repository":{"type":"git","url":"git+https://github.com/eggjs/@chandre/egg-grpc-client.git"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"homepage":"https://github.com/eggjs/@chandre/egg-grpc-client#readme","author":{"name":"chandre"},"license":"MIT","_id":"@chandre/egg-grpc-client@1.0.2","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-Csjxtd3iJkbL/nhgHtiw4WbtIqXyFUTEfIMMlHe/8fgAPL1PWxwgilcL4Y1+UDjtUcebAXZKH3gGuoHOxPjEjA==","shasum":"ec69b90781742aec019e36e2ff55d21b7b5f5ce7","tarball":"https://registry.npmjs.org/@chandre/egg-grpc-client/-/egg-grpc-client-1.0.2.tgz","fileCount":9,"unpackedSize":11760,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgaBpW+SLqfgmj5KkNSEhsg8ltbCh9XGCfqX6pNJEhzgIhAJrt845McAIuDQbkt6xly3qTcRrijidSPWcva+43zhlU"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAKddACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqXdBAAnBy1hDIy5+LxDDtux/U6kQ14mLQMsNI2U0z57GJgajFgQY+H\r\nGZVQktDPFkmIhuW4mQOjKIcwa1UhlMTyRWokEsv/vkvKgu7HuI5fcxnHJJQQ\r\nARJIWJnufL6KK/CyK7QVJi9UmdthPtguFt+wSxKUrlWQ5/yWEjXSRcEjJ1L+\r\nqQFtGopPhEhi3zgNqkWkqMFcRmcWfJUT8s2KTm9xXkRNK5aGKjmJoF1s8dQB\r\n7Qq0PzJS/Vi6l42l8quTWetokwA298U2RzcMZ7mjycbmaCkQmP6f8/o4/hzn\r\n+AHUf+pBkuLp5VQtpjmO3CIhTF6NLKcRqwtqULWzC8p96kidRHbtr+PrBPbk\r\nrzI/OpaWcN6cS06IrJePLdlWHrpJxPm/nbFq1ofilJQldJyQNU5f4meX0XfW\r\nPoCc2UqGhfsxItHqyzoUvw8wPijSqYqiH0Kp4XJTLPzHPShDQCTg9HqIj7ju\r\nyaH3krBleNXXJgEOLSE/HEY83nJLxNtiwqbozmCGltqle2fdDxUg20Vf9wYw\r\nXN5o1gLRHSAdtSSktHguZHKL/yBIhkaZ6TkOR3/CT5z3rOmX1ISDcVoxDMpA\r\nv/cX1AqX/c0l4wO6EVZSQJ7oQ375N+ww6oWrxBbeRl0eqmls+LWzl+F5efXs\r\n8A1qvsOikr1qcqaTxe7t5lO6Sz2CM/8bVtU=\r\n=RwNM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chandre","email":"chandre21cn@gmail.com"},"directories":{},"maintainers":[{"name":"chandre","email":"chandre21cn@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/egg-grpc-client_1.0.2_1677764445555_0.7658954426283218"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-10T11:21:01.180Z","1.0.0":"2023-01-10T11:21:01.350Z","modified":"2023-03-02T13:40:45.793Z","1.0.1":"2023-03-02T09:20:26.700Z","1.0.2":"2023-03-02T13:40:45.711Z"},"maintainers":[{"name":"chandre","email":"chandre21cn@gmail.com"}],"description":"grpc microservice","homepage":"https://github.com/eggjs/@chandre/egg-grpc-client#readme","keywords":["egg","eggPlugin","egg-plugin"],"repository":{"type":"git","url":"git+https://github.com/eggjs/@chandre/egg-grpc-client.git"},"author":{"name":"chandre"},"bugs":{"url":"https://github.com/eggjs/egg/issues"},"license":"MIT","readme":"# @chandre/egg-grpc-client\n支持 grpc拦截器，请求流、响应流、双向流、自定义服务别名、定义默认响应超时时间、安全验证\n\n## 安装\n\n```bash\n$ npm i @chandre/egg-grpc-client --save\n```\n\n## 使用\n\n```js\n// {app_root}/config/plugin.js\nexports.grpcClient = {\n  enable: true,\n  package: '@chandre/egg-grpc-client',\n};\n```\n\n## 配置\n\n```js\n// {app_root}/config/config.default.js\nexports.grpcClient = {\n  client: {\n    // GRPC 服务器\n    endpoint: '127.0.0.1:50051',\n    // 方法调用默认响应超时\n    timeout: 5000,\n    // 认证\n    secure: false,\n    // 双向认证\n    // secure: {\n    //   ca: '/home/app/ca.pem',\n    //   key: '/cert/client.key',\n    //   chain: '/cert/client.pem',\n    // },\n    // 拦截器、protobuf协议文件加载目录\n    baseDir: 'app/grpc',\n    // 拦截器\n    interceptors: ['beforeRequest'],\n    // 自定义服务别名\n    service: {\n      'demo.Hello': 'HelloService'\n    },\n    // 协议文件加载选项\n    protoOptions: {\n      keepCase: true,\n      defaults: true,\n      oneofs: true,\n      longs: String,\n      enums: String,\n    }\n  }\n};\n```\n\n## 拦截器\n```js\n// {app_root}/app/grpc/intercepter/beforeRequest.js\nmodule.exports = function(app) {\n  const grpc = app.grpc;\n  return function(options, callNext) {\n    return new grpc.InterceptingCall(nextCall(options))\n  }\n}\n```\n\n## protobuf 协议\n```proto\n//{app_root}/app/grpc/proto/demo.proto\n// 语法版本声明，必须放在非注释的第一行\nsyntax = \"proto3\";\n// 包名定义\npackage demo;\nmessage HelloRequest {\n  string message = 1;\n}\nmessage HelloResponse {\n  string message = 1;\n}\n\nservice Hello {\n  rpc echo (HelloRequest) returns (HelloResponse) {};\n}\n```\n\n## 调用\n```js\nclass HomeController extends Controller {\n\n  async helloEcho() {\n    const { ctx, app } = this;\n    const rpc = app.rpc;\n    const metadata = new app.grpc.Metadata()\n    metadata.add('user', 123456);\n\n    const req = rpc.HelloService.echo({\n      message: 'hello'\n    }, metadata, {\n      deadline: Date.now() + 3000 // 覆盖默认响应超时时间, Infinity = 不限制\n    })\n\n    // 监听状态\n    req.call.on(\"status\", status => {\n      console.log(status)\n    })\n\n    // 等待响应\n    try {\n        const res = await req.promise();\n        ctx.body = res;\n    } catch(err) {\n        ctx.body = {\n            code: err.code,\n            message: err.message\n        }\n    }\n  }\n}\n```\n\n","readmeFilename":"README.md"}