UNPKG

@webrtc2/utils

Version:

WebRTC2 Utils - Cross-platform WebRTC utility functions for device detection, media management, error handling, and performance optimization

89 lines (88 loc) 2.16 kB
// src/index.ts function isMobile() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); } function isIOS() { return /iPad|iPhone|iPod/.test(navigator.userAgent); } function isAndroid() { return /Android/.test(navigator.userAgent); } function getMediaDevices() { if (!navigator.mediaDevices?.enumerateDevices) { return Promise.reject(new Error("Media devices not supported")); } return navigator.mediaDevices.enumerateDevices(); } function getVideoDevices() { return getMediaDevices().then( (devices) => devices.filter((device) => device.kind === "videoinput") ); } function getAudioDevices() { return getMediaDevices().then( (devices) => devices.filter((device) => device.kind === "audioinput") ); } function stopMediaStream(stream) { if (!stream) return; stream.getTracks().forEach((track) => { track.stop(); }); } function muteStream(stream, muted) { stream.getAudioTracks().forEach((track) => { track.enabled = !muted; }); } function toggleVideo(stream, enabled) { stream.getVideoTracks().forEach((track) => { track.enabled = enabled; }); } function generateRoomId() { return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); } function isValidRoomId(roomId) { return /^[a-zA-Z0-9]{8,32}$/.test(roomId); } var WebRTCError = class extends Error { constructor(message, code, details) { super(message); this.code = code; this.details = details; this.name = "WebRTCError"; } }; function createError(code, message, details) { return new WebRTCError(message, code, details); } function measureLatency(startTime) { return performance.now() - startTime; } function debounce(func, wait) { let timeout; return (...args) => { clearTimeout(timeout); timeout = setTimeout(() => func(...args), wait); }; } var VERSION = "1.0.0"; export { VERSION, WebRTCError, createError, debounce, generateRoomId, getAudioDevices, getMediaDevices, getVideoDevices, isAndroid, isIOS, isMobile, isValidRoomId, measureLatency, muteStream, stopMediaStream, toggleVideo };