@techsee/techsee-media-service 999.20.0-nodejs20 → 999.20.2-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -27
- package/lib/LocalStreamManager.d.ts +0 -1
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +84 -82
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +3 -21
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +13 -32
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +1 -7
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +4 -1
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +0 -1
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +10 -7
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +0 -1
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +199 -170
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +0 -1
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js +74 -62
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +23 -19
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +0 -1
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +80 -51
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +0 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +151 -109
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.d.ts +0 -1
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
- package/lib/MediaSession/TurnConstants.js +16 -1
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +0 -1
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +43 -37
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +0 -3
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +34 -76
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +65 -70
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.d.ts +0 -1
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +5 -2
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MultiParty/Contracts.d.ts +10 -0
- package/lib/MultiParty/Contracts.d.ts.map +1 -0
- package/lib/MultiParty/Contracts.js +6 -0
- package/lib/MultiParty/Contracts.js.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +54 -98
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
- package/lib/MultiParty/MultiParty.d.ts +19 -0
- package/lib/MultiParty/MultiParty.d.ts.map +1 -0
- package/lib/MultiParty/MultiParty.js +160 -0
- package/lib/MultiParty/MultiParty.js.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts +25 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.js +184 -0
- package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +0 -1
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +12 -9
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/oldCode/constants.js +20 -0
- package/lib/oldCode/constants.js.map +1 -0
- package/lib/oldCode/event-emitter.js +39 -0
- package/lib/oldCode/event-emitter.js.map +1 -0
- package/lib/oldCode/index.js +64 -0
- package/lib/oldCode/index.js.map +1 -0
- package/lib/oldCode/opentok/session.js +310 -0
- package/lib/oldCode/opentok/session.js.map +1 -0
- package/lib/oldCode/opentok/stream.js +310 -0
- package/lib/oldCode/opentok/stream.js.map +1 -0
- package/lib/oldCode/publisher.js +143 -0
- package/lib/oldCode/publisher.js.map +1 -0
- package/lib/oldCode/service.js +395 -0
- package/lib/oldCode/service.js.map +1 -0
- package/lib/oldCode/session.js +110 -0
- package/lib/oldCode/session.js.map +1 -0
- package/lib/oldCode/stream.js +195 -0
- package/lib/oldCode/stream.js.map +1 -0
- package/lib/oldCode/subscriber.js +90 -0
- package/lib/oldCode/subscriber.js.map +1 -0
- package/lib/oldCode/tracer.d.ts +36 -0
- package/lib/oldCode/tracer.d.ts.map +1 -0
- package/lib/oldCode/tracer.js +161 -0
- package/lib/oldCode/tracer.js.map +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
- package/lib/oldCode/utils/ImageFixer.js +59 -0
- package/lib/oldCode/utils/ImageFixer.js.map +1 -0
- package/lib/oldCode/webrtc/constants.js +114 -0
- package/lib/oldCode/webrtc/constants.js.map +1 -0
- package/lib/oldCode/webrtc/helper.js +173 -0
- package/lib/oldCode/webrtc/helper.js.map +1 -0
- package/lib/oldCode/webrtc/session-kms.js +558 -0
- package/lib/oldCode/webrtc/session-kms.js.map +1 -0
- package/lib/oldCode/webrtc/session-loopback.js +336 -0
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.js +880 -0
- package/lib/oldCode/webrtc/session-turn.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
- package/lib/oldCode/webrtc/session.js +52 -0
- package/lib/oldCode/webrtc/session.js.map +1 -0
- package/lib/oldCode/webrtc/stream.js +674 -0
- package/lib/oldCode/webrtc/stream.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
- package/lib/qos/raw-qos.js +145 -84
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +2950 -1896
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +61 -66
- package/lib/MediaUtils/index.d.ts +0 -2
- package/lib/MediaUtils/index.d.ts.map +0 -1
- package/lib/MediaUtils/index.js +0 -6
- package/lib/MediaUtils/index.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
- package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
- package/lib/MultiParty/MediaTracer.d.ts +0 -4
- package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
- package/lib/MultiParty/MediaTracer.js +0 -10
- package/lib/MultiParty/MediaTracer.js.map +0 -1
- package/lib/MultiParty/MultiPartyService.d.ts +0 -49
- package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyService.js +0 -30
- package/lib/MultiParty/MultiPartyService.js.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
- package/lib/MultiParty/index.d.ts +0 -7
- package/lib/MultiParty/index.d.ts.map +0 -1
- package/lib/MultiParty/index.js +0 -25
- package/lib/MultiParty/index.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/trace.d.ts +0 -3
- package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
- package/lib/MultiParty/opentok/trace.js +0 -18
- package/lib/MultiParty/opentok/trace.js.map +0 -1
- package/lib/MultiParty/opentok.d.ts +0 -463
- package/lib/MultiParty/types.d.ts +0 -33
- package/lib/MultiParty/types.d.ts.map +0 -1
- package/lib/MultiParty/types.js +0 -3
- package/lib/MultiParty/types.js.map +0 -1
- package/lib/MultiParty/utils.d.ts +0 -10
- package/lib/MultiParty/utils.d.ts.map +0 -1
- package/lib/MultiParty/utils.js +0 -17
- package/lib/MultiParty/utils.js.map +0 -1
- package/lib/qos/raw-qos.d.ts +0 -29
- package/lib/qos/raw-qos.d.ts.map +0 -1
- package/lib/webrtc-ie-shim.d.ts +0 -4
- package/lib/webrtc-ie-shim.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["oldCode/webrtc/webrtc-ie-shim.js"],"names":["f","exports","module","define","amd","g","window","global","self","webrtcIeShim","r","e","n","t","o","i","c","require","u","a","Error","code","p","call","length","endianness","hostname","location","loadavg","uptime","freemem","Number","MAX_VALUE","totalmem","cpus","type","release","navigator","appVersion","networkInterfaces","getNetworkInterfaces","arch","platform","tmpdir","tmpDir","EOL","homedir","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","nextTick","args","Array","arguments","push","Item","array","prototype","apply","title","browser","env","argv","version","versions","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","detect","WebRTCProxy","checkNewNode","node","nodeName","match","VideoRenderer","handle","j","childNodes","item","checkRemovedNode","unhandle","makeInterface","Base","Interface","TypeError","Object","defineProperty","enumerable","configurable","writable","value","create","constructor","__proto__","defineGlobalProperty","MediaDevices","mediaDevices","RTCPeerConnection","RTCSessionDescription","RTCIceCandidate","RTCRtpTransceiver","RTCRtpReceiver","RTCRtpSender","RTCDataChannel","MediaStream","MediaStreamTrack","EventTarget","WebRTCAdapter","bindVideoElement","element","unBindVideoElement","domObserver","MutationObserver","mutations","numMutations","mutation","numNodes","addedNodes","removedNodes","videos","document","getElementsByTagName","_typeof","Symbol","iterator","obj","privateData","WeakMap","wrappers","pd","event","retv","get","console","assert","Event","eventTarget","set","eventPhase","currentTarget","canceled","stopped","passiveListener","timeStamp","Date","now","keys","key","defineRedirectDescriptor","target","composedPath","NONE","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","stopPropagation","data","stopImmediatePropagation","bubbles","Boolean","cancelable","preventDefault","warn","defaultPrevented","composed","setPrototypeOf","defineCallDescriptor","defineWrapper","BaseEvent","proto","CustomEvent","descriptor","getOwnPropertyDescriptor","isFunc","getWrapper","wrapper","getPrototypeOf","wrapEvent","Wrapper","isStopped","setEventPhase","setCurrentTarget","setPassiveListener","listenersMap","CAPTURE","BUBBLE","ATTRIBUTE","isObject","x","getListeners","Map","defineEventAttributeDescriptor","eventName","listenerType","listener","next","prev","delete","newNode","passive","defineEventAttribute","eventTargetPrototype","defineCustomEventTarget","eventNames","CustomEventTarget","isArray","types","addEventListener","options","optionsIsObj","capture","undefined","removeEventListener","dispatchEvent","wrappedEvent","handleEvent","InvalidStateError","xhr","XMLHttpRequest","responseType","enumerateDevices","Promise","resolve","reject","getSupportedConstraints","getUserMedia","constraints","stream","audio","track","createLocalAudioTrack","addTrack","video","createLocalVideoTrack","count","tracks","label","priv","id","getAudioTracks","arr","kind","getVideoTracks","getTracks","getTrackById","hasOwnProperty","enabled","createEvent","initEvent","removeTrack","clone","muted","state","stop","getCapabilities","getConstraints","getSettings","applyConstraints","dataChannel","binaryType","ordered","maxPacketLifeTime","protocol","negotiated","priority","readyState","bufferedAmount","bufferedAmountLowThreshold","SyntaxError","fire","onopen","onbufferedamountlow","onerror","onclose","onmessage","message","Uint8Array","builder","MSBlobBuilder","append","getBlob","buffer","send","Blob","reader","FileReader","onloadend","result","readAsArrayBuffer","ArrayBuffer","close","iceCandidateInit","candidate","sdpMid","sdpMLineIndex","usernameFragment","foundation","component","ip","port","tcpType","relatedAddress","relatedPort","ext","parsed","parseIceCandidate","toJSON","_extends","assign","source","DataChannel","RTCIceTransportPolicy","RTCBundlePolicy","RTCRtcpMuxPolicy","RTCIceCredentialType","check","valid","JSON","stringify","checkRange","min","max","checkNotNull","checkArray","createRTCConfiguration","configuration","sanitized","iceServers","iceTransportPolicy","bundlePolicy","rtcpMuxPolicy","iceCandidatePoolSize","certificates","parse","iceServer","credentialType","urls","senders","remoteStreams","lastOffer","lastAnswer","isClosed","signalingState","iceGatheringState","iceConnectionState","connectionState","canTrickleIceCandidates","toSessionDescription","sdp","toArray","pc","localDescription","currentLocalDescription","pendingLocalDescription","remoteDescription","currentRemoteDescription","pendingRemoteDescription","createPeerConnection","onnegotiationneeded","onicecandidate","url","onicecandidateerror","onsignalingstatechange","oniceconnectionstatechange","onicegatheringstatechange","onconnectionstatechange","onaddstream","getRemoteStreamTracks","slice","mediaStreamTracks","receiver","transceiver","streams","onremovestream","remotes","ondatachannel","channel","getConfiguration","setConfiguration","error","operationError","getDefaultIceServers","createOffer","createAnswer","setLocalDescription","description","setRemoteDescription","addIceCandidate","getSenders","getReceivers","getTransceivers","sender","rtpSender","senderId","addTransceiver","trackOrKind","init","addStream","createDataChannel","dataChannelDict","getParameters","getContributingSources","getSynchronizationSources","getStats","setParameters","replaceTrack","RTPRtcTransceiver","mid","direction","currentDirection","descriptionInitDict","videoObserver","videoRenderer","mutate","CLASSID","srcObject","object","createElement","classid","appendChild","observe","childList","attributes","characterData","subtree","attributeOldValue","characterDataOldValue","needsmetadata","onresize","videoTracks","setTrack","show","videoWidth","videoHeight","hide","disconnect","removeNode","parentElement","parentNode","replaceChild","ActiveXObject","nodeVersion","getNodeVersion","parseUserAgent","userAgent","detectOS","userAgentString","rules","getOperatingSystemRules","detected","filter","os","rule","test","isNode","toLowerCase","browsers","getBrowserRules","map","exec","split","join","buildRules","ruleTuples","tuple"],"mappings":"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","file":"webrtc-ie-shim.js","sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.webrtcIeShim = f()}})(function(){var define,module,exports;return (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){\n exports.endianness = function () { return 'LE' };\n\n exports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n };\n\n exports.loadavg = function () { return [] };\n\n exports.uptime = function () { return 0 };\n\n exports.freemem = function () {\n return Number.MAX_VALUE;\n };\n\n exports.totalmem = function () {\n return Number.MAX_VALUE;\n };\n\n exports.cpus = function () { return [] };\n\n exports.type = function () { return 'Browser' };\n\n exports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n };\n\n exports.networkInterfaces\n = exports.getNetworkInterfaces\n = function () { return {} };\n\n exports.arch = function () { return 'javascript' };\n\n exports.platform = function () { return 'browser' };\n\n exports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n };\n\n exports.EOL = '\\n';\n\n exports.homedir = function () {\n return '/'\n };\n\n },{}],2:[function(require,module,exports){\n// shim for using process in browser\n var process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\n var cachedSetTimeout;\n var cachedClearTimeout;\n\n function defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n }\n function defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n }\n (function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n } ())\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n }\n function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n }\n var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n }\n\n function drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n };\n\n// v8 likes predictible objects\n function Item(fun, array) {\n this.fun = fun;\n this.array = array;\n }\n Item.prototype.run = function () {\n this.fun.apply(null, this.array);\n };\n process.title = 'browser';\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = ''; // empty string to avoid regexp issues\n process.versions = {};\n\n function noop() {}\n\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n\n process.listeners = function (name) { return [] }\n\n process.binding = function (name) {\n throw new Error('process.binding is not supported');\n };\n\n process.cwd = function () { return '/' };\n process.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n };\n process.umask = function() { return 0; };\n\n },{}],3:[function(require,module,exports){\n 'use strict';\n\n var browser = require('detect-browser').detect();\n\n var WebRTCProxy = require('./lib/WebRTCProxy.js');\n\n//If it is not internet exploer, do nothign\n if (browser.name === 'ie' && WebRTCProxy) {\n\n //Helper functions to check video nodes\n var checkNewNode = function checkNewNode(node) {\n //If it is a video element\n if (node.nodeName.match(/video/i))\n // Observe changes in the video element\n return VideoRenderer.handle(node);\n //Look in childs\n for (var j = 0; j < node.childNodes.length; j++) {\n checkNewNode(node.childNodes.item(j));\n }\n };\n\n var checkRemovedNode = function checkRemovedNode(node) {\n //If it is a video element\n if (node.nodeName.match(/video/i)) return VideoRenderer.unhandle(node);\n //Look in childs\n for (var j = 0; j < node.childNodes.length; j++) {\n checkRemovedNode(node.childNodes.item(j));\n }\n };\n\n var makeInterface = function makeInterface(Base) {\n //Interface with no constructor\n var Interface = function Interface() {\n throw new TypeError();\n };\n //Set name\n Object.defineProperty(Interface, 'name', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: Base.name\n });\n //Create constructor and reset protocol chain\n Interface.prototype = Object.create(Base.prototype, {\n constructor: {\n value: Interface,\n configurable: true,\n writable: false\n }\n });\n //Fix protocol chain\n Interface.__proto__ = Base.__proto__;\n //Make prototype read only\n Object.defineProperty(Interface, 'prototype', { writable: false });\n //Ok\n return Interface;\n };\n\n var defineGlobalProperty = function defineGlobalProperty(name, value) {\n Object.defineProperty(window, name, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: value\n });\n };\n\n // Add objects to global\n var MediaDevices = require('./lib/MediaDevices.js');\n var VideoRenderer = require('./lib/VideoRenderer.js');\n navigator.mediaDevices = new MediaDevices();\n\n var RTCPeerConnection = require('./lib/RTCPeerConnection.js');\n var RTCSessionDescription = require('./lib/RTCSessionDescription.js');\n var RTCIceCandidate = require('./lib/RTCIceCandidate.js');\n var RTCRtpTransceiver = require('./lib/RTCRtpTransceiver.js');\n var RTCRtpReceiver = require('./lib/RTCRtpReceiver.js');\n var RTCRtpSender = require('./lib/RTCRtpSender.js');\n var RTCDataChannel = require('./lib/RTCDataChannel.js');\n var MediaStream = require('./lib/MediaStream.js');\n var MediaStreamTrack = require('./lib/MediaStreamTrack.js');\n var EventTarget = require('./lib/EventTarget.js').EventTarget;\n var WebRTCAdapter = {\n //Method called by demand in IE for bind video elements\n bindVideoElement: function bindVideoElement(element) {\n checkNewNode(element);\n },\n\n //Method called by demand in IE for unbind video elements\n unBindVideoElement: function unBindVideoElement(element) {\n checkRemovedNode(element);\n }\n };\n\n defineGlobalProperty('RTCPeerConnection', RTCPeerConnection);\n defineGlobalProperty('RTCSessionDescription', RTCSessionDescription);\n defineGlobalProperty('RTCIceCandidate', RTCIceCandidate);\n defineGlobalProperty('MediaStream', MediaStream);\n defineGlobalProperty('MediaStreamTrack', makeInterface(MediaStreamTrack));\n defineGlobalProperty('RTCRtpTransceiver', makeInterface(RTCRtpTransceiver));\n defineGlobalProperty('RTCRtpReceiver', makeInterface(RTCRtpReceiver));\n defineGlobalProperty('RTCRtpSender', makeInterface(RTCRtpSender));\n defineGlobalProperty('RTCDataChannel', makeInterface(RTCDataChannel));\n defineGlobalProperty('EventTarget', EventTarget);\n defineGlobalProperty('WebRTCAdapter', WebRTCProxy ? WebRTCAdapter : null);\n\n // DOM mutation observer to check when a new video element has been added to the DOM\n // TODO: Currently domObserver no observing, need to decide how to make it configurable to prevent performance issues.\n var domObserver = new MutationObserver(function (mutations) {\n for (var i = 0, numMutations = mutations.length; i < numMutations; i++) {\n var mutation = mutations[i];\n\n // Check if there has been addition or deletion of nodes\n if (mutation.type !== 'childList') continue;\n\n // Check added nodes.\n for (var j = 0, numNodes = mutation.addedNodes.length; j < numNodes; j++) {\n //Check node recursively\n checkNewNode(mutation.addedNodes[j]);\n } // Check removed nodes.\n for (j = 0, numNodes = mutation.removedNodes.length; j < numNodes; j++) {\n //Check node recursively\n checkRemovedNode(mutation.removedNodes[j]);\n }\n }\n });\n\n //Get all video elements already present\n var videos = document.getElementsByTagName('video');\n\n //Handle them\n for (var i = 0; i < videos.length; ++i) {\n VideoRenderer.handle(videos[i]);\n }\n }\n\n },{\"./lib/EventTarget.js\":4,\"./lib/MediaDevices.js\":6,\"./lib/MediaStream.js\":7,\"./lib/MediaStreamTrack.js\":8,\"./lib/RTCDataChannel.js\":9,\"./lib/RTCIceCandidate.js\":10,\"./lib/RTCPeerConnection.js\":11,\"./lib/RTCRtpReceiver.js\":12,\"./lib/RTCRtpSender.js\":13,\"./lib/RTCRtpTransceiver.js\":14,\"./lib/RTCSessionDescription.js\":15,\"./lib/VideoRenderer.js\":16,\"./lib/WebRTCProxy.js\":17,\"detect-browser\":18}],4:[function(require,module,exports){\n /**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n 'use strict';\n\n /**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n /**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n var privateData = new WeakMap();\n\n /**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\n var wrappers = new WeakMap();\n\n /**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\n function pd(event) {\n var retv = privateData.get(event);\n console.assert(retv != null, \"'this' is expected an Event object, but got\", event);\n return retv;\n }\n\n /**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n /**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\n function Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget: eventTarget,\n event: event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now()\n });\n\n // https://heycam.github.io/webidl/#Unforgeable\n Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n // Define accessors\n var keys = Object.keys(event);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(key));\n }\n }\n }\n\n// Should be enumerable, but class methods are not enumerable.\n Event.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type;\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget;\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget;\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath: function composedPath() {\n var currentTarget = pd(this).currentTarget;\n if (currentTarget == null) {\n return [];\n }\n return [currentTarget];\n },\n\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0;\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1;\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2;\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3;\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase;\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation: function stopPropagation() {\n var data = pd(this);\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation: function stopImmediatePropagation() {\n var data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles);\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable);\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault: function preventDefault() {\n var data = pd(this);\n if (data.passiveListener != null) {\n console.warn(\"Event#preventDefault() was called from a passive listener:\", data.passiveListener);\n return;\n }\n if (!data.event.cancelable) {\n return;\n }\n\n data.canceled = true;\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n },\n\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled;\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed);\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp;\n }\n };\n\n// `constructor` is not enumerable.\n Object.defineProperty(Event.prototype, \"constructor\", { value: Event, configurable: true, writable: true });\n\n// Ensure `event instanceof window.Event` is `true`.\n if (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n // Make association for wrappers.\n wrappers.set(window.Event.prototype, Event);\n }\n\n /**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\n function defineRedirectDescriptor(key) {\n return {\n get: function get() {\n return pd(this).event[key];\n },\n set: function set(value) {\n pd(this).event[key] = value;\n },\n\n configurable: true,\n enumerable: true\n };\n }\n\n /**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\n function defineCallDescriptor(key) {\n return {\n value: function value() {\n var event = pd(this).event;\n return event[key].apply(event, arguments);\n },\n\n configurable: true,\n enumerable: true\n };\n }\n\n /**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\n function defineWrapper(BaseEvent, proto) {\n var keys = Object.keys(proto);\n if (keys.length === 0) {\n return BaseEvent;\n }\n\n /** CustomEvent */\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: { value: CustomEvent, configurable: true, writable: true }\n });\n\n // Define accessors.\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!(key in BaseEvent.prototype)) {\n var descriptor = Object.getOwnPropertyDescriptor(proto, key);\n var isFunc = typeof descriptor.value === \"function\";\n Object.defineProperty(CustomEvent.prototype, key, isFunc ? defineCallDescriptor(key) : defineRedirectDescriptor(key));\n }\n }\n\n return CustomEvent;\n }\n\n /**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\n function getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event;\n }\n\n var wrapper = wrappers.get(proto);\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n return wrapper;\n }\n\n /**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\n function wrapEvent(eventTarget, event) {\n var Wrapper = getWrapper(Object.getPrototypeOf(event));\n return new Wrapper(eventTarget, event);\n }\n\n /**\n * Get the stopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\n function isStopped(event) {\n return pd(event).stopped;\n }\n\n /**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\n function setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n }\n\n /**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\n function setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n }\n\n /**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\n function setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n }\n\n /**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n /**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\n var listenersMap = new WeakMap();\n\n// Listener types\n var CAPTURE = 1;\n var BUBBLE = 2;\n var ATTRIBUTE = 3;\n\n /**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\n function isObject(x) {\n return x !== null && (typeof x === \"undefined\" ? \"undefined\" : _typeof(x)) === \"object\"; //eslint-disable-line no-restricted-syntax\n }\n\n /**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\n function getListeners(eventTarget) {\n var listeners = listenersMap.get(eventTarget);\n console.assert(listeners != null, \"'this' is expected an EventTarget object\");\n return listeners || new Map();\n }\n\n /**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\n function defineEventAttributeDescriptor(eventName) {\n return {\n get: function get() {\n var listeners = getListeners(this);\n var node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener;\n }\n node = node.next;\n }\n return null;\n },\n set: function set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null; // eslint-disable-line no-param-reassign\n }\n var listeners = getListeners(this);\n\n // Traverse to the tail while removing old value.\n var prev = null;\n var node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n // Add new value.\n if (listener !== null) {\n var newNode = {\n listener: listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null\n };\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n\n configurable: true,\n enumerable: true\n };\n }\n\n /**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\n function defineEventAttribute(eventTargetPrototype, eventName) {\n Object.defineProperty(eventTargetPrototype, \"on\" + eventName, defineEventAttributeDescriptor(eventName));\n }\n\n /**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\n function defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: { value: CustomEventTarget, configurable: true, writable: true }\n });\n\n for (var i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget;\n }\n\n /**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\n function EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new Map());\n return;\n }\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0]);\n }\n if (arguments.length > 0) {\n var types = new Array(arguments.length);\n for (var i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n return defineCustomEventTarget(types);\n }\n throw new TypeError(\"Cannot call a class as a function\");\n /*eslint-enable consistent-return */\n }\n\n// Should be enumerable, but class methods are not enumerable.\n EventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {boolean} `true` if the listener was added actually.\n */\n addEventListener: function addEventListener(eventName, listener, options) {\n if (listener == null) {\n return false;\n }\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\");\n }\n\n var listeners = getListeners(this);\n var optionsIsObj = isObject(options);\n var capture = optionsIsObj ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var newNode = {\n listener: listener,\n listenerType: listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null\n };\n\n // Set it as the first node if the first node is null.\n var node = listeners.get(eventName);\n if (node === undefined) {\n listeners.set(eventName, newNode);\n return true;\n }\n\n // Traverse to the tail while checking duplication..\n var prev = null;\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n // Should ignore duplication.\n return false;\n }\n prev = node;\n node = node.next;\n }\n\n // Add it.\n prev.next = newNode;\n return true;\n },\n\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {boolean} `true` if the listener was removed actually.\n */\n removeEventListener: function removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return false;\n }\n\n var listeners = getListeners(this);\n var capture = isObject(options) ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n\n var prev = null;\n var node = listeners.get(eventName);\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n return true;\n }\n\n prev = node;\n node = node.next;\n }\n\n return false;\n },\n\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent: function dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError(\"\\\"event.type\\\" should be a string.\");\n }\n\n // If listeners aren't registered, terminate.\n var listeners = getListeners(this);\n var eventName = event.type;\n var node = listeners.get(eventName);\n if (node == null) {\n return true;\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n var wrappedEvent = wrapEvent(this, event);\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n var prev = null;\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n // Call this listener\n setPassiveListener(wrappedEvent, node.passive ? node.listener : null);\n if (typeof node.listener === \"function\") {\n node.listener.call(this, wrappedEvent);\n } else if (node.listenerType !== ATTRIBUTE && typeof node.listener.handleEvent === \"function\") {\n node.listener.handleEvent(wrappedEvent);\n }\n\n // Break if `event.stopImmediatePropagation` was called.\n if (isStopped(wrappedEvent)) {\n break;\n }\n\n node = node.next;\n }\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n\n return !wrappedEvent.defaultPrevented;\n }\n };\n\n// `constructor` is not enumerable.\n Object.defineProperty(EventTarget.prototype, \"constructor\", { value: EventTarget, configurable: true, writable: true });\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\n if (typeof window !== \"undefined\" && typeof window.EventTarget !== \"undefined\") {\n Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n }\n\n module.exports = EventTarget;\n module.exports.EventTarget = module.exports[\"default\"] = EventTarget;\n module.exports.defineEventAttribute = defineEventAttribute;\n\n\n },{}],5:[function(require,module,exports){\n \"use strict\";\n\n function InvalidStateError() {\n try {\n var xhr = new XMLHttpRequest();\n xhr.responseType = \"blob\";\n } catch (e) {\n return e;\n }\n }\n\n module.exports = InvalidStateError;\n\n },{}],6:[function(require,module,exports){\n 'use strict';\n\n var WebRTCProxy = require('./WebRTCProxy.js');\n var MediaStream = require('./MediaStream.js');\n var MediaStreamTrack = require('./MediaStreamTrack.js');\n var EventTarget = require('./EventTarget.js').EventTarget;\n var defineEventAttribute = require('./EventTarget.js').defineEventAttribute;\n\n /*\n interface MediaDevices : EventTarget {\n attribute EventHandler ondevicechange;\n Promise<sequence<MediaDeviceInfo>> enumerateDevices();\n }\n\n partial interface MediaDevices {\n MediaTrackSupportedConstraints getSupportedConstraints();\n Promise<MediaStream> getUserMedia(optional MediaStreamConstraints constraints);\n }\n */\n var MediaDevices = function MediaDevices() {\n //Init event targetr\n EventTarget.call(this);\n };\n\n//Inherit from Event Target\n MediaDevices.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: MediaDevices,\n configurable: true,\n writable: true\n }\n });\n\n// Define Event Handlers\n defineEventAttribute(MediaDevices.prototype, 'devicechange');\n\n MediaDevices.prototype.enumerateDevices = function () {\n return new Promise(function (resolve, reject) {\n resolve([]);\n });\n };\n\n MediaDevices.prototype.getSupportedConstraints = function () {\n throw 'Not supported yet';\n };\n\n MediaDevices.prototype.getUserMedia = function (constraints) {\n return new Promise(function (resolve, reject) {\n var stream = new MediaStream();\n //If we are being requested audio\n if (constraints.audio) {\n var options = {};\n //Get new track\n var track = WebRTCProxy.createLocalAudioTrack(options);\n //Add it to the stream\n stream.addTrack(new MediaStreamTrack(track));\n }\n //If we are being requested video\n if (constraints.video) {\n var options = {};\n //Get new track\n var track = WebRTCProxy.createLocalVideoTrack(options);\n //Add it to the stream\n stream.addTrack(new MediaStreamTrack(track));\n }\n //Done\n resolve(stream);\n });\n };\n\n Object.defineProperty(MediaDevices, 'name', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: 'MediaDevices'\n });\n Object.defineProperty(MediaDevices, 'prototype', { writable: false });\n module.exports = MediaDevices;\n\n },{\"./EventTarget.js\":4,\"./MediaStream.js\":7,\"./MediaStreamTrack.js\":8,\"./WebRTCProxy.js\":17}],7:[function(require,module,exports){\n 'use strict';\n\n var MediaStreamTrack = require('./MediaStreamTrack');\n var EventTarget = require('./EventTarget.js').EventTarget;\n var defineEventAttribute = require('./EventTarget.js').defineEventAttribute;\n /*\n [Exposed=Window,\n Constructor,\n Constructor(MediaStream stream),\n Constructor(sequence<MediaStreamTrack> tracks)]\n interface MediaStream : EventTarget {\n readonly attribute DOMString id;\n sequence<MediaStreamTrack> getAudioTracks();\n sequence<MediaStreamTrack> getVideoTracks();\n sequence<MediaStreamTrack> getTracks();\n MediaStreamTrack? getTrackById(DOMString trackId);\n void addTrack(MediaStreamTrack track);\n void removeTrack(MediaStreamTrack track);\n MediaStream clone();\n readonly attribute boolean active;\n attribute EventHandler onaddtrack;\n attribute EventHandler onremovetrack;\n };\n */\n var count = 0;\n\n var MediaStream = function MediaStream(tracks, label) {\n //Init event target\n EventTarget.call(this);\n\n //Private vars\n this.priv = {\n tracks: {}\n };\n\n //Actual WebRTC MediaStream supports MediaStream or array of MediaTracks as constructor input.\n //Because of time constraints we implementing the support for array of tracks only.\n if (tracks) {\n if (!(tracks instanceof Array)) {\n throw new Error('tracks should be an array of MediaStreamTrack');\n }\n\n for (var i = 0; i < tracks.length; ++i) {\n if (!(tracks[i] instanceof MediaStreamTrack)) {\n throw new Error('Each item in tracks array should be an instance of MediaStreamTrack');\n }\n this.priv.tracks[tracks[i].id] = tracks[i];\n }\n }\n\n var id = label || 'stream-' + count++;\n\n Object.defineProperty(this, 'id', { enumerable: true, configurable: false, writable: false, value: id });\n Object.defineProperty(this, 'active', { enumerable: true, configurable: false, writable: false, value: true });\n\n return this;\n };\n\n//Inherit from Event Target\n MediaStream.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: MediaStream,\n configurable: true,\n writable: true\n }\n });\n MediaStream.__proto__ = EventTarget;\n\n// Define Event Handlers\n defineEventAttribute(MediaStream.prototype, 'addtrack');\n defineEventAttribute(MediaStream.prototype, 'removetrack');\n\n MediaStream.prototype.getAudioTracks = function () {\n var arr = [];\n for (var id in this.priv.tracks) {\n if (this.priv.tracks[id].kind === 'audio') {\n arr.push(this.priv.tracks[id]);\n }\n }return arr;\n };\n\n MediaStream.prototype.getVideoTracks = function () {\n var arr = [];\n for (var id in this.priv.tracks) {\n if (this.priv.tracks[id].kind === 'video') {\n arr.push(this.priv.tracks[id]);\n }\n }return arr;\n };\n\n MediaStream.prototype.getTracks = function () {\n var arr = [];\n for (var id in this.priv.tracks) {\n arr.push(this.priv.tracks[id]);\n }\n return arr;\n };\n\n MediaStream.prototype.getTrackById = function (id) {\n return this.priv.tracks[id];\n };\n\n MediaStream.prototype.addTrack = function (track) {\n //Check if already present\n if (this.priv.tracks.hasOwnProperty(track.id)) return;\n //Add to track\n this.priv.tracks[track.id] = track;\n\n if (typeof this.priv.tracks[track.id].enabled !== 'boolean') {\n this.priv.tracks[track.id].enabled = true;\n }\n\n //Create event\n var event = document.createEvent('Event');\n event.initEvent('addtrack', false, false);\n event.track = track;\n //Fire it\n this.dispatchEvent(event);\n };\n\n MediaStream.prototype.removeTrack = function (track) {\n //Check if it is not already present\n if (!this.priv.tracks.hasOwnProperty(track.id)) return;\n //Add to track\n delete this.priv.tracks[track.id];\n //Create event\n var event = document.createEvent('Event');\n event.initEvent('removetrack', false, false);\n event.track = track;\n //Fire it\n this.dispatchEvent(event);\n };\n\n MediaStream.prototype.clone = function () {\n return new MediaStream(this.getTracks());\n };\n\n Object.defineProperty(MediaStream, 'name', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: 'MediaStream'\n });\n Object.defineProperty(MediaStream, 'prototype', { writable: false });\n module.exports = MediaStream;\n\n },{\"./EventTarget.js\":4,\"./MediaStreamTrack\":8}],8:[function(require,module,exports){\n 'use strict';\n\n var EventTarget = require('./EventTarget.js').EventTarget;\n var defineEventAttribute = require('./EventTarget.js').defineEventAttribute;\n /*\n [Exposed=Window]\n interface MediaStreamTrack : EventTarget {\n readonly attribute DOMString kind;\n readonly attribute DOMString id;\n readonly attribute DOMString label;\n attribute boolean enabled;\n readonly attribute boolean muted;\n attribute EventHandler onmute;\n attribute EventHandler onunmute;\n readonly attribute MediaStreamTrackState readyState;\n attribute EventHandler onended;\n MediaStreamTrack clone();\n void stop();\n MediaTrackCapabilities getCapabilities();\n MediaTrackConstraints getConstraints();\n MediaTrackSettings getSettings();\n Promise<void> applyConstraints(optional MediaTrackConstraints constraints);\n attribute EventHandler onoverconstrained;\n };\n\n partial interface MediaStreamTrack {\n readonly attribute boolean isolated;\n attribute EventHandler onisolationchange;\n };\n */\n var MediaStreamTrack = function MediaStreamTrack(track) {\n //Init event targetr\n EventTarget.call(this);\n\n //Private vars\n var priv = this.priv = {\n track: track,\n muted: false,\n enabled: true\n };\n\n Object.defineProperty(this, 'kind', {\n enumerable: true, configurable: false, get: function get() {\n return priv.track.kind;\n }\n });\n Object.defineProperty(this, 'id', {\n enumerable: true, configurable: false, get: function get() {\n return priv.track.id;\n }\n });\n Object.defineProperty(this, 'label', {\n enumerable: true, configurable: false, get: function get() {\n return priv.track.id;\n }\n });\n Object.defineProperty(this, 'enabled', {\n enumerable: true, configurable: false, get: function get() {\n return priv.enabled;\n }, set: function set(enabled) {\n priv.enabled = !!enabled;\n }\n });\n Object.defineProperty(this, 'muted', {\n enumerable: true, configurable: false, get: function get() {\n return priv.muted;\n }\n });\n Object.defineProperty(this, 'readyState', {\n enumerable: true, configurable: false, get: function get() {\n return priv.track.state;\n }\n });\n Object.defineProperty(this, 'isolated', {\n enumerable: true, configurable: false, get: function get() {\n return false;\n }\n });\n\n return this;\n };\n\n//Inherit from Event Target\n MediaStreamTrack.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: MediaStreamTrack,\n configurable: true,\n writable: false\n }\n });\n\n MediaStreamTrack.__proto__ = EventTarget;\n\n// Define Event Handlers\n//TODO: fire them somehow\n defineEventAttribute(MediaStreamTrack.prototype, 'mute');\n defineEventAttribute(MediaStreamTrack.prototype, 'unmute');\n defineEventAttribute(MediaStreamTrack.prototype, 'ended');\n defineEventAttribute(MediaStreamTrack.prototype, 'isolationchange');\n\n MediaStreamTrack.prototype.clone = function () {\n return null;\n };\n\n MediaStreamTrack.prototype.stop = function () {\n this.priv.track.stop();\n };\n\n MediaStreamTrack.prototype.getCapabilities = function () {};\n\n MediaStreamTrack.prototype.getConstraints = function () {};\n\n MediaStreamTrack.prototype.getSettings = function () {};\n\n MediaStreamTrack.prototype.applyConstraints = function () {};\n\n Object.defineProperty(MediaStreamTrack, 'name', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: 'MediaStreamTrack'\n });\n module.exports = MediaStreamTrack;\n\n },{\"./EventTarget.js\":4}],9:[function(require,module,exports){\n \"use strict\";\n\n var EventTarget = require(\"./EventTarget.js\").EventTarget;\n var defineEventAttribute = require(\"./EventTarget.js\").defineEventAttribute;\n var InvalidStateError = require(\"./InvalidStateError.js\");\n\n /*\n [Exposed=Window]\n interface RTCRTCDataChannel : EventTarget {\n readonly attribute USVString label;\n readonly attribute boolean ordered;\n readonly attribute unsigned short? maxPacketLifeTime;\n readonly attribute unsigned short? maxRetransmits;\n readonly attribute USVString protocol;\n readonly attribute boolean negotiated;\n readonly attribute unsigned short? id;\n readonly attribute RTCPriorityType priority;\n readonly attribute RTCRTCDataChannelState readyState;\n readonly attribute unsigned long bufferedAmount;\n attribute unsigned long bufferedAmountLowThreshold;\n attribute EventHandler onopen;\n attribute EventHandler onbufferedamountlow;\n attribute EventHandler onerror;\n attribute EventHandler onclose;\n void close();\n attribute EventHandler onmessage;\n attribute DOMString binaryType;\n void send(USVString data);\n void send(Blob data);\n void send(ArrayBuffer data);\n void send(ArrayBufferView data);\n };\n */\n var RTCDataChannel = function RTCDataChannel(dataChannel) {\n //Init event targetr\n EventTarget.call(this);\n\n //Private vars\n var self = this;\n var priv = this.priv = {\n binaryType: \"blob\",\n dataChannel: dataChannel\n };\n\n //Read only properties\n Object.defineProperty(this, 'label', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.label;\n } });\n Object.defineProperty(this, 'ordered', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.ordered;\n } });\n Object.defineProperty(this, 'maxPacketLifeTime', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.maxPacketLifeTime;\n } });\n Object.defineProperty(this, 'protocol', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.protocol;\n } });\n Object.defineProperty(this, 'negotiated', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.negotiated;\n } });\n Object.defineProperty(this, 'id', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.id;\n } });\n Object.defineProperty(this, 'priority', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.priority;\n } });\n Object.defineProperty(this, 'readyState', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.readyState;\n } });\n Object.defineProperty(this, 'bufferedAmount', { enumerable: true, configurable: false, get: function get() {\n return priv.dataChannel.bufferedAmount;\n } });\n //Read & write\n Object.defineProperty(this, 'bufferedAmountLowThreshold', { enumerable: true, configurable: false,\n get: function get() {\n return priv.dataChannel.bufferedAmountLowThreshold;\n },\n set: function set(bufferedAmountLowThreshold) {\n return priv.dataChannel.bufferedAmountLowThreshold = bufferedAmountLowThreshold;\n }\n });\n Object.defineProperty(this, 'binaryType', { enumerable: true, configurable: false,\n get: function get() {\n return priv.dataChannel.bufferedAmount;\n },\n set: function set(binaryType) {\n if (binaryType !== \"blob\" && binaryType !== \"arraybuffer\") throw new SyntaxError();\n return priv.binaryType = binaryType;\n }\n });\n\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, false, false);\n return e;\n }\n\n function fire(name) {\n self.dispatchEvent(createEvent(name));\n }\n\n //Set event\n priv.dataChannel.onopen = function () {\n fire(\"open\");\n };\n priv.dataChannel.onbufferedamountlow = function () {\n fire(\"bufferedamountlow\");\n };\n priv.dataChannel.onerror = function () {\n fire(\"error\");\n };\n priv.dataChannel.onclose = function () {\n fire(\"close\");\n };\n priv.dataChannel.onmessage = function (message) {\n //Create event\n var event = createEvent(\"message\");\n\n //Check if message is binary\n if (typeof message !== \"string\") {\n //Create uint array\n var array = new Uint8Array(message);\n //Check binary type\n if (priv.binaryType === \"blob\") {\n //Create blob builder\n var builder = new MSBlobBuilder();\n //Append message\n builder.append(array);\n //Get blob\n event.data = builder.getBlob();\n } else if (priv.binaryType === \"arraybuffer\") {\n //Get array buffer\n event.data = array.buffer;\n } else return;\n } else {\n //It is a string\n event.data = message;\n }\n\n //Check if\n self.dispatchEvent(event);\n };\n\n //Done\n return this;\n };\n\n//Inherit from Event Target\n RTCDataChannel.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: RTCDataChannel,\n configurable: true,\n writable: true\n }\n });\n RTCDataChannel.__proto__ = EventTarget;\n\n// Define Event Handlers\n defineEventAttribute(RTCDataChannel.prototype, \"open\");\n defineEventAttribute(RTCDataChannel.prototype, \"bufferedamountlow\");\n defineEventAttribute(RTCDataChannel.prototype, \"error\");\n defineEventAttribute(RTCDataChannel.prototype, \"close\");\n defineEventAttribute(RTCDataChannel.prototype, \"message\");\n\n RTCDataChannel.prototype.send = function (data) {\n var self = this;\n //Check state\n if (this.readyState !== \"open\") throw new InvalidStateError();\n\n try {\n //Check type\n if (data instanceof Blob) {\n var reader = new FileReader();\n reader.onloadend = function () {\n //Create array from buffer\n var array = new Uint8Array(reader.result);\n //Send it\n self.priv.dataChannel.send(array);\n };\n //Read data as array\n reader.readAsArrayBuffer(data);\n } else if (data instanceof ArrayBuffer) {\n //Send it\n this.priv.dataChannel.send(array);\n } else if (typeof data === \"string\") {\n //Send it\n this.priv.dataChannel.send(data);\n } else {\n throw new TypeError();\n }\n } catch (e) {\n throw InvalidStateError();\n }\n };\n\n RTCDataChannel.prototype.close = function () {\n this.priv.dataChannel.close();\n };\n\n Object.defineProperty(RTCDataChannel, 'name', { enumerable: false, configurable: true, writable: false, value: \"RTCDataChannel\" });\n Object.defineProperty(RTCDataChannel, 'prototype', { writable: false });\n module.exports = RTCDataChannel;\n\n },{\"./EventTarget.js\":4,\"./InvalidStateError.js\":5}],10:[function(require,module,exports){\n \"use strict\";\n\n var WebRTCProxy = require(\"./WebRTCProxy.js\");\n /*\n interface RTCIceCandidate {\n readonly attribute DOMString candidate;\n readonly attribute DOMString? sdpMid;\n readonly attribute unsigned short? sdpMLineIndex;\n readonly attribute DOMString? foundation;\n readonly attribute RTCIceComponent? component;\n readonly attribute unsigned long? priority;\n readonly attribute DOMString? ip;\n readonly attribute RTCIceProtocol? protocol;\n readonly attribute unsigned short? port;\n readonly attribute RTCIceCandidateType? type;\n readonly attribute RTCIceTcpCandidateType? tcpType;\n readonly attribute DOMString? relatedAddress;\n readonly attribute unsigned short? relatedPort;\n readonly attribute DOMString? usernameFragment;\n RTCIceCandidateInit toJSON();\n };\n */\n var RTCIceCandidate = function RTCIceCandidate(iceCandidateInit) {\n if (!iceCandidateInit) throw new TypeError();\n\n //Get values from dictionary\n var candidate = iceCandidateInit.candidate;\n var sdpMid = iceCandidateInit.sdpMid;\n var sdpMLineIndex = iceCandidateInit.sdpMLineIndex;\n var usernameFragment = iceCandidateInit.usernameFragment;\n //Not set yet\n var foundation;\n var component;\n var priority;\n var ip;\n var protocol;\n var port;\n var type;\n var tcpType;\n var relatedAddress;\n var relatedPort;\n\n //Extended attributes to avoid parsing it twice\n if (iceCandidateInit.ext) {\n foundation = iceCandidateInit.ext.foundation;\n component = iceCandidateInit.ext.component;\n priority = iceCandidateInit.ext.priority;\n ip = iceCandidateInit.ext.ip;\n protocol = iceCandidateInit.ext.protocol;\n port = iceCandidateInit.ext.port;\n type = iceCandidateInit.ext.type;\n tcpType = iceCandidateInit.ext.tcpType;\n relatedAddress = iceCandidateInit.ext.relatedAddress;\n relatedPort = iceCandidateInit.ext.relatedPort;\n } else {\n try {\n //Parse candidate\n var parsed = WebRTCProxy.parseIceCandidate(candidate);\n } catch (e) {\n throw new TypeError();\n }\n //Set parsed properties\n foundation = parsed[0];\n component = parsed[1];\n priority = parsed[2];\n ip = parsed[3];\n protocol = parsed[4];\n port = parsed[5];\n type = parsed[6];\n tcpType = parsed[7];\n relatedAddress = parsed[8];\n relatedPort = parsed[9];\n if (!usernameFragment) usernameFragment = parsed[10];\n }\n\n //Direct attributes from init\n Object.defineProperty(this, \"candidate\", { enumerable: true, configurable: false, get: function get() {\n return candidate;\n } });\n Object.defineProperty(this, \"sdpMid\", { enumerable: true, configurable: false, get: function get() {\n return sdpMid;\n } });\n Object.defineProperty(this, \"sdpMLineIndex\", { enumerable: true, configurable: false, get: function get() {\n return sdpMLineIndex;\n } });\n Object.defineProperty(this, \"foundation\", { enumerable: true, configurable: false, get: function get() {\n return foundation;\n } });\n Object.defineProperty(this, \"component\", { enumerable: true, configurable: false, get: function get() {\n return component;\n } });\n Object.defineProperty(this, \"priority\", { enumerable: true, configurable: false, get: function get() {\n return priority;\n } });\n Object.defineProperty(this, \"ip\", { enumerable: true, configurable: false, get: function get() {\n return ip;\n } });\n Object.defineProperty(this, \"protocol\", { enumerable: true, configurable: false, get: function get() {\n return protocol;\n } });\n Object.defineProperty(this, \"port\", { enumerable: true, configurable: false, get: function get() {\n return port;\n } });\n Object.defineProperty(this, \"type\", { enumerable: true, configurable: false, get: function get() {\n return type;\n } });\n Object.defineProperty(this, \"tcpType\", { enumerable: true, configurable: false, get: function get() {\n return tcpType;\n } });\n Object.defineProperty(this, \"relatedAddress\", { enumerable: true, configurable: false, get: function get() {\n return relatedAddress;\n } });\n Object.defineProperty(this, \"relatedPort\", { enumerable: true, configurable: false, get: function get() {\n return relatedPort;\n } });\n Object.defineProperty(this, \"usernameFragment\", { enumerable: true, configurable: false, get: function get() {\n return usernameFragment;\n } });\n\n return this;\n };\n\n RTCIceCandidate.prototype.toJSON = function () {\n return {\n candidate: this.candidate,\n sdpMid: this.sdpMid,\n sdpMLineIndex: this.sdpMLineIndex,\n usernameFragment: this.usernameFragment\n };\n };\n\n Object.defineProperty(RTCIceCandidate, 'name', { enumerable: false, configurable: true, writable: false, value: \"RTCIceCandidate\" });\n Object.defineProperty(RTCIceCandidate, 'prototype', { writable: false });\n module.exports = RTCIceCandidate;\n\n },{\"./WebRTCProxy.js\":17}],11:[function(require,module,exports){\n \"use strict\";\n\n var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n var WebRTCProxy = require(\"./WebRTCProxy.js\");\n var MediaStreamTrack = require(\"./MediaStreamTrack.js\");\n var RTCSessionDescription = require(\"./RTCSessionDescription.js\");\n var RTCIceCandidate = require(\"./RTCIceCandidate.js\");\n var RTCRtpSender = require(\"./RTCRtpSender.js\");\n var RTCRtpReceiver = require(\"./RTCRtpReceiver.js\");\n var RTCRtpTransceiver = require(\"./RTCRtpTransceiver.js\");\n var DataChannel = require(\"./RTCDataChannel.js\");\n var InvalidStateError = require(\"./InvalidStateError.js\");\n var EventTarget = require(\"./EventTarget.js\").EventTarget;\n var defineEventAttribute = require(\"./EventTarget.js\").defineEventAttribute;\n\n /*\n [Constructor(optional RTCConfiguration configuration),Exposed=Window]\n interface RTCPeerConnection : EventTarget {\n Promise<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options);\n Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options);\n Promise<void> setLocalDescription(RTCSessionDescriptionInit description);\n\n readonly attribute RTCSessionDescription? localDescription;\n readonly attribute RTCSessionDescription? currentLocalDescription;\n readonly attribute RTCSessionDescription? pendingLocalDescription;\n\n Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);\n\n readonly attribute RTCSessionDescription? remoteDescription;\n readonly attribute RTCSessionDescription? currentRemoteDescription;\n readonly attribute RTCSessionDescription? pendingRemoteDescription;\n\n Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate);\n\n readonly attribute RTCSignalingState signalingState;\n readonly attribute RTCIceGatheringState iceGatheringState;\n readonly attribute RTCIceConnectionState iceConnectionState;\n readonly attribute RTCPeerConnectionState connectionState;\n readonly attribute boolean? canTrickleIceCandidates;\n static sequence<RTCIceServer> getDefaultIceServers();\n RTCConfiguration getConfiguration();\n void setConfiguration(RTCConfiguration configuration);\n void close();\n\n attribute EventHandler onnegotiationneeded;\n attribute EventHandler onicecandidate;\n attribute EventHandler onicecandidateerror;\n attribute EventHandler onsignalingstatechange;\n attribute EventHandler oniceconnectionstatechange;\n attribute EventHandler onicegatheringstatechange;\n attribute EventHandler onconnectionstatechange;\n };\n */\n\n var RTCIceTransportPolicy = [\"relay\", \"all\"];\n var RTCBundlePolicy = [\"balanced\", \"max-compat\", \"max-bundle\"];\n var RTCRtcpMuxPolicy = [\"negotiate\", \"require\"];\n var RTCIceCredentialType = [\"password\", \"oauth\"];\n\n//Check if a value is valid in an enum\n function check(value, valid) {\n for (var i = 0; i < valid.length; ++i) {\n if (valid[i] === value) return;\n }throw new TypeError(value + \" not in \" + JSON.stringify(valid));\n }\n\n function checkRange(value, min, max) {\n if (value < min || value > max) throw new TypeError(value + \" not in [\" + min + \",\" + max + \"]\");\n }\n\n function checkNotNull(value) {\n if (value === null) throw new TypeError(\"Null not allowed\");\n }\n\n function checkArray(value) {\n if (!Array.isArray(value)) throw new TypeError(\"Must be an array\");\n }\n\n function createRTCConfiguration(configuration) {\n /*\n *\n dictionary RTCConfiguration {\n sequence<RTCIceServer> iceServers;\n RTCIceTransportPolicy iceTransportPolicy = \"all\";\n RTCBundlePolicy bundlePolicy = \"balanced\";\n RTCRtcpMuxPolicy rtcpMuxPolicy = \"require\";\n DOMString peerIdentity;\n sequence<RTCCertificate> certificates;\n [EnforceRange]\n octet iceCandidatePoolSize = 0;\n };\n */\n //Set configuration with default values\n var sanitized = _extends({\n iceServers: undefined,\n iceTransportPolicy: \"all\",\n bundlePolicy: \"balanced\",\n rtcpMuxPolicy: \"require\",\n iceCandidatePoolSize: 0,\n certificates: undefined\n },\n //Remove undefined objects\n configuration ? JSON.parse(JSON.stringify(configuration)) : {});\n //Check valid values\n checkNotNull(sanitized.iceServers);\n\n //Check array\n if (Array.isArray(sanitized.iceServers)) {\n //Check each one\n for (var i = 0; i < sanitized.iceServers.length; ++i) {\n /*\n *\n dictionary RTCIceServer {\n required (DOMString or sequence<DOMString>) urls;\n DOMString username;\n (DOMString or RTCOAuthCredential) credential;\n RTCIceCredentialType credentialType = \"password\";\n };\n */\n //Set defautls\n var iceServer = sanitized.iceServers[i] = _extends({\n credentialType: \"password\"\n }, sanitized.iceServers[i]);\n //Check it is not null\n checkNotNull(iceServer.urls);\n //If it is a sring fallback\n if (typeof iceServer.urls === \"string\")\n //Arraify\n iceServer.urls = [iceServer.urls];\n checkArray(iceServer.urls);\n }\n }\n //Check the others\n check(sanitized.iceTransportPolicy, RTCIceTransportPolicy);\n check(sanitized.bundlePolicy, RTCBundlePolicy);\n check(sanitized.rtcpMuxPolicy, RTCRtcpMuxPolicy);\n checkRange(sanitized.iceCandidatePoolSize, 0, 255);\n //Done\n return sanitized;\n }\n\n var RTCPeerConnection = function RTCPeerConnection() {\n var self = this;\n //Init event targetr\n EventTarget.call(this);\n\n //Create private args\n var priv = this.priv = {};\n\n //Set configuration with default values\n priv.configuration = createRTCConfiguration(arguments.length ? JSON.parse(JSON.stringify(arguments[0])) : {});\n\n //Other internal data\n priv.senders = {};\n priv.remoteStreams = {};\n priv.lastOffer = null;\n priv.lastAnswer = null;\n priv.isClosed = false;\n\n var signalingState = \"stable\";\n var iceGatheringState = \"new\";\n var iceConnectionState = \"new\";\n var connectionState = \"new\";\n\n //TODO: Implement this\n var canTrickleIceCandidates = null;\n\n function toSessionDescription(sdp) {\n return typeof sdp === \"unknown\" ? new RTCSessionDescription(sdp.toArray()) : null;\n }\n\n //Define read only properties for each attribute\n //The localDescription attribute must return pendingLocalDescription if it is not null and otherwise it must return currentLocalDescription .\n Object.defineProperty(this, 'localDescription', { enumerable: true, configurable: false, get: function get() {\n return toSessionDescription(priv.pc.localDescription);\n } });\n Object.defineProperty(this, 'currentLocalDescription', { enumerable: true, configurable: false, get: function get() {\n return toSessionDescription(priv.pc.currentLocalDescription);\n } });\n Object.defineProperty(this, 'pendingLocalDescription', { enumerable: true, configurable: false, get: function get() {\n return toSessionDescription(priv.pc.pendingLocalDescription);\n } });\n\n Object.defineProperty(this, 'remoteDescription', { enumerable: true, configurable: false, get: function get() {\n return toSessionDescription(priv.pc.remoteDescription);\n } });\n Object.defineProperty(this, 'currentRemoteDescription', { enumerable: true, configurable: false, get: function get() {\n return toSessionDescription(priv.pc.currentRemoteDescription);\n } });\n Object.defineProperty(this, 'pendingRemoteDescription', { enumerable: true, configurable: false, get: function get() {\n return toSessionDescription(priv.pc.pendingRemoteDescription);\n } });\n\n Object.defineProperty(this, 'signalingState', { enumerable: true, configurable: false, get: function get() {\n return signalingState;\n } });\n Object.defineProperty(this, 'iceGatheringState', { enumerable: true, configurable: false, get: function get() {\n return iceGatheringState;\n } });\n Object.defineProperty(this, 'iceConnectionState', { enumerable: true, configurable: false, get: function get() {\n return iceConnectionState;\n } });\n Object.defineProperty(this, 'connectionState', { enumerable: true, configurable: false, get: function get() {\n return connectionState;\n } });\n\n Object.defineProperty(this, 'canTrickleIceCandidates', { enumerable: true, configurable: false, get: function get() {\n return canTrickleIceCandidates;\n } });\n\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, false, false);\n return e;\n }\n function fire(name) {\n self.dispatchEvent(createEvent(name));\n }\n\n // Create new native pc\n priv.pc = WebRTCProxy.createPeerConnection(priv.configuration);\n\n //Event handlers\n priv.pc.onnegotiationneeded = function () {\n fire(\"negotiationneeded\");\n };\n priv.pc.onicecandidate = function (candidate, sdpMid, sdpMLineIndex, foundation, component, priority, ip, protocol, port, type, tcpType, relatedAddress, relatedPort, usernameFragment, url) {\n var e = createEvent(\"icecandidate\");\n if (candidate) e.candidate = new RTCIceCandidate({\n candidate: candidate,\n sdpMid: sdpMid,\n sdpMLineIndex: sdpMLineIndex,\n ext: {\n foundation: foundation,\n component: component,\n priority: priority,\n ip: ip,\n protocol: protocol,\n port: port,\n type: type,\n tcpType: tcpType,\n relatedAddress: relatedAddress,\n relatedPort: relatedPort\n },\n usernameFragment: usernameFragment\n });else e.candidate = null;\n e.url = url;\n self.dispatchEvent(e);\n };\n priv.pc.onicecandidateerror = function () {\n fire(\"icecandidateerror\");\n };\n priv.pc.onsignalingstatechange = function (state) {\n signalingState = state;\n fire(\"signalingstatechange\");\n if (\"closed\" === state) {\n priv.isClosed = true;\n delete priv.pc;\n }\n };\n priv.pc.oniceconnectionstatechange = function (state) {\n iceConnectionState = state;\n fire(\"iceconnectionstatechange\");\n };\n priv.pc.onicegatheringstatechange = function (state) {\n iceGatheringState = state;\n fire(\"icegatheringstatechange\");\n };\n priv.pc.onconnectionstatechange = function (state) {\n connectionState = state;\n fire(\"connectionState\");\n };\n priv.pc.onaddstream = function (label) {\n //Create new stream\n var stream = new MediaStream(null, label);\n\n //Get remote stream tracks\n priv.pc.getRemoteStreamTracks(label, function () {\n //Parse arguments\n var tracks = Array.prototype.slice.call(arguments, 0);\n\n //For each track\n for (var i = 0; i < tracks.length; ++i) {\n //Create a wrapper\n stream.addTrack(new MediaStreamTrack(tracks[i]));\n } //Get all tracks\n var mediaStreamTracks = stream.getTracks();\n\n //For each track in stream\n for (var i = 0; i < mediaStreamTracks.length; ++i) {\n //Create evnet\n var event = createEvent(\"track\");\n //Add data\n event.track = mediaStreamTracks[i];\n event.receiver = { track: mediaStreamTracks[i] };\n event.transceiver = { receiver: event.receiver };\n event.streams = [stream];\n //Fire it\n self.dispatchEvent(event);\n }\n });\n };\n\n priv.pc.onremovestream = function (label) {\n //Delete from remote stream list\n delete priv.remotes[label];\n };\n\n priv.pc.ondatachannel = function (dataChannel) {\n //Create event\n var event = createEvent(\"datachannel\");\n //Create datachannel\n event.channel = new DataChannel(dataChannel);\n //Fire event\n self.dispatchEvent(event);\n };\n };\n\n//Inherit from Event Target\n RTCPeerConnection.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: RTCPeerConnection,\n configurable: true,\n writable: true\n }\n });\n RTCPeerConnection.__proto__ = EventTarget;\n\n// Define Event Handlers\n defineEventAttribute(RTCPeerConnection.prototype, \"negotiationneeded\");\n defineEventAttribute(RTCPeerConnection.prototype, \"icecandidate\");\n defineEventAttribute(RTCPeerConnection.prototype, \"icecandidateerror\");\n defineEventAttribute(RTCPeerConnection.prototype, \"signalingstatechange\");\n defineEventAttribute(RTCPeerConnection.prototype, \"iceconnectionstatechange\");\n defineEventAttribute(RTCPeerConnection.prototype, \"icegatheringstatechange\");\n defineEventAttribute(RTCPeerConnection.prototype, \"connectionstatechange\");\n defineEventAttribute(RTCPeerConnection.prototype, \"addtrack\");\n\n RTCPeerConnection.prototype.getConfiguration = function () {\n return this.priv.configuration;\n };\n\n RTCPeerConnection.prototype.setConfiguration = function (configuration) {\n var priv = this.priv;\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n\n //Get configuration object from input\n var sanitized = createRTCConfiguration(configuration);\n\n try {\n //Try to set it\n priv.pc.setConfiguration(sanitized);\n } catch (error) {\n //Launch InvalidModificationError\n var operationError = new Error(error);\n operationError.name = \"InvalidModificationError\";\n operationError.code = 13;\n throw operationError;\n }\n //Store new configuration\n priv.configuration = sanitized;\n };\n\n RTCPeerConnection.getDefaultIceServers = function () {\n return [];\n };\n\n RTCPeerConnection.prototype.createOffer = function (options) {\n var priv = this.priv;\n\n return new Promise(function (resolve, reject) {\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n priv.pc.createOffer(function (type, sdp) {\n priv.lastOffer = sdp;\n resolve({\n type: type,\n sdp: sdp\n });\n }, function () {\n reject(new InvalidStateError());\n }, options);\n });\n };\n\n RTCPeerConnection.prototype.createAnswer = function (options) {\n var self = this;\n var priv = this.priv;\n\n return new Promise(function (resolve, reject) {\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n if (self.remoteDescription === null) throw new InvalidStateError();\n priv.pc.createAnswer(function (type, sdp) {\n priv.lastAnswer = sdp;\n resolve({\n type: type,\n sdp: sdp\n });\n }, function () {\n reject(new InvalidStateError());\n }, options);\n });\n };\n\n RTCPeerConnection.prototype.setLocalDescription = function (description) {\n var priv = this.priv;\n\n //If description.sdp is the empty string and description.type is \"answer\" or \"pranswer\", set description.sdp to lastAnswer.\n if (!description.sdp && (\"answer\" === description.type || \"pranser\" === description.type)) description.sdp = priv.lastAnswer;\n\n //If description.sdp is the empty string and description.type is \"offer\", set description.sdp to lastOffer.\n if (!description.sdp && \"offer\" === description.type) description.sdp = priv.lastOffer;\n\n return new Promise(function (resolve, reject) {\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n priv.pc.setLocalDescription(resolve, function () {\n reject(new InvalidStateError());\n }, description);\n });\n };\n\n RTCPeerConnection.prototype.setRemoteDescription = function (description) {\n var priv = this.priv;\n\n return new Promise(function (resolve, reject) {\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n priv.pc.setRemoteDescription(resolve, function () {\n reject(new InvalidStateError());\n }, description);\n });\n };\n\n RTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n var self = this;\n var priv = this.priv;\n //1. Let candidate be the method's argument.\n //2. Let connection be the ``[`RTCPeerConnection`](#dom-rtcpeerconnection)`` object on which the method was invoked.\n //3. If both sdpMid and sdpMLineIndex are `null`, return a promise [rejected](#dfn-rejected) with a newly [created](https://www.w3.org/TR/2016/REC-WebIDL-1-20161215/#dfn-create-exception) `TypeError`.\n if (!candidate || typeof candidate.sdpMid !== \"string\" && typeof candidate.sdpMLineIndex !== \"number\") return Promise.reject(new TypeError());\n\n //4. Return the result of [enqueuing](#enqueue-an-operation) the following steps to connection's operation queue:\n return new Promise(function (resolve, reject) {\n //1. If ``[`remoteDescription`](#dom-rtcpeerconnection-remotedescription)`` is `null` return a promise [rejected](#dfn-rejected) with a newly [created](https://www.w3.org/TR/2016/REC-WebIDL-1-20161215/#dfn-create-exception) `InvalidStateError`.\n if (self.remoteDescription === null) throw new InvalidStateError();\n\n /*\n 2. Let p be a new promise.\n 3. If candidate.sdpMid is not null, run the following steps:\n 1. If candidate.sdpMid is not equal to the mid of any media description in ``[`remoteDescription`](#dom-rtcpeerconnection-remotedescription)`` , [reject](#dfn-rejected) p with a newly [created](https://www.w3.org/TR/2016/REC-WebIDL-1-20161215/#dfn-create-exception) `OperationError` and abort these steps.\n 4. Else, if candidate.sdpMLineIndex is not null, run the following steps:\n 1. If candidate.sdpMLineIndex is equal to or larger than the number of media descriptions in ``[`remoteDescription`](#dom-rtcpeerconnection-remotedescription)`` , [reject](#dfn-rejected) p with a newly [created](https://www.w3.org/TR/2016/REC-WebIDL-1-20161215/#dfn-create-exception) `OperationError` and abort these steps.\n 5. If `candidate.usernameFragment` is neither `undefined` nor `null`, and is not equal to any username fragment present in the corresponding [media description](#dfn-media-description) of an applied remote description, [reject](#dfn-rejected) p with a newly [created](https://www.w3.org/TR/2016/REC-WebIDL-1-20161215/#dfn-create-exception) `OperationError` and abort these steps.\n 6. In parallel, add the ICE candidate candidate as described in \\[[JSEP](#bib-JSEP)\\] ([section 4.1.17.](https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-20#section-4.1.17)). Use `candidate.usernameFragment` to identify the ICE [generation](#dfn-generation); if `usernameFragment` is null, process the candidate for the most recent ICE [generation](#dfn-generation). If `candidate.candidate` is an empty string, process candidate as an end-of-candidates indication for the corresponding [media description](#dfn-media-description) and ICE candidate [generation](#dfn-generation).\n 1. If candidate could not be successfully added the user agent _MUST_ queue a task that runs the following steps:\n 1. If connection's [\\[\\[IsClosed\\]\\]](#dfn-x%5B%5Bisclosed%5D%5D) slot is `true`, then abort these steps.\n 2. [Reject](#dfn-rejected) p with a `DOMException` object whose `name` attribute has the value `OperationError` and abort these steps.\n 2. If candidate is applied successfully, the user agent _MUST_ queue a task that runs the following steps:\n 1. If connection's [\\[\\[IsClosed\\]\\]](#dfn-x%5B%5Bisclosed%5D%5D) slot is `true`, then abort these steps.\n 2. If ``connection.[`pendingRemoteDescription`](#dom-rtcpeerconnection-pendingremotedescription)`` is non-null, and represents the ICE [generation](#dfn-generation) for which candidate was processed, add candidate to ``connection.[`pendingRemoteDescription`](#dom-rtcpeerconnection-pendingremotedescription)`` .\n 3. If ``connection.[`currentRemoteDescription`](#dom-rtcpeerconnection-currentremotedescription)`` is non-null, and represents the ICE [generation](#dfn-generation) for which candidate was processed, add candidate to ``connection.[`currentRemoteDescription`](#dom-rtcpeerconnection-currentremotedescription)`` .\n 4. [Resolve](#dfn-resolved) p with `undefined`.\n 7. Return p.\n */\n try {\n //Add ICE candidate nativelly\n priv.pc.addIceCandidate(resolve, function () {\n reject(new InvalidStateError());\n }, candidate);\n } catch (error) {\n //Launch operation error\n var operationError = new Error(error);\n operationError.name = \"OperationError\";\n operationError.code = 0;\n throw operationError;\n }\n });\n };\n\n RTCPeerConnection.prototype.close = function () {\n\n var priv = this.priv;\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n //Close it\n priv.pc.close();\n //We are closed now, we can wait until callback\n priv.isClosed = true;\n };\n /*\n partial interface RTCPeerConnection {\n sequence<RTCRtpSender> getSenders();\n sequence<RTCRtpReceiver> getReceivers();\n sequence<RTCRtpTransceiver> getTransceivers();\n RTCRtpSender addTrack(MediaStreamTrack track, MediaStream... streams);\n void removeTrack(RTCRtpSender sender);\n RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind, optional RTCRtpTransceiverInit init);\n attribute EventHandler ontrack;\n };\n */\n RTCPeerConnection.prototype.getSenders = function () {\n throw \"Not implemented\";\n };\n\n RTCPeerConnection.prototype.getReceivers = function () {\n throw \"Not implemented\";\n };\n\n RTCPeerConnection.prototype.getTransceivers = function () {\n throw \"Not implemented\";\n };\n\n RTCPeerConnection.prototype.addTrack = function () {\n var priv = this.priv;\n\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n\n //Parse arguments\n var track = arguments[0];\n var streams = Array.prototype.slice.call(arguments, 1);\n\n //Ensure that we are attaching to at most 1, as it is not supported in libwebrtc\n if (streams.length > 1) throw new Error(\"Adding track to more than one stream is not currently supported\");\n\n //Get stream label, as it is the only param needed by libwebrtc\n var label = streams.length ? streams[0].id : \"\";\n\n //Add native track to native object it only needs the stream label not the stream\n var sender = priv.pc.addTrack(track.priv.track, label);\n\n //Check result\n if (!sender) return null;\n\n //Create sender\n var rtpSender = new RTCRtpSender(sender);\n\n //Get native sender id\n var senderId = rtpSender.priv.id;\n\n //Add to senders\n priv.senders[senderId] = rtpSender;\n\n return rtpSender;\n };\n\n RTCPeerConnection.prototype.addTransceiver = function (trackOrKind, init) {\n //TODO: Implement!\n //Not really implemented just for passing tests\n var sender = new RTCRtpSender(null, null);\n var track = new MediaStreamTrack(null);\n var receiver = new RTCRtpReceiver(track);\n //Return dummy object for now\n return new RTCRtpTransceiver(sender, receiver);\n };\n\n /*\n * Legacy stream apis\n */\n RTCPeerConnection.prototype.addStream = function (stream) {\n var tracks = stream.getTracks();\n for (var i = 0; i < tracks.length; ++i) {\n this.addTrack(tracks[i], stream);\n }\n };\n\n RTCPeerConnection.prototype.removeTrack = function (rtpSender) {\n var priv = this.priv;\n\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n\n //Check if sender is invalid\n if (!rtpSender || !rtpSender.priv.sender || !rtpSender.priv.track) throw new InvalidStateError();\n\n //Get native sender id\n var senderId = rtpSender.priv.id;\n\n //Check if senders is from this pc\n if (!priv.senders.hasOwnProperty(senderId)) throw new InvalidStateError();\n\n //Pass the nateive object\n priv.pc.removeTrack(rtpSender.priv.sender);\n\n //Set sender track to null\n rtpSender.priv.track = null;\n\n //Remove from senders\n delete priv.senders[senderId];\n };\n\n defineEventAttribute(RTCPeerConnection.prototype, \"track\");\n\n /*\n partial interface RTCPeerConnection {\n readonly attribute RTCSctpTransport? sctp;\n RTCDataChannel createDataChannel(USVString label,\n optional RTCDataChannelInit dataChannelDict);\n attribute EventHandler ondatachannel;\n };\n */\n RTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n var priv = this.priv;\n\n if (!priv.pc || priv.isClosed) throw new InvalidStateError();\n\n //Check if we have a string label (can be empty)\n if (typeof label !== \"string\") return new TypeError();\n\n //Create native datachannel\n var dataChannel = priv.pc.createDataChannel(label, dataChannelDict);\n\n //Check\n if (!dataChannel) return null;\n\n //Return wrapper\n return new DataChannel(dataChannel);\n };\n\n defineEventAttribute(RTCPeerConnection.prototype, \"datachannel\");\n\n Object.defineProperty(RTCPeerConnection, 'RTCPeerConnection', { enumerable: false, configurable: true, writable: false, value: \"RTCPeerConnection\" });\n Object.defineProperty(RTCPeerConnection, 'prototype', { writable: false });\n module.exports = RTCPeerConnection;\n\n },{\"./EventTarget.js\":4,\"./InvalidStateError.js\":5,\"./MediaStreamTrack.js\":8,\"./RTCDataChannel.js\":9,\"./RTCIceCandidate.js\":10,\"./RTCRtpReceiver.js\":12,\"./RTCRtpSender.js\":13,\"./RTCRtpTransceiver.js\":14,\"./RTCSessionDescription.js\":15,\"./WebRTCProxy.js\":17}],12:[function(require,module,exports){\n 'use strict';\n\n /*\n [Exposed=Window]\n interface RTCRtpReceiver {\n readonly attribute MediaStreamTrack track;\n readonly attribute RTCDtlsTransport? transport;\n readonly attribute RTCDtlsTransport? rtcpTransport;\n // Feature at risk\n static RTCRtpCapabilities getCapabilities(DOMString kind);\n RTCRtpParameters getParameters();\n sequence<RTCRtpContributingSource> getContributingSources();\n sequence<RTCRtpSynchronizationSource> getSynchronizationSources();\n Promise<RTCStatsReport> getStats();\n };\n\n */\n\n var RTCRtpReceiver = function RTCRtpReceiver(track) {\n var priv = {\n track: track\n };\n\n //Read only\n Object.defineProperty(this, 'track', {\n enumerable: true, configurable: false, get: function get() {\n return priv.track;\n }\n });\n //Not implemented\n Object.defineProperty(this, 'transport', {\n enumerable: true, configurable: false, get: function get() {\n return null;\n }\n });\n Object.defineProperty(this, 'rtcpTransport', {\n enumerable: true, configurable: false, get: function get() {\n return null;\n }\n });\n };\n\n RTCRtpReceiver.getCapabilities = function (kind) {\n throw 'Not implemented yet';\n };\n\n RTCRtpReceiver.getParameters = function () {\n throw 'Not implemented yet';\n };\n\n RTCRtpReceiver.getContributingSources = function () {\n throw 'Not implemented yet';\n };\n RTCRtpReceiver.getSynchronizationSources = function () {\n throw 'Not implemented yet';\n };\n RTCRtpReceiver.getStats = function () {\n return Promise.reject(new Error('Not implemented yet'));\n };\n\n Object.defineProperty(RTCRtpReceiver, 'name', {\n enumerable: false,\n configurable: true,\n writable: false,\n value: 'RTCRtpReceiver'\n });\n Object.defineProperty(RTCRtpReceiver, 'prototype', { writable: false });\n module.exports = RTCRtpReceiver;\n\n },{}],13:[function(require,module,exports){\n 'use strict';\n\n /*\n [Exposed=Window]\n interface RTCRtpSender {\n readonly attribute MediaStreamTrack? track;\n readonly attribute RTCDtlsTransport? transport;\n readonly attribute RTCDtlsTransport? rtcpTransport;\n // Feature at risk\n static RTCRtpCapabilities getCapabilities(DOMString kind);\n Promise<void> setParameters(optional RTCRtpParameters parameters);\n RTCRtpParameters getParameters();\n Promise<void> replaceTrack(MediaStreamTrack? withTrack);\n Promise<RTCStatsReport> getStats();\n };\n */\n var RTCRtpSender = function RTCRtpSender(sender, track) {\n //Add to map\n this.priv = {\n sender: sender,\n track: track\n };\n\n Object.defineProperty(this, 'track', { enumerable: true, configurable: false, get: function get() {\n return priv.track;\n } });\n Object.defineProperty(this, 'transport', { enumerable: true, configurable: false, get: function get() {\n new Error(\"Not supported yet\");\n } });\n Object.defineProperty(this, 'rtcpTransport', { enumerable: true, configurable: false, get: function get() {\n new Error(\"Not supported yet\");\n } });\n\n return this;\n };\n\n RTCRtpSender.prototype.getCapabilities = function () {\n throw new Error(\"Not supported yet\");\n };\n\n RTCRtpSender.prototype.setParameters = function () {\n throw new Error(\"Not supported yet\");\n };\n\n RTCRtpSender.prototype.getParameters = function () {\n throw new Error(\"Not supported yet\");\n };\n\n RTCRtpSender.prototype.replaceTrack = function () {\n throw new Error(\"Not supported yet\");\n };\n\n RTCRtpSender.prototype.getStats = function () {\n throw new Error(\"Not supported yet\");\n };\n\n Object.defineProperty(RTCRtpSender, 'name', { enumerable: false, configurable: true, writable: false, value: \"RTCRtpSender\" });\n Object.defineProperty(RTCRtpSender, 'prototype', { writable: false });\n module.exports = RTCRtpSender;\n\n },{}],14:[function(require,module,exports){\n \"use strict\";\n\n /*\n [Exposed=Window]\n interface RTCRtpTransceiver {\n readonly attribute DOMString? mid;\n [SameObject]\n readonly attribute RTCRtpSender sender;\n [SameObject]\n readonly attribute RTCRtpReceiver receiver;\n readonly attribute boolean stopped;\n attribute RTCRtpTransceiverDirection direction;\n readonly attribute RTCRtpTransceiverDirection? currentDirection;\n void stop();\n void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);\n };\n\n */\n var RTPRtcTransceiver = function RTPRtcTransceiver(sender, receiver) {\n\n //Private attributes\n var priv = this.priv = {\n mid: null,\n sender: sender,\n receiver: receiver,\n stopped: false,\n direction: \"sendrecv\",\n currentDirection: \"sendrecv\"\n };\n\n //Read only\n Object.defineProperty(this, \"mid\", { enumerable: true, configurable: false, get: function get() {\n return priv.mid;\n } });\n Object.defineProperty(this, \"sender\", { enumerable: true, configurable: false, get: function get() {\n return priv.sender;\n } });\n Object.defineProperty(this, \"receiver\", { enumerable: true, configurable: false, get: function get() {\n return priv.receiver;\n } });\n Object.defineProperty(this, \"stopped\", { enumerable: true, configurable: false, get: function get() {\n return priv.stopped;\n } });\n Object.defineProperty(this, \"currentDirection\", { enumerable: true, configurable: false, get: function get() {\n return priv.currentDirection;\n } });\n\n //REad and write\n Object.defineProperty(this, \"currentDirection\", { enumerable: true, configurable: false,\n get: function get() {\n return priv.direction;\n },\n set: function set(direction) {\n priv.direction = direction;\n priv.currentDirection = direction;\n return direction;\n }\n });\n };\n\n RTPRtcTransceiver.prototype.stop = function () {\n throw \"Not implemented\";\n };\n\n Object.defineProperty(RTPRtcTransceiver, 'name', { enumerable: false, configurable: true, writable: false, value: \"RTPRtcTransceiver\" });\n Object.defineProperty(RTPRtcTransceiver, 'prototype', { writable: false });\n module.exports = RTPRtcTransceiver;\n\n },{}],15:[function(require,module,exports){\n \"use strict\";\n\n /*\n [Constructor(RTCSessionDescriptionInit descriptionInitDict),\n Exposed=Window]\n interface RTCSessionDescription {\n readonly attribute RTCSdpType type;\n readonly attribute DOMString sdp;\n [Default] object toJSON();\n };\n\n dictionary RTCSessionDescriptionInit {\n required RTCSdpType type;\n DOMString sdp = \"\";\n };\n\n */\n\n function RTCSessionDescription(descriptionInitDict) {\n //Get values from dictionary\n // we support custom constructor to pass array instead of object as \"dictionary\" from activexobject\n var type = Array.isArray(descriptionInitDict) ? descriptionInitDict[0] : descriptionInitDict.type;\n var sdp = Array.isArray(descriptionInitDict) ? descriptionInitDict[1] : descriptionInitDict.sdp;\n\n //Direct attributes from init\n Object.defineProperty(this, \"type\", { enumerable: true, configurable: false, get: function get() {\n return type;\n } });\n Object.defineProperty(this, \"sdp\", { enumerable: true, configurable: false, get: function get() {\n return sdp;\n } });\n\n return this;\n };\n\n RTCSessionDescription.prototype.toJSON = function () {\n return {\n type: this.type,\n sdp: this.sdp\n };\n };\n\n Object.defineProperty(RTCSessionDescription, 'name', { enumerable: false, configurable: true, writable: false, value: \"RTCSessionDescription\" });\n Object.defineProperty(RTCSessionDescription, 'prototype', { writable: false });\n module.exports = RTCSessionDescription;\n\n },{}],16:[function(require,module,exports){\n \"use strict\";\n\n// This obvserver checks when a video element has been set a srcObj\n var videoObserver = new MutationObserver(function (mutations) {\n for (var i = 0, numMutations = mutations.length; i < numMutations; i++) {\n var mutation = mutations[i];\n // HTML video element.\n if (mutation.target.videoRenderer) mutation.target.videoRenderer.mutate(mutation);\n }\n });\n\n var CLASSID = \"CLSID:B8E874D9-72BA-4E54-B59B-3513081DF516\";\n\n function VideoRenderer(video) {\n var srcObject;\n var self = this;\n //Store video element\n this.video = video;\n\n //Create a new video renderer object\n var object = this.object = document.createElement(\"object\");\n //Set csid\n this.object.classid = CLASSID;\n //Apped it hidden\n video.appendChild(this.object);\n\n // Add .src observer to the video element.\n videoObserver.observe(video, {\n // Set to true if additions and removals of the target node's child elements (including text\n // nodes) are to be observed.\n childList: false,\n // Set to true if mutations to target's attributes are to be observed.\n attributes: true,\n // Set to true if mutations to target's data are to be observed.\n characterData: false,\n // Set to true if mutations to not just target, but also target's descendants are to be observed.\n subtree: false,\n // Set to true if attributes is set to true and target's attribute value before the mutation\n // needs to be recorded.\n attributeOldValue: true,\n // Set to true if characterData is set to true and target's data before the mutation needs to be\n // recorded.\n characterDataOldValue: false\n // Set to an array of attribute local names (without namespace) if not all attribute mutations\n // need to be observed.\n //attributeFilter: [ 'srcObject']\n });\n // Define srcObject properties\n Object.defineProperty(video, 'srcObject', {\n enumerable: true,\n configurable: true,\n get: function get() {\n return srcObject;\n },\n set: function set(stream) {\n //We need to fire metadata event when we get first resize\n var needsmetadata = true;\n //Attach resize event\n object.onresize = function () {\n //Create event\n var event = document.createEvent(\"Event\");\n //Init metadata or resize event\n event.initEvent(needsmetadata ? \"loadedmetadata\" : \"resize\", false, false);\n //Dispatch it\n video.dispatchEvent(event);\n //No more medatada event\n needsmetadata = false;\n };\n //Get stream track video stream\n var videoTracks = stream.getVideoTracks();\n //If found any\n if (videoTracks.length)\n //Set native video track on video renderer object\n object.setTrack(videoTracks[0].priv.track);\n //Store it\n srcObject = stream;\n //Show renderer\n self.show();\n }\n });\n\n // Override properties\n Object.defineProperty(video, 'videoWidth', { enumerable: true, configurable: true, get: function get() {\n return object.videoWidth;\n } });\n Object.defineProperty(video, 'videoHeight', { enumerable: true, configurable: true, get: function get() {\n return object.videoHeight;\n } });\n //TODO: clone attributes\n }\n\n VideoRenderer.prototype.mutate = function (mutation) {\n //Get mutation type\n //TODO: clone attributes\n };\n\n VideoRenderer.prototype.close = function () {\n //Hide video object\n this.hide();\n //Unobserver video element\n videoObserver.disconnect();\n //Remove srcObject property\n Object.defineProperty(this.video, 'srcObject', {});\n Object.defineProperty(this.video, 'videoWidth', {});\n Object.defineProperty(this.video, 'videoHeigth', {});\n //delete object, IE only method\n this.object.removeNode(false);\n delete this.object;\n };\n\n VideoRenderer.handle = function (video) {\n if (!video.videoRenderer) video.videoRenderer = new VideoRenderer(video);\n };\n\n VideoRenderer.unhandle = function (video) {\n if (video.videoRenderer) {\n video.videoRenderer.close();\n delete video.videoRenderer;\n }\n };\n\n VideoRenderer.prototype.show = function () {\n //Check object is not shown\n if (this.video !== this.object.parentElement)\n //Nothing\n return;\n //Swap them\n this.video.parentNode.replaceChild(this.object, this.video);\n this.object.appendChild(this.video);\n };\n\n VideoRenderer.prototype.hide = function () {\n //Check object is not shown\n if (this.object !== this.video.parentElement)\n //Nothing\n return;\n //Swap them\n this.object.parentNode.replaceChild(this.video, this.object);\n this.video.appendChild(this.object);\n };\n\n module.exports = VideoRenderer;\n\n },{}],17:[function(require,module,exports){\n 'use strict';\n\n var browser = require('detect-browser').detect();\n\n var WebRTCProxy = null;\n\n//If it is internet explorer\n if (browser.name === 'ie') {\n // Create singleton\n try {\n WebRTCProxy = new ActiveXObject('Cosmo.WebRTCProxy.1');\n } catch (e) {\n console.error('TechSee WebRTC Plugin for IE is not installed');\n }\n }\n\n module.exports = WebRTCProxy;\n\n },{\"detect-browser\":18}],18:[function(require,module,exports){\n (function (process){\n /**\n # detect-browser\n\n This is a package that attempts to detect a browser vendor and version (in\n a semver compatible format) using a navigator useragent in a browser or\n `process.version` in node.\n\n ## NOTE: Version 2.x release\n\n Release 2.0 introduces a breaking API change (hence the major release)\n which requires invocation of a `detect` function rather than just inclusion of\n the module. PR [#46](https://github.com/DamonOehlman/detect-browser/pull/46)\n provides more context as to why this change has been made.\n\n ## Example Usage\n\n <<< examples/simple.js\n\n Or you can use a switch statement:\n\n <<< examples/switch.js\n\n ## Adding additional browser support\n\n The current list of browsers that can be detected by `detect-browser` is\n not exhaustive. If you have a browser that you would like to add support for\n then please submit a pull request with the implementation.\n\n Creating an acceptable implementation requires two things:\n\n 1. A test demonstrating that the regular expression you have defined identifies\n your new browser correctly. Examples of this can be found in the\n `test/logic.js` file.\n\n 2. Write the actual regex to the `lib/detectBrowser.js` file. In most cases adding\n the regex to the list of existing regexes will be suitable (if usage of `detect-brower`\n returns `undefined` for instance), but in some cases you might have to add it before\n an existing regex. This would be true for a case where you have a browser that\n is a specialised variant of an existing browser but is identified as the\n non-specialised case.\n\n When writing the regular expression remember that you would write it containing a\n single [capturing group](https://regexone.com/lesson/capturing_groups) which\n captures the version number of the browser.\n\n **/\n\n function detect() {\n var nodeVersion = getNodeVersion();\n if (nodeVersion) {\n return nodeVersion;\n } else if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n\n return null;\n }\n\n function detectOS(userAgentString) {\n var rules = getOperatingSystemRules();\n var detected = rules.filter(function (os) {\n return os.rule && os.rule.test(userAgentString);\n })[0];\n\n return detected ? detected.name : null;\n }\n\n function getNodeVersion() {\n var isNode = typeof navigator === 'undefined' && typeof process !== 'undefined';\n return isNode ? {\n name: 'node',\n version: process.version.slice(1),\n os: require('os').type().toLowerCase()\n } : null;\n }\n\n function parseUserAgent(userAgentString) {\n var browsers = getBrowserRules();\n if (!userAgentString) {\n return null;\n }\n\n var detected = browsers.map(function(browser) {\n var match = browser.rule.exec(userAgentString);\n var version = match && match[1].split(/[._]/).slice(0,3);\n\n if (version && version.length < 3) {\n version = version.concat(version.length == 1 ? [0, 0] : [0]);\n }\n\n return match && {\n name: browser.name,\n version: version.join('.')\n };\n }).filter(Boolean)[0] || null;\n\n if (detected) {\n detected.os = detectOS(userAgentString);\n }\n\n return detected;\n }\n\n function getBrowserRules() {\n return buildRules([\n [ 'edge', /Edge\\/([0-9\\._]+)/ ],\n [ 'yandexbrowser', /YaBrowser\\/([0-9\\._]+)/ ],\n [ 'vivaldi', /Vivaldi\\/([0-9\\.]+)/ ],\n [ 'kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/ ],\n [ 'chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/ ],\n [ 'phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/ ],\n [ 'crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/ ],\n [ 'firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/ ],\n [ 'fxios', /FxiOS\\/([0-9\\.]+)/ ],\n [ 'opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/ ],\n [ 'opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/ ],\n [ 'ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/ ],\n [ 'ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/ ],\n [ 'ie', /MSIE\\s(7\\.0)/ ],\n [ 'bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/ ],\n [ 'android', /Android\\s([0-9\\.]+)/ ],\n [ 'ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/ ],\n [ 'safari', /Version\\/([0-9\\._]+).*Safari/ ]\n ]);\n }\n\n function getOperatingSystemRules() {\n return buildRules([\n [ 'iOS', /iP(hone|od|ad)/ ],\n [ 'Android OS', /Android/ ],\n [ 'BlackBerry OS', /BlackBerry|BB10/ ],\n [ 'Windows Mobile', /IEMobile/ ],\n [ 'Amazon OS', /Kindle/ ],\n [ 'Windows 3.11', /Win16/ ],\n [ 'Windows 95', /(Windows 95)|(Win95)|(Windows_95)/ ],\n [ 'Windows 98', /(Windows 98)|(Win98)/ ],\n [ 'Windows 2000', /(Windows NT 5.0)|(Windows 2000)/ ],\n [ 'Windows XP', /(Windows NT 5.1)|(Windows XP)/ ],\n [ 'Windows Server 2003', /(Windows NT 5.2)/ ],\n [ 'Windows Vista', /(Windows NT 6.0)/ ],\n [ 'Windows 7', /(Windows NT 6.1)/ ],\n [ 'Windows 8', /(Windows NT 6.2)/ ],\n [ 'Windows 8.1', /(Windows NT 6.3)/ ],\n [ 'Windows 10', /(Windows NT 10.0)/ ],\n [ 'Windows ME', /Windows ME/ ],\n [ 'Open BSD', /OpenBSD/ ],\n [ 'Sun OS', /SunOS/ ],\n [ 'Linux', /(Linux)|(X11)/ ],\n [ 'Mac OS', /(Mac_PowerPC)|(Macintosh)/ ],\n [ 'QNX', /QNX/ ],\n [ 'BeOS', /BeOS/ ],\n [ 'OS/2', /OS\\/2/ ],\n [ 'Search Bot', /(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves\\/Teoma)|(ia_archiver)/ ]\n ]);\n }\n\n function buildRules(ruleTuples) {\n return ruleTuples.map(function(tuple) {\n return {\n name: tuple[0],\n rule: tuple[1]\n };\n });\n }\n\n module.exports = {\n detect: detect,\n detectOS: detectOS,\n getNodeVersion: getNodeVersion,\n parseUserAgent: parseUserAgent\n };\n\n }).call(this,require('_process'))\n },{\"_process\":2,\"os\":1}]},{},[3])(3)\n});\n"]}
|