2.9 KiB
2.9 KiB
Tasks: enterprise-browser-network-discovery-peerjs
Change ID: enterprise-browser-network-discovery-peerjs
Package: @suaveplan/network-discovery-peerjs
Target path: browser/network/network-discovery-peerjs
Prerequisite packages on Verdaccio: @suaveplan/network, @suaveplan/error, @suaveplan/types, @suaveplan/crypto
1. Scaffold
- Create directory tree per
proposal.md. package.jsonv0.0.0,"sideEffects": false.dependencies:@suaveplan/network workspace:^,@suaveplan/error workspace:^,@suaveplan/types workspace:^,@suaveplan/crypto workspace:^,peerjs,zod catalog:forms,@opentelemetry/api catalog:observability,tslib catalog:builddevDependencies:vitest catalog:testing,@vitest/coverage-istanbul catalog:testing,@suaveplan/testing workspace:^,react catalog:browser,@types/react catalog:browser
tsconfig.json,vitest.config.ts(pool: forks).
2. Error codes
PEERJS_SIGNALING_UNREACHABLE,PEERJS_ROOM_FULL,PEERJS_CONNECTION_FAILED,PEERJS_MESSAGE_REJECTED.registerPeerJSErrorCodes()— call eagerly.
3. Schema (src/schema/peerjs-schema/)
PeerJSMessageSchemavariants forPEER_ANNOUNCE,PEER_LEAVE,PING,PONG.- Register in
@suaveplan/schema-registry. Writepeerjs-schema.md.
4. Supporting modules
For each: PeerJSEventEmitter, PeerJSIntervals, PeerJSMessageHandlers (validates with Zod), PeerJSConnection, PeerConnectionManager, RoomManager:
- Implement module.
- Write
*.test.ts(real PeerJS API, no stubs),*.md.
5. PeerJSDiscovery (src/peerjs-discovery/)
- Implement with strict-mode gate (reject
0.peerjs.comwhenstrict: true). static selfHosted(...)factory.- Reconnection policy with exponential backoff.
- Optional signed metadata via
@suaveplan/crypto. - ICE server passthrough to PeerJS
RTCConfiguration. - Wire OTel metrics.
- Write
peerjs-discovery.test.ts,peerjs-discovery.md,peerjs-discovery.types.ts.
6. Story
src/peerjs-discovery/peerjs-discovery.stories.tsxwith React devDep declared.
7. Integration test (tests/integration.test.ts)
- Strict-mode rejects public cloud host.
- Two
PeerJSDiscoveryinstances against a local PeerJS server; assert peer discovery. - Reconnection: drop + restore WebSocket; verify
connection:restoredfires. - ICE server config passed through to RTC connection.
8. Docs + verify
- Write
.mdper module;README.mdwith self-hosted relay guidance. bunx turbo lint typecheck test --filter=@suaveplan/network-discovery-peerjs— green.bunx turbo test:coverage— 100%.- Every supporting module has its own test suite.
bun scripts/publish.ts --package @suaveplan/network-discovery-peerjs.- Archive to
openspec/archive/2026-04-24-enterprise-browser-network-discovery-peerjs/.