{"_id":"@daishi/ipfs-pubsub-room","_rev":"3-db75ee154c0531d5d7099f0ea3a69e10","name":"@daishi/ipfs-pubsub-room","dist-tags":{"latest":"2.0.1-custom.3"},"versions":{"2.0.1-custom.1":{"name":"@daishi/ipfs-pubsub-room","version":"2.0.1-custom.1","description":"IPFS pub-sub room","main":"src/index.js","scripts":{"test":"aegir test","test:node":"aegir test -t node","test:browser":"aegir test -t browser","test:webworker":"aegir test -t webworker","build":"aegir build","lint":"aegir lint","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"nyc --reporter=text --reporter=lcov --reporter=html npm run test:node","dep-check":"aegir dep-check"},"repository":{"type":"git","url":"git+https://github.com/ipfs-shipyard/ipfs-pubsub-room.git"},"keywords":["ipfs","pubsub","p2p","room","broadcast"],"author":{"name":"Pedro Teixeira","email":"i@pgte.me"},"license":"ISC","bugs":{"url":"https://github.com/ipfs-shipyard/ipfs-pubsub-room/issues"},"homepage":"https://github.com/ipfs-shipyard/ipfs-pubsub-room#readme","dependencies":{"hyperdiff":"^2.0.5","it-pipe":"^1.1.0","lodash.clonedeep":"^4.5.0"},"devDependencies":{"aegir":"^20.5.1","chai":"^4.2.0","delay":"^4.3.0","dirty-chai":"^2.0.1","libp2p":"0.28.7","libp2p-gossipsub":"0.4.6","libp2p-mplex":"^0.9.3","libp2p-secio":"^0.12.2","libp2p-websockets":"^0.13.2","multiaddr":"^7.5.0","peer-id":"^0.13.13","rimraf":"^3.0.0"},"contributors":[{"name":"CHEVALAY JOSSELIN","email":"josselin54.chevalay@gmail.com"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Eric Olszewski","email":"eolszewski@gmail.com"},{"name":"Gorka","email":"gorka@aquigorka.com"},{"name":"Henrique Dias","email":"hacdias@gmail.com"},{"name":"Pedro Teixeira","email":"i@pgte.me"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"haad","email":"haad@headbanggames.com"},{"name":"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ","email":"victorbjelkholm@gmail.com"}],"gitHead":"e1b5e66790ddc1b3fe3f6fe6c0d414678f82403d","_id":"@daishi/ipfs-pubsub-room@2.0.1-custom.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.7","dist":{"integrity":"sha512-2ha1cTb7C6Am0ExWQCWxjNTqW+T3yKIYfSEGSVMR4fY8k8IM6jXhUypUmzDM8Sf2gRWHUAWh6rWVUnT4Da+Hqw==","shasum":"21b687a0190d721ad831130afa49f1a3abfc561e","tarball":"https://registry.npmjs.org/@daishi/ipfs-pubsub-room/-/ipfs-pubsub-room-2.0.1-custom.1.tgz","fileCount":15,"unpackedSize":32242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQhxnCRA9TVsSAnZWagAANSgP/0LIT6qPCcQwPYdkB7vg\nU98leKaJP2EWkrxDsfLVjcBJOWB5NPe8jQ5n9vC1W8ySRG9RseW+tgPNzc5t\nJs+3p8qIPxZrDKKqs8KZtacf7OJKeHc1OcVhqYZ1e1bTQRKHzlxM945eloiL\nV4bm/L2XoFpKg0BpMV9dmxh+zs4FEhvZOY90I95wBI/Fxmf/vQkkFW7PIHcy\noSFMq97T7crZU5np117Q8ywgWEWoOXQKi1Q4wJmgCaDefP5pnD/7C1Y1k/iH\nEbfy+ldykrofRvhDl49O+h1M4Jqbd8wnFJmP6TswTW8WKCgVNhbZU7ZIHhbk\nYyggmw7bn/CWl+UzpjE0boti6cpUJiFKPkulHL2iXELtG+sNQZR9O8J/bfE0\nZH7DtC2PiBz70FXE33iF+3ST0UPIT65txAxbMtVkHMbyetQHem8MbRXHaaN6\nGTeyDnmae9AQnN6G/eYzhTmKgsm3g3O2DKhAM8di/8RTukgpgFagduwZnesK\nwvWWKSMr38NKkfaIcLrqtGD9ZW5pIh+jksr26Y4YcfNva8/6NtRYkzOwHWcY\nJq2FMMUlGW9dUF1S6RgaJP4rVXAsmqfmpjrMAOfjp3tc6wI4l1DJeKIY7M5D\nNwna1iVRFM9ah1sCEuTvJa0OeF82DLOdl2nFG/lpgoK99niYSroAmbyBcjtm\nTAWi\r\n=m60K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgKa+fSI2V7153U0+jhiF/okgVwzFufEvLunI+S6Q52AiBtr7/+ib+joL/NQvU7a9YsF9N6JR3lknnoQUBoBXverg=="}]},"maintainers":[{"name":"daishi","email":"daishi@axlight.com"}],"_npmUser":{"name":"daishi","email":"daishi@axlight.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ipfs-pubsub-room_2.0.1-custom.1_1598168166845_0.14145004952009232"},"_hasShrinkwrap":false},"2.0.1-custom.2":{"name":"@daishi/ipfs-pubsub-room","version":"2.0.1-custom.2","description":"IPFS pub-sub room","main":"src/index.js","scripts":{"test":"aegir test","test:node":"aegir test -t node","test:browser":"aegir test -t browser","test:webworker":"aegir test -t webworker","build":"aegir build","lint":"aegir lint","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"nyc --reporter=text --reporter=lcov --reporter=html npm run test:node","dep-check":"aegir dep-check"},"repository":{"type":"git","url":"git+https://github.com/ipfs-shipyard/ipfs-pubsub-room.git"},"keywords":["ipfs","pubsub","p2p","room","broadcast"],"author":{"name":"Pedro Teixeira","email":"i@pgte.me"},"license":"ISC","bugs":{"url":"https://github.com/ipfs-shipyard/ipfs-pubsub-room/issues"},"homepage":"https://github.com/ipfs-shipyard/ipfs-pubsub-room#readme","dependencies":{"hyperdiff":"^2.0.5","it-pipe":"^1.1.0","lodash.clonedeep":"^4.5.0"},"devDependencies":{"aegir":"^20.5.1","chai":"^4.2.0","delay":"^4.3.0","dirty-chai":"^2.0.1","libp2p":"0.28.7","libp2p-gossipsub":"0.4.6","libp2p-mplex":"^0.9.3","libp2p-secio":"^0.12.2","libp2p-websockets":"^0.13.2","multiaddr":"^7.5.0","peer-id":"^0.13.13","rimraf":"^3.0.0"},"contributors":[{"name":"CHEVALAY JOSSELIN","email":"josselin54.chevalay@gmail.com"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Eric Olszewski","email":"eolszewski@gmail.com"},{"name":"Gorka","email":"gorka@aquigorka.com"},{"name":"Henrique Dias","email":"hacdias@gmail.com"},{"name":"Pedro Teixeira","email":"i@pgte.me"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"haad","email":"haad@headbanggames.com"},{"name":"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ","email":"victorbjelkholm@gmail.com"}],"gitHead":"2bf87b9c05723cd485070b4dc88d308766600954","_id":"@daishi/ipfs-pubsub-room@2.0.1-custom.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.7","dist":{"integrity":"sha512-00wH3oMpYff1/X05dtlB5q+IHi5XvK4KbWcAd4jlMWCLpDPJ3G0eWEpMiW7gjOiKCbuEpO9+Y2cipI886mwbhQ==","shasum":"b8df57d7b3338d25a5f42f1ca074f27d6d581578","tarball":"https://registry.npmjs.org/@daishi/ipfs-pubsub-room/-/ipfs-pubsub-room-2.0.1-custom.2.tgz","fileCount":15,"unpackedSize":32293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSjLjCRA9TVsSAnZWagAAQdIP/3vhhs/ZVt9i/0KGVnIw\nkNVIMR0mBjC/YrrBWGKtH75LkL3nzdlWHkz8tsKlL+bexJxzw7mSotYq8AQU\ngk1zZP6AADHs6GSz0vT0P0T4U808fPJo8D0Q6nPyJPwmnRHF7wq0bf2glZWG\nm0v6xkuU2pykSGSXmNLX0D2gqJjfUxDWwOPNvjQxg07ARBP/P/AW9AuOVh8B\nj4LCQtPcacMxHbfUpTXJm6DLtR66oHFIEGrF2Ml0ZyfleobwXpLTWQYnRwc6\nU12hmj9EmKU5emtVX1//jQEq0LsO4Np+AjxzC588kS1l8Va1LF+s5N9NtmLV\nsyCD0W3Y6L8clmbhskXObINRdrYQyZhj+sDEwfDO4PI3CzJA/ocep8KXPqI/\nLZWbC8vfPT5kJVJq6NsnO4YeHC8oyVb2DOSjLTU1pcWyCiHZJXL5rZT4YmgN\n0ZDauYqyxw6orAPwzGhucxRt7/vBaHMMS+U3xgKG0ZLTikNTIaxRxAtfD7jX\ntw/sMCLaynn0nyADfwaP6gcMKwtrPccWoHN7mS7tl508+ZDYvdFv5hzTKywb\nvkRIlRWylj3czWMvSYOOUD8y8tBpqcfohOSCryMJJ5yZiUS9fo/Eq7gwZHPe\nAPUp7YL8K5UeeMFya1tH+ZfNReROK0ZCBrL4IkJUKqxUnGFn1LJ8ct2T5Cdq\nqaUS\r\n=UxpY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDpP7+l/1H2/eN/tpUb+fXVULTl0N/KrgsjhHblkTQW6AiEA/WbP7BYCS/dfUT6w3oX5D64lzd9Id8FjTNjM2bX9Mhc="}]},"maintainers":[{"name":"daishi","email":"daishi@axlight.com"}],"_npmUser":{"name":"daishi","email":"daishi@axlight.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ipfs-pubsub-room_2.0.1-custom.2_1598698208715_0.20030528295171535"},"_hasShrinkwrap":false},"2.0.1-custom.3":{"name":"@daishi/ipfs-pubsub-room","version":"2.0.1-custom.3","description":"IPFS pub-sub room","main":"src/index.js","scripts":{"test":"aegir test","test:node":"aegir test -t node","test:browser":"aegir test -t browser","test:webworker":"aegir test -t webworker","build":"aegir build","lint":"aegir lint","release":"aegir release","release-minor":"aegir release --type minor","release-major":"aegir release --type major","coverage":"nyc --reporter=text --reporter=lcov --reporter=html npm run test:node","dep-check":"aegir dep-check"},"repository":{"type":"git","url":"git+https://github.com/ipfs-shipyard/ipfs-pubsub-room.git"},"keywords":["ipfs","pubsub","p2p","room","broadcast"],"author":{"name":"Pedro Teixeira","email":"i@pgte.me"},"license":"ISC","bugs":{"url":"https://github.com/ipfs-shipyard/ipfs-pubsub-room/issues"},"homepage":"https://github.com/ipfs-shipyard/ipfs-pubsub-room#readme","dependencies":{"hyperdiff":"^2.0.5","it-pipe":"^1.1.0","lodash.clonedeep":"^4.5.0","uint8arrays":"^2.1.5"},"devDependencies":{"aegir":"^20.5.1","chai":"^4.2.0","delay":"^4.3.0","dirty-chai":"^2.0.1","libp2p":"0.31.5","libp2p-gossipsub":"0.9.0","libp2p-mplex":"^0.10.3","libp2p-secio":"^0.13.1","libp2p-websockets":"^0.15.7","multiaddr":"^9.0.1","peer-id":"^0.14.8","rimraf":"^3.0.0"},"contributors":[{"name":"CHEVALAY JOSSELIN","email":"josselin54.chevalay@gmail.com"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Eric Olszewski","email":"eolszewski@gmail.com"},{"name":"Gorka","email":"gorka@aquigorka.com"},{"name":"Henrique Dias","email":"hacdias@gmail.com"},{"name":"Pedro Teixeira","email":"i@pgte.me"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"haad","email":"haad@headbanggames.com"},{"name":"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ","email":"victorbjelkholm@gmail.com"}],"gitHead":"c9d14daa188774130fe86c6ad1441426d963777d","_id":"@daishi/ipfs-pubsub-room@2.0.1-custom.3","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-d30NUdZBh5l1bwxMxR6q/fk1m353KmT5rNrYnkvBiGsVcRnvaFOsfjtqpObAqvhn4V8E1wGN8MmmcsQiTtNlOg==","shasum":"7983ae69393060faeaf57d3af581a2edc5cef8d7","tarball":"https://registry.npmjs.org/@daishi/ipfs-pubsub-room/-/ipfs-pubsub-room-2.0.1-custom.3.tgz","fileCount":15,"unpackedSize":33404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpej8CRA9TVsSAnZWagAANZEP/ij1/+ekTdeivthJ0Im1\n4QFaJ2dMTApYC0DJtledM/eKaak07MQu1peNsl8rkE06DwvJ8sR8aATP5UMO\naiIulGqdm3oOeaJVjQhqmJmCHkBWCnxlqcRRK3kJh9SJ9Q5YbjB3Att0I4ci\ngT2yNjCbnHAewZq6EAU+lNtKnHoNgtAFcuZC/SRLumvx7Bh7LrLYCefsu8ZZ\nrQPlLGwxSvnQkFpLf/h9vsWXtAn1zHo8l6tv4FtYRBb9+Z3XE4mrIdlbW5ni\ndJ7HeoEtG1Y7yeXIv0tHhZGs4VkFvxOa93nolMObCcPbJQicl4KfU86WKkCL\nYr9geAM7gwC2TW5ydv/4lKGRQmchFOQ+/+8U2vyhUJUbwrQYW6s8MmrBKCiD\ncOBXqVV78iTXQx0eDIVe5RKHHpQ0bc5hpCs8olWZwyaj24Cqkk7q7UrzdG3Z\nB281O6Uo4Hajb8rUX7yGGQ39F/u8ijUfsD4SPY1Ht0EMup7Y6vc2I4bhNxmp\nQDegue+i03RzJ9H7Ey0g1uwpQPHRnDOTFZu8Mh0mzfyeuAKQJZbGTNKGyOIL\nZc42Jyba3y7JRkig9+Zdw8x5uygC/gdzlsi416vjHhXBT3QZyF9qPK8+K8Y8\nU0JEdbiXKZyKZ++yX+5wxqa6Fc+Z0CcmcgLaM/dcdXmMG20J8Z4zaF+hpnN1\nisGc\r\n=dV+Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICozhS0R/7iVkrkxYhJ9rXCIMzUZzc1eHQkbou7rpn2MAiEA4LiSx2Rw6GM1W1qeNKPOALXY5Zdiu2FHDH21u/E5q2c="}]},"_npmUser":{"name":"daishi","email":"daishi@axlight.com"},"directories":{},"maintainers":[{"name":"daishi","email":"daishi@axlight.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ipfs-pubsub-room_2.0.1-custom.3_1621485820221_0.7451098493419428"},"_hasShrinkwrap":false}},"time":{"created":"2020-08-23T07:36:06.797Z","2.0.1-custom.1":"2020-08-23T07:36:07.040Z","modified":"2022-04-05T02:35:49.781Z","2.0.1-custom.2":"2020-08-29T10:50:08.845Z","2.0.1-custom.3":"2021-05-20T04:43:40.417Z"},"maintainers":[{"name":"daishi","email":"daishi@axlight.com"}],"description":"IPFS pub-sub room","homepage":"https://github.com/ipfs-shipyard/ipfs-pubsub-room#readme","keywords":["ipfs","pubsub","p2p","room","broadcast"],"repository":{"type":"git","url":"git+https://github.com/ipfs-shipyard/ipfs-pubsub-room.git"},"contributors":[{"name":"CHEVALAY JOSSELIN","email":"josselin54.chevalay@gmail.com"},{"name":"David Dias","email":"daviddias.p@gmail.com"},{"name":"Eric Olszewski","email":"eolszewski@gmail.com"},{"name":"Gorka","email":"gorka@aquigorka.com"},{"name":"Henrique Dias","email":"hacdias@gmail.com"},{"name":"Pedro Teixeira","email":"i@pgte.me"},{"name":"achingbrain","email":"alex@achingbrain.net"},{"name":"haad","email":"haad@headbanggames.com"},{"name":"ᴠɪᴄᴛᴏʀ ʙᴊᴇʟᴋʜᴏʟᴍ","email":"victorbjelkholm@gmail.com"}],"author":{"name":"Pedro Teixeira","email":"i@pgte.me"},"bugs":{"url":"https://github.com/ipfs-shipyard/ipfs-pubsub-room/issues"},"license":"ISC","readme":"# ipfs-pubsub-room\n\n[![made by Protocol Labs](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai)\n[![Freenode](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs)\n[![Build Status](https://travis-ci.com/ipfs-shipyard/ipfs-pubsub-room.svg?branch=master)](https://travis-ci.com/ipfs-shipyard/ipfs-pubsub-room)\n\n> Creates a room based on a LibP2P pub-sub channel. Emits membership events, listens for messages, broadcast and direct messeges to peers.\n\n([Demo video](https://t.co/HNYQGE4D4P))\n\n## Install\n\n```bash\n$ npm install ipfs-pubsub-room\n```\n\n## Use\n\nCreating a pubsub room from a LibP2P node\n\n```js\nconst Room = require('ipfs-pubsub-room')\nconst Libp2p = require('libp2p')\n\nconst libp2p = new Libp2p({ ... })\nawait libp2p.start()\n\n// libp2p node is ready, so we can start using ipfs-pubsub-room\nconst room = Room(libp2p, 'room-name')\n```\n\nCreating a pubsub room from an IPFS node\n\n```js\nconst Room = require('ipfs-pubsub-room')\nconst IPFS = require('ipfs')\n\nconst ipfs = await IPFS.create({ ... })\nconst room = Room(ipfs, 'room-name')\n```\n\nOnce we have a room we can listen for messages\n\n```js\nroom.on('peer joined', (peer) => {\n  console.log('Peer joined the room', peer)\n})\n\nroom.on('peer left', (peer) => {\n  console.log('Peer left...', peer)\n})\n\n// now started to listen to room\nroom.on('subscribed', () => {\n  console.log('Now connected!')\n})\n```\n\n## API\n\n### Room (libp2p:LibP2P, roomName:string, options:object)\n\n* `libp2p`: LibP2P node. Must have pubsub activated\n* `roomName`: string, global identifier for the room\n* `options`: object:\n  * `pollInterval`: interval for polling the pubsub peers, in ms. Defaults to 1000.\n\n```js\nconst room = Room(libp2p, 'some-room-name')\n```\n\n## room.broadcast(message)\n\nBroacasts message (string or buffer).\n\n## room.sendTo(cid, message)\n\nSends message (string or buffer) to peer.\n\n## async room.leave()\n\nLeaves room, stopping everything.\n\n## room.getPeers()\n\nReturns an array of peer identifiers (strings).\n\n## room.hasPeer(cid)\n\nReturns a boolean indicating if the given peer is present in the room.\n\n## room.on('message', (message) => {})\n\nListens for messages. A `message` is an object containing the following properties:\n\n* `from` (string): peer id\n* `data` (Buffer): message content\n\n## room.on('peer joined', (cid) => {})\n\nOnce a peer has joined the room.\n\n## room.on('peer left', (cid) => {})\n\nOnce a peer has left the room.\n\n## room.on('subscribed',() => {})\n\nOnce your program has subscribed the topic and announced through IPFS pubsub.\n\n## License\n\nISC\n","readmeFilename":"README.md"}