UNPKG

twilio-video

Version:

Twilio Video JavaScript Library

39 lines (31 loc) 654 kB
/*! twilio-video.js 2.30.0 The following license applies to all parts of this software except as documented below. Copyright (C) 2019-2025 Twilio, inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Twilio nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ (function(root){var bundle=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 CancelablePromise=require("./util/cancelablepromise");function createCancelableRoomPromise(getLocalTracks,createLocalParticipant,createRoomSignaling,createRoom){var cancelableRoomSignalingPromise;var cancellationError=new Error("Canceled");return new CancelablePromise(function onCreate(resolve,reject,isCanceled){var localParticipant;getLocalTracks(function getLocalTracksSucceeded(localTracks){if(isCanceled()){return CancelablePromise.reject(cancellationError)}localParticipant=createLocalParticipant(localTracks);return createRoomSignaling(localParticipant).then(function createRoomSignalingSucceeded(getCancelableRoomSignalingPromise){if(isCanceled()){throw cancellationError}cancelableRoomSignalingPromise=getCancelableRoomSignalingPromise();return cancelableRoomSignalingPromise})}).then(function roomSignalingConnected(roomSignaling){if(isCanceled()){roomSignaling.disconnect();throw cancellationError}resolve(createRoom(localParticipant,roomSignaling))}).catch(function onError(error){reject(error)})},function onCancel(){if(cancelableRoomSignalingPromise){cancelableRoomSignalingPromise.cancel()}})}module.exports=createCancelableRoomPromise},{"./util/cancelablepromise":125}],2:[function(require,module,exports){"use strict";var MediaStreamTrack=require("./webrtc").MediaStreamTrack;var _a=require("./webrtc/util"),guessBrowser=_a.guessBrowser,guessBrowserVersion=_a.guessBrowserVersion,isCodecSupported=_a.isCodecSupported;var createCancelableRoomPromise=require("./cancelableroompromise");var EncodingParametersImpl=require("./encodingparameters");var LocalParticipant=require("./localparticipant");var InsightsPublisher=require("./util/insightspublisher");var NullInsightsPublisher=require("./util/insightspublisher/null");var _b=require("./media/track/es5"),LocalAudioTrack=_b.LocalAudioTrack,LocalDataTrack=_b.LocalDataTrack,LocalVideoTrack=_b.LocalVideoTrack;var NetworkQualityConfigurationImpl=require("./networkqualityconfiguration");var Room=require("./room");var SignalingV2=require("./signaling/v2");var _c=require("./util"),asLocalTrack=_c.asLocalTrack,buildLogLevels=_c.buildLogLevels,filterObject=_c.filterObject,isNonArrayObject=_c.isNonArrayObject;var _d=require("./util/constants"),DEFAULT_ENVIRONMENT=_d.DEFAULT_ENVIRONMENT,DEFAULT_LOG_LEVEL=_d.DEFAULT_LOG_LEVEL,DEFAULT_LOGGER_NAME=_d.DEFAULT_LOGGER_NAME,DEFAULT_REALM=_d.DEFAULT_REALM,DEFAULT_REGION=_d.DEFAULT_REGION,WS_SERVER=_d.WS_SERVER,SDK_NAME=_d.SDK_NAME,SDK_VERSION=_d.SDK_VERSION,E=_d.typeErrors;var CancelablePromise=require("./util/cancelablepromise");var EventObserver=require("./util/eventobserver");var DefaultLog=require("./util/log");var validateBandwidthProfile=require("./util/validate").validateBandwidthProfile;var safariVersion=guessBrowser()==="safari"&&guessBrowserVersion();var connectCalls=0;var didPrintSafariWarning=false;var isSafariWithoutVP8Support=false;if(safariVersion){var safariMajorVersion=safariVersion.major,safariMinorVersion=safariVersion.minor;isSafariWithoutVP8Support=safariMajorVersion<12||safariMajorVersion===12&&safariMinorVersion<1}var deprecatedConnectOptionsProps=new Set([{didWarn:false,shouldDelete:true,name:"abortOnIceServersTimeout"},{didWarn:false,shouldDelete:true,name:"dscpTagging",newName:"enableDscp"},{didWarn:false,shouldDelete:true,name:"iceServersTimeout"},{didWarn:false,shouldDelete:false,name:"eventListener",newName:"Video.Logger"},{didWarn:false,shouldDelete:false,name:"logLevel",newName:"Video.Logger"}]);var deprecatedBandwidthProfileOptions=new Set([{didWarn:false,shouldDelete:false,name:"maxTracks",newName:"bandwidthProfile.video.clientTrackSwitchOffControl"},{didWarn:false,shouldDelete:false,name:"renderDimensions",newName:"bandwidthProfile.video.contentPreferencesMode"}]);function connect(token,options){if(typeof options==="undefined"){options={}}if(!isNonArrayObject(options)){return CancelablePromise.reject(E.INVALID_TYPE("options","object"))}var Log=options.Log||DefaultLog;var loggerName=options.loggerName||DEFAULT_LOGGER_NAME;var logLevel=options.logLevel||DEFAULT_LOG_LEVEL;var logLevels=buildLogLevels(logLevel);var logComponentName="[connect #"+ ++connectCalls+"]";var log;try{log=new Log("default",logComponentName,logLevels,loggerName)}catch(error){return CancelablePromise.reject(error)}deprecateOptions(options,log,deprecatedConnectOptionsProps);var adaptiveSimulcast=options.preferredVideoCodecs==="auto";if(adaptiveSimulcast){options.preferredVideoCodecs=[{codec:"VP8",simulcast:true,adaptiveSimulcast:true}]}if(options.maxVideoBitrate&&adaptiveSimulcast){log.error('ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"');return CancelablePromise.reject(E.ILLEGAL_INVOKE("connect",'ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'))}options=Object.assign({automaticSubscription:true,dominantSpeaker:false,enableDscp:false,environment:DEFAULT_ENVIRONMENT,eventListener:null,insights:true,LocalAudioTrack:LocalAudioTrack,LocalDataTrack:LocalDataTrack,LocalParticipant:LocalParticipant,LocalVideoTrack:LocalVideoTrack,Log:Log,MediaStreamTrack:MediaStreamTrack,loggerName:loggerName,logLevel:logLevel,maxAudioBitrate:null,maxVideoBitrate:null,name:null,networkMonitor:true,networkQuality:false,preferredAudioCodecs:[],preferredVideoCodecs:[],realm:DEFAULT_REALM,region:DEFAULT_REGION,signaling:SignalingV2},filterObject(options));var eventPublisherOptions={};if(typeof options.wsServerInsights==="string"){eventPublisherOptions.gateway=options.wsServerInsights}var EventPublisher=options.insights?InsightsPublisher:NullInsightsPublisher;var eventPublisher=new EventPublisher(token,SDK_NAME,SDK_VERSION,options.environment,options.realm,eventPublisherOptions);var wsServer=WS_SERVER(options.environment,options.region);var eventObserver=new EventObserver(eventPublisher,Date.now(),log,options.eventListener);options=Object.assign({eventObserver:eventObserver,wsServer:wsServer},options);options.log=log;if(isSafariWithoutVP8Support&&!didPrintSafariWarning&&(log.logLevel!=="error"&&log.logLevel!=="off")){didPrintSafariWarning=true;log.warn(["Support for Safari 12.0 and below is limited because it does not support VP8.","This means you may experience codec issues in Group Rooms. You may also","experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or","iOS-based Participants who do not support H.264. However, P2P Rooms","with browser-based Participants should work. For more information, please","refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11"].join(" "))}if(typeof token!=="string"){return CancelablePromise.reject(E.INVALID_TYPE("token","string"))}var localTrackOptions=Object.assign({},options);delete localTrackOptions.name;if("tracks"in options){if(!Array.isArray(options.tracks)){return CancelablePromise.reject(E.INVALID_TYPE("options.tracks","Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack"))}try{options.tracks=options.tracks.map(function(track){return asLocalTrack(track,localTrackOptions)})}catch(error){return CancelablePromise.reject(error)}}var error=validateBandwidthProfile(options.bandwidthProfile);if(error){return CancelablePromise.reject(error)}options.clientTrackSwitchOffControl="disabled";options.contentPreferencesMode="disabled";if(options.bandwidthProfile){options.clientTrackSwitchOffControl="auto";options.contentPreferencesMode="auto";if(options.bandwidthProfile.video){deprecateOptions(options.bandwidthProfile.video,log,deprecatedBandwidthProfileOptions);if("maxTracks"in options.bandwidthProfile.video){options.clientTrackSwitchOffControl="disabled"}else if(options.bandwidthProfile.video.clientTrackSwitchOffControl==="manual"){options.clientTrackSwitchOffControl="manual"}else{options.clientTrackSwitchOffControl="auto"}if("renderDimensions"in options.bandwidthProfile.video){options.contentPreferencesMode="disabled"}else if(options.bandwidthProfile.video.contentPreferencesMode==="manual"){options.contentPreferencesMode="manual"}else{options.contentPreferencesMode="auto"}}}var Signaling=options.signaling;var signaling=new Signaling(options.wsServer,options);log.info("Connecting to a Room");log.debug("Options:",options);var encodingParameters=new EncodingParametersImpl({maxAudioBitrate:options.maxAudioBitrate,maxVideoBitrate:options.maxVideoBitrate},adaptiveSimulcast);var preferredCodecs={audio:options.preferredAudioCodecs.map(normalizeCodecSettings),video:options.preferredVideoCodecs.map(normalizeCodecSettings)};var networkQualityConfiguration=new NetworkQualityConfigurationImpl(isNonArrayObject(options.networkQuality)?options.networkQuality:{});["audio","video"].forEach(function(kind){return preferredCodecs[kind].forEach(function(_a){var codec=_a.codec;return isCodecSupported(codec,kind).then(function(isSupported){return!isSupported&&log.warn("The preferred "+kind+' codec "'+codec+'" will be ignored as it is not supported by the browser.')})})});var cancelableRoomPromise=createCancelableRoomPromise(getLocalTracks.bind(null,options),createLocalParticipant.bind(null,signaling,log,encodingParameters,networkQualityConfiguration,options),createRoomSignaling.bind(null,token,options,signaling,encodingParameters,preferredCodecs),createRoom.bind(null,options));cancelableRoomPromise.then(function(room){eventPublisher.connect(room.sid,room.localParticipant.sid);log.info("Connected to Room:",room.toString());log.info("Room name:",room.name);log.debug("Room:",room);room.once("disconnected",function(){return eventPublisher.disconnect()});return room},function(error){eventPublisher.disconnect();if(cancelableRoomPromise._isCanceled){log.info("Attempt to connect to a Room was canceled")}else{log.info("Error while connecting to a Room:",error)}});return cancelableRoomPromise}var AudioCodec={isac:"isac",opus:"opus",PCMA:"PCMA",PCMU:"PCMU"};var VideoEncodingMode={Auto:"auto"};var VideoCodec={H264:"H264",VP8:"VP8"};VideoCodec.VP9="VP9";var LogLevel={debug:"debug",info:"info",warn:"warn",error:"error",off:"off"};var NetworkQualityVerbosity={none:0,minimal:1,moderate:2,detailed:3};var TrackSwitchOffMode={detected:"detected",predicted:"predicted",disabled:"disabled"};var BandwidthProfileMode={grid:"grid",collaboration:"collaboration",presentation:"presentation"};var VideoContentPreferencesMode={auto:"auto",manual:"manual"};var ClientTrackSwitchOffControl={auto:"auto",manual:"manual"};var EventListenerLevel={debug:"debug",error:"error",info:"info",warning:"warning"};var EventListenerGroup={signaling:"signaling"};function deprecateOptions(options,log,deprecationTable){deprecationTable.forEach(function(prop){var didWarn=prop.didWarn,name=prop.name,newName=prop.newName,shouldDelete=prop.shouldDelete;if(name in options&&typeof options[name]!=="undefined"){if(newName&&shouldDelete){options[newName]=options[name]}if(shouldDelete){delete options[name]}if(!didWarn&&!["error","off"].includes(log.level)){log.warn('The ConnectOptions "'+name+'" is '+(newName?'deprecated and scheduled for removal. Please use "'+newName+'" instead.':"no longer applicable and will be ignored."));prop.didWarn=true}}})}function createLocalParticipant(signaling,log,encodingParameters,networkQualityConfiguration,options,localTracks){var localParticipantSignaling=signaling.createLocalParticipantSignaling(encodingParameters,networkQualityConfiguration);log.debug("Creating a new LocalParticipant:",localParticipantSignaling);return new options.LocalParticipant(localParticipantSignaling,localTracks,options)}function createRoom(options,localParticipant,roomSignaling){var room=new Room(localParticipant,roomSignaling,options);var log=options.log;log.debug("Creating a new Room:",room);roomSignaling.on("stateChanged",function stateChanged(state){if(state==="disconnected"){log.info("Disconnected from Room:",room.toString());roomSignaling.removeListener("stateChanged",stateChanged)}});return room}function createRoomSignaling(token,options,signaling,encodingParameters,preferredCodecs,localParticipant){options.log.debug("Creating a new RoomSignaling");return signaling.connect(localParticipant._signaling,token,encodingParameters,preferredCodecs,options)}function getLocalTracks(options,handleLocalTracks){var log=options.log;options.shouldStopLocalTracks=!options.tracks;if(options.shouldStopLocalTracks){log.info("LocalTracks were not provided, so they will be acquired "+"automatically before connecting to the Room. LocalTracks will "+"be released if connecting to the Room fails or if the Room "+"is disconnected")}else{log.info("Getting LocalTracks");log.debug("Options:",options)}return options.createLocalTracks(options).then(function getLocalTracksSucceeded(localTracks){var promise=handleLocalTracks(localTracks);promise.catch(function handleLocalTracksFailed(){if(options.shouldStopLocalTracks){log.info("The automatically acquired LocalTracks will now be stopped");localTracks.forEach(function(track){track.stop()})}});return promise})}function normalizeCodecSettings(nameOrSettings){var settings=typeof nameOrSettings==="string"?{codec:nameOrSettings}:nameOrSettings;switch(settings.codec.toLowerCase()){case"opus":{return Object.assign({dtx:true},settings)}case"vp8":{return Object.assign({simulcast:false},settings)}default:{return settings}}}module.exports=connect},{"./cancelableroompromise":1,"./encodingparameters":9,"./localparticipant":13,"./media/track/es5":16,"./networkqualityconfiguration":45,"./room":58,"./signaling/v2":72,"./util":133,"./util/cancelablepromise":125,"./util/constants":126,"./util/eventobserver":131,"./util/insightspublisher":134,"./util/insightspublisher/null":135,"./util/log":137,"./util/validate":151,"./webrtc":159,"./webrtc/util":171}],3:[function(require,module,exports){"use strict";var _a=require("./util/constants"),DEFAULT_LOG_LEVEL=_a.DEFAULT_LOG_LEVEL,DEFAULT_LOGGER_NAME=_a.DEFAULT_LOGGER_NAME;function createLocalTrack(kind,options){options=Object.assign({loggerName:DEFAULT_LOGGER_NAME,logLevel:DEFAULT_LOG_LEVEL},options);var createOptions={};createOptions.loggerName=options.loggerName;createOptions.logLevel=options.logLevel;delete options.loggerName;delete options.logLevel;var customMediaHandling=["getUserMedia","enumerateDevices","MediaStream","mapMediaElement","disposeMediaElement"];customMediaHandling.forEach(function(override){if(override in options){createOptions[override]=options[override];delete options[override]}});var createLocalTracks=options.createLocalTracks;delete options.createLocalTracks;createOptions[kind]=Object.keys(options).length>0?options:true;return createLocalTracks(createOptions).then(function(localTracks){return localTracks[0]})}function createLocalAudioTrack(options){return createLocalTrack("audio",options)}function createLocalVideoTrack(options){return createLocalTrack("video",options)}var NoiseCancellationVendor={krisp:"krisp"};module.exports={audio:createLocalAudioTrack,video:createLocalVideoTrack}},{"./util/constants":126}],4:[function(require,module,exports){"use strict";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(_)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}}};var __read=this&&this.__read||function(o,n){var m=typeof Symbol==="function"&&o[Symbol.iterator];if(!m)return o;var i=m.call(o),r,ar=[],e;try{while((n===void 0||n-- >0)&&!(r=i.next()).done)ar.push(r.value)}catch(error){e={error:error}}finally{try{if(r&&!r.done&&(m=i["return"]))m.call(i)}finally{if(e)throw e.error}}return ar};var __spreadArray=this&&this.__spreadArray||function(to,from){for(var i=0,il=from.length,j=to.length;i<il;i++,j++)to[j]=from[i];return to};Object.defineProperty(exports,"__esModule",{value:true});exports.createLocalTracks=void 0;var noisecancellationimpl_1=require("./media/track/noisecancellationimpl");var buildLogLevels=require("./util").buildLogLevels;var _a=require("./webrtc"),getUserMedia=_a.getUserMedia,MediaStreamTrack=_a.MediaStreamTrack;var _b=require("./media/track/es5"),LocalAudioTrack=_b.LocalAudioTrack,LocalDataTrack=_b.LocalDataTrack,LocalVideoTrack=_b.LocalVideoTrack;var Log=require("./util/log");var _c=require("./util/constants"),DEFAULT_LOG_LEVEL=_c.DEFAULT_LOG_LEVEL,DEFAULT_LOGGER_NAME=_c.DEFAULT_LOGGER_NAME,INVALID_VALUE=_c.typeErrors.INVALID_VALUE;var workaround180748=require("./webaudio/workaround180748");var createLocalTrackCalls=0;function createLocalTracks(options){return __awaiter(this,void 0,void 0,function(){var isAudioVideoAbsent,fullOptions,logComponentName,logLevels,log,localTrackOptions,extraLocalTrackOptions,noiseCancellationOptions,mediaStreamConstraints,workaroundWebKitBug180748,mediaStream,mediaStreamTracks,error_1;var _this=this;return __generator(this,function(_a){switch(_a.label){case 0:isAudioVideoAbsent=!(options&&("audio"in options||"video"in options));fullOptions=__assign({audio:isAudioVideoAbsent,getUserMedia:getUserMedia,loggerName:DEFAULT_LOGGER_NAME,logLevel:DEFAULT_LOG_LEVEL,LocalAudioTrack:LocalAudioTrack,LocalDataTrack:LocalDataTrack,LocalVideoTrack:LocalVideoTrack,MediaStreamTrack:MediaStreamTrack,Log:Log,video:isAudioVideoAbsent},options);logComponentName="[createLocalTracks #"+ ++createLocalTrackCalls+"]";logLevels=buildLogLevels(fullOptions.logLevel);log=new fullOptions.Log("default",logComponentName,logLevels,fullOptions.loggerName);localTrackOptions=Object.assign({log:log},fullOptions);delete localTrackOptions.name;if(fullOptions.audio===false&&fullOptions.video===false){log.info("Neither audio nor video requested, so returning empty LocalTracks");return[2,[]]}if(fullOptions.tracks){log.info("Adding user-provided LocalTracks");log.debug("LocalTracks:",fullOptions.tracks);return[2,fullOptions.tracks]}extraLocalTrackOptions={audio:typeof fullOptions.audio==="object"&&fullOptions.audio.name?{name:fullOptions.audio.name}:{defaultDeviceCaptureMode:"auto"},video:typeof fullOptions.video==="object"&&fullOptions.video.name?{name:fullOptions.video.name}:{}};extraLocalTrackOptions.audio.isCreatedByCreateLocalTracks=true;extraLocalTrackOptions.video.isCreatedByCreateLocalTracks=true;if(typeof fullOptions.audio==="object"){if(typeof fullOptions.audio.workaroundWebKitBug1208516==="boolean"){extraLocalTrackOptions.audio.workaroundWebKitBug1208516=fullOptions.audio.workaroundWebKitBug1208516}if("noiseCancellationOptions"in fullOptions.audio){noiseCancellationOptions=fullOptions.audio.noiseCancellationOptions;delete fullOptions.audio.noiseCancellationOptions}if(!("defaultDeviceCaptureMode"in fullOptions.audio)){extraLocalTrackOptions.audio.defaultDeviceCaptureMode="auto"}else if(["auto","manual"].every(function(mode){return mode!==fullOptions.audio.defaultDeviceCaptureMode})){throw INVALID_VALUE("CreateLocalAudioTrackOptions.defaultDeviceCaptureMode",["auto","manual"])}else{extraLocalTrackOptions.audio.defaultDeviceCaptureMode=fullOptions.audio.defaultDeviceCaptureMode}}if(typeof fullOptions.video==="object"&&typeof fullOptions.video.workaroundWebKitBug1208516==="boolean"){extraLocalTrackOptions.video.workaroundWebKitBug1208516=fullOptions.video.workaroundWebKitBug1208516}if(typeof fullOptions.audio==="object"){delete fullOptions.audio.name}if(typeof fullOptions.video==="object"){delete fullOptions.video.name}mediaStreamConstraints={audio:fullOptions.audio,video:fullOptions.video};workaroundWebKitBug180748=typeof fullOptions.audio==="object"&&fullOptions.audio.workaroundWebKitBug180748;_a.label=1;case 1:_a.trys.push([1,4,,5]);return[4,workaroundWebKitBug180748?workaround180748(log,fullOptions.getUserMedia,mediaStreamConstraints):fullOptions.getUserMedia(mediaStreamConstraints)];case 2:mediaStream=_a.sent();mediaStreamTracks=__spreadArray(__spreadArray([],__read(mediaStream.getAudioTracks())),__read(mediaStream.getVideoTracks()));log.info("Call to getUserMedia successful; got tracks:",mediaStreamTracks);return[4,Promise.all(mediaStreamTracks.map(function(mediaStreamTrack){return __awaiter(_this,void 0,void 0,function(){var _a,cleanTrack,noiseCancellation;return __generator(this,function(_b){switch(_b.label){case 0:if(!(mediaStreamTrack.kind==="audio"&&noiseCancellationOptions))return[3,2];return[4,noisecancellationimpl_1.applyNoiseCancellation(mediaStreamTrack,noiseCancellationOptions,log)];case 1:_a=_b.sent(),cleanTrack=_a.cleanTrack,noiseCancellation=_a.noiseCancellation;return[2,new localTrackOptions.LocalAudioTrack(cleanTrack,__assign(__assign(__assign({},extraLocalTrackOptions.audio),localTrackOptions),{noiseCancellation:noiseCancellation}))];case 2:if(mediaStreamTrack.kind==="audio"){return[2,new localTrackOptions.LocalAudioTrack(mediaStreamTrack,__assign(__assign({},extraLocalTrackOptions.audio),localTrackOptions))]}_b.label=3;case 3:return[2,new localTrackOptions.LocalVideoTrack(mediaStreamTrack,__assign(__assign({},extraLocalTrackOptions.video),localTrackOptions))]}})})}))];case 3:return[2,_a.sent()];case 4:error_1=_a.sent();log.warn("Call to getUserMedia failed:",error_1);throw error_1;case 5:return[2]}})})}exports.createLocalTracks=createLocalTracks},{"./media/track/es5":16,"./media/track/noisecancellationimpl":30,"./util":133,"./util/constants":126,"./util/log":137,"./webaudio/workaround180748":156,"./webrtc":159}],5:[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 DataTrackTransceiver=require("./transceiver");var DataTransport=require("./transport");var DataTrackReceiver=function(_super){__extends(DataTrackReceiver,_super);function DataTrackReceiver(dataChannel){var _this=_super.call(this,dataChannel.label,dataChannel.maxPacketLifeTime,dataChannel.maxRetransmits,dataChannel.ordered)||this;Object.defineProperties(_this,{_dataChannel:{value:dataChannel}});dataChannel.binaryType="arraybuffer";dataChannel.addEventListener("message",function(event){_this.emit("message",event.data)});dataChannel.addEventListener("close",function(){_this.emit("close")});return _this}DataTrackReceiver.prototype.stop=function(){this._dataChannel.close();_super.prototype.stop.call(this)};DataTrackReceiver.prototype.toDataTransport=function(){return new DataTransport(this._dataChannel)};return DataTrackReceiver}(DataTrackTransceiver);module.exports=DataTrackReceiver},{"./transceiver":7,"./transport":8}],6:[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 DataTrackTransceiver=require("./transceiver");var makeUUID=require("../util").makeUUID;var DataTrackSender=function(_super){__extends(DataTrackSender,_super);function DataTrackSender(maxPacketLifeTime,maxRetransmtis,ordered){var _this=_super.call(this,makeUUID(),maxPacketLifeTime,maxRetransmtis,ordered)||this;Object.defineProperties(_this,{_clones:{value:new Set},_dataChannels:{value:new Set}});return _this}DataTrackSender.prototype._addClone=function(clone){this._clones.add(clone)};DataTrackSender.prototype.removeClone=function(clone){this._clones.delete(clone)};DataTrackSender.prototype.addDataChannel=function(dataChannel){this._dataChannels.add(dataChannel);return this};DataTrackSender.prototype.clone=function(){var _this=this;var clone=new DataTrackSender(this.maxPacketLifeTime,this.maxRetransmits,this.ordered);this._addClone(clone);clone.once("stopped",function(){return _this.removeClone(clone)});return clone};DataTrackSender.prototype.removeDataChannel=function(dataChannel){this._dataChannels.delete(dataChannel);return this};DataTrackSender.prototype.send=function(data){this._dataChannels.forEach(function(dataChannel){try{dataChannel.send(data)}catch(error){}});this._clones.forEach(function(clone){try{clone.send(data)}catch(error){}});return this};DataTrackSender.prototype.stop=function(){this._dataChannels.forEach(function(dataChannel){return dataChannel.close()});this._clones.forEach(function(clone){return clone.stop()});_super.prototype.stop.call(this)};return DataTrackSender}(DataTrackTransceiver);module.exports=DataTrackSender},{"../util":133,"./transceiver":7}],7:[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 TrackTransceiver=require("../transceiver");var DataTrackTransceiver=function(_super){__extends(DataTrackTransceiver,_super);function DataTrackTransceiver(id,maxPacketLifeTime,maxRetransmits,ordered){var _this=_super.call(this,id,"data")||this;Object.defineProperties(_this,{maxPacketLifeTime:{enumerable:true,value:maxPacketLifeTime},maxRetransmits:{enumerable:true,value:maxRetransmits},ordered:{enumerable:true,value:ordered}});return _this}return DataTrackTransceiver}(TrackTransceiver);module.exports=DataTrackTransceiver},{"../transceiver":120}],8:[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 EventEmitter=require("events").EventEmitter;var DataTransport=function(_super){__extends(DataTransport,_super);function DataTransport(dataChannel){var _this=_super.call(this)||this;Object.defineProperties(_this,{_dataChannel:{value:dataChannel},_messageQueue:{value:[]}});dataChannel.addEventListener("open",function(){_this._messageQueue.splice(0).forEach(function(message){return _this._publish(message)})});dataChannel.addEventListener("message",function(_a){var data=_a.data;try{var message=JSON.parse(data);_this.emit("message",message)}catch(error){}});_this.publish({type:"ready"});return _this}DataTransport.prototype._publish=function(message){var data=JSON.stringify(message);try{this._dataChannel.send(data)}catch(error){}};DataTransport.prototype.publish=function(message){var dataChannel=this._dataChannel;if(dataChannel.readyState==="closing"||dataChannel.readyState==="closed"){return false}if(dataChannel.readyState==="connecting"){this._messageQueue.push(message);return true}this._publish(message);return true};return DataTransport}(EventEmitter);module.exports=DataTransport},{events:174}],9:[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 EventEmitter=require("events").EventEmitter;var EncodingParametersImpl=function(_super){__extends(EncodingParametersImpl,_super);function EncodingParametersImpl(encodingParameters,adaptiveSimulcast){var _this=_super.call(this)||this;encodingParameters=Object.assign({maxAudioBitrate:null,maxVideoBitrate:null},encodingParameters);Object.defineProperties(_this,{maxAudioBitrate:{value:encodingParameters.maxAudioBitrate,writable:true},maxVideoBitrate:{value:encodingParameters.maxVideoBitrate,writable:true},adaptiveSimulcast:{value:adaptiveSimulcast}});return _this}EncodingParametersImpl.prototype.toJSON=function(){return{maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate}};EncodingParametersImpl.prototype.update=function(encodingParameters){var _this=this;encodingParameters=Object.assign({maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate},encodingParameters);var shouldEmitChanged=["maxAudioBitrate","maxVideoBitrate"].reduce(function(shouldEmitChanged,maxKindBitrate){if(_this[maxKindBitrate]!==encodingParameters[maxKindBitrate]){_this[maxKindBitrate]=encodingParameters[maxKindBitrate];shouldEmitChanged=true}return shouldEmitChanged},false);if(shouldEmitChanged){this.emit("changed")}} ;return EncodingParametersImpl}(EventEmitter);module.exports=EncodingParametersImpl},{events:174}],10:[function(require,module,exports){"use strict";var EventEmitter=require("events").EventEmitter;var hidePrivateAndCertainPublicPropertiesInClass=require("./util").hidePrivateAndCertainPublicPropertiesInClass;module.exports=hidePrivateAndCertainPublicPropertiesInClass(EventEmitter,["domain"])},{"./util":133,events:174}],11:[function(require,module,exports){"use strict";var __read=this&&this.__read||function(o,n){var m=typeof Symbol==="function"&&o[Symbol.iterator];if(!m)return o;var i=m.call(o),r,ar=[],e;try{while((n===void 0||n-- >0)&&!(r=i.next()).done)ar.push(r.value)}catch(error){e={error:error}}finally{try{if(r&&!r.done&&(m=i["return"]))m.call(i)}finally{if(e)throw e.error}}return ar};var __spreadArray=this&&this.__spreadArray||function(to,from){for(var i=0,il=from.length,j=to.length;i<il;i++,j++)to[j]=from[i];return to};var EventEmitter=require("events").EventEmitter;var EventTarget=function(){function EventTarget(){Object.defineProperties(this,{_eventEmitter:{value:new EventEmitter}})}EventTarget.prototype.dispatchEvent=function(event){return this._eventEmitter.emit(event.type,event)};EventTarget.prototype.addEventListener=function(){var _a;return(_a=this._eventEmitter).addListener.apply(_a,__spreadArray([],__read(arguments)))};EventTarget.prototype.removeEventListener=function(){var _a;return(_a=this._eventEmitter).removeListener.apply(_a,__spreadArray([],__read(arguments)))};return EventTarget}();module.exports=EventTarget},{events:174}],12:[function(require,module,exports){"use strict";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)};Object.defineProperty(exports,"__esModule",{value:true});var createlocaltracks_1=require("./createlocaltracks");var preflighttest_1=require("./preflight/preflighttest");var internals={connect:require("./connect"),createLocalAudioTrack:require("./createlocaltrack").audio,createLocalVideoTrack:require("./createlocaltrack").video,isSupported:require("./util/support")(),version:require("../package.json").version,Logger:require("./vendor/loglevel"),LocalAudioTrack:require("./media/track/es5").LocalAudioTrack,LocalDataTrack:require("./media/track/es5").LocalDataTrack,LocalVideoTrack:require("./media/track/es5").LocalVideoTrack};function connect(token,options){var internalOptions=__assign({createLocalTracks:createlocaltracks_1.createLocalTracks},options);return internals.connect(token,internalOptions)}function createLocalAudioTrack(options){var internalOptions=__assign({createLocalTracks:createlocaltracks_1.createLocalTracks},options);return internals.createLocalAudioTrack(internalOptions)}function createLocalVideoTrack(options){var internalOptions=__assign({createLocalTracks:createlocaltracks_1.createLocalTracks},options);return internals.createLocalVideoTrack(internalOptions)}var isSupported=internals.isSupported;var version=internals.version;var Logger=internals.Logger;var LocalAudioTrack=internals.LocalAudioTrack;var LocalVideoTrack=internals.LocalVideoTrack;var LocalDataTrack=internals.LocalDataTrack;module.exports={connect:connect,createLocalAudioTrack:createLocalAudioTrack,createLocalVideoTrack:createLocalVideoTrack,createLocalTracks:createlocaltracks_1.createLocalTracks,runPreflight:preflighttest_1.runPreflight,isSupported:isSupported,version:version,Logger:Logger,LocalAudioTrack:LocalAudioTrack,LocalVideoTrack:LocalVideoTrack,LocalDataTrack:LocalDataTrack}},{"../package.json":175,"./connect":2,"./createlocaltrack":3,"./createlocaltracks":4,"./media/track/es5":16,"./preflight/preflighttest":52,"./util/support":146,"./vendor/loglevel":153}],13:[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 MediaStreamTrack=require("./webrtc").MediaStreamTrack;var _a=require("./util"),asLocalTrack=_a.asLocalTrack,asLocalTrackPublication=_a.asLocalTrackPublication,trackClass=_a.trackClass;var _b=require("./util/constants"),E=_b.typeErrors,trackPriority=_b.trackPriority;var validateLocalTrack=require("./util/validate").validateLocalTrack;var _c=require("./media/track/es5"),LocalAudioTrack=_c.LocalAudioTrack,LocalDataTrack=_c.LocalDataTrack,LocalVideoTrack=_c.LocalVideoTrack;var LocalAudioTrackPublication=require("./media/track/localaudiotrackpublication");var LocalDataTrackPublication=require("./media/track/localdatatrackpublication");var LocalVideoTrackPublication=require("./media/track/localvideotrackpublication");var Participant=require("./participant");var LocalParticipant=function(_super){__extends(LocalParticipant,_super);function LocalParticipant(signaling,localTracks,options){var _this=this;options=Object.assign({LocalAudioTrack:LocalAudioTrack,LocalVideoTrack:LocalVideoTrack,LocalDataTrack:LocalDataTrack,MediaStreamTrack:MediaStreamTrack,LocalAudioTrackPublication:LocalAudioTrackPublication,LocalVideoTrackPublication:LocalVideoTrackPublication,LocalDataTrackPublication:LocalDataTrackPublication,shouldStopLocalTracks:false,tracks:localTracks},options);var tracksToStop=options.shouldStopLocalTracks?new Set(localTracks.filter(function(localTrack){return localTrack.kind!=="data"})):new Set;_this=_super.call(this,signaling,options)||this;Object.defineProperties(_this,{_eventObserver:{value:options.eventObserver},_LocalAudioTrack:{value:options.LocalAudioTrack},_LocalDataTrack:{value:options.LocalDataTrack},_LocalVideoTrack:{value:options.LocalVideoTrack},_MediaStreamTrack:{value:options.MediaStreamTrack},_LocalAudioTrackPublication:{value:options.LocalAudioTrackPublication},_LocalDataTrackPublication:{value:options.LocalDataTrackPublication},_LocalVideoTrackPublication:{value:options.LocalVideoTrackPublication},_tracksToStop:{value:tracksToStop},signalingRegion:{enumerable:true,get:function(){return signaling.signalingRegion}}});_this._handleTrackSignalingEvents();return _this}LocalParticipant.prototype._addTrack=function(track,id,priority){var addedTrack=_super.prototype._addTrack.call(this,track,id);if(addedTrack&&this.state!=="disconnected"){this._addLocalTrack(track,priority)}return addedTrack};LocalParticipant.prototype._addLocalTrack=function(track,priority){var _a;var vendor=(_a=track.noiseCancellation)===null||_a===void 0?void 0:_a.vendor;this._signaling.addTrack(track._trackSender,track.name,priority,vendor);this._log.info("Added a new "+trackClass(track,true)+":",track.id);this._log.debug(trackClass(track,true)+":",track)};LocalParticipant.prototype._removeTrack=function(track,id){var removedTrack=_super.prototype._removeTrack.call(this,track,id);if(removedTrack&&this.state!=="disconnected"){this._signaling.removeTrack(track._trackSender);this._log.info("Removed a "+trackClass(track,true)+":",track.id);this._log.debug(trackClass(track,true)+":",track)}return removedTrack};LocalParticipant.prototype._getTrackEvents=function(){return _super.prototype._getTrackEvents.call(this).concat([["disabled","trackDisabled"],["enabled","trackEnabled"],["stopped","trackStopped"]])};LocalParticipant.prototype.toString=function(){return"[LocalParticipant #"+this._instanceId+(this.sid?": "+this.sid:"")+"]"};LocalParticipant.prototype._handleTrackSignalingEvents=function(){var _this=this;var log=this._log;if(this.state==="disconnected"){return}var localTrackDisabled=function(localTrack){var trackSignaling=_this._signaling.getPublication(localTrack._trackSender);if(trackSignaling){trackSignaling.disable();log.debug("Disabled the "+trackClass(localTrack,true)+":",localTrack.id)}};var localTrackEnabled=function(localTrack){var trackSignaling=_this._signaling.getPublication(localTrack._trackSender);if(trackSignaling){trackSignaling.enable();log.debug("Enabled the "+trackClass(localTrack,true)+":",localTrack.id)}};var localTrackStopped=function(localTrack){var trackSignaling=_this._signaling.getPublication(localTrack._trackSender);if(trackSignaling){trackSignaling.stop()}return trackSignaling};var stateChanged=function(state){log.debug("Transitioned to state:",state);if(state==="disconnected"){log.debug("Removing LocalTrack event listeners");_this._signaling.removeListener("stateChanged",stateChanged);_this.removeListener("trackDisabled",localTrackDisabled);_this.removeListener("trackEnabled",localTrackEnabled);_this.removeListener("trackStopped",localTrackStopped);_this._tracks.forEach(function(track){var trackSignaling=localTrackStopped(track);if(trackSignaling){track._trackSender.removeClone(trackSignaling._trackTransceiver)}});log.info("LocalParticipant disconnected. Stopping "+_this._tracksToStop.size+" automatically-acquired LocalTracks");_this._tracksToStop.forEach(function(track){track.stop()})}else if(state==="connected"){log.info("reconnected");setTimeout(function(){return _this.emit("reconnected")},0)}};this.on("trackDisabled",localTrackDisabled);this.on("trackEnabled",localTrackEnabled);this.on("trackStopped",localTrackStopped);this._signaling.on("stateChanged",stateChanged);this._tracks.forEach(function(track){_this._addLocalTrack(track,trackPriority.PRIORITY_STANDARD);_this._getOrCreateLocalTrackPublication(track).catch(function(error){log.warn("Failed to get or create LocalTrackPublication for "+track+":",error)})})};LocalParticipant.prototype._getOrCreateLocalTrackPublication=function(localTrack){var localTrackPublication=getTrackPublication(this.tracks,localTrack);if(localTrackPublication){return Promise.resolve(localTrackPublication)}var log=this._log;var self=this;var trackSignaling=this._signaling.getPublication(localTrack._trackSender);if(!trackSignaling){return Promise.reject(new Error("Unexpected error: The "+localTrack+" cannot be published"))}return new Promise(function(resolve,reject){function updated(){var error=trackSignaling.error;if(error){trackSignaling.removeListener("updated",updated);log.warn("Failed to publish the "+trackClass(localTrack,true)+": "+error.message);self._removeTrack(localTrack,localTrack.id);setTimeout(function(){self.emit("trackPublicationFailed",error,localTrack)});reject(error);return}if(!self._tracks.has(localTrack.id)){trackSignaling.removeListener("updated",updated);reject(new Error("The "+localTrack+" was unpublished"));return}var sid=trackSignaling.sid;if(!sid){return}trackSignaling.removeListener("updated",updated);var options={log:log,LocalAudioTrackPublication:self._LocalAudioTrackPublication,LocalDataTrackPublication:self._LocalDataTrackPublication,LocalVideoTrackPublication:self._LocalVideoTrackPublication};localTrackPublication=getTrackPublication(self.tracks,localTrack);var warningHandler=function(twilioWarningName){return self.emit("trackWarning",twilioWarningName,localTrackPublication)};var warningsClearedHandler=function(){return self.emit("trackWarningsCleared",localTrackPublication)};var unpublish=function(publication){localTrackPublication.removeListener("trackWarning",warningHandler);localTrackPublication.removeListener("trackWarningsCleared",warningsClearedHandler);self.unpublishTrack(publication.track)};if(!localTrackPublication){localTrackPublication=asLocalTrackPublication(localTrack,trackSignaling,unpublish,options);self._addTrackPublication(localTrackPublication)}localTrackPublication.on("warning",warningHandler);localTrackPublication.on("warningsCleared",warningsClearedHandler);var state=self._signaling.state;if(state==="connected"||state==="connecting"){if(localTrack._processorEventObserver){localTrack._processorEventObserver.on("event",function(event){self._eventObserver.emit("event",{name:event.name,payload:event.data,group:"video-processor",level:"info"})})}if(localTrack.processedTrack){localTrack._captureFrames();localTrack._setSenderMediaStreamTrack(true)}}if(state==="connected"){setTimeout(function(){self.emit("trackPublished",localTrackPublication)})}resolve(localTrackPublication)}trackSignaling.on("updated",updated)})};LocalParticipant.prototype.publishTrack=function(localTrackOrMediaStreamTrack,options){var trackPublication=getTrackPublication(this.tracks,localTrackOrMediaStreamTrack);if(trackPublication){return Promise.resolve(trackPublication)}options=Object.assign({log:this._log,priority:trackPriority.PRIORITY_STANDARD,LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack},options);var localTrack;try{localTrack=asLocalTrack(localTrackOrMediaStreamTrack,options)}catch(error){return Promise.reject(error)}var noiseCancellation=localTrack.noiseCancellation;var allowedAudioProcessors=this._signaling.audioProcessors;if(noiseCancellation&&!allowedAudioProcessors.includes(noiseCancellation.vendor)){this._log.warn(noiseCancellation.vendor+" is not supported in this room. disabling it permanently");noiseCancellation.disablePermanently()}var priorityValues=Object.values(trackPriority);if(!priorityValues.includes(options.priority)){return Promise.reject(E.INVALID_VALUE("LocalTrackPublishOptions.priority",priorityValues))}var addedLocalTrack=this._addTrack(localTrack,localTrack.id,options.priority)||this._tracks.get(localTrack.id);return this._getOrCreateLocalTrackPublication(addedLocalTrack)};LocalParticipant.prototype.publishTracks=function(tracks){if(!Array.isArray(tracks)){throw E.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")}return Promise.all(tracks.map(this.publishTrack,this))};LocalParticipant.prototype.setBandwidthProfile=function(){this._log.warn("setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js")};LocalParticipant.prototype.setNetworkQualityConfiguration=function(networkQualityConfiguration){if(typeof networkQualityConfiguration!=="object"||networkQualityConfiguration===null){throw E.INVALID_TYPE("networkQualityConfiguration","NetworkQualityConfiguration")}["local","remote"].forEach(function(prop){if(prop in networkQualityConfiguration&&(typeof networkQualityConfiguration[prop]!=="number"||isNaN(networkQualityConfiguration[prop]))){throw E.INVALID_TYPE("networkQualityConfiguration."+prop,"number")}});this._signaling.setNetworkQualityConfiguration(networkQualityConfiguration);return this};LocalParticipant.prototype.setParameters=function(encodingParameters){if(typeof encodingParameters!=="undefined"&&typeof encodingParameters!=="object"){throw E.INVALID_TYPE("encodingParameters","EncodingParameters, null or undefined")}if(encodingParameters){if(this._signaling.getParameters().adaptiveSimulcast&&encodingParameters.maxVideoBitrate){throw E.INVALID_TYPE("encodingParameters",'encodingParameters.maxVideoBitrate is not compatible with "preferredVideoCodecs=auto"')}["maxAudioBitrate","maxVideoBitrate"].forEach(function(prop){if(typeof encodingParameters[prop]!=="undefined"&&typeof encodingParameters[prop]!=="number"&&encodingParameters[prop]!==null){throw E.INVALID_TYPE("encodingParameters."+prop,"number, null or undefined")}})}else if(encodingParameters===null){encodingParameters={maxAudioBitrate:null,maxVideoBitrate:null}}this._signaling.setParameters(encodingParameters);return this};LocalParticipant.prototype.unpublishTrack=function(track){validateLocalTrack(track,{LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack});var localTrack=this._tracks.get(track.id);if(!localTrack){return null}var trackSignaling=this._signaling.getPublication(localTrack._trackSender);trackSignaling.publishFailed(new Error("The "+localTrack+" was unpublished"));localTrack=this._removeTrack(localTrack,localTrack.id);if(!localTrack){return null}var lo