{"_id":"@cyotee/boardgameio-p2p","name":"@cyotee/boardgameio-p2p","dist-tags":{"latest":"0.5.0"},"versions":{"0.5.0":{"name":"@cyotee/boardgameio-p2p","version":"0.5.0","description":"Peer-to-peer multiplayer transport for boardgame.io — PeerJS (upstream) and channel/join-code (ManaMesh) modes","repository":{"type":"git","url":"git+https://github.com/cyotee/boardgameIO-p2p.git"},"keywords":["peerjs","p2p","multiplayer","boardgame.io","webrtc","join-code"],"author":{"name":"Chris Swithinbank","email":"swithinbank@gmail.com","url":"http://chrisswithinbank.net/"},"contributors":[{"name":"cyotee"}],"license":"MIT","bugs":{"url":"https://github.com/cyotee/boardgameIO-p2p/issues"},"homepage":"https://github.com/cyotee/boardgameIO-p2p#readme","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./channel":{"types":"./dist/channel-transport.d.ts","default":"./dist/channel-transport.js"}},"publishConfig":{"access":"public"},"scripts":{"prettier:check":"prettier --list-different \"{src,test}/**/*.ts\"","prettier:write":"prettier --write \"{src,test}/**/*.ts\"","build":"tsc -b src","prerelease":"npm run test && npm run build","release":"standard-version -s","prepublishOnly":"npm run build","pretest":"eslint . || true","test":"jest --coverage --collectCoverageFrom=\"src/**/*.ts\" --passWithNoTests"},"dependencies":{"peerjs":"^1.3.2","tweetnacl":"^1.0.3","tweetnacl-util":"^0.15.1"},"peerDependencies":{"boardgame.io":">=0.49.1"},"devDependencies":{"@types/jest":"^27.0.2","@types/node":"^18.0.0","@typescript-eslint/eslint-plugin":"^5.4.0","@typescript-eslint/parser":"^5.4.0","eslint":"^8.2.0","eslint-config-prettier":"^9.0.0","jest":"^27.3.1","prettier":"^3.0.3","standard-version":"^9.3.1","ts-jest":"^27.0.7","typescript":"^4.4.3"},"_id":"@cyotee/boardgameio-p2p@0.5.0","_integrity":"sha512-zTa+Pom33S1yiLf997NX3NZVUYirD3Wok64zPgDsW75VGe+mWOxQLz6dMQuATU3ZvoJC1oPDJG/tr0TXQ6a3xA==","_resolved":"/private/var/folders/28/y_7zd8pd2sl_jtwdj8y7hbb00000gn/T/grok-npm-publish-2595/cyotee-boardgameio-p2p-0.5.0.tgz","_from":"file:cyotee-boardgameio-p2p-0.5.0.tgz","_nodeVersion":"22.23.1","_npmVersion":"12.0.1","dist":{"integrity":"sha512-zTa+Pom33S1yiLf997NX3NZVUYirD3Wok64zPgDsW75VGe+mWOxQLz6dMQuATU3ZvoJC1oPDJG/tr0TXQ6a3xA==","shasum":"482536a03ed4a4ffa39ec60f56512c6af988fe6b","tarball":"https://registry.npmjs.org/@cyotee/boardgameio-p2p/-/boardgameio-p2p-0.5.0.tgz","fileCount":27,"unpackedSize":93790,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDIG5d7gr68aZ5lkaTeDJ9bEKeZPT4bjWPVtfoi14AANQIhAJtTdLauqWkLvGo6D6eJgMbZ1mv/IUwJnP+y96VGtzEJ"}]},"_npmUser":{"name":"cyotee","email":"not_cyotee@proton.me"},"directories":{},"maintainers":[{"name":"cyotee","email":"not_cyotee@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/boardgameio-p2p_0.5.0_1784365555989_0.4646637364599564"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-18T09:05:55.808Z","0.5.0":"2026-07-18T09:05:56.133Z","modified":"2026-07-18T09:05:56.428Z"},"maintainers":[{"name":"cyotee","email":"not_cyotee@proton.me"}],"description":"Peer-to-peer multiplayer transport for boardgame.io — PeerJS (upstream) and channel/join-code (ManaMesh) modes","homepage":"https://github.com/cyotee/boardgameIO-p2p#readme","keywords":["peerjs","p2p","multiplayer","boardgame.io","webrtc","join-code"],"repository":{"type":"git","url":"git+https://github.com/cyotee/boardgameIO-p2p.git"},"contributors":[{"name":"cyotee"}],"author":{"name":"Chris Swithinbank","email":"swithinbank@gmail.com","url":"http://chrisswithinbank.net/"},"bugs":{"url":"https://github.com/cyotee/boardgameIO-p2p/issues"},"license":"MIT","readme":"# @cyotee/boardgameio-p2p\n\nPeer-to-peer multiplayer transport for [boardgame.io](https://boardgame.io).\n\nFork of the experimental [`@boardgame.io/p2p`](https://github.com/boardgameio/p2p) package with two connection modes:\n\n| Mode | API | Connection |\n|------|-----|------------|\n| **PeerJS** (upstream) | `P2P({ isHost })` | PeerJS peer IDs / PeerServer |\n| **Channel** (ManaMesh) | `P2PMultiplayer({ connection, role, ... })` | Injected `P2PChannel` (join-code WebRTC, etc.) |\n\n## Install\n\n```bash\nnpm install @cyotee/boardgameio-p2p boardgame.io\n```\n\n## Channel mode (recommended for ManaMesh)\n\nUse when peers already share a data channel (e.g. join-code WebRTC):\n\n```ts\nimport { Client } from \"boardgame.io/client\";\n// Prefer /channel so PeerJS is not required for this path\nimport { P2PMultiplayer, type P2PChannel } from \"@cyotee/boardgameio-p2p/channel\";\n\n// `connection` implements P2PChannel: send, isConnected, events\nconst multiplayer = P2PMultiplayer({\n  connection, // JoinCodeConnection or any P2PChannel\n  role: \"host\", // or \"guest\"\n  playerID: \"0\",\n  matchID: \"match-1\",\n  numPlayers: 2,\n});\n\nconst client = Client({\n  game: MyGame,\n  multiplayer,\n});\n```\n\n### `P2PChannel`\n\n```ts\ninterface P2PChannel {\n  send(data: string): void;\n  isConnected(): boolean;\n  events: {\n    onMessage: (data: string) => void;\n    onConnectionStateChange: (state: ConnectionState) => void;\n  };\n}\n```\n\nJoin-code discovery stays in the app; only the **boardgame.io transport** lives here.\n\n## PeerJS mode (upstream)\n\n```ts\nimport { P2P } from \"@cyotee/boardgameio-p2p\";\n\nClient({\n  game: MyGame,\n  matchID: \"random-id\",\n  playerID: \"0\",\n  multiplayer: P2P({ isHost: true }),\n});\n```\n\n## Build\n\n```bash\nyarn workspace @cyotee/boardgameio-p2p build\n```\n\n## License\n\nMIT (upstream boardgame.io p2p authors + cyotee extensions)\n","readmeFilename":"README.md","_rev":"1-83ba8b4cfc905659caa961aceab7a53e"}