{"_id":"loopback-connector-grpc","_rev":"27-3bd9be6d021abff3ecb2e8d993eb85c5","name":"loopback-connector-grpc","dist-tags":{"latest":"2.0.0"},"versions":{"1.1.0":{"name":"loopback-connector-grpc","version":"1.1.0","license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-grpc@1.1.0","maintainers":[{"name":"rfeng","email":"enjoyjava@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-connector-grpc#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-grpc/issues"},"dist":{"shasum":"83af1c8446aa4cd3a6c43cb64f5a77c48cec7ea2","tarball":"https://registry.npmjs.org/loopback-connector-grpc/-/loopback-connector-grpc-1.1.0.tgz","integrity":"sha512-JIibMDgYGfYI2Xb7pAtxdXWg8oGlJtFEO19+V2VD/vl8RPjMCKmsX+ecOWiwAOaYwqo0TNWhqpElAw45U5kgNw==","signatures":[{"sig":"MEUCIAqBtgfAxHiq59YWCyWmClyGcb5rjMf6Dr/RLbe1+5CQAiEA/JLQ/ZCEqKKz8Z51WeUg2UzkKHo2pu37vnVeKItoohU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"83af1c8446aa4cd3a6c43cb64f5a77c48cec7ea2","gitHead":"ed6be188efc8a65c171db169ce93e2cb20ac5a30","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-grpc.git","type":"git"},"_npmVersion":"4.2.0","description":"LoopBack connector for gRPC services","directories":{},"_nodeVersion":"6.10.0","dependencies":{"grpc":"^1.2.0","debug":"^2.6.0","js-yaml":"^3.8.1"},"devDependencies":{"mocha":"^3.2.0","eslint":"^3.18.0","should":"^11.2.0","loopback":"^3.5.0","eslint-config-loopback":"^8.0.0","loopback-datasource-juggler":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-grpc-1.1.0.tgz_1493680858911_0.4365791294258088","host":"packages-12-west.internal.npmjs.com"}},"1.2.0":{"name":"loopback-connector-grpc","version":"1.2.0","license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-grpc@1.2.0","maintainers":[{"name":"0candy","email":"ngcandy@ca.ibm.com"},{"name":"b-admike","email":"binadmt@hotmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"davidcheung","email":"davidcheung@live.ca"},{"name":"dhmlau","email":"dianahmlau@gmail.com"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"kraman","email":"kraman@gmail.com"},{"name":"mahesh.patsute","email":"mahesh.patsute@ibm.com"},{"name":"qpresley","email":"qpresley@ca.ibm.com"},{"name":"rashmihunt","email":"rashmihunt@gmail.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"ritch","email":"skawful@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"superkhau","email":"superkhau@gmail.com"},{"name":"tonyf-ibm","email":"tffrench@us.ibm.com"},{"name":"virkt25","email":"taranveer@virk.cc"}],"homepage":"https://github.com/strongloop/loopback-connector-grpc#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-grpc/issues"},"dist":{"shasum":"e1ebfe032884378f97e2a60adfd573fc7e9fe7df","tarball":"https://registry.npmjs.org/loopback-connector-grpc/-/loopback-connector-grpc-1.2.0.tgz","fileCount":14,"integrity":"sha512-IjnLQ13xiNWC4YJWv2sp66h9Prufx3GF3Z7SXbogeHlrnr5+8RbbBDw/WFS6VJmATO/xxZJYBzdfr2IZs1Ji/w==","signatures":[{"sig":"MEQCIHmfn7Gd2N/x1sZRuxIKreRyGe8bCQCr16qPDWdcvSyZAiAZqtQXwb9gMSIQFs15I0s0EAD9OJPgYqR7zuhINluNVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8cbgCRA9TVsSAnZWagAAzhUP+wYA9um9LVBavtVZchKG\n1tTaz7w8C2UzQtkjvA+5RepqSNXirdsbKSKNfI3RcyCPUz/cU/0OtjKIt2zI\nkaCuDSAo2c2gJ0da4wvlYZMih7cCCeK5lMdnRdbpdrTOkuAu1xfTYsb6TOhW\nRCRkk6ADeJljJ8rHlSUzgJvJwsnEp/T1F7zUGz4rf1lpOwhe8JaeB+0WWWwL\nH4KYe2R1cknPPJRdNeSr9fKlapiuIpNTRbvEWjNy3UhSd6DddTqZGEtKdBrr\nQWl3PjPxvoldPTaMMuDf/tCj5lQAyKKSk5PhfVBIS+bBbaTz2lqom2l59Cm/\nqIx1xYMLsVHBB785Sl4aJ0D2E/mY2Zjjoo9lW4NR9y0g2EckMQ34sbJBqJTN\nYRO8GH/ZIDsirqecnW1ESEEvAe/WK/v/wtj9T/0YAcOXl+II2nCca4Ybv8Qj\nTZIuur+YoMXE+XWdnvM5ax7Jqau0zXE2PfwYuhRT3mjbebu5QPw+8m4yp+Yh\ng7P965uYF202m50B55/cBRQOF8rK4sBHNxY6edpgvQfskCnqBPeZrKNgfQnz\nYHnp3HAY8J4vwlhmZb4oAhKxhTfM1MGSMswnSAWdgIsuwNG0NZun2j7OoFRp\nwW09u4gqZ9tgyN4FQ++Z6gWfeZnalmt0+F89fk6xmZYveKQHu/w/mu4My94l\nsLIm\r\n=oCon\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","_from":".","_shasum":"e1ebfe032884378f97e2a60adfd573fc7e9fe7df","gitHead":"fff4639d9125c172440a3933a6dc6e8d558b623e","scripts":{"lint":"eslint .","test":"mocha","posttest":"npm run lint"},"_npmUser":{"name":"dhmlau","email":"dianahmlau@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-grpc.git","type":"git"},"_npmVersion":"3.10.10","description":"LoopBack connector for gRPC services","directories":{},"_nodeVersion":"6.11.0","dependencies":{"grpc":"^1.2.0","debug":"^2.6.0","js-yaml":"^3.8.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^3.2.0","eslint":"^3.18.0","should":"^11.2.0","loopback":"^3.5.0","eslint-config-loopback":"^8.0.0","loopback-datasource-juggler":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-grpc_1.2.0_1525794526444_0.7962112745355074","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"loopback-connector-grpc","version":"1.3.0","author":{"name":"IBM Corp."},"license":"SEE LICENSE IN LICENSE.md","_id":"loopback-connector-grpc@1.3.0","maintainers":[{"name":"b-admike","email":"binadmt@hotmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"dhmlau","email":"dianahmlau@gmail.com"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-connector-grpc#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-grpc/issues"},"dist":{"shasum":"792b373c87d2bfaf3098b9b3100feebd7c018d4f","tarball":"https://registry.npmjs.org/loopback-connector-grpc/-/loopback-connector-grpc-1.3.0.tgz","fileCount":13,"integrity":"sha512-N3yaDzkmpNwo0zrVXE8reZnyXFf7ufR7A41y17cVAWkq+FLJhbfN4YK2W2eArXkTWiAusxvRhHPGyLgrHBvC9w==","signatures":[{"sig":"MEUCIByp3+nZZN/jGRvMvePUazPxcmgYQnULMt3rPXnnF7r2AiEA6sXpIwrCZw0NjO8Lbjppq2mFWpse8nyZ1Cf4PNbTmaY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdd9MHCRA9TVsSAnZWagAA0KgP/RDsHwJxzV4pCDlwX61F\nyxFbZG12dQgg/mVBgzaQEa893AS+3E61wyP037bBsFP0u2BT+jZ9Xwup50PA\nZyLfIRIULpy54mlnS90C1FOOc2MCSc+d9Ep/O3A1HMjfH/HcN62Sc6/Ok/jA\n7YZH+rjEGBJbjYGKlHshQ2VPCkX/bS0Zd3MmuFWao9btjGA+GWRssauI7EhC\nXZhpZvla6YoMPTcoWs9UoK2lGXDy+ZOMhBdKCE1oqZ5kFweWiBr/xSJbB4gS\nZOytYPzKGDQfC4ZpD+oZX0N+9X96A0FL09iGbIVX8iDWP0ibtSTiwT8A1uae\nT96cb8l4zsM/d48LiTOu90f/riZ7Ya+nkEzCA3OMCPA8NVxtCR84zMkIPKKH\nU+e2JO8RT+BlQYrSJa7Czeue+jKXwbH75GiStvpD7ult0YoJPIM7l/78sWOK\n4e1lL+Lx5D3GF20rFZyCghIqbUr6HPC9JoMupVNjjaFx2GKXTizsRso1TgY2\n9H8SP4Ujpxau9o/hfLK8x5tsN2eaa7aD6cPMFtQVD4M5OfWRq816RNANuisf\nAkX2kfchxFDuXJJNN0r8w5n8zMW2FYfRsG4pIbbhCcs1MZgB4A9a6rgeuwBe\nGqpinc++j5p5DTfS1S7ItXfblNqwugvaQklT42SUtUW9DChdPkigwTBdsqEd\ny+LM\r\n=gbdU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=8"},"gitHead":"6b80dfb2b1d24229171d7de56f07b906d1173646","scripts":{"lint":"eslint .","test":"mocha","lint:fix":"eslint . --fix","posttest":"npm run lint"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-grpc.git","type":"git"},"_npmVersion":"6.11.3","description":"LoopBack connector for gRPC services","directories":{},"_nodeVersion":"12.9.1","dependencies":{"grpc":"^1.23.3","debug":"^4.1.1","js-yaml":"^3.8.1","@grpc/proto-loader":"^0.5.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.2.0","eslint":"^6.3.0","should":"^13.2.3","loopback":"^3.5.0","eslint-config-loopback":"^13.1.0","loopback-datasource-juggler":"^4.12.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-grpc_1.3.0_1568133894605_0.5172396361561147","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"loopback-connector-grpc","version":"2.0.0","author":{"name":"IBM Corp."},"license":"MIT","_id":"loopback-connector-grpc@2.0.0","maintainers":[{"name":"emonddr","email":"dremond@ca.ibm.com"},{"name":"rfeng","email":"enjoyjava@gmail.com"},{"name":"bajtos","email":"mbajtoss@gmail.com"},{"name":"rmg","email":"r.m.graham@gmail.com"},{"name":"hacksparrow","email":"captain@hacksparrow.com"},{"name":"jannyhou2016","email":"juehou@ca.ibm.com"},{"name":"dhmlau","email":"dianahmlau@gmail.com"}],"homepage":"https://github.com/strongloop/loopback-connector-grpc#readme","bugs":{"url":"https://github.com/strongloop/loopback-connector-grpc/issues"},"dist":{"shasum":"afacbed0cab0219195ae1280e80860dc08d99c4d","tarball":"https://registry.npmjs.org/loopback-connector-grpc/-/loopback-connector-grpc-2.0.0.tgz","fileCount":16,"integrity":"sha512-K0YlfhG7r4xw/IOcotmw3j+Hs28GY6VPEc6aosGw4Qr4tNdKsnGGQsOIoiL/BmNMssicO4jJEmGlk0HY5LcD/g==","signatures":[{"sig":"MEUCIQCIGHrVD5qWHMqa8khj1kyItxvTxyVB3Fcgm32Qemu85gIgALSteZKY3eR9TJJ5Od4pLuJZ9+wvwwR+0YI/QKIBG6U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfagzaCRA9TVsSAnZWagAAIWkP/jcTd/z6ZCeYTTZ//UBk\npfcvLpfPm5y3JVOH9/4mSJy14cAUP2oGpMBMXoGIQUmU/lUjL1c2WjHhRKk4\nYWqAhc6YsnKal3gKu6qGJ45KDK0tJToEBJ9Sh4DHOEqgxqt8Lr5Oj0Q8ePKS\nF3lc3C0Nxecqao9tPfbseYiiA4S+geFNcKsWXeLZNSBGNaTOgcDuDwIHGhAs\n63K/W8gwIygl919ghZ+SwDiBOL+bc1G50PwbUkDgReEli8fxKrFyaJQsowjL\nbiuS/ORpJJabHpC7hXoqT2dG3sXDwJROra7+MCZHZb4GDLXNeCd/h0UcSKpk\nVSDFsCi5tEkb9/57HS5YLNIh+Nm7nI8zNPoR8CT0LW4PuqwA4iinFwNJj7/M\nu03r45C1JjO7MGerGgFMKA2v8zf7GMs48pWQ5TbctU+EDgqQOxPJmTKoJj0u\nG6ba2+7ZeJRyAAHaVqOVBSccWWXujk1ZMQXImoR05BdwVCY+B5CyyIRg2S3/\nfo/orUF6PGpyfqQomsfXPlDFWG2ASImR2z73B0tP9z3C3on4asXnp8QAKVw7\ne35j8h8XgyFI3hjC/dzEXByVdc35aUWvk+QxAOpb+JTdW1bV1RwUb2khIKUB\nkNalKTv0zYbqZF9PgAx0GYOhLDQj+HgMym9K5+ZKfx1YyuHsywTJONZl1n1G\n5WO6\r\n=jkyF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","engines":{"node":">=10.16"},"gitHead":"3cba81395d903cb515684c099664581e08ef79c4","scripts":{"lint":"eslint .","test":"mocha --exit","lint:fix":"eslint . --fix","posttest":"npm run lint"},"_npmUser":{"name":"rfeng","email":"enjoyjava@gmail.com"},"repository":{"url":"git+https://github.com/strongloop/loopback-connector-grpc.git","type":"git"},"_npmVersion":"6.14.8","description":"LoopBack connector for gRPC services","directories":{},"_nodeVersion":"14.11.0","dependencies":{"debug":"^4.2.0","js-yaml":"^3.14.0","@grpc/grpc-js":"^1.1.7","@grpc/proto-loader":"^0.5.5"},"_hasShrinkwrap":false,"copyright.owner":"IBM Corp.","devDependencies":{"mocha":"^8.1.3","eslint":"^7.9.0","should":"^13.2.3","loopback":"^3.27.0","eslint-config-loopback":"^13.1.0","loopback-datasource-juggler":"^4.24.0"},"_npmOperationalInternal":{"tmp":"tmp/loopback-connector-grpc_2.0.0_1600785625463_0.5741130539563595","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-05-01T23:20:59.631Z","modified":"2024-07-09T12:43:17.806Z","1.1.0":"2017-05-01T23:20:59.631Z","1.2.0":"2018-05-08T15:48:46.513Z","1.3.0":"2019-09-10T16:44:54.761Z","2.0.0":"2020-09-22T14:40:25.662Z"},"bugs":{"url":"https://github.com/strongloop/loopback-connector-grpc/issues"},"author":{"name":"IBM Corp."},"license":"MIT","homepage":"https://github.com/strongloop/loopback-connector-grpc#readme","repository":{"url":"git+https://github.com/strongloop/loopback-connector-grpc.git","type":"git"},"description":"LoopBack connector for gRPC services","maintainers":[{"email":"enjoyjava@gmail.com","name":"rfeng"},{"email":"r.m.graham@gmail.com","name":"rmg"},{"email":"dianahmlau@gmail.com","name":"dhmlau"},{"email":"jgorzinski@gmail.com","name":"theprez"},{"email":"frbuceta@gmail.com","name":"frbuceta"},{"email":"marioestradarosa@yahoo.com","name":"marioestradarosa"},{"email":"Vn7WbcdkHEmkHHpPCoKf@achrinza.com","name":"achrinza"}],"readme":"# loopback-connector-grpc\nThe gRPC connector enables LoopBack applications to interact with [gRPC](http://www.grpc.io/) services.\n\n## Installation \n\nIn your application root directory, enter:\n```\n$ npm install loopback-connector-grpc --save\n```\n\nThis will install the module from npm and add it as a dependency to the application's `package.json` file.\n\n## Configuration\n\nTo interact with a gRPC API, configure a data source backed by the gRPC connector:\n\nWith code:\n\n```javascript\n  var ds = loopback.createDataSource('grpc', {\n    connector: 'loopback-connector-grpc',\n    spec: 'note.proto',\n  });\n```\n\nWith JSON in `datasources.json` (for example, with basic authentication):\n\n```\n\"gRPCDataSource\": {\n    \"name\": \"gRPCDataSource\",\n    \"connector\": \"grpc\",\n    \"spec\": \"note.proto\",\n    \"security\": {\n      \"type\" : \"basic\", \n      \"username\": \"the user name\",\n      \"password\": \"thepassword\"\n}    \n```\n\n## Data source properties\n\nSpecify the options for the data source with the following properties. \n\n| Property | Description | Default   |\n|----------|-------------|-----------|\n| connector | Must be `'loopback-connector-grpc'` to specify gRPC connector| None |\n|spec      | HTTP URL or path to the gRPC specification file (with file name extension `.yaml/.yml` or `.json`).  File path must be relative to current working directory (`process.cwd()`).| None |\n|validate | When `true`, validates provided `spec` against gRPC specification 2.0 before initializing a data source. | `false`|\n| security | Security configuration for making authenticated requests to the API. | None |\n\n### Authentication\n\nBasic authentication:\n\n```javascript\nsecurity: {\n  rootCerts: 'rootCerts.crt', // Path to root certs\n  key: 'gprc.key', // Path to client SSL private key\n  cert: 'grpc.crt' // Path to client SSL certificate\n}\n```\n\n### Creating a model from the gRPC data source\n\nThe gRPC connector loads the API specification document asynchronously. As a result, the data source won't be ready to create models until it is connected.  For best results, use an event handler for the `connected` event of data source:\n\n```javascript\nds.once('connected', function(){\n  var PetService = ds.createModel('PetService', {});\n  ...\n});\n```\nOnce the model is created, all available gRPC API operations can be accessed as model methods, for example:\n\n```javascript\n...\nPetService.getPetById({petId: 1}, function (err, res){\n  ...\n});\n```\n\nThe model methods can also be called as promises:\n\n```javascript\nPetService.getPetById({petId: 1}).then(function(res) {\n  ...\n}, function(err) {\n  ...\n});\n// in async/await flavor\nconst res = await PetService.getPetById({petId: 1});\n```\n\n### Extend a model to wrap/mediate API Operations\nOnce you define the model, you can wrap or mediate it to define new methods. The following example simplifies the `getPetById` operation to a method that takes `petID` and returns a Pet instance.\n\n```javascript\nPetService.searchPet = function(petID, cb){\n  PetService.getPetById({petId: petID}, function(err, res){\n    if(err) cb(err, null);\n    var result = res.data;\n    cb(null, result);\n  });\n};\n```\n\nThis custom method on the `PetService` model can be exposed as REST API end-point. It uses `loopback.remoteMethod` to define the mappings:\n\n```javascript\nPetService.remoteMethod(\n  'searchPet', {\n    accepts: [\n      { arg: 'petID', type: 'string', required: true,\n        http: { source: 'query' }\n      }\n    ],\n    returns: {arg: 'result', type: 'object', root: true },\n    http: {verb: 'get', path: '/searchPet'}\n  }\n);\n```\n\n### Example\n\nComing soon...\n","readmeFilename":"README.md"}