@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
JavaScript
// 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
};