mirror of https://github.com/OpenVidu/openvidu.git
1 line
365 KiB
JavaScript
1 line
365 KiB
JavaScript
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,(function(r){var n=e[i][1][r];return o(n||r)}),p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){"use strict";var R=typeof Reflect==="object"?Reflect:null;var ReflectApply=R&&typeof R.apply==="function"?R.apply:function ReflectApply(target,receiver,args){return Function.prototype.apply.call(target,receiver,args)};var ReflectOwnKeys;if(R&&typeof R.ownKeys==="function"){ReflectOwnKeys=R.ownKeys}else if(Object.getOwnPropertySymbols){ReflectOwnKeys=function ReflectOwnKeys(target){return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))}}else{ReflectOwnKeys=function ReflectOwnKeys(target){return Object.getOwnPropertyNames(target)}}function ProcessEmitWarning(warning){if(console&&console.warn)console.warn(warning)}var NumberIsNaN=Number.isNaN||function NumberIsNaN(value){return value!==value};function EventEmitter(){EventEmitter.init.call(this)}module.exports=EventEmitter;module.exports.once=once;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._eventsCount=0;EventEmitter.prototype._maxListeners=undefined;var defaultMaxListeners=10;function checkListener(listener){if(typeof listener!=="function"){throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof listener)}}Object.defineProperty(EventEmitter,"defaultMaxListeners",{enumerable:true,get:function(){return defaultMaxListeners},set:function(arg){if(typeof arg!=="number"||arg<0||NumberIsNaN(arg)){throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+arg+".")}defaultMaxListeners=arg}});EventEmitter.init=function(){if(this._events===undefined||this._events===Object.getPrototypeOf(this)._events){this._events=Object.create(null);this._eventsCount=0}this._maxListeners=this._maxListeners||undefined};EventEmitter.prototype.setMaxListeners=function setMaxListeners(n){if(typeof n!=="number"||n<0||NumberIsNaN(n)){throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+n+".")}this._maxListeners=n;return this};function _getMaxListeners(that){if(that._maxListeners===undefined)return EventEmitter.defaultMaxListeners;return that._maxListeners}EventEmitter.prototype.getMaxListeners=function getMaxListeners(){return _getMaxListeners(this)};EventEmitter.prototype.emit=function emit(type){var args=[];for(var i=1;i<arguments.length;i++)args.push(arguments[i]);var doError=type==="error";var events=this._events;if(events!==undefined)doError=doError&&events.error===undefined;else if(!doError)return false;if(doError){var er;if(args.length>0)er=args[0];if(er instanceof Error){throw er}var err=new Error("Unhandled error."+(er?" ("+er.message+")":""));err.context=er;throw err}var handler=events[type];if(handler===undefined)return false;if(typeof handler==="function"){ReflectApply(handler,this,args)}else{var len=handler.length;var listeners=arrayClone(handler,len);for(var i=0;i<len;++i)ReflectApply(listeners[i],this,args)}return true};function _addListener(target,type,listener,prepend){var m;var events;var existing;checkListener(listener);events=target._events;if(events===undefined){events=target._events=Object.create(null);target._eventsCount=0}else{if(events.newListener!==undefined){target.emit("newListener",type,listener.listener?listener.listener:listener);events=target._events}existing=events[type]}if(existing===undefined){existing=events[type]=listener;++target._eventsCount}else{if(typeof existing==="function"){existing=events[type]=prepend?[listener,existing]:[existing,listener]}else if(prepend){existing.unshift(listener)}else{existing.push(listener)}m=_getMaxListeners(target);if(m>0&&existing.length>m&&!existing.warned){existing.warned=true;var w=new Error("Possible EventEmitter memory leak detected. "+existing.length+" "+String(type)+" listeners "+"added. Use emitter.setMaxListeners() to "+"increase limit");w.name="MaxListenersExceededWarning";w.emitter=target;w.type=type;w.count=existing.length;ProcessEmitWarning(w)}}return target}EventEmitter.prototype.addListener=function addListener(type,listener){return _addListener(this,type,listener,false)};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.prependListener=function prependListener(type,listener){return _addListener(this,type,listener,true)};function onceWrapper(){if(!this.fired){this.target.removeListener(this.type,this.wrapFn);this.fired=true;if(arguments.length===0)return this.listener.call(this.target);return this.listener.apply(this.target,arguments)}}function _onceWrap(target,type,listener){var state={fired:false,wrapFn:undefined,target:target,type:type,listener:listener};var wrapped=onceWrapper.bind(state);wrapped.listener=listener;state.wrapFn=wrapped;return wrapped}EventEmitter.prototype.once=function once(type,listener){checkListener(listener);this.on(type,_onceWrap(this,type,listener));return this};EventEmitter.prototype.prependOnceListener=function prependOnceListener(type,listener){checkListener(listener);this.prependListener(type,_onceWrap(this,type,listener));return this};EventEmitter.prototype.removeListener=function removeListener(type,listener){var list,events,position,i,originalListener;checkListener(listener);events=this._events;if(events===undefined)return this;list=events[type];if(list===undefined)return this;if(list===listener||list.listener===listener){if(--this._eventsCount===0)this._events=Object.create(null);else{delete events[type];if(events.removeListener)this.emit("removeListener",type,list.listener||listener)}}else if(typeof list!=="function"){position=-1;for(i=list.length-1;i>=0;i--){if(list[i]===listener||list[i].listener===listener){originalListener=list[i].listener;position=i;break}}if(position<0)return this;if(position===0)list.shift();else{spliceOne(list,position)}if(list.length===1)events[type]=list[0];if(events.removeListener!==undefined)this.emit("removeListener",type,originalListener||listener)}return this};EventEmitter.prototype.off=EventEmitter.prototype.removeListener;EventEmitter.prototype.removeAllListeners=function removeAllListeners(type){var listeners,events,i;events=this._events;if(events===undefined)return this;if(events.removeListener===undefined){if(arguments.length===0){this._events=Object.create(null);this._eventsCount=0}else if(events[type]!==undefined){if(--this._eventsCount===0)this._events=Object.create(null);else delete events[type]}return this}if(arguments.length===0){var keys=Object.keys(events);var key;for(i=0;i<keys.length;++i){key=keys[i];if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events=Object.create(null);this._eventsCount=0;return this}listeners=events[type];if(typeof listeners==="function"){this.removeListener(type,listeners)}else if(listeners!==undefined){for(i=listeners.length-1;i>=0;i--){this.removeListener(type,listeners[i])}}return this};function _listeners(target,type,unwrap){var events=target._events;if(events===undefined)return[];var evlistener=events[type];if(evlistener===undefined)return[];if(typeof evlistener==="function")return unwrap?[evlistener.listener||evlistener]:[evlistener];return unwrap?unwrapListeners(evlistener):arrayClone(evlistener,evlistener.length)}EventEmitter.prototype.listeners=function listeners(type){return _listeners(this,type,true)};EventEmitter.prototype.rawListeners=function rawListeners(type){return _listeners(this,type,false)};EventEmitter.listenerCount=function(emitter,type){if(typeof emitter.listenerCount==="function"){return emitter.listenerCount(type)}else{return listenerCount.call(emitter,type)}};EventEmitter.prototype.listenerCount=listenerCount;function listenerCount(type){var events=this._events;if(events!==undefined){var evlistener=events[type];if(typeof evlistener==="function"){return 1}else if(evlistener!==undefined){return evlistener.length}}return 0}EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?ReflectOwnKeys(this._events):[]};function arrayClone(arr,n){var copy=new Array(n);for(var i=0;i<n;++i)copy[i]=arr[i];return copy}function spliceOne(list,index){for(;index+1<list.length;index++)list[index]=list[index+1];list.pop()}function unwrapListeners(arr){var ret=new Array(arr.length);for(var i=0;i<ret.length;++i){ret[i]=arr[i].listener||arr[i]}return ret}function once(emitter,name){return new Promise((function(resolve,reject){function errorListener(err){emitter.removeListener(name,resolver);reject(err)}function resolver(){if(typeof emitter.removeListener==="function"){emitter.removeListener("error",errorListener)}resolve([].slice.call(arguments))}eventTargetAgnosticAddListener(emitter,name,resolver,{once:true});if(name!=="error"){addErrorHandlerIfEventEmitter(emitter,errorListener,{once:true})}}))}function addErrorHandlerIfEventEmitter(emitter,handler,flags){if(typeof emitter.on==="function"){eventTargetAgnosticAddListener(emitter,"error",handler,flags)}}function eventTargetAgnosticAddListener(emitter,name,listener,flags){if(typeof emitter.on==="function"){if(flags.once){emitter.once(name,listener)}else{emitter.on(name,listener)}}else if(typeof emitter.addEventListener==="function"){emitter.addEventListener(name,(function wrapListener(arg){if(flags.once){emitter.removeEventListener(name,wrapListener)}listener(arg)}))}else{throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof emitter)}}},{}],2:[function(require,module,exports){"use strict";var normalice=require("normalice");var freeice=function(opts){var servers={stun:(opts||{}).stun||require("./stun.json"),turn:(opts||{}).turn||require("./turn.json")};var stunCount=(opts||{}).stunCount||2;var turnCount=(opts||{}).turnCount||0;var selected;function getServers(type,count){var out=[];var input=[].concat(servers[type]);var idx;while(input.length&&out.length<count){idx=Math.random()*input.length|0;out=out.concat(input.splice(idx,1))}return out.map((function(url){if(typeof url!=="string"&&!(url instanceof String)){return url}else{return normalice(type+":"+url)}}))}selected=[].concat(getServers("stun",stunCount));if(turnCount){selected=selected.concat(getServers("turn",turnCount))}return selected};module.exports=freeice},{"./stun.json":3,"./turn.json":4,normalice:11}],3:[function(require,module,exports){module.exports=["stun.l.google.com:19302","stun1.l.google.com:19302","stun2.l.google.com:19302","stun3.l.google.com:19302","stun4.l.google.com:19302","stun.ekiga.net","stun.ideasip.com","stun.schlund.de","stun.stunprotocol.org:3478","stun.voiparound.com","stun.voipbuster.com","stun.voipstunt.com","stun.voxgratia.org"]},{}],4:[function(require,module,exports){module.exports=[]},{}],5:[function(require,module,exports){var WildEmitter=require("wildemitter");function getMaxVolume(analyser,fftBins){var maxVolume=-Infinity;analyser.getFloatFrequencyData(fftBins);for(var i=4,ii=fftBins.length;i<ii;i++){if(fftBins[i]>maxVolume&&fftBins[i]<0){maxVolume=fftBins[i]}}return maxVolume}var audioContextType;if(typeof window!=="undefined"){audioContextType=window.AudioContext||window.webkitAudioContext}var audioContext=null;module.exports=function(stream,options){var harker=new WildEmitter;if(!audioContextType)return harker;var options=options||{},smoothing=options.smoothing||.1,interval=options.interval||50,threshold=options.threshold,play=options.play,history=options.history||10,running=true;audioContext=options.audioContext||audioContext||new audioContextType;var sourceNode,fftBins,analyser;analyser=audioContext.createAnalyser();analyser.fftSize=512;analyser.smoothingTimeConstant=smoothing;fftBins=new Float32Array(analyser.frequencyBinCount);if(stream.jquery)stream=stream[0];if(stream instanceof HTMLAudioElement||stream instanceof HTMLVideoElement){sourceNode=audioContext.createMediaElementSource(stream);if(typeof play==="undefined")play=true;threshold=threshold||-50}else{sourceNode=audioContext.createMediaStreamSource(stream);threshold=threshold||-50}sourceNode.connect(analyser);if(play)analyser.connect(audioContext.destination);harker.speaking=false;harker.suspend=function(){return audioContext.suspend()};harker.resume=function(){return audioContext.resume()};Object.defineProperty(harker,"state",{get:function(){return audioContext.state}});audioContext.onstatechange=function(){harker.emit("state_change",audioContext.state)};harker.setThreshold=function(t){threshold=t};harker.setInterval=function(i){interval=i};harker.stop=function(){running=false;harker.emit("volume_change",-100,threshold);if(harker.speaking){harker.speaking=false;harker.emit("stopped_speaking")}analyser.disconnect();sourceNode.disconnect()};harker.speakingHistory=[];for(var i=0;i<history;i++){harker.speakingHistory.push(0)}var looper=function(){setTimeout((function(){if(!running){return}var currentVolume=getMaxVolume(analyser,fftBins);harker.emit("volume_change",currentVolume,threshold);var history=0;if(currentVolume>threshold&&!harker.speaking){for(var i=harker.speakingHistory.length-3;i<harker.speakingHistory.length;i++){history+=harker.speakingHistory[i]}if(history>=2){harker.speaking=true;harker.emit("speaking")}}else if(currentVolume<threshold&&harker.speaking){for(var i=0;i<harker.speakingHistory.length;i++){history+=harker.speakingHistory[i]}if(history==0){harker.speaking=false;harker.emit("stopped_speaking")}}harker.speakingHistory.shift();harker.speakingHistory.push(0+(currentVolume>threshold));looper()}),interval)};looper();return harker}},{wildemitter:38}],6:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}}else{module.exports=function inherits(ctor,superCtor){if(superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}}},{}],7:[function(require,module,exports){var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();function JL(loggerName){if(!loggerName){return JL.__}if(!Array.prototype.reduce){Array.prototype.reduce=function(callback,initialValue){var previousValue=initialValue;for(var i=0;i<this.length;i++){previousValue=callback(previousValue,this[i],i,this)}return previousValue}}var accumulatedLoggerName="";var logger=("."+loggerName).split(".").reduce((function(prev,curr,idx,arr){if(accumulatedLoggerName){accumulatedLoggerName+="."+curr}else{accumulatedLoggerName=curr}var currentLogger=prev["__"+accumulatedLoggerName];if(currentLogger===undefined){JL.Logger.prototype=prev;currentLogger=new JL.Logger(accumulatedLoggerName);prev["__"+accumulatedLoggerName]=currentLogger}return currentLogger}),JL.__);return logger}(function(JL){JL.requestId="";JL.entryId=0;JL._createXMLHttpRequest=function(){return new XMLHttpRequest};JL._getTime=function(){return(new Date).getTime()};JL._console=console;JL._appenderNames=[];function copyProperty(propertyName,from,to){if(from[propertyName]===undefined){return}if(from[propertyName]===null){delete to[propertyName];return}to[propertyName]=from[propertyName]}function allow(filters){if(!(JL.enabled==null)){if(!JL.enabled){return false}}try{if(filters.userAgentRegex){if(!new RegExp(filters.userAgentRegex).test(navigator.userAgent)){return false}}}catch(e){}try{if(filters.ipRegex&&JL.clientIP){if(!new RegExp(filters.ipRegex).test(JL.clientIP)){return false}}}catch(e){}return true}function allowMessage(filters,message){try{if(filters.disallow){if(new RegExp(filters.disallow).test(message)){return false}}}catch(e){}return true}function stringifyLogObjectFunction(logObject){if(typeof logObject=="function"){if(logObject instanceof RegExp){return logObject.toString()}else{return logObject()}}return logObject}var StringifiedLogObject=function(){function StringifiedLogObject(msg,meta,finalString){this.msg=msg;this.meta=meta;this.finalString=finalString}return StringifiedLogObject}();function stringifyLogObject(logObject){var actualLogObject=stringifyLogObjectFunction(logObject);var finalString;switch(typeof actualLogObject){case"string":return new StringifiedLogObject(actualLogObject,null,actualLogObject);case"number":finalString=actualLogObject.toString();return new StringifiedLogObject(finalString,null,finalString);case"boolean":finalString=actualLogObject.toString();return new StringifiedLogObject(finalString,null,finalString);case"undefined":return new StringifiedLogObject("undefined",null,"undefined");case"object":if(actualLogObject instanceof RegExp||actualLogObject instanceof String||actualLogObject instanceof Number||actualLogObject instanceof Boolean){finalString=actualLogObject.toString();return new StringifiedLogObject(finalString,null,finalString)}else{if(typeof JL.serialize==="function"){finalString=JL.serialize.call(this,actualLogObject)}else{finalString=JSON.stringify(actualLogObject)}return new StringifiedLogObject("",actualLogObject,finalString)}default:return new StringifiedLogObject("unknown",null,"unknown")}}function setOptions(options){copyProperty("enabled",options,this);copyProperty("maxMessages",options,this);copyProperty("defaultAjaxUrl",options,this);copyProperty("clientIP",options,this);copyProperty("requestId",options,this);copyProperty("defaultBeforeSend",options,this);copyProperty("serialize",options,this);return this}JL.setOptions=setOptions;function getAllLevel(){return-2147483648}JL.getAllLevel=getAllLevel;function getTraceLevel(){return 1e3}JL.getTraceLevel=getTraceLevel;function getDebugLevel(){return 2e3}JL.getDebugLevel=getDebugLevel;function getInfoLevel(){return 3e3}JL.getInfoLevel=getInfoLevel;function getWarnLevel(){return 4e3}JL.getWarnLevel=getWarnLevel;function getErrorLevel(){return 5e3}JL.getErrorLevel=getErrorLevel;function getFatalLevel(){return 6e3}JL.getFatalLevel=getFatalLevel;function getOffLevel(){return 2147483647}JL.getOffLevel=getOffLevel;function levelToString(level){if(level<=1e3){return"trace"}if(level<=2e3){return"debug"}if(level<=3e3){return"info"}if(level<=4e3){return"warn"}if(level<=5e3){return"error"}return"fatal"}var Exception=function(){function Exception(data,inner){this.inner=inner;this.name="JL.Exception";this.message=stringifyLogObject(data).finalString}return Exception}();JL.Exception=Exception;Exception.prototype=new Error;var LogItem=function(){function LogItem(l,m,n,t,u){this.l=l;this.m=m;this.n=n;this.t=t;this.u=u}return LogItem}();JL.LogItem=LogItem;function newLogItem(levelNbr,message,loggerName){JL.entryId++;return new LogItem(levelNbr,message,loggerName,JL._getTime(),JL.entryId)}function clearTimer(timer){if(timer.id){clearTimeout(timer.id);timer.id=null}}function setTimer(timer,timeoutMs,callback){var that=this;if(!timer.id){timer.id=setTimeout((function(){callback.call(that)}),timeoutMs)}}var Appender=function(){function Appender(appenderName,sendLogItems){this.appenderName=appenderName;this.sendLogItems=sendLogItems;this.level=JL.getTraceLevel();this.sendWithBufferLevel=2147483647;this.storeInBufferLevel=-2147483648;this.bufferSize=0;this.batchSize=1;this.maxBatchSize=20;this.batchTimeout=2147483647;this.sendTimeout=5e3;this.buffer=[];this.batchBuffer=[];this.batchTimeoutTimer={id:null};this.sendTimeoutTimer={id:null};this.nbrLogItemsSkipped=0;this.nbrLogItemsBeingSent=0;var emptyNameErrorMessage="Trying to create an appender without a name or with an empty name";if(appenderName==undefined){throw emptyNameErrorMessage}if(JL._appenderNames.indexOf(appenderName)!=-1){if(!appenderName){throw emptyNameErrorMessage}throw"Multiple appenders use the same name "+appenderName}JL._appenderNames.push(appenderName)}Appender.prototype.addLogItemsToBuffer=function(logItems){if(this.batchBuffer.length>=this.maxBatchSize){this.nbrLogItemsSkipped+=logItems.length;return}if(!(JL.maxMessages==null)){if(JL.maxMessages<1){return}JL.maxMessages-=logItems.length}this.batchBuffer=this.batchBuffer.concat(logItems);var that=this;setTimer(this.batchTimeoutTimer,this.batchTimeout,(function(){that.sendBatch.call(that)}))};Appender.prototype.batchBufferHasOverdueMessages=function(){for(var i=0;i<this.batchBuffer.length;i++){var messageAgeMs=JL._getTime()-this.batchBuffer[i].t;if(messageAgeMs>this.batchTimeout){return true}}return false};Appender.prototype.batchBufferHasStrandedMessage=function(){return!(JL.maxMessages==null)&&JL.maxMessages<1&&this.batchBuffer.length>0};Appender.prototype.sendBatchIfComplete=function(){if(this.batchBuffer.length>=this.batchSize||this.batchBufferHasOverdueMessages()||this.batchBufferHasStrandedMessage()){this.sendBatch()}};Appender.prototype.onSendingEnded=function(){clearTimer(this.sendTimeoutTimer);this.nbrLogItemsBeingSent=0;this.sendBatchIfComplete()};Appender.prototype.setOptions=function(options){copyProperty("level",options,this);copyProperty("ipRegex",options,this);copyProperty("userAgentRegex",options,this);copyProperty("disallow",options,this);copyProperty("sendWithBufferLevel",options,this);copyProperty("storeInBufferLevel",options,this);copyProperty("bufferSize",options,this);copyProperty("batchSize",options,this);copyProperty("maxBatchSize",options,this);copyProperty("batchTimeout",options,this);copyProperty("sendTimeout",options,this);if(this.bufferSize<this.buffer.length){this.buffer.length=this.bufferSize}if(this.maxBatchSize<this.batchSize){throw new JL.Exception({message:"maxBatchSize cannot be smaller than batchSize",maxBatchSize:this.maxBatchSize,batchSize:this.batchSize})}return this};Appender.prototype.log=function(level,msg,meta,callback,levelNbr,message,loggerName){var logItem;if(!allow(this)){return}if(!allowMessage(this,message)){return}if(levelNbr<this.storeInBufferLevel){return}logItem=newLogItem(levelNbr,message,loggerName);if(levelNbr<this.level){if(this.bufferSize>0){this.buffer.push(logItem);if(this.buffer.length>this.bufferSize){this.buffer.shift()}}return}this.addLogItemsToBuffer([logItem]);if(levelNbr>=this.sendWithBufferLevel){if(this.buffer.length){this.addLogItemsToBuffer(this.buffer);this.buffer.length=0}}this.sendBatchIfComplete()};Appender.prototype.sendBatch=function(){if(this.nbrLogItemsBeingSent>0){return}clearTimer(this.batchTimeoutTimer);if(this.batchBuffer.length==0){return}this.nbrLogItemsBeingSent=this.batchBuffer.length;var that=this;setTimer(this.sendTimeoutTimer,this.sendTimeout,(function(){that.onSendingEnded.call(that)}));this.sendLogItems(this.batchBuffer,(function(){that.batchBuffer.splice(0,that.nbrLogItemsBeingSent);if(that.nbrLogItemsSkipped>0){that.batchBuffer.push(newLogItem(getWarnLevel(),"Lost "+that.nbrLogItemsSkipped+" messages. Either connection with the server was down or logging was disabled via the enabled option. Reduce lost messages by increasing the ajaxAppender option maxBatchSize.",that.appenderName));that.nbrLogItemsSkipped=0}that.onSendingEnded.call(that)}))};return Appender}();JL.Appender=Appender;var AjaxAppender=function(_super){__extends(AjaxAppender,_super);function AjaxAppender(appenderName){return _super.call(this,appenderName,AjaxAppender.prototype.sendLogItemsAjax)||this}AjaxAppender.prototype.setOptions=function(options){copyProperty("url",options,this);copyProperty("beforeSend",options,this);_super.prototype.setOptions.call(this,options);return this};AjaxAppender.prototype.sendLogItemsAjax=function(logItems,successCallback){try{if(!allow(this)){return}if(this.xhr&&this.xhr.readyState!=0&&this.xhr.readyState!=4){this.xhr.abort()}this.xhr=JL._createXMLHttpRequest();var ajaxUrl="/jsnlog.logger";if(!(JL.defaultAjaxUrl==null)){ajaxUrl=JL.defaultAjaxUrl}if(this.url){ajaxUrl=this.url}this.xhr.open("POST",ajaxUrl);this.xhr.setRequestHeader("Content-Type","application/json");this.xhr.setRequestHeader("JSNLog-RequestId",JL.requestId);var that=this;this.xhr.onreadystatechange=function(){if(that.xhr.readyState==4&&(that.xhr.status>=200&&that.xhr.status<300)){successCallback()}};var json={r:JL.requestId,lg:logItems};if(typeof this.beforeSend==="function"){this.beforeSend.call(this,this.xhr,json)}else if(typeof JL.defaultBeforeSend==="function"){JL.defaultBeforeSend.call(this,this.xhr,json)}var finalmsg=JSON.stringify(json);this.xhr.send(finalmsg)}catch(e){}};return AjaxAppender}(Appender);JL.AjaxAppender=AjaxAppender;var ConsoleAppender=function(_super){__extends(ConsoleAppender,_super);function ConsoleAppender(appenderName){return _super.call(this,appenderName,ConsoleAppender.prototype.sendLogItemsConsole)||this}ConsoleAppender.prototype.clog=function(logEntry){JL._console.log(logEntry)};ConsoleAppender.prototype.cerror=function(logEntry){if(JL._console.error){JL._console.error(logEntry)}else{this.clog(logEntry)}};ConsoleAppender.prototype.cwarn=function(logEntry){if(JL._console.warn){JL._console.warn(logEntry)}else{this.clog(logEntry)}};ConsoleAppender.prototype.cinfo=function(logEntry){if(JL._console.info){JL._console.info(logEntry)}else{this.clog(logEntry)}};ConsoleAppender.prototype.cdebug=function(logEntry){if(JL._console.debug){JL._console.debug(logEntry)}else{this.cinfo(logEntry)}};ConsoleAppender.prototype.sendLogItemsConsole=function(logItems,successCallback){try{if(!allow(this)){return}if(!JL._console){return}var i;for(i=0;i<logItems.length;++i){var li=logItems[i];var msg=li.n+": "+li.m;if(typeof window==="undefined"){msg=new Date(li.t)+" | "+msg}if(li.l<=JL.getDebugLevel()){this.cdebug(msg)}else if(li.l<=JL.getInfoLevel()){this.cinfo(msg)}else if(li.l<=JL.getWarnLevel()){this.cwarn(msg)}else{this.cerror(msg)}}}catch(e){}successCallback()};return ConsoleAppender}(Appender);JL.ConsoleAppender=ConsoleAppender;var Logger=function(){function Logger(loggerName){this.loggerName=loggerName;this.seenRegexes=[]}Logger.prototype.setOptions=function(options){copyProperty("level",options,this);copyProperty("userAgentRegex",options,this);copyProperty("disallow",options,this);copyProperty("ipRegex",options,this);copyProperty("appenders",options,this);copyProperty("onceOnly",options,this);this.seenRegexes=[];return this};Logger.prototype.buildExceptionObject=function(e){var excObject={};if(e.stack){excObject.stack=e.stack}else{excObject.e=e}if(e.message){excObject.message=e.message}if(e.name){excObject.name=e.name}if(e.data){excObject.data=e.data}if(e.inner){excObject.inner=this.buildExceptionObject(e.inner)}return excObject};Logger.prototype.log=function(level,logObject,e){var i=0;var compositeMessage;var excObject;if(!this.appenders){return this}if(level>=this.level&&allow(this)){if(e){excObject=this.buildExceptionObject(e);excObject.logData=stringifyLogObjectFunction(logObject)}else{excObject=logObject}compositeMessage=stringifyLogObject(excObject);if(allowMessage(this,compositeMessage.finalString)){if(this.onceOnly){i=this.onceOnly.length-1;while(i>=0){if(new RegExp(this.onceOnly[i]).test(compositeMessage.finalString)){if(this.seenRegexes[i]){return this}this.seenRegexes[i]=true}i--}}compositeMessage.meta=compositeMessage.meta||{};i=this.appenders.length-1;while(i>=0){this.appenders[i].log(levelToString(level),compositeMessage.msg,compositeMessage.meta,(function(){}),level,compositeMessage.finalString,this.loggerName);i--}}}return this};Logger.prototype.trace=function(logObject){return this.log(getTraceLevel(),logObject)};Logger.prototype.debug=function(logObject){return this.log(getDebugLevel(),logObject)};Logger.prototype.info=function(logObject){return this.log(getInfoLevel(),logObject)};Logger.prototype.warn=function(logObject){return this.log(getWarnLevel(),logObject)};Logger.prototype.error=function(logObject){return this.log(getErrorLevel(),logObject)};Logger.prototype.fatal=function(logObject){return this.log(getFatalLevel(),logObject)};Logger.prototype.fatalException=function(logObject,e){return this.log(getFatalLevel(),logObject,e)};return Logger}();JL.Logger=Logger;function createAjaxAppender(appenderName){return new AjaxAppender(appenderName)}JL.createAjaxAppender=createAjaxAppender;function createConsoleAppender(appenderName){return new ConsoleAppender(appenderName)}JL.createConsoleAppender=createConsoleAppender;var defaultAppender;if(typeof window!=="undefined"){defaultAppender=new AjaxAppender("")}else{defaultAppender=new ConsoleAppender("")}JL.__=new JL.Logger("");JL.__.setOptions({level:JL.getDebugLevel(),appenders:[defaultAppender]})})(JL||(JL={}));if(typeof exports!=="undefined"){exports.__esModule=true;exports.JL=JL}var define;if(typeof define=="function"&&define.amd){define("jsnlog",[],(function(){return JL}))}if(typeof __jsnlog_configure=="function"){__jsnlog_configure(JL)}if(typeof window!=="undefined"&&!window.onerror){window.onerror=function(errorMsg,url,lineNumber,column,errorObj){JL("onerrorLogger").fatalException({msg:"Uncaught Exception",errorMsg:errorMsg?errorMsg.message||errorMsg:"",url:url,"line number":lineNumber,column:column},errorObj);return false}}if(typeof window!=="undefined"&&!window.onunhandledrejection){window.onunhandledrejection=function(event){JL("onerrorLogger").fatalException({msg:"unhandledrejection",errorMsg:event.reason?event.reason.message:event.message||null},event.reason)}}},{}],8:[function(require,module,exports){"use strict";function Mime(){this._types=Object.create(null);this._extensions=Object.create(null);for(let i=0;i<arguments.length;i++){this.define(arguments[i])}this.define=this.define.bind(this);this.getType=this.getType.bind(this);this.getExtension=this.getExtension.bind(this)}Mime.prototype.define=function(typeMap,force){for(let type in typeMap){let extensions=typeMap[type].map((function(t){return t.toLowerCase()}));type=type.toLowerCase();for(let i=0;i<extensions.length;i++){const ext=extensions[i];if(ext[0]==="*"){continue}if(!force&&ext in this._types){throw new Error('Attempt to change mapping for "'+ext+'" extension from "'+this._types[ext]+'" to "'+type+'". Pass `force=true` to allow this, otherwise remove "'+ext+'" from the list of extensions for "'+type+'".')}this._types[ext]=type}if(force||!this._extensions[type]){const ext=extensions[0];this._extensions[type]=ext[0]!=="*"?ext:ext.substr(1)}}};Mime.prototype.getType=function(path){path=String(path);let last=path.replace(/^.*[/\\]/,"").toLowerCase();let ext=last.replace(/^.*\./,"").toLowerCase();let hasPath=last.length<path.length;let hasDot=ext.length<last.length-1;return(hasDot||!hasPath)&&this._types[ext]||null};Mime.prototype.getExtension=function(type){type=/^\s*([^;\s]*)/.test(type)&&RegExp.$1;return type&&this._extensions[type.toLowerCase()]||null};module.exports=Mime},{}],9:[function(require,module,exports){"use strict";let Mime=require("./Mime");module.exports=new Mime(require("./types/standard"))},{"./Mime":8,"./types/standard":10}],10:[function(require,module,exports){module.exports={"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["es","ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["*3gpp"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avif":["avif"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/hsj2":["hsj2"],"image/ief":["ief"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpeg","jpg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm"],"image/jpx":["jpx","jpf"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]}},{}],11:[function(require,module,exports){var protocols=["stun:","turn:"];module.exports=function(input){var url=(input||{}).url||input;var protocol;var parts;var output={};if(typeof url!="string"&&!(url instanceof String)){return input}url=url.trim();protocol=protocols[protocols.indexOf(url.slice(0,5))];if(!protocol){return input}url=url.slice(5);parts=url.split("@");output.username=input.username;output.credential=input.credential;if(parts.length>1){url=parts[1];parts=parts[0].split(":");output.username=parts[0];output.credential=(input||{}).credential||parts[1]||""}output.url=protocol+url;output.urls=[output.url];return output}},{}],12:[function(require,module,exports){(function(global){(function(){(function(){"use strict";var objectTypes={function:true,object:true};var root=objectTypes[typeof window]&&window||this;var oldRoot=root;var freeExports=objectTypes[typeof exports]&&exports;var freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module;var freeGlobal=freeExports&&freeModule&&typeof global=="object"&&global;if(freeGlobal&&(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal||freeGlobal.self===freeGlobal)){root=freeGlobal}var maxSafeInteger=Math.pow(2,53)-1;var reOpera=/\bOpera/;var thisBinding=this;var objectProto=Object.prototype;var hasOwnProperty=objectProto.hasOwnProperty;var toString=objectProto.toString;function capitalize(string){string=String(string);return string.charAt(0).toUpperCase()+string.slice(1)}function cleanupOS(os,pattern,label){var data={"10.0":"10",6.4:"10 Technical Preview",6.3:"8.1",6.2:"8",6.1:"Server 2008 R2 / 7","6.0":"Server 2008 / Vista",5.2:"Server 2003 / XP 64-bit",5.1:"XP",5.01:"2000 SP1","5.0":"2000","4.0":"NT","4.90":"ME"};if(pattern&&label&&/^Win/i.test(os)&&!/^Windows Phone /i.test(os)&&(data=data[/[\d.]+$/.exec(os)])){os="Windows "+data}os=String(os);if(pattern&&label){os=os.replace(RegExp(pattern,"i"),label)}os=format(os.replace(/ ce$/i," CE").replace(/\bhpw/i,"web").replace(/\bMacintosh\b/,"Mac OS").replace(/_PowerPC\b/i," OS").replace(/\b(OS X) [^ \d]+/i,"$1").replace(/\bMac (OS X)\b/,"$1").replace(/\/(\d)/," $1").replace(/_/g,".").replace(/(?: BePC|[ .]*fc[ \d.]+)$/i,"").replace(/\bx86\.64\b/gi,"x86_64").replace(/\b(Windows Phone) OS\b/,"$1").replace(/\b(Chrome OS \w+) [\d.]+\b/,"$1").split(" on ")[0]);return os}function each(object,callback){var index=-1,length=object?object.length:0;if(typeof length=="number"&&length>-1&&length<=maxSafeInteger){while(++index<length){callback(object[index],index,object)}}else{forOwn(object,callback)}}function format(string){string=trim(string);return/^(?:webOS|i(?:OS|P))/.test(string)?string:capitalize(string)}function forOwn(object,callback){for(var key in object){if(hasOwnProperty.call(object,key)){callback(object[key],key,object)}}}function getClassOf(value){return value==null?capitalize(value):toString.call(value).slice(8,-1)}function isHostType(object,property){var type=object!=null?typeof object[property]:"number";return!/^(?:boolean|number|string|undefined)$/.test(type)&&(type=="object"?!!object[property]:true)}function qualify(string){return String(string).replace(/([ -])(?!$)/g,"$1?")}function reduce(array,callback){var accumulator=null;each(array,(function(value,index){accumulator=callback(accumulator,value,index,array)}));return accumulator}function trim(string){return String(string).replace(/^ +| +$/g,"")}function parse(ua){var context=root;var isCustomContext=ua&&typeof ua=="object"&&getClassOf(ua)!="String";if(isCustomContext){context=ua;ua=null}var nav=context.navigator||{};var userAgent=nav.userAgent||"";ua||(ua=userAgent);var isModuleScope=isCustomContext||thisBinding==oldRoot;var likeChrome=isCustomContext?!!nav.likeChrome:/\bChrome\b/.test(ua)&&!/internal|\n/i.test(toString.toString());var objectClass="Object",airRuntimeClass=isCustomContext?objectClass:"ScriptBridgingProxyObject",enviroClass=isCustomContext?objectClass:"Environment",javaClass=isCustomContext&&context.java?"JavaPackage":getClassOf(context.java),phantomClass=isCustomContext?objectClass:"RuntimeObject";var java=/\bJava/.test(javaClass)&&context.java;var rhino=java&&getClassOf(context.environment)==enviroClass;var alpha=java?"a":"α";var beta=java?"b":"β";var doc=context.document||{};var opera=context.operamini||context.opera;var operaClass=reOpera.test(operaClass=isCustomContext&&opera?opera["[[Class]]"]:getClassOf(opera))?operaClass:opera=null;var data;var arch=ua;var description=[];var prerelease=null;var useFeatures=ua==userAgent;var version=useFeatures&&opera&&typeof opera.version=="function"&&opera.version();var isSpecialCasedOS;var layout=getLayout([{label:"EdgeHTML",pattern:"Edge"},"Trident",{label:"WebKit",pattern:"AppleWebKit"},"iCab","Presto","NetFront","Tasman","KHTML","Gecko"]);var name=getName(["Adobe AIR","Arora","Avant Browser","Breach","Camino","Electron","Epiphany","Fennec","Flock","Galeon","GreenBrowser","iCab","Iceweasel","K-Meleon","Konqueror","Lunascape","Maxthon",{label:"Microsoft Edge",pattern:"(?:Edge|Edg|EdgA|EdgiOS)"},"Midori","Nook Browser","PaleMoon","PhantomJS","Raven","Rekonq","RockMelt",{label:"Samsung Internet",pattern:"SamsungBrowser"},"SeaMonkey",{label:"Silk",pattern:"(?:Cloud9|Silk-Accelerated)"},"Sleipnir","SlimBrowser",{label:"SRWare Iron",pattern:"Iron"},"Sunrise","Swiftfox","Vivaldi","Waterfox","WebPositive",{label:"Yandex Browser",pattern:"YaBrowser"},{label:"UC Browser",pattern:"UCBrowser"},"Opera Mini",{label:"Opera Mini",pattern:"OPiOS"},"Opera",{label:"Opera",pattern:"OPR"},"Chromium","Chrome",{label:"Chrome",pattern:"(?:HeadlessChrome)"},{label:"Chrome Mobile",pattern:"(?:CriOS|CrMo)"},{label:"Firefox",pattern:"(?:Firefox|Minefield)"},{label:"Firefox for iOS",pattern:"FxiOS"},{label:"IE",pattern:"IEMobile"},{label:"IE",pattern:"MSIE"},"Safari"]);var product=getProduct([{label:"BlackBerry",pattern:"BB10"},"BlackBerry",{label:"Galaxy S",pattern:"GT-I9000"},{label:"Galaxy S2",pattern:"GT-I9100"},{label:"Galaxy S3",pattern:"GT-I9300"},{label:"Galaxy S4",pattern:"GT-I9500"},{label:"Galaxy S5",pattern:"SM-G900"},{label:"Galaxy S6",pattern:"SM-G920"},{label:"Galaxy S6 Edge",pattern:"SM-G925"},{label:"Galaxy S7",pattern:"SM-G930"},{label:"Galaxy S7 Edge",pattern:"SM-G935"},"Google TV","Lumia","iPad","iPod","iPhone","Kindle",{label:"Kindle Fire",pattern:"(?:Cloud9|Silk-Accelerated)"},"Nexus","Nook","PlayBook","PlayStation Vita","PlayStation","TouchPad","Transformer",{label:"Wii U",pattern:"WiiU"},"Wii","Xbox One",{label:"Xbox 360",pattern:"Xbox"},"Xoom"]);var manufacturer=getManufacturer({Apple:{iPad:1,iPhone:1,iPod:1},Alcatel:{},Archos:{},Amazon:{Kindle:1,"Kindle Fire":1},Asus:{Transformer:1},"Barnes & Noble":{Nook:1},BlackBerry:{PlayBook:1},Google:{"Google TV":1,Nexus:1},HP:{TouchPad:1},HTC:{},Huawei:{},Lenovo:{},LG:{},Microsoft:{Xbox:1,"Xbox One":1},Motorola:{Xoom:1},Nintendo:{"Wii U":1,Wii:1},Nokia:{Lumia:1},Oppo:{},Samsung:{"Galaxy S":1,"Galaxy S2":1,"Galaxy S3":1,"Galaxy S4":1},Sony:{PlayStation:1,"PlayStation Vita":1},Xiaomi:{Mi:1,Redmi:1}});var os=getOS(["Windows Phone","KaiOS","Android","CentOS",{label:"Chrome OS",pattern:"CrOS"},"Debian",{label:"DragonFly BSD",pattern:"DragonFly"},"Fedora","FreeBSD","Gentoo","Haiku","Kubuntu","Linux Mint","OpenBSD","Red Hat","SuSE","Ubuntu","Xubuntu","Cygwin","Symbian OS","hpwOS","webOS ","webOS","Tablet OS","Tizen","Linux","Mac OS X","Macintosh","Mac","Windows 98;","Windows "]);function getLayout(guesses){return reduce(guesses,(function(result,guess){return result||RegExp("\\b"+(guess.pattern||qualify(guess))+"\\b","i").exec(ua)&&(guess.label||guess)}))}function getManufacturer(guesses){return reduce(guesses,(function(result,value,key){return result||(value[product]||value[/^[a-z]+(?: +[a-z]+\b)*/i.exec(product)]||RegExp("\\b"+qualify(key)+"(?:\\b|\\w*\\d)","i").exec(ua))&&key}))}function getName(guesses){return reduce(guesses,(function(result,guess){return result||RegExp("\\b"+(guess.pattern||qualify(guess))+"\\b","i").exec(ua)&&(guess.label||guess)}))}function getOS(guesses){return reduce(guesses,(function(result,guess){var pattern=guess.pattern||qualify(guess);if(!result&&(result=RegExp("\\b"+pattern+"(?:/[\\d.]+|[ \\w.]*)","i").exec(ua))){result=cleanupOS(result,pattern,guess.label||guess)}return result}))}function getProduct(guesses){return reduce(guesses,(function(result,guess){var pattern=guess.pattern||qualify(guess);if(!result&&(result=RegExp("\\b"+pattern+" *\\d+[.\\w_]*","i").exec(ua)||RegExp("\\b"+pattern+" *\\w+-[\\w]*","i").exec(ua)||RegExp("\\b"+pattern+"(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)","i").exec(ua))){if((result=String(guess.label&&!RegExp(pattern,"i").test(guess.label)?guess.label:result).split("/"))[1]&&!/[\d.]+/.test(result[0])){result[0]+=" "+result[1]}guess=guess.label||guess;result=format(result[0].replace(RegExp(pattern,"i"),guess).replace(RegExp("; *(?:"+guess+"[_-])?","i")," ").replace(RegExp("("+guess+")[-_.]?(\\w)","i"),"$1 $2"))}return result}))}function getVersion(patterns){return reduce(patterns,(function(result,pattern){return result||(RegExp(pattern+"(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)","i").exec(ua)||0)[1]||null}))}function toStringPlatform(){return this.description||""}layout&&(layout=[layout]);if(/\bAndroid\b/.test(os)&&!product&&(data=/\bAndroid[^;]*;(.*?)(?:Build|\) AppleWebKit)\b/i.exec(ua))){product=trim(data[1]).replace(/^[a-z]{2}-[a-z]{2};\s*/i,"")||null}if(manufacturer&&!product){product=getProduct([manufacturer])}else if(manufacturer&&product){product=product.replace(RegExp("^("+qualify(manufacturer)+")[-_.\\s]","i"),manufacturer+" ").replace(RegExp("^("+qualify(manufacturer)+")[-_.]?(\\w)","i"),manufacturer+" $2")}if(data=/\bGoogle TV\b/.exec(product)){product=data[0]}if(/\bSimulator\b/i.test(ua)){product=(product?product+" ":"")+"Simulator"}if(name=="Opera Mini"&&/\bOPiOS\b/.test(ua)){description.push("running in Turbo/Uncompressed mode")}if(name=="IE"&&/\blike iPhone OS\b/.test(ua)){data=parse(ua.replace(/like iPhone OS/,""));manufacturer=data.manufacturer;product=data.product}else if(/^iP/.test(product)){name||(name="Safari");os="iOS"+((data=/ OS ([\d_]+)/i.exec(ua))?" "+data[1].replace(/_/g,"."):"")}else if(name=="Konqueror"&&/^Linux\b/i.test(os)){os="Kubuntu"}else if(manufacturer&&manufacturer!="Google"&&(/Chrome/.test(name)&&!/\bMobile Safari\b/i.test(ua)||/\bVita\b/.test(product))||/\bAndroid\b/.test(os)&&/^Chrome/.test(name)&&/\bVersion\//i.test(ua)){name="Android Browser";os=/\bAndroid\b/.test(os)?os:"Android"}else if(name=="Silk"){if(!/\bMobi/i.test(ua)){os="Android";description.unshift("desktop mode")}if(/Accelerated *= *true/i.test(ua)){description.unshift("accelerated")}}else if(name=="UC Browser"&&/\bUCWEB\b/.test(ua)){description.push("speed mode")}else if(name=="PaleMoon"&&(data=/\bFirefox\/([\d.]+)\b/.exec(ua))){description.push("identifying as Firefox "+data[1])}else if(name=="Firefox"&&(data=/\b(Mobile|Tablet|TV)\b/i.exec(ua))){os||(os="Firefox OS");product||(product=data[1])}else if(!name||(data=!/\bMinefield\b/i.test(ua)&&/\b(?:Firefox|Safari)\b/.exec(name))){if(name&&!product&&/[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data+"/")+8))){name=null}if((data=product||manufacturer||os)&&(product||manufacturer||/\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(os))){name=/[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(os)?os:data)+" Browser"}}else if(name=="Electron"&&(data=(/\bChrome\/([\d.]+)\b/.exec(ua)||0)[1])){description.push("Chromium "+data)}if(!version){version=getVersion(["(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$)|UCBrowser|YaBrowser)","Version",qualify(name),"(?:Firefox|Minefield|NetFront)"])}if(data=layout=="iCab"&&parseFloat(version)>3&&"WebKit"||/\bOpera\b/.test(name)&&(/\bOPR\b/.test(ua)?"Blink":"Presto")||/\b(?:Midori|Nook|Safari)\b/i.test(ua)&&!/^(?:Trident|EdgeHTML)$/.test(layout)&&"WebKit"||!layout&&/\bMSIE\b/i.test(ua)&&(os=="Mac OS"?"Tasman":"Trident")||layout=="WebKit"&&/\bPlayStation\b(?! Vita\b)/i.test(name)&&"NetFront"){layout=[data]}if(name=="IE"&&(data=(/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua)||0)[1])){name+=" Mobile";os="Windows Phone "+(/\+$/.test(data)?data:data+".x");description.unshift("desktop mode")}else if(/\bWPDesktop\b/i.test(ua)){name="IE Mobile";os="Windows Phone 8.x";description.unshift("desktop mode");version||(version=(/\brv:([\d.]+)/.exec(ua)||0)[1])}else if(name!="IE"&&layout=="Trident"&&(data=/\brv:([\d.]+)/.exec(ua))){if(name){description.push("identifying as "+name+(version?" "+version:""))}name="IE";version=data[1]}if(useFeatures){if(isHostType(context,"global")){if(java){data=java.lang.System;arch=data.getProperty("os.arch");os=os||data.getProperty("os.name")+" "+data.getProperty("os.version")}if(rhino){try{version=context.require("ringo/engine").version.join(".");name="RingoJS"}catch(e){if((data=context.system)&&data.global.system==context.system){name="Narwhal";os||(os=data[0].os||null)}}if(!name){name="Rhino"}}else if(typeof context.process=="object"&&!context.process.browser&&(data=context.process)){if(typeof data.versions=="object"){if(typeof data.versions.electron=="string"){description.push("Node "+data.versions.node);name="Electron";version=data.versions.electron}else if(typeof data.versions.nw=="string"){description.push("Chromium "+version,"Node "+data.versions.node);name="NW.js";version=data.versions.nw}}if(!name){name="Node.js";arch=data.arch;os=data.platform;version=/[\d.]+/.exec(data.version);version=version?version[0]:null}}}else if(getClassOf(data=context.runtime)==airRuntimeClass){name="Adobe AIR";os=data.flash.system.Capabilities.os}else if(getClassOf(data=context.phantom)==phantomClass){name="PhantomJS";version=(data=data.version||null)&&data.major+"."+data.minor+"."+data.patch}else if(typeof doc.documentMode=="number"&&(data=/\bTrident\/(\d+)/i.exec(ua))){version=[version,doc.documentMode];if((data=+data[1]+4)!=version[1]){description.push("IE "+version[1]+" mode");layout&&(layout[1]="");version[1]=data}version=name=="IE"?String(version[1].toFixed(1)):version[0]}else if(typeof doc.documentMode=="number"&&/^(?:Chrome|Firefox)\b/.test(name)){description.push("masking as "+name+" "+version);name="IE";version="11.0";layout=["Trident"];os="Windows"}os=os&&format(os)}if(version&&(data=/(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(version)||/(?:alpha|beta)(?: ?\d)?/i.exec(ua+";"+(useFeatures&&nav.appMinorVersion))||/\bMinefield\b/i.test(ua)&&"a")){prerelease=/b/i.test(data)?"beta":"alpha";version=version.replace(RegExp(data+"\\+?$"),"")+(prerelease=="beta"?beta:alpha)+(/\d+\+?/.exec(data)||"")}if(name=="Fennec"||name=="Firefox"&&/\b(?:Android|Firefox OS|KaiOS)\b/.test(os)){name="Firefox Mobile"}else if(name=="Maxthon"&&version){version=version.replace(/\.[\d.]+/,".x")}else if(/\bXbox\b/i.test(product)){if(product=="Xbox 360"){os=null}if(product=="Xbox 360"&&/\bIEMobile\b/.test(ua)){description.unshift("mobile mode")}}else if((/^(?:Chrome|IE|Opera)$/.test(name)||name&&!product&&!/Browser|Mobi/.test(name))&&(os=="Windows CE"||/Mobi/i.test(ua))){name+=" Mobile"}else if(name=="IE"&&useFeatures){try{if(context.external===null){description.unshift("platform preview")}}catch(e){description.unshift("embedded")}}else if((/\bBlackBerry\b/.test(product)||/\bBB10\b/.test(ua))&&(data=(RegExp(product.replace(/ +/g," *")+"/([.\\d]+)","i").exec(ua)||0)[1]||version)){data=[data,/BB10/.test(ua)];os=(data[1]?(product=null,manufacturer="BlackBerry"):"Device Software")+" "+data[0];version=null}else if(this!=forOwn&&product!="Wii"&&(useFeatures&&opera||/Opera/.test(name)&&/\b(?:MSIE|Firefox)\b/i.test(ua)||name=="Firefox"&&/\bOS X (?:\d+\.){2,}/.test(os)||name=="IE"&&(os&&!/^Win/.test(os)&&version>5.5||/\bWindows XP\b/.test(os)&&version>8||version==8&&!/\bTrident\b/.test(ua)))&&!reOpera.test(data=parse.call(forOwn,ua.replace(reOpera,"")+";"))&&data.name){data="ing as "+data.name+((data=data.version)?" "+data:"");if(reOpera.test(name)){if(/\bIE\b/.test(data)&&os=="Mac OS"){os=null}data="identify"+data}else{data="mask"+data;if(operaClass){name=format(operaClass.replace(/([a-z])([A-Z])/g,"$1 $2"))}else{name="Opera"}if(/\bIE\b/.test(data)){os=null}if(!useFeatures){version=null}}layout=["Presto"];description.push(data)}if(data=(/\bAppleWebKit\/([\d.]+\+?)/i.exec(ua)||0)[1]){data=[parseFloat(data.replace(/\.(\d)$/,".0$1")),data];if(name=="Safari"&&data[1].slice(-1)=="+"){name="WebKit Nightly";prerelease="alpha";version=data[1].slice(0,-1)}else if(version==data[1]||version==(data[2]=(/\bSafari\/([\d.]+\+?)/i.exec(ua)||0)[1])){version=null}data[1]=(/\b(?:Headless)?Chrome\/([\d.]+)/i.exec(ua)||0)[1];if(data[0]==537.36&&data[2]==537.36&&parseFloat(data[1])>=28&&layout=="WebKit"){layout=["Blink"]}if(!useFeatures||!likeChrome&&!data[1]){layout&&(layout[1]="like Safari");data=(data=data[0],data<400?1:data<500?2:data<526?3:data<533?4:data<534?"4+":data<535?5:data<537?6:data<538?7:data<601?8:data<602?9:data<604?10:data<606?11:data<608?12:"12")}else{layout&&(layout[1]="like Chrome");data=data[1]||(data=data[0],data<530?1:data<532?2:data<532.05?3:data<533?4:data<534.03?5:data<534.07?6:data<534.1?7:data<534.13?8:data<534.16?9:data<534.24?10:data<534.3?11:data<535.01?12:data<535.02?"13+":data<535.07?15:data<535.11?16:data<535.19?17:data<536.05?18:data<536.1?19:data<537.01?20:data<537.11?"21+":data<537.13?23:data<537.18?24:data<537.24?25:data<537.36?26:layout!="Blink"?"27":"28")}layout&&(layout[1]+=" "+(data+=typeof data=="number"?".x":/[.+]/.test(data)?"":"+"));if(name=="Safari"&&(!version||parseInt(version)>45)){version=data}else if(name=="Chrome"&&/\bHeadlessChrome/i.test(ua)){description.unshift("headless")}}if(name=="Opera"&&(data=/\bzbov|zvav$/.exec(os))){name+=" ";description.unshift("desktop mode");if(data=="zvav"){name+="Mini";version=null}else{name+="Mobile"}os=os.replace(RegExp(" *"+data+"$"),"")}else if(name=="Safari"&&/\bChrome\b/.exec(layout&&layout[1])){description.unshift("desktop mode");name="Chrome Mobile";version=null;if(/\bOS X\b/.test(os)){manufacturer="Apple";os="iOS 4.3+"}else{os=null}}else if(/\bSRWare Iron\b/.test(name)&&!version){version=getVersion("Chrome")}if(version&&version.indexOf(data=/[\d.]+$/.exec(os))==0&&ua.indexOf("/"+data+"-")>-1){os=trim(os.replace(data,""))}if(os&&os.indexOf(name)!=-1&&!RegExp(name+" OS").test(os)){os=os.replace(RegExp(" *"+qualify(name)+" *"),"")}if(layout&&!/\b(?:Avant|Nook)\b/.test(name)&&(/Browser|Lunascape|Maxthon/.test(name)||name!="Safari"&&/^iOS/.test(os)&&/\bSafari\b/.test(layout[1])||/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name)&&layout[1])){(data=layout[layout.length-1])&&description.push(data)}if(description.length){description=["("+description.join("; ")+")"]}if(manufacturer&&product&&product.indexOf(manufacturer)<0){description.push("on "+manufacturer)}if(product){description.push((/^on /.test(description[description.length-1])?"":"on ")+product)}if(os){data=/ ([\d.+]+)$/.exec(os);isSpecialCasedOS=data&&os.charAt(os.length-data[0].length-1)=="/";os={architecture:32,family:data&&!isSpecialCasedOS?os.replace(data[0],""):os,version:data?data[1]:null,toString:function(){var version=this.version;return this.family+(version&&!isSpecialCasedOS?" "+version:"")+(this.architecture==64?" 64-bit":"")}}}if((data=/\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(arch))&&!/\bi686\b/i.test(arch)){if(os){os.architecture=64;os.family=os.family.replace(RegExp(" *"+data),"")}if(name&&(/\bWOW64\b/i.test(ua)||useFeatures&&/\w(?:86|32)$/.test(nav.cpuClass||nav.platform)&&!/\bWin64; x64\b/i.test(ua))){description.unshift("32-bit")}}else if(os&&/^OS X/.test(os.family)&&name=="Chrome"&&parseFloat(version)>=39){os.architecture=64}ua||(ua=null);var platform={};platform.description=ua;platform.layout=layout&&layout[0];platform.manufacturer=manufacturer;platform.name=name;platform.prerelease=prerelease;platform.product=product;platform.ua=ua;platform.version=name&&version;platform.os=os||{architecture:null,family:null,version:null,toString:function(){return"null"}};platform.parse=parse;platform.toString=toStringPlatform;if(platform.version){description.unshift(version)}if(platform.name){description.unshift(name)}if(os&&name&&!(os==String(os).split(" ")[0]&&(os==name.split(" ")[0]||product))){description.push(product?"("+os+")":"on "+os)}if(description.length){platform.description=description.join(" ")}return platform}var platform=parse();if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){root.platform=platform;define((function(){return platform}))}else if(freeExports&&freeModule){forOwn(platform,(function(value,key){freeExports[key]=value}))}else{root.platform=platform}}).call(this)}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],13:[function(require,module,exports){var process=module.exports={};var cachedSetTimeout;var cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function"){cachedSetTimeout=setTimeout}else{cachedSetTimeout=defaultSetTimout}}catch(e){cachedSetTimeout=defaultSetTimout}try{if(typeof clearTimeout==="function"){cachedClearTimeout=clearTimeout}else{cachedClearTimeout=defaultClearTimeout}}catch(e){cachedClearTimeout=defaultClearTimeout}})();function runTimeout(fun){if(cachedSetTimeout===setTimeout){return setTimeout(fun,0)}if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout){cachedSetTimeout=setTimeout;return setTimeout(fun,0)}try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){return clearTimeout(marker)}if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout){cachedClearTimeout=clearTimeout;return clearTimeout(marker)}try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run()}}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;runClearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[]};process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],14:[function(require,module,exports){const debug=require("../internal/debug");const{MAX_LENGTH:MAX_LENGTH,MAX_SAFE_INTEGER:MAX_SAFE_INTEGER}=require("../internal/constants");const{re:re,t:t}=require("../internal/re");const parseOptions=require("../internal/parse-options");const{compareIdentifiers:compareIdentifiers}=require("../internal/identifiers");class SemVer{constructor(version,options){options=parseOptions(options);if(version instanceof SemVer){if(version.loose===!!options.loose&&version.includePrerelease===!!options.includePrerelease){return version}else{version=version.version}}else if(typeof version!=="string"){throw new TypeError(`Invalid Version: ${version}`)}if(version.length>MAX_LENGTH){throw new TypeError(`version is longer than ${MAX_LENGTH} characters`)}debug("SemVer",version,options);this.options=options;this.loose=!!options.loose;this.includePrerelease=!!options.includePrerelease;const m=version.trim().match(options.loose?re[t.LOOSE]:re[t.FULL]);if(!m){throw new TypeError(`Invalid Version: ${version}`)}this.raw=version;this.major=+m[1];this.minor=+m[2];this.patch=+m[3];if(this.major>MAX_SAFE_INTEGER||this.major<0){throw new TypeError("Invalid major version")}if(this.minor>MAX_SAFE_INTEGER||this.minor<0){throw new TypeError("Invalid minor version")}if(this.patch>MAX_SAFE_INTEGER||this.patch<0){throw new TypeError("Invalid patch version")}if(!m[4]){this.prerelease=[]}else{this.prerelease=m[4].split(".").map((id=>{if(/^[0-9]+$/.test(id)){const num=+id;if(num>=0&&num<MAX_SAFE_INTEGER){return num}}return id}))}this.build=m[5]?m[5].split("."):[];this.format()}format(){this.version=`${this.major}.${this.minor}.${this.patch}`;if(this.prerelease.length){this.version+=`-${this.prerelease.join(".")}`}return this.version}toString(){return this.version}compare(other){debug("SemVer.compare",this.version,this.options,other);if(!(other instanceof SemVer)){if(typeof other==="string"&&other===this.version){return 0}other=new SemVer(other,this.options)}if(other.version===this.version){return 0}return this.compareMain(other)||this.comparePre(other)}compareMain(other){if(!(other instanceof SemVer)){other=new SemVer(other,this.options)}return compareIdentifiers(this.major,other.major)||compareIdentifiers(this.minor,other.minor)||compareIdentifiers(this.patch,other.patch)}comparePre(other){if(!(other instanceof SemVer)){other=new SemVer(other,this.options)}if(this.prerelease.length&&!other.prerelease.length){return-1}else if(!this.prerelease.length&&other.prerelease.length){return 1}else if(!this.prerelease.length&&!other.prerelease.length){return 0}let i=0;do{const a=this.prerelease[i];const b=other.prerelease[i];debug("prerelease compare",i,a,b);if(a===undefined&&b===undefined){return 0}else if(b===undefined){return 1}else if(a===undefined){return-1}else if(a===b){continue}else{return compareIdentifiers(a,b)}}while(++i)}compareBuild(other){if(!(other instanceof SemVer)){other=new SemVer(other,this.options)}let i=0;do{const a=this.build[i];const b=other.build[i];debug("prerelease compare",i,a,b);if(a===undefined&&b===undefined){return 0}else if(b===undefined){return 1}else if(a===undefined){return-1}else if(a===b){continue}else{return compareIdentifiers(a,b)}}while(++i)}inc(release,identifier){switch(release){case"premajor":this.prerelease.length=0;this.patch=0;this.minor=0;this.major++;this.inc("pre",identifier);break;case"preminor":this.prerelease.length=0;this.patch=0;this.minor++;this.inc("pre",identifier);break;case"prepatch":this.prerelease.length=0;this.inc("patch",identifier);this.inc("pre",identifier);break;case"prerelease":if(this.prerelease.length===0){this.inc("patch",identifier)}this.inc("pre",identifier);break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0){this.major++}this.minor=0;this.patch=0;this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0){this.minor++}this.patch=0;this.prerelease=[];break;case"patch":if(this.prerelease.length===0){this.patch++}this.prerelease=[];break;case"pre":if(this.prerelease.length===0){this.prerelease=[0]}else{let i=this.prerelease.length;while(--i>=0){if(typeof this.prerelease[i]==="number"){this.prerelease[i]++;i=-2}}if(i===-1){this.prerelease.push(0)}}if(identifier){if(compareIdentifiers(this.prerelease[0],identifier)===0){if(isNaN(this.prerelease[1])){this.prerelease=[identifier,0]}}else{this.prerelease=[identifier,0]}}break;default:throw new Error(`invalid increment argument: ${release}`)}this.format();this.raw=this.version;return this}}module.exports=SemVer},{"../internal/constants":17,"../internal/debug":18,"../internal/identifiers":19,"../internal/parse-options":20,"../internal/re":21}],15:[function(require,module,exports){const SemVer=require("../classes/semver");const major=(a,loose)=>new SemVer(a,loose).major;module.exports=major},{"../classes/semver":14}],16:[function(require,module,exports){const SemVer=require("../classes/semver");const minor=(a,loose)=>new SemVer(a,loose).minor;module.exports=minor},{"../classes/semver":14}],17:[function(require,module,exports){const SEMVER_SPEC_VERSION="2.0.0";const MAX_LENGTH=256;const MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER||9007199254740991;const MAX_SAFE_COMPONENT_LENGTH=16;module.exports={SEMVER_SPEC_VERSION:SEMVER_SPEC_VERSION,MAX_LENGTH:MAX_LENGTH,MAX_SAFE_INTEGER:MAX_SAFE_INTEGER,MAX_SAFE_COMPONENT_LENGTH:MAX_SAFE_COMPONENT_LENGTH}},{}],18:[function(require,module,exports){(function(process){(function(){const debug=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...args)=>console.error("SEMVER",...args):()=>{};module.exports=debug}).call(this)}).call(this,require("_process"))},{_process:13}],19:[function(require,module,exports){const numeric=/^[0-9]+$/;const compareIdentifiers=(a,b)=>{const anum=numeric.test(a);const bnum=numeric.test(b);if(anum&&bnum){a=+a;b=+b}return a===b?0:anum&&!bnum?-1:bnum&&!anum?1:a<b?-1:1};const rcompareIdentifiers=(a,b)=>compareIdentifiers(b,a);module.exports={compareIdentifiers:compareIdentifiers,rcompareIdentifiers:rcompareIdentifiers}},{}],20:[function(require,module,exports){const opts=["includePrerelease","loose","rtl"];const parseOptions=options=>!options?{}:typeof options!=="object"?{loose:true}:opts.filter((k=>options[k])).reduce(((o,k)=>{o[k]=true;return o}),{});module.exports=parseOptions},{}],21:[function(require,module,exports){const{MAX_SAFE_COMPONENT_LENGTH:MAX_SAFE_COMPONENT_LENGTH}=require("./constants");const debug=require("./debug");exports=module.exports={};const re=exports.re=[];const src=exports.src=[];const t=exports.t={};let R=0;const createToken=(name,value,isGlobal)=>{const index=R++;debug(name,index,value);t[name]=index;src[index]=value;re[index]=new RegExp(value,isGlobal?"g":undefined)};createToken("NUMERICIDENTIFIER","0|[1-9]\\d*");createToken("NUMERICIDENTIFIERLOOSE","[0-9]+");createToken("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");createToken("MAINVERSION",`(${src[t.NUMERICIDENTIFIER]})\\.`+`(${src[t.NUMERICIDENTIFIER]})\\.`+`(${src[t.NUMERICIDENTIFIER]})`);createToken("MAINVERSIONLOOSE",`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.`+`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.`+`(${src[t.NUMERICIDENTIFIERLOOSE]})`);createToken("PRERELEASEIDENTIFIER",`(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`);createToken("PRERELEASEIDENTIFIERLOOSE",`(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`);createToken("PRERELEASE",`(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);createToken("PRERELEASELOOSE",`(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);createToken("BUILDIDENTIFIER","[0-9A-Za-z-]+");createToken("BUILD",`(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);createToken("FULLPLAIN",`v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);createToken("FULL",`^${src[t.FULLPLAIN]}$`);createToken("LOOSEPLAIN",`[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);createToken("LOOSE",`^${src[t.LOOSEPLAIN]}$`);createToken("GTLT","((?:<|>)?=?)");createToken("XRANGEIDENTIFIERLOOSE",`${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);createToken("XRANGEIDENTIFIER",`${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);createToken("XRANGEPLAIN",`[v=\\s]*(${src[t.XRANGEIDENTIFIER]})`+`(?:\\.(${src[t.XRANGEIDENTIFIER]})`+`(?:\\.(${src[t.XRANGEIDENTIFIER]})`+`(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?`+`)?)?`);createToken("XRANGEPLAINLOOSE",`[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})`+`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})`+`(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})`+`(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?`+`)?)?`);createToken("XRANGE",`^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);createToken("XRANGELOOSE",`^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);createToken("COERCE",`${"(^|[^\\d])"+"(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})`+`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`+`(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`+`(?:$|[^\\d])`);createToken("COERCERTL",src[t.COERCE],true);createToken("LONETILDE","(?:~>?)");createToken("TILDETRIM",`(\\s*)${src[t.LONETILDE]}\\s+`,true);exports.tildeTrimReplace="$1~";createToken("TILDE",`^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);createToken("TILDELOOSE",`^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);createToken("LONECARET","(?:\\^)");createToken("CARETTRIM",`(\\s*)${src[t.LONECARET]}\\s+`,true);exports.caretTrimReplace="$1^";createToken("CARET",`^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);createToken("CARETLOOSE",`^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);createToken("COMPARATORLOOSE",`^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);createToken("COMPARATOR",`^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);createToken("COMPARATORTRIM",`(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`,true);exports.comparatorTrimReplace="$1$2$3";createToken("HYPHENRANGE",`^\\s*(${src[t.XRANGEPLAIN]})`+`\\s+-\\s+`+`(${src[t.XRANGEPLAIN]})`+`\\s*$`);createToken("HYPHENRANGELOOSE",`^\\s*(${src[t.XRANGEPLAINLOOSE]})`+`\\s+-\\s+`+`(${src[t.XRANGEPLAINLOOSE]})`+`\\s*$`);createToken("STAR","(<|>)?=?\\s*\\*");createToken("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");createToken("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")},{"./constants":17,"./debug":18}],22:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"NIL",{enumerable:true,get:function(){return _nil.default}});Object.defineProperty(exports,"parse",{enumerable:true,get:function(){return _parse.default}});Object.defineProperty(exports,"stringify",{enumerable:true,get:function(){return _stringify.default}});Object.defineProperty(exports,"v1",{enumerable:true,get:function(){return _v.default}});Object.defineProperty(exports,"v3",{enumerable:true,get:function(){return _v2.default}});Object.defineProperty(exports,"v4",{enumerable:true,get:function(){return _v3.default}});Object.defineProperty(exports,"v5",{enumerable:true,get:function(){return _v4.default}});Object.defineProperty(exports,"validate",{enumerable:true,get:function(){return _validate.default}});Object.defineProperty(exports,"version",{enumerable:true,get:function(){return _version.default}});var _v=_interopRequireDefault(require("./v1.js"));var _v2=_interopRequireDefault(require("./v3.js"));var _v3=_interopRequireDefault(require("./v4.js"));var _v4=_interopRequireDefault(require("./v5.js"));var _nil=_interopRequireDefault(require("./nil.js"));var _version=_interopRequireDefault(require("./version.js"));var _validate=_interopRequireDefault(require("./validate.js"));var _stringify=_interopRequireDefault(require("./stringify.js"));var _parse=_interopRequireDefault(require("./parse.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},{"./nil.js":25,"./parse.js":26,"./stringify.js":30,"./v1.js":31,"./v3.js":32,"./v4.js":34,"./v5.js":35,"./validate.js":36,"./version.js":37}],23:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;function md5(bytes){if(typeof bytes==="string"){const msg=unescape(encodeURIComponent(bytes));bytes=new Uint8Array(msg.length);for(let i=0;i<msg.length;++i){bytes[i]=msg.charCodeAt(i)}}return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes),bytes.length*8))}function md5ToHexEncodedArray(input){const output=[];const length32=input.length*32;const hexTab="0123456789abcdef";for(let i=0;i<length32;i+=8){const x=input[i>>5]>>>i%32&255;const hex=parseInt(hexTab.charAt(x>>>4&15)+hexTab.charAt(x&15),16);output.push(hex)}return output}function getOutputLength(inputLength8){return(inputLength8+64>>>9<<4)+14+1}function wordsToMd5(x,len){x[len>>5]|=128<<len%32;x[getOutputLength(len)-1]=len;let a=1732584193;let b=-271733879;let c=-1732584194;let d=271733878;for(let i=0;i<x.length;i+=16){const olda=a;const oldb=b;const oldc=c;const oldd=d;a=md5ff(a,b,c,d,x[i],7,-680876936);d=md5ff(d,a,b,c,x[i+1],12,-389564586);c=md5ff(c,d,a,b,x[i+2],17,606105819);b=md5ff(b,c,d,a,x[i+3],22,-1044525330);a=md5ff(a,b,c,d,x[i+4],7,-176418897);d=md5ff(d,a,b,c,x[i+5],12,1200080426);c=md5ff(c,d,a,b,x[i+6],17,-1473231341);b=md5ff(b,c,d,a,x[i+7],22,-45705983);a=md5ff(a,b,c,d,x[i+8],7,1770035416);d=md5ff(d,a,b,c,x[i+9],12,-1958414417);c=md5ff(c,d,a,b,x[i+10],17,-42063);b=md5ff(b,c,d,a,x[i+11],22,-1990404162);a=md5ff(a,b,c,d,x[i+12],7,1804603682);d=md5ff(d,a,b,c,x[i+13],12,-40341101);c=md5ff(c,d,a,b,x[i+14],17,-1502002290);b=md5ff(b,c,d,a,x[i+15],22,1236535329);a=md5gg(a,b,c,d,x[i+1],5,-165796510);d=md5gg(d,a,b,c,x[i+6],9,-1069501632);c=md5gg(c,d,a,b,x[i+11],14,643717713);b=md5gg(b,c,d,a,x[i],20,-373897302);a=md5gg(a,b,c,d,x[i+5],5,-701558691);d=md5gg(d,a,b,c,x[i+10],9,38016083);c=md5gg(c,d,a,b,x[i+15],14,-660478335);b=md5gg(b,c,d,a,x[i+4],20,-405537848);a=md5gg(a,b,c,d,x[i+9],5,568446438);d=md5gg(d,a,b,c,x[i+14],9,-1019803690);c=md5gg(c,d,a,b,x[i+3],14,-187363961);b=md5gg(b,c,d,a,x[i+8],20,1163531501);a=md5gg(a,b,c,d,x[i+13],5,-1444681467);d=md5gg(d,a,b,c,x[i+2],9,-51403784);c=md5gg(c,d,a,b,x[i+7],14,1735328473);b=md5gg(b,c,d,a,x[i+12],20,-1926607734);a=md5hh(a,b,c,d,x[i+5],4,-378558);d=md5hh(d,a,b,c,x[i+8],11,-2022574463);c=md5hh(c,d,a,b,x[i+11],16,1839030562);b=md5hh(b,c,d,a,x[i+14],23,-35309556);a=md5hh(a,b,c,d,x[i+1],4,-1530992060);d=md5hh(d,a,b,c,x[i+4],11,1272893353);c=md5hh(c,d,a,b,x[i+7],16,-155497632);b=md5hh(b,c,d,a,x[i+10],23,-1094730640);a=md5hh(a,b,c,d,x[i+13],4,681279174);d=md5hh(d,a,b,c,x[i],11,-358537222);c=md5hh(c,d,a,b,x[i+3],16,-722521979);b=md5hh(b,c,d,a,x[i+6],23,76029189);a=md5hh(a,b,c,d,x[i+9],4,-640364487);d=md5hh(d,a,b,c,x[i+12],11,-421815835);c=md5hh(c,d,a,b,x[i+15],16,530742520);b=md5hh(b,c,d,a,x[i+2],23,-995338651);a=md5ii(a,b,c,d,x[i],6,-198630844);d=md5ii(d,a,b,c,x[i+7],10,1126891415);c=md5ii(c,d,a,b,x[i+14],15,-1416354905);b=md5ii(b,c,d,a,x[i+5],21,-57434055);a=md5ii(a,b,c,d,x[i+12],6,1700485571);d=md5ii(d,a,b,c,x[i+3],10,-1894986606);c=md5ii(c,d,a,b,x[i+10],15,-1051523);b=md5ii(b,c,d,a,x[i+1],21,-2054922799);a=md5ii(a,b,c,d,x[i+8],6,1873313359);d=md5ii(d,a,b,c,x[i+15],10,-30611744);c=md5ii(c,d,a,b,x[i+6],15,-1560198380);b=md5ii(b,c,d,a,x[i+13],21,1309151649);a=md5ii(a,b,c,d,x[i+4],6,-145523070);d=md5ii(d,a,b,c,x[i+11],10,-1120210379);c=md5ii(c,d,a,b,x[i+2],15,718787259);b=md5ii(b,c,d,a,x[i+9],21,-343485551);a=safeAdd(a,olda);b=safeAdd(b,oldb);c=safeAdd(c,oldc);d=safeAdd(d,oldd)}return[a,b,c,d]}function bytesToWords(input){if(input.length===0){return[]}const length8=input.length*8;const output=new Uint32Array(getOutputLength(length8));for(let i=0;i<length8;i+=8){output[i>>5]|=(input[i/8]&255)<<i%32}return output}function safeAdd(x,y){const lsw=(x&65535)+(y&65535);const msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}function bitRotateLeft(num,cnt){return num<<cnt|num>>>32-cnt}function md5cmn(q,a,b,x,s,t){return safeAdd(bitRotateLeft(safeAdd(safeAdd(a,q),safeAdd(x,t)),s),b)}function md5ff(a,b,c,d,x,s,t){return md5cmn(b&c|~b&d,a,b,x,s,t)}function md5gg(a,b,c,d,x,s,t){return md5cmn(b&d|c&~d,a,b,x,s,t)}function md5hh(a,b,c,d,x,s,t){return md5cmn(b^c^d,a,b,x,s,t)}function md5ii(a,b,c,d,x,s,t){return md5cmn(c^(b|~d),a,b,x,s,t)}var _default=md5;exports.default=_default},{}],24:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;const randomUUID=typeof crypto!=="undefined"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);var _default={randomUUID:randomUUID};exports.default=_default},{}],25:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _default="00000000-0000-0000-0000-000000000000";exports.default=_default},{}],26:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _validate=_interopRequireDefault(require("./validate.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function parse(uuid){if(!(0,_validate.default)(uuid)){throw TypeError("Invalid UUID")}let v;const arr=new Uint8Array(16);arr[0]=(v=parseInt(uuid.slice(0,8),16))>>>24;arr[1]=v>>>16&255;arr[2]=v>>>8&255;arr[3]=v&255;arr[4]=(v=parseInt(uuid.slice(9,13),16))>>>8;arr[5]=v&255;arr[6]=(v=parseInt(uuid.slice(14,18),16))>>>8;arr[7]=v&255;arr[8]=(v=parseInt(uuid.slice(19,23),16))>>>8;arr[9]=v&255;arr[10]=(v=parseInt(uuid.slice(24,36),16))/1099511627776&255;arr[11]=v/4294967296&255;arr[12]=v>>>24&255;arr[13]=v>>>16&255;arr[14]=v>>>8&255;arr[15]=v&255;return arr}var _default=parse;exports.default=_default},{"./validate.js":36}],27:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _default=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;exports.default=_default},{}],28:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=rng;let getRandomValues;const rnds8=new Uint8Array(16);function rng(){if(!getRandomValues){getRandomValues=typeof crypto!=="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto);if(!getRandomValues){throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported")}}return getRandomValues(rnds8)}},{}],29:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;function f(s,x,y,z){switch(s){case 0:return x&y^~x&z;case 1:return x^y^z;case 2:return x&y^x&z^y&z;case 3:return x^y^z}}function ROTL(x,n){return x<<n|x>>>32-n}function sha1(bytes){const K=[1518500249,1859775393,2400959708,3395469782];const H=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof bytes==="string"){const msg=unescape(encodeURIComponent(bytes));bytes=[];for(let i=0;i<msg.length;++i){bytes.push(msg.charCodeAt(i))}}else if(!Array.isArray(bytes)){bytes=Array.prototype.slice.call(bytes)}bytes.push(128);const l=bytes.length/4+2;const N=Math.ceil(l/16);const M=new Array(N);for(let i=0;i<N;++i){const arr=new Uint32Array(16);for(let j=0;j<16;++j){arr[j]=bytes[i*64+j*4]<<24|bytes[i*64+j*4+1]<<16|bytes[i*64+j*4+2]<<8|bytes[i*64+j*4+3]}M[i]=arr}M[N-1][14]=(bytes.length-1)*8/Math.pow(2,32);M[N-1][14]=Math.floor(M[N-1][14]);M[N-1][15]=(bytes.length-1)*8&4294967295;for(let i=0;i<N;++i){const W=new Uint32Array(80);for(let t=0;t<16;++t){W[t]=M[i][t]}for(let t=16;t<80;++t){W[t]=ROTL(W[t-3]^W[t-8]^W[t-14]^W[t-16],1)}let a=H[0];let b=H[1];let c=H[2];let d=H[3];let e=H[4];for(let t=0;t<80;++t){const s=Math.floor(t/20);const T=ROTL(a,5)+f(s,b,c,d)+e+K[s]+W[t]>>>0;e=d;d=c;c=ROTL(b,30)>>>0;b=a;a=T}H[0]=H[0]+a>>>0;H[1]=H[1]+b>>>0;H[2]=H[2]+c>>>0;H[3]=H[3]+d>>>0;H[4]=H[4]+e>>>0}return[H[0]>>24&255,H[0]>>16&255,H[0]>>8&255,H[0]&255,H[1]>>24&255,H[1]>>16&255,H[1]>>8&255,H[1]&255,H[2]>>24&255,H[2]>>16&255,H[2]>>8&255,H[2]&255,H[3]>>24&255,H[3]>>16&255,H[3]>>8&255,H[3]&255,H[4]>>24&255,H[4]>>16&255,H[4]>>8&255,H[4]&255]}var _default=sha1;exports.default=_default},{}],30:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;exports.unsafeStringify=unsafeStringify;var _validate=_interopRequireDefault(require("./validate.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}const byteToHex=[];for(let i=0;i<256;++i){byteToHex.push((i+256).toString(16).slice(1))}function unsafeStringify(arr,offset=0){return(byteToHex[arr[offset+0]]+byteToHex[arr[offset+1]]+byteToHex[arr[offset+2]]+byteToHex[arr[offset+3]]+"-"+byteToHex[arr[offset+4]]+byteToHex[arr[offset+5]]+"-"+byteToHex[arr[offset+6]]+byteToHex[arr[offset+7]]+"-"+byteToHex[arr[offset+8]]+byteToHex[arr[offset+9]]+"-"+byteToHex[arr[offset+10]]+byteToHex[arr[offset+11]]+byteToHex[arr[offset+12]]+byteToHex[arr[offset+13]]+byteToHex[arr[offset+14]]+byteToHex[arr[offset+15]]).toLowerCase()}function stringify(arr,offset=0){const uuid=unsafeStringify(arr,offset);if(!(0,_validate.default)(uuid)){throw TypeError("Stringified UUID is invalid")}return uuid}var _default=stringify;exports.default=_default},{"./validate.js":36}],31:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _rng=_interopRequireDefault(require("./rng.js"));var _stringify=require("./stringify.js");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}let _nodeId;let _clockseq;let _lastMSecs=0;let _lastNSecs=0;function v1(options,buf,offset){let i=buf&&offset||0;const b=buf||new Array(16);options=options||{};let node=options.node||_nodeId;let clockseq=options.clockseq!==undefined?options.clockseq:_clockseq;if(node==null||clockseq==null){const seedBytes=options.random||(options.rng||_rng.default)();if(node==null){node=_nodeId=[seedBytes[0]|1,seedBytes[1],seedBytes[2],seedBytes[3],seedBytes[4],seedBytes[5]]}if(clockseq==null){clockseq=_clockseq=(seedBytes[6]<<8|seedBytes[7])&16383}}let msecs=options.msecs!==undefined?options.msecs:Date.now();let nsecs=options.nsecs!==undefined?options.nsecs:_lastNSecs+1;const dt=msecs-_lastMSecs+(nsecs-_lastNSecs)/1e4;if(dt<0&&options.clockseq===undefined){clockseq=clockseq+1&16383}if((dt<0||msecs>_lastMSecs)&&options.nsecs===undefined){nsecs=0}if(nsecs>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}_lastMSecs=msecs;_lastNSecs=nsecs;_clockseq=clockseq;msecs+=122192928e5;const tl=((msecs&268435455)*1e4+nsecs)%4294967296;b[i++]=tl>>>24&255;b[i++]=tl>>>16&255;b[i++]=tl>>>8&255;b[i++]=tl&255;const tmh=msecs/4294967296*1e4&268435455;b[i++]=tmh>>>8&255;b[i++]=tmh&255;b[i++]=tmh>>>24&15|16;b[i++]=tmh>>>16&255;b[i++]=clockseq>>>8|128;b[i++]=clockseq&255;for(let n=0;n<6;++n){b[i+n]=node[n]}return buf||(0,_stringify.unsafeStringify)(b)}var _default=v1;exports.default=_default},{"./rng.js":28,"./stringify.js":30}],32:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _v=_interopRequireDefault(require("./v35.js"));var _md=_interopRequireDefault(require("./md5.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}const v3=(0,_v.default)("v3",48,_md.default);var _default=v3;exports.default=_default},{"./md5.js":23,"./v35.js":33}],33:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.URL=exports.DNS=void 0;exports.default=v35;var _stringify=require("./stringify.js");var _parse=_interopRequireDefault(require("./parse.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function stringToBytes(str){str=unescape(encodeURIComponent(str));const bytes=[];for(let i=0;i<str.length;++i){bytes.push(str.charCodeAt(i))}return bytes}const DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8";exports.DNS=DNS;const URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";exports.URL=URL;function v35(name,version,hashfunc){function generateUUID(value,namespace,buf,offset){var _namespace;if(typeof value==="string"){value=stringToBytes(value)}if(typeof namespace==="string"){namespace=(0,_parse.default)(namespace)}if(((_namespace=namespace)===null||_namespace===void 0?void 0:_namespace.length)!==16){throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)")}let bytes=new Uint8Array(16+value.length);bytes.set(namespace);bytes.set(value,namespace.length);bytes=hashfunc(bytes);bytes[6]=bytes[6]&15|version;bytes[8]=bytes[8]&63|128;if(buf){offset=offset||0;for(let i=0;i<16;++i){buf[offset+i]=bytes[i]}return buf}return(0,_stringify.unsafeStringify)(bytes)}try{generateUUID.name=name}catch(err){}generateUUID.DNS=DNS;generateUUID.URL=URL;return generateUUID}},{"./parse.js":26,"./stringify.js":30}],34:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _native=_interopRequireDefault(require("./native.js"));var _rng=_interopRequireDefault(require("./rng.js"));var _stringify=require("./stringify.js");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function v4(options,buf,offset){if(_native.default.randomUUID&&!buf&&!options){return _native.default.randomUUID()}options=options||{};const rnds=options.random||(options.rng||_rng.default)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){offset=offset||0;for(let i=0;i<16;++i){buf[offset+i]=rnds[i]}return buf}return(0,_stringify.unsafeStringify)(rnds)}var _default=v4;exports.default=_default},{"./native.js":24,"./rng.js":28,"./stringify.js":30}],35:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _v=_interopRequireDefault(require("./v35.js"));var _sha=_interopRequireDefault(require("./sha1.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}const v5=(0,_v.default)("v5",80,_sha.default);var _default=v5;exports.default=_default},{"./sha1.js":29,"./v35.js":33}],36:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _regex=_interopRequireDefault(require("./regex.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function validate(uuid){return typeof uuid==="string"&&_regex.default.test(uuid)}var _default=validate;exports.default=_default},{"./regex.js":27}],37:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _validate=_interopRequireDefault(require("./validate.js"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function version(uuid){if(!(0,_validate.default)(uuid)){throw TypeError("Invalid UUID")}return parseInt(uuid.slice(14,15),16)}var _default=version;exports.default=_default},{"./validate.js":36}],38:[function(require,module,exports){module.exports=WildEmitter;function WildEmitter(){}WildEmitter.mixin=function(constructor){var prototype=constructor.prototype||constructor;prototype.isWildEmitter=true;prototype.on=function(event,groupName,fn){this.callbacks=this.callbacks||{};var hasGroup=arguments.length===3,group=hasGroup?arguments[1]:undefined,func=hasGroup?arguments[2]:arguments[1];func._groupName=group;(this.callbacks[event]=this.callbacks[event]||[]).push(func);return this};prototype.once=function(event,groupName,fn){var self=this,hasGroup=arguments.length===3,group=hasGroup?arguments[1]:undefined,func=hasGroup?arguments[2]:arguments[1];function on(){self.off(event,on);func.apply(this,arguments)}this.on(event,group,on);return this};prototype.releaseGroup=function(groupName){this.callbacks=this.callbacks||{};var item,i,len,handlers;for(item in this.callbacks){handlers=this.callbacks[item];for(i=0,len=handlers.length;i<len;i++){if(handlers[i]._groupName===groupName){handlers.splice(i,1);i--;len--}}}return this};prototype.off=function(event,fn){this.callbacks=this.callbacks||{};var callbacks=this.callbacks[event],i;if(!callbacks)return this;if(arguments.length===1){delete this.callbacks[event];return this}i=callbacks.indexOf(fn);if(i!==-1){callbacks.splice(i,1);if(callbacks.length===0){delete this.callbacks[event]}}return this};prototype.emit=function(event){this.callbacks=this.callbacks||{};var args=[].slice.call(arguments,1),callbacks=this.callbacks[event],specialCallbacks=this.getWildcardCallbacks(event),i,len,item,listeners;if(callbacks){listeners=callbacks.slice();for(i=0,len=listeners.length;i<len;++i){if(!listeners[i]){break}listeners[i].apply(this,args)}}if(specialCallbacks){len=specialCallbacks.length;listeners=specialCallbacks.slice();for(i=0,len=listeners.length;i<len;++i){if(!listeners[i]){break}listeners[i].apply(this,[event].concat(args))}}return this};prototype.getWildcardCallbacks=function(eventName){this.callbacks=this.callbacks||{};var item,split,result=[];for(item in this.callbacks){split=item.split("*");if(item==="*"||split.length===2&&eventName.slice(0,split[0].length)===split[0]){result=result.concat(this.callbacks[item])}}return result}};WildEmitter.mixin(WildEmitter)},{}],39:[function(require,module,exports){(function(exports){"use strict";function EventEmitter(){}var proto=EventEmitter.prototype;var originalGlobalValue=exports.EventEmitter;function indexOfListener(listeners,listener){var i=listeners.length;while(i--){if(listeners[i].listener===listener){return i}}return-1}function alias(name){return function aliasClosure(){return this[name].apply(this,arguments)}}proto.getListeners=function getListeners(evt){var events=this._getEvents();var response;var key;if(evt instanceof RegExp){response={};for(key in events){if(events.hasOwnProperty(key)&&evt.test(key)){response[key]=events[key]}}}else{response=events[evt]||(events[evt]=[])}return response};proto.flattenListeners=function flattenListeners(listeners){var flatListeners=[];var i;for(i=0;i<listeners.length;i+=1){flatListeners.push(listeners[i].listener)}return flatListeners};proto.getListenersAsObject=function getListenersAsObject(evt){var listeners=this.getListeners(evt);var response;if(listeners instanceof Array){response={};response[evt]=listeners}return response||listeners};function isValidListener(listener){if(typeof listener==="function"||listener instanceof RegExp){return true}else if(listener&&typeof listener==="object"){return isValidListener(listener.listener)}else{return false}}proto.addListener=function addListener(evt,listener){if(!isValidListener(listener)){throw new TypeError("listener must be a function")}var listeners=this.getListenersAsObject(evt);var listenerIsWrapped=typeof listener==="object";var key;for(key in listeners){if(listeners.hasOwnProperty(key)&&indexOfListener(listeners[key],listener)===-1){listeners[key].push(listenerIsWrapped?listener:{listener:listener,once:false})}}return this};proto.on=alias("addListener");proto.addOnceListener=function addOnceListener(evt,listener){return this.addListener(evt,{listener:listener,once:true})};proto.once=alias("addOnceListener");proto.defineEvent=function defineEvent(evt){this.getListeners(evt);return this};proto.defineEvents=function defineEvents(evts){for(var i=0;i<evts.length;i+=1){this.defineEvent(evts[i])}return this};proto.removeListener=function removeListener(evt,listener){var listeners=this.getListenersAsObject(evt);var index;var key;for(key in listeners){if(listeners.hasOwnProperty(key)){index=indexOfListener(listeners[key],listener);if(index!==-1){listeners[key].splice(index,1)}}}return this};proto.off=alias("removeListener");proto.addListeners=function addListeners(evt,listeners){return this.manipulateListeners(false,evt,listeners)};proto.removeListeners=function removeListeners(evt,listeners){return this.manipulateListeners(true,evt,listeners)};proto.manipulateListeners=function manipulateListeners(remove,evt,listeners){var i;var value;var single=remove?this.removeListener:this.addListener;var multiple=remove?this.removeListeners:this.addListeners;if(typeof evt==="object"&&!(evt instanceof RegExp)){for(i in evt){if(evt.hasOwnProperty(i)&&(value=evt[i])){if(typeof value==="function"){single.call(this,i,value)}else{multiple.call(this,i,value)}}}}else{i=listeners.length;while(i--){single.call(this,evt,listeners[i])}}return this};proto.removeEvent=function removeEvent(evt){var type=typeof evt;var events=this._getEvents();var key;if(type==="string"){delete events[evt]}else if(evt instanceof RegExp){for(key in events){if(events.hasOwnProperty(key)&&evt.test(key)){delete events[key]}}}else{delete this._events}return this};proto.removeAllListeners=alias("removeEvent");proto.emitEvent=function emitEvent(evt,args){var listenersMap=this.getListenersAsObject(evt);var listeners;var listener;var i;var key;var response;for(key in listenersMap){if(listenersMap.hasOwnProperty(key)){listeners=listenersMap[key].slice(0);for(i=0;i<listeners.length;i++){listener=listeners[i];if(listener.once===true){this.removeListener(evt,listener.listener)}response=listener.listener.apply(this,args||[]);if(response===this._getOnceReturnValue()){this.removeListener(evt,listener.listener)}}}}return this};proto.trigger=alias("emitEvent");proto.emit=function emit(evt){var args=Array.prototype.slice.call(arguments,1);return this.emitEvent(evt,args)};proto.setOnceReturnValue=function setOnceReturnValue(value){this._onceReturnValue=value;return this};proto._getOnceReturnValue=function _getOnceReturnValue(){if(this.hasOwnProperty("_onceReturnValue")){return this._onceReturnValue}else{return true}};proto._getEvents=function _getEvents(){return this._events||(this._events={})};EventEmitter.noConflict=function noConflict(){exports.EventEmitter=originalGlobalValue;return EventEmitter};if(typeof define==="function"&&define.amd){define((function(){return EventEmitter}))}else if(typeof module==="object"&&module.exports){module.exports=EventEmitter}else{exports.EventEmitter=EventEmitter}})(typeof window!=="undefined"?window:this||{})},{}],40:[function(require,module,exports){module.exports={author:"OpenVidu",dependencies:{freeice:"2.2.2",hark:"1.2.3",jsnlog:"2.30.0",mime:"3.0.0",platform:"1.3.6",semver:"7.3.8",uuid:"9.0.0","wolfy87-eventemitter":"5.2.9",events:"3.3.0",inherits:"2.0.4"},description:"OpenVidu Browser",devDependencies:{"@types/node":"18.11.9","@types/platform":"1.3.4",browserify:"17.0.0",grunt:"1.5.3","grunt-cli":"1.4.3","grunt-contrib-copy":"1.0.0","grunt-contrib-sass":"2.0.0","grunt-contrib-uglify":"5.2.2","grunt-contrib-watch":"1.1.0","grunt-postcss":"0.9.0","grunt-string-replace":"1.3.3","grunt-ts":"6.0.0-beta.22",terser:"5.15.1",tsify:"5.0.4",tslint:"6.1.3",typedoc:"0.23.21",typescript:"4.9.3"},license:"Apache-2.0",main:"lib/index.js",name:"openvidu-browser",repository:{type:"git",url:"git://github.com/OpenVidu/openvidu"},scripts:{browserify:"VERSION=${VERSION:-dev}; mkdir -p static/js/ && cd src && ../node_modules/browserify/bin/cmd.js Main.ts -p [ tsify ] --exclude kurento-browser-extensions --debug -o ../static/js/openvidu-browser-$VERSION.js -v","browserify-prod":"VERSION=${VERSION:-dev}; mkdir -p static/js/ && cd src && ../node_modules/browserify/bin/cmd.js --debug Main.ts -p [ tsify ] --exclude kurento-browser-extensions | ../node_modules/terser/bin/terser --source-map content=inline --output ../static/js/openvidu-browser-$VERSION.min.js",build:"cd src/OpenVidu && ./../../node_modules/typescript/bin/tsc && cd ../.. && ./node_modules/typescript/bin/tsc --declaration src/index.ts --outDir ./lib --sourceMap --target es5 --lib dom,es5,es2015.promise,scripthost && rm -rf ./ts4.4 && mkdir -p ./ts4.4/lib && cp -r ./lib ./ts4.4 && find ./ts4.4/lib -type f ! -iname '*.d.ts' -delete && ./config/replace_for_ts44.sh",docs:"./generate-docs.sh"},types:"lib/index.d.ts",typesVersions:{"<4.4":{"*":["ts4.4/*"]}},version:"2.26.0"}},{}],41:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var OpenVidu_1=require("./OpenVidu/OpenVidu");var jsnlog_1=require("jsnlog");if(typeof globalThis!=="undefined"){globalThis["OpenVidu"]=OpenVidu_1.OpenVidu}jsnlog_1.JL.setOptions({enabled:false})},{"./OpenVidu/OpenVidu":46,jsnlog:7}],42:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Connection=void 0;var Stream_1=require("./Stream");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var ExceptionEvent_1=require("../OpenViduInternal/Events/ExceptionEvent");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var Connection=function(){function Connection(session,connectionOptions){this.session=session;this.disposed=false;var msg="'Connection' created ";if(!!connectionOptions.role){this.localOptions=connectionOptions;this.connectionId=this.localOptions.id;this.creationTime=this.localOptions.createdAt;this.data=this.localOptions.metadata;this.rpcSessionId=this.localOptions.sessionId;this.role=this.localOptions.role;this.record=this.localOptions.record;msg+="(local)"}else{this.remoteOptions=connectionOptions;this.connectionId=this.remoteOptions.id;this.creationTime=this.remoteOptions.createdAt;if(this.remoteOptions.metadata){this.data=this.remoteOptions.metadata}if(this.remoteOptions.streams){this.initRemoteStreams(this.remoteOptions.streams)}msg+="(remote) with 'connectionId' ["+this.remoteOptions.id+"]"}logger.info(msg)}Connection.prototype.sendIceCandidate=function(candidate){var _this=this;if(!this.disposed){logger.debug((!!this.stream.outboundStreamOpts?"Local":"Remote")+"candidate for"+this.connectionId,candidate);this.session.openvidu.sendRequest("onIceCandidate",{endpointName:this.connectionId,candidate:candidate.candidate,sdpMid:candidate.sdpMid,sdpMLineIndex:candidate.sdpMLineIndex},(function(error,response){if(error){logger.error("Error sending ICE candidate: "+JSON.stringify(error));_this.session.emitEvent("exception",[new ExceptionEvent_1.ExceptionEvent(_this.session,ExceptionEvent_1.ExceptionEventName.ICE_CANDIDATE_ERROR,_this.session,"There was an unexpected error on the server-side processing an ICE candidate generated and sent by the client-side",error)])}}))}else{logger.warn("Connection ".concat(this.connectionId," disposed when trying to send an ICE candidate. ICE candidate not sent"))}};Connection.prototype.initRemoteStreams=function(options){var _this=this;options.forEach((function(opts){var streamOptions={id:opts.id,createdAt:opts.createdAt,connection:_this,hasAudio:opts.hasAudio,hasVideo:opts.hasVideo,audioActive:opts.audioActive,videoActive:opts.videoActive,typeOfVideo:opts.typeOfVideo,frameRate:opts.frameRate,videoDimensions:!!opts.videoDimensions?JSON.parse(opts.videoDimensions):undefined,filter:!!opts.filter?opts.filter:undefined};var stream=new Stream_1.Stream(_this.session,streamOptions);_this.addStream(stream)}));logger.info("Remote 'Connection' with 'connectionId' ["+this.connectionId+"] is now configured for receiving Streams with options: ",this.stream.inboundStreamOpts)};Connection.prototype.addStream=function(stream){stream.connection=this;this.stream=stream};Connection.prototype.removeStream=function(){delete this.stream};Connection.prototype.dispose=function(){this.disposed=true;this.removeStream()};return Connection}();exports.Connection=Connection},{"../OpenViduInternal/Events/ExceptionEvent":59,"../OpenViduInternal/Logger/OpenViduLogger":81,"./Stream":49}],43:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.EventDispatcher=void 0;var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var EventEmitter=require("wolfy87-eventemitter");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var EventDispatcher=function(){function EventDispatcher(){this.userHandlerArrowHandler=new WeakMap;this.ee=new EventEmitter}EventDispatcher.prototype.onAux=function(type,message,handler){var arrowHandler=function(event){if(event){logger.debug(message,event)}else{logger.debug(message)}handler(event)};this.userHandlerArrowHandler.set(handler,arrowHandler);this.ee.on(type,arrowHandler);return this};EventDispatcher.prototype.onceAux=function(type,message,handler){var _this=this;var arrowHandler=function(event){if(event){logger.debug(message,event)}else{logger.debug(message)}handler(event);_this.userHandlerArrowHandler.delete(handler)};this.userHandlerArrowHandler.set(handler,arrowHandler);this.ee.once(type,arrowHandler);return this};EventDispatcher.prototype.offAux=function(type,handler){if(!handler){this.ee.removeAllListeners(type)}else{var arrowHandler=this.userHandlerArrowHandler.get(handler);if(!!arrowHandler){this.ee.off(type,arrowHandler)}this.userHandlerArrowHandler.delete(handler)}return this};return EventDispatcher}();exports.EventDispatcher=EventDispatcher},{"../OpenViduInternal/Logger/OpenViduLogger":81,"wolfy87-eventemitter":39}],44:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Filter=void 0;var StreamPropertyChangedEvent_1=require("../OpenViduInternal/Events/StreamPropertyChangedEvent");var OpenViduError_1=require("../OpenViduInternal/Enums/OpenViduError");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var Filter=function(){function Filter(type,options){this.handlers=new Map;this.type=type;this.options=options}Filter.prototype.execMethod=function(method,params){var _this=this;return new Promise((function(resolve,reject){var _a;logger.info("Executing filter method to stream "+_this.stream.streamId);var finalParams;var successExecMethod=function(triggerEvent){logger.info("Filter method successfully executed on Stream "+_this.stream.streamId);var oldValue=Object.assign({},_this.stream.filter);_this.stream.filter.lastExecMethod={method:method,params:finalParams};if(triggerEvent){_this.stream.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.stream.session,_this.stream,"filter",_this.stream.filter,oldValue,"execFilterMethod")]);_this.stream.streamManager.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.stream.streamManager,_this.stream,"filter",_this.stream.filter,oldValue,"execFilterMethod")])}return resolve()};if(_this.type.startsWith("VB:")){if(typeof params==="string"){try{params=JSON.parse(params)}catch(error){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,"Wrong params syntax: "+error))}}finalParams=params;if(method==="update"){if(!((_a=_this.stream.virtualBackgroundSinkElements)===null||_a===void 0?void 0:_a.VB)){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,"There is no Virtual Background filter applied"))}else{_this.stream.virtualBackgroundSinkElements.VB.updateValues(params).then((function(){return successExecMethod(false)})).catch((function(error){if(error.name===OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR){return reject(new OpenViduError_1.OpenViduError(error.name,error.message))}else{return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,"Error updating values on Virtual Background filter: "+error))}}))}}else{return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,'Unknown Virtual Background method "'.concat(method,'"')))}}else{var stringParams=void 0;if(typeof params!=="string"){try{stringParams=JSON.stringify(params)}catch(error){var errorMsg="'params' property must be a JSON formatted object";logger.error(errorMsg);return reject(errorMsg)}}else{stringParams=params}finalParams=stringParams;_this.stream.session.openvidu.sendRequest("execFilterMethod",{streamId:_this.stream.streamId,method:method,params:stringParams},(function(error,response){if(error){logger.error("Error executing filter method for Stream "+_this.stream.streamId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to execute a filter method"))}else{return reject(error)}}else{return successExecMethod(true)}}))}}))};Filter.prototype.addEventListener=function(eventType,handler){var _this=this;return new Promise((function(resolve,reject){logger.info("Adding filter event listener to event "+eventType+" to stream "+_this.stream.streamId);_this.stream.session.openvidu.sendRequest("addFilterEventListener",{streamId:_this.stream.streamId,eventType:eventType},(function(error,response){if(error){logger.error("Error adding filter event listener to event "+eventType+"for Stream "+_this.stream.streamId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to add a filter event listener"))}else{return reject(error)}}else{_this.handlers.set(eventType,handler);logger.info("Filter event listener to event "+eventType+" successfully applied on Stream "+_this.stream.streamId);return resolve()}}))}))};Filter.prototype.removeEventListener=function(eventType){var _this=this;return new Promise((function(resolve,reject){logger.info("Removing filter event listener to event "+eventType+" to stream "+_this.stream.streamId);_this.stream.session.openvidu.sendRequest("removeFilterEventListener",{streamId:_this.stream.streamId,eventType:eventType},(function(error,response){if(error){logger.error("Error removing filter event listener to event "+eventType+"for Stream "+_this.stream.streamId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to add a filter event listener"))}else{return reject(error)}}else{_this.handlers.delete(eventType);logger.info("Filter event listener to event "+eventType+" successfully removed on Stream "+_this.stream.streamId);return resolve()}}))}))};return Filter}();exports.Filter=Filter},{"../OpenViduInternal/Enums/OpenViduError":53,"../OpenViduInternal/Events/StreamPropertyChangedEvent":69,"../OpenViduInternal/Logger/OpenViduLogger":81}],45:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalRecorder=void 0;var LocalRecorderState_1=require("../OpenViduInternal/Enums/LocalRecorderState");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var Platform_1=require("../OpenViduInternal/Utils/Platform");var Mime=require("mime/lite");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var LocalRecorder=function(){function LocalRecorder(stream){this.stream=stream;this.chunks=[];platform=Platform_1.PlatformUtils.getInstance();this.connectionId=!!this.stream.connection?this.stream.connection.connectionId:"default-connection";this.id=this.stream.streamId+"_"+this.connectionId+"_localrecord";this.state=LocalRecorderState_1.LocalRecorderState.READY}LocalRecorder.prototype.record=function(options){var _this=this;return new Promise((function(resolve,reject){try{if(typeof options==="string"||options instanceof String){return reject("When calling LocalRecorder.record(options) parameter 'options' cannot be a string. Must be an object like { mimeType: \"".concat(options,'" }'))}if(typeof MediaRecorder==="undefined"){logger.error("MediaRecorder not supported on your device. See compatibility in https://caniuse.com/#search=MediaRecorder");throw Error("MediaRecorder not supported on your device. See compatibility in https://caniuse.com/#search=MediaRecorder")}if(_this.state!==LocalRecorderState_1.LocalRecorderState.READY){throw Error("'LocalRecord.record()' needs 'LocalRecord.state' to be 'READY' (current value: '"+_this.state+"'). Call 'LocalRecorder.clean()' or init a new LocalRecorder before")}logger.log("Starting local recording of stream '"+_this.stream.streamId+"' of connection '"+_this.connectionId+"'");if(!options){options={mimeType:"video/webm"}}else if(!options.mimeType){options.mimeType="video/webm"}_this.mediaRecorder=new MediaRecorder(_this.stream.getMediaStream(),options);_this.mediaRecorder.start()}catch(err){return reject(err)}_this.mediaRecorder.ondataavailable=function(e){if(e.data.size>0){_this.chunks.push(e.data)}};_this.mediaRecorder.onerror=function(e){logger.error("MediaRecorder error: ",e)};_this.mediaRecorder.onstart=function(){logger.log("MediaRecorder started (state="+_this.mediaRecorder.state+")")};_this.mediaRecorder.onstop=function(){_this.onStopDefault()};_this.mediaRecorder.onpause=function(){logger.log("MediaRecorder paused (state="+_this.mediaRecorder.state+")")};_this.mediaRecorder.onresume=function(){logger.log("MediaRecorder resumed (state="+_this.mediaRecorder.state+")")};_this.state=LocalRecorderState_1.LocalRecorderState.RECORDING;return resolve()}))};LocalRecorder.prototype.stop=function(){var _this=this;return new Promise((function(resolve,reject){try{if(_this.state===LocalRecorderState_1.LocalRecorderState.READY||_this.state===LocalRecorderState_1.LocalRecorderState.FINISHED){throw Error("'LocalRecord.stop()' needs 'LocalRecord.state' to be 'RECORDING' or 'PAUSED' (current value: '"+_this.state+"'). Call 'LocalRecorder.start()' before")}_this.mediaRecorder.onstop=function(){_this.onStopDefault();return resolve()};_this.mediaRecorder.stop()}catch(e){return reject(e)}}))};LocalRecorder.prototype.pause=function(){var _this=this;return new Promise((function(resolve,reject){try{if(_this.state!==LocalRecorderState_1.LocalRecorderState.RECORDING){return reject(Error("'LocalRecord.pause()' needs 'LocalRecord.state' to be 'RECORDING' (current value: '"+_this.state+"'). Call 'LocalRecorder.start()' or 'LocalRecorder.resume()' before"))}_this.mediaRecorder.pause();_this.state=LocalRecorderState_1.LocalRecorderState.PAUSED;return resolve()}catch(error){return reject(error)}}))};LocalRecorder.prototype.resume=function(){var _this=this;return new Promise((function(resolve,reject){try{if(_this.state!==LocalRecorderState_1.LocalRecorderState.PAUSED){throw Error("'LocalRecord.resume()' needs 'LocalRecord.state' to be 'PAUSED' (current value: '"+_this.state+"'). Call 'LocalRecorder.pause()' before")}_this.mediaRecorder.resume();_this.state=LocalRecorderState_1.LocalRecorderState.RECORDING;return resolve()}catch(error){return reject(error)}}))};LocalRecorder.prototype.preview=function(parentElement){if(this.state!==LocalRecorderState_1.LocalRecorderState.FINISHED){throw Error("'LocalRecord.preview()' needs 'LocalRecord.state' to be 'FINISHED' (current value: '"+this.state+"'). Call 'LocalRecorder.stop()' before")}this.videoPreview=document.createElement("video");this.videoPreview.id=this.id;this.videoPreview.autoplay=true;if(platform.isSafariBrowser()){this.videoPreview.playsInline=true}if(typeof parentElement==="string"){var parentElementDom=document.getElementById(parentElement);if(parentElementDom){this.videoPreview=parentElementDom.appendChild(this.videoPreview)}}else{this.videoPreview=parentElement.appendChild(this.videoPreview)}this.videoPreview.src=this.videoPreviewSrc;return this.videoPreview};LocalRecorder.prototype.clean=function(){var _this=this;var f=function(){delete _this.blob;_this.chunks=[];_this.state=LocalRecorderState_1.LocalRecorderState.READY};if(this.state===LocalRecorderState_1.LocalRecorderState.RECORDING||this.state===LocalRecorderState_1.LocalRecorderState.PAUSED){this.stop().then((function(){return f()})).catch((function(){return f()}))}else{f()}};LocalRecorder.prototype.download=function(){if(this.state!==LocalRecorderState_1.LocalRecorderState.FINISHED){throw Error("'LocalRecord.download()' needs 'LocalRecord.state' to be 'FINISHED' (current value: '"+this.state+"'). Call 'LocalRecorder.stop()' before")}else{var a=document.createElement("a");a.style.display="none";document.body.appendChild(a);var url=globalThis.URL.createObjectURL(this.blob);a.href=url;a.download=this.id+"."+Mime.getExtension(this.blob.type);a.click();globalThis.URL.revokeObjectURL(url);document.body.removeChild(a)}};LocalRecorder.prototype.getBlob=function(){if(this.state!==LocalRecorderState_1.LocalRecorderState.FINISHED){throw Error("Call 'LocalRecord.stop()' before getting Blob file")}else{return this.blob}};LocalRecorder.prototype.uploadAsBinary=function(endpoint,headers){var _this=this;return new Promise((function(resolve,reject){if(_this.state!==LocalRecorderState_1.LocalRecorderState.FINISHED){return reject(Error("'LocalRecord.uploadAsBinary()' needs 'LocalRecord.state' to be 'FINISHED' (current value: '"+_this.state+"'). Call 'LocalRecorder.stop()' before"))}else{var http_1=new XMLHttpRequest;http_1.open("POST",endpoint,true);if(typeof headers==="object"){for(var _i=0,_a=Object.keys(headers);_i<_a.length;_i++){var key=_a[_i];http_1.setRequestHeader(key,headers[key])}}http_1.onreadystatechange=function(){if(http_1.readyState===4){if(http_1.status.toString().charAt(0)==="2"){return resolve(http_1.responseText)}else{return reject(http_1.status)}}};http_1.send(_this.blob)}}))};LocalRecorder.prototype.uploadAsMultipartfile=function(endpoint,headers){var _this=this;return new Promise((function(resolve,reject){if(_this.state!==LocalRecorderState_1.LocalRecorderState.FINISHED){return reject(Error("'LocalRecord.uploadAsMultipartfile()' needs 'LocalRecord.state' to be 'FINISHED' (current value: '"+_this.state+"'). Call 'LocalRecorder.stop()' before"))}else{var http_2=new XMLHttpRequest;http_2.open("POST",endpoint,true);if(typeof headers==="object"){for(var _i=0,_a=Object.keys(headers);_i<_a.length;_i++){var key=_a[_i];http_2.setRequestHeader(key,headers[key])}}var sendable=new FormData;sendable.append("file",_this.blob,_this.id+"."+Mime.getExtension(_this.blob.type));http_2.onreadystatechange=function(){if(http_2.readyState===4){if(http_2.status.toString().charAt(0)==="2"){return resolve(http_2.responseText)}else{return reject(http_2.status)}}};http_2.send(sendable)}}))};LocalRecorder.prototype.onStopDefault=function(){logger.log("MediaRecorder stopped (state="+this.mediaRecorder.state+")");this.blob=new Blob(this.chunks,{type:this.mediaRecorder.mimeType});this.chunks=[];this.videoPreviewSrc=globalThis.URL.createObjectURL(this.blob);this.state=LocalRecorderState_1.LocalRecorderState.FINISHED};return LocalRecorder}();exports.LocalRecorder=LocalRecorder},{"../OpenViduInternal/Enums/LocalRecorderState":52,"../OpenViduInternal/Logger/OpenViduLogger":81,"../OpenViduInternal/Utils/Platform":85,"mime/lite":9}],46:[function(require,module,exports){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};Object.defineProperty(exports,"__esModule",{value:true});exports.OpenVidu=void 0;var LocalRecorder_1=require("./LocalRecorder");var Publisher_1=require("./Publisher");var Session_1=require("./Session");var SessionDisconnectedEvent_1=require("../OpenViduInternal/Events/SessionDisconnectedEvent");var StreamPropertyChangedEvent_1=require("../OpenViduInternal/Events/StreamPropertyChangedEvent");var OpenViduError_1=require("../OpenViduInternal/Enums/OpenViduError");var VideoInsertMode_1=require("../OpenViduInternal/Enums/VideoInsertMode");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var Platform_1=require("../OpenViduInternal/Utils/Platform");var screenSharingAuto=require("../OpenViduInternal/ScreenSharing/Screen-Capturing-Auto");var screenSharing=require("../OpenViduInternal/ScreenSharing/Screen-Capturing");var OpenViduLoggerConfiguration_1=require("../OpenViduInternal/Logger/OpenViduLoggerConfiguration");var EventEmitter=require("wolfy87-eventemitter");var RpcBuilder=require("../OpenViduInternal/KurentoUtils/kurento-jsonrpc");var packageJson=require("../../package.json");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var OpenVidu=function(){function OpenVidu(){var _this=this;this.masterNodeHasCrashed=false;this.publishers=[];this.secret="";this.recorder=false;this.stt=false;this.life=-1;this.advancedConfiguration={};this.webrtcStatsInterval=-1;this.sendBrowserLogs=OpenViduLoggerConfiguration_1.OpenViduLoggerConfiguration.disabled;this.isAtLeastPro=false;this.isEnterprise=false;this.ee=new EventEmitter;platform=Platform_1.PlatformUtils.getInstance();this.libraryVersion=packageJson.version;logger.info("OpenVidu initialized");logger.info("Platform detected: "+platform.getDescription());logger.info("openvidu-browser version: "+this.libraryVersion);if(platform.isMobileDevice()||platform.isReactNative()){this.onOrientationChanged((function(){_this.publishers.forEach((function(publisher){if(publisher.stream.isLocalStreamPublished&&!!publisher.stream&&!!publisher.stream.hasVideo){_this.sendNewVideoDimensionsIfRequired(publisher,"deviceRotated",75,10)}}))}))}}OpenVidu.prototype.initSession=function(){this.session=new Session_1.Session(this);return this.session};OpenVidu.prototype.initPublisher=function(targetElement,param2,param3){var properties;if(!!param2&&typeof param2!=="function"){properties=param2;properties={audioSource:typeof properties.audioSource!=="undefined"?properties.audioSource:undefined,frameRate:typeof MediaStreamTrack!=="undefined"&&properties.videoSource instanceof MediaStreamTrack?undefined:typeof properties.frameRate!=="undefined"?properties.frameRate:undefined,insertMode:typeof properties.insertMode!=="undefined"?typeof properties.insertMode==="string"?VideoInsertMode_1.VideoInsertMode[properties.insertMode]:properties.insertMode:VideoInsertMode_1.VideoInsertMode.APPEND,mirror:typeof properties.mirror!=="undefined"?properties.mirror:true,publishAudio:typeof properties.publishAudio!=="undefined"?properties.publishAudio:true,publishVideo:typeof properties.publishVideo!=="undefined"?properties.publishVideo:true,resolution:typeof MediaStreamTrack!=="undefined"&&properties.videoSource instanceof MediaStreamTrack?undefined:typeof properties.resolution!=="undefined"?properties.resolution:"640x480",videoSource:typeof properties.videoSource!=="undefined"?properties.videoSource:undefined,videoSimulcast:properties.videoSimulcast,filter:properties.filter}}else{properties={insertMode:VideoInsertMode_1.VideoInsertMode.APPEND,mirror:true,publishAudio:true,publishVideo:true,resolution:"640x480"}}var publisher=new Publisher_1.Publisher(targetElement,properties,this);var completionHandler;if(!!param2&&typeof param2==="function"){completionHandler=param2}else if(!!param3){completionHandler=param3}publisher.initialize().then((function(){if(completionHandler!==undefined){completionHandler(undefined)}publisher.emitEvent("accessAllowed",[])})).catch((function(error){if(completionHandler!==undefined){completionHandler(error)}publisher.emitEvent("accessDenied",[error])}));this.publishers.push(publisher);return publisher};OpenVidu.prototype.initPublisherAsync=function(targetElement,properties){var _this=this;return new Promise((function(resolve,reject){var publisher;var callback=function(error){if(!!error){return reject(error)}else{return resolve(publisher)}};if(!!properties){publisher=_this.initPublisher(targetElement,properties,callback)}else{publisher=_this.initPublisher(targetElement,callback)}}))};OpenVidu.prototype.initLocalRecorder=function(stream){return new LocalRecorder_1.LocalRecorder(stream)};OpenVidu.prototype.checkSystemRequirements=function(){if(platform.isIPhoneOrIPad()){return platform.isIOSWithSafari()||platform.isChromeMobileBrowser()||platform.isFirefoxMobileBrowser()||platform.isOperaMobileBrowser()||platform.isEdgeMobileBrowser()||platform.isIonicIos()}return platform.isChromeBrowser()||platform.isChromeMobileBrowser()||platform.isFirefoxBrowser()||platform.isFirefoxMobileBrowser()||platform.isOperaBrowser()||platform.isOperaMobileBrowser()||platform.isEdgeBrowser()||platform.isEdgeMobileBrowser()||platform.isSamsungBrowser()||platform.isSafariBrowser()||platform.isAndroidBrowser()||platform.isElectron()||platform.isNodeJs()};OpenVidu.prototype.checkScreenSharingCapabilities=function(){return platform.canScreenShare()};OpenVidu.prototype.getDevices=function(){return new Promise((function(resolve,reject){navigator.mediaDevices.enumerateDevices().then((function(deviceInfos){var _a;var devices=[];if(platform.isIonicAndroid()&&typeof cordova!="undefined"&&((_a=cordova===null||cordova===void 0?void 0:cordova.plugins)===null||_a===void 0?void 0:_a.EnumerateDevicesPlugin)){cordova.plugins.EnumerateDevicesPlugin.getEnumerateDevices().then((function(pluginDevices){var pluginAudioDevices=[];var videoDevices=[];var audioDevices=[];pluginAudioDevices=pluginDevices.filter((function(device){return device.kind==="audioinput"}));videoDevices=deviceInfos.filter((function(device){return device.kind==="videoinput"}));audioDevices=deviceInfos.filter((function(device){return device.kind==="audioinput"}));videoDevices.forEach((function(deviceInfo,index){if(!deviceInfo.label){var label="";if(index===0){label="Front Camera"}else if(index===1){label="Back Camera"}else{label="Unknown Camera"}devices.push({kind:deviceInfo.kind,deviceId:deviceInfo.deviceId,label:label})}else{devices.push({kind:deviceInfo.kind,deviceId:deviceInfo.deviceId,label:deviceInfo.label})}}));audioDevices.forEach((function(deviceInfo,index){if(!deviceInfo.label){var label="";switch(index){case 0:label="Default";break;case 1:var defaultMatch=pluginAudioDevices.filter((function(d){return d.label.includes("Built")}))[0];label=defaultMatch?defaultMatch.label:"Built-in Microphone";break;case 2:var wiredMatch=pluginAudioDevices.filter((function(d){return d.label.includes("Wired")}))[0];if(wiredMatch){label=wiredMatch.label}else{label="Headset earpiece"}break;case 3:var wirelessMatch=pluginAudioDevices.filter((function(d){return d.label.includes("Bluetooth")}))[0];label=wirelessMatch?wirelessMatch.label:"Wireless";break;default:label="Unknown Microphone";break}devices.push({kind:deviceInfo.kind,deviceId:deviceInfo.deviceId,label:label})}else{devices.push({kind:deviceInfo.kind,deviceId:deviceInfo.deviceId,label:deviceInfo.label})}}));return resolve(devices)}))}else{deviceInfos.forEach((function(deviceInfo){if(deviceInfo.kind==="audioinput"||deviceInfo.kind==="videoinput"){devices.push({kind:deviceInfo.kind,deviceId:deviceInfo.deviceId,label:deviceInfo.label})}}));return resolve(devices)}})).catch((function(error){logger.error("Error getting devices",error);return reject(error)}))}))};OpenVidu.prototype.getUserMedia=function(options){var _this=this;return new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var askForAudioStreamOnly,myConstraints,mustAskForAudioTrackLater,mediaStream,error_1,errorName,errorMessage,constraintsAux,mediaStream,error_2,errorName,errorMessage,error_3;var _this=this;var _a,_b;return __generator(this,(function(_c){switch(_c.label){case 0:askForAudioStreamOnly=function(previousMediaStream,constraints){return __awaiter(_this,void 0,void 0,(function(){var definedAudioConstraint,constraintsAux,audioOnlyStream,error_4;return __generator(this,(function(_a){switch(_a.label){case 0:definedAudioConstraint=constraints.audio===undefined?true:constraints.audio;constraintsAux={audio:definedAudioConstraint,video:false};_a.label=1;case 1:_a.trys.push([1,3,,4]);return[4,navigator.mediaDevices.getUserMedia(constraintsAux)];case 2:audioOnlyStream=_a.sent();previousMediaStream.addTrack(audioOnlyStream.getAudioTracks()[0]);return[2,resolve(previousMediaStream)];case 3:error_4=_a.sent();previousMediaStream.getAudioTracks().forEach((function(track){track.stop()}));previousMediaStream.getVideoTracks().forEach((function(track){track.stop()}));return[2,reject(this.generateAudioDeviceError(error_4,constraintsAux))];case 4:return[2]}}))}))};_c.label=1;case 1:_c.trys.push([1,20,,21]);return[4,this.generateMediaConstraints(options)];case 2:myConstraints=_c.sent();if(!(!!myConstraints.videoTrack&&!!myConstraints.audioTrack||!!myConstraints.audioTrack&&((_a=myConstraints.constraints)===null||_a===void 0?void 0:_a.video)===false||!!myConstraints.videoTrack&&((_b=myConstraints.constraints)===null||_b===void 0?void 0:_b.audio)===false))return[3,3];return[2,resolve(this.addAlreadyProvidedTracks(myConstraints,new MediaStream))];case 3:if(!!myConstraints.videoTrack){delete myConstraints.constraints.video}if(!!myConstraints.audioTrack){delete myConstraints.constraints.audio}mustAskForAudioTrackLater=false;if(!(typeof options.videoSource==="string"))return[3,12];if(!(options.videoSource==="screen"||options.videoSource==="window"||platform.isElectron()&&options.videoSource.startsWith("screen:")))return[3,12];mustAskForAudioTrackLater=!myConstraints.audioTrack&&options.audioSource!==null&&options.audioSource!==false;if(!(navigator.mediaDevices["getDisplayMedia"]&&!platform.isElectron()))return[3,11];_c.label=4;case 4:_c.trys.push([4,9,,10]);return[4,navigator.mediaDevices["getDisplayMedia"]({video:true})];case 5:mediaStream=_c.sent();this.addAlreadyProvidedTracks(myConstraints,mediaStream);if(!mustAskForAudioTrackLater)return[3,7];return[4,askForAudioStreamOnly(mediaStream,myConstraints.constraints)];case 6:_c.sent();return[2];case 7:return[2,resolve(mediaStream)];case 8:return[3,10];case 9:error_1=_c.sent();errorName=OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED;errorMessage=error_1.toString();return[2,reject(new OpenViduError_1.OpenViduError(errorName,errorMessage))];case 10:return[3,11];case 11:return[3,12];case 12:constraintsAux=mustAskForAudioTrackLater?{video:myConstraints.constraints.video}:myConstraints.constraints;_c.label=13;case 13:_c.trys.push([13,18,,19]);return[4,navigator.mediaDevices.getUserMedia(constraintsAux)];case 14:mediaStream=_c.sent();this.addAlreadyProvidedTracks(myConstraints,mediaStream);if(!mustAskForAudioTrackLater)return[3,16];return[4,askForAudioStreamOnly(mediaStream,myConstraints.constraints)];case 15:_c.sent();return[3,17];case 16:return[2,resolve(mediaStream)];case 17:return[3,19];case 18:error_2=_c.sent();errorName=void 0;errorMessage=error_2.toString();if(!(options.videoSource==="screen")){errorName=OpenViduError_1.OpenViduErrorName.DEVICE_ACCESS_DENIED}else{errorName=OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED}return[2,reject(new OpenViduError_1.OpenViduError(errorName,errorMessage))];case 19:return[3,21];case 20:error_3=_c.sent();reject(error_3);return[3,21];case 21:return[2]}}))}))}))};OpenVidu.prototype.enableProdMode=function(){logger.enableProdMode()};OpenVidu.prototype.setAdvancedConfiguration=function(configuration){this.advancedConfiguration=configuration};OpenVidu.prototype.onOrientationChanged=function(handler){globalThis.addEventListener("orientationchange",handler)};OpenVidu.prototype.sendNewVideoDimensionsIfRequired=function(publisher,reason,WAIT_INTERVAL,MAX_ATTEMPTS){var _this=this;var _a,_b,_c,_d;var attempts=0;var oldWidth=((_b=(_a=publisher===null||publisher===void 0?void 0:publisher.stream)===null||_a===void 0?void 0:_a.videoDimensions)===null||_b===void 0?void 0:_b.width)||0;var oldHeight=((_d=(_c=publisher===null||publisher===void 0?void 0:publisher.stream)===null||_c===void 0?void 0:_c.videoDimensions)===null||_d===void 0?void 0:_d.height)||0;var repeatUntilChangeOrMaxAttempts=setInterval((function(){attempts++;if(attempts>MAX_ATTEMPTS){clearTimeout(repeatUntilChangeOrMaxAttempts)}publisher.getVideoDimensions().then((function(newDimensions){if(newDimensions.width!==oldWidth||newDimensions.height!==oldHeight){clearTimeout(repeatUntilChangeOrMaxAttempts);_this.sendVideoDimensionsChangedEvent(publisher,reason,oldWidth,oldHeight,newDimensions.width,newDimensions.height)}}))}),WAIT_INTERVAL)};OpenVidu.prototype.sendVideoDimensionsChangedEvent=function(publisher,reason,oldWidth,oldHeight,newWidth,newHeight){var _this=this;publisher.stream.videoDimensions={width:newWidth||0,height:newHeight||0};this.sendRequest("streamPropertyChanged",{streamId:publisher.stream.streamId,property:"videoDimensions",newValue:JSON.stringify(publisher.stream.videoDimensions),reason:reason},(function(error,response){if(error){logger.error("Error sending 'streamPropertyChanged' event",error)}else{_this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.session,publisher.stream,"videoDimensions",publisher.stream.videoDimensions,{width:oldWidth,height:oldHeight},reason)]);publisher.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(publisher,publisher.stream,"videoDimensions",publisher.stream.videoDimensions,{width:oldWidth,height:oldHeight},reason)]);_this.session.sendVideoData(publisher)}}))};OpenVidu.prototype.sendTrackChangedEvent=function(publisher,oldLabel,newLabel,propertyType){var _this=this;var oldValue={label:oldLabel};var newValue={label:newLabel};var reason="trackReplaced";if(publisher.stream.isLocalStreamPublished){this.sendRequest("streamPropertyChanged",{streamId:publisher.stream.streamId,property:propertyType,newValue:newValue,reason:reason},(function(error,response){if(error){logger.error("Error sending 'streamPropertyChanged' event",error)}else{_this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.session,publisher.stream,propertyType,newValue,oldValue,reason)]);publisher.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(publisher,publisher.stream,propertyType,newValue,oldValue,reason)])}}))}else{this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(this.session,publisher.stream,propertyType,newValue,oldValue,reason)]);publisher.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(publisher,publisher.stream,propertyType,newValue,oldValue,reason)])}};OpenVidu.prototype.generateMediaConstraints=function(publisherProperties){var _this=this;return new Promise((function(resolve,reject){var myConstraints={audioTrack:undefined,videoTrack:undefined,constraints:{audio:undefined,video:undefined}};var audioSource=publisherProperties.audioSource;var videoSource=publisherProperties.videoSource;if(audioSource===null||audioSource===false){myConstraints.constraints.audio=false}if(videoSource===null||videoSource===false){myConstraints.constraints.video=false}if(myConstraints.constraints.audio===false&&myConstraints.constraints.video===false){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.NO_INPUT_SOURCE_SET,"Properties 'audioSource' and 'videoSource' cannot be set to false or null at the same time"))}if(typeof MediaStreamTrack!=="undefined"&&audioSource instanceof MediaStreamTrack){myConstraints.audioTrack=audioSource}if(typeof MediaStreamTrack!=="undefined"&&videoSource instanceof MediaStreamTrack){myConstraints.videoTrack=videoSource}if(audioSource===undefined){myConstraints.constraints.audio=true}if(videoSource===undefined){myConstraints.constraints.video={width:{ideal:640},height:{ideal:480}}}if(videoSource!==null&&videoSource!==false){if(!!publisherProperties.resolution){var widthAndHeight=publisherProperties.resolution.toLowerCase().split("x");var idealWidth=Number(widthAndHeight[0]);var idealHeight=Number(widthAndHeight[1]);myConstraints.constraints.video={width:{ideal:idealWidth},height:{ideal:idealHeight}}}if(!!publisherProperties.frameRate){myConstraints.constraints.video.frameRate={ideal:publisherProperties.frameRate}}}_this.configureDeviceIdOrScreensharing(myConstraints,publisherProperties,resolve,reject);return resolve(myConstraints)}))};OpenVidu.prototype.startWs=function(onConnectSucces){var config={heartbeat:5e3,ws:{uri:this.wsUri+"?sessionId="+this.session.sessionId,onconnected:onConnectSucces,ondisconnect:this.disconnectCallback.bind(this),onreconnecting:this.reconnectingCallback.bind(this),onreconnected:this.reconnectedCallback.bind(this),ismasternodecrashed:this.isMasterNodeCrashed.bind(this)},rpc:{requestTimeout:1e4,heartbeatRequestTimeout:5e3,participantJoined:this.session.onParticipantJoined.bind(this.session),participantPublished:this.session.onParticipantPublished.bind(this.session),participantUnpublished:this.session.onParticipantUnpublished.bind(this.session),participantLeft:this.session.onParticipantLeft.bind(this.session),participantEvicted:this.session.onParticipantEvicted.bind(this.session),recordingStarted:this.session.onRecordingStarted.bind(this.session),recordingStopped:this.session.onRecordingStopped.bind(this.session),broadcastStarted:this.session.onBroadcastStarted.bind(this.session),broadcastStopped:this.session.onBroadcastStopped.bind(this.session),sendMessage:this.session.onNewMessage.bind(this.session),streamPropertyChanged:this.session.onStreamPropertyChanged.bind(this.session),connectionPropertyChanged:this.session.onConnectionPropertyChanged.bind(this.session),networkQualityLevelChanged:this.session.onNetworkQualityLevelChangedChanged.bind(this.session),filterEventDispatched:this.session.onFilterEventDispatched.bind(this.session),iceCandidate:this.session.recvIceCandidate.bind(this.session),mediaError:this.session.onMediaError.bind(this.session),masterNodeCrashedNotification:this.onMasterNodeCrashedNotification.bind(this),forciblyReconnectSubscriber:this.session.onForciblyReconnectSubscriber.bind(this.session),speechToTextMessage:this.session.onSpeechToTextMessage.bind(this.session),speechToTextDisconnected:this.session.onSpeechToTextDisconnected.bind(this.session)}};this.jsonRpcClient=new RpcBuilder.clients.JsonRpcClient(config)};OpenVidu.prototype.onMasterNodeCrashedNotification=function(response){console.error("Master Node has crashed");this.masterNodeHasCrashed=true;this.session.onLostConnection("nodeCrashed");this.jsonRpcClient.close(4103,"Master Node has crashed")};OpenVidu.prototype.getWsReadyState=function(){return this.jsonRpcClient.getReadyState()};OpenVidu.prototype.closeWs=function(){this.jsonRpcClient.close(4102,"Connection closed by client")};OpenVidu.prototype.sendRequest=function(method,params,callback){var _a;if(params&¶ms instanceof Function){callback=params;params={}}logger.debug('Sending request: {method:"'+method+'", params: '+JSON.stringify(params)+"}");(_a=this.jsonRpcClient)===null||_a===void 0?void 0:_a.send(method,params,callback)};OpenVidu.prototype.getWsUri=function(){return this.wsUri};OpenVidu.prototype.getSecret=function(){return this.secret};OpenVidu.prototype.getRecorder=function(){return this.recorder};OpenVidu.prototype.getStt=function(){return this.stt};OpenVidu.prototype.generateAudioDeviceError=function(error,constraints){if(error.name==="Error"){error.name=error.constructor.name}var errorName,errorMessage;switch(error.name.toLowerCase()){case"notfounderror":errorName=OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;errorMessage=error.toString();return new OpenViduError_1.OpenViduError(errorName,errorMessage);case"notallowederror":errorName=OpenViduError_1.OpenViduErrorName.DEVICE_ACCESS_DENIED;errorMessage=error.toString();return new OpenViduError_1.OpenViduError(errorName,errorMessage);case"overconstrainederror":if(error.constraint.toLowerCase()==="deviceid"){errorName=OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;errorMessage="Audio input device with deviceId '"+constraints.audio.deviceId.exact+"' not found"}else{errorName=OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR;errorMessage="Audio input device doesn't support the value passed for constraint '"+error.constraint+"'"}return new OpenViduError_1.OpenViduError(errorName,errorMessage);case"notreadableerror":errorName=OpenViduError_1.OpenViduErrorName.DEVICE_ALREADY_IN_USE;errorMessage=error.toString();return new OpenViduError_1.OpenViduError(errorName,errorMessage);default:return new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_GENERIC_ERROR,error.toString())}};OpenVidu.prototype.addAlreadyProvidedTracks=function(myConstraints,mediaStream,stream){if(!!myConstraints.videoTrack){mediaStream.addTrack(myConstraints.videoTrack);if(!!stream){if(!!myConstraints.constraints.video){stream.lastVideoTrackConstraints=myConstraints.constraints.video}else{stream.lastVideoTrackConstraints=myConstraints.videoTrack.getConstraints()}}}if(!!myConstraints.audioTrack){mediaStream.addTrack(myConstraints.audioTrack)}return mediaStream};OpenVidu.prototype.configureDeviceIdOrScreensharing=function(myConstraints,publisherProperties,resolve,reject){var _this=this;var audioSource=publisherProperties.audioSource;var videoSource=publisherProperties.videoSource;if(typeof audioSource==="string"){myConstraints.constraints.audio={deviceId:{exact:audioSource}}}if(typeof videoSource==="string"){if(!this.isScreenShare(videoSource)){this.setVideoSource(myConstraints,videoSource)}else{if(!this.checkScreenSharingCapabilities()){var error=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_SHARING_NOT_SUPPORTED,"You can only screen share in desktop Chrome, Firefox, Opera, Safari (>=13.0), Edge (>= 80) or Electron. Detected client: "+platform.getName()+" "+platform.getVersion());logger.error(error);return reject(error)}else{if(platform.isElectron()){var prefix="screen:";var videoSourceString=videoSource;var electronScreenId=videoSourceString.substr(videoSourceString.indexOf(prefix)+prefix.length);myConstraints.constraints.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:electronScreenId}};return resolve(myConstraints)}else{if(!!this.advancedConfiguration.screenShareChromeExtension&&!(platform.isFirefoxBrowser()||platform.isFirefoxMobileBrowser())&&!navigator.mediaDevices["getDisplayMedia"]){screenSharing.getScreenConstraints((function(error,screenConstraints){if(!!error||!!screenConstraints.mandatory&&screenConstraints.mandatory.chromeMediaSource==="screen"){if(error==="permission-denied"||error==="PermissionDeniedError"){var error_5=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED,"You must allow access to one window of your desktop");logger.error(error_5);return reject(error_5)}else{var extensionId=_this.advancedConfiguration.screenShareChromeExtension.split("/").pop().trim();screenSharing.getChromeExtensionStatus(extensionId,(function(status){if(status==="installed-disabled"){var error_6=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_EXTENSION_DISABLED,"You must enable the screen extension");logger.error(error_6);return reject(error_6)}if(status==="not-installed"){var error_7=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED,_this.advancedConfiguration.screenShareChromeExtension);logger.error(error_7);return reject(error_7)}}));return}}else{myConstraints.constraints.video=screenConstraints;return resolve(myConstraints)}}));return}else{if(navigator.mediaDevices["getDisplayMedia"]){return resolve(myConstraints)}else{var firefoxString=platform.isFirefoxBrowser()||platform.isFirefoxMobileBrowser()?publisherProperties.videoSource:undefined;screenSharingAuto.getScreenId(firefoxString,(function(error,sourceId,screenConstraints){if(!!error){if(error==="not-installed"){var extensionUrl=!!_this.advancedConfiguration.screenShareChromeExtension?_this.advancedConfiguration.screenShareChromeExtension:"https://chrome.google.com/webstore/detail/openvidu-screensharing/lfcgfepafnobdloecchnfaclibenjold";var err=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_EXTENSION_NOT_INSTALLED,extensionUrl);logger.error(err);return reject(err)}else if(error==="installed-disabled"){var err=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_EXTENSION_DISABLED,"You must enable the screen extension");logger.error(err);return reject(err)}else if(error==="permission-denied"){var err=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED,"You must allow access to one window of your desktop");logger.error(err);return reject(err)}else{var err=new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.GENERIC_ERROR,"Unknown error when accessing screen share");logger.error(err);logger.error(error);return reject(err)}}else{myConstraints.constraints.video=screenConstraints.video;return resolve(myConstraints)}}));return}}}}}}};OpenVidu.prototype.setVideoSource=function(myConstraints,videoSource){if(!myConstraints.constraints.video){myConstraints.constraints.video={}}myConstraints.constraints.video["deviceId"]={exact:videoSource}};OpenVidu.prototype.disconnectCallback=function(){logger.warn("Websocket connection lost");if(this.isRoomAvailable()){this.session.onLostConnection("networkDisconnect")}else{alert("Connection error. Please reload page.")}};OpenVidu.prototype.reconnectingCallback=function(){logger.warn("Websocket connection lost (reconnecting)");if(!this.isRoomAvailable()){alert("Connection error. Please reload page.")}else{this.session.emitEvent("reconnecting",[])}};OpenVidu.prototype.reconnectWebsocketThroughRpcConnectMethod=function(rpcSessionId){var _this=this;this.sendRequest("connect",{sessionId:rpcSessionId,reconnect:true},(function(error,response){if(!!error){if(_this.isMasterNodeCrashed()){logger.warn("Master Node has crashed!")}else{logger.error(error);var notifyLostConnection_1=function(reason,errorMsg){logger.warn(errorMsg);_this.session.onLostConnection(reason);_this.jsonRpcClient.close(4101,"Reconnection fault: "+errorMsg)};var rpcSessionStatus=function(){if(_this.life===-1){notifyLostConnection_1("networkDisconnect","WS successfully reconnected but the user was already evicted due to timeout")}else{_this.sendRequest("sessionStatus",{sessionId:_this.session.sessionId},(function(error,response){if(error!=null){console.error("Error checking session status",error)}else{if(_this.life===response.life){notifyLostConnection_1("networkDisconnect","WS successfully reconnected but the user was already evicted due to timeout")}else{notifyLostConnection_1("nodeCrashed","WS successfully reconnected to OpenVidu Server but your Master Node crashed")}}}))}};if(error.code===40007&&error.message==="reconnection error"){console.error("Invalid RPC sessionId. Client network disconnection or Master Node crash");rpcSessionStatus()}else{rpcSessionStatus()}}}else{_this.jsonRpcClient.resetPing();_this.session.onRecoveredConnection()}}))};OpenVidu.prototype.reconnectedCallback=function(){logger.warn("Websocket reconnected");if(this.isRoomAvailable()){if(!!this.session.connection){this.reconnectWebsocketThroughRpcConnectMethod(this.session.connection.rpcSessionId)}else{logger.warn("There was no previous connection when running reconnection callback");var sessionDisconnectEvent=new SessionDisconnectedEvent_1.SessionDisconnectedEvent(this.session,"networkDisconnect");this.session.ee.emitEvent("sessionDisconnected",[sessionDisconnectEvent]);sessionDisconnectEvent.callDefaultBehavior()}}else{alert("Connection error. Please reload page.")}};OpenVidu.prototype.isMasterNodeCrashed=function(){return this.masterNodeHasCrashed};OpenVidu.prototype.isRoomAvailable=function(){if(this.session!==undefined&&this.session instanceof Session_1.Session){return true}else{logger.warn("Session instance not found");return false}};OpenVidu.prototype.isScreenShare=function(videoSource){return videoSource==="screen"||videoSource==="window"||platform.isElectron()&&videoSource.startsWith("screen:")};return OpenVidu}();exports.OpenVidu=OpenVidu},{"../../package.json":40,"../OpenViduInternal/Enums/OpenViduError":53,"../OpenViduInternal/Enums/VideoInsertMode":55,"../OpenViduInternal/Events/SessionDisconnectedEvent":64,"../OpenViduInternal/Events/StreamPropertyChangedEvent":69,"../OpenViduInternal/KurentoUtils/kurento-jsonrpc":76,"../OpenViduInternal/Logger/OpenViduLogger":81,"../OpenViduInternal/Logger/OpenViduLoggerConfiguration":82,"../OpenViduInternal/ScreenSharing/Screen-Capturing":84,"../OpenViduInternal/ScreenSharing/Screen-Capturing-Auto":83,"../OpenViduInternal/Utils/Platform":85,"./LocalRecorder":45,"./Publisher":47,"./Session":48,"wolfy87-eventemitter":39}],47:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};Object.defineProperty(exports,"__esModule",{value:true});exports.Publisher=void 0;var Session_1=require("./Session");var Stream_1=require("./Stream");var StreamManager_1=require("./StreamManager");var StreamEvent_1=require("../OpenViduInternal/Events/StreamEvent");var StreamPropertyChangedEvent_1=require("../OpenViduInternal/Events/StreamPropertyChangedEvent");var OpenViduError_1=require("../OpenViduInternal/Enums/OpenViduError");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var Platform_1=require("../OpenViduInternal/Utils/Platform");var TypeOfVideo_1=require("../OpenViduInternal/Enums/TypeOfVideo");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var Publisher=function(_super){__extends(Publisher,_super);function Publisher(targEl,properties,openvidu){var _this=_super.call(this,new Stream_1.Stream(!!openvidu.session?openvidu.session:new Session_1.Session(openvidu),{publisherProperties:properties,mediaConstraints:{}}),targEl)||this;_this.accessAllowed=false;_this.isSubscribedToRemote=false;_this.accessDenied=false;platform=Platform_1.PlatformUtils.getInstance();_this.properties=properties;_this.openvidu=openvidu;_this.stream.ee.on("local-stream-destroyed",(function(reason){_this.stream.isLocalStreamPublished=false;var streamEvent=new StreamEvent_1.StreamEvent(true,_this,"streamDestroyed",_this.stream,reason);_this.emitEvent("streamDestroyed",[streamEvent]);streamEvent.callDefaultBehavior()}));return _this}Publisher.prototype.publishAudio=function(enabled){var _this=this;if(this.stream.audioActive!==enabled){var affectedMediaStream=this.stream.displayMyRemote()?this.stream.localMediaStreamWhenSubscribedToRemote:this.stream.getMediaStream();affectedMediaStream.getAudioTracks().forEach((function(track){track.enabled=enabled}));if(!!this.session&&!!this.stream.streamId){this.session.openvidu.sendRequest("streamPropertyChanged",{streamId:this.stream.streamId,property:"audioActive",newValue:enabled,reason:"publishAudio"},(function(error,response){if(error){logger.error("Error sending 'streamPropertyChanged' event",error)}else{_this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.session,_this.stream,"audioActive",enabled,!enabled,"publishAudio")]);_this.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this,_this.stream,"audioActive",enabled,!enabled,"publishAudio")]);_this.session.sendVideoData(_this.stream.streamManager)}}))}this.stream.audioActive=enabled;logger.info("'Publisher' has "+(enabled?"published":"unpublished")+" its audio stream")}};Publisher.prototype.publishVideo=function(enabled,resource){var _this=this;return new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var affectedMediaStream_1,mustRestartMediaStream_1,oldVideoTrack,replaceVideoTrack,mediaStream,error_1;var _this=this;return __generator(this,(function(_a){switch(_a.label){case 0:if(!(this.stream.videoActive!==enabled))return[3,9];affectedMediaStream_1=this.stream.displayMyRemote()?this.stream.localMediaStreamWhenSubscribedToRemote:this.stream.getMediaStream();mustRestartMediaStream_1=false;affectedMediaStream_1.getVideoTracks().forEach((function(track){track.enabled=enabled;if(!enabled&&resource===true){track.stop()}else if(enabled&&track.readyState==="ended"){mustRestartMediaStream_1=true}}));if(!(!enabled&&resource===true&&!!this.stream.filter&&this.stream.filter.type.startsWith("VB:")))return[3,2];this.stream.lastVBFilter=this.stream.filter;return[4,this.stream.removeFilterAux(true)];case 1:_a.sent();_a.label=2;case 2:if(!mustRestartMediaStream_1)return[3,8];oldVideoTrack=affectedMediaStream_1.getVideoTracks()[0];affectedMediaStream_1.removeTrack(oldVideoTrack);replaceVideoTrack=function(tr){return __awaiter(_this,void 0,void 0,(function(){var _this=this;return __generator(this,(function(_a){switch(_a.label){case 0:affectedMediaStream_1.addTrack(tr);if(!this.stream.isLocalStreamPublished)return[3,2];return[4,this.replaceTrackInRtcRtpSender(tr)];case 1:_a.sent();_a.label=2;case 2:if(!!this.stream.lastVBFilter){setTimeout((function(){return __awaiter(_this,void 0,void 0,(function(){var options,lastExecMethod;return __generator(this,(function(_a){switch(_a.label){case 0:options=this.stream.lastVBFilter.options;lastExecMethod=this.stream.lastVBFilter.lastExecMethod;if(!!lastExecMethod&&lastExecMethod.method==="update"){options=Object.assign({},options,lastExecMethod.params)}return[4,this.stream.applyFilter(this.stream.lastVBFilter.type,options)];case 1:_a.sent();delete this.stream.lastVBFilter;return[2]}}))}))}),1)}return[2]}}))}))};if(!(!!resource&&resource instanceof MediaStreamTrack))return[3,4];return[4,replaceVideoTrack(resource)];case 3:_a.sent();return[3,8];case 4:_a.trys.push([4,7,,8]);return[4,navigator.mediaDevices.getUserMedia({audio:false,video:this.stream.lastVideoTrackConstraints})];case 5:mediaStream=_a.sent();return[4,replaceVideoTrack(mediaStream.getVideoTracks()[0])];case 6:_a.sent();return[3,8];case 7:error_1=_a.sent();return[2,reject(error_1)];case 8:if(!!this.session&&!!this.stream.streamId){this.session.openvidu.sendRequest("streamPropertyChanged",{streamId:this.stream.streamId,property:"videoActive",newValue:enabled,reason:"publishVideo"},(function(error,response){if(error){logger.error("Error sending 'streamPropertyChanged' event",error)}else{_this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.session,_this.stream,"videoActive",enabled,!enabled,"publishVideo")]);_this.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this,_this.stream,"videoActive",enabled,!enabled,"publishVideo")]);_this.session.sendVideoData(_this.stream.streamManager)}}))}this.stream.videoActive=enabled;logger.info("'Publisher' has "+(enabled?"published":"unpublished")+" its video stream");return[2,resolve()];case 9:return[2]}}))}))}))};Publisher.prototype.subscribeToRemote=function(value){value=value!==undefined?value:true;this.isSubscribedToRemote=value;this.stream.subscribeToMyRemote(value)};Publisher.prototype.on=function(type,handler){var _this=this;_super.prototype.on.call(this,type,handler);if(type==="streamCreated"){if(!!this.stream&&this.stream.isLocalStreamPublished){this.emitEvent("streamCreated",[new StreamEvent_1.StreamEvent(false,this,"streamCreated",this.stream,"")])}else{this.stream.ee.on("stream-created-by-publisher",(function(){_this.emitEvent("streamCreated",[new StreamEvent_1.StreamEvent(false,_this,"streamCreated",_this.stream,"")])}))}}if(type==="accessAllowed"){if(this.accessAllowed){this.emitEvent("accessAllowed",[])}}if(type==="accessDenied"){if(this.accessDenied){this.emitEvent("accessDenied",[])}}return this};Publisher.prototype.once=function(type,handler){var _this=this;_super.prototype.once.call(this,type,handler);if(type==="streamCreated"){if(!!this.stream&&this.stream.isLocalStreamPublished){this.emitEvent("streamCreated",[new StreamEvent_1.StreamEvent(false,this,"streamCreated",this.stream,"")])}else{this.stream.ee.once("stream-created-by-publisher",(function(){_this.emitEvent("streamCreated",[new StreamEvent_1.StreamEvent(false,_this,"streamCreated",_this.stream,"")])}))}}if(type==="accessAllowed"){if(this.accessAllowed){this.emitEvent("accessAllowed",[])}}if(type==="accessDenied"){if(this.accessDenied){this.emitEvent("accessDenied",[])}}return this};Publisher.prototype.off=function(type,handler){_super.prototype.off.call(this,type,handler);return this};Publisher.prototype.replaceTrack=function(track){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a){return[2,this.replaceTrackAux(track,true)]}))}))};Publisher.prototype.initialize=function(){var _this=this;return new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var constraints,constraintsAux,timeForDialogEvent,startTime,errorCallback,successCallback,getMediaSuccess,getMediaError,myConstraints,outboundStreamOptions,definedAudioConstraint,mediaStream,mediaStream,error_2,error_3;var _this=this;var _a,_b;return __generator(this,(function(_c){switch(_c.label){case 0:constraints={};constraintsAux={};timeForDialogEvent=2e3;errorCallback=function(openViduError){_this.accessDenied=true;_this.accessAllowed=false;logger.error("Publisher initialization failed. ".concat(openViduError.name,": ").concat(openViduError.message));return reject(openViduError)};successCallback=function(mediaStream){var _a,_b;_this.accessAllowed=true;_this.accessDenied=false;if(typeof MediaStreamTrack!=="undefined"&&_this.properties.audioSource instanceof MediaStreamTrack){mediaStream.removeTrack(mediaStream.getAudioTracks()[0]);mediaStream.addTrack(_this.properties.audioSource)}if(typeof MediaStreamTrack!=="undefined"&&_this.properties.videoSource instanceof MediaStreamTrack){mediaStream.removeTrack(mediaStream.getVideoTracks()[0]);mediaStream.addTrack(_this.properties.videoSource)}if(!!mediaStream.getAudioTracks()[0]){var enabled=_this.stream.audioActive!==undefined&&_this.stream.audioActive!==null?_this.stream.audioActive:!!_this.stream.outboundStreamOpts.publisherProperties.publishAudio;mediaStream.getAudioTracks()[0].enabled=enabled}if(!!mediaStream.getVideoTracks()[0]){var enabled=_this.stream.videoActive!==undefined&&_this.stream.videoActive!==null?_this.stream.videoActive:!!_this.stream.outboundStreamOpts.publisherProperties.publishVideo;mediaStream.getVideoTracks()[0].enabled=enabled}for(var _i=0,_c=mediaStream.getAudioTracks();_i<_c.length;_i++){var track=_c[_i];if(!((_a=track.contentHint)===null||_a===void 0?void 0:_a.length)){track.contentHint="";logger.info("Audio track Content Hint set: '".concat(track.contentHint,"'"))}}for(var _d=0,_e=mediaStream.getVideoTracks();_d<_e.length;_d++){var track=_e[_d];if(!((_b=track.contentHint)===null||_b===void 0?void 0:_b.length)){switch(_this.stream.typeOfVideo){case TypeOfVideo_1.TypeOfVideo.SCREEN:track.contentHint="detail";break;case TypeOfVideo_1.TypeOfVideo.CUSTOM:logger.warn("CUSTOM type video track was provided without Content Hint!");track.contentHint="motion";break;case TypeOfVideo_1.TypeOfVideo.CAMERA:case TypeOfVideo_1.TypeOfVideo.IPCAM:default:track.contentHint="motion";break}logger.info("Video track Content Hint set: '".concat(track.contentHint,"'"))}}_this.initializeVideoReference(mediaStream);if(!_this.stream.displayMyRemote()){_this.stream.updateMediaStreamInVideos()}delete _this.firstVideoElement;if(_this.stream.isSendVideo()){_this.getVideoDimensions().then((function(dimensions){_this.stream.videoDimensions={width:dimensions.width,height:dimensions.height};if(_this.stream.isSendScreen()){_this.screenShareResizeInterval=setInterval((function(){var settings=mediaStream.getVideoTracks()[0].getSettings();var newWidth=settings.width;var newHeight=settings.height;var widthChanged=newWidth!=null&&newWidth!==_this.stream.videoDimensions.width;var heightChanged=newHeight!=null&&newHeight!==_this.stream.videoDimensions.height;if(_this.stream.isLocalStreamPublished&&(widthChanged||heightChanged)){_this.openvidu.sendVideoDimensionsChangedEvent(_this,"screenResized",_this.stream.videoDimensions.width,_this.stream.videoDimensions.height,newWidth||0,newHeight||0)}}),650)}_this.stream.isLocalStreamReadyToPublish=true;_this.stream.ee.emitEvent("stream-ready-to-publish",[])}))}else{_this.stream.isLocalStreamReadyToPublish=true;_this.stream.ee.emitEvent("stream-ready-to-publish",[])}return resolve()};getMediaSuccess=function(mediaStream,definedAudioConstraint){return __awaiter(_this,void 0,void 0,(function(){var audioOnlyStream,error_4;return __generator(this,(function(_a){switch(_a.label){case 0:this.clearPermissionDialogTimer(startTime,timeForDialogEvent);if(!(this.stream.isSendScreen()&&this.stream.isSendAudio()))return[3,5];constraintsAux.audio=definedAudioConstraint;constraintsAux.video=false;startTime=Date.now();this.setPermissionDialogTimer(timeForDialogEvent);_a.label=1;case 1:_a.trys.push([1,3,,4]);return[4,navigator.mediaDevices.getUserMedia(constraintsAux)];case 2:audioOnlyStream=_a.sent();this.clearPermissionDialogTimer(startTime,timeForDialogEvent);mediaStream.addTrack(audioOnlyStream.getAudioTracks()[0]);successCallback(mediaStream);return[3,4];case 3:error_4=_a.sent();this.clearPermissionDialogTimer(startTime,timeForDialogEvent);mediaStream.getAudioTracks().forEach((function(track){track.stop()}));mediaStream.getVideoTracks().forEach((function(track){track.stop()}));errorCallback(this.openvidu.generateAudioDeviceError(error_4,constraints));return[2];case 4:return[3,6];case 5:successCallback(mediaStream);_a.label=6;case 6:return[2]}}))}))};getMediaError=function(error){return __awaiter(_this,void 0,void 0,(function(){var errorName,errorMessage,_a,mediaStream,error_5,mediaStream,error_6;return __generator(this,(function(_b){switch(_b.label){case 0:logger.error("getMediaError: ".concat(error.toString()));this.clearPermissionDialogTimer(startTime,timeForDialogEvent);if(error.name==="Error"){error.name=error.constructor.name}_a=error.name.toLowerCase();switch(_a){case"notfounderror":return[3,1];case"notallowederror":return[3,5];case"overconstrainederror":return[3,6];case"aborterror":return[3,10];case"notreadableerror":return[3,10]}return[3,11];case 1:_b.trys.push([1,3,,4]);return[4,navigator.mediaDevices.getUserMedia({audio:false,video:constraints.video})];case 2:mediaStream=_b.sent();mediaStream.getVideoTracks().forEach((function(track){track.stop()}));errorName=OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;errorMessage=error.toString();errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,4];case 3:error_5=_b.sent();errorName=OpenViduError_1.OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND;errorMessage=error_5.toString();errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,4];case 4:return[3,12];case 5:errorName=this.stream.isSendScreen()?OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED:OpenViduError_1.OpenViduErrorName.DEVICE_ACCESS_DENIED;errorMessage=error.toString();errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,12];case 6:_b.trys.push([6,8,,9]);return[4,navigator.mediaDevices.getUserMedia({audio:false,video:constraints.video})];case 7:mediaStream=_b.sent();mediaStream.getVideoTracks().forEach((function(track){track.stop()}));if(error.constraint.toLowerCase()==="deviceid"){errorName=OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND;errorMessage="Audio input device with deviceId '"+constraints.audio.deviceId.exact+"' not found"}else{errorName=OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR;errorMessage="Audio input device doesn't support the value passed for constraint '"+error.constraint+"'"}errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,9];case 8:error_6=_b.sent();if(error_6.constraint.toLowerCase()==="deviceid"){errorName=OpenViduError_1.OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND;errorMessage="Video input device with deviceId '"+constraints.video.deviceId.exact+"' not found"}else{errorName=OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR;errorMessage="Video input device doesn't support the value passed for constraint '"+error_6.constraint+"'"}errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,9];case 9:return[3,12];case 10:errorName=OpenViduError_1.OpenViduErrorName.DEVICE_ALREADY_IN_USE;errorMessage=error.toString();errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,12];case 11:errorName=OpenViduError_1.OpenViduErrorName.GENERIC_ERROR;errorMessage=error.toString();errorCallback(new OpenViduError_1.OpenViduError(errorName,errorMessage));return[3,12];case 12:return[2]}}))}))};_c.label=1;case 1:_c.trys.push([1,14,,15]);return[4,this.openvidu.generateMediaConstraints(this.properties)];case 2:myConstraints=_c.sent();if(!(!!myConstraints.videoTrack&&!!myConstraints.audioTrack||!!myConstraints.audioTrack&&((_a=myConstraints.constraints)===null||_a===void 0?void 0:_a.video)===false||!!myConstraints.videoTrack&&((_b=myConstraints.constraints)===null||_b===void 0?void 0:_b.audio)===false))return[3,3];successCallback(this.openvidu.addAlreadyProvidedTracks(myConstraints,new MediaStream,this.stream));return[3,13];case 3:constraints=myConstraints.constraints;outboundStreamOptions={mediaConstraints:constraints,publisherProperties:this.properties};this.stream.setOutboundStreamOptions(outboundStreamOptions);definedAudioConstraint=constraints.audio===undefined?true:constraints.audio;constraintsAux.audio=this.stream.isSendScreen()?false:definedAudioConstraint;constraintsAux.video=constraints.video;startTime=Date.now();this.setPermissionDialogTimer(timeForDialogEvent);_c.label=4;case 4:_c.trys.push([4,11,,13]);if(!(this.stream.isSendScreen()&&navigator.mediaDevices["getDisplayMedia"]&&!platform.isElectron()))return[3,7];return[4,navigator.mediaDevices["getDisplayMedia"]({video:true})];case 5:mediaStream=_c.sent();this.openvidu.addAlreadyProvidedTracks(myConstraints,mediaStream);return[4,getMediaSuccess(mediaStream,definedAudioConstraint)];case 6:_c.sent();return[3,10];case 7:this.stream.lastVideoTrackConstraints=constraintsAux.video;return[4,navigator.mediaDevices.getUserMedia(constraintsAux)];case 8:mediaStream=_c.sent();this.openvidu.addAlreadyProvidedTracks(myConstraints,mediaStream,this.stream);return[4,getMediaSuccess(mediaStream,definedAudioConstraint)];case 9:_c.sent();_c.label=10;case 10:return[3,13];case 11:error_2=_c.sent();return[4,getMediaError(error_2)];case 12:_c.sent();return[3,13];case 13:return[3,15];case 14:error_3=_c.sent();errorCallback(error_3);return[3,15];case 15:return[2]}}))}))}))};Publisher.prototype.replaceTrackAux=function(track,updateLastConstraints){return __awaiter(this,void 0,void 0,(function(){var trackOriginalEnabledValue,error_7;return __generator(this,(function(_a){switch(_a.label){case 0:trackOriginalEnabledValue=track.enabled;if(track.kind==="video"){track.enabled=this.stream.videoActive}else if(track.kind==="audio"){track.enabled=this.stream.audioActive}_a.label=1;case 1:_a.trys.push([1,5,,6]);if(!this.stream.isLocalStreamPublished)return[3,3];this.replaceTrackInMediaStream(track,updateLastConstraints);return[4,this.replaceTrackInRtcRtpSender(track)];case 2:return[2,_a.sent()];case 3:return[2,this.replaceTrackInMediaStream(track,updateLastConstraints)];case 4:return[3,6];case 5:error_7=_a.sent();track.enabled=trackOriginalEnabledValue;throw error_7;case 6:return[2]}}))}))};Publisher.prototype.getVideoDimensions=function(){var _this=this;return new Promise((function(resolve,reject){var requiresDomInsertion=platform.isIonicIos()||platform.isIOSWithSafari();var loadedmetadataListener;var resolveDimensions=function(){var width;var height;if(typeof _this.stream.getMediaStream().getVideoTracks()[0].getSettings==="function"){var settings=_this.stream.getMediaStream().getVideoTracks()[0].getSettings();width=settings.width||_this.videoReference.videoWidth;height=settings.height||_this.videoReference.videoHeight}else{logger.warn("MediaStreamTrack does not have getSettings method on "+platform.getDescription());width=_this.videoReference.videoWidth;height=_this.videoReference.videoHeight}if(loadedmetadataListener!=null){_this.videoReference.removeEventListener("loadedmetadata",loadedmetadataListener)}if(requiresDomInsertion){document.body.removeChild(_this.videoReference)}return resolve({width:width,height:height})};if(_this.videoReference.readyState>=1){resolveDimensions()}else{loadedmetadataListener=function(){if(!_this.videoReference.videoWidth){var interval_1=setInterval((function(){if(!!_this.videoReference.videoWidth){clearInterval(interval_1);resolveDimensions()}}),40)}else{resolveDimensions()}};_this.videoReference.addEventListener("loadedmetadata",loadedmetadataListener);if(requiresDomInsertion){document.body.appendChild(_this.videoReference)}}}))};Publisher.prototype.reestablishStreamPlayingEvent=function(){if(this.ee.getListeners("streamPlaying").length>0){this.addPlayEventToFirstVideo()}};Publisher.prototype.initializeVideoReference=function(mediaStream){this.videoReference=document.createElement("video");this.videoReference.style.display="none";this.videoReference.muted=true;this.videoReference.autoplay=true;this.videoReference.controls=false;if(platform.isSafariBrowser()||platform.isIPhoneOrIPad()&&(platform.isChromeMobileBrowser()||platform.isEdgeMobileBrowser()||platform.isOperaMobileBrowser()||platform.isFirefoxMobileBrowser())){this.videoReference.playsInline=true}this.stream.setMediaStream(mediaStream);if(!!this.firstVideoElement){this.createVideoElement(this.firstVideoElement.targetElement,this.properties.insertMode)}this.videoReference.srcObject=this.stream.getMediaStream()};Publisher.prototype.replaceTrackInMediaStream=function(track,updateLastConstraints){var mediaStream=this.stream.displayMyRemote()?this.stream.localMediaStreamWhenSubscribedToRemote:this.stream.getMediaStream();var removedTrack;if(track.kind==="video"){removedTrack=mediaStream.getVideoTracks()[0];if(updateLastConstraints){this.stream.lastVideoTrackConstraints=track.getConstraints()}}else{removedTrack=mediaStream.getAudioTracks()[0]}removedTrack.enabled=false;removedTrack.stop();mediaStream.removeTrack(removedTrack);mediaStream.addTrack(track);var trackInfo={oldLabel:(removedTrack===null||removedTrack===void 0?void 0:removedTrack.label)||"",newLabel:(track===null||track===void 0?void 0:track.label)||""};if(track.kind==="video"&&updateLastConstraints){this.openvidu.sendNewVideoDimensionsIfRequired(this,"trackReplaced",50,30);this.openvidu.sendTrackChangedEvent(this,trackInfo.oldLabel,trackInfo.newLabel,"videoTrack");if(this.stream.isLocalStreamPublished){this.session.sendVideoData(this.stream.streamManager,5,true,5)}}else if(track.kind==="audio"&&updateLastConstraints){this.openvidu.sendTrackChangedEvent(this,trackInfo.oldLabel,trackInfo.newLabel,"audioTrack")}if(track.kind==="audio"){this.stream.disableHarkSpeakingEvent(false);this.stream.disableHarkStoppedSpeakingEvent(false);this.stream.disableHarkVolumeChangeEvent(false);this.stream.initHarkEvents()}};Publisher.prototype.setPermissionDialogTimer=function(waitTime){var _this=this;this.permissionDialogTimeout=setTimeout((function(){_this.emitEvent("accessDialogOpened",[])}),waitTime)};Publisher.prototype.clearPermissionDialogTimer=function(startTime,waitTime){clearTimeout(this.permissionDialogTimeout);if(Date.now()-startTime>waitTime){this.emitEvent("accessDialogClosed",[])}};Publisher.prototype.replaceTrackInRtcRtpSender=function(track){return __awaiter(this,void 0,void 0,(function(){var senders,sender;return __generator(this,(function(_a){switch(_a.label){case 0:senders=this.stream.getRTCPeerConnection().getSenders();if(track.kind==="video"){sender=senders.find((function(s){return!!s.track&&s.track.kind==="video"}));if(!sender){throw new Error("There's no replaceable track for that kind of MediaStreamTrack in this Publisher object")}}else if(track.kind==="audio"){sender=senders.find((function(s){return!!s.track&&s.track.kind==="audio"}));if(!sender){throw new Error("There's no replaceable track for that kind of MediaStreamTrack in this Publisher object")}}else{throw new Error("Unknown track kind "+track.kind)}return[4,sender.replaceTrack(track)];case 1:_a.sent();return[2]}}))}))};return Publisher}(StreamManager_1.StreamManager);exports.Publisher=Publisher},{"../OpenViduInternal/Enums/OpenViduError":53,"../OpenViduInternal/Enums/TypeOfVideo":54,"../OpenViduInternal/Events/StreamEvent":67,"../OpenViduInternal/Events/StreamPropertyChangedEvent":69,"../OpenViduInternal/Logger/OpenViduLogger":81,"../OpenViduInternal/Utils/Platform":85,"./Session":48,"./Stream":49,"./StreamManager":50}],48:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};Object.defineProperty(exports,"__esModule",{value:true});exports.Session=void 0;var Connection_1=require("./Connection");var Filter_1=require("./Filter");var Subscriber_1=require("./Subscriber");var EventDispatcher_1=require("./EventDispatcher");var ConnectionEvent_1=require("../OpenViduInternal/Events/ConnectionEvent");var FilterEvent_1=require("../OpenViduInternal/Events/FilterEvent");var RecordingEvent_1=require("../OpenViduInternal/Events/RecordingEvent");var SessionDisconnectedEvent_1=require("../OpenViduInternal/Events/SessionDisconnectedEvent");var SignalEvent_1=require("../OpenViduInternal/Events/SignalEvent");var SpeechToTextEvent_1=require("../OpenViduInternal/Events/SpeechToTextEvent");var StreamEvent_1=require("../OpenViduInternal/Events/StreamEvent");var StreamPropertyChangedEvent_1=require("../OpenViduInternal/Events/StreamPropertyChangedEvent");var ConnectionPropertyChangedEvent_1=require("../OpenViduInternal/Events/ConnectionPropertyChangedEvent");var NetworkQualityLevelChangedEvent_1=require("../OpenViduInternal/Events/NetworkQualityLevelChangedEvent");var OpenViduError_1=require("../OpenViduInternal/Enums/OpenViduError");var VideoInsertMode_1=require("../OpenViduInternal/Enums/VideoInsertMode");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var Platform_1=require("../OpenViduInternal/Utils/Platform");var semverMajor=require("semver/functions/major");var semverMinor=require("semver/functions/minor");var ExceptionEvent_1=require("../OpenViduInternal/Events/ExceptionEvent");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var Session=function(_super){__extends(Session,_super);function Session(openvidu){var _this=_super.call(this)||this;_this.streamManagers=[];_this.remoteStreamsCreated=new Map;_this.remoteConnections=new Map;platform=Platform_1.PlatformUtils.getInstance();_this.openvidu=openvidu;return _this}Session.prototype.connect=function(token,metadata){var _this=this;return new Promise((function(resolve,reject){_this.processToken(token);if(_this.openvidu.checkSystemRequirements()){_this.options={sessionId:_this.sessionId,participantId:token,metadata:!!metadata?_this.stringClientMetadata(metadata):""};_this.connectAux(token).then((function(){return resolve()})).catch((function(error){return reject(error)}))}else{return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.BROWSER_NOT_SUPPORTED,"Browser "+platform.getName()+" (version "+platform.getVersion()+") for "+platform.getFamily()+" is not supported in OpenVidu"))}}))};Session.prototype.disconnect=function(){this.leave(false,"disconnect")};Session.prototype.subscribe=function(stream,targetElement,param3,param4){var properties={};if(!!param3&&typeof param3!=="function"){properties={insertMode:typeof param3.insertMode!=="undefined"?typeof param3.insertMode==="string"?VideoInsertMode_1.VideoInsertMode[param3.insertMode]:properties.insertMode:VideoInsertMode_1.VideoInsertMode.APPEND,subscribeToAudio:typeof param3.subscribeToAudio!=="undefined"?param3.subscribeToAudio:true,subscribeToVideo:typeof param3.subscribeToVideo!=="undefined"?param3.subscribeToVideo:true}}else{properties={insertMode:VideoInsertMode_1.VideoInsertMode.APPEND,subscribeToAudio:true,subscribeToVideo:true}}var completionHandler=undefined;if(!!param3&&typeof param3==="function"){completionHandler=param3}else if(!!param4){completionHandler=param4}if(!this.sessionConnected()){if(completionHandler!==undefined){completionHandler(this.notConnectedError())}throw this.notConnectedError()}logger.info("Subscribing to "+stream.connection.connectionId);stream.subscribe().then((function(){logger.info("Subscribed correctly to "+stream.connection.connectionId);if(completionHandler!==undefined){completionHandler(undefined)}})).catch((function(error){if(completionHandler!==undefined){completionHandler(error)}}));var subscriber=new Subscriber_1.Subscriber(stream,targetElement,properties);if(!!subscriber.targetElement){stream.streamManager.createVideoElement(subscriber.targetElement,properties.insertMode)}return subscriber};Session.prototype.subscribeAsync=function(stream,targetElement,properties){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){return reject(_this.notConnectedError())}var subscriber;var callback=function(error){if(!!error){return reject(error)}else{return resolve(subscriber)}};if(!!properties){subscriber=_this.subscribe(stream,targetElement,properties,callback)}else{subscriber=_this.subscribe(stream,targetElement,callback)}}))};Session.prototype.unsubscribe=function(subscriber){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){return reject(_this.notConnectedError())}else{var connectionId_1=subscriber.stream.connection.connectionId;logger.info("Unsubscribing from "+connectionId_1);_this.openvidu.sendRequest("unsubscribeFromVideo",{sender:subscriber.stream.connection.connectionId},(function(error,response){if(error){logger.error("Error unsubscribing from "+connectionId_1);return reject(error)}else{logger.info("Unsubscribed correctly from "+connectionId_1);subscriber.stream.streamManager.removeAllVideos();subscriber.stream.disposeWebRtcPeer();subscriber.stream.disposeMediaStream();return resolve()}}))}}))};Session.prototype.publish=function(publisher){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){return reject(_this.notConnectedError())}publisher.session=_this;publisher.stream.session=_this;if(!publisher.stream.publishedOnce){_this.connection.addStream(publisher.stream);publisher.stream.publish().then((function(){_this.sendVideoData(publisher,8,true,5);return resolve()})).catch((function(error){return reject(error)}))}else{publisher.initialize().then((function(){_this.connection.addStream(publisher.stream);publisher.reestablishStreamPlayingEvent();publisher.stream.publish().then((function(){_this.sendVideoData(publisher,8,true,5);return resolve()})).catch((function(error){return reject(error)}))})).catch((function(error){return reject(error)}))}}))};Session.prototype.unpublish=function(publisher){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){throw _this.notConnectedError()}var stream=publisher.stream;if(!stream.connection){return reject(new Error("The associated Connection object of this Publisher is null"))}else if(stream.connection!==_this.connection){return reject(new Error("The associated Connection object of this Publisher is not your local Connection. "+"Only moderators can force unpublish on remote Streams via 'forceUnpublish' method"))}else{logger.info("Unpublishing local media ("+stream.connection.connectionId+")");_this.openvidu.sendRequest("unpublishVideo",(function(error,response){if(error){return reject(error)}else{logger.info("Media unpublished correctly");stream.disposeWebRtcPeer();if(stream.connection.stream==stream){delete stream.connection.stream}var streamEvent=new StreamEvent_1.StreamEvent(true,publisher,"streamDestroyed",publisher.stream,"unpublish");publisher.emitEvent("streamDestroyed",[streamEvent]);streamEvent.callDefaultBehavior();return resolve()}}))}}))};Session.prototype.forceDisconnect=function(connection){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){return reject(_this.notConnectedError())}logger.info("Forcing disconnect for connection "+connection.connectionId);_this.openvidu.sendRequest("forceDisconnect",{connectionId:connection.connectionId},(function(error,response){if(error){logger.error("Error forcing disconnect for Connection "+connection.connectionId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to force a disconnection"))}else{return reject(error)}}else{logger.info("Forcing disconnect correctly for Connection "+connection.connectionId);return resolve()}}))}))};Session.prototype.forceUnpublish=function(stream){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){return reject(_this.notConnectedError())}logger.info("Forcing unpublish for stream "+stream.streamId);_this.openvidu.sendRequest("forceUnpublish",{streamId:stream.streamId},(function(error,response){if(error){logger.error("Error forcing unpublish for Stream "+stream.streamId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to force an unpublishing"))}else{return reject(error)}}else{logger.info("Forcing unpublish correctly for Stream "+stream.streamId);return resolve()}}))}))};Session.prototype.signal=function(signal){var _this=this;return new Promise((function(resolve,reject){if(!_this.sessionConnected()){return reject(_this.notConnectedError())}var signalMessage={};if(signal.to&&signal.to.length>0){var connectionIds_1=[];signal.to.forEach((function(connection){if(!!connection.connectionId){connectionIds_1.push(connection.connectionId)}}));signalMessage["to"]=connectionIds_1}else{signalMessage["to"]=[]}signalMessage["data"]=signal.data?signal.data:"";var typeAux=signal.type?signal.type:"signal";if(!!typeAux){if(typeAux.substring(0,7)!=="signal:"){typeAux="signal:"+typeAux}}signalMessage["type"]=typeAux;_this.openvidu.sendRequest("sendMessage",{message:JSON.stringify(signalMessage)},(function(error,response){if(!!error){return reject(error)}else{return resolve()}}))}))};Session.prototype.subscribeToSpeechToText=function(stream,lang){var _this=this;return new Promise((function(resolve,reject){_this.openvidu.sendRequest("subscribeToSpeechToText",{connectionId:stream.connection.connectionId,lang:lang},(function(error,response){if(!!error){return reject(error)}else{return resolve()}}))}))};Session.prototype.unsubscribeFromSpeechToText=function(stream){var _this=this;return new Promise((function(resolve,reject){_this.openvidu.sendRequest("unsubscribeFromSpeechToText",{connectionId:stream.connection.connectionId},(function(error,response){if(!!error){return reject(error)}else{return resolve()}}))}))};Session.prototype.on=function(type,handler){var _a,_b,_c,_d;_super.prototype.onAux.call(this,type,"Event '"+type+"' triggered by 'Session'",handler);if(type==="publisherStartSpeaking"){this.remoteConnections.forEach((function(remoteConnection){var _a;if(!!((_a=remoteConnection.stream)===null||_a===void 0?void 0:_a.hasAudio)){remoteConnection.stream.enableHarkSpeakingEvent()}}));if(!!((_b=(_a=this.connection)===null||_a===void 0?void 0:_a.stream)===null||_b===void 0?void 0:_b.hasAudio)){this.connection.stream.enableHarkSpeakingEvent()}}if(type==="publisherStopSpeaking"){this.remoteConnections.forEach((function(remoteConnection){var _a;if(!!((_a=remoteConnection.stream)===null||_a===void 0?void 0:_a.hasAudio)){remoteConnection.stream.enableHarkStoppedSpeakingEvent()}}));if(!!((_d=(_c=this.connection)===null||_c===void 0?void 0:_c.stream)===null||_d===void 0?void 0:_d.hasAudio)){this.connection.stream.enableHarkStoppedSpeakingEvent()}}return this};Session.prototype.once=function(type,handler){var _a,_b,_c,_d;_super.prototype.onceAux.call(this,type,"Event '"+type+"' triggered once by 'Session'",handler);if(type==="publisherStartSpeaking"){this.remoteConnections.forEach((function(remoteConnection){var _a;if(!!((_a=remoteConnection.stream)===null||_a===void 0?void 0:_a.hasAudio)){remoteConnection.stream.enableOnceHarkSpeakingEvent()}}));if(!!((_b=(_a=this.connection)===null||_a===void 0?void 0:_a.stream)===null||_b===void 0?void 0:_b.hasAudio)){this.connection.stream.enableOnceHarkSpeakingEvent()}}if(type==="publisherStopSpeaking"){this.remoteConnections.forEach((function(remoteConnection){var _a;if(!!((_a=remoteConnection.stream)===null||_a===void 0?void 0:_a.hasAudio)){remoteConnection.stream.enableOnceHarkStoppedSpeakingEvent()}}));if(!!((_d=(_c=this.connection)===null||_c===void 0?void 0:_c.stream)===null||_d===void 0?void 0:_d.hasAudio)){this.connection.stream.enableOnceHarkStoppedSpeakingEvent()}}return this};Session.prototype.off=function(type,handler){var _this=this;var _a,_b,_c,_d;_super.prototype.offAux.call(this,type,handler);if(type==="publisherStartSpeaking"){if(!this.anySpeechEventListenerEnabled("publisherStartSpeaking",false)){this.remoteConnections.forEach((function(remoteConnection){var _a;if(!!((_a=remoteConnection.stream)===null||_a===void 0?void 0:_a.streamManager)){if(!_this.anySpeechEventListenerEnabled("publisherStartSpeaking",false,remoteConnection.stream.streamManager)){remoteConnection.stream.disableHarkSpeakingEvent(false)}}}));if(!!((_b=(_a=this.connection)===null||_a===void 0?void 0:_a.stream)===null||_b===void 0?void 0:_b.streamManager)){if(!this.anySpeechEventListenerEnabled("publisherStartSpeaking",false,this.connection.stream.streamManager)){this.connection.stream.disableHarkSpeakingEvent(false)}}}}if(type==="publisherStopSpeaking"){if(!this.anySpeechEventListenerEnabled("publisherStopSpeaking",false)){this.remoteConnections.forEach((function(remoteConnection){var _a;if(!!((_a=remoteConnection.stream)===null||_a===void 0?void 0:_a.streamManager)){if(!_this.anySpeechEventListenerEnabled("publisherStopSpeaking",false,remoteConnection.stream.streamManager)){remoteConnection.stream.disableHarkStoppedSpeakingEvent(false)}}}));if(!!((_d=(_c=this.connection)===null||_c===void 0?void 0:_c.stream)===null||_d===void 0?void 0:_d.streamManager)){if(!this.anySpeechEventListenerEnabled("publisherStopSpeaking",false,this.connection.stream.streamManager)){this.connection.stream.disableHarkStoppedSpeakingEvent(false)}}}}return this};Session.prototype.onParticipantJoined=function(event){var _this=this;this.getConnection(event.id,"").then((function(connection){logger.warn("Connection "+connection.connectionId+" already exists in connections list")})).catch((function(openViduError){var connection=new Connection_1.Connection(_this,event);_this.remoteConnections.set(event.id,connection);_this.ee.emitEvent("connectionCreated",[new ConnectionEvent_1.ConnectionEvent(false,_this,"connectionCreated",connection,"")])}))};Session.prototype.onParticipantLeft=function(event){var _this=this;this.getRemoteConnection(event.connectionId,"onParticipantLeft").then((function(connection){if(!!connection.stream){var stream=connection.stream;var streamEvent=new StreamEvent_1.StreamEvent(true,_this,"streamDestroyed",stream,event.reason);_this.ee.emitEvent("streamDestroyed",[streamEvent]);streamEvent.callDefaultBehavior();_this.remoteStreamsCreated.delete(stream.streamId)}connection.dispose();_this.remoteConnections.delete(connection.connectionId);_this.ee.emitEvent("connectionDestroyed",[new ConnectionEvent_1.ConnectionEvent(false,_this,"connectionDestroyed",connection,event.reason)])})).catch((function(openViduError){logger.error(openViduError)}))};Session.prototype.onParticipantPublished=function(event){var _this=this;var afterConnectionFound=function(connection){_this.remoteConnections.set(connection.connectionId,connection);if(!_this.remoteStreamsCreated.get(connection.stream.streamId)){_this.ee.emitEvent("streamCreated",[new StreamEvent_1.StreamEvent(false,_this,"streamCreated",connection.stream,"")])}_this.remoteStreamsCreated.set(connection.stream.streamId,true)};var connection;this.getRemoteConnection(event.id,"onParticipantPublished").then((function(con){connection=con;event.metadata=con.data;connection.remoteOptions=event;connection.initRemoteStreams(event.streams);afterConnectionFound(connection)})).catch((function(openViduError){connection=new Connection_1.Connection(_this,event);afterConnectionFound(connection)}))};Session.prototype.onParticipantUnpublished=function(event){var _this=this;if(event.connectionId===this.connection.connectionId){this.stopPublisherStream(event.reason)}else{this.getRemoteConnection(event.connectionId,"onParticipantUnpublished").then((function(connection){var streamEvent=new StreamEvent_1.StreamEvent(true,_this,"streamDestroyed",connection.stream,event.reason);_this.ee.emitEvent("streamDestroyed",[streamEvent]);streamEvent.callDefaultBehavior();if(connection.stream!=null){var streamId=connection.stream.streamId;_this.remoteStreamsCreated.delete(streamId);connection.removeStream()}})).catch((function(openViduError){logger.error(openViduError)}))}};Session.prototype.onParticipantEvicted=function(event){if(event.connectionId===this.connection.connectionId){if(!!this.sessionId&&!this.connection.disposed){this.leave(true,event.reason)}}};Session.prototype.onNewMessage=function(event){var _this=this;logger.info("New signal: "+JSON.stringify(event));var strippedType=!!event.type?event.type.replace(/^(signal:)/,""):undefined;if(!!event.from){this.getConnection(event.from,"Connection '"+event.from+"' unknown when 'onNewMessage'. Existing remote connections: "+JSON.stringify(this.remoteConnections.keys())+". Existing local connection: "+this.connection.connectionId).then((function(connection){_this.ee.emitEvent("signal",[new SignalEvent_1.SignalEvent(_this,strippedType,event.data,connection)]);if(!!event.type&&event.type!=="signal"){_this.ee.emitEvent(event.type,[new SignalEvent_1.SignalEvent(_this,strippedType,event.data,connection)])}})).catch((function(openViduError){logger.error(openViduError)}))}else{this.ee.emitEvent("signal",[new SignalEvent_1.SignalEvent(this,strippedType,event.data,undefined)]);if(!!event.type&&event.type!=="signal"){this.ee.emitEvent(event.type,[new SignalEvent_1.SignalEvent(this,strippedType,event.data,undefined)])}}};Session.prototype.onStreamPropertyChanged=function(event){var _this=this;var callback=function(connection){if(!!connection.stream&&connection.stream.streamId===event.streamId){var stream=connection.stream;var oldValue=void 0;switch(event.property){case"audioActive":oldValue=stream.audioActive;event.newValue=event.newValue==="true";stream.audioActive=event.newValue;break;case"videoActive":oldValue=stream.videoActive;event.newValue=event.newValue==="true";stream.videoActive=event.newValue;break;case"videoTrack":event.newValue=JSON.parse(event.newValue);break;case"audioTrack":event.newValue=JSON.parse(event.newValue);break;case"videoDimensions":oldValue=stream.videoDimensions;event.newValue=JSON.parse(JSON.parse(event.newValue));stream.videoDimensions=event.newValue;break;case"filter":oldValue=stream.filter;event.newValue=Object.keys(event.newValue).length>0?event.newValue:undefined;if(event.newValue!==undefined){stream.filter=new Filter_1.Filter(event.newValue.type,event.newValue.options);stream.filter.stream=stream;if(event.newValue.lastExecMethod){stream.filter.lastExecMethod=event.newValue.lastExecMethod}}else{delete stream.filter}event.newValue=stream.filter;break}_this.ee.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this,stream,event.property,event.newValue,oldValue,event.reason)]);if(!!stream.streamManager){stream.streamManager.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(stream.streamManager,stream,event.property,event.newValue,oldValue,event.reason)])}}else{logger.error("No stream with streamId '"+event.streamId+"' found for connection '"+event.connectionId+"' on 'streamPropertyChanged' event")}};if(event.connectionId===this.connection.connectionId){callback(this.connection)}else{this.getRemoteConnection(event.connectionId,"onStreamPropertyChanged").then((function(connection){callback(connection)})).catch((function(openViduError){logger.error(openViduError)}))}};Session.prototype.onConnectionPropertyChanged=function(event){var oldValue;switch(event.property){case"role":oldValue=this.connection.role.slice();this.connection.role=event.newValue;this.connection.localOptions.role=event.newValue;break;case"record":oldValue=this.connection.record;event.newValue=event.newValue==="true";this.connection.record=event.newValue;this.connection.localOptions.record=event.newValue;break}this.ee.emitEvent("connectionPropertyChanged",[new ConnectionPropertyChangedEvent_1.ConnectionPropertyChangedEvent(this,this.connection,event.property,event.newValue,oldValue)])};Session.prototype.onNetworkQualityLevelChangedChanged=function(event){var _this=this;if(event.connectionId===this.connection.connectionId){this.ee.emitEvent("networkQualityLevelChanged",[new NetworkQualityLevelChangedEvent_1.NetworkQualityLevelChangedEvent(this,event.newValue,event.oldValue,this.connection)])}else{this.getConnection(event.connectionId,"Connection not found for connectionId "+event.connectionId).then((function(connection){_this.ee.emitEvent("networkQualityLevelChanged",[new NetworkQualityLevelChangedEvent_1.NetworkQualityLevelChangedEvent(_this,event.newValue,event.oldValue,connection)])})).catch((function(openViduError){logger.error(openViduError)}))}};Session.prototype.recvIceCandidate=function(event){var candidateInit={candidate:event.candidate,sdpMLineIndex:event.sdpMLineIndex,sdpMid:event.sdpMid};var iceCandidate=new RTCIceCandidate(candidateInit);this.getConnection(event.senderConnectionId,"Connection not found for connectionId "+event.senderConnectionId+" owning endpoint "+event.endpointName+". Ice candidate will be ignored: "+iceCandidate).then((function(connection){var stream=connection.stream;stream.getWebRtcPeer().addIceCandidate(iceCandidate).catch((function(error){logger.error("Error adding candidate for "+stream.streamId+" stream of endpoint "+event.endpointName+": "+error)}))})).catch((function(openViduError){logger.error(openViduError)}))};Session.prototype.onSessionClosed=function(msg){logger.info("Session closed: "+JSON.stringify(msg));var s=msg.sessionId;if(s!==undefined){this.ee.emitEvent("session-closed",[{session:s}])}else{logger.warn("Session undefined on session closed",msg)}};Session.prototype.onLostConnection=function(reason){logger.warn("Lost connection in Session "+this.sessionId);if(!!this.sessionId&&!!this.connection&&!this.connection.disposed){this.leave(true,reason)}};Session.prototype.onRecoveredConnection=function(){logger.info("Recovered connection in Session "+this.sessionId);this.reconnectBrokenStreams();this.ee.emitEvent("reconnected",[])};Session.prototype.onMediaError=function(event){logger.error("Media error: "+JSON.stringify(event));var err=event.error;if(err){this.ee.emitEvent("error-media",[{error:err}])}else{logger.warn("Received undefined media error:",event)}};Session.prototype.onRecordingStarted=function(event){this.ee.emitEvent("recordingStarted",[new RecordingEvent_1.RecordingEvent(this,"recordingStarted",event.id,event.name)])};Session.prototype.onRecordingStopped=function(event){this.ee.emitEvent("recordingStopped",[new RecordingEvent_1.RecordingEvent(this,"recordingStopped",event.id,event.name,event.reason)])};Session.prototype.onBroadcastStarted=function(){this.ee.emitEvent("broadcastStarted",[])};Session.prototype.onBroadcastStopped=function(){this.ee.emitEvent("broadcastStopped",[])};Session.prototype.onFilterEventDispatched=function(event){var _this=this;var connectionId=event.connectionId;this.getConnection(connectionId,"No connection found for connectionId "+connectionId).then((function(connection){logger.info('Filter event of type "'.concat(event.eventType,'" dispatched'));var stream=connection.stream;if(!stream||!stream.filter){return logger.error('Filter event of type "'.concat(event.eventType,'" dispatched for stream ').concat(stream.streamId," but there is no ").concat(!stream?"stream":"filter"," defined"))}var eventHandler=stream.filter.handlers.get(event.eventType);if(!eventHandler||typeof eventHandler!=="function"){var actualHandlers=Array.from(stream.filter.handlers.keys());return logger.error('Filter event of type "'.concat(event.eventType,'" not handled or not a function! Active filter events: ').concat(actualHandlers.join(",")))}else{eventHandler.call(_this,new FilterEvent_1.FilterEvent(stream.filter,event.eventType,event.data))}}))};Session.prototype.onForciblyReconnectSubscriber=function(event){var _this=this;return new Promise((function(resolve,reject){_this.getRemoteConnection(event.connectionId,"onForciblyReconnectSubscriber").then((function(connection){if(!!connection.stream&&connection.stream.streamId===event.streamId){var stream_1=connection.stream;if(stream_1.setupReconnectionEventEmitter(resolve,reject)){if(stream_1.reconnectionEventEmitter["onForciblyReconnectSubscriberLastEvent"]!=null){stream_1.reconnectionEventEmitter["onForciblyReconnectSubscriberLastEvent"]=event;return reject("Ongoing forced subscriber reconnection")}else{stream_1.reconnectionEventEmitter["onForciblyReconnectSubscriberLastEvent"]=event;var callback_1=function(){var eventAux=stream_1.reconnectionEventEmitter["onForciblyReconnectSubscriberLastEvent"];delete stream_1.reconnectionEventEmitter["onForciblyReconnectSubscriberLastEvent"];_this.onForciblyReconnectSubscriber(eventAux)};stream_1.reconnectionEventEmitter.once("success",(function(){callback_1()}));stream_1.reconnectionEventEmitter.once("error",(function(){callback_1()}))}return}stream_1.completeWebRtcPeerReceive(true,true,event.sdpOffer).then((function(){return stream_1.finalResolveForSubscription(true,resolve)})).catch((function(error){return stream_1.finalRejectForSubscription(true,"Error while forcibly reconnecting remote stream ".concat(event.streamId,": ").concat(error.toString()),reject)}))}else{var errMsg="No stream with streamId '"+event.streamId+"' found for connection '"+event.connectionId+"' on 'streamPropertyChanged' event";logger.error(errMsg);return reject(errMsg)}})).catch((function(openViduError){logger.error(openViduError);return reject(openViduError)}))}))};Session.prototype.reconnectBrokenStreams=function(){logger.info("Re-establishing media connections...");var someReconnection=false;if(!!this.connection.stream&&this.connection.stream.streamIceConnectionStateBroken()){logger.warn("Re-establishing Publisher "+this.connection.stream.streamId);this.connection.stream.initWebRtcPeerSend(true);someReconnection=true}this.remoteConnections.forEach((function(remoteConnection){if(!!remoteConnection.stream&&remoteConnection.stream.streamIceConnectionStateBroken()){logger.warn("Re-establishing Subscriber "+remoteConnection.stream.streamId);remoteConnection.stream.initWebRtcPeerReceive(true);someReconnection=true}}));if(!someReconnection){logger.info("There were no media streams in need of a reconnection")}};Session.prototype.onSpeechToTextMessage=function(event){return __awaiter(this,void 0,void 0,(function(){var connection,ev;return __generator(this,(function(_a){switch(_a.label){case 0:return[4,this.getConnection(event.connectionId,"No connection found for connectionId "+event.connectionId)];case 1:connection=_a.sent();ev=new SpeechToTextEvent_1.SpeechToTextEvent(this,connection,event.text,event.reason.toLowerCase(),event.raw,event.lang);this.ee.emitEvent("speechToTextMessage",[ev]);return[2]}}))}))};Session.prototype.onSpeechToTextDisconnected=function(event){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a){this.emitEvent("exception",[new ExceptionEvent_1.ExceptionEvent(this,ExceptionEvent_1.ExceptionEventName.SPEECH_TO_TEXT_DISCONNECTED,this,event.message)]);return[2]}))}))};Session.prototype.emitEvent=function(type,eventArray){this.ee.emitEvent(type,eventArray)};Session.prototype.leave=function(forced,reason){var _this=this;forced=!!forced;logger.info("Leaving Session (forced="+forced+")");this.stopVideoDataIntervals();if(!!this.connection){if(!this.connection.disposed&&!forced){this.openvidu.sendRequest("leaveRoom",(function(error,response){if(error){logger.error("leaveRoom error: ".concat(JSON.stringify(error)))}_this.openvidu.closeWs()}))}else{this.openvidu.closeWs()}this.stopPublisherStream(reason);if(!this.connection.disposed){var sessionDisconnectEvent=new SessionDisconnectedEvent_1.SessionDisconnectedEvent(this,reason);this.ee.emitEvent("sessionDisconnected",[sessionDisconnectEvent]);sessionDisconnectEvent.callDefaultBehavior()}}else{logger.warn("You were not connected to the session "+this.sessionId)}logger.flush()};Session.prototype.initializeParams=function(token){var joinParams={token:!!token?token:"",session:this.sessionId,platform:!!platform.getDescription()?platform.getDescription():"unknown",sdkVersion:this.openvidu.libraryVersion,metadata:!!this.options.metadata?this.options.metadata:"",secret:this.openvidu.getSecret(),recorder:this.openvidu.getRecorder(),stt:this.openvidu.getStt()};return joinParams};Session.prototype.sendVideoData=function(streamManager,intervalSeconds,doInterval,maxLoops){var _this=this;var _a,_b;if(intervalSeconds===void 0){intervalSeconds=1}if(doInterval===void 0){doInterval=false}if(maxLoops===void 0){maxLoops=1}if(platform.isChromeBrowser()||platform.isChromeMobileBrowser()||platform.isOperaBrowser()||platform.isOperaMobileBrowser()||platform.isEdgeBrowser()||platform.isEdgeMobileBrowser()||platform.isElectron()||platform.isSafariBrowser()&&!platform.isIonicIos()||platform.isAndroidBrowser()||platform.isSamsungBrowser()||platform.isIonicAndroid()||platform.isIOSWithSafari()){var obtainAndSendVideo_1=function(){return __awaiter(_this,void 0,void 0,(function(){var pc,statsMap,arr_1;return __generator(this,(function(_a){switch(_a.label){case 0:pc=streamManager.stream.getRTCPeerConnection();if(!(pc.connectionState==="connected"))return[3,2];return[4,pc.getStats()];case 1:statsMap=_a.sent();arr_1=[];statsMap.forEach((function(stats){if("frameWidth"in stats&&"frameHeight"in stats&&arr_1.length===0){arr_1.push(stats)}}));if(arr_1.length>0){this.openvidu.sendRequest("videoData",{height:arr_1[0].frameHeight,width:arr_1[0].frameWidth,videoActive:streamManager.stream.videoActive!=null?streamManager.stream.videoActive:false,audioActive:streamManager.stream.audioActive!=null?streamManager.stream.audioActive:false},(function(error,response){if(error){logger.error("Error sending 'videoData' event",error)}}))}_a.label=2;case 2:return[2]}}))}))};if(doInterval){var loops_1=1;this.videoDataInterval=setInterval((function(){if(loops_1<maxLoops){loops_1++;obtainAndSendVideo_1()}else{clearInterval(_this.videoDataInterval)}}),intervalSeconds*1e3)}else{this.videoDataTimeout=setTimeout(obtainAndSendVideo_1,intervalSeconds*1e3)}}else if(platform.isFirefoxBrowser()||platform.isFirefoxMobileBrowser()||platform.isIonicIos()||platform.isReactNative()){this.openvidu.sendRequest("videoData",{height:((_a=streamManager.stream.videoDimensions)===null||_a===void 0?void 0:_a.height)||0,width:((_b=streamManager.stream.videoDimensions)===null||_b===void 0?void 0:_b.width)||0,videoActive:streamManager.stream.videoActive!=null?streamManager.stream.videoActive:false,audioActive:streamManager.stream.audioActive!=null?streamManager.stream.audioActive:false},(function(error,response){if(error){logger.error("Error sending 'videoData' event",error)}}))}else{logger.error("Browser "+platform.getName()+" (version "+platform.getVersion()+") for "+platform.getFamily()+" is not supported in OpenVidu for Network Quality")}};Session.prototype.sessionConnected=function(){return this.connection!=null};Session.prototype.notConnectedError=function(){return new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_NOT_CONNECTED,"There is no connection to the session. Method 'Session.connect' must be successfully completed first")};Session.prototype.anySpeechEventListenerEnabled=function(event,onlyOnce,streamManager){var handlersInSession=this.ee.getListeners(event);if(onlyOnce){handlersInSession=handlersInSession.filter((function(h){return h.once}))}var listenersInSession=handlersInSession.length;if(listenersInSession>0)return true;var listenersInStreamManager=0;if(!!streamManager){var handlersInStreamManager=streamManager.ee.getListeners(event);if(onlyOnce){handlersInStreamManager=handlersInStreamManager.filter((function(h){return h.once}))}listenersInStreamManager=handlersInStreamManager.length}return listenersInStreamManager>0};Session.prototype.getTokenParams=function(token){var match=token.match(/^(wss?)\:\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/);if(!!match){var url={protocol:match[1],host:match[2],hostname:match[3],port:match[4],pathname:match[5],search:match[6],hash:match[7]};var params=token.split("?");var queryParams=decodeURI(params[1]).split("&").map((function(param){return param.split("=")})).reduce((function(values,_a){var key=_a[0],value=_a[1];values[key]=value;return values}),{});return{sessionId:queryParams["sessionId"],secret:queryParams["secret"],recorder:queryParams["recorder"],stt:queryParams["stt"],webrtcStatsInterval:queryParams["webrtcStatsInterval"],sendBrowserLogs:queryParams["sendBrowserLogs"],edition:queryParams["edition"],wsUri:url.protocol+"://"+url.host+"/openvidu",httpUri:"https://"+url.host}}else{throw new Error('Token not valid: "'.concat(token,'"'))}};Session.prototype.connectAux=function(token){var _this=this;return new Promise((function(resolve,reject){_this.openvidu.startWs((function(error){if(!!error){return reject(error)}else{var joinParams=_this.initializeParams(token);_this.openvidu.sendRequest("joinRoom",joinParams,(function(error,response){if(!!error){return reject(error)}else{_this.processJoinRoomResponse(response,token);_this.connection=new Connection_1.Connection(_this,response);var events_1={connections:new Array,streams:new Array};var existingParticipants=response.value;existingParticipants.forEach((function(remoteConnectionOptions){var connection=new Connection_1.Connection(_this,remoteConnectionOptions);_this.remoteConnections.set(connection.connectionId,connection);events_1.connections.push(connection);if(!!connection.stream){_this.remoteStreamsCreated.set(connection.stream.streamId,true);events_1.streams.push(connection.stream)}}));_this.ee.emitEvent("connectionCreated",[new ConnectionEvent_1.ConnectionEvent(false,_this,"connectionCreated",_this.connection,"")]);events_1.connections.forEach((function(connection){_this.ee.emitEvent("connectionCreated",[new ConnectionEvent_1.ConnectionEvent(false,_this,"connectionCreated",connection,"")])}));events_1.streams.forEach((function(stream){_this.ee.emitEvent("streamCreated",[new StreamEvent_1.StreamEvent(false,_this,"streamCreated",stream,"")])}));if(!!response.recordingId&&!!response.recordingName){_this.ee.emitEvent("recordingStarted",[new RecordingEvent_1.RecordingEvent(_this,"recordingStarted",response.recordingId,response.recordingName)])}return resolve()}}))}}))}))};Session.prototype.stopPublisherStream=function(reason){if(!!this.connection.stream){this.connection.stream.disposeWebRtcPeer();if(this.connection.stream.isLocalStreamPublished){this.connection.stream.ee.emitEvent("local-stream-destroyed",[reason])}}};Session.prototype.stopVideoDataIntervals=function(){clearInterval(this.videoDataInterval);clearTimeout(this.videoDataTimeout)};Session.prototype.stringClientMetadata=function(metadata){if(typeof metadata!=="string"){return JSON.stringify(metadata)}else{return metadata}};Session.prototype.getConnection=function(connectionId,errorMessage){var _this=this;return new Promise((function(resolve,reject){var connection=_this.remoteConnections.get(connectionId);if(!!connection){return resolve(connection)}else{if(_this.connection.connectionId===connectionId){return resolve(_this.connection)}else{return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.GENERIC_ERROR,errorMessage))}}}))};Session.prototype.getRemoteConnection=function(connectionId,operation){var _this=this;return new Promise((function(resolve,reject){var connection=_this.remoteConnections.get(connectionId);if(!!connection){return resolve(connection)}else{var errorMessage="Remote connection "+connectionId+" unknown when '"+operation+"'. "+"Existing remote connections: "+JSON.stringify(_this.remoteConnections.keys());return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.GENERIC_ERROR,errorMessage))}}))};Session.prototype.processToken=function(token){var tokenParams=this.getTokenParams(token);this.sessionId=tokenParams.sessionId;if(!!tokenParams.secret){this.openvidu.secret=tokenParams.secret}if(!!tokenParams.recorder){this.openvidu.recorder=true}if(!!tokenParams.stt){this.openvidu.stt=true}if(!!tokenParams.webrtcStatsInterval){this.openvidu.webrtcStatsInterval=tokenParams.webrtcStatsInterval}if(!!tokenParams.sendBrowserLogs){this.openvidu.sendBrowserLogs=tokenParams.sendBrowserLogs}this.openvidu.isAtLeastPro=tokenParams.edition==="pro"||tokenParams.edition==="enterprise";this.openvidu.isEnterprise=tokenParams.edition==="enterprise";this.openvidu.wsUri=tokenParams.wsUri;this.openvidu.httpUri=tokenParams.httpUri};Session.prototype.processJoinRoomResponse=function(opts,token){this.sessionId=opts.session;if(opts.customIceServers!=null&&opts.customIceServers.length>0){this.openvidu.iceServers=[];for(var _i=0,_a=opts.customIceServers;_i<_a.length;_i++){var iceServer=_a[_i];var rtcIceServer={urls:[iceServer.url]};logger.log("STUN/TURN server IP: "+iceServer.url);if(iceServer.username!=null&&iceServer.credential!=null){rtcIceServer.username=iceServer.username;rtcIceServer.credential=iceServer.credential;logger.log("TURN credentials ["+iceServer.username+":"+iceServer.credential+"]")}this.openvidu.iceServers.push(rtcIceServer)}}this.openvidu.role=opts.role;this.openvidu.finalUserId=opts.finalUserId;this.openvidu.mediaServer=opts.mediaServer;this.openvidu.videoSimulcast=opts.videoSimulcast;this.capabilities={subscribe:true,publish:this.openvidu.role!=="SUBSCRIBER",forceUnpublish:this.openvidu.role==="MODERATOR",forceDisconnect:this.openvidu.role==="MODERATOR"};logger.info("openvidu-server version: "+opts.version);if(opts.life!=null){this.openvidu.life=opts.life}var minorDifference=semverMinor(opts.version)-semverMinor(this.openvidu.libraryVersion);if(semverMajor(opts.version)!==semverMajor(this.openvidu.libraryVersion)||!(minorDifference==0||minorDifference==1)){logger.error("openvidu-browser (".concat(this.openvidu.libraryVersion,") and openvidu-server (").concat(opts.version,") versions are incompatible. ")+"Errors are likely to occur. openvidu-browser SDK is only compatible with the same version or the immediately following minor version of an OpenVidu deployment")}else if(minorDifference==1){logger.warn("openvidu-browser version ".concat(this.openvidu.libraryVersion," does not match openvidu-server version ").concat(opts.version,". ")+"These versions are still compatible with each other, but openvidu-browser version must be updated as soon as possible to ".concat(semverMajor(opts.version),".").concat(semverMinor(opts.version),".x. ")+"This client using openvidu-browser ".concat(this.openvidu.libraryVersion," will become incompatible with the next release of openvidu-server"))}OpenViduLogger_1.OpenViduLogger.configureJSNLog(this.openvidu,token);this.token=token};return Session}(EventDispatcher_1.EventDispatcher);exports.Session=Session},{"../OpenViduInternal/Enums/OpenViduError":53,"../OpenViduInternal/Enums/VideoInsertMode":55,"../OpenViduInternal/Events/ConnectionEvent":56,"../OpenViduInternal/Events/ConnectionPropertyChangedEvent":57,"../OpenViduInternal/Events/ExceptionEvent":59,"../OpenViduInternal/Events/FilterEvent":60,"../OpenViduInternal/Events/NetworkQualityLevelChangedEvent":61,"../OpenViduInternal/Events/RecordingEvent":63,"../OpenViduInternal/Events/SessionDisconnectedEvent":64,"../OpenViduInternal/Events/SignalEvent":65,"../OpenViduInternal/Events/SpeechToTextEvent":66,"../OpenViduInternal/Events/StreamEvent":67,"../OpenViduInternal/Events/StreamPropertyChangedEvent":69,"../OpenViduInternal/Logger/OpenViduLogger":81,"../OpenViduInternal/Utils/Platform":85,"./Connection":42,"./EventDispatcher":43,"./Filter":44,"./Subscriber":51,"semver/functions/major":15,"semver/functions/minor":16}],49:[function(require,module,exports){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};Object.defineProperty(exports,"__esModule",{value:true});exports.Stream=void 0;var Filter_1=require("./Filter");var Subscriber_1=require("./Subscriber");var WebRtcPeer_1=require("../OpenViduInternal/WebRtcPeer/WebRtcPeer");var WebRtcStats_1=require("../OpenViduInternal/WebRtcStats/WebRtcStats");var ExceptionEvent_1=require("../OpenViduInternal/Events/ExceptionEvent");var PublisherSpeakingEvent_1=require("../OpenViduInternal/Events/PublisherSpeakingEvent");var StreamManagerEvent_1=require("../OpenViduInternal/Events/StreamManagerEvent");var StreamPropertyChangedEvent_1=require("../OpenViduInternal/Events/StreamPropertyChangedEvent");var OpenViduError_1=require("../OpenViduInternal/Enums/OpenViduError");var TypeOfVideo_1=require("../OpenViduInternal/Enums/TypeOfVideo");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var Platform_1=require("../OpenViduInternal/Utils/Platform");var uuid_1=require("uuid");var hark=require("hark");var EventEmitter=require("wolfy87-eventemitter");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var Stream=function(){function Stream(session,options){var _this=this;this.isSubscribeToRemote=false;this.isLocalStreamReadyToPublish=false;this.isLocalStreamPublished=false;this.publishedOnce=false;this.harkSpeakingEnabled=false;this.harkSpeakingEnabledOnce=false;this.harkStoppedSpeakingEnabled=false;this.harkStoppedSpeakingEnabledOnce=false;this.harkVolumeChangeEnabled=false;this.harkVolumeChangeEnabledOnce=false;this.ee=new EventEmitter;platform=Platform_1.PlatformUtils.getInstance();this.session=session;if(options.hasOwnProperty("id")){this.inboundStreamOpts=options;this.streamId=this.inboundStreamOpts.id;this.creationTime=this.inboundStreamOpts.createdAt;this.hasAudio=this.inboundStreamOpts.hasAudio;this.hasVideo=this.inboundStreamOpts.hasVideo;if(this.hasAudio){this.audioActive=this.inboundStreamOpts.audioActive}if(this.hasVideo){this.videoActive=this.inboundStreamOpts.videoActive;this.typeOfVideo=!this.inboundStreamOpts.typeOfVideo?undefined:this.inboundStreamOpts.typeOfVideo;this.frameRate=this.inboundStreamOpts.frameRate===-1?undefined:this.inboundStreamOpts.frameRate;this.videoDimensions=this.inboundStreamOpts.videoDimensions}if(!!this.inboundStreamOpts.filter&&Object.keys(this.inboundStreamOpts.filter).length>0){if(!!this.inboundStreamOpts.filter.lastExecMethod&&Object.keys(this.inboundStreamOpts.filter.lastExecMethod).length===0){delete this.inboundStreamOpts.filter.lastExecMethod}this.filter=this.inboundStreamOpts.filter}}else{this.outboundStreamOpts=options;this.hasAudio=this.isSendAudio();this.hasVideo=this.isSendVideo();if(this.hasAudio){this.audioActive=!!this.outboundStreamOpts.publisherProperties.publishAudio}if(this.hasVideo){this.videoActive=!!this.outboundStreamOpts.publisherProperties.publishVideo;this.frameRate=this.outboundStreamOpts.publisherProperties.frameRate;if(typeof MediaStreamTrack!=="undefined"&&this.outboundStreamOpts.publisherProperties.videoSource instanceof MediaStreamTrack){this.typeOfVideo=TypeOfVideo_1.TypeOfVideo.CUSTOM}else{this.typeOfVideo=this.isSendScreen()?TypeOfVideo_1.TypeOfVideo.SCREEN:TypeOfVideo_1.TypeOfVideo.CAMERA}}if(!!this.outboundStreamOpts.publisherProperties.filter){this.filter=this.outboundStreamOpts.publisherProperties.filter}}this.ee.on("mediastream-updated",(function(){var _a;_this.streamManager.updateMediaStream(_this.mediaStream);logger.debug("Video srcObject ["+((_a=_this.mediaStream)===null||_a===void 0?void 0:_a.id)+"] updated in stream ["+_this.streamId+"]")}))}Stream.prototype.reconnect=function(){return this.reconnectStream("API")};Stream.prototype.applyFilter=function(type,options){var _this=this;return new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var resolveApplyFilter,openviduToken_1,tokenParams_1,afterScriptLoaded_1,script,optionsString;var _this=this;return __generator(this,(function(_a){if(!!this.filter){return[2,reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.GENERIC_ERROR,"There is already a filter applied to Stream "+this.streamId))]}resolveApplyFilter=function(error,triggerEvent){if(error){logger.error("Error applying filter for Stream "+_this.streamId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to apply a filter"))}else{return reject(error)}}else{logger.info("Filter successfully applied on Stream "+_this.streamId);var oldValue=_this.filter;_this.filter=new Filter_1.Filter(type,options);_this.filter.stream=_this;if(triggerEvent){_this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.session,_this,"filter",_this.filter,oldValue,"applyFilter")]);_this.streamManager.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.streamManager,_this,"filter",_this.filter,oldValue,"applyFilter")])}return resolve(_this.filter)}};if(type.startsWith("VB:")){if(!this.hasVideo){return[2,reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,"The Virtual Background filter requires a video track to be applied"))]}if(!this.mediaStream||this.streamManager.videos.length===0){return[2,reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,"The StreamManager requires some video element to be attached to it in order to apply a Virtual Background filter"))]}if(!!this.session.token){openviduToken_1=this.session.token}else{openviduToken_1=options["token"]}if(!openviduToken_1){return[2,reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,'Virtual Background requires the client to be connected to a Session or to have a "token" property available in "options" parameter with a valid OpenVidu token'))]}tokenParams_1=this.session.getTokenParams(openviduToken_1);if(tokenParams_1.edition!=="pro"&&tokenParams_1.edition!=="enterprise"){return[2,reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,"OpenVidu Virtual Background API is available from OpenVidu Pro edition onwards"))]}openviduToken_1=encodeURIComponent(btoa(openviduToken_1));logger.info("Applying Virtual Background to stream "+this.streamId);afterScriptLoaded_1=function(){return __awaiter(_this,void 0,void 0,(function(){var id,mediaStreamClone,videoClone,VB,filteredVideo,_a,error_1;return __generator(this,(function(_b){switch(_b.label){case 0:_b.trys.push([0,8,,9]);id=this.streamId+"_"+(0,uuid_1.v4)();mediaStreamClone=this.mediaStream.clone();videoClone=this.streamManager.videos[0].video.cloneNode(false);videoClone.id=VirtualBackground.VirtualBackground.SOURCE_VIDEO_PREFIX+id;videoClone.srcObject=mediaStreamClone;videoClone.muted=true;this.virtualBackgroundSourceElements={videoClone:videoClone,mediaStreamClone:mediaStreamClone};VirtualBackground.VirtualBackground.hideHtmlElement(videoClone,false);VirtualBackground.VirtualBackground.appendHtmlElementToHiddenContainer(videoClone,id);return[4,videoClone.play()];case 1:_b.sent();VB=new VirtualBackground.VirtualBackground({id:id,openviduServerUrl:new URL(tokenParams_1.httpUri),openviduToken:openviduToken_1,inputVideo:videoClone,inputResolution:"160x96",outputFramerate:24});filteredVideo=void 0;_a=type;switch(_a){case"VB:blur":return[3,2];case"VB:image":return[3,4]}return[3,6];case 2:return[4,VB.backgroundBlur(options)];case 3:filteredVideo=_b.sent();return[3,7];case 4:return[4,VB.backgroundImage(options)];case 5:filteredVideo=_b.sent();return[3,7];case 6:throw new Error("Unknown Virtual Background filter: "+type);case 7:this.virtualBackgroundSinkElements={VB:VB,video:filteredVideo};videoClone.style.display="none";if(this.streamManager.remote){this.streamManager.replaceTrackInMediaStream(this.virtualBackgroundSinkElements.video.srcObject.getVideoTracks()[0],false)}else{this.streamManager.replaceTrackAux(this.virtualBackgroundSinkElements.video.srcObject.getVideoTracks()[0],false)}resolveApplyFilter(undefined,false);return[3,9];case 8:error_1=_b.sent();if(error_1.name===OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR){resolveApplyFilter(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.VIRTUAL_BACKGROUND_ERROR,error_1.message),false)}else{resolveApplyFilter(error_1,false)}return[3,9];case 9:return[2]}}))}))};if(typeof VirtualBackground==="undefined"){script=document.createElement("script");script.type="text/javascript";script.src=tokenParams_1.httpUri+"/openvidu/virtual-background/openvidu-virtual-background.js?token="+openviduToken_1;script.onload=function(){return __awaiter(_this,void 0,void 0,(function(){var error_2;return __generator(this,(function(_a){switch(_a.label){case 0:_a.trys.push([0,2,,3]);return[4,afterScriptLoaded_1()];case 1:_a.sent();resolve(new Filter_1.Filter(type,options));return[3,3];case 2:error_2=_a.sent();reject(error_2);return[3,3];case 3:return[2]}}))}))};document.body.appendChild(script)}else{afterScriptLoaded_1().then((function(){return resolve(new Filter_1.Filter(type,options))})).catch((function(error){return reject(error)}))}}else{if(!this.session.sessionConnected()){return[2,reject(this.session.notConnectedError())]}logger.info("Applying server filter to stream "+this.streamId);options=options!=null?options:{};optionsString=options;if(typeof optionsString!=="string"){optionsString=JSON.stringify(optionsString)}this.session.openvidu.sendRequest("applyFilter",{streamId:this.streamId,type:type,options:optionsString},(function(error,response){resolveApplyFilter(error,true)}))}return[2]}))}))}))};Stream.prototype.removeFilter=function(){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a){switch(_a.label){case 0:return[4,this.removeFilterAux(false)];case 1:return[2,_a.sent()]}}))}))};Stream.prototype.getRTCPeerConnection=function(){return this.webRtcPeer.pc};Stream.prototype.getMediaStream=function(){return this.mediaStream};Stream.prototype.removeFilterAux=function(isDisposing){var _this=this;return new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var resolveRemoveFilter,mediaStreamClone,error_3;var _this=this;var _a;return __generator(this,(function(_b){switch(_b.label){case 0:resolveRemoveFilter=function(error,triggerEvent){if(error){delete _this.filter;logger.error("Error removing filter for Stream "+_this.streamId,error);if(error.code===401){return reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to remove a filter"))}else{return reject(error)}}else{logger.info("Filter successfully removed from Stream "+_this.streamId);var oldValue=_this.filter;delete _this.filter;if(triggerEvent){_this.session.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.session,_this,"filter",_this.filter,oldValue,"applyFilter")]);_this.streamManager.emitEvent("streamPropertyChanged",[new StreamPropertyChangedEvent_1.StreamPropertyChangedEvent(_this.streamManager,_this,"filter",_this.filter,oldValue,"applyFilter")])}return resolve()}};if(!!!this.filter)return[3,11];if(!((_a=this.filter)===null||_a===void 0?void 0:_a.type.startsWith("VB:")))return[3,9];_b.label=1;case 1:_b.trys.push([1,7,,8]);mediaStreamClone=this.virtualBackgroundSourceElements.mediaStreamClone;if(!!isDisposing)return[3,5];if(!this.streamManager.remote)return[3,2];this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0],false);return[3,4];case 2:return[4,this.streamManager.replaceTrackAux(mediaStreamClone.getVideoTracks()[0],false)];case 3:_b.sent();_b.label=4;case 4:return[3,6];case 5:mediaStreamClone.getTracks().forEach((function(track){return track.stop()}));_b.label=6;case 6:this.virtualBackgroundSinkElements.VB.cleanUp();delete this.virtualBackgroundSinkElements;delete this.virtualBackgroundSourceElements;return[2,resolveRemoveFilter(undefined,false)];case 7:error_3=_b.sent();return[2,resolveRemoveFilter(error_3,false)];case 8:return[3,10];case 9:if(!this.session.sessionConnected()){return[2,reject(this.session.notConnectedError())]}logger.info("Removing filter of stream "+this.streamId);this.session.openvidu.sendRequest("removeFilter",{streamId:this.streamId},(function(error,response){return resolveRemoveFilter(error,true)}));_b.label=10;case 10:return[3,12];case 11:return[2,reject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.GENERIC_ERROR,"Stream "+this.streamId+" has no filter applied"))];case 12:return[2]}}))}))}))};Stream.prototype.setMediaStream=function(mediaStream){this.mediaStream=mediaStream};Stream.prototype.updateMediaStreamInVideos=function(){this.ee.emitEvent("mediastream-updated",[])};Stream.prototype.getWebRtcPeer=function(){return this.webRtcPeer};Stream.prototype.subscribeToMyRemote=function(value){this.isSubscribeToRemote=value};Stream.prototype.setOutboundStreamOptions=function(outboundStreamOpts){this.outboundStreamOpts=outboundStreamOpts};Stream.prototype.subscribe=function(){var _this=this;return new Promise((function(resolve,reject){_this.initWebRtcPeerReceive(false).then((function(){return resolve()})).catch((function(error){return reject(error)}))}))};Stream.prototype.publish=function(){var _this=this;return new Promise((function(resolve,reject){if(_this.isLocalStreamReadyToPublish){_this.initWebRtcPeerSend(false).then((function(){return resolve()})).catch((function(error){return reject(error)}))}else{_this.ee.once("stream-ready-to-publish",(function(){_this.publish().then((function(){return resolve()})).catch((function(error){return reject(error)}))}))}}))};Stream.prototype.disposeWebRtcPeer=function(){var webrtcId;if(!!this.webRtcPeer){this.webRtcPeer.dispose();webrtcId=this.webRtcPeer.getId()}this.stopWebRtcStats();logger.info((!!this.outboundStreamOpts?"Outbound ":"Inbound ")+"RTCPeerConnection with id ["+webrtcId+"] from 'Stream' with id ["+this.streamId+"] is now closed")};Stream.prototype.disposeMediaStream=function(){return __awaiter(this,void 0,void 0,(function(){var error_4;return __generator(this,(function(_a){switch(_a.label){case 0:if(!(!!this.filter&&this.filter.type.startsWith("VB:")))return[3,4];_a.label=1;case 1:_a.trys.push([1,3,,4]);return[4,this.removeFilterAux(true)];case 2:_a.sent();console.debug("Success removing Virtual Background filter for stream ".concat(this.streamId));return[3,4];case 3:error_4=_a.sent();console.error("Error removing Virtual Background filter for stream ".concat(this.streamId),error_4);return[3,4];case 4:if(this.mediaStream){this.mediaStream.getAudioTracks().forEach((function(track){track.stop()}));this.mediaStream.getVideoTracks().forEach((function(track){track.stop()}));delete this.mediaStream}if(this.localMediaStreamWhenSubscribedToRemote){this.localMediaStreamWhenSubscribedToRemote.getAudioTracks().forEach((function(track){track.stop()}));this.localMediaStreamWhenSubscribedToRemote.getVideoTracks().forEach((function(track){track.stop()}));delete this.localMediaStreamWhenSubscribedToRemote}if(!!this.speechEvent){if(!!this.speechEvent.stop){this.speechEvent.stop()}delete this.speechEvent}logger.info((!!this.outboundStreamOpts?"Local ":"Remote ")+"MediaStream from 'Stream' with id ["+this.streamId+"] is now disposed");return[2]}}))}))};Stream.prototype.displayMyRemote=function(){return this.isSubscribeToRemote};Stream.prototype.isSendAudio=function(){return!!this.outboundStreamOpts&&this.outboundStreamOpts.publisherProperties.audioSource!==null&&this.outboundStreamOpts.publisherProperties.audioSource!==false};Stream.prototype.isSendVideo=function(){return!!this.outboundStreamOpts&&this.outboundStreamOpts.publisherProperties.videoSource!==null&&this.outboundStreamOpts.publisherProperties.videoSource!==false};Stream.prototype.isSendScreen=function(){var screen=this.outboundStreamOpts.publisherProperties.videoSource==="screen";if(platform.isElectron()){screen=typeof this.outboundStreamOpts.publisherProperties.videoSource==="string"&&this.outboundStreamOpts.publisherProperties.videoSource.startsWith("screen:")}return!!this.outboundStreamOpts&&screen};Stream.prototype.enableHarkSpeakingEvent=function(){var _this=this;this.setHarkListenerIfNotExists();if(!this.harkSpeakingEnabled&&!!this.speechEvent){this.harkSpeakingEnabled=true;this.speechEvent.on("speaking",(function(){_this.session.emitEvent("publisherStartSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.session,"publisherStartSpeaking",_this.connection,_this.streamId)]);_this.streamManager.emitEvent("publisherStartSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.streamManager,"publisherStartSpeaking",_this.connection,_this.streamId)]);_this.harkSpeakingEnabledOnce=false}))}};Stream.prototype.enableOnceHarkSpeakingEvent=function(){var _this=this;this.setHarkListenerIfNotExists();if(!this.harkSpeakingEnabledOnce&&!!this.speechEvent){this.harkSpeakingEnabledOnce=true;this.speechEvent.once("speaking",(function(){if(_this.harkSpeakingEnabledOnce){_this.session.emitEvent("publisherStartSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.session,"publisherStartSpeaking",_this.connection,_this.streamId)]);_this.streamManager.emitEvent("publisherStartSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.streamManager,"publisherStartSpeaking",_this.connection,_this.streamId)])}_this.disableHarkSpeakingEvent(true)}))}};Stream.prototype.disableHarkSpeakingEvent=function(disabledByOnce){if(!!this.speechEvent){this.harkSpeakingEnabledOnce=false;if(disabledByOnce){if(this.harkSpeakingEnabled){return}}else{this.harkSpeakingEnabled=false}if(this.harkVolumeChangeEnabled||this.harkVolumeChangeEnabledOnce||this.harkStoppedSpeakingEnabled||this.harkStoppedSpeakingEnabledOnce){this.speechEvent.off("speaking")}else{this.speechEvent.stop();delete this.speechEvent}}};Stream.prototype.enableHarkStoppedSpeakingEvent=function(){var _this=this;this.setHarkListenerIfNotExists();if(!this.harkStoppedSpeakingEnabled&&!!this.speechEvent){this.harkStoppedSpeakingEnabled=true;this.speechEvent.on("stopped_speaking",(function(){_this.session.emitEvent("publisherStopSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.session,"publisherStopSpeaking",_this.connection,_this.streamId)]);_this.streamManager.emitEvent("publisherStopSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.streamManager,"publisherStopSpeaking",_this.connection,_this.streamId)]);_this.harkStoppedSpeakingEnabledOnce=false}))}};Stream.prototype.enableOnceHarkStoppedSpeakingEvent=function(){var _this=this;this.setHarkListenerIfNotExists();if(!this.harkStoppedSpeakingEnabledOnce&&!!this.speechEvent){this.harkStoppedSpeakingEnabledOnce=true;this.speechEvent.once("stopped_speaking",(function(){if(_this.harkStoppedSpeakingEnabledOnce){_this.session.emitEvent("publisherStopSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.session,"publisherStopSpeaking",_this.connection,_this.streamId)]);_this.streamManager.emitEvent("publisherStopSpeaking",[new PublisherSpeakingEvent_1.PublisherSpeakingEvent(_this.streamManager,"publisherStopSpeaking",_this.connection,_this.streamId)])}_this.disableHarkStoppedSpeakingEvent(true)}))}};Stream.prototype.disableHarkStoppedSpeakingEvent=function(disabledByOnce){if(!!this.speechEvent){this.harkStoppedSpeakingEnabledOnce=false;if(disabledByOnce){if(this.harkStoppedSpeakingEnabled){return}}else{this.harkStoppedSpeakingEnabled=false}if(this.harkVolumeChangeEnabled||this.harkVolumeChangeEnabledOnce||this.harkSpeakingEnabled||this.harkSpeakingEnabledOnce){this.speechEvent.off("stopped_speaking")}else{this.speechEvent.stop();delete this.speechEvent}}};Stream.prototype.enableHarkVolumeChangeEvent=function(force){var _this=this;if(this.setHarkListenerIfNotExists()){if(!this.harkVolumeChangeEnabled||force){this.harkVolumeChangeEnabled=true;this.speechEvent.on("volume_change",(function(harkEvent){var oldValue=_this.speechEvent.oldVolumeValue;var value={newValue:harkEvent,oldValue:oldValue};_this.speechEvent.oldVolumeValue=harkEvent;_this.streamManager.emitEvent("streamAudioVolumeChange",[new StreamManagerEvent_1.StreamManagerEvent(_this.streamManager,"streamAudioVolumeChange",value)])}))}}else{this.harkVolumeChangeEnabled=true}};Stream.prototype.enableOnceHarkVolumeChangeEvent=function(force){var _this=this;if(this.setHarkListenerIfNotExists()){if(!this.harkVolumeChangeEnabledOnce||force){this.harkVolumeChangeEnabledOnce=true;this.speechEvent.once("volume_change",(function(harkEvent){var oldValue=_this.speechEvent.oldVolumeValue;var value={newValue:harkEvent,oldValue:oldValue};_this.speechEvent.oldVolumeValue=harkEvent;_this.disableHarkVolumeChangeEvent(true);_this.streamManager.emitEvent("streamAudioVolumeChange",[new StreamManagerEvent_1.StreamManagerEvent(_this.streamManager,"streamAudioVolumeChange",value)])}))}}else{this.harkVolumeChangeEnabledOnce=true}};Stream.prototype.disableHarkVolumeChangeEvent=function(disabledByOnce){if(!!this.speechEvent){this.harkVolumeChangeEnabledOnce=false;if(disabledByOnce){if(this.harkVolumeChangeEnabled){return}}else{this.harkVolumeChangeEnabled=false}if(this.harkSpeakingEnabled||this.harkSpeakingEnabledOnce||this.harkStoppedSpeakingEnabled||this.harkStoppedSpeakingEnabledOnce){this.speechEvent.off("volume_change")}else{this.speechEvent.stop();delete this.speechEvent}}};Stream.prototype.isLocal=function(){return!this.inboundStreamOpts&&!!this.outboundStreamOpts};Stream.prototype.getSelectedIceCandidate=function(){var _this=this;return new Promise((function(resolve,reject){_this.webRtcStats.getSelectedIceCandidateInfo().then((function(report){return resolve(report)})).catch((function(error){return reject(error)}))}))};Stream.prototype.getRemoteIceCandidateList=function(){return this.webRtcPeer.remoteCandidatesQueue};Stream.prototype.getLocalIceCandidateList=function(){return this.webRtcPeer.localCandidatesQueue};Stream.prototype.streamIceConnectionStateBroken=function(){if(!this.getWebRtcPeer()||!this.getRTCPeerConnection()){return false}if(this.isLocal()&&!!this.session.openvidu.advancedConfiguration.forceMediaReconnectionAfterNetworkDrop){logger.warn('OpenVidu Browser advanced configuration option "forceMediaReconnectionAfterNetworkDrop" is enabled. Stream '.concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") will force a reconnection"));return true}var iceConnectionState=this.getRTCPeerConnection().iceConnectionState;return iceConnectionState!=="connected"&&iceConnectionState!=="completed"};Stream.prototype.setHarkListenerIfNotExists=function(){if(!!this.mediaStream){if(!this.speechEvent){var harkOptions=!!this.harkOptions?this.harkOptions:this.session.openvidu.advancedConfiguration.publisherSpeakingEventsOptions||{};harkOptions.interval=typeof harkOptions.interval==="number"?harkOptions.interval:100;harkOptions.threshold=typeof harkOptions.threshold==="number"?harkOptions.threshold:-50;this.speechEvent=hark(this.mediaStream,harkOptions)}return true}return false};Stream.prototype.setupReconnectionEventEmitter=function(resolve,reject){if(this.reconnectionEventEmitter==undefined){this.reconnectionEventEmitter=new EventEmitter;return false}else{console.warn("Trying to reconnect stream ".concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") but an ongoing reconnection process is active. Waiting for response..."));this.reconnectionEventEmitter.once("success",(function(){return resolve()}));this.reconnectionEventEmitter.once("error",(function(error){return reject(error)}));return true}};Stream.prototype.initWebRtcPeerSend=function(reconnect){var _this=this;return new Promise((function(resolve,reject){var _a;if(reconnect){if(_this.setupReconnectionEventEmitter(resolve,reject)){return}}else{_this.initHarkEvents()}var finalResolve=function(){var _a;if(reconnect){(_a=_this.reconnectionEventEmitter)===null||_a===void 0?void 0:_a.emitEvent("success");delete _this.reconnectionEventEmitter}return resolve()};var finalReject=function(error){var _a;if(reconnect){(_a=_this.reconnectionEventEmitter)===null||_a===void 0?void 0:_a.emitEvent("error",[error]);delete _this.reconnectionEventEmitter}return reject(error)};var successOfferCallback=function(sdpOfferParam){logger.debug("Sending SDP offer to publish as "+_this.streamId,sdpOfferParam);var method=reconnect?"reconnectStream":"publishVideo";var params;if(reconnect){params={stream:_this.streamId,sdpString:sdpOfferParam}}else{var typeOfVideo=void 0;if(_this.isSendVideo()){typeOfVideo=typeof MediaStreamTrack!=="undefined"&&_this.outboundStreamOpts.publisherProperties.videoSource instanceof MediaStreamTrack?TypeOfVideo_1.TypeOfVideo.CUSTOM:_this.isSendScreen()?TypeOfVideo_1.TypeOfVideo.SCREEN:TypeOfVideo_1.TypeOfVideo.CAMERA}params={doLoopback:_this.displayMyRemote()||false,hasAudio:_this.isSendAudio(),hasVideo:_this.isSendVideo(),audioActive:_this.audioActive,videoActive:_this.videoActive,typeOfVideo:typeOfVideo,frameRate:!!_this.frameRate?_this.frameRate:-1,videoDimensions:JSON.stringify(_this.videoDimensions),filter:_this.outboundStreamOpts.publisherProperties.filter,sdpOffer:sdpOfferParam}}_this.session.openvidu.sendRequest(method,params,(function(error,response){if(error){if(error.code===401){finalReject(new OpenViduError_1.OpenViduError(OpenViduError_1.OpenViduErrorName.OPENVIDU_PERMISSION_DENIED,"You don't have permissions to publish"))}else{finalReject("Error on publishVideo: "+JSON.stringify(error))}}else{_this.webRtcPeer.processRemoteAnswer(response.sdpAnswer).then((function(){_this.streamId=response.id;_this.creationTime=response.createdAt;_this.isLocalStreamPublished=true;_this.publishedOnce=true;if(_this.displayMyRemote()){_this.localMediaStreamWhenSubscribedToRemote=_this.mediaStream;_this.remotePeerSuccessfullyEstablished(reconnect)}if(reconnect){_this.ee.emitEvent("stream-reconnected-by-publisher",[])}else{_this.ee.emitEvent("stream-created-by-publisher",[])}_this.initWebRtcStats();logger.info("'Publisher' ("+_this.streamId+") successfully "+(reconnect?"reconnected":"published")+" to session");finalResolve()})).catch((function(error){finalReject(error)}))}}))};var config={mediaConstraints:{audio:_this.hasAudio,video:_this.hasVideo},simulcast:(_a=_this.outboundStreamOpts.publisherProperties.videoSimulcast)!==null&&_a!==void 0?_a:_this.session.openvidu.videoSimulcast,onIceCandidate:_this.connection.sendIceCandidate.bind(_this.connection),onIceConnectionStateException:_this.onIceConnectionStateExceptionHandler.bind(_this),iceServers:_this.getIceServersConf(),mediaStream:_this.mediaStream,mediaServer:_this.session.openvidu.mediaServer,typeOfVideo:_this.typeOfVideo?TypeOfVideo_1.TypeOfVideo[_this.typeOfVideo]:undefined};if(_this.session.openvidu.mediaServer!=="mediasoup"){config.simulcast=false}if(reconnect){_this.disposeWebRtcPeer()}if(_this.displayMyRemote()){_this.webRtcPeer=new WebRtcPeer_1.WebRtcPeerSendrecv(config)}else{_this.webRtcPeer=new WebRtcPeer_1.WebRtcPeerSendonly(config)}_this.webRtcPeer.addIceConnectionStateChangeListener("publisher of "+_this.connection.connectionId);_this.webRtcPeer.createOffer().then((function(sdpOffer){_this.webRtcPeer.processLocalOffer(sdpOffer).then((function(){successOfferCallback(sdpOffer.sdp)})).catch((function(error){finalReject(new Error("(publish) SDP process local offer error: "+JSON.stringify(error)))}))})).catch((function(error){finalReject(new Error("(publish) SDP create offer error: "+JSON.stringify(error)))}))}))};Stream.prototype.finalResolveForSubscription=function(reconnect,resolve){var _a;logger.info("'Subscriber' ("+this.streamId+") successfully "+(reconnect?"reconnected":"subscribed"));this.remotePeerSuccessfullyEstablished(reconnect);this.initWebRtcStats();if(reconnect){(_a=this.reconnectionEventEmitter)===null||_a===void 0?void 0:_a.emitEvent("success");delete this.reconnectionEventEmitter}return resolve()};Stream.prototype.finalRejectForSubscription=function(reconnect,error,reject){var _a;logger.error("Error for 'Subscriber' ("+this.streamId+") while trying to "+(reconnect?"reconnect":"subscribe")+": "+error.toString());if(reconnect){(_a=this.reconnectionEventEmitter)===null||_a===void 0?void 0:_a.emitEvent("error",[error]);delete this.reconnectionEventEmitter}return reject(error)};Stream.prototype.initWebRtcPeerReceive=function(reconnect){var _this=this;return new Promise((function(resolve,reject){if(reconnect){if(_this.setupReconnectionEventEmitter(resolve,reject)){return}}if(_this.session.openvidu.mediaServer==="mediasoup"){_this.initWebRtcPeerReceiveFromServer(reconnect).then((function(){return _this.finalResolveForSubscription(reconnect,resolve)})).catch((function(error){return _this.finalRejectForSubscription(reconnect,error,reject)}))}else{_this.initWebRtcPeerReceiveFromClient(reconnect).then((function(){return _this.finalResolveForSubscription(reconnect,resolve)})).catch((function(error){return _this.finalRejectForSubscription(reconnect,error,reject)}))}}))};Stream.prototype.initWebRtcPeerReceiveFromClient=function(reconnect){var _this=this;return new Promise((function(resolve,reject){_this.completeWebRtcPeerReceive(reconnect,false).then((function(response){_this.webRtcPeer.processRemoteAnswer(response.sdpAnswer).then((function(){return resolve()})).catch((function(error){return reject(error)}))})).catch((function(error){return reject(error)}))}))};Stream.prototype.initWebRtcPeerReceiveFromServer=function(reconnect){var _this=this;return new Promise((function(resolve,reject){_this.session.openvidu.sendRequest("prepareReceiveVideoFrom",{sender:_this.streamId,reconnect:reconnect},(function(error,response){if(error){return reject(new Error("Error on prepareReceiveVideoFrom: "+JSON.stringify(error)))}else{_this.completeWebRtcPeerReceive(reconnect,false,response.sdpOffer).then((function(){return resolve()})).catch((function(error){return reject(error)}))}}))}))};Stream.prototype.completeWebRtcPeerReceive=function(reconnect,forciblyReconnect,sdpOfferByServer){var _this=this;return new Promise((function(resolve,reject){logger.debug("'Session.subscribe(Stream)' called");var sendSdpToServer=function(sdpString){logger.debug("Sending local SDP ".concat(!!sdpOfferByServer?"answer":"offer"," to subscribe to ").concat(_this.streamId),sdpString);var method=reconnect?"reconnectStream":"receiveVideoFrom";var params={};params[reconnect?"stream":"sender"]=_this.streamId;if(!!sdpOfferByServer){params[reconnect?"sdpString":"sdpAnswer"]=sdpString}else{params["sdpOffer"]=sdpString}if(reconnect){params["forciblyReconnect"]=forciblyReconnect}_this.session.openvidu.sendRequest(method,params,(function(error,response){if(error){return reject(new Error("Error on "+method+" : "+JSON.stringify(error)))}else{return resolve(response)}}))};var config={mediaConstraints:{audio:_this.hasAudio,video:_this.hasVideo},simulcast:false,onIceCandidate:_this.connection.sendIceCandidate.bind(_this.connection),onIceConnectionStateException:_this.onIceConnectionStateExceptionHandler.bind(_this),iceServers:_this.getIceServersConf(),mediaServer:_this.session.openvidu.mediaServer,typeOfVideo:_this.typeOfVideo?TypeOfVideo_1.TypeOfVideo[_this.typeOfVideo]:undefined};if(reconnect){_this.disposeWebRtcPeer()}_this.webRtcPeer=new WebRtcPeer_1.WebRtcPeerRecvonly(config);_this.webRtcPeer.addIceConnectionStateChangeListener(_this.streamId);if(!!sdpOfferByServer){_this.webRtcPeer.processRemoteOffer(sdpOfferByServer).then((function(){_this.webRtcPeer.createAnswer().then((function(sdpAnswer){_this.webRtcPeer.processLocalAnswer(sdpAnswer).then((function(){sendSdpToServer(sdpAnswer.sdp)})).catch((function(error){return reject(new Error("(subscribe) SDP process local answer error: "+JSON.stringify(error)))}))})).catch((function(error){return reject(new Error("(subscribe) SDP create answer error: "+JSON.stringify(error)))}))})).catch((function(error){return reject(new Error("(subscribe) SDP process remote offer error: "+JSON.stringify(error)))}))}else{_this.webRtcPeer.createOffer().then((function(sdpOffer){_this.webRtcPeer.processLocalOffer(sdpOffer).then((function(){sendSdpToServer(sdpOffer.sdp)})).catch((function(error){return reject(new Error("(subscribe) SDP process local offer error: "+JSON.stringify(error)))}))})).catch((function(error){return reject(new Error("(subscribe) SDP create offer error: "+JSON.stringify(error)))}))}}))};Stream.prototype.remotePeerSuccessfullyEstablished=function(reconnect){if(reconnect&&this.mediaStream!=null){this.disposeMediaStream()}this.mediaStream=new MediaStream;var receiver;for(var _i=0,_a=this.webRtcPeer.pc.getReceivers();_i<_a.length;_i++){receiver=_a[_i];if(!!receiver.track){this.mediaStream.addTrack(receiver.track)}}logger.debug("Peer remote stream",this.mediaStream);if(!!this.mediaStream){if(this.streamManager instanceof Subscriber_1.Subscriber){if(!!this.mediaStream.getAudioTracks()[0]){var enabled=reconnect?this.audioActive:!!this.streamManager.properties.subscribeToAudio;this.mediaStream.getAudioTracks()[0].enabled=enabled}if(!!this.mediaStream.getVideoTracks()[0]){var enabled=reconnect?this.videoActive:!!this.streamManager.properties.subscribeToVideo;this.mediaStream.getVideoTracks()[0].enabled=enabled}}this.updateMediaStreamInVideos();this.initHarkEvents()}};Stream.prototype.initHarkEvents=function(){if(!!this.mediaStream.getAudioTracks()[0]){if(this.session.anySpeechEventListenerEnabled("publisherStartSpeaking",true,this.streamManager)){this.enableOnceHarkSpeakingEvent()}if(this.session.anySpeechEventListenerEnabled("publisherStartSpeaking",false,this.streamManager)){this.enableHarkSpeakingEvent()}if(this.session.anySpeechEventListenerEnabled("publisherStopSpeaking",true,this.streamManager)){this.enableOnceHarkStoppedSpeakingEvent()}if(this.session.anySpeechEventListenerEnabled("publisherStopSpeaking",false,this.streamManager)){this.enableHarkStoppedSpeakingEvent()}if(this.harkVolumeChangeEnabledOnce){this.enableOnceHarkVolumeChangeEvent(true)}if(this.harkVolumeChangeEnabled){this.enableHarkVolumeChangeEvent(true)}}};Stream.prototype.onIceConnectionStateExceptionHandler=function(exceptionName,message,data){switch(exceptionName){case ExceptionEvent_1.ExceptionEventName.ICE_CONNECTION_FAILED:this.onIceConnectionFailed();break;case ExceptionEvent_1.ExceptionEventName.ICE_CONNECTION_DISCONNECTED:this.onIceConnectionDisconnected();break}this.session.emitEvent("exception",[new ExceptionEvent_1.ExceptionEvent(this.session,exceptionName,this,message,data)])};Stream.prototype.onIceConnectionFailed=function(){logger.log("[ICE_CONNECTION_FAILED] Handling ICE_CONNECTION_FAILED event. Reconnecting stream ".concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",")"));this.reconnectStreamAndLogResultingIceConnectionState(ExceptionEvent_1.ExceptionEventName.ICE_CONNECTION_FAILED)};Stream.prototype.onIceConnectionDisconnected=function(){var _this=this;logger.log("[ICE_CONNECTION_DISCONNECTED] Handling ICE_CONNECTION_DISCONNECTED event. Waiting for ICE to be restored and reconnect stream ".concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") if not possible"));var timeout=this.session.openvidu.advancedConfiguration.iceConnectionDisconnectedExceptionTimeout||4e3;this.awaitWebRtcPeerConnectionState(timeout).then((function(state){switch(state){case"failed":logger.warn("[ICE_CONNECTION_DISCONNECTED] ICE connection of stream ".concat(_this.streamId," (").concat(_this.isLocal()?"Publisher":"Subscriber",") is now failed after ICE_CONNECTION_DISCONNECTED"));break;case"connected":case"completed":logger.log("[ICE_CONNECTION_DISCONNECTED] ICE connection of stream ".concat(_this.streamId," (").concat(_this.isLocal()?"Publisher":"Subscriber",") automatically restored after ICE_CONNECTION_DISCONNECTED. Current ICE connection state: ").concat(state));break;case"closed":case"checking":case"new":case"disconnected":logger.warn("[ICE_CONNECTION_DISCONNECTED] ICE connection of stream ".concat(_this.streamId," (").concat(_this.isLocal()?"Publisher":"Subscriber",") couldn't be restored after ICE_CONNECTION_DISCONNECTED event. Current ICE connection state after ").concat(timeout," ms: ").concat(state));_this.reconnectStreamAndLogResultingIceConnectionState(ExceptionEvent_1.ExceptionEventName.ICE_CONNECTION_DISCONNECTED);break}}))};Stream.prototype.reconnectStreamAndLogResultingIceConnectionState=function(event){return __awaiter(this,void 0,void 0,(function(){var finalIceStateAfterReconnection,error_5;return __generator(this,(function(_a){switch(_a.label){case 0:_a.trys.push([0,2,,3]);return[4,this.reconnectStreamAndReturnIceConnectionState(event)];case 1:finalIceStateAfterReconnection=_a.sent();switch(finalIceStateAfterReconnection){case"connected":case"completed":logger.log("[".concat(event,"] Stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") successfully reconnected after ").concat(event,". Current ICE connection state: ").concat(finalIceStateAfterReconnection));break;default:logger.error("[".concat(event,"] Stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") failed to reconnect after ").concat(event,". Current ICE connection state: ").concat(finalIceStateAfterReconnection));break}return[3,3];case 2:error_5=_a.sent();logger.error("[".concat(event,"] Error reconnecting stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") after ").concat(event,": ").concat(error_5));return[3,3];case 3:return[2]}}))}))};Stream.prototype.reconnectStreamAndReturnIceConnectionState=function(event){return __awaiter(this,void 0,void 0,(function(){var timeout,error_6;return __generator(this,(function(_a){switch(_a.label){case 0:logger.log("[".concat(event,"] Reconnecting stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") after event ").concat(event));_a.label=1;case 1:_a.trys.push([1,3,,4]);return[4,this.reconnectStream(event)];case 2:_a.sent();timeout=this.session.openvidu.advancedConfiguration.iceConnectionDisconnectedExceptionTimeout||4e3;return[2,this.awaitWebRtcPeerConnectionState(timeout)];case 3:error_6=_a.sent();logger.warn("[".concat(event,"] Error reconnecting stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber","). Reason: ").concat(error_6));return[2,this.awaitWebRtcPeerConnectionState(1)];case 4:return[2]}}))}))};Stream.prototype.awaitWebRtcPeerConnectionState=function(timeout){return __awaiter(this,void 0,void 0,(function(){var state,interval,intervals,i;return __generator(this,(function(_a){switch(_a.label){case 0:state=this.getRTCPeerConnection().iceConnectionState;interval=150;intervals=Math.ceil(timeout/interval);i=0;_a.label=1;case 1:if(!(i<intervals))return[3,4];state=this.getRTCPeerConnection().iceConnectionState;if(state==="connected"||state==="completed"){return[3,4]}return[4,new Promise((function(resolve){return setTimeout(resolve,interval)}))];case 2:_a.sent();_a.label=3;case 3:i++;return[3,1];case 4:return[2,state]}}))}))};Stream.prototype.reconnectStream=function(event){return __awaiter(this,void 0,void 0,(function(){var isWsConnected,errorMsg;return __generator(this,(function(_a){switch(_a.label){case 0:return[4,this.isWebsocketConnected(event,3e3)];case 1:isWsConnected=_a.sent();if(isWsConnected){logger.log("[".concat(event,"] Trying to reconnect stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") and the websocket is opened"));if(this.isLocal()){return[2,this.initWebRtcPeerSend(true)]}else{return[2,this.initWebRtcPeerReceive(true)]}}else{errorMsg="[".concat(event,"] Trying to reconnect stream ").concat(this.streamId," (").concat(this.isLocal()?"Publisher":"Subscriber",") but the websocket wasn't opened");logger.error(errorMsg);throw Error(errorMsg)}return[2]}}))}))};Stream.prototype.isWebsocketConnected=function(event,msResponseTimeout){var _this=this;return new Promise((function(resolve,reject){var wsReadyState=_this.session.openvidu.getWsReadyState();if(wsReadyState===1){var responseTimeout_1=setTimeout((function(){console.warn("[".concat(event,"] Websocket timeout of ").concat(msResponseTimeout,"ms"));return resolve(false)}),msResponseTimeout);_this.session.openvidu.sendRequest("echo",{},(function(error,response){clearTimeout(responseTimeout_1);if(!!error){console.warn("[".concat(event,"] Websocket 'echo' returned error: ").concat(error));return resolve(false)}else{return resolve(true)}}))}else{console.warn("[".concat(event,"] Websocket readyState is ").concat(wsReadyState));return resolve(false)}}))};Stream.prototype.initWebRtcStats=function(){this.webRtcStats=new WebRtcStats_1.WebRtcStats(this);this.webRtcStats.initWebRtcStats()};Stream.prototype.stopWebRtcStats=function(){if(!!this.webRtcStats&&this.webRtcStats.isEnabled()){this.webRtcStats.stopWebRtcStats()}};Stream.prototype.getIceServersConf=function(){var returnValue;if(!!this.session.openvidu.advancedConfiguration.iceServers){returnValue=this.session.openvidu.advancedConfiguration.iceServers==="freeice"?undefined:this.session.openvidu.advancedConfiguration.iceServers}else if(this.session.openvidu.iceServers){returnValue=this.session.openvidu.iceServers}else{returnValue=undefined}return returnValue};Stream.prototype.gatherStatsForPeer=function(){var _this=this;return new Promise((function(resolve,reject){if(_this.isLocal()){_this.getRTCPeerConnection().getSenders().forEach((function(sender){return sender.getStats().then((function(response){response.forEach((function(report){if(_this.isReportWanted(report)){var finalReport={};finalReport["type"]=report.type;finalReport["timestamp"]=report.timestamp;finalReport["id"]=report.id;if(report.type==="outbound-rtp"){finalReport["ssrc"]=report.ssrc;finalReport["firCount"]=report.firCount;finalReport["pliCount"]=report.pliCount;finalReport["nackCount"]=report.nackCount;finalReport["qpSum"]=report.qpSum;if(!!report.kind){finalReport["mediaType"]=report.kind}else if(!!report.mediaType){finalReport["mediaType"]=report.mediaType}else{finalReport["mediaType"]=report.id.indexOf("VideoStream")!==-1?"video":"audio"}if(finalReport["mediaType"]==="video"){finalReport["framesEncoded"]=report.framesEncoded}finalReport["packetsSent"]=report.packetsSent;finalReport["bytesSent"]=report.bytesSent}if(report.type==="candidate-pair"&&report.totalRoundTripTime!==undefined){finalReport["availableOutgoingBitrate"]=report.availableOutgoingBitrate;finalReport["rtt"]=report.currentRoundTripTime;finalReport["averageRtt"]=report.totalRoundTripTime/report.responsesReceived}if(report.type==="remote-inbound-rtp"||report.type==="remote-outbound-rtp"){}logger.log(finalReport)}}))}))}))}else{_this.getRTCPeerConnection().getReceivers().forEach((function(receiver){return receiver.getStats().then((function(response){response.forEach((function(report){if(_this.isReportWanted(report)){var finalReport={};finalReport["type"]=report.type;finalReport["timestamp"]=report.timestamp;finalReport["id"]=report.id;if(report.type==="inbound-rtp"){finalReport["ssrc"]=report.ssrc;finalReport["firCount"]=report.firCount;finalReport["pliCount"]=report.pliCount;finalReport["nackCount"]=report.nackCount;finalReport["qpSum"]=report.qpSum;if(!!report.kind){finalReport["mediaType"]=report.kind}else if(!!report.mediaType){finalReport["mediaType"]=report.mediaType}else{finalReport["mediaType"]=report.id.indexOf("VideoStream")!==-1?"video":"audio"}if(finalReport["mediaType"]==="video"){finalReport["framesDecoded"]=report.framesDecoded}finalReport["packetsReceived"]=report.packetsReceived;finalReport["packetsLost"]=report.packetsLost;finalReport["jitter"]=report.jitter;finalReport["bytesReceived"]=report.bytesReceived}if(report.type==="candidate-pair"&&report.totalRoundTripTime!==undefined){finalReport["availableIncomingBitrate"]=report.availableIncomingBitrate;finalReport["rtt"]=report.currentRoundTripTime;finalReport["averageRtt"]=report.totalRoundTripTime/report.responsesReceived}if(report.type==="remote-inbound-rtp"||report.type==="remote-outbound-rtp"){}logger.log(finalReport)}}))}))}))}}))};Stream.prototype.isReportWanted=function(report){return report.type==="inbound-rtp"&&!this.isLocal()||report.type==="outbound-rtp"&&this.isLocal()||report.type==="candidate-pair"&&report.nominated&&report.bytesSent>0};return Stream}();exports.Stream=Stream},{"../OpenViduInternal/Enums/OpenViduError":53,"../OpenViduInternal/Enums/TypeOfVideo":54,"../OpenViduInternal/Events/ExceptionEvent":59,"../OpenViduInternal/Events/PublisherSpeakingEvent":62,"../OpenViduInternal/Events/StreamManagerEvent":68,"../OpenViduInternal/Events/StreamPropertyChangedEvent":69,"../OpenViduInternal/Logger/OpenViduLogger":81,"../OpenViduInternal/Utils/Platform":85,"../OpenViduInternal/WebRtcPeer/WebRtcPeer":86,"../OpenViduInternal/WebRtcStats/WebRtcStats":87,"./Filter":44,"./Subscriber":51,hark:5,uuid:22,"wolfy87-eventemitter":39}],50:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.StreamManager=void 0;var EventDispatcher_1=require("./EventDispatcher");var StreamManagerEvent_1=require("../OpenViduInternal/Events/StreamManagerEvent");var VideoElementEvent_1=require("../OpenViduInternal/Events/VideoElementEvent");var ExceptionEvent_1=require("../OpenViduInternal/Events/ExceptionEvent");var VideoInsertMode_1=require("../OpenViduInternal/Enums/VideoInsertMode");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var Platform_1=require("../OpenViduInternal/Utils/Platform");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var StreamManager=function(_super){__extends(StreamManager,_super);function StreamManager(stream,targetElement){var _this=_super.call(this)||this;_this.videos=[];_this.lazyLaunchVideoElementCreatedEvent=false;platform=Platform_1.PlatformUtils.getInstance();_this.stream=stream;_this.stream.streamManager=_this;_this.remote=!_this.stream.isLocal();if(!!targetElement){var targEl=void 0;if(typeof targetElement==="string"){targEl=document.getElementById(targetElement)}else if(targetElement instanceof HTMLElement){targEl=targetElement}if(!!targEl){_this.firstVideoElement={targetElement:targEl,video:document.createElement("video"),id:"",canplayListenerAdded:false};if(platform.isSafariBrowser()||platform.isIPhoneOrIPad()&&(platform.isChromeMobileBrowser()||platform.isEdgeMobileBrowser()||platform.isOperaMobileBrowser()||platform.isFirefoxMobileBrowser())){_this.firstVideoElement.video.playsInline=true}_this.targetElement=targEl;_this.element=targEl}}_this.canPlayListener=function(){_this.deactivateStreamPlayingEventExceptionTimeout();_this.ee.emitEvent("streamPlaying",[new StreamManagerEvent_1.StreamManagerEvent(_this,"streamPlaying",undefined)])};return _this}StreamManager.prototype.on=function(type,handler){_super.prototype.onAux.call(this,type,"Event '"+type+"' triggered by '"+(this.remote?"Subscriber":"Publisher")+"'",handler);if(type==="videoElementCreated"){if(!!this.stream&&this.lazyLaunchVideoElementCreatedEvent){this.ee.emitEvent("videoElementCreated",[new VideoElementEvent_1.VideoElementEvent(this.videos[0].video,this,"videoElementCreated")]);this.lazyLaunchVideoElementCreatedEvent=false}}if(type==="streamPlaying"){if(this.videos[0]&&this.videos[0].video&&this.videos[0].video.currentTime>0&&this.videos[0].video.paused===false&&this.videos[0].video.ended===false&&this.videos[0].video.readyState===4){this.ee.emitEvent("streamPlaying",[new StreamManagerEvent_1.StreamManagerEvent(this,"streamPlaying",undefined)])}}if(this.stream.hasAudio){if(type==="publisherStartSpeaking"){this.stream.enableHarkSpeakingEvent()}if(type==="publisherStopSpeaking"){this.stream.enableHarkStoppedSpeakingEvent()}if(type==="streamAudioVolumeChange"){this.stream.enableHarkVolumeChangeEvent(false)}}return this};StreamManager.prototype.once=function(type,handler){_super.prototype.onceAux.call(this,type,"Event '"+type+"' triggered once by '"+(this.remote?"Subscriber":"Publisher")+"'",handler);if(type==="videoElementCreated"){if(!!this.stream&&this.lazyLaunchVideoElementCreatedEvent){this.ee.emitEvent("videoElementCreated",[new VideoElementEvent_1.VideoElementEvent(this.videos[0].video,this,"videoElementCreated")])}}if(type==="streamPlaying"){if(this.videos[0]&&this.videos[0].video&&this.videos[0].video.currentTime>0&&this.videos[0].video.paused===false&&this.videos[0].video.ended===false&&this.videos[0].video.readyState===4){this.ee.emitEvent("streamPlaying",[new StreamManagerEvent_1.StreamManagerEvent(this,"streamPlaying",undefined)])}}if(this.stream.hasAudio){if(type==="publisherStartSpeaking"){this.stream.enableOnceHarkSpeakingEvent()}if(type==="publisherStopSpeaking"){this.stream.enableOnceHarkStoppedSpeakingEvent()}if(type==="streamAudioVolumeChange"){this.stream.enableOnceHarkVolumeChangeEvent(false)}}return this};StreamManager.prototype.off=function(type,handler){_super.prototype.offAux.call(this,type,handler);if(type==="publisherStartSpeaking"){var remainingStartSpeakingEventListeners=this.ee.getListeners(type).length+this.stream.session.ee.getListeners(type).length;if(remainingStartSpeakingEventListeners===0){this.stream.disableHarkSpeakingEvent(false)}}if(type==="publisherStopSpeaking"){var remainingStopSpeakingEventListeners=this.ee.getListeners(type).length+this.stream.session.ee.getListeners(type).length;if(remainingStopSpeakingEventListeners===0){this.stream.disableHarkStoppedSpeakingEvent(false)}}if(type==="streamAudioVolumeChange"){var remainingVolumeEventListeners=this.ee.getListeners(type).length;if(remainingVolumeEventListeners===0){this.stream.disableHarkVolumeChangeEvent(false)}}return this};StreamManager.prototype.addVideoElement=function(video){this.initializeVideoProperties(video);if(!this.remote&&this.stream.displayMyRemote()){if(video.srcObject!==this.stream.getMediaStream()){video.srcObject=this.stream.getMediaStream()}}for(var _i=0,_a=this.videos;_i<_a.length;_i++){var v=_a[_i];if(v.video===video){return 0}}var returnNumber=1;for(var _b=0,_c=this.stream.session.streamManagers;_b<_c.length;_b++){var streamManager=_c[_b];if(streamManager.disassociateVideo(video)){returnNumber=-1;break}}this.stream.session.streamManagers.forEach((function(streamManager){streamManager.disassociateVideo(video)}));this.pushNewStreamManagerVideo({video:video,id:video.id,canplayListenerAdded:false});logger.info("New video element associated to ",this);return returnNumber};StreamManager.prototype.createVideoElement=function(targetElement,insertMode){var targEl;if(typeof targetElement==="string"){targEl=document.getElementById(targetElement);if(!targEl){throw new Error("The provided 'targetElement' couldn't be resolved to any HTML element: "+targetElement)}}else if(targetElement instanceof HTMLElement){targEl=targetElement}else{throw new Error("The provided 'targetElement' couldn't be resolved to any HTML element: "+targetElement)}var video=this.createVideo();this.initializeVideoProperties(video);var insMode=!!insertMode?insertMode:VideoInsertMode_1.VideoInsertMode.APPEND;switch(insMode){case VideoInsertMode_1.VideoInsertMode.AFTER:targEl.parentNode.insertBefore(video,targEl.nextSibling);break;case VideoInsertMode_1.VideoInsertMode.APPEND:targEl.appendChild(video);break;case VideoInsertMode_1.VideoInsertMode.BEFORE:targEl.parentNode.insertBefore(video,targEl);break;case VideoInsertMode_1.VideoInsertMode.PREPEND:targEl.insertBefore(video,targEl.childNodes[0]);break;case VideoInsertMode_1.VideoInsertMode.REPLACE:targEl.parentNode.replaceChild(video,targEl);break;default:insMode=VideoInsertMode_1.VideoInsertMode.APPEND;targEl.appendChild(video);break}var v={targetElement:targEl,video:video,insertMode:insMode,id:video.id,canplayListenerAdded:false};this.pushNewStreamManagerVideo(v);this.ee.emitEvent("videoElementCreated",[new VideoElementEvent_1.VideoElementEvent(v.video,this,"videoElementCreated")]);this.lazyLaunchVideoElementCreatedEvent=!!this.firstVideoElement;return video};StreamManager.prototype.updatePublisherSpeakingEventsOptions=function(publisherSpeakingEventsOptions){var currentHarkOptions=!!this.stream.harkOptions?this.stream.harkOptions:this.stream.session.openvidu.advancedConfiguration.publisherSpeakingEventsOptions||{};var newInterval=typeof publisherSpeakingEventsOptions.interval==="number"?publisherSpeakingEventsOptions.interval:typeof currentHarkOptions.interval==="number"?currentHarkOptions.interval:100;var newThreshold=typeof publisherSpeakingEventsOptions.threshold==="number"?publisherSpeakingEventsOptions.threshold:typeof currentHarkOptions.threshold==="number"?currentHarkOptions.threshold:-50;this.stream.harkOptions={interval:newInterval,threshold:newThreshold};if(!!this.stream.speechEvent){this.stream.speechEvent.setInterval(newInterval);this.stream.speechEvent.setThreshold(newThreshold)}};StreamManager.prototype.initializeVideoProperties=function(video){if(!(!this.remote&&this.stream.displayMyRemote())){if(video.srcObject!==this.stream.getMediaStream()){video.srcObject=this.stream.getMediaStream()}}video.autoplay=true;video.controls=false;if(platform.isSafariBrowser()||platform.isIPhoneOrIPad()&&(platform.isChromeMobileBrowser()||platform.isEdgeMobileBrowser()||platform.isOperaMobileBrowser()||platform.isFirefoxMobileBrowser())){video.playsInline=true}if(!video.id){video.id=(this.remote?"remote-":"local-")+"video-"+this.stream.streamId;if(!this.id&&!!this.targetElement){this.id=video.id}}if(this.remote&&this.isMirroredVideo(video)){this.removeMirrorVideo(video)}else if(!this.remote&&!this.stream.displayMyRemote()){video.muted=true;if(this.isMirroredVideo(video)&&!this.stream.outboundStreamOpts.publisherProperties.mirror){this.removeMirrorVideo(video)}else if(this.stream.outboundStreamOpts.publisherProperties.mirror&&!this.stream.isSendScreen()){this.mirrorVideo(video)}}};StreamManager.prototype.removeAllVideos=function(){var _this=this;for(var i=this.stream.session.streamManagers.length-1;i>=0;--i){if(this.stream.session.streamManagers[i]===this){this.stream.session.streamManagers.splice(i,1)}}this.videos.forEach((function(streamManagerVideo){if(!!streamManagerVideo.video&&!!streamManagerVideo.video.removeEventListener){streamManagerVideo.video.removeEventListener("canplay",_this.canPlayListener)}streamManagerVideo.canplayListenerAdded=false;if(!!streamManagerVideo.targetElement){streamManagerVideo.video.parentNode.removeChild(streamManagerVideo.video);_this.ee.emitEvent("videoElementDestroyed",[new VideoElementEvent_1.VideoElementEvent(streamManagerVideo.video,_this,"videoElementDestroyed")])}_this.removeSrcObject(streamManagerVideo);_this.videos.filter((function(v){return!v.targetElement}))}))};StreamManager.prototype.disassociateVideo=function(video){var disassociated=false;for(var i=0;i<this.videos.length;i++){if(this.videos[i].video===video){this.videos[i].video.removeEventListener("canplay",this.canPlayListener);this.videos.splice(i,1);disassociated=true;logger.info("Video element disassociated from ",this);break}}return disassociated};StreamManager.prototype.addPlayEventToFirstVideo=function(){if(!!this.videos[0]&&!!this.videos[0].video&&!this.videos[0].canplayListenerAdded){this.activateStreamPlayingEventExceptionTimeout();this.videos[0].video.addEventListener("canplay",this.canPlayListener);this.videos[0].canplayListenerAdded=true}};StreamManager.prototype.updateMediaStream=function(mediaStream){this.videos.forEach((function(streamManagerVideo){streamManagerVideo.video.srcObject=mediaStream;if(platform.isIonicIos()){var vParent=streamManagerVideo.video.parentElement;var newVideo=streamManagerVideo.video;vParent.replaceChild(newVideo,streamManagerVideo.video);streamManagerVideo.video=newVideo}}))};StreamManager.prototype.emitEvent=function(type,eventArray){this.ee.emitEvent(type,eventArray)};StreamManager.prototype.createVideo=function(){return document.createElement("video")};StreamManager.prototype.removeSrcObject=function(streamManagerVideo){streamManagerVideo.video.srcObject=null;this.deactivateStreamPlayingEventExceptionTimeout()};StreamManager.prototype.pushNewStreamManagerVideo=function(streamManagerVideo){this.videos.push(streamManagerVideo);this.addPlayEventToFirstVideo();if(this.stream.session.streamManagers.indexOf(this)===-1){this.stream.session.streamManagers.push(this)}};StreamManager.prototype.mirrorVideo=function(video){if(!platform.isIonicIos()){video.style.transform="rotateY(180deg)";video.style.webkitTransform="rotateY(180deg)"}};StreamManager.prototype.removeMirrorVideo=function(video){video.style.transform="unset";video.style.webkitTransform="unset"};StreamManager.prototype.isMirroredVideo=function(video){return video.style.transform==="rotateY(180deg)"||video.style.webkitTransform==="rotateY(180deg)"};StreamManager.prototype.activateStreamPlayingEventExceptionTimeout=function(){var _this=this;if(!this.remote){return}if(this.streamPlayingEventExceptionTimeout!=null){return}var msTimeout=this.stream.session.openvidu.advancedConfiguration.noStreamPlayingEventExceptionTimeout||4e3;this.streamPlayingEventExceptionTimeout=setTimeout((function(){var msg="StreamManager of Stream "+_this.stream.streamId+" ("+(_this.remote?"Subscriber":"Publisher")+') did not trigger "streamPlaying" event in '+msTimeout+" ms";logger.warn(msg);_this.stream.session.emitEvent("exception",[new ExceptionEvent_1.ExceptionEvent(_this.stream.session,ExceptionEvent_1.ExceptionEventName.NO_STREAM_PLAYING_EVENT,_this,msg)]);delete _this.streamPlayingEventExceptionTimeout}),msTimeout)};StreamManager.prototype.deactivateStreamPlayingEventExceptionTimeout=function(){clearTimeout(this.streamPlayingEventExceptionTimeout);delete this.streamPlayingEventExceptionTimeout};return StreamManager}(EventDispatcher_1.EventDispatcher);exports.StreamManager=StreamManager},{"../OpenViduInternal/Enums/VideoInsertMode":55,"../OpenViduInternal/Events/ExceptionEvent":59,"../OpenViduInternal/Events/StreamManagerEvent":68,"../OpenViduInternal/Events/VideoElementEvent":70,"../OpenViduInternal/Logger/OpenViduLogger":81,"../OpenViduInternal/Utils/Platform":85,"./EventDispatcher":43}],51:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.Subscriber=void 0;var StreamManager_1=require("./StreamManager");var OpenViduLogger_1=require("../OpenViduInternal/Logger/OpenViduLogger");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var Subscriber=function(_super){__extends(Subscriber,_super);function Subscriber(stream,targEl,properties){var _this=_super.call(this,stream,targEl)||this;_this.element=_this.targetElement;_this.stream=stream;_this.properties=properties;return _this}Subscriber.prototype.subscribeToAudio=function(value){this.stream.getMediaStream().getAudioTracks().forEach((function(track){track.enabled=value}));this.stream.audioActive=value;logger.info("'Subscriber' has "+(value?"subscribed to":"unsubscribed from")+" its audio stream");return this};Subscriber.prototype.subscribeToVideo=function(value){this.stream.getMediaStream().getVideoTracks().forEach((function(track){track.enabled=value}));this.stream.videoActive=value;logger.info("'Subscriber' has "+(value?"subscribed to":"unsubscribed from")+" its video stream");return this};Subscriber.prototype.replaceTrackInMediaStream=function(track,updateLastConstraints){var mediaStream=this.stream.getMediaStream();var removedTrack;if(track.kind==="video"){removedTrack=mediaStream.getVideoTracks()[0];if(updateLastConstraints){this.stream.lastVideoTrackConstraints=track.getConstraints()}}else{removedTrack=mediaStream.getAudioTracks()[0]}mediaStream.removeTrack(removedTrack);removedTrack.stop();mediaStream.addTrack(track)};return Subscriber}(StreamManager_1.StreamManager);exports.Subscriber=Subscriber},{"../OpenViduInternal/Logger/OpenViduLogger":81,"./StreamManager":50}],52:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.LocalRecorderState=void 0;var LocalRecorderState;(function(LocalRecorderState){LocalRecorderState["READY"]="READY";LocalRecorderState["RECORDING"]="RECORDING";LocalRecorderState["PAUSED"]="PAUSED";LocalRecorderState["FINISHED"]="FINISHED"})(LocalRecorderState=exports.LocalRecorderState||(exports.LocalRecorderState={}))},{}],53:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.OpenViduError=exports.OpenViduErrorName=void 0;var OpenViduErrorName;(function(OpenViduErrorName){OpenViduErrorName["BROWSER_NOT_SUPPORTED"]="BROWSER_NOT_SUPPORTED";OpenViduErrorName["DEVICE_ACCESS_DENIED"]="DEVICE_ACCESS_DENIED";OpenViduErrorName["DEVICE_ALREADY_IN_USE"]="DEVICE_ALREADY_IN_USE";OpenViduErrorName["SCREEN_CAPTURE_DENIED"]="SCREEN_CAPTURE_DENIED";OpenViduErrorName["SCREEN_SHARING_NOT_SUPPORTED"]="SCREEN_SHARING_NOT_SUPPORTED";OpenViduErrorName["SCREEN_EXTENSION_NOT_INSTALLED"]="SCREEN_EXTENSION_NOT_INSTALLED";OpenViduErrorName["SCREEN_EXTENSION_DISABLED"]="SCREEN_EXTENSION_DISABLED";OpenViduErrorName["INPUT_VIDEO_DEVICE_NOT_FOUND"]="INPUT_VIDEO_DEVICE_NOT_FOUND";OpenViduErrorName["INPUT_AUDIO_DEVICE_NOT_FOUND"]="INPUT_AUDIO_DEVICE_NOT_FOUND";OpenViduErrorName["INPUT_AUDIO_DEVICE_GENERIC_ERROR"]="INPUT_AUDIO_DEVICE_GENERIC_ERROR";OpenViduErrorName["NO_INPUT_SOURCE_SET"]="NO_INPUT_SOURCE_SET";OpenViduErrorName["PUBLISHER_PROPERTIES_ERROR"]="PUBLISHER_PROPERTIES_ERROR";OpenViduErrorName["OPENVIDU_PERMISSION_DENIED"]="OPENVIDU_PERMISSION_DENIED";OpenViduErrorName["OPENVIDU_NOT_CONNECTED"]="OPENVIDU_NOT_CONNECTED";OpenViduErrorName["VIRTUAL_BACKGROUND_ERROR"]="VIRTUAL_BACKGROUND_ERROR";OpenViduErrorName["GENERIC_ERROR"]="GENERIC_ERROR"})(OpenViduErrorName=exports.OpenViduErrorName||(exports.OpenViduErrorName={}));var OpenViduError=function(){function OpenViduError(name,message){this.name=name;this.message=message}return OpenViduError}();exports.OpenViduError=OpenViduError},{}],54:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.TypeOfVideo=void 0;var TypeOfVideo;(function(TypeOfVideo){TypeOfVideo["CAMERA"]="CAMERA";TypeOfVideo["SCREEN"]="SCREEN";TypeOfVideo["CUSTOM"]="CUSTOM";TypeOfVideo["IPCAM"]="IPCAM"})(TypeOfVideo=exports.TypeOfVideo||(exports.TypeOfVideo={}))},{}],55:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.VideoInsertMode=void 0;var VideoInsertMode;(function(VideoInsertMode){VideoInsertMode["AFTER"]="AFTER";VideoInsertMode["APPEND"]="APPEND";VideoInsertMode["BEFORE"]="BEFORE";VideoInsertMode["PREPEND"]="PREPEND";VideoInsertMode["REPLACE"]="REPLACE"})(VideoInsertMode=exports.VideoInsertMode||(exports.VideoInsertMode={}))},{}],56:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.ConnectionEvent=void 0;var Event_1=require("./Event");var ConnectionEvent=function(_super){__extends(ConnectionEvent,_super);function ConnectionEvent(cancelable,target,type,connection,reason){var _this=_super.call(this,cancelable,target,type)||this;_this.connection=connection;_this.reason=reason;return _this}ConnectionEvent.prototype.callDefaultBehavior=function(){};return ConnectionEvent}(Event_1.Event);exports.ConnectionEvent=ConnectionEvent},{"./Event":58}],57:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.ConnectionPropertyChangedEvent=void 0;var Event_1=require("./Event");var ConnectionPropertyChangedEvent=function(_super){__extends(ConnectionPropertyChangedEvent,_super);function ConnectionPropertyChangedEvent(target,connection,changedProperty,newValue,oldValue){var _this=_super.call(this,false,target,"connectionPropertyChanged")||this;_this.connection=connection;_this.changedProperty=changedProperty;_this.newValue=newValue;_this.oldValue=oldValue;return _this}ConnectionPropertyChangedEvent.prototype.callDefaultBehavior=function(){};return ConnectionPropertyChangedEvent}(Event_1.Event);exports.ConnectionPropertyChangedEvent=ConnectionPropertyChangedEvent},{"./Event":58}],58:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.Event=void 0;var Event=function(){function Event(cancelable,target,type){this.hasBeenPrevented=false;this.cancelable=cancelable;this.target=target;this.type=type}Event.prototype.isDefaultPrevented=function(){return this.hasBeenPrevented};Event.prototype.preventDefault=function(){this.callDefaultBehavior=function(){};this.hasBeenPrevented=true};return Event}();exports.Event=Event},{}],59:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.ExceptionEvent=exports.ExceptionEventName=void 0;var Event_1=require("./Event");var ExceptionEventName;(function(ExceptionEventName){ExceptionEventName["ICE_CANDIDATE_ERROR"]="ICE_CANDIDATE_ERROR";ExceptionEventName["ICE_CONNECTION_FAILED"]="ICE_CONNECTION_FAILED";ExceptionEventName["ICE_CONNECTION_DISCONNECTED"]="ICE_CONNECTION_DISCONNECTED";ExceptionEventName["NO_STREAM_PLAYING_EVENT"]="NO_STREAM_PLAYING_EVENT";ExceptionEventName["SPEECH_TO_TEXT_DISCONNECTED"]="SPEECH_TO_TEXT_DISCONNECTED"})(ExceptionEventName=exports.ExceptionEventName||(exports.ExceptionEventName={}));var ExceptionEvent=function(_super){__extends(ExceptionEvent,_super);function ExceptionEvent(session,name,origin,message,data){var _this=_super.call(this,false,session,"exception")||this;_this.name=name;_this.origin=origin;_this.message=message;_this.data=data;return _this}ExceptionEvent.prototype.callDefaultBehavior=function(){};return ExceptionEvent}(Event_1.Event);exports.ExceptionEvent=ExceptionEvent},{"./Event":58}],60:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.FilterEvent=void 0;var Event_1=require("./Event");var FilterEvent=function(_super){__extends(FilterEvent,_super);function FilterEvent(target,eventType,data){var _this=_super.call(this,false,target,eventType)||this;_this.data=data;return _this}FilterEvent.prototype.callDefaultBehavior=function(){};return FilterEvent}(Event_1.Event);exports.FilterEvent=FilterEvent},{"./Event":58}],61:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.NetworkQualityLevelChangedEvent=void 0;var Event_1=require("./Event");var NetworkQualityLevelChangedEvent=function(_super){__extends(NetworkQualityLevelChangedEvent,_super);function NetworkQualityLevelChangedEvent(target,newValue,oldValue,connection){var _this=_super.call(this,false,target,"networkQualityLevelChanged")||this;_this.newValue=newValue;_this.oldValue=oldValue;_this.connection=connection;return _this}NetworkQualityLevelChangedEvent.prototype.callDefaultBehavior=function(){};return NetworkQualityLevelChangedEvent}(Event_1.Event);exports.NetworkQualityLevelChangedEvent=NetworkQualityLevelChangedEvent},{"./Event":58}],62:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.PublisherSpeakingEvent=void 0;var Event_1=require("./Event");var PublisherSpeakingEvent=function(_super){__extends(PublisherSpeakingEvent,_super);function PublisherSpeakingEvent(target,type,connection,streamId){var _this=_super.call(this,false,target,type)||this;_this.type=type;_this.connection=connection;_this.streamId=streamId;return _this}PublisherSpeakingEvent.prototype.callDefaultBehavior=function(){};return PublisherSpeakingEvent}(Event_1.Event);exports.PublisherSpeakingEvent=PublisherSpeakingEvent},{"./Event":58}],63:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.RecordingEvent=void 0;var Event_1=require("./Event");var RecordingEvent=function(_super){__extends(RecordingEvent,_super);function RecordingEvent(target,type,id,name,reason){var _this=_super.call(this,false,target,type)||this;_this.id=id;if(name!==id){_this.name=name}_this.reason=reason;return _this}RecordingEvent.prototype.callDefaultBehavior=function(){};return RecordingEvent}(Event_1.Event);exports.RecordingEvent=RecordingEvent},{"./Event":58}],64:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.SessionDisconnectedEvent=void 0;var Event_1=require("./Event");var OpenViduLogger_1=require("../Logger/OpenViduLogger");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var SessionDisconnectedEvent=function(_super){__extends(SessionDisconnectedEvent,_super);function SessionDisconnectedEvent(target,reason){var _this=_super.call(this,true,target,"sessionDisconnected")||this;_this.reason=reason;return _this}SessionDisconnectedEvent.prototype.callDefaultBehavior=function(){logger.info("Calling default behavior upon '"+this.type+"' event dispatched by 'Session'");var session=this.target;session.remoteConnections.forEach((function(remoteConnection){var _a,_b,_c,_d,_e,_f,_g,_h;var connectionId=remoteConnection.connectionId;if(!!((_a=session.remoteConnections.get(connectionId))===null||_a===void 0?void 0:_a.stream)){(_b=session.remoteConnections.get(connectionId))===null||_b===void 0?void 0:_b.stream.disposeWebRtcPeer();(_c=session.remoteConnections.get(connectionId))===null||_c===void 0?void 0:_c.stream.disposeMediaStream();if((_d=session.remoteConnections.get(connectionId))===null||_d===void 0?void 0:_d.stream.streamManager){(_e=session.remoteConnections.get(connectionId))===null||_e===void 0?void 0:_e.stream.streamManager.removeAllVideos()}var streamId=(_g=(_f=session.remoteConnections.get(connectionId))===null||_f===void 0?void 0:_f.stream)===null||_g===void 0?void 0:_g.streamId;if(!!streamId){session.remoteStreamsCreated.delete(streamId)}(_h=session.remoteConnections.get(connectionId))===null||_h===void 0?void 0:_h.dispose()}session.remoteConnections.delete(connectionId)}))};return SessionDisconnectedEvent}(Event_1.Event);exports.SessionDisconnectedEvent=SessionDisconnectedEvent},{"../Logger/OpenViduLogger":81,"./Event":58}],65:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.SignalEvent=void 0;var Event_1=require("./Event");var SignalEvent=function(_super){__extends(SignalEvent,_super);function SignalEvent(target,type,data,from){var _this=_super.call(this,false,target,"signal")||this;if(!!type){_this.type="signal:"+type}_this.data=data;_this.from=from;return _this}SignalEvent.prototype.callDefaultBehavior=function(){};return SignalEvent}(Event_1.Event);exports.SignalEvent=SignalEvent},{"./Event":58}],66:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.SpeechToTextEvent=void 0;var Event_1=require("./Event");var SpeechToTextEvent=function(_super){__extends(SpeechToTextEvent,_super);function SpeechToTextEvent(target,connection,text,reason,raw,lang){var _this=_super.call(this,false,target,"speechToTextMessage")||this;_this.connection=connection;_this.text=text;_this.reason=reason;_this.raw=raw;_this.lang=lang;return _this}SpeechToTextEvent.prototype.callDefaultBehavior=function(){};return SpeechToTextEvent}(Event_1.Event);exports.SpeechToTextEvent=SpeechToTextEvent},{"./Event":58}],67:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.StreamEvent=void 0;var Event_1=require("./Event");var Publisher_1=require("../../OpenVidu/Publisher");var Session_1=require("../../OpenVidu/Session");var OpenViduLogger_1=require("../Logger/OpenViduLogger");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var StreamEvent=function(_super){__extends(StreamEvent,_super);function StreamEvent(cancelable,target,type,stream,reason){var _this=_super.call(this,cancelable,target,type)||this;_this.stream=stream;_this.reason=reason;return _this}StreamEvent.prototype.callDefaultBehavior=function(){if(this.type==="streamDestroyed"){if(this.target instanceof Session_1.Session){logger.info("Calling default behavior upon '"+this.type+"' event dispatched by 'Session'");this.stream.disposeWebRtcPeer()}else if(this.target instanceof Publisher_1.Publisher){logger.info("Calling default behavior upon '"+this.type+"' event dispatched by 'Publisher'");clearInterval(this.target.screenShareResizeInterval);this.stream.isLocalStreamReadyToPublish=false;var openviduPublishers=this.target.openvidu.publishers;for(var i=0;i<openviduPublishers.length;i++){if(openviduPublishers[i]===this.target){openviduPublishers.splice(i,1);break}}}this.stream.disposeMediaStream();if(this.stream.streamManager)this.stream.streamManager.removeAllVideos();this.stream.session.remoteStreamsCreated.delete(this.stream.streamId);var remoteConnection=this.stream.session.remoteConnections.get(this.stream.connection.connectionId);if(!!remoteConnection&&!!remoteConnection.remoteOptions){var streamOptionsServer=remoteConnection.remoteOptions.streams;for(var i=streamOptionsServer.length-1;i>=0;--i){if(streamOptionsServer[i].id===this.stream.streamId){streamOptionsServer.splice(i,1)}}}}};return StreamEvent}(Event_1.Event);exports.StreamEvent=StreamEvent},{"../../OpenVidu/Publisher":47,"../../OpenVidu/Session":48,"../Logger/OpenViduLogger":81,"./Event":58}],68:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.StreamManagerEvent=void 0;var Event_1=require("./Event");var StreamManagerEvent=function(_super){__extends(StreamManagerEvent,_super);function StreamManagerEvent(target,type,value){var _this=_super.call(this,false,target,type)||this;_this.value=value;return _this}StreamManagerEvent.prototype.callDefaultBehavior=function(){};return StreamManagerEvent}(Event_1.Event);exports.StreamManagerEvent=StreamManagerEvent},{"./Event":58}],69:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.StreamPropertyChangedEvent=void 0;var Event_1=require("./Event");var StreamPropertyChangedEvent=function(_super){__extends(StreamPropertyChangedEvent,_super);function StreamPropertyChangedEvent(target,stream,changedProperty,newValue,oldValue,reason){var _this=_super.call(this,false,target,"streamPropertyChanged")||this;_this.stream=stream;_this.changedProperty=changedProperty;_this.newValue=newValue;_this.oldValue=oldValue;_this.reason=reason;return _this}StreamPropertyChangedEvent.prototype.callDefaultBehavior=function(){};return StreamPropertyChangedEvent}(Event_1.Event);exports.StreamPropertyChangedEvent=StreamPropertyChangedEvent},{"./Event":58}],70:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();Object.defineProperty(exports,"__esModule",{value:true});exports.VideoElementEvent=void 0;var Event_1=require("./Event");var VideoElementEvent=function(_super){__extends(VideoElementEvent,_super);function VideoElementEvent(element,target,type){var _this=_super.call(this,false,target,type)||this;_this.element=element;return _this}VideoElementEvent.prototype.callDefaultBehavior=function(){};return VideoElementEvent}(Event_1.Event);exports.VideoElementEvent=VideoElementEvent},{"./Event":58}],71:[function(require,module,exports){function Mapper(){var sources={};this.forEach=function(callback){for(var key in sources){var source=sources[key];for(var key2 in source)callback(source[key2])}};this.get=function(id,source){var ids=sources[source];if(ids==undefined)return undefined;return ids[id]};this.remove=function(id,source){var ids=sources[source];if(ids==undefined)return;delete ids[id];for(var i in ids){return false}delete sources[source]};this.set=function(value,id,source){if(value==undefined)return this.remove(id,source);var ids=sources[source];if(ids==undefined)sources[source]=ids={};ids[id]=value}}Mapper.prototype.pop=function(id,source){var value=this.get(id,source);if(value==undefined)return undefined;this.remove(id,source);return value};module.exports=Mapper},{}],72:[function(require,module,exports){var JsonRpcClient=require("./jsonrpcclient");exports.JsonRpcClient=JsonRpcClient},{"./jsonrpcclient":73}],73:[function(require,module,exports){var RpcBuilder=require("../");var WebSocketWithReconnection=require("./transports/webSocketWithReconnection");var OpenViduLogger=require("../../../Logger/OpenViduLogger").OpenViduLogger;Date.now=Date.now||function(){return+new Date};var PING_INTERVAL=5e3;var RECONNECTING="RECONNECTING";var CONNECTED="CONNECTED";var DISCONNECTED="DISCONNECTED";var Logger=OpenViduLogger.getInstance();function JsonRpcClient(configuration){var self=this;var wsConfig=configuration.ws;var notReconnectIfNumLessThan=-1;var pingNextNum=0;var enabledPings=true;var pingPongStarted=false;var pingInterval;var status=DISCONNECTED;var onreconnecting=wsConfig.onreconnecting;var onreconnected=wsConfig.onreconnected;var onconnected=wsConfig.onconnected;var onerror=wsConfig.onerror;configuration.rpc.pull=function(params,request){request.reply(null,"push")};wsConfig.onreconnecting=function(){Logger.debug("--------- ONRECONNECTING -----------");if(status===RECONNECTING){Logger.error("Websocket already in RECONNECTING state when receiving a new ONRECONNECTING message. Ignoring it");return}stopPing();status=RECONNECTING;if(onreconnecting){onreconnecting()}};wsConfig.onreconnected=function(){Logger.debug("--------- ONRECONNECTED -----------");if(status===CONNECTED){Logger.error("Websocket already in CONNECTED state when receiving a new ONRECONNECTED message. Ignoring it");return}status=CONNECTED;updateNotReconnectIfLessThan();if(onreconnected){onreconnected()}};wsConfig.onconnected=function(){Logger.debug("--------- ONCONNECTED -----------");if(status===CONNECTED){Logger.error("Websocket already in CONNECTED state when receiving a new ONCONNECTED message. Ignoring it");return}status=CONNECTED;enabledPings=true;usePing();if(onconnected){onconnected()}};wsConfig.onerror=function(error){Logger.debug("--------- ONERROR -----------");status=DISCONNECTED;stopPing();if(onerror){onerror(error)}};var ws=new WebSocketWithReconnection(wsConfig);Logger.debug("Connecting websocket to URI: "+wsConfig.uri);var rpcBuilderOptions={request_timeout:configuration.rpc.requestTimeout,ping_request_timeout:configuration.rpc.heartbeatRequestTimeout};var rpc=new RpcBuilder(RpcBuilder.packers.JsonRPC,rpcBuilderOptions,ws,(function(request){Logger.debug("Received request: "+JSON.stringify(request));try{var func=configuration.rpc[request.method];if(func===undefined){Logger.error("Method "+request.method+" not registered in client")}else{func(request.params,request)}}catch(err){Logger.error("Exception processing request: "+JSON.stringify(request));Logger.error(err)}}));this.send=function(method,params,callback){var requestTime=Date.now();rpc.encode(method,params,(function(error,result){if(error){try{Logger.error("ERROR:"+error.message+" in Request: method:"+method+" params:"+JSON.stringify(params)+" request:"+error.request);if(error.data){Logger.error("ERROR DATA:"+JSON.stringify(error.data))}}catch(e){}error.requestTime=requestTime}if(callback){if(result!=undefined&&result.value!=="pong"){Logger.debug("Response: "+JSON.stringify(result))}callback(error,result)}}))};function updateNotReconnectIfLessThan(){Logger.debug("notReconnectIfNumLessThan = "+pingNextNum+" (old="+notReconnectIfNumLessThan+")");notReconnectIfNumLessThan=pingNextNum}function sendPing(){if(enabledPings){var params=null;if(pingNextNum==0||pingNextNum==notReconnectIfNumLessThan){params={interval:configuration.heartbeat||PING_INTERVAL}}pingNextNum++;self.send("ping",params,function(pingNum){return function(error,result){if(error){Logger.debug("Error in ping request #"+pingNum+" ("+error.message+")");if(pingNum>notReconnectIfNumLessThan){enabledPings=false;updateNotReconnectIfLessThan();Logger.debug("Server did not respond to ping message #"+pingNum+". Reconnecting... ");ws.reconnectWs()}}}}(pingNextNum))}else{Logger.debug("Trying to send ping, but ping is not enabled")}}function usePing(){if(!pingPongStarted){Logger.debug("Starting ping (if configured)");pingPongStarted=true;if(configuration.heartbeat!=undefined){pingInterval=setInterval(sendPing,configuration.heartbeat);sendPing()}}}function stopPing(){clearInterval(pingInterval);pingPongStarted=false;enabledPings=false;pingNextNum=-1;rpc.cancel()}this.close=function(code,reason){Logger.debug("Closing with code: "+code+" because: "+reason);if(pingInterval!=undefined){Logger.debug("Clearing ping interval");clearInterval(pingInterval)}pingPongStarted=false;enabledPings=false;ws.close(code,reason)};this.reconnect=function(){ws.reconnectWs()};this.resetPing=function(){enabledPings=true;pingNextNum=0;usePing()};this.getReadyState=function(){return ws.getReadyState()}}module.exports=JsonRpcClient},{"../":76,"../../../Logger/OpenViduLogger":81,"./transports/webSocketWithReconnection":75}],74:[function(require,module,exports){var WebSocketWithReconnection=require("./webSocketWithReconnection");exports.WebSocketWithReconnection=WebSocketWithReconnection},{"./webSocketWithReconnection":75}],75:[function(require,module,exports){"use strict";var OpenViduLogger=require("../../../../Logger/OpenViduLogger").OpenViduLogger;var Logger=OpenViduLogger.getInstance();var MAX_RETRIES=2e3;var RETRY_TIME_MS=3e3;var CONNECTING=0;var OPEN=1;var CLOSING=2;var CLOSED=3;function WebSocketWithReconnection(config){var closing=false;var registerMessageHandler;var wsUri=config.uri;var reconnecting=false;var ws=new WebSocket(wsUri);ws.onopen=function(){Logger.debug("WebSocket connected to "+wsUri);if(config.onconnected){config.onconnected()}};ws.onerror=function(error){Logger.error("Could not connect to "+wsUri+" (invoking onerror if defined)",error);if(config.onerror){config.onerror(error)}};var reconnectionOnClose=function(){if(ws.readyState===CLOSED){if(closing){Logger.debug("Connection closed by user")}else{if(config.ismasternodecrashed()){Logger.error("Master Node has crashed. Stopping reconnection process")}else{Logger.debug("Connection closed unexpectedly. Reconnecting...");reconnect(MAX_RETRIES,1)}}}else{Logger.debug("Close callback from previous websocket. Ignoring it")}};ws.onclose=reconnectionOnClose;function reconnect(maxRetries,numRetries){Logger.debug("reconnect (attempt #"+numRetries+", max="+maxRetries+")");if(numRetries===1){if(reconnecting){Logger.warn("Trying to reconnect when already reconnecting... Ignoring this reconnection.");return}else{reconnecting=true}if(config.onreconnecting){config.onreconnecting()}}reconnectAux(maxRetries,numRetries)}function addReconnectionQueryParamsIfMissing(uriString){var searchParams=new URLSearchParams(new URL(uriString).search);if(!searchParams.has("reconnect")){uriString=Array.from(searchParams).length>0?uriString+"&reconnect=true":uriString+"?reconnect=true"}return uriString}function reconnectAux(maxRetries,numRetries){Logger.debug("Reconnection attempt #"+numRetries);ws.close(4104,"Connection closed for reconnection");wsUri=addReconnectionQueryParamsIfMissing(wsUri);ws=new WebSocket(wsUri);ws.onopen=function(){Logger.debug("Reconnected to "+wsUri+" after "+numRetries+" attempts...");reconnecting=false;registerMessageHandler();if(config.onreconnected()){config.onreconnected()}ws.onclose=reconnectionOnClose};ws.onerror=function(error){Logger.warn("Reconnection error: ",error);if(numRetries===maxRetries){if(config.ondisconnect){config.ondisconnect()}}else{setTimeout((function(){reconnect(maxRetries,numRetries+1)}),RETRY_TIME_MS)}}}this.close=function(code,reason){closing=true;ws.close(code,reason)};this.reconnectWs=function(){Logger.debug("reconnectWs");reconnect(MAX_RETRIES,1)};this.send=function(message){ws.send(message)};this.addEventListener=function(type,callback){registerMessageHandler=function(){ws.addEventListener(type,callback)};registerMessageHandler()};this.getReadyState=function(){return ws.readyState}}module.exports=WebSocketWithReconnection},{"../../../../Logger/OpenViduLogger":81}],76:[function(require,module,exports){var defineProperty_IE8=false;if(Object.defineProperty){try{Object.defineProperty({},"x",{})}catch(e){defineProperty_IE8=true}}if(!Function.prototype.bind){Function.prototype.bind=function(oThis){if(typeof this!=="function"){throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable")}var aArgs=Array.prototype.slice.call(arguments,1),fToBind=this,fNOP=function(){},fBound=function(){return fToBind.apply(this instanceof fNOP&&oThis?this:oThis,aArgs.concat(Array.prototype.slice.call(arguments)))};fNOP.prototype=this.prototype;fBound.prototype=new fNOP;return fBound}}var EventEmitter=require("events").EventEmitter;var inherits=require("inherits");var packers=require("./packers");var Mapper=require("./Mapper");var BASE_TIMEOUT=5e3;function unifyResponseMethods(responseMethods){if(!responseMethods)return{};for(var key in responseMethods){var value=responseMethods[key];if(typeof value=="string")responseMethods[key]={response:value}}return responseMethods}function unifyTransport(transport){if(!transport)return;if(transport instanceof Function)return{send:transport};if(transport.send instanceof Function)return transport;if(transport.postMessage instanceof Function){transport.send=transport.postMessage;return transport}if(transport.write instanceof Function){transport.send=transport.write;return transport}if(transport.onmessage!==undefined)return;if(transport.pause instanceof Function)return;throw new SyntaxError("Transport is not a function nor a valid object")}function RpcNotification(method,params){if(defineProperty_IE8){this.method=method;this.params=params}else{Object.defineProperty(this,"method",{value:method,enumerable:true});Object.defineProperty(this,"params",{value:params,enumerable:true})}}function RpcBuilder(packer,options,transport,onRequest){var self=this;if(!packer)throw new SyntaxError("Packer is not defined");if(!packer.pack||!packer.unpack)throw new SyntaxError("Packer is invalid");var responseMethods=unifyResponseMethods(packer.responseMethods);if(options instanceof Function){if(transport!=undefined)throw new SyntaxError("There can't be parameters after onRequest");onRequest=options;transport=undefined;options=undefined}if(options&&options.send instanceof Function){if(transport&&!(transport instanceof Function))throw new SyntaxError("Only a function can be after transport");onRequest=transport;transport=options;options=undefined}if(transport instanceof Function){if(onRequest!=undefined)throw new SyntaxError("There can't be parameters after onRequest");onRequest=transport;transport=undefined}if(transport&&transport.send instanceof Function)if(onRequest&&!(onRequest instanceof Function))throw new SyntaxError("Only a function can be after transport");options=options||{};EventEmitter.call(this);if(onRequest)this.on("request",onRequest);if(defineProperty_IE8)this.peerID=options.peerID;else Object.defineProperty(this,"peerID",{value:options.peerID});var max_retries=options.max_retries||0;function transportMessage(event){self.decode(event.data||event)}this.getTransport=function(){return transport};this.setTransport=function(value){if(transport){if(transport.removeEventListener)transport.removeEventListener("message",transportMessage);else if(transport.removeListener)transport.removeListener("data",transportMessage)}if(value){if(value.addEventListener)value.addEventListener("message",transportMessage);else if(value.addListener)value.addListener("data",transportMessage)}transport=unifyTransport(value)};if(!defineProperty_IE8)Object.defineProperty(this,"transport",{get:this.getTransport.bind(this),set:this.setTransport.bind(this)});this.setTransport(transport);var request_timeout=options.request_timeout||BASE_TIMEOUT;var ping_request_timeout=options.ping_request_timeout||request_timeout;var response_timeout=options.response_timeout||BASE_TIMEOUT;var duplicates_timeout=options.duplicates_timeout||BASE_TIMEOUT;var requestID=0;var requests=new Mapper;var responses=new Mapper;var processedResponses=new Mapper;var message2Key={};function storeResponse(message,id,dest){var response={message:message,timeout:setTimeout((function(){responses.remove(id,dest)}),response_timeout)};responses.set(response,id,dest)}function storeProcessedResponse(ack,from){var timeout=setTimeout((function(){processedResponses.remove(ack,from)}),duplicates_timeout);processedResponses.set(timeout,ack,from)}function RpcRequest(method,params,id,from,transport){RpcNotification.call(this,method,params);this.getTransport=function(){return transport};this.setTransport=function(value){transport=unifyTransport(value)};if(!defineProperty_IE8)Object.defineProperty(this,"transport",{get:this.getTransport.bind(this),set:this.setTransport.bind(this)});var response=responses.get(id,from);if(!(transport||self.getTransport())){if(defineProperty_IE8)this.duplicated=Boolean(response);else Object.defineProperty(this,"duplicated",{value:Boolean(response)})}var responseMethod=responseMethods[method];this.pack=packer.pack.bind(packer,this,id);this.reply=function(error,result,transport){if(error instanceof Function||error&&error.send instanceof Function){if(result!=undefined)throw new SyntaxError("There can't be parameters after callback");transport=error;result=null;error=undefined}else if(result instanceof Function||result&&result.send instanceof Function){if(transport!=undefined)throw new SyntaxError("There can't be parameters after callback");transport=result;result=null}transport=unifyTransport(transport);if(response)clearTimeout(response.timeout);if(from!=undefined){if(error)error.dest=from;if(result)result.dest=from}var message;if(error||result!=undefined){if(self.peerID!=undefined){if(error)error.from=self.peerID;else result.from=self.peerID}if(responseMethod){if(responseMethod.error==undefined&&error)message={error:error};else{var method=error?responseMethod.error:responseMethod.response;message={method:method,params:error||result}}}else message={error:error,result:result};message=packer.pack(message,id)}else if(response)message=response.message;else message=packer.pack({result:null},id);storeResponse(message,id,from);transport=transport||this.getTransport()||self.getTransport();if(transport)return transport.send(message);return message}}inherits(RpcRequest,RpcNotification);function cancel(message){var key=message2Key[message];if(!key)return;delete message2Key[message];var request=requests.pop(key.id,key.dest);if(!request)return;clearTimeout(request.timeout);storeProcessedResponse(key.id,key.dest)}this.cancel=function(message){if(message)return cancel(message);for(var message in message2Key)cancel(message)};this.close=function(){var transport=this.getTransport();if(transport&&transport.close)transport.close(4003,"Cancel request");this.cancel();processedResponses.forEach(clearTimeout);responses.forEach((function(response){clearTimeout(response.timeout)}))};this.encode=function(method,params,dest,transport,callback){if(params instanceof Function){if(dest!=undefined)throw new SyntaxError("There can't be parameters after callback");callback=params;transport=undefined;dest=undefined;params=undefined}else if(dest instanceof Function){if(transport!=undefined)throw new SyntaxError("There can't be parameters after callback");callback=dest;transport=undefined;dest=undefined}else if(transport instanceof Function){if(callback!=undefined)throw new SyntaxError("There can't be parameters after callback");callback=transport;transport=undefined}if(self.peerID!=undefined){params=params||{};params.from=self.peerID}if(dest!=undefined){params=params||{};params.dest=dest}var message={method:method,params:params};if(callback){var id=requestID++;var retried=0;message=packer.pack(message,id);function dispatchCallback(error,result){self.cancel(message);callback(error,result)}var request={message:message,callback:dispatchCallback,responseMethods:responseMethods[method]||{}};var encode_transport=unifyTransport(transport);function sendRequest(transport){var rt=method==="ping"?ping_request_timeout:request_timeout;request.timeout=setTimeout(timeout,rt*Math.pow(2,retried++));message2Key[message]={id:id,dest:dest};requests.set(request,id,dest);transport=transport||encode_transport||self.getTransport();if(transport)return transport.send(message);return message}function retry(transport){transport=unifyTransport(transport);console.warn(retried+" retry for request message:",message);var timeout=processedResponses.pop(id,dest);clearTimeout(timeout);return sendRequest(transport)}function timeout(){if(retried<max_retries)return retry(transport);var error=new Error("Request has timed out");error.request=message;error.retry=retry;dispatchCallback(error)}return sendRequest(transport)}message=packer.pack(message);transport=transport||this.getTransport();if(transport)return transport.send(message);return message};this.decode=function(message,transport){if(!message)throw new TypeError("Message is not defined");try{message=packer.unpack(message)}catch(e){return console.debug(e,message)}var id=message.id;var ack=message.ack;var method=message.method;var params=message.params||{};var from=params.from;var dest=params.dest;if(self.peerID!=undefined&&from==self.peerID)return;if(id==undefined&&ack==undefined){var notification=new RpcNotification(method,params);if(self.emit("request",notification))return;return notification}function processRequest(){transport=unifyTransport(transport)||self.getTransport();if(transport){var response=responses.get(id,from);if(response)return transport.send(response.message)}var idAck=id!=undefined?id:ack;var request=new RpcRequest(method,params,idAck,from,transport);if(self.emit("request",request))return;return request}function processResponse(request,error,result){request.callback(error,result)}function duplicatedResponse(timeout){console.warn("Response already processed",message);clearTimeout(timeout);storeProcessedResponse(ack,from)}if(method){if(dest==undefined||dest==self.peerID){var request=requests.get(ack,from);if(request){var responseMethods=request.responseMethods;if(method==responseMethods.error)return processResponse(request,params);if(method==responseMethods.response)return processResponse(request,null,params);return processRequest()}var processed=processedResponses.get(ack,from);if(processed)return duplicatedResponse(processed)}return processRequest()}var error=message.error;var result=message.result;if(error&&error.dest&&error.dest!=self.peerID)return;if(result&&result.dest&&result.dest!=self.peerID)return;var request=requests.get(ack,from);if(!request){var processed=processedResponses.get(ack,from);if(processed)return duplicatedResponse(processed);return console.warn("No callback was defined for this message",message)}processResponse(request,error,result)}}inherits(RpcBuilder,EventEmitter);RpcBuilder.RpcNotification=RpcNotification;module.exports=RpcBuilder;var clients=require("./clients");var transports=require("./clients/transports");RpcBuilder.clients=clients;RpcBuilder.clients.transports=transports;RpcBuilder.packers=packers},{"./Mapper":71,"./clients":72,"./clients/transports":74,"./packers":79,events:1,inherits:6}],77:[function(require,module,exports){function pack(message,id){var result={jsonrpc:"2.0"};if(message.method){result.method=message.method;if(message.params)result.params=message.params;if(id!=undefined)result.id=id}else if(id!=undefined){if(message.error){if(message.result!==undefined)throw new TypeError("Both result and error are defined");result.error=message.error}else if(message.result!==undefined)result.result=message.result;else throw new TypeError("No result or error is defined");result.id=id}return JSON.stringify(result)}function unpack(message){var result=message;if(typeof message==="string"||message instanceof String){result=JSON.parse(message)}var version=result.jsonrpc;if(version!=="2.0")throw new TypeError("Invalid JsonRPC version '"+version+"': "+message);if(result.method==undefined){if(result.id==undefined)throw new TypeError("Invalid message: "+message);var result_defined=result.result!==undefined;var error_defined=result.error!==undefined;if(result_defined&&error_defined)throw new TypeError("Both result and error are defined: "+message);if(!result_defined&&!error_defined)throw new TypeError("No result or error is defined: "+message);result.ack=result.id;delete result.id}return result}exports.pack=pack;exports.unpack=unpack},{}],78:[function(require,module,exports){function pack(message){throw new TypeError("Not yet implemented")}function unpack(message){throw new TypeError("Not yet implemented")}exports.pack=pack;exports.unpack=unpack},{}],79:[function(require,module,exports){var JsonRPC=require("./JsonRPC");var XmlRPC=require("./XmlRPC");exports.JsonRPC=JsonRPC;exports.XmlRPC=XmlRPC},{"./JsonRPC":77,"./XmlRPC":78}],80:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.ConsoleLogger=void 0;var ConsoleLogger=function(){function ConsoleLogger(console){this.logger=console;this.log=console.log,this.info=console.info,this.debug=console.debug,this.warn=console.warn,this.error=console.error}return ConsoleLogger}();exports.ConsoleLogger=ConsoleLogger},{}],81:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.OpenViduLogger=void 0;var jsnlog_1=require("jsnlog");var ConsoleLogger_1=require("./ConsoleLogger");var OpenViduLoggerConfiguration_1=require("./OpenViduLoggerConfiguration");var OpenViduLogger=function(){function OpenViduLogger(){this.JSNLOG_URL="/openvidu/elk/openvidu-browser-logs";this.MAX_JSNLOG_BATCH_LOG_MESSAGES=100;this.MAX_MSECONDS_BATCH_MESSAGES=5e3;this.MAX_LENGTH_STRING_JSON=1e3;this.defaultConsoleLogger=new ConsoleLogger_1.ConsoleLogger(globalThis.console);this.isProdMode=false;this.isJSNLogSetup=false}OpenViduLogger.configureJSNLog=function(openVidu,token){var _this=this;try{if(globalThis["LOG_JSNLOG_RESULTS"]||this.instance&&openVidu.isAtLeastPro&&this.instance.isOpenViduBrowserLogsDebugActive(openVidu)&&this.instance.canConfigureJSNLog(openVidu,this.instance)){if(openVidu.sendBrowserLogs===OpenViduLoggerConfiguration_1.OpenViduLoggerConfiguration.debug_app){this.instance.replaceWindowConsole()}this.instance.isJSNLogSetup=false;this.instance.info("Configuring JSNLogs.");var finalUserId_1=openVidu.finalUserId;var sessionId_1=openVidu.session.sessionId;var beforeSendCallback=function(xhr){var parentReadyStateFunction=xhr.onreadystatechange;xhr.onreadystatechange=function(){if(_this.isInvalidResponse(xhr)){Object.defineProperty(xhr,"readyState",{value:4});Object.defineProperty(xhr,"status",{value:200});_this.instance.disableLogger()}parentReadyStateFunction()};xhr.setRequestHeader("Authorization","Basic "+btoa("".concat(finalUserId_1,"%/%").concat(sessionId_1)+":"+token));xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("OV-Final-User-Id",finalUserId_1);xhr.setRequestHeader("OV-Session-Id",sessionId_1);xhr.setRequestHeader("OV-Token",token)};this.instance.currentAppender=jsnlog_1.JL.createAjaxAppender("appender-".concat(finalUserId_1,"-").concat(sessionId_1));this.instance.currentAppender.setOptions({beforeSend:beforeSendCallback,maxBatchSize:1e3,batchSize:this.instance.MAX_JSNLOG_BATCH_LOG_MESSAGES,batchTimeout:this.instance.MAX_MSECONDS_BATCH_MESSAGES});var logSerializer=function(obj){var getCircularReplacer=function(){var seen=new WeakSet;return function(key,value){if(typeof value==="object"&&value!=null){if(seen.has(value)||globalThis.HTMLElement&&value instanceof HTMLElement){return}seen.add(value)}return value}};var stringifyJson=JSON.stringify(obj,getCircularReplacer());if(stringifyJson.length>_this.instance.MAX_LENGTH_STRING_JSON){stringifyJson="".concat(stringifyJson.substring(0,_this.instance.MAX_LENGTH_STRING_JSON),"...")}if(globalThis["LOG_JSNLOG_RESULTS"]){console.log(stringifyJson)}return stringifyJson};jsnlog_1.JL.setOptions({defaultAjaxUrl:openVidu.httpUri+this.instance.JSNLOG_URL,serialize:logSerializer,enabled:true});(0,jsnlog_1.JL)().setOptions({appenders:[this.instance.currentAppender]});this.instance.isJSNLogSetup=true;this.instance.loggingSessionId=sessionId_1;this.instance.info("JSNLog configured.")}}catch(e){console.error("Error configuring JSNLog: ");console.error(e);this.instance.disableLogger()}};OpenViduLogger.getInstance=function(){if(!OpenViduLogger.instance){OpenViduLogger.instance=new OpenViduLogger}return OpenViduLogger.instance};OpenViduLogger.isInvalidResponse=function(xhr){return xhr.status==401||xhr.status==403||xhr.status==404||xhr.status==0};OpenViduLogger.prototype.canConfigureJSNLog=function(openVidu,logger){return openVidu.session.sessionId!=logger.loggingSessionId};OpenViduLogger.prototype.isOpenViduBrowserLogsDebugActive=function(openVidu){return openVidu.sendBrowserLogs===OpenViduLoggerConfiguration_1.OpenViduLoggerConfiguration.debug||openVidu.sendBrowserLogs===OpenViduLoggerConfiguration_1.OpenViduLoggerConfiguration.debug_app};OpenViduLogger.prototype.getConsoleWithJSNLog=function(){return function(openViduLogger){return{log:function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}openViduLogger.defaultConsoleLogger.log.apply(openViduLogger.defaultConsoleLogger.logger,arguments);if(openViduLogger.isJSNLogSetup){(0,jsnlog_1.JL)().info(arguments)}},info:function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}openViduLogger.defaultConsoleLogger.info.apply(openViduLogger.defaultConsoleLogger.logger,arguments);if(openViduLogger.isJSNLogSetup){(0,jsnlog_1.JL)().info(arguments)}},debug:function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}openViduLogger.defaultConsoleLogger.debug.apply(openViduLogger.defaultConsoleLogger.logger,arguments)},warn:function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}openViduLogger.defaultConsoleLogger.warn.apply(openViduLogger.defaultConsoleLogger.logger,arguments);if(openViduLogger.isJSNLogSetup){(0,jsnlog_1.JL)().warn(arguments)}},error:function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}openViduLogger.defaultConsoleLogger.error.apply(openViduLogger.defaultConsoleLogger.logger,arguments);if(openViduLogger.isJSNLogSetup){(0,jsnlog_1.JL)().error(arguments)}}}}(this)};OpenViduLogger.prototype.replaceWindowConsole=function(){globalThis.console=this.defaultConsoleLogger.logger;globalThis.console.log=this.getConsoleWithJSNLog().log;globalThis.console.info=this.getConsoleWithJSNLog().info;globalThis.console.debug=this.getConsoleWithJSNLog().debug;globalThis.console.warn=this.getConsoleWithJSNLog().warn;globalThis.console.error=this.getConsoleWithJSNLog().error};OpenViduLogger.prototype.disableLogger=function(){jsnlog_1.JL.setOptions({enabled:false});this.isJSNLogSetup=false;this.loggingSessionId=undefined;this.currentAppender=undefined;globalThis.console=this.defaultConsoleLogger.logger;globalThis.console.log=this.defaultConsoleLogger.log;globalThis.console.info=this.defaultConsoleLogger.info;globalThis.console.debug=this.defaultConsoleLogger.debug;globalThis.console.warn=this.defaultConsoleLogger.warn;globalThis.console.error=this.defaultConsoleLogger.error};OpenViduLogger.prototype.log=function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}if(!this.isProdMode){this.defaultConsoleLogger.log.apply(this.defaultConsoleLogger.logger,arguments)}if(this.isJSNLogSetup){(0,jsnlog_1.JL)().info(arguments)}};OpenViduLogger.prototype.debug=function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}if(!this.isProdMode){this.defaultConsoleLogger.debug.apply(this.defaultConsoleLogger.logger,arguments)}};OpenViduLogger.prototype.info=function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}if(!this.isProdMode){this.defaultConsoleLogger.info.apply(this.defaultConsoleLogger.logger,arguments)}if(this.isJSNLogSetup){(0,jsnlog_1.JL)().info(arguments)}};OpenViduLogger.prototype.warn=function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}this.defaultConsoleLogger.warn.apply(this.defaultConsoleLogger.logger,arguments);if(this.isJSNLogSetup){(0,jsnlog_1.JL)().warn(arguments)}};OpenViduLogger.prototype.error=function(){var args=[];for(var _i=0;_i<arguments.length;_i++){args[_i]=arguments[_i]}this.defaultConsoleLogger.error.apply(this.defaultConsoleLogger.logger,arguments);if(this.isJSNLogSetup){(0,jsnlog_1.JL)().error(arguments)}};OpenViduLogger.prototype.flush=function(){if(this.isJSNLogSetup&&this.currentAppender!=null){this.currentAppender.sendBatch()}};OpenViduLogger.prototype.enableProdMode=function(){this.isProdMode=true};return OpenViduLogger}();exports.OpenViduLogger=OpenViduLogger},{"./ConsoleLogger":80,"./OpenViduLoggerConfiguration":82,jsnlog:7}],82:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.OpenViduLoggerConfiguration=void 0;var OpenViduLoggerConfiguration;(function(OpenViduLoggerConfiguration){OpenViduLoggerConfiguration["disabled"]="disabled";OpenViduLoggerConfiguration["debug"]="debug";OpenViduLoggerConfiguration["debug_app"]="debug_app"})(OpenViduLoggerConfiguration=exports.OpenViduLoggerConfiguration||(exports.OpenViduLoggerConfiguration={}))},{}],83:[function(require,module,exports){globalThis.getScreenId=function(firefoxString,callback,custom_parameter){if(navigator.userAgent.indexOf("Edge")!==-1&&(!!navigator.msSaveOrOpenBlob||!!navigator.msSaveBlob)){callback({video:true});return}if(!!navigator.mozGetUserMedia){callback(null,"firefox",{video:{mozMediaSource:firefoxString,mediaSource:firefoxString}});return}globalThis.addEventListener("message",onIFrameCallback);function onIFrameCallback(event){if(!event.data)return;if(event.data.chromeMediaSourceId){if(event.data.chromeMediaSourceId==="PermissionDeniedError"){callback("permission-denied")}else{callback(null,event.data.chromeMediaSourceId,getScreenConstraints(null,event.data.chromeMediaSourceId,event.data.canRequestAudioTrack))}globalThis.removeEventListener("message",onIFrameCallback)}if(event.data.chromeExtensionStatus){callback(event.data.chromeExtensionStatus,null,getScreenConstraints(event.data.chromeExtensionStatus));globalThis.removeEventListener("message",onIFrameCallback)}}if(!custom_parameter){setTimeout(postGetSourceIdMessage,100)}else{setTimeout((function(){postGetSourceIdMessage(custom_parameter)}),100)}};function getScreenConstraints(error,sourceId,canRequestAudioTrack){var screen_constraints={audio:false,video:{mandatory:{chromeMediaSource:error?"screen":"desktop",maxWidth:globalThis.screen.width>1920?globalThis.screen.width:1920,maxHeight:globalThis.screen.height>1080?globalThis.screen.height:1080},optional:[]}};if(!!canRequestAudioTrack){screen_constraints.audio={mandatory:{chromeMediaSource:error?"screen":"desktop"},optional:[]}}if(sourceId){screen_constraints.video.mandatory.chromeMediaSourceId=sourceId;if(screen_constraints.audio&&screen_constraints.audio.mandatory){screen_constraints.audio.mandatory.chromeMediaSourceId=sourceId}}return screen_constraints}function postGetSourceIdMessage(custom_parameter){if(!iframe){loadIFrame((function(){postGetSourceIdMessage(custom_parameter)}));return}if(!iframe.isLoaded){setTimeout((function(){postGetSourceIdMessage(custom_parameter)}),100);return}if(!custom_parameter){iframe.contentWindow.postMessage({captureSourceId:true},"*")}else if(!!custom_parameter.forEach){iframe.contentWindow.postMessage({captureCustomSourceId:custom_parameter},"*")}else{iframe.contentWindow.postMessage({captureSourceIdWithAudio:true},"*")}}var iframe;globalThis.getScreenConstraints=function(callback){loadIFrame((function(){getScreenId((function(error,sourceId,screen_constraints){if(!screen_constraints){screen_constraints={video:true}}callback(error,screen_constraints.video)}))}))};function loadIFrame(loadCallback){if(iframe){loadCallback();return}iframe=document.createElement("iframe");iframe.onload=function(){iframe.isLoaded=true;loadCallback()};iframe.src="https://openvidu.github.io/openvidu-screen-sharing-chrome-extension/";iframe.style.display="none";(document.body||document.documentElement).appendChild(iframe)}globalThis.getChromeExtensionStatus=function(callback){if(!!navigator.mozGetUserMedia){callback("installed-enabled");return}globalThis.addEventListener("message",onIFrameCallback);function onIFrameCallback(event){if(!event.data)return;if(event.data.chromeExtensionStatus){callback(event.data.chromeExtensionStatus);globalThis.removeEventListener("message",onIFrameCallback)}}setTimeout(postGetChromeExtensionStatusMessage,100)};function postGetChromeExtensionStatusMessage(){if(!iframe){loadIFrame(postGetChromeExtensionStatusMessage);return}if(!iframe.isLoaded){setTimeout(postGetChromeExtensionStatusMessage,100);return}iframe.contentWindow.postMessage({getChromeExtensionStatus:true},"*")}exports.getScreenId=globalThis.getScreenId},{}],84:[function(require,module,exports){var chromeMediaSource="screen";var sourceId;var screenCallback;if(typeof window!=="undefined"&&typeof navigator!=="undefined"&&typeof navigator.userAgent!=="undefined"){var isFirefox=typeof window.InstallTrigger!=="undefined";var isOpera=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0;var isChrome=!!window.chrome&&!isOpera;window.addEventListener("message",(function(event){if(event.origin!=window.location.origin){return}onMessageCallback(event.data)}))}function onMessageCallback(data){if(data=="PermissionDeniedError"){if(screenCallback)return screenCallback("PermissionDeniedError");else throw new Error("PermissionDeniedError")}if(data=="rtcmulticonnection-extension-loaded"){chromeMediaSource="desktop"}if(data.sourceId&&screenCallback){screenCallback(sourceId=data.sourceId,data.canRequestAudioTrack===true)}}function isChromeExtensionAvailable(callback){if(!callback)return;if(chromeMediaSource=="desktop")return callback(true);window.postMessage("are-you-there","*");setTimeout((function(){if(chromeMediaSource=="screen"){callback(false)}else callback(true)}),2e3)}function getSourceId(callback){if(!callback)throw'"callback" parameter is mandatory.';if(sourceId)return callback(sourceId);screenCallback=callback;window.postMessage("get-sourceId","*")}function getCustomSourceId(arr,callback){if(!arr||!arr.forEach)throw'"arr" parameter is mandatory and it must be an array.';if(!callback)throw'"callback" parameter is mandatory.';if(sourceId)return callback(sourceId);screenCallback=callback;window.postMessage({"get-custom-sourceId":arr},"*")}function getSourceIdWithAudio(callback){if(!callback)throw'"callback" parameter is mandatory.';if(sourceId)return callback(sourceId);screenCallback=callback;window.postMessage("audio-plus-tab","*")}function getChromeExtensionStatus(extensionid,callback){if(isFirefox)return callback("not-chrome");if(arguments.length!=2){callback=extensionid;extensionid="lfcgfepafnobdloecchnfaclibenjold"}var image=document.createElement("img");image.src="chrome-extension://"+extensionid+"/icon.png";image.onload=function(){chromeMediaSource="screen";window.postMessage("are-you-there","*");setTimeout((function(){if(chromeMediaSource=="screen"){callback("installed-disabled")}else callback("installed-enabled")}),2e3)};image.onerror=function(){callback("not-installed")}}function getScreenConstraintsWithAudio(callback){getScreenConstraints(callback,true)}function getScreenConstraints(callback,captureSourceIdWithAudio){sourceId="";var firefoxScreenConstraints={mozMediaSource:"window",mediaSource:"window"};if(isFirefox)return callback(null,firefoxScreenConstraints);var screen_constraints={mandatory:{chromeMediaSource:chromeMediaSource,maxWidth:screen.width>1920?screen.width:1920,maxHeight:screen.height>1080?screen.height:1080},optional:[]};if(chromeMediaSource=="desktop"&&!sourceId){if(captureSourceIdWithAudio){getSourceIdWithAudio((function(sourceId,canRequestAudioTrack){screen_constraints.mandatory.chromeMediaSourceId=sourceId;if(canRequestAudioTrack){screen_constraints.canRequestAudioTrack=true}callback(sourceId=="PermissionDeniedError"?sourceId:null,screen_constraints)}))}else{getSourceId((function(sourceId){screen_constraints.mandatory.chromeMediaSourceId=sourceId;callback(sourceId=="PermissionDeniedError"?sourceId:null,screen_constraints)}))}return}if(chromeMediaSource=="desktop"){screen_constraints.mandatory.chromeMediaSourceId=sourceId}callback(null,screen_constraints)}exports.getScreenConstraints=getScreenConstraints;exports.getScreenConstraintsWithAudio=getScreenConstraintsWithAudio;exports.isChromeExtensionAvailable=isChromeExtensionAvailable;exports.getChromeExtensionStatus=getChromeExtensionStatus;exports.getSourceId=getSourceId},{}],85:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.PlatformUtils=void 0;var platform=require("platform");var PlatformUtils=function(){function PlatformUtils(){}PlatformUtils.getInstance=function(){if(!this.instance){this.instance=new PlatformUtils}return PlatformUtils.instance};PlatformUtils.prototype.isChromeBrowser=function(){return platform.name==="Chrome"};PlatformUtils.prototype.isSafariBrowser=function(){return platform.name==="Safari"};PlatformUtils.prototype.isChromeMobileBrowser=function(){return platform.name==="Chrome Mobile"};PlatformUtils.prototype.isFirefoxBrowser=function(){return platform.name==="Firefox"};PlatformUtils.prototype.isFirefoxMobileBrowser=function(){return platform.name==="Firefox Mobile"||platform.name==="Firefox for iOS"};PlatformUtils.prototype.isOperaBrowser=function(){return platform.name==="Opera"};PlatformUtils.prototype.isOperaMobileBrowser=function(){return platform.name==="Opera Mobile"};PlatformUtils.prototype.isEdgeBrowser=function(){var version=(platform===null||platform===void 0?void 0:platform.version)?parseFloat(platform.version):-1;return platform.name==="Microsoft Edge"&&version>=80};PlatformUtils.prototype.isEdgeMobileBrowser=function(){var _a,_b;var version=(platform===null||platform===void 0?void 0:platform.version)?parseFloat(platform.version):-1;return platform.name==="Microsoft Edge"&&(((_a=platform.os)===null||_a===void 0?void 0:_a.family)==="Android"||((_b=platform.os)===null||_b===void 0?void 0:_b.family)==="iOS")&&version>45};PlatformUtils.prototype.isAndroidBrowser=function(){return platform.name==="Android Browser"};PlatformUtils.prototype.isElectron=function(){return platform.name==="Electron"};PlatformUtils.prototype.isNodeJs=function(){return platform.name==="Node.js"};PlatformUtils.prototype.isSamsungBrowser=function(){return platform.name==="Samsung Internet Mobile"||platform.name==="Samsung Internet"};PlatformUtils.prototype.isIPhoneOrIPad=function(){var userAgent=!!platform.ua?platform.ua:navigator.userAgent;var isTouchable="ontouchend"in document;var isIPad=/\b(\w*Macintosh\w*)\b/.test(userAgent)&&isTouchable;var isIPhone=/\b(\w*iPhone\w*)\b/.test(userAgent)&&/\b(\w*Mobile\w*)\b/.test(userAgent)&&isTouchable;return isIPad||isIPhone};PlatformUtils.prototype.isIOSWithSafari=function(){var userAgent=!!platform.ua?platform.ua:navigator.userAgent;return this.isIPhoneOrIPad()&&/\b(\w*Apple\w*)\b/.test(navigator.vendor)&&/\b(\w*Safari\w*)\b/.test(userAgent)&&!/\b(\w*CriOS\w*)\b/.test(userAgent)&&!/\b(\w*FxiOS\w*)\b/.test(userAgent)};PlatformUtils.prototype.isIonicIos=function(){return this.isIPhoneOrIPad()&&platform.ua.indexOf("Safari")===-1};PlatformUtils.prototype.isIonicAndroid=function(){return platform.os.family==="Android"&&platform.name=="Android Browser"};PlatformUtils.prototype.isMobileDevice=function(){return platform.os.family==="iOS"||platform.os.family==="Android"};PlatformUtils.prototype.isReactNative=function(){return false};PlatformUtils.prototype.isChromium=function(){return this.isChromeBrowser()||this.isChromeMobileBrowser()||this.isOperaBrowser()||this.isOperaMobileBrowser()||this.isEdgeBrowser()||this.isEdgeMobileBrowser()||this.isSamsungBrowser()||this.isIonicAndroid()||this.isIonicIos()||this.isElectron()};PlatformUtils.prototype.canScreenShare=function(){var version=(platform===null||platform===void 0?void 0:platform.version)?parseFloat(platform.version):-1;if(this.isMobileDevice()){return false}return this.isChromeBrowser()||this.isFirefoxBrowser()||this.isOperaBrowser()||this.isElectron()||this.isEdgeBrowser()||this.isSafariBrowser()&&version>=13};PlatformUtils.prototype.getName=function(){return platform.name||""};PlatformUtils.prototype.getVersion=function(){return platform.version||""};PlatformUtils.prototype.getFamily=function(){return platform.os.family||""};PlatformUtils.prototype.getDescription=function(){return platform.description||""};return PlatformUtils}();exports.PlatformUtils=PlatformUtils},{platform:12}],86:[function(require,module,exports){"use strict";var __extends=this&&this.__extends||function(){var extendStatics=function(d,b){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b}||function(d,b){for(var p in b)if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p]};return extendStatics(d,b)};return function(d,b){if(typeof b!=="function"&&b!==null)throw new TypeError("Class extends value "+String(b)+" is not a constructor or null");extendStatics(d,b);function __(){this.constructor=d}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __)}}();var __assign=this&&this.__assign||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p]}return t};return __assign.apply(this,arguments)};var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};Object.defineProperty(exports,"__esModule",{value:true});exports.WebRtcPeerSendrecv=exports.WebRtcPeerSendonly=exports.WebRtcPeerRecvonly=exports.WebRtcPeer=void 0;var freeice=require("freeice");var uuid_1=require("uuid");var ExceptionEvent_1=require("../Events/ExceptionEvent");var OpenViduLogger_1=require("../Logger/OpenViduLogger");var Platform_1=require("../Utils/Platform");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var WebRtcPeer=function(){function WebRtcPeer(configuration){var _this=this;this.remoteCandidatesQueue=[];this.localCandidatesQueue=[];this.iceCandidateList=[];platform=Platform_1.PlatformUtils.getInstance();this.configuration=__assign(__assign({},configuration),{iceServers:!!configuration.iceServers&&configuration.iceServers.length>0?configuration.iceServers:freeice(),mediaStream:configuration.mediaStream!==undefined?configuration.mediaStream:null,mode:!!configuration.mode?configuration.mode:"sendrecv",id:!!configuration.id?configuration.id:this.generateUniqueId()});logger.debug("[WebRtcPeer] configuration:\n".concat(JSON.stringify(this.configuration,null,2)));this.pc=new RTCPeerConnection({iceServers:this.configuration.iceServers});this.pc.addEventListener("icecandidate",(function(event){if(event.candidate!==null){var candidateInit=event.candidate;var iceCandidate=new RTCIceCandidate(candidateInit);_this.configuration.onIceCandidate(iceCandidate);if(iceCandidate.candidate!==""){_this.localCandidatesQueue.push(iceCandidate)}}}));this.pc.addEventListener("signalingstatechange",(function(){return __awaiter(_this,void 0,void 0,(function(){var candidate,error_1;return __generator(this,(function(_a){switch(_a.label){case 0:if(!(this.pc.signalingState==="stable"))return[3,6];_a.label=1;case 1:if(!(this.iceCandidateList.length>0))return[3,6];candidate=this.iceCandidateList.shift();_a.label=2;case 2:_a.trys.push([2,4,,5]);return[4,this.pc.addIceCandidate(candidate)];case 3:_a.sent();return[3,5];case 4:error_1=_a.sent();logger.error("Error when calling RTCPeerConnection#addIceCandidate for RTCPeerConnection "+this.getId(),error_1);return[3,5];case 5:return[3,1];case 6:return[2]}}))}))}))}WebRtcPeer.prototype.getId=function(){return this.configuration.id};WebRtcPeer.prototype.dispose=function(){logger.debug("Disposing WebRtcPeer");if(this.pc){if(this.pc.signalingState==="closed"){return}this.pc.close();this.remoteCandidatesQueue=[];this.localCandidatesQueue=[]}};WebRtcPeer.prototype.createOfferLegacy=function(){if(!!this.configuration.mediaStream){this.deprecatedPeerConnectionTrackApi()}var hasAudio=this.configuration.mediaConstraints.audio;var hasVideo=this.configuration.mediaConstraints.video;var options={offerToReceiveAudio:this.configuration.mode!=="sendonly"&&hasAudio,offerToReceiveVideo:this.configuration.mode!=="sendonly"&&hasVideo};logger.debug("[createOfferLegacy] RTCPeerConnection.createOffer() options:",JSON.stringify(options));return this.pc.createOffer(options)};WebRtcPeer.prototype.createOffer=function(){var _a,_b,_c,_d,_e,_f,_g,_h;return __awaiter(this,void 0,void 0,(function(){var _i,_j,track,tcInit,trackSettings,trackConsts,trackWidth,trackHeight,trackPixels,maxLayers,l,layerDiv,encoding,tc,sendParams,needSetParams,error_2,message,_k,_l,kind,sdpOffer,error_3,message;return __generator(this,(function(_m){switch(_m.label){case 0:if(!("addTransceiver"in this.pc)){logger.warn("[createOffer] Method RTCPeerConnection.addTransceiver() is NOT available; using LEGACY offerToReceive{Audio,Video}");return[2,this.createOfferLegacy()]}else{logger.debug("[createOffer] Method RTCPeerConnection.addTransceiver() is available; using it")}if(!(this.configuration.mode!=="recvonly"))return[3,7];if(!this.configuration.mediaStream){throw new Error("[WebRtcPeer.createOffer] Direction is '".concat(this.configuration.mode,"', but no stream was configured to be sent"))}_i=0,_j=this.configuration.mediaStream.getTracks();_m.label=1;case 1:if(!(_i<_j.length))return[3,6];track=_j[_i];tcInit={direction:this.configuration.mode,streams:[this.configuration.mediaStream]};if(track.kind==="video"&&this.configuration.simulcast){trackSettings=track.getSettings();trackConsts=track.getConstraints();trackWidth=(_c=(_b=(_a=trackSettings.width)!==null&&_a!==void 0?_a:trackConsts.width.ideal)!==null&&_b!==void 0?_b:trackConsts.width)!==null&&_c!==void 0?_c:0;trackHeight=(_f=(_e=(_d=trackSettings.height)!==null&&_d!==void 0?_d:trackConsts.height.ideal)!==null&&_e!==void 0?_e:trackConsts.height)!==null&&_f!==void 0?_f:0;logger.info("[createOffer] Video track dimensions: ".concat(trackWidth,"x").concat(trackHeight));trackPixels=trackWidth*trackHeight;maxLayers=0;if(trackPixels>=960*540){maxLayers=3}else if(trackPixels>=480*270){maxLayers=2}else{maxLayers=1}tcInit.sendEncodings=[];for(l=0;l<maxLayers;l++){layerDiv=Math.pow(2,maxLayers-l-1);encoding={rid:"rdiv"+layerDiv.toString(),scalabilityMode:"L1T1"};if(["detail","text"].includes(track.contentHint)){encoding.scaleResolutionDownBy=1;encoding.maxFramerate=Math.floor(30/layerDiv)}else{encoding.scaleResolutionDownBy=layerDiv}tcInit.sendEncodings.push(encoding)}}tc=this.pc.addTransceiver(track,tcInit);if(!(track.kind==="video"))return[3,5];sendParams=tc.sender.getParameters();needSetParams=false;if(!((_g=sendParams.degradationPreference)===null||_g===void 0?void 0:_g.length)){if(["detail","text"].includes(track.contentHint)){sendParams.degradationPreference="maintain-resolution"}else{sendParams.degradationPreference="balanced"}logger.info("[createOffer] Video sender Degradation Preference set: ".concat(sendParams.degradationPreference));needSetParams=true}if(this.configuration.simulcast){if(((_h=sendParams.encodings)===null||_h===void 0?void 0:_h.length)!==tcInit.sendEncodings.length){sendParams.encodings=tcInit.sendEncodings;needSetParams=true}}if(!needSetParams)return[3,5];logger.debug("[createOffer] Setting new RTCRtpSendParameters to video sender");_m.label=2;case 2:_m.trys.push([2,4,,5]);return[4,tc.sender.setParameters(sendParams)];case 3:_m.sent();return[3,5];case 4:error_2=_m.sent();message="[WebRtcPeer.createOffer] Cannot set RTCRtpSendParameters to video sender";if(error_2 instanceof Error){message+=": ".concat(error_2.message)}throw new Error(message);case 5:_i++;return[3,1];case 6:return[3,8];case 7:for(_k=0,_l=["audio","video"];_k<_l.length;_k++){kind=_l[_k];if(!this.configuration.mediaConstraints[kind]){continue}this.configuration.mediaStream=new MediaStream;this.pc.addTransceiver(kind,{direction:this.configuration.mode,streams:[this.configuration.mediaStream]})}_m.label=8;case 8:_m.trys.push([8,10,,11]);return[4,this.pc.createOffer()];case 9:sdpOffer=_m.sent();return[3,11];case 10:error_3=_m.sent();message="[WebRtcPeer.createOffer] Browser failed creating an SDP Offer";if(error_3 instanceof Error){message+=": ".concat(error_3.message)}throw new Error(message);case 11:return[2,sdpOffer]}}))}))};WebRtcPeer.prototype.deprecatedPeerConnectionTrackApi=function(){for(var _i=0,_a=this.configuration.mediaStream.getTracks();_i<_a.length;_i++){var track=_a[_i];this.pc.addTrack(track,this.configuration.mediaStream)}};WebRtcPeer.prototype.createAnswer=function(){var _this=this;return new Promise((function(resolve,reject){if("getTransceivers"in _this.pc){logger.debug("[createAnswer] Method RTCPeerConnection.getTransceivers() is available; using it");var _loop_1=function(kind){if(!_this.configuration.mediaConstraints[kind]){return"continue"}var tc=_this.pc.getTransceivers().find((function(tc){return tc.receiver.track.kind===kind}));if(tc){tc.direction=_this.configuration.mode}else{return{value:reject(new Error("".concat(kind," requested, but no transceiver was created from remote description")))}}};for(var _i=0,_a=["audio","video"];_i<_a.length;_i++){var kind=_a[_i];var state_1=_loop_1(kind);if(typeof state_1==="object")return state_1.value}_this.pc.createAnswer().then((function(sdpAnswer){return resolve(sdpAnswer)})).catch((function(error){return reject(error)}))}else{var offerAudio=void 0,offerVideo=true;if(!!_this.configuration.mediaConstraints){offerAudio=typeof _this.configuration.mediaConstraints.audio==="boolean"?_this.configuration.mediaConstraints.audio:true;offerVideo=typeof _this.configuration.mediaConstraints.video==="boolean"?_this.configuration.mediaConstraints.video:true;var constraints={offerToReceiveAudio:offerAudio,offerToReceiveVideo:offerVideo};_this.pc.createAnswer(constraints).then((function(sdpAnswer){return resolve(sdpAnswer)})).catch((function(error){return reject(error)}))}}}))};WebRtcPeer.prototype.processLocalOffer=function(offer){var _this=this;return new Promise((function(resolve,reject){_this.pc.setLocalDescription(offer).then((function(){var localDescription=_this.pc.localDescription;if(!!localDescription){logger.debug("Local description set",localDescription.sdp);return resolve()}else{return reject("Local description is not defined")}})).catch((function(error){return reject(error)}))}))};WebRtcPeer.prototype.processRemoteOffer=function(sdpOffer){var _this=this;return new Promise((function(resolve,reject){var offer={type:"offer",sdp:sdpOffer};logger.debug("SDP offer received, setting remote description",offer);if(_this.pc.signalingState==="closed"){return reject("RTCPeerConnection is closed when trying to set remote description")}_this.setRemoteDescription(offer).then((function(){return resolve()})).catch((function(error){return reject(error)}))}))};WebRtcPeer.prototype.processLocalAnswer=function(answer){var _this=this;return new Promise((function(resolve,reject){logger.debug("SDP answer created, setting local description");if(_this.pc.signalingState==="closed"){return reject("RTCPeerConnection is closed when trying to set local description")}_this.pc.setLocalDescription(answer).then((function(){return resolve()})).catch((function(error){return reject(error)}))}))};WebRtcPeer.prototype.processRemoteAnswer=function(sdpAnswer){var _this=this;return new Promise((function(resolve,reject){var answer={type:"answer",sdp:sdpAnswer};logger.debug("SDP answer received, setting remote description");if(_this.pc.signalingState==="closed"){return reject("RTCPeerConnection is closed when trying to set remote description")}_this.setRemoteDescription(answer).then((function(){resolve()})).catch((function(error){return reject(error)}))}))};WebRtcPeer.prototype.setRemoteDescription=function(sdp){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(_a){return[2,this.pc.setRemoteDescription(sdp)]}))}))};WebRtcPeer.prototype.addIceCandidate=function(iceCandidate){var _this=this;return new Promise((function(resolve,reject){logger.debug("Remote ICE candidate received",iceCandidate);_this.remoteCandidatesQueue.push(iceCandidate);switch(_this.pc.signalingState){case"closed":reject(new Error("PeerConnection object is closed"));break;case"stable":if(!!_this.pc.remoteDescription){_this.pc.addIceCandidate(iceCandidate).then((function(){return resolve()})).catch((function(error){return reject(error)}))}else{_this.iceCandidateList.push(iceCandidate);resolve()}break;default:_this.iceCandidateList.push(iceCandidate);resolve()}}))};WebRtcPeer.prototype.addIceConnectionStateChangeListener=function(otherId){var _this=this;this.pc.addEventListener("iceconnectionstatechange",(function(){var iceConnectionState=_this.pc.iceConnectionState;switch(iceConnectionState){case"disconnected":var msg1="IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') change to "disconnected". Possible network disconnection';logger.warn(msg1);_this.configuration.onIceConnectionStateException(ExceptionEvent_1.ExceptionEventName.ICE_CONNECTION_DISCONNECTED,msg1);break;case"failed":var msg2="IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') to "failed"';logger.error(msg2);_this.configuration.onIceConnectionStateException(ExceptionEvent_1.ExceptionEventName.ICE_CONNECTION_FAILED,msg2);break;case"closed":logger.log("IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') change to "closed"');break;case"new":logger.log("IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') change to "new"');break;case"checking":logger.log("IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') change to "checking"');break;case"connected":logger.log("IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') change to "connected"');break;case"completed":logger.log("IceConnectionState of RTCPeerConnection "+_this.configuration.id+" ("+otherId+') change to "completed"');break}}))};WebRtcPeer.prototype.generateUniqueId=function(){return(0,uuid_1.v4)()};return WebRtcPeer}();exports.WebRtcPeer=WebRtcPeer;var WebRtcPeerRecvonly=function(_super){__extends(WebRtcPeerRecvonly,_super);function WebRtcPeerRecvonly(configuration){configuration.mode="recvonly";return _super.call(this,configuration)||this}return WebRtcPeerRecvonly}(WebRtcPeer);exports.WebRtcPeerRecvonly=WebRtcPeerRecvonly;var WebRtcPeerSendonly=function(_super){__extends(WebRtcPeerSendonly,_super);function WebRtcPeerSendonly(configuration){configuration.mode="sendonly";return _super.call(this,configuration)||this}return WebRtcPeerSendonly}(WebRtcPeer);exports.WebRtcPeerSendonly=WebRtcPeerSendonly;var WebRtcPeerSendrecv=function(_super){__extends(WebRtcPeerSendrecv,_super);function WebRtcPeerSendrecv(configuration){configuration.mode="sendrecv";return _super.call(this,configuration)||this}return WebRtcPeerSendrecv}(WebRtcPeer);exports.WebRtcPeerSendrecv=WebRtcPeerSendrecv},{"../Events/ExceptionEvent":59,"../Logger/OpenViduLogger":81,"../Utils/Platform":85,freeice:2,uuid:22}],87:[function(require,module,exports){"use strict";var __awaiter=this&&this.__awaiter||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P((function(resolve){resolve(value)}))}return new(P||(P=Promise))((function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator["throw"](value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())}))};var __generator=this&&this.__generator||function(thisArg,body){var _={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},f,y,t,g;return g={next:verb(0),throw:verb(1),return:verb(2)},typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}};Object.defineProperty(exports,"__esModule",{value:true});exports.WebRtcStats=void 0;var OpenViduLogger_1=require("../Logger/OpenViduLogger");var Platform_1=require("../Utils/Platform");var logger=OpenViduLogger_1.OpenViduLogger.getInstance();var platform;var WebRtcStats=function(){function WebRtcStats(stream){this.stream=stream;this.STATS_ITEM_NAME="webrtc-stats-config";this.webRtcStatsEnabled=false;this.statsInterval=1;platform=Platform_1.PlatformUtils.getInstance()}WebRtcStats.prototype.isEnabled=function(){return this.webRtcStatsEnabled};WebRtcStats.prototype.initWebRtcStats=function(){var _this=this;var webrtcObj=localStorage.getItem(this.STATS_ITEM_NAME);if(!!webrtcObj){this.webRtcStatsEnabled=true;var webrtcStatsConfig=JSON.parse(webrtcObj);logger.warn("WebRtc stats enabled for stream "+this.stream.streamId+" of connection "+this.stream.connection.connectionId);logger.warn("localStorage item: "+JSON.stringify(webrtcStatsConfig));this.POST_URL=webrtcStatsConfig.httpEndpoint;this.statsInterval=webrtcStatsConfig.interval;this.webRtcStatsIntervalId=setInterval((function(){return __awaiter(_this,void 0,void 0,(function(){return __generator(this,(function(_a){switch(_a.label){case 0:return[4,this.sendStatsToHttpEndpoint()];case 1:_a.sent();return[2]}}))}))}),this.statsInterval*1e3)}else{logger.debug("WebRtc stats not enabled")}};WebRtcStats.prototype.getSelectedIceCandidateInfo=function(){var _this=this;return new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var statsReport,transportStat,candidatePairs,localCandidates,remoteCandidates,selectedCandidatePair,selectedCandidatePairId,length_1,iterator,i,candidatePair,localCandidateId,remoteCandidateId,finalLocalCandidate,candList,cand,_i,cand_1,c,finalRemoteCandidate,candList,cand,_a,cand_2,c;return __generator(this,(function(_b){switch(_b.label){case 0:return[4,this.stream.getRTCPeerConnection().getStats()];case 1:statsReport=_b.sent();candidatePairs=new Map;localCandidates=new Map;remoteCandidates=new Map;statsReport.forEach((function(stat){if(stat.type==="transport"&&(platform.isChromium()||platform.isSafariBrowser()||platform.isReactNative())){transportStat=stat}switch(stat.type){case"candidate-pair":candidatePairs.set(stat.id,stat);break;case"local-candidate":localCandidates.set(stat.id,stat);break;case"remote-candidate":remoteCandidates.set(stat.id,stat);break}}));if(transportStat!=null){selectedCandidatePairId=transportStat.selectedCandidatePairId;selectedCandidatePair=candidatePairs.get(selectedCandidatePairId)}else{length_1=candidatePairs.size;iterator=candidatePairs.values();for(i=0;i<length_1;i++){candidatePair=iterator.next().value;if(candidatePair["selected"]){selectedCandidatePair=candidatePair;break}}}localCandidateId=selectedCandidatePair.localCandidateId;remoteCandidateId=selectedCandidatePair.remoteCandidateId;finalLocalCandidate=localCandidates.get(localCandidateId);if(!!finalLocalCandidate){candList=this.stream.getLocalIceCandidateList();cand=candList.filter((function(c){return!!c.candidate&&(c.candidate.indexOf(finalLocalCandidate.ip)>=0||c.candidate.indexOf(finalLocalCandidate.address)>=0)&&c.candidate.indexOf(finalLocalCandidate.port)>=0}));finalLocalCandidate.raw=[];for(_i=0,cand_1=cand;_i<cand_1.length;_i++){c=cand_1[_i];finalLocalCandidate.raw.push(c.candidate)}}else{finalLocalCandidate="ERROR: No active local ICE candidate. Probably ICE-TCP is being used"}finalRemoteCandidate=remoteCandidates.get(remoteCandidateId);if(!!finalRemoteCandidate){candList=this.stream.getRemoteIceCandidateList();cand=candList.filter((function(c){return!!c.candidate&&(c.candidate.indexOf(finalRemoteCandidate.ip)>=0||c.candidate.indexOf(finalRemoteCandidate.address)>=0)&&c.candidate.indexOf(finalRemoteCandidate.port)>=0}));finalRemoteCandidate.raw=[];for(_a=0,cand_2=cand;_a<cand_2.length;_a++){c=cand_2[_a];finalRemoteCandidate.raw.push(c.candidate)}}else{finalRemoteCandidate="ERROR: No active remote ICE candidate. Probably ICE-TCP is being used"}return[2,resolve({localCandidate:finalLocalCandidate,remoteCandidate:finalRemoteCandidate})]}}))}))}))};WebRtcStats.prototype.stopWebRtcStats=function(){if(this.webRtcStatsEnabled){clearInterval(this.webRtcStatsIntervalId);logger.warn("WebRtc stats stopped for disposed stream "+this.stream.streamId+" of connection "+this.stream.connection.connectionId)}};WebRtcStats.prototype.sendStats=function(url,response){return __awaiter(this,void 0,void 0,(function(){var configuration,error_1;return __generator(this,(function(_a){switch(_a.label){case 0:_a.trys.push([0,2,,3]);configuration={headers:{"Content-type":"application/json"},body:JSON.stringify(response),method:"POST"};return[4,fetch(url,configuration)];case 1:_a.sent();return[3,3];case 2:error_1=_a.sent();logger.error("sendStats error: ".concat(JSON.stringify(error_1)));return[3,3];case 3:return[2]}}))}))};WebRtcStats.prototype.sendStatsToHttpEndpoint=function(){return __awaiter(this,void 0,void 0,(function(){var webrtcStats,response,error_2;return __generator(this,(function(_a){switch(_a.label){case 0:_a.trys.push([0,3,,4]);return[4,this.getCommonStats()];case 1:webrtcStats=_a.sent();response=this.generateJSONStatsResponse(webrtcStats);return[4,this.sendStats(this.POST_URL,response)];case 2:_a.sent();return[3,4];case 3:error_2=_a.sent();logger.log(error_2);return[3,4];case 4:return[2]}}))}))};WebRtcStats.prototype.getCommonStats=function(){return __awaiter(this,void 0,void 0,(function(){var _this=this;return __generator(this,(function(_a){return[2,new Promise((function(resolve,reject){return __awaiter(_this,void 0,void 0,(function(){var statsReport,response_1,videoTrackStats_1,candidatePairStats_1,error_3;var _this=this;return __generator(this,(function(_a){switch(_a.label){case 0:_a.trys.push([0,2,,3]);return[4,this.stream.getRTCPeerConnection().getStats()];case 1:statsReport=_a.sent();response_1=this.getWebRtcStatsResponseOutline();videoTrackStats_1=["framesReceived","framesDropped","framesSent","frameHeight","frameWidth"];candidatePairStats_1=["availableOutgoingBitrate","currentRoundTripTime"];statsReport.forEach((function(stat){var mediaType=stat.mediaType!=null?stat.mediaType:stat.kind;var addStat=function(direction,key){if(stat[key]!=null&&response_1[direction]!=null){if(!mediaType&&videoTrackStats_1.indexOf(key)>-1){mediaType="video"}if(direction!=null&&mediaType!=null&&key!=null&&response_1[direction][mediaType]!=null){response_1[direction][mediaType][key]=Number(stat[key])}else if(direction!=null&&key!=null&&candidatePairStats_1.includes(key)){response_1[direction][key]=Number(stat[key])}}};switch(stat.type){case"outbound-rtp":addStat("outbound","bytesSent");addStat("outbound","packetsSent");addStat("outbound","framesEncoded");addStat("outbound","nackCount");addStat("outbound","firCount");addStat("outbound","pliCount");addStat("outbound","qpSum");break;case"inbound-rtp":addStat("inbound","bytesReceived");addStat("inbound","packetsReceived");addStat("inbound","packetsLost");addStat("inbound","jitter");addStat("inbound","framesDecoded");addStat("inbound","nackCount");addStat("inbound","firCount");addStat("inbound","pliCount");break;case"track":addStat("inbound","jitterBufferDelay");addStat("inbound","framesReceived");addStat("outbound","framesDropped");addStat("outbound","framesSent");addStat(_this.stream.isLocal()?"outbound":"inbound","frameHeight");addStat(_this.stream.isLocal()?"outbound":"inbound","frameWidth");break;case"candidate-pair":addStat("candidatepair","currentRoundTripTime");addStat("candidatepair","availableOutgoingBitrate");break}}));if(!(response_1===null||response_1===void 0?void 0:response_1.candidatepair)||Object.keys(response_1.candidatepair).length===0){delete response_1.candidatepair}return[2,resolve(response_1)];case 2:error_3=_a.sent();logger.error("Error getting common stats: ",error_3);return[2,reject(error_3)];case 3:return[2]}}))}))}))]}))}))};WebRtcStats.prototype.generateJSONStatsResponse=function(stats){return{"@timestamp":(new Date).toISOString(),participant_id:this.stream.connection.data,session_id:this.stream.session.sessionId,platform:platform.getName(),platform_description:platform.getDescription(),stream:"webRTC",webrtc_stats:stats}};WebRtcStats.prototype.getWebRtcStatsResponseOutline=function(){if(this.stream.isLocal()){return{outbound:{audio:{},video:{}},candidatepair:{}}}else{return{inbound:{audio:{},video:{}}}}};return WebRtcStats}();exports.WebRtcStats=WebRtcStats},{"../Logger/OpenViduLogger":81,"../Utils/Platform":85}]},{},[41]); |