{"_id":"@arve.knudsen/libp2p-identify","_rev":"1-8d835c487c67a94ada5e60a4fc1e41b7","name":"@arve.knudsen/libp2p-identify","dist-tags":{"latest":"0.7.7"},"versions":{"0.7.7":{"name":"@arve.knudsen/libp2p-identify","version":"0.7.7","description":"libp2p Identify Protocol","leadMaintainer":"Arve Knudsen <arve.knudsen@gmail.com>","main":"src/index.js","scripts":{"lint":"aegir lint","build":"aegir build","test":"aegir test","test:node":"aegir test -t node","test:browser":"aegir test -t browser","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"aegir coverage"},"pre-push":["lint","test"],"engines":{"node":">=6.0.0","npm":">=3.0.0"},"repository":{"type":"git","url":"git+https://github.com/aknuds1/js-libp2p-identify.git"},"keywords":["IPFS","libp2p"],"license":"MIT","bugs":{"url":"https://github.com/aknuds1/js-libp2p-identify/issues"},"homepage":"https://github.com/aknuds1/js-libp2p-identify#readme","devDependencies":{"aegir":"^18.2.2","chai":"^4.2.0","dirty-chai":"^2.0.1","pull-pair":"^1.1.0"},"dependencies":{"multiaddr":"^6.0.6","@arve.knudsen/peer-id":"~0.13.1","@arve.knudsen/peer-info":"~0.15.2","protons":"^1.0.1","pull-length-prefixed":"^1.3.2","pull-stream":"^3.6.9"},"contributors":[{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Friedel Ziegelmayer","email":"dignifiedquire@gmail.com"},{"name":"Greenkeeper","email":"support@greenkeeper.io"},{"name":"Hugo Dias","email":"hugomrdias@gmail.com"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Jacob Heun","email":"jake@andyet.net"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Richard Littauer","email":"richard.littauer@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Yusef Napora","email":"yusef@protocol.ai"},{"name":"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ","email":"victorbjelkholm@gmail.com"}],"gitHead":"4058c8c37f450fdb897f1f75cfda79bf800b9d94","_id":"@arve.knudsen/libp2p-identify@0.7.7","_nodeVersion":"12.6.0","_npmVersion":"6.10.0","dist":{"integrity":"sha512-2PDZSNiLvhxOogIoiLk+YgKGIeF6244Pl8jU34CKWKQc4lwqNICHw5fzf6dqmSYSJbb034hEedQpGK5DVqCWiw==","shasum":"60a14e1b5f0994065d302fe92a9b004c808b5b4e","tarball":"https://registry.npmjs.org/@arve.knudsen/libp2p-identify/-/libp2p-identify-0.7.7.tgz","fileCount":8,"unpackedSize":14661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ0IZCRA9TVsSAnZWagAARlIP/ROr7xT7GDa6DoTsme7f\nmPuTVpy5SLS7HBszSewFxoP8RGr3B2eEPUw4ywOMzbT4Ra+qYk0y6u/v/OwH\naDmFRVrd5Iw/Fl5j88CGF4HwEUFS6tVFwkAeEeAQNfrXpUIRoQOUiLjsOm4Z\nlVSOiKnrplnYDu5TNClq5czblIN6xABHlmETEbEUTGbIg75tw/hQ0R/CFawz\n+Hw0MKYi28EH4S6NBKgskEGvJhLGxt6G5QakpVIIXtIes9EYLN9kTevU7QHg\n9wAhGuPN9UMJQNrSy47NI9lQiiSXbCY6E7dC6thQIFiVV82JPqq5/mNiEcPT\nfcuYt7YYnZFRA8OaJpLaDILPaP8Y96ANHNQM2buuQvfIaj54/uWMuuQyol0L\nIjnYhPEeQvc9Q7cn1/SnAiNGFgEOWCP0hIUFbdFnlfojhTh0bAJCwin/QxPk\nrbk7u/MLixpxPzvhIBZCwW1XU5TIw9M//+qXjnlHgaIe9RrNSfnfw+4L1S5u\nvzUhC8JqcGLobt6olyfyf2RhYVeD8m+2QAk/u/w/7Kd0QMJbEEMJe+MYzQ+u\nSog/IxZnXBtI+1eX8iAUaiPcaM4Fd37ma2e7AKKkaug2fIJDNajj17irwXGU\ny+0gTBeMzBf3IWTnrOIRkOlC/DlGT3wRhXIh+6dppOaIXw/XNG7vl4J+bkUU\n+Qxf\r\n=siXI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2MUfasptQsp+CwNT92yzuPC1Tr2NSBgkepBhV3SPOjAiA4VfbE2Z0q8IIvRph8X8Dk0Rjkjk3EYRE2nRCYVA2lKQ=="}]},"maintainers":[{"name":"arve.knudsen","email":"arve.knudsen@gmail.com"}],"_npmUser":{"name":"arve.knudsen","email":"arve.knudsen@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/libp2p-identify_0.7.7_1562853912610_0.5165688933523245"},"_hasShrinkwrap":false}},"time":{"created":"2019-07-11T14:05:12.396Z","0.7.7":"2019-07-11T14:05:12.760Z","modified":"2022-04-04T15:41:16.476Z"},"maintainers":[{"name":"arve.knudsen","email":"arve.knudsen@gmail.com"}],"description":"libp2p Identify Protocol","homepage":"https://github.com/aknuds1/js-libp2p-identify#readme","keywords":["IPFS","libp2p"],"repository":{"type":"git","url":"git+https://github.com/aknuds1/js-libp2p-identify.git"},"contributors":[{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Friedel Ziegelmayer","email":"dignifiedquire@gmail.com"},{"name":"Greenkeeper","email":"support@greenkeeper.io"},{"name":"Hugo Dias","email":"hugomrdias@gmail.com"},{"name":"Jacob Heun","email":"jacobheun@gmail.com"},{"name":"Jacob Heun","email":"jake@andyet.net"},{"name":"Maciej Krüger","email":"mkg20001@gmail.com"},{"name":"Richard Littauer","email":"richard.littauer@gmail.com"},{"name":"Vasco Santos","email":"vasco.santos@moxy.studio"},{"name":"Yusef Napora","email":"yusef@protocol.ai"},{"name":"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ","email":"victorbjelkholm@gmail.com"}],"bugs":{"url":"https://github.com/aknuds1/js-libp2p-identify/issues"},"license":"MIT","readme":"# js-libp2p-identify\n\n[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://protocol.ai)\n[![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![](https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23libp2p)\n[![Discourse posts](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg)](https://discuss.libp2p.io)\n[![](https://img.shields.io/codecov/c/github/libp2p/js-libp2p-identify.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-identify)\n[![](https://img.shields.io/travis/libp2p/js-libp2p-identify.svg?style=flat-square)](https://travis-ci.com/libp2p/js-libp2p-identify)\n[![Dependency Status](https://david-dm.org/libp2p/js-libp2p-identify.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-identify)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)\n![](https://img.shields.io/badge/npm-%3E%3D6.0.0-orange.svg?style=flat-square)\n![](https://img.shields.io/badge/Node.js-%3E%3D10.0.0-orange.svg?style=flat-square)\n\n> libp2p Identify Protocol\n\n## Lead Maintainer\n\n[Jacob Heun](https://github.com/jacobheun)\n\n## Description\n\nIdentify is a STUN protocol, used by libp2p-swarm in order to broadcast and learn about the `ip:port` pairs a specific peer is available through and to know when a new stream muxer is established, so a conn can be reused.\n\n## How does it work\n\nBest way to understand the current design is through this issue: https://github.com/libp2p/js-libp2p-swarm/issues/78\n\n### This module uses `pull-streams`\n\nWe expose a streaming interface based on `pull-streams`, rather then on the Node.js core streams implementation (aka Node.js streams). `pull-streams` offers us a better mechanism for error handling and flow control guarantees. If you would like to know more about why we did this, see the discussion at this [issue](https://github.com/ipfs/js-ipfs/issues/362).\n\nYou can learn more about pull-streams at:\n\n- [The history of Node.js streams, nodebp April 2014](https://www.youtube.com/watch?v=g5ewQEuXjsQ)\n- [The history of streams, 2016](http://dominictarr.com/post/145135293917/history-of-streams)\n- [pull-streams, the simple streaming primitive](http://dominictarr.com/post/149248845122/pull-streams-pull-streams-are-a-very-simple)\n- [pull-streams documentation](https://pull-stream.github.io/)\n\n#### Converting `pull-streams` to Node.js Streams\n\nIf you are a Node.js streams user, you can convert a pull-stream to a Node.js stream using the module [`pull-stream-to-stream`](https://github.com/pull-stream/pull-stream-to-stream), giving you an instance of a Node.js stream that is linked to the pull-stream. For example:\n\n```js\nconst pullToStream = require('pull-stream-to-stream')\n\nconst nodeStreamInstance = pullToStream(pullStreamInstance)\n// nodeStreamInstance is an instance of a Node.js Stream\n```\n\nTo learn more about this utility, visit https://pull-stream.github.io/#pull-stream-to-stream.\n","readmeFilename":"README.md"}