Module 200458

4,390 characters · in no known chunk
Dependencies
Required by (1)
Lazily required by (0)none
Requires (2)
Lazily requires (0)none
Source Raw
function(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(935172),i=n(499979);let s=[1,100,1e3,1e4],a=[100,500,1e3,5e3];class o{userId;connection;timestampProducer;listeningUsers=new Set;listening;speaking;participation;connected;muted;deafened;noiseCancellation;timesUntilSpeakingDurationMilestonesMs=new Map;speakingMinimumChunks=new Map;speakingMinimumChunkCounts=new Map;speechEventCount=0;constructor(e,t,n=i.TF){this.userId=e,this.connection=t,this.timestampProducer=n,this.listening=new i.W0(this.timestampProducer),this.speaking=new i.W0(this.timestampProducer),this.participation=new i.W0(this.timestampProducer),this.connected=new i.W0(this.timestampProducer),this.muted=new i.W0(this.timestampProducer),this.deafened=new i.W0(this.timestampProducer),this.noiseCancellation=new i.w6(t.getNoiseCancellation(),this.timestampProducer)}start(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.listeningUsers.clear(),this.listening.reset(),this.speaking.reset(),this.participation.reset(),this.muted.reset(),this.deafened.reset(),this.connected.reset(),this.noiseCancellation.reset(),this.timesUntilSpeakingDurationMilestonesMs.clear(),this.speakingMinimumChunks.clear(),this.speakingMinimumChunkCounts.clear(),this.speechEventCount=0,this.connected.start(),this.connection.on(r.y.Speaking,(e,t,n)=>{this.userId===e?this.onSpeaking(0!==t):this.onListening(0!==t,e)}),this.onMuted(e),this.onDeafened(t),this.connection.on(r.y.Mute,e=>{this.onMuted(e)}),this.connection.on(r.y.Deafen,e=>{this.onDeafened(e)})}onSpeaking(e){if(e)this.speaking.start(),this.participation.start(),this.speechEventCount++;else{let e=this.connected.lastStartTime,t=this.speaking.lastStartTime,n=this.speaking.lastElapsed;this.addSpeechChunk(),this.speaking.stop(),this.listening.isRunning()||this.participation.stop(),this.computeSpeakingDurationMilestones(e,t,n)}}onListening(e,t){e?(this.listeningUsers.add(t),this.listening.start(),this.participation.start()):this.listeningUsers.delete(t)&&0===this.listeningUsers.size&&(this.listening.stop(),this.speaking.isRunning()||this.participation.stop())}onMuted(e){e?this.muted.start():this.muted.stop()}onDeafened(e){e?this.deafened.start():this.deafened.stop()}computeSpeakingDurationMilestones(e,t,n){if(null==e||null==t)return;let r=this.speaking.elapsed().asMilliseconds();s.filter(e=>!this.timesUntilSpeakingDurationMilestonesMs.has(e)).filter(e=>r>=e).forEach(r=>{let i=t-e+r-n;this.timesUntilSpeakingDurationMilestonesMs.set(r,i)})}addSpeechChunk(){let e=this.speaking.lastStartTime;if(null==e)return;let t=this.timestampProducer.now()-e;a.filter(e=>t>=e).forEach(e=>{let n=this.speakingMinimumChunks.get(e)??0;this.speakingMinimumChunks.set(e,n+t);let r=this.speakingMinimumChunkCounts.get(e)??0;this.speakingMinimumChunkCounts.set(e,r+1)})}setNoiseCancellationEnabled(e){this.noiseCancellation.value=e}stop(){this.addSpeechChunk();let e=this.connected.lastStartTime,t=this.speaking.lastStartTime,n=this.speaking.lastElapsed;this.speaking.stop(),this.listening.stop(),this.participation.stop(),this.connected.stop(),this.muted.stop(),this.noiseCancellation.value=!1,this.computeSpeakingDurationMilestones(e,t,n)}getDurationStats(){let e=this.speaking.lastStartTime,t=this.timestampProducer.now(),n=null!=e?t-e:0;return this.computeSpeakingDurationMilestones(this.connected.lastStartTime,this.speaking.lastStartTime,this.speaking.lastElapsed),{duration_listening_ms:this.listening.elapsed().asMilliseconds(),duration_speaking_ms:this.speaking.elapsed().asMilliseconds(),duration_participation_ms:this.participation.elapsed().asMilliseconds(),duration_connected_ms:this.connected.elapsed().asMilliseconds(),duration_muted_ms:this.muted.elapsed().asMilliseconds(),duration_deafened_ms:this.deafened.elapsed().asMilliseconds(),duration_noise_cancellation_enabled_ms:this.noiseCancellation.totalDuration(),speech_event_count:this.speechEventCount,...s.filter(e=>this.timesUntilSpeakingDurationMilestonesMs.has(e)).reduce((e,t)=>({...e,[`time_to_first_${t}ms_speech_ms`]:this.timesUntilSpeakingDurationMilestonesMs.get(t)}),{}),...a.filter(e=>this.speakingMinimumChunks.has(e)||n>=e).reduce((e,t)=>({...e,[`duration_speaking_gte_${t}ms_ms`]:(this.speakingMinimumChunks.get(t)??0)+(n>=t?n:0),[`speech_event_count_gte_${t}ms`]:(this.speakingMinimumChunkCounts.get(t)??0)+ +(n>=t)}),{})}}}}