From 0ac1f94502516ab7fc87849ecb63374cb9e090a1 Mon Sep 17 00:00:00 2001 From: Bas van den Aakster Date: Sun, 16 Nov 2025 22:13:19 +0100 Subject: [PATCH] Integrate secret parameter into peer classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add secret field to PeerOptions interface - Pass secret when creating offers in CreatingOfferState - Pass secret when answering offers in AnsweringState - Bump version to 0.7.7 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- package-lock.json | 4 ++-- package.json | 2 +- src/peer/answering-state.ts | 2 +- src/peer/creating-offer-state.ts | 3 ++- src/peer/types.ts | 2 ++ 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index d8b0b1f..ef9b8a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@xtr-dev/rondevu-client", - "version": "0.7.6", + "version": "0.7.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@xtr-dev/rondevu-client", - "version": "0.7.6", + "version": "0.7.7", "license": "MIT", "dependencies": { "@xtr-dev/rondevu-client": "^0.5.1" diff --git a/package.json b/package.json index 8f5a9d3..c2ff57a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xtr-dev/rondevu-client", - "version": "0.7.6", + "version": "0.7.7", "description": "TypeScript client for Rondevu topic-based peer discovery and signaling server", "type": "module", "main": "dist/index.js", diff --git a/src/peer/answering-state.ts b/src/peer/answering-state.ts index 75fcd8a..2594caa 100644 --- a/src/peer/answering-state.ts +++ b/src/peer/answering-state.ts @@ -28,7 +28,7 @@ export class AnsweringState extends PeerState { // Send answer to server BEFORE setLocalDescription // This registers us as the answerer so ICE candidates will be accepted - await this.peer.offersApi.answer(offerId, answer.sdp!); + await this.peer.offersApi.answer(offerId, answer.sdp!, options.secret); // Enable trickle ICE - set up handler before ICE gathering starts this.setupIceCandidateHandler(); diff --git a/src/peer/creating-offer-state.ts b/src/peer/creating-offer-state.ts index 2dc1bcf..babb1b4 100644 --- a/src/peer/creating-offer-state.ts +++ b/src/peer/creating-offer-state.ts @@ -36,7 +36,8 @@ export class CreatingOfferState extends PeerState { const offers = await this.peer.offersApi.create([{ sdp: offer.sdp!, topics: options.topics, - ttl: options.ttl || 300000 + ttl: options.ttl || 300000, + secret: options.secret }]); const offerId = offers[0].id; diff --git a/src/peer/types.ts b/src/peer/types.ts index f2a4a05..730d1b7 100644 --- a/src/peer/types.ts +++ b/src/peer/types.ts @@ -22,6 +22,8 @@ export interface PeerOptions { topics: string[]; /** How long the offer should live (milliseconds) */ ttl?: number; + /** Optional secret to protect the offer (max 128 characters) */ + secret?: string; /** Whether to create a data channel automatically (for offerer) */ createDataChannel?: boolean; /** Label for the automatically created data channel */