mirror of
https://github.com/xtr-dev/rondevu-client.git
synced 2025-12-11 11:23:24 +00:00
Add WebRTC polyfill support for Node.js environments
Added optional polyfill parameters to RondevuOptions to support Node.js: - RTCPeerConnection: Custom peer connection implementation - RTCSessionDescription: Custom session description implementation - RTCIceCandidate: Custom ICE candidate implementation This allows users to plug in wrtc or node-webrtc packages for full WebRTC support in Node.js environments. Updated documentation with usage examples and environment compatibility matrix. Version bumped to 0.7.4 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -25,6 +25,42 @@ export interface RondevuOptions {
|
||||
* ```
|
||||
*/
|
||||
fetch?: FetchFunction;
|
||||
|
||||
/**
|
||||
* Custom RTCPeerConnection implementation for Node.js environments
|
||||
* Required when using in Node.js with wrtc or similar polyfills
|
||||
*
|
||||
* @example Node.js with wrtc
|
||||
* ```typescript
|
||||
* import { RTCPeerConnection } from 'wrtc';
|
||||
* const client = new Rondevu({ RTCPeerConnection });
|
||||
* ```
|
||||
*/
|
||||
RTCPeerConnection?: typeof RTCPeerConnection;
|
||||
|
||||
/**
|
||||
* Custom RTCSessionDescription implementation for Node.js environments
|
||||
* Required when using in Node.js with wrtc or similar polyfills
|
||||
*
|
||||
* @example Node.js with wrtc
|
||||
* ```typescript
|
||||
* import { RTCSessionDescription } from 'wrtc';
|
||||
* const client = new Rondevu({ RTCSessionDescription });
|
||||
* ```
|
||||
*/
|
||||
RTCSessionDescription?: typeof RTCSessionDescription;
|
||||
|
||||
/**
|
||||
* Custom RTCIceCandidate implementation for Node.js environments
|
||||
* Required when using in Node.js with wrtc or similar polyfills
|
||||
*
|
||||
* @example Node.js with wrtc
|
||||
* ```typescript
|
||||
* import { RTCIceCandidate } from 'wrtc';
|
||||
* const client = new Rondevu({ RTCIceCandidate });
|
||||
* ```
|
||||
*/
|
||||
RTCIceCandidate?: typeof RTCIceCandidate;
|
||||
}
|
||||
|
||||
export class Rondevu {
|
||||
@@ -33,10 +69,16 @@ export class Rondevu {
|
||||
private credentials?: Credentials;
|
||||
private baseUrl: string;
|
||||
private fetchFn?: FetchFunction;
|
||||
private rtcPeerConnection?: typeof RTCPeerConnection;
|
||||
private rtcSessionDescription?: typeof RTCSessionDescription;
|
||||
private rtcIceCandidate?: typeof RTCIceCandidate;
|
||||
|
||||
constructor(options: RondevuOptions = {}) {
|
||||
this.baseUrl = options.baseUrl || 'https://api.ronde.vu';
|
||||
this.fetchFn = options.fetch;
|
||||
this.rtcPeerConnection = options.RTCPeerConnection;
|
||||
this.rtcSessionDescription = options.RTCSessionDescription;
|
||||
this.rtcIceCandidate = options.RTCIceCandidate;
|
||||
|
||||
this.auth = new RondevuAuth(this.baseUrl, this.fetchFn);
|
||||
|
||||
@@ -98,6 +140,12 @@ export class Rondevu {
|
||||
throw new Error('Not authenticated. Call register() first or provide credentials.');
|
||||
}
|
||||
|
||||
return new RondevuPeer(this._offers, rtcConfig);
|
||||
return new RondevuPeer(
|
||||
this._offers,
|
||||
rtcConfig,
|
||||
this.rtcPeerConnection,
|
||||
this.rtcSessionDescription,
|
||||
this.rtcIceCandidate
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user