{"_id":"@achingbrain/webrtc-direct","_rev":"2-863480392c14d36cfd43cf8d8de0d547","name":"@achingbrain/webrtc-direct","dist-tags":{"latest":"0.7.2"},"versions":{"0.7.1":{"name":"@achingbrain/webrtc-direct","version":"0.7.1","description":"Dial using WebRTC without the need to set up any Signalling Rendezvous Point! ","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-webrtc-direct#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-webrtc-direct.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-webrtc-direct/issues"},"keywords":["connection","dial","libp2p","stream","webrtc"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"types/src/index.d.ts","typesVersions":{"*":{"*":["types/*","types/src/*"],"types/*":["types/*","types/src/*"]}},"exports":{".":{"import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog",["@semantic-release/npm",{"pkgRoot":"dist"}],"@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check dist/src/**/*.js dist/test/**/*.js","build":"tsc","pretest":"npm run build","test":"aegir test -f \"./dist/test/**/*.spec.js\"","test:node":"npm run test -- -t node -f ./dist/test/node.js","test:chrome":"npm run test -- -t browser -f ./dist/test/browser.js ","test:firefox":"npm run test -- -t browser -- --browser firefox -f ./dist/test/browser.js","release":"semantic-release"},"dependencies":{"@libp2p/interfaces":"^1.3.15","@libp2p/logger":"^1.0.2","@libp2p/utils":"^1.0.9","@libp2p/webrtc-peer":"^1.0.4","@multiformats/mafmt":"^11.0.2","@multiformats/multiaddr":"^10.1.7","abortable-iterator":"^4.0.2","err-code":"^3.0.0","multiformats":"^9.4.5","native-fetch":"^4.0.2","uint8arrays":"^3.0.0","undici":"^4.16.0","wherearewe":"^1.0.1"},"devDependencies":{"@libp2p/interface-compliance-tests":"^1.1.17","@mapbox/node-pre-gyp":"^1.0.8","aegir":"^36.0.0","it-all":"^1.0.6","it-pipe":"^2.0.3","multiaddr":"^10.0.0","p-event":"^5.0.1","wrtc":"^0.4.6"},"browser":{"./dist/src/listener.js":"./dist/src/listener.browser.js"},"gitHead":"fa366bf3037f979e5ac47e4751bdeda62cf14acd","_id":"@achingbrain/webrtc-direct@0.7.1","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-J51a7zfZzQUau8Gy7cXH49KxZRIdyr6nWiNj65G6aDVZjyQZoNnBppDKuMrstJoi20A8MaAUA8kLUqOLdhBleg==","shasum":"3662a37d00adec6a4335b5a31dd04b33b5afc248","tarball":"https://registry.npmjs.org/@achingbrain/webrtc-direct/-/webrtc-direct-0.7.1.tgz","fileCount":24,"unpackedSize":50590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOMunACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq06w//dbjRTB2SZfPvtSJjgqqBs4ItTK4I8EUy3t///Tzve6IpWhrU\r\nOjJZ4qImWHH/4zwNcocJl/kagAROYNSdQobjbWxt2zrs+i151y97Wy7Lzb1t\r\naMpPWnWKGCn9PIpZyTWvcgFMixwVZiwDVjZkm0NQlydVPeU+48tCwLHNZReU\r\np9lE1BPpAqzElqef1TysyKU/qnFx5VVYXXFpHHe58NAxVGVUmmYeOaMOH3kS\r\nRusNBXOPamOlm7wrcjOntLqvRnxbEasHRwjPjOVMuf17FUlLqJIIOObjL+Ne\r\nEiz3/nWDJMP4gsBrr6GzHdGWLkeOqumGnriNoNUcGDN+SWeGvS/Yj1hkMnzt\r\nZZzO+FU1GpHEJG1u19tmavqMunScuyFXCQx2IMpNO8o2ZNUI7WMBfOca3dRG\r\nsl2g7TQ+BX8yXRUGaXQNB4Q8sG6f+TWVbdjmcFB6Fy28u+e/EB7QRBhK/z3c\r\n53LFvjHFw/HNJnpY27SNcs4Pv684beh4jEKfsjFnFVedU741/ppYSBDtYDFM\r\nlg3X7Wnuyu31LBSYgZs6r6GyfOLZObSKEN+TaAyZgORLqILC9vDUF0ZLdr7L\r\nSYtCfOfUYGG3Jr9lrMY4xIAUMKOLmGzMky8IKa4TxG52U3XZnJPZmp2D0dMA\r\nbFWQEuN7P/KlChrMj9nMJt9DK5ZyNQGh9hM=\r\n=KmGM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCq1d/FqQk5SD04zzNRVAk/dzEkbov85/DLZvqOEMTx3gIhAOrZdu81zEvdu2zjSbGWCEqmqnm9ZPfS1EM3SNtOW4ET"}]},"_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/webrtc-direct_0.7.1_1647889319096_0.07259544530720197"},"_hasShrinkwrap":false},"0.7.2":{"name":"@achingbrain/webrtc-direct","version":"0.7.2","description":"Dial using WebRTC without the need to set up any Signalling Rendezvous Point! ","license":"Apache-2.0 OR MIT","homepage":"https://github.com/libp2p/js-libp2p-webrtc-direct#readme","repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-webrtc-direct.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-webrtc-direct/issues"},"keywords":["connection","dial","libp2p","stream","webrtc"],"engines":{"node":">=16.0.0","npm":">=7.0.0"},"type":"module","types":"types/src/index.d.ts","typesVersions":{"*":{"*":["types/*","types/src/*"],"types/*":["types/*","types/src/*"]}},"exports":{".":{"import":"./dist/src/index.js"}},"eslintConfig":{"extends":"ipfs","parserOptions":{"sourceType":"module"}},"release":{"branches":["master"],"plugins":[["@semantic-release/commit-analyzer",{"preset":"conventionalcommits","releaseRules":[{"breaking":true,"release":"major"},{"revert":true,"release":"patch"},{"type":"feat","release":"minor"},{"type":"fix","release":"patch"},{"type":"chore","release":"patch"},{"type":"docs","release":"patch"},{"type":"test","release":"patch"},{"scope":"no-release","release":false}]}],["@semantic-release/release-notes-generator",{"preset":"conventionalcommits","presetConfig":{"types":[{"type":"feat","section":"Features"},{"type":"fix","section":"Bug Fixes"},{"type":"chore","section":"Trivial Changes"},{"type":"docs","section":"Trivial Changes"},{"type":"test","section":"Tests"}]}}],"@semantic-release/changelog",["@semantic-release/npm",{"pkgRoot":"dist"}],"@semantic-release/github","@semantic-release/git"]},"scripts":{"lint":"aegir lint","dep-check":"aegir dep-check dist/src/**/*.js dist/test/**/*.js","build":"tsc","pretest":"npm run build","test":"aegir test -f \"./dist/test/**/*.spec.js\"","test:node":"npm run test -- -t node -f ./dist/test/node.js","test:chrome":"npm run test -- -t browser -f ./dist/test/browser.js ","test:firefox":"npm run test -- -t browser -- --browser firefox -f ./dist/test/browser.js","release":"semantic-release"},"dependencies":{"@libp2p/interfaces":"^1.3.15","@libp2p/logger":"^1.0.2","@libp2p/utils":"^1.0.9","@libp2p/webrtc-peer":"^1.0.4","@multiformats/mafmt":"^11.0.2","@multiformats/multiaddr":"^10.1.7","abortable-iterator":"^4.0.2","err-code":"^3.0.0","multiformats":"^9.4.5","native-fetch":"^4.0.2","uint8arrays":"^3.0.0","undici":"^4.16.0","wherearewe":"^1.0.1"},"devDependencies":{"@libp2p/interface-compliance-tests":"^1.1.17","@mapbox/node-pre-gyp":"^1.0.8","aegir":"^36.0.0","it-all":"^1.0.6","it-pipe":"^2.0.3","multiaddr":"^10.0.0","p-event":"^5.0.1","wrtc":"^0.4.6"},"browser":{"./dist/src/listener.js":"./dist/src/listener.browser.js"},"gitHead":"fa366bf3037f979e5ac47e4751bdeda62cf14acd","_id":"@achingbrain/webrtc-direct@0.7.2","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-DNlsz1BydjeNWDOgoA16LKav5kjb0oJbG+hMDnLRFFLOfTUgp7RYt5CnskAsVviEC5hOxHSiHE6gI4vaOkMoxw==","shasum":"929afe2c671e26c4633002fcddc37484ef5881b4","tarball":"https://registry.npmjs.org/@achingbrain/webrtc-direct/-/webrtc-direct-0.7.2.tgz","fileCount":28,"unpackedSize":61208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOMyhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2ERAAm07E5Dh8RN5mrlK0zKr1LGh+lzqZqKoJgebD2/vTcUoJ58Om\r\nZpE01OhKWcq1ctBW/9Fi91EAA0jJ8FtqJvXs5R7Vi90Y9UEwJx1S9BMO3CoH\r\nKKNJ+7tD6r9PNmXkMect1PE2+EIHaA6KdS8tLTzHP2dD/ndLYAd8OIx0POTw\r\nsOLiZ7egXqeg3jhTAkkTofXiexy3V5WugU1HKfjqA2kvaFdbCo/ckC9nKNK7\r\nq+CnApVhpQvhWkPsArWOrvQh9SgP3uU4M77o0Lrhnhe0bdOvagz6tv7MB1nI\r\n3fsf3uJz15bFq+VTHqwuiN2AqNVZT9pj0HHS9VLO34rEXb/zrLSrVY8/EFfF\r\nSenVk0T04f+3CAfcH31bEKwadUcoNUCSCUabofEURygimTP4THV/oiSdPPwc\r\ncYOJhmzeiVuw12hQEhwbgMcj6B9D69nvEaWDFN8eC+LM6gnLwxjmjv/CH4BV\r\n4dFXcfiaD0mMJ4Km9ahcTpv1kij50Tw4amwh/D4HGBBXe8zDut9E3p+VRm+p\r\nxsv713Pf0m+DBXmP5MSpYiWGE52+uJ64+96IXqoTZ4H+K8aMCCeO5AftMFDB\r\nfoI87UMfoqEa7Crtix1zzAPSrZDM2BfauuG3ctY/xDNVjCXBx5nfQaC7erMW\r\nc06nI1DMMmKEdK2TKo4QBQAA9Sdyz2UAEYM=\r\n=tbij\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDoQugwPbfQPEfBZPNFBS5MiRlJ9049tp/Nxn+JxE+6WgIhAI9GVeTujHffaPTEs5F8IZP3BDgXy2jYhFRfkixfOt+p"}]},"_npmUser":{"name":"achingbrain","email":"alex@achingbrain.net"},"directories":{},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/webrtc-direct_0.7.2_1647889569261_0.9456189309133842"},"_hasShrinkwrap":false}},"time":{"created":"2022-03-21T19:01:59.034Z","0.7.1":"2022-03-21T19:01:59.296Z","modified":"2022-04-04T11:11:00.839Z","0.7.2":"2022-03-21T19:06:09.389Z"},"maintainers":[{"name":"achingbrain","email":"alex@achingbrain.net"}],"description":"Dial using WebRTC without the need to set up any Signalling Rendezvous Point! ","homepage":"https://github.com/libp2p/js-libp2p-webrtc-direct#readme","keywords":["connection","dial","libp2p","stream","webrtc"],"repository":{"type":"git","url":"git+https://github.com/libp2p/js-libp2p-webrtc-direct.git"},"bugs":{"url":"https://github.com/libp2p/js-libp2p-webrtc-direct/issues"},"license":"Apache-2.0 OR MIT","readme":"# js-libp2p-webrtc-direct <!-- omit in toc -->\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-webrtc-direct.svg?style=flat-square)](https://codecov.io/gh/libp2p/js-libp2p-webrtc-direct)\n[![Build Status](https://github.com/libp2p/js-libp2p-webrtc-direct/actions/workflows/js-test-and-release.yml/badge.svg?branch=main)](https://github.com/libp2p/js-libp2p-webrtc-direct/actions/workflows/js-test-and-release.yml)\n[![Dependency Status](https://david-dm.org/libp2p/js-libp2p-webrtc-direct.svg?style=flat-square)](https://david-dm.org/libp2p/js-libp2p-webrtc-direct) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)\n\n![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/packages/libp2p-interfaces/src/connection/img/badge.png)\n![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/packages/libp2p-interfaces/src/transport/img/badge.png)\n\n> A WebRTC transport built for libp2p (not mandatory to use with libp2p) that doesn't require the set up a signalling server. Caveat, you can only establish Browser to Node.js and Node.js to Node.js connections.\n\n## Table of Contents <!-- omit in toc -->\n\n- [Install](#install)\n- [Usage](#usage)\n- [API](#api)\n  - [Transport](#transport)\n  - [Connection](#connection)\n- [Contribute](#contribute)\n- [License](#license)\n\n## Install\n\n```bash\n> npm install @libp2p/webrtc-direct\n```\n\n**NOTE:** To run build scripts `node-pre-gyp` is required. You can install it by running `npm install -g node-pre-gyp`.\n\n## Usage\n\n```js\nimport { WebRTCDirect } from '@libp2p/webrtc-direct'\nimport { Multiaddr } from '@multiformats/multiaddr'\nimport { pipe } from 'it-pipe'\nimport all from 'it-all'\n\nconst ECHO_PROTOCOL = '/echo/1.0.0'\nconst addr = new Multiaddr('/ip4/127.0.0.1/tcp/9090/http/p2p-webrtc-direct')\nconst webRTCDirect = new WebRTCDirect()\n\nconst listener = webRTCDirect.createListener({\n  handler: (connection) => {\n    console.log('new connection opened')\n\n    connection.newStream([ECHO_PROTOCOL])\n      .then(({ stream }) => {\n        void pipe(stream, stream)\n      })\n  },\n  upgrader\n})\n\nawait listener.listen(addr)\nconsole.log('listening')\n\nconst connection = await webRTCDirect.dial(addr, {\n  upgrader\n})\nconst { stream } = await connection.newStream([ECHO_PROTOCOL])\nconst values = await pipe(\n  [uint8arrayFromString('hello')],\n  stream,\n  (source) => all(source)\n)\nconsole.log(`Value: ${uint8ArrayToString(values[0])}`)\n\n// Close connection after reading\nawait listener.close()\n```\n\nOutputs:\n\n```sh\nlistening\nnew connection opened\nValue: hello\n```\nNote that it may take some time for the connection to be established.\n\n## API\n\n### Transport\n\n[![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/packages/libp2p-interfaces/src/transport/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/transport)\n\n### Connection\n\n[![](https://raw.githubusercontent.com/libp2p/js-libp2p-interfaces/master/packages/libp2p-interfaces/src/connection/img/badge.png)](https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interfaces/src/connection)\n\n## Contribute\n\nThe libp2p implementation in JavaScript is a work in progress. As such, there are a few things you can do right now to help out:\n\n - Go through the modules and **check out existing issues**. This would be especially useful for modules in active development. Some knowledge of IPFS/libp2p may be required, as well as the infrastructure behind it - for instance, you may need to read up on p2p and more complex operations like muxing to be able to help technically.\n - **Perform code reviews**.\n - **Add tests**. There can never be enough tests.\n\n## License\n\n[MIT](LICENCE-MIT) & [Apache](LICENCE-APACHE) - Protocol Labs 2019\n","readmeFilename":"README.md"}