@techsee/techsee-media-service 17.4.1 → 17.4.2
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/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MediaUtils/index.js.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -1
- package/lib/MultiParty/MediaTracer.js.map +1 -1
- package/lib/MultiParty/MultiPartyService.js.map +1 -1
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -1
- package/lib/MultiParty/index.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +2 -2
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -1
- package/lib/MultiParty/opentok/trace.js.map +1 -1
- package/lib/MultiParty/types.d.ts +1 -0
- package/lib/MultiParty/types.d.ts.map +1 -1
- package/lib/MultiParty/types.js.map +1 -1
- package/lib/MultiParty/utils.js.map +1 -1
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/qos/raw-qos.js +1 -1
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +1 -1
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaSession/SessionTurn.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__createBinding","o","m","k","k2","undefined","defineProperty","enumerable","get","__setModuleDefault","v","value","__importStar","mod","__esModule","result","__importDefault","exports","TurnWebRtcSession","io","require","once_1","MediaConstants_1","TurnConstants_1","MediaTracer_1","MediaSessionBase_1","trace","getMediaTracer","_super","sessionParams","sessionHandlers","streamFactory","_this","_sessionHandlers","_socket","_pendingPeersIce","iceServers","credentials","ice","map","item","urls","url","username","login","credential","password","_configuration","iceTransportPolicy","_joinResponseHandler","bind","_iceCandidateReceivedHandler","_sendOfferHandler","_sdpOfferHandler","_initiatorPeerReconnectHandler","_peerDisconnectedHandler","_onSocketDisconnectedHandler","_sessionParams","sessionId","configurable","connect","connectOnly","info","_connectSocket","then","emit","SOCKET_EVENTS","OUTGOING","JOIN_ROOM","clientType","error","disconnect","MediaSessionDisconnectReason","ForcedByConsumer","_disconnectInternal","Promise","resolve","reject","socket","forceNew","reconnectionDelay","SOCKET_RECONNECTION_DELAY","reconnectionDelayMax","SOCKET_RECONNECTION_DELAY_MAX","reconnectionAttempts","SOCKET_RECONNECTION_ATTEMPTS","path","SOCKET_PATH","done","err","once","on","INCOMING","ERROR","SEND_OFFER","JOIN_RESPONSE","PEER_DISCONNECTED","SDP_OFFER","PUBLISHER_RECONNECT","ICE_CANDIDATE","reason","SignalingChannelDisconnect","replaceStreamTracks","mediaStream","promises","_peerConnections","forEach","peerConnection","getTracks","track","sender","getSenders","find","s","kind","push","replaceTrack","id","all","window","mediaStreamAlreadyReplaced","sendOfferEventData","uid","peerId","_createPeerConnection","SessionClientType","GUEST","SessionClientRole","AGENT","offerParams","offerToReceiveAudio","offerToReceiveVideo","_sessionStreamsManager","getMediaStreamForRole","addTrack","createOffer","offerDesc","sdpOffer","sdp","setLocalDescription","_setPeerConnectionMonitor","latestUserMediaStream","e","warn","joinResponseData","sdpAnswer","_withPeerConnection","answer","RTCSessionDescription","type","setRemoteDescription","_processQueuedIceCandidates","peerDisconnectedEvent","_destroyPeerConnection","sdpOfferEvent","INITIATOR","USER","remoteDesc","createAnswer","SDP_ANSWER","InitiatorPeerReconnected","onMediaStreamDestroyed","clientRole","PublishedStreamDestroyed","onMediaStreamRenewed","getRemoteTrackStats","mediaTrack","peerConnectionOfTrack","getPeerConnectionByMediaTrack","getStats","Error","sessionDisconnect","setTimeout","onDisconnectedHandler","peerConnectionType","peerConnectionRole","RTCPeerConnection","peerType","remoteMediaTracks","peerRole","connectionTimoutPrt","onconnectionstatechange","oniceconnectionstatechange","state","currentTarget","iceConnectionState","cnState","clearTimeout","indexOf","_iceStateDisconnected","registerPeersRemoteTracks","onicecandidate","event","candidate","ontrack","trackEvent","addRemoteTrackToPeer","connectionState","set","_handlePeerConnectionTimeout","peerConnectivityTimeoutSeconds","PeerConnectionStateChangeTimeout","onicegatheringstatechange","unregisterPeersRemoteMediaTracks","close","callback","iceCandidateData","remoteDescription","_queueIceCandidate","_addIceCandidateToPeer","iceCandidate","addIceCandidate","pendingIces","pendingIce","PeerConnectionInterrupted","off","MediaSessionBase"],"mappings":"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","file":"SessionTurn.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TurnWebRtcSession = void 0;\nvar io = __importStar(require(\"socket.io-client\"));\nvar once_1 = __importDefault(require(\"lodash/once\"));\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar TurnConstants_1 = require(\"./TurnConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar MediaSessionBase_1 = require(\"./MediaSessionBase\");\nvar trace = MediaTracer_1.getMediaTracer('TurnWebRtcSession');\n//Currently this version supports subscribing only. Publishing will be implemented as needed.\nvar TurnWebRtcSession = /** @class */ (function (_super) {\n __extends(TurnWebRtcSession, _super);\n function TurnWebRtcSession(sessionParams, sessionHandlers, streamFactory) {\n var _this = _super.call(this, sessionParams, streamFactory) || this;\n _this._sessionHandlers = sessionHandlers;\n _this._socket = null;\n _this._pendingPeersIce = {};\n var iceServers = sessionParams.credentials.ice.map(function (item) { return ({\n urls: item.url,\n username: item.login,\n credential: item.password\n }); });\n _this._configuration = {\n iceServers: iceServers,\n iceTransportPolicy: 'relay'\n };\n _this._joinResponseHandler = _this._joinResponseHandler.bind(_this);\n _this._iceCandidateReceivedHandler = _this._iceCandidateReceivedHandler.bind(_this);\n _this._sendOfferHandler = _this._sendOfferHandler.bind(_this);\n _this._sdpOfferHandler = _this._sdpOfferHandler.bind(_this);\n _this._initiatorPeerReconnectHandler = _this._initiatorPeerReconnectHandler.bind(_this);\n _this._peerDisconnectedHandler = _this._peerDisconnectedHandler.bind(_this);\n _this._onSocketDisconnectedHandler = _this._onSocketDisconnectedHandler.bind(_this);\n return _this;\n }\n Object.defineProperty(TurnWebRtcSession.prototype, \"id\", {\n get: function () {\n return this._sessionParams.sessionId;\n },\n enumerable: false,\n configurable: true\n });\n //#region Socket Connectivity\n TurnWebRtcSession.prototype.connect = function (connectOnly) {\n var _this = this;\n if (connectOnly === void 0) { connectOnly = false; }\n trace.info('Connect to session');\n return this._connectSocket(this._sessionParams.credentials.url, connectOnly)\n .then(function () {\n trace.info('Joining SessionId: ' + _this._sessionParams.sessionId);\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.JOIN_ROOM, {\n clientType: _this._sessionParams.clientType,\n sessionId: _this._sessionParams.sessionId\n });\n })\n .catch(function (error) {\n throw error;\n });\n };\n TurnWebRtcSession.prototype.disconnect = function () {\n trace.info('disconnect - call disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.ForcedByConsumer);\n return this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.ForcedByConsumer);\n };\n TurnWebRtcSession.prototype._connectSocket = function (url, connectOnly) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var socket = (_this._socket = io.connect(url, {\n forceNew: true,\n reconnectionDelay: TurnConstants_1.SOCKET_RECONNECTION_DELAY,\n reconnectionDelayMax: TurnConstants_1.SOCKET_RECONNECTION_DELAY_MAX,\n reconnectionAttempts: TurnConstants_1.SOCKET_RECONNECTION_ATTEMPTS,\n path: TurnConstants_1.SOCKET_PATH\n }));\n var done = once_1.default(function (err) {\n err ? reject(err) : resolve();\n });\n socket.once('connect', function () { return done(); });\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.ERROR, done);\n socket.on('connect_error', done);\n socket.on('connect_timeout', done);\n socket.on('disconnect', _this._onSocketDisconnectedHandler);\n if (!connectOnly) {\n trace.info('Subscribing socket events');\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.SEND_OFFER, _this._sendOfferHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.JOIN_RESPONSE, _this._joinResponseHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.PEER_DISCONNECTED, _this._peerDisconnectedHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.SDP_OFFER, _this._sdpOfferHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.PUBLISHER_RECONNECT, _this._initiatorPeerReconnectHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.ICE_CANDIDATE, _this._iceCandidateReceivedHandler);\n }\n });\n };\n TurnWebRtcSession.prototype._onSocketDisconnectedHandler = function (reason) {\n if (this._socket) {\n // The initial example of differentiating between \"forced\" disconnect and \"network\" disconnect is taken from:\n // https://socket.io/docs/client-api/#Event-%E2%80%98disconnect%E2%80%99\n if (reason !== 'io server disconnect' && reason !== 'io client disconnect') {\n trace.info('_onSocketDisconnectedHandler disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.SignalingChannelDisconnect);\n // the disconnection was initiated by the server or by client, you need to call (connect) manually\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.SignalingChannelDisconnect).catch(function () { return undefined; });\n }\n }\n };\n TurnWebRtcSession.prototype.replaceStreamTracks = function (mediaStream) {\n var promises = [];\n if (mediaStream && this._peerConnections) {\n trace.info('replaceStreamTracks - Replace local tracks to peer connection');\n this._peerConnections.forEach(function (peerConnection) {\n mediaStream.getTracks().forEach(function (track) {\n var sender = peerConnection.getSenders().find(function (s) { return s.track.kind === track.kind; });\n if (sender) {\n promises.push(sender\n .replaceTrack(track)\n .then(function () {\n return trace.info(\"replaceStreamTracks - Local \" + track.kind + \" \" + track.id + \" track replace to peer connection\");\n }));\n }\n });\n });\n }\n return Promise.all(promises).then(function () {\n window.mediaStreamAlreadyReplaced = true;\n trace.info('replaceStreamTracks: replace stream tracks - Success');\n });\n };\n //#endregion\n //#region WebRTC Initiator - session Initiator (User on mobile device)\n // Received by Initiator, causing him to emit SDP_OFFER\n TurnWebRtcSession.prototype._sendOfferHandler = function (sendOfferEventData) {\n var _this = this;\n var uid = sendOfferEventData.uid, peerId = sendOfferEventData.peerId;\n trace.info('_sendOfferHandler');\n //Currently we not support of passing role through signaling, so we assume every connection is \"AGENT\" like\n var peerConnection = this._createPeerConnection(peerId, MediaConstants_1.SessionClientType.GUEST, MediaConstants_1.SessionClientRole.AGENT);\n var offerParams = { offerToReceiveAudio: true, offerToReceiveVideo: true };\n //TODO - Alex: Currently we not sending \"role\" through signaling, and by default we assume that the one who asks fot offer, is agent.\n //On later stages we can send or the client \"role\" or the list of \"streams\" that peer is interested in.\n this._sessionStreamsManager\n .getMediaStreamForRole(MediaConstants_1.SessionClientRole.AGENT)\n .then(function (mediaStream) {\n trace.info('_sendOfferHandler stream and peer created');\n if (mediaStream) {\n trace.info('Adding local tracks to peer connection for sending offer');\n mediaStream.getTracks().forEach(function (track) {\n peerConnection.addTrack(track, mediaStream);\n trace.info(\"Local \" + track.kind + \" \" + track.id + \" track added to peer connection\");\n });\n }\n else {\n trace.info('No media stream was found for publishing');\n }\n })\n .then(function () { return peerConnection.createOffer(offerParams); })\n .then(function (offerDesc) {\n trace.info('Initiator has created sdp offer', { offerDesc: offerDesc });\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.SDP_OFFER, {\n uid: uid,\n peerId: peerId,\n sessionId: _this._sessionParams.sessionId,\n sdpOffer: offerDesc.sdp\n });\n return peerConnection.setLocalDescription(offerDesc).then(function () {\n trace.info('Local description was set on peerConnection', peerConnection);\n _this._setPeerConnectionMonitor(peerConnection);\n // make sure using the tracks of the last stream that used\n if (window.latestUserMediaStream && window.mediaStreamAlreadyReplaced) {\n _this.replaceStreamTracks(window.latestUserMediaStream.mediaStream).catch(function (e) {\n return trace.warn('_sendOfferHandler - Failed to replaceStreamTrace', e);\n });\n }\n });\n })\n .catch(function (e) {\n trace.warn('Error', e);\n });\n };\n // Received by the Initiator: Indicates that publish should be started\n TurnWebRtcSession.prototype._joinResponseHandler = function (joinResponseData) {\n var _this = this;\n var sdpAnswer = joinResponseData.sdpAnswer, uid = joinResponseData.uid, peerId = joinResponseData.peerId;\n trace.info('joinResponse Received', { sdpAnswer: sdpAnswer });\n this._withPeerConnection(peerId, function (peerConnection) {\n var answer = new RTCSessionDescription({\n type: 'answer',\n sdp: sdpAnswer\n });\n peerConnection\n .setRemoteDescription(answer)\n .then(function () {\n trace.info('Remote description was set', answer);\n _this._processQueuedIceCandidates(peerId);\n })\n .catch(function (e) {\n trace.warn('Error', e);\n });\n });\n };\n // Received by Initiator after a guests socket has been disconnected\n TurnWebRtcSession.prototype._peerDisconnectedHandler = function (peerDisconnectedEvent) {\n var _this = this;\n var peerId = peerDisconnectedEvent.peerId;\n trace.info('_peerDisconnectedHandler');\n this._withPeerConnection(peerId, function (peerConnection) {\n _this._destroyPeerConnection(peerConnection);\n //this._disconnectInternal(MediaSessionDisconnectReason.PeerDisconnected).catch(() => undefined);\n });\n };\n //#endregion WebRTC Initiator - session Initiator (User on mobile device)\n //#region WebRTC Guest - session Guest (Agent on dashboard platform)\n // Received by Guest, causing him to emit SDP_ANSWER\n TurnWebRtcSession.prototype._sdpOfferHandler = function (sdpOfferEvent) {\n var _this = this;\n var sdpOffer = sdpOfferEvent.sdpOffer, peerId = sdpOfferEvent.peerId, uid = sdpOfferEvent.uid;\n trace.info('sdpOffer Received', { sdpOffer: sdpOffer });\n var peerConnection = this._createPeerConnection(peerId, MediaConstants_1.SessionClientType.INITIATOR, MediaConstants_1.SessionClientRole.USER);\n this._sessionStreamsManager\n .getMediaStreamForRole(MediaConstants_1.SessionClientRole.USER)\n .then(function (mediaStream) {\n if (mediaStream) {\n trace.info('Adding local tracks to peer connection offer handler');\n mediaStream.getTracks().forEach(function (track) {\n peerConnection.addTrack(track, mediaStream);\n trace.info(\"Local \" + track.kind + \" track added to peer connection\");\n });\n }\n else {\n trace.info('No media stream was found for publishing');\n }\n })\n .then(function () {\n var remoteDesc = new RTCSessionDescription({ type: 'offer', sdp: sdpOffer });\n return peerConnection.setRemoteDescription(remoteDesc).then(function () {\n trace.info('Remote description was set', remoteDesc);\n return peerConnection.createAnswer().then(function (sdpAnswer) {\n trace.info('_sdpOfferHandler answer created', sdpAnswer);\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.SDP_ANSWER, {\n uid: uid,\n peerId: peerId,\n sessionId: _this._sessionParams.sessionId,\n sdpAnswer: sdpAnswer.sdp\n });\n return peerConnection.setLocalDescription(sdpAnswer).then(function () {\n trace.info('_sdpOfferHandler local desc was set');\n _this._processQueuedIceCandidates(peerId);\n _this._setPeerConnectionMonitor(peerConnection);\n });\n });\n });\n })\n .catch(function (e) {\n trace.error('Error in _sdpOfferHandler', e);\n throw e;\n });\n };\n // Received by Guest after an Initiator reconnects to room\n TurnWebRtcSession.prototype._initiatorPeerReconnectHandler = function () {\n trace.info('_initiatorPeerReconnectHandler disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.InitiatorPeerReconnected);\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.InitiatorPeerReconnected).catch(function (error) {\n trace.warn('Error while disconnecting during userPeerReconnectHandler.', error);\n });\n };\n //#endregion WebRTC Guest - session Guest (Agent on dashboard platform)\n //#region Peer Connection\n //#region Streams Handling\n TurnWebRtcSession.prototype.onMediaStreamDestroyed = function (clientRole) {\n var _this = this;\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation\n trace.info('onMediaStreamDestroyed disconnect all peer connections from session', MediaConstants_1.MediaSessionDisconnectReason.PublishedStreamDestroyed);\n this._peerConnections.forEach(function (peerConnection) {\n _this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.PublishedStreamDestroyed).catch(function () { return undefined; });\n });\n return Promise.resolve();\n };\n TurnWebRtcSession.prototype.onMediaStreamRenewed = function (clientRole, mediaStream) {\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation\n return Promise.resolve();\n };\n TurnWebRtcSession.prototype.getRemoteTrackStats = function (mediaTrack) {\n var peerConnectionOfTrack = this.getPeerConnectionByMediaTrack(mediaTrack);\n if (peerConnectionOfTrack !== null) {\n return peerConnectionOfTrack.getStats(mediaTrack);\n }\n return Promise.reject(new Error('Provided track is not remote track'));\n };\n //#endregion\n TurnWebRtcSession.prototype._disconnectInternal = function (reason) {\n var _this = this;\n this._peerConnections.forEach(function (peerConnection) {\n _this._destroyPeerConnection(peerConnection);\n });\n if (this._socket) {\n trace.info('Disconnecting from session', reason);\n this.sessionDisconnect();\n this._socket = null;\n setTimeout(function () { return _this._sessionHandlers.onDisconnectedHandler(reason); });\n }\n return Promise.resolve();\n };\n TurnWebRtcSession.prototype._createPeerConnection = function (peerId, peerConnectionType, peerConnectionRole) {\n var _this = this;\n if (this._peerConnections.get(peerId)) {\n throw new Error(this._sessionParams.clientType + \" peer connection for \" + peerId + \" already exists\");\n }\n var peerConnection = new RTCPeerConnection(this._configuration);\n peerConnection.peerId = peerId;\n peerConnection.peerType = peerConnectionType;\n peerConnection.remoteMediaTracks = [];\n peerConnection.peerRole = peerConnectionRole;\n peerConnection.connectionTimoutPrt = null;\n peerConnection.onconnectionstatechange = function () {\n trace.info('onconnectionstatechange', peerConnection);\n };\n peerConnection.oniceconnectionstatechange = function (state) {\n trace.info(\"ICE Connection state for peer \" + peerId + \" was changed to: \" + state.currentTarget.iceConnectionState, state);\n var cnState = state.currentTarget.iceConnectionState;\n clearTimeout(peerConnection.connectionTimoutPrt);\n if (['closed', 'disconnected', 'failed'].indexOf(cnState) > -1) {\n _this._iceStateDisconnected(peerConnection);\n }\n else if (cnState === 'connected') {\n _this.registerPeersRemoteTracks(peerConnection);\n }\n };\n peerConnection.onicecandidate = function (event) {\n if (event.candidate) {\n trace.info(_this._sessionParams.clientType + \" peerConn.onicecandidate\", event.candidate);\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.ICE_CANDIDATE, {\n sessionId: _this._sessionParams.sessionId,\n peerId: peerId,\n candidate: event.candidate,\n clientType: _this._sessionParams.clientType\n });\n }\n else {\n trace.info('ICE Candidate is null in peerConnection', event);\n }\n };\n peerConnection.ontrack = function (trackEvent) {\n var track = trackEvent.track;\n trace.info(\"MediaStreamTrack arrived from peerConnection: \" + track.kind, track);\n _this.addRemoteTrackToPeer(peerConnection, track);\n if (peerConnection.connectionState === 'connected') {\n _this.registerPeersRemoteTracks(peerConnection);\n }\n };\n this._peerConnections.set(peerId, peerConnection);\n trace.info(peerConnectionType + \" peerConnection created\");\n return peerConnection;\n };\n TurnWebRtcSession.prototype._setPeerConnectionMonitor = function (peerConnection) {\n var _this = this;\n clearTimeout(peerConnection.connectionTimoutPrt);\n peerConnection.connectionTimoutPrt = setTimeout(function () {\n trace.info('PeerConnection ICE state timeout', peerConnection);\n _this._handlePeerConnectionTimeout(peerConnection);\n }, this._sessionParams.peerConnectivityTimeoutSeconds * 1000);\n };\n TurnWebRtcSession.prototype._handlePeerConnectionTimeout = function (peerConnection) {\n trace.info('_handlePeerConnectionTimeout disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionStateChangeTimeout);\n if (peerConnection.peerRole === MediaConstants_1.SessionClientRole.USER) {\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionStateChangeTimeout).catch(function () { return undefined; });\n }\n };\n TurnWebRtcSession.prototype._destroyPeerConnection = function (peerConnection) {\n trace.info('Destroying PeerConnection', peerConnection.peerType);\n peerConnection.ontrack = null;\n peerConnection.onicecandidate = null;\n peerConnection.onconnectionstatechange = null;\n peerConnection.oniceconnectionstatechange = null;\n peerConnection.onicegatheringstatechange = null;\n clearTimeout(peerConnection.connectionTimoutPrt);\n this.unregisterPeersRemoteMediaTracks(peerConnection).catch(function () { return undefined; });\n this._peerConnections.delete(peerConnection.peerId);\n peerConnection.close();\n };\n TurnWebRtcSession.prototype._withPeerConnection = function (peerId, callback) {\n if (this._peerConnections.get(peerId)) {\n return callback(this._peerConnections.get(peerId));\n }\n return undefined;\n };\n //#endregion\n //#region ICE Candidates\n TurnWebRtcSession.prototype._iceCandidateReceivedHandler = function (iceCandidateData) {\n var candidate = iceCandidateData.candidate, peerId = iceCandidateData.peerId;\n trace.info('_iceCandidateReceivedHandler', candidate);\n if (!candidate) {\n trace.info('Unexpected case, iceCandidate message arrived without candidate');\n return;\n }\n var peerConnection = this._peerConnections.get(peerId);\n if (!peerConnection || !peerConnection.remoteDescription) {\n trace.info('Queueing iceCandidate', candidate);\n this._queueIceCandidate(candidate, peerId);\n return;\n }\n trace.info('Going to add iceCandidate', candidate);\n this._addIceCandidateToPeer(candidate, peerConnection).catch(function () { return undefined; });\n };\n TurnWebRtcSession.prototype._addIceCandidateToPeer = function (iceCandidate, peerConnection) {\n return peerConnection\n .addIceCandidate(iceCandidate)\n .then(function () {\n trace.info('ICE Candidate add to peer connection');\n })\n .catch(function (e) {\n trace.warn('Error adding ICE Candidate to peer connection', e);\n throw e;\n });\n };\n TurnWebRtcSession.prototype._processQueuedIceCandidates = function (peerId) {\n var _this = this;\n this._withPeerConnection(peerId, function (peerConnection) {\n var pendingIces = _this._pendingPeersIce[peerId];\n if (pendingIces) {\n pendingIces.forEach(function (pendingIce) {\n trace.info('Adding pending ICE to peer connections');\n _this._addIceCandidateToPeer(pendingIce, peerConnection).catch(function () { return undefined; });\n });\n }\n else {\n trace.info('No pending ICE found for peer', peerId);\n }\n });\n };\n TurnWebRtcSession.prototype._queueIceCandidate = function (iceCandidate, peerId) {\n if (!this._pendingPeersIce[peerId]) {\n this._pendingPeersIce[peerId] = [];\n }\n this._pendingPeersIce[peerId].push(iceCandidate);\n };\n TurnWebRtcSession.prototype._iceStateDisconnected = function (peerConnection) {\n trace.info('_iceStateDisconnected disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionInterrupted);\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionInterrupted).catch(function () { return undefined; });\n };\n //#endregion\n TurnWebRtcSession.prototype.sessionDisconnect = function () {\n if (this._socket) {\n this._socket.off();\n this._socket.disconnect();\n }\n };\n return TurnWebRtcSession;\n}(MediaSessionBase_1.MediaSessionBase));\nexports.TurnWebRtcSession = TurnWebRtcSession;\n\n//# sourceMappingURL=SessionTurn.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaSession/SessionTurn.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__createBinding","o","m","k","k2","undefined","defineProperty","enumerable","get","__setModuleDefault","v","value","__importStar","mod","__esModule","result","__importDefault","exports","TurnWebRtcSession","io","require","once_1","MediaConstants_1","TurnConstants_1","MediaTracer_1","MediaSessionBase_1","trace","getMediaTracer","_super","sessionParams","sessionHandlers","streamFactory","_this","_sessionHandlers","_socket","_pendingPeersIce","iceServers","credentials","ice","map","item","urls","url","username","login","credential","password","_configuration","iceTransportPolicy","_joinResponseHandler","bind","_iceCandidateReceivedHandler","_sendOfferHandler","_sdpOfferHandler","_initiatorPeerReconnectHandler","_peerDisconnectedHandler","_onSocketDisconnectedHandler","_sessionParams","sessionId","configurable","connect","connectOnly","info","_connectSocket","then","emit","SOCKET_EVENTS","OUTGOING","JOIN_ROOM","clientType","error","disconnect","MediaSessionDisconnectReason","ForcedByConsumer","_disconnectInternal","Promise","resolve","reject","socket","forceNew","reconnectionDelay","SOCKET_RECONNECTION_DELAY","reconnectionDelayMax","SOCKET_RECONNECTION_DELAY_MAX","reconnectionAttempts","SOCKET_RECONNECTION_ATTEMPTS","path","SOCKET_PATH","done","err","once","on","INCOMING","ERROR","SEND_OFFER","JOIN_RESPONSE","PEER_DISCONNECTED","SDP_OFFER","PUBLISHER_RECONNECT","ICE_CANDIDATE","reason","SignalingChannelDisconnect","replaceStreamTracks","mediaStream","promises","_peerConnections","forEach","peerConnection","getTracks","track","sender","getSenders","find","s","kind","push","replaceTrack","id","all","window","mediaStreamAlreadyReplaced","sendOfferEventData","uid","peerId","_createPeerConnection","SessionClientType","GUEST","SessionClientRole","AGENT","offerParams","offerToReceiveAudio","offerToReceiveVideo","_sessionStreamsManager","getMediaStreamForRole","addTrack","createOffer","offerDesc","sdpOffer","sdp","setLocalDescription","_setPeerConnectionMonitor","latestUserMediaStream","e","warn","joinResponseData","sdpAnswer","_withPeerConnection","answer","RTCSessionDescription","type","setRemoteDescription","_processQueuedIceCandidates","peerDisconnectedEvent","_destroyPeerConnection","sdpOfferEvent","INITIATOR","USER","remoteDesc","createAnswer","SDP_ANSWER","InitiatorPeerReconnected","onMediaStreamDestroyed","clientRole","PublishedStreamDestroyed","onMediaStreamRenewed","getRemoteTrackStats","mediaTrack","peerConnectionOfTrack","getPeerConnectionByMediaTrack","getStats","Error","sessionDisconnect","setTimeout","onDisconnectedHandler","peerConnectionType","peerConnectionRole","RTCPeerConnection","peerType","remoteMediaTracks","peerRole","connectionTimoutPrt","onconnectionstatechange","oniceconnectionstatechange","state","currentTarget","iceConnectionState","cnState","clearTimeout","indexOf","_iceStateDisconnected","registerPeersRemoteTracks","onicecandidate","event","candidate","ontrack","trackEvent","addRemoteTrackToPeer","connectionState","set","_handlePeerConnectionTimeout","peerConnectivityTimeoutSeconds","PeerConnectionStateChangeTimeout","onicegatheringstatechange","unregisterPeersRemoteMediaTracks","close","callback","iceCandidateData","remoteDescription","_queueIceCandidate","_addIceCandidateToPeer","iceCandidate","addIceCandidate","pendingIces","pendingIce","PeerConnectionInterrupted","off","MediaSessionBase"],"mappings":"AAAA;;AACA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA6B,YAAY;EACrD,IAAIC,cAAa,GAAG,uBAAUC,CAAV,EAAaC,CAAb,EAAgB;IAChCF,cAAa,GAAGG,MAAM,CAACC,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6BC,KAA7B,IAAsC,UAAUL,CAAV,EAAaC,CAAb,EAAgB;MAAED,CAAC,CAACI,SAAF,GAAcH,CAAd;IAAkB,CAD/D,IAEZ,UAAUD,CAAV,EAAaC,CAAb,EAAgB;MAAE,KAAK,IAAIK,CAAT,IAAcL,CAAd;QAAiB,IAAIC,MAAM,CAACK,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCR,CAArC,EAAwCK,CAAxC,CAAJ,EAAgDN,CAAC,CAACM,CAAD,CAAD,GAAOL,CAAC,CAACK,CAAD,CAAR;MAAjE;IAA+E,CAFrG;;IAGA,OAAOP,cAAa,CAACC,CAAD,EAAIC,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUD,CAAV,EAAaC,CAAb,EAAgB;IACnBF,cAAa,CAACC,CAAD,EAAIC,CAAJ,CAAb;;IACA,SAASS,EAAT,GAAc;MAAE,KAAKC,WAAL,GAAmBX,CAAnB;IAAuB;;IACvCA,CAAC,CAACO,SAAF,GAAcN,CAAC,KAAK,IAAN,GAAaC,MAAM,CAACU,MAAP,CAAcX,CAAd,CAAb,IAAiCS,EAAE,CAACH,SAAH,GAAeN,CAAC,CAACM,SAAjB,EAA4B,IAAIG,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZ2C,EAA5C;;AAaA,IAAIG,eAAe,GAAI,UAAQ,SAAKA,eAAd,KAAmCX,MAAM,CAACU,MAAP,GAAiB,UAASE,CAAT,EAAYC,CAAZ,EAAeC,CAAf,EAAkBC,EAAlB,EAAsB;EAC5F,IAAIA,EAAE,KAAKC,SAAX,EAAsBD,EAAE,GAAGD,CAAL;EACtBd,MAAM,CAACiB,cAAP,CAAsBL,CAAtB,EAAyBG,EAAzB,EAA6B;IAAEG,UAAU,EAAE,IAAd;IAAoBC,GAAG,EAAE,eAAW;MAAE,OAAON,CAAC,CAACC,CAAD,CAAR;IAAc;EAApD,CAA7B;AACH,CAHwD,GAGnD,UAASF,CAAT,EAAYC,CAAZ,EAAeC,CAAf,EAAkBC,EAAlB,EAAsB;EACxB,IAAIA,EAAE,KAAKC,SAAX,EAAsBD,EAAE,GAAGD,CAAL;EACtBF,CAAC,CAACG,EAAD,CAAD,GAAQF,CAAC,CAACC,CAAD,CAAT;AACH,CANqB,CAAtB;;AAOA,IAAIM,kBAAkB,GAAI,UAAQ,SAAKA,kBAAd,KAAsCpB,MAAM,CAACU,MAAP,GAAiB,UAASE,CAAT,EAAYS,CAAZ,EAAe;EAC3FrB,MAAM,CAACiB,cAAP,CAAsBL,CAAtB,EAAyB,SAAzB,EAAoC;IAAEM,UAAU,EAAE,IAAd;IAAoBI,KAAK,EAAED;EAA3B,CAApC;AACH,CAF8D,GAE1D,UAAST,CAAT,EAAYS,CAAZ,EAAe;EAChBT,CAAC,CAAC,SAAD,CAAD,GAAeS,CAAf;AACH,CAJwB,CAAzB;;AAKA,IAAIE,YAAY,GAAI,UAAQ,SAAKA,YAAd,IAA+B,UAAUC,GAAV,EAAe;EAC7D,IAAIA,GAAG,IAAIA,GAAG,CAACC,UAAf,EAA2B,OAAOD,GAAP;EAC3B,IAAIE,MAAM,GAAG,EAAb;EACA,IAAIF,GAAG,IAAI,IAAX,EAAiB,KAAK,IAAIV,CAAT,IAAcU,GAAd;IAAmB,IAAIV,CAAC,KAAK,SAAN,IAAmBd,MAAM,CAACK,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCiB,GAArC,EAA0CV,CAA1C,CAAvB,EAAqEH,eAAe,CAACe,MAAD,EAASF,GAAT,EAAcV,CAAd,CAAf;EAAxF;;EACjBM,kBAAkB,CAACM,MAAD,EAASF,GAAT,CAAlB;;EACA,OAAOE,MAAP;AACH,CAND;;AAOA,IAAIC,eAAe,GAAI,UAAQ,SAAKA,eAAd,IAAkC,UAAUH,GAAV,EAAe;EACnE,OAAQA,GAAG,IAAIA,GAAG,CAACC,UAAZ,GAA0BD,GAA1B,GAAgC;IAAE,WAAWA;EAAb,CAAvC;AACH,CAFD;;AAGAxB,MAAM,CAACiB,cAAP,CAAsBW,OAAtB,EAA+B,YAA/B,EAA6C;EAAEN,KAAK,EAAE;AAAT,CAA7C;AACAM,OAAO,CAACC,iBAAR,GAA4B,KAAK,CAAjC;;AACA,IAAIC,EAAE,GAAGP,YAAY,CAACQ,OAAO,CAAC,kBAAD,CAAR,CAArB;;AACA,IAAIC,MAAM,GAAGL,eAAe,CAACI,OAAO,CAAC,aAAD,CAAR,CAA5B;;AACA,IAAIE,gBAAgB,GAAGF,OAAO,CAAC,mBAAD,CAA9B;;AACA,IAAIG,eAAe,GAAGH,OAAO,CAAC,iBAAD,CAA7B;;AACA,IAAII,aAAa,GAAGJ,OAAO,CAAC,2BAAD,CAA3B;;AACA,IAAIK,kBAAkB,GAAGL,OAAO,CAAC,oBAAD,CAAhC;;AACA,IAAIM,KAAK,GAAGF,aAAa,CAACG,cAAd,CAA6B,mBAA7B,CAAZ,C,CACA;;AACA,IAAIT,iBAAiB;AAAG;AAAe,UAAUU,MAAV,EAAkB;EACrD3C,SAAS,CAACiC,iBAAD,EAAoBU,MAApB,CAAT;;EACA,SAASV,iBAAT,CAA2BW,aAA3B,EAA0CC,eAA1C,EAA2DC,aAA3D,EAA0E;IACtE,IAAIC,KAAK,GAAGJ,MAAM,CAAChC,IAAP,CAAY,IAAZ,EAAkBiC,aAAlB,EAAiCE,aAAjC,KAAmD,IAA/D;;IACAC,KAAK,CAACC,gBAAN,GAAyBH,eAAzB;IACAE,KAAK,CAACE,OAAN,GAAgB,IAAhB;IACAF,KAAK,CAACG,gBAAN,GAAyB,EAAzB;IACA,IAAIC,UAAU,GAAGP,aAAa,CAACQ,WAAd,CAA0BC,GAA1B,CAA8BC,GAA9B,CAAkC,UAAUC,IAAV,EAAgB;MAAE,OAAQ;QACzEC,IAAI,EAAED,IAAI,CAACE,GAD8D;QAEzEC,QAAQ,EAAEH,IAAI,CAACI,KAF0D;QAGzEC,UAAU,EAAEL,IAAI,CAACM;MAHwD,CAAR;IAIhE,CAJY,CAAjB;IAKAd,KAAK,CAACe,cAAN,GAAuB;MACnBX,UAAU,EAAEA,UADO;MAEnBY,kBAAkB,EAAE;IAFD,CAAvB;IAIAhB,KAAK,CAACiB,oBAAN,GAA6BjB,KAAK,CAACiB,oBAAN,CAA2BC,IAA3B,CAAgClB,KAAhC,CAA7B;IACAA,KAAK,CAACmB,4BAAN,GAAqCnB,KAAK,CAACmB,4BAAN,CAAmCD,IAAnC,CAAwClB,KAAxC,CAArC;IACAA,KAAK,CAACoB,iBAAN,GAA0BpB,KAAK,CAACoB,iBAAN,CAAwBF,IAAxB,CAA6BlB,KAA7B,CAA1B;IACAA,KAAK,CAACqB,gBAAN,GAAyBrB,KAAK,CAACqB,gBAAN,CAAuBH,IAAvB,CAA4BlB,KAA5B,CAAzB;IACAA,KAAK,CAACsB,8BAAN,GAAuCtB,KAAK,CAACsB,8BAAN,CAAqCJ,IAArC,CAA0ClB,KAA1C,CAAvC;IACAA,KAAK,CAACuB,wBAAN,GAAiCvB,KAAK,CAACuB,wBAAN,CAA+BL,IAA/B,CAAoClB,KAApC,CAAjC;IACAA,KAAK,CAACwB,4BAAN,GAAqCxB,KAAK,CAACwB,4BAAN,CAAmCN,IAAnC,CAAwClB,KAAxC,CAArC;IACA,OAAOA,KAAP;EACH;;EACD3C,MAAM,CAACiB,cAAP,CAAsBY,iBAAiB,CAACxB,SAAxC,EAAmD,IAAnD,EAAyD;IACrDc,GAAG,EAAE,eAAY;MACb,OAAO,KAAKiD,cAAL,CAAoBC,SAA3B;IACH,CAHoD;IAIrDnD,UAAU,EAAE,KAJyC;IAKrDoD,YAAY,EAAE;EALuC,CAAzD,EAzBqD,CAgCrD;;EACAzC,iBAAiB,CAACxB,SAAlB,CAA4BkE,OAA5B,GAAsC,UAAUC,WAAV,EAAuB;IACzD,IAAI7B,KAAK,GAAG,IAAZ;;IACA,IAAI6B,WAAW,KAAK,KAAK,CAAzB,EAA4B;MAAEA,WAAW,GAAG,KAAd;IAAsB;;IACpDnC,KAAK,CAACoC,IAAN,CAAW,oBAAX;IACA,OAAO,KAAKC,cAAL,CAAoB,KAAKN,cAAL,CAAoBpB,WAApB,CAAgCK,GAApD,EAAyDmB,WAAzD,EACFG,IADE,CACG,YAAY;MAClBtC,KAAK,CAACoC,IAAN,CAAW,wBAAwB9B,KAAK,CAACyB,cAAN,CAAqBC,SAAxD;;MACA1B,KAAK,CAACE,OAAN,CAAc+B,IAAd,CAAmB1C,eAAe,CAAC2C,aAAhB,CAA8BC,QAA9B,CAAuCC,SAA1D,EAAqE;QACjEC,UAAU,EAAErC,KAAK,CAACyB,cAAN,CAAqBY,UADgC;QAEjEX,SAAS,EAAE1B,KAAK,CAACyB,cAAN,CAAqBC;MAFiC,CAArE;IAIH,CAPM,WAQI,UAAUY,KAAV,EAAiB;MACxB,MAAMA,KAAN;IACH,CAVM,CAAP;EAWH,CAfD;;EAgBApD,iBAAiB,CAACxB,SAAlB,CAA4B6E,UAA5B,GAAyC,YAAY;IACjD7C,KAAK,CAACoC,IAAN,CAAW,2CAAX,EAAwDxC,gBAAgB,CAACkD,4BAAjB,CAA8CC,gBAAtG;IACA,OAAO,KAAKC,mBAAL,CAAyBpD,gBAAgB,CAACkD,4BAAjB,CAA8CC,gBAAvE,CAAP;EACH,CAHD;;EAIAvD,iBAAiB,CAACxB,SAAlB,CAA4BqE,cAA5B,GAA6C,UAAUrB,GAAV,EAAemB,WAAf,EAA4B;IACrE,IAAI7B,KAAK,GAAG,IAAZ;;IACA,OAAO,IAAI2C,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;MAC1C,IAAIC,MAAM,GAAI9C,KAAK,CAACE,OAAN,GAAgBf,EAAE,CAACyC,OAAH,CAAWlB,GAAX,EAAgB;QAC1CqC,QAAQ,EAAE,IADgC;QAE1CC,iBAAiB,EAAEzD,eAAe,CAAC0D,yBAFO;QAG1CC,oBAAoB,EAAE3D,eAAe,CAAC4D,6BAHI;QAI1CC,oBAAoB,EAAE7D,eAAe,CAAC8D,4BAJI;QAK1CC,IAAI,EAAE/D,eAAe,CAACgE;MALoB,CAAhB,CAA9B;MAOA,IAAIC,IAAI,GAAGnE,MAAM,WAAN,CAAe,UAAUoE,GAAV,EAAe;QACrCA,GAAG,GAAGZ,MAAM,CAACY,GAAD,CAAT,GAAiBb,OAAO,EAA3B;MACH,CAFU,CAAX;MAGAE,MAAM,CAACY,IAAP,CAAY,SAAZ,EAAuB,YAAY;QAAE,OAAOF,IAAI,EAAX;MAAgB,CAArD;MACAV,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCC,KAAjD,EAAwDL,IAAxD;MACAV,MAAM,CAACa,EAAP,CAAU,eAAV,EAA2BH,IAA3B;MACAV,MAAM,CAACa,EAAP,CAAU,iBAAV,EAA6BH,IAA7B;MACAV,MAAM,CAACa,EAAP,CAAU,YAAV,EAAwB3D,KAAK,CAACwB,4BAA9B;;MACA,IAAI,CAACK,WAAL,EAAkB;QACdnC,KAAK,CAACoC,IAAN,CAAW,2BAAX;QACAgB,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCE,UAAjD,EAA6D9D,KAAK,CAACoB,iBAAnE;QACA0B,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCG,aAAjD,EAAgE/D,KAAK,CAACiB,oBAAtE;QACA6B,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCI,iBAAjD,EAAoEhE,KAAK,CAACuB,wBAA1E;QACAuB,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCK,SAAjD,EAA4DjE,KAAK,CAACqB,gBAAlE;QACAyB,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCM,mBAAjD,EAAsElE,KAAK,CAACsB,8BAA5E;QACAwB,MAAM,CAACa,EAAP,CAAUpE,eAAe,CAAC2C,aAAhB,CAA8B0B,QAA9B,CAAuCO,aAAjD,EAAgEnE,KAAK,CAACmB,4BAAtE;MACH;IACJ,CAzBM,CAAP;EA0BH,CA5BD;;EA6BAjC,iBAAiB,CAACxB,SAAlB,CAA4B8D,4BAA5B,GAA2D,UAAU4C,MAAV,EAAkB;IACzE,IAAI,KAAKlE,OAAT,EAAkB;MACd;MACA;MACA,IAAIkE,MAAM,KAAK,sBAAX,IAAqCA,MAAM,KAAK,sBAApD,EAA4E;QACxE1E,KAAK,CAACoC,IAAN,CAAW,sDAAX,EAAmExC,gBAAgB,CAACkD,4BAAjB,CAA8C6B,0BAAjH,EADwE,CAExE;;QACA,KAAK3B,mBAAL,CAAyBpD,gBAAgB,CAACkD,4BAAjB,CAA8C6B,0BAAvE,WAAyG,YAAY;UAAE,OAAOhG,SAAP;QAAmB,CAA1I;MACH;IACJ;EACJ,CAVD;;EAWAa,iBAAiB,CAACxB,SAAlB,CAA4B4G,mBAA5B,GAAkD,UAAUC,WAAV,EAAuB;IACrE,IAAIC,QAAQ,GAAG,EAAf;;IACA,IAAID,WAAW,IAAI,KAAKE,gBAAxB,EAA0C;MACtC/E,KAAK,CAACoC,IAAN,CAAW,+DAAX;;MACA,KAAK2C,gBAAL,CAAsBC,OAAtB,CAA8B,UAAUC,cAAV,EAA0B;QACpDJ,WAAW,CAACK,SAAZ,GAAwBF,OAAxB,CAAgC,UAAUG,KAAV,EAAiB;UAC7C,IAAIC,MAAM,GAAGH,cAAc,CAACI,UAAf,GAA4BC,IAA5B,CAAiC,UAAUC,CAAV,EAAa;YAAE,OAAOA,CAAC,CAACJ,KAAF,CAAQK,IAAR,KAAiBL,KAAK,CAACK,IAA9B;UAAqC,CAArF,CAAb;;UACA,IAAIJ,MAAJ,EAAY;YACRN,QAAQ,CAACW,IAAT,CAAcL,MAAM,CACfM,YADS,CACIP,KADJ,EAET7C,IAFS,CAEJ,YAAY;cAClB,OAAOtC,KAAK,CAACoC,IAAN,CAAW,iCAAiC+C,KAAK,CAACK,IAAvC,GAA8C,GAA9C,GAAoDL,KAAK,CAACQ,EAA1D,GAA+D,mCAA1E,CAAP;YACH,CAJa,CAAd;UAKH;QACJ,CATD;MAUH,CAXD;IAYH;;IACD,OAAO1C,OAAO,CAAC2C,GAAR,CAAYd,QAAZ,EAAsBxC,IAAtB,CAA2B,YAAY;MAC1CuD,MAAM,CAACC,0BAAP,GAAoC,IAApC;MACA9F,KAAK,CAACoC,IAAN,CAAW,sDAAX;IACH,CAHM,CAAP;EAIH,CArBD,CA7FqD,CAmHrD;EACA;EACA;;;EACA5C,iBAAiB,CAACxB,SAAlB,CAA4B0D,iBAA5B,GAAgD,UAAUqE,kBAAV,EAA8B;IAC1E,IAAIzF,KAAK,GAAG,IAAZ;;IACA,IAAI0F,GAAG,GAAGD,kBAAkB,CAACC,GAA7B;IAAA,IAAkCC,MAAM,GAAGF,kBAAkB,CAACE,MAA9D;IACAjG,KAAK,CAACoC,IAAN,CAAW,mBAAX,EAH0E,CAI1E;;IACA,IAAI6C,cAAc,GAAG,KAAKiB,qBAAL,CAA2BD,MAA3B,EAAmCrG,gBAAgB,CAACuG,iBAAjB,CAAmCC,KAAtE,EAA6ExG,gBAAgB,CAACyG,iBAAjB,CAAmCC,KAAhH,CAArB;;IACA,IAAIC,WAAW,GAAG;MAAEC,mBAAmB,EAAE,IAAvB;MAA6BC,mBAAmB,EAAE;IAAlD,CAAlB,CAN0E,CAO1E;IACA;;IACA,KAAKC,sBAAL,CACKC,qBADL,CAC2B/G,gBAAgB,CAACyG,iBAAjB,CAAmCC,KAD9D,EAEKhE,IAFL,CAEU,UAAUuC,WAAV,EAAuB;MAC7B7E,KAAK,CAACoC,IAAN,CAAW,2CAAX;;MACA,IAAIyC,WAAJ,EAAiB;QACb7E,KAAK,CAACoC,IAAN,CAAW,0DAAX;QACAyC,WAAW,CAACK,SAAZ,GAAwBF,OAAxB,CAAgC,UAAUG,KAAV,EAAiB;UAC7CF,cAAc,CAAC2B,QAAf,CAAwBzB,KAAxB,EAA+BN,WAA/B;UACA7E,KAAK,CAACoC,IAAN,CAAW,WAAW+C,KAAK,CAACK,IAAjB,GAAwB,GAAxB,GAA8BL,KAAK,CAACQ,EAApC,GAAyC,iCAApD;QACH,CAHD;MAIH,CAND,MAOK;QACD3F,KAAK,CAACoC,IAAN,CAAW,0CAAX;MACH;IACJ,CAdD,EAeKE,IAfL,CAeU,YAAY;MAAE,OAAO2C,cAAc,CAAC4B,WAAf,CAA2BN,WAA3B,CAAP;IAAiD,CAfzE,EAgBKjE,IAhBL,CAgBU,UAAUwE,SAAV,EAAqB;MAC3B9G,KAAK,CAACoC,IAAN,CAAW,iCAAX,EAA8C;QAAE0E,SAAS,EAAEA;MAAb,CAA9C;;MACAxG,KAAK,CAACE,OAAN,CAAc+B,IAAd,CAAmB1C,eAAe,CAAC2C,aAAhB,CAA8BC,QAA9B,CAAuC8B,SAA1D,EAAqE;QACjEyB,GAAG,EAAEA,GAD4D;QAEjEC,MAAM,EAAEA,MAFyD;QAGjEjE,SAAS,EAAE1B,KAAK,CAACyB,cAAN,CAAqBC,SAHiC;QAIjE+E,QAAQ,EAAED,SAAS,CAACE;MAJ6C,CAArE;;MAMA,OAAO/B,cAAc,CAACgC,mBAAf,CAAmCH,SAAnC,EAA8CxE,IAA9C,CAAmD,YAAY;QAClEtC,KAAK,CAACoC,IAAN,CAAW,6CAAX,EAA0D6C,cAA1D;;QACA3E,KAAK,CAAC4G,yBAAN,CAAgCjC,cAAhC,EAFkE,CAGlE;;;QACA,IAAIY,MAAM,CAACsB,qBAAP,IAAgCtB,MAAM,CAACC,0BAA3C,EAAuE;UACnExF,KAAK,CAACsE,mBAAN,CAA0BiB,MAAM,CAACsB,qBAAP,CAA6BtC,WAAvD,WAA0E,UAAUuC,CAAV,EAAa;YACnF,OAAOpH,KAAK,CAACqH,IAAN,CAAW,kDAAX,EAA+DD,CAA/D,CAAP;UACH,CAFD;QAGH;MACJ,CATM,CAAP;IAUH,CAlCD,WAmCW,UAAUA,CAAV,EAAa;MACpBpH,KAAK,CAACqH,IAAN,CAAW,OAAX,EAAoBD,CAApB;IACH,CArCD;EAsCH,CA/CD,CAtHqD,CAsKrD;;;EACA5H,iBAAiB,CAACxB,SAAlB,CAA4BuD,oBAA5B,GAAmD,UAAU+F,gBAAV,EAA4B;IAC3E,IAAIhH,KAAK,GAAG,IAAZ;;IACA,IAAIiH,SAAS,GAAGD,gBAAgB,CAACC,SAAjC;IAAA,IAA4CvB,GAAG,GAAGsB,gBAAgB,CAACtB,GAAnE;IAAA,IAAwEC,MAAM,GAAGqB,gBAAgB,CAACrB,MAAlG;IACAjG,KAAK,CAACoC,IAAN,CAAW,uBAAX,EAAoC;MAAEmF,SAAS,EAAEA;IAAb,CAApC;;IACA,KAAKC,mBAAL,CAAyBvB,MAAzB,EAAiC,UAAUhB,cAAV,EAA0B;MACvD,IAAIwC,MAAM,GAAG,IAAIC,qBAAJ,CAA0B;QACnCC,IAAI,EAAE,QAD6B;QAEnCX,GAAG,EAAEO;MAF8B,CAA1B,CAAb;MAIAtC,cAAc,CACT2C,oBADL,CAC0BH,MAD1B,EAEKnF,IAFL,CAEU,YAAY;QAClBtC,KAAK,CAACoC,IAAN,CAAW,4BAAX,EAAyCqF,MAAzC;;QACAnH,KAAK,CAACuH,2BAAN,CAAkC5B,MAAlC;MACH,CALD,WAMW,UAAUmB,CAAV,EAAa;QACpBpH,KAAK,CAACqH,IAAN,CAAW,OAAX,EAAoBD,CAApB;MACH,CARD;IASH,CAdD;EAeH,CAnBD,CAvKqD,CA2LrD;;;EACA5H,iBAAiB,CAACxB,SAAlB,CAA4B6D,wBAA5B,GAAuD,UAAUiG,qBAAV,EAAiC;IACpF,IAAIxH,KAAK,GAAG,IAAZ;;IACA,IAAI2F,MAAM,GAAG6B,qBAAqB,CAAC7B,MAAnC;IACAjG,KAAK,CAACoC,IAAN,CAAW,0BAAX;;IACA,KAAKoF,mBAAL,CAAyBvB,MAAzB,EAAiC,UAAUhB,cAAV,EAA0B;MACvD3E,KAAK,CAACyH,sBAAN,CAA6B9C,cAA7B,EADuD,CAEvD;;IACH,CAHD;EAIH,CARD,CA5LqD,CAqMrD;EACA;EACA;;;EACAzF,iBAAiB,CAACxB,SAAlB,CAA4B2D,gBAA5B,GAA+C,UAAUqG,aAAV,EAAyB;IACpE,IAAI1H,KAAK,GAAG,IAAZ;;IACA,IAAIyG,QAAQ,GAAGiB,aAAa,CAACjB,QAA7B;IAAA,IAAuCd,MAAM,GAAG+B,aAAa,CAAC/B,MAA9D;IAAA,IAAsED,GAAG,GAAGgC,aAAa,CAAChC,GAA1F;IACAhG,KAAK,CAACoC,IAAN,CAAW,mBAAX,EAAgC;MAAE2E,QAAQ,EAAEA;IAAZ,CAAhC;;IACA,IAAI9B,cAAc,GAAG,KAAKiB,qBAAL,CAA2BD,MAA3B,EAAmCrG,gBAAgB,CAACuG,iBAAjB,CAAmC8B,SAAtE,EAAiFrI,gBAAgB,CAACyG,iBAAjB,CAAmC6B,IAApH,CAArB;;IACA,KAAKxB,sBAAL,CACKC,qBADL,CAC2B/G,gBAAgB,CAACyG,iBAAjB,CAAmC6B,IAD9D,EAEK5F,IAFL,CAEU,UAAUuC,WAAV,EAAuB;MAC7B,IAAIA,WAAJ,EAAiB;QACb7E,KAAK,CAACoC,IAAN,CAAW,sDAAX;QACAyC,WAAW,CAACK,SAAZ,GAAwBF,OAAxB,CAAgC,UAAUG,KAAV,EAAiB;UAC7CF,cAAc,CAAC2B,QAAf,CAAwBzB,KAAxB,EAA+BN,WAA/B;UACA7E,KAAK,CAACoC,IAAN,CAAW,WAAW+C,KAAK,CAACK,IAAjB,GAAwB,iCAAnC;QACH,CAHD;MAIH,CAND,MAOK;QACDxF,KAAK,CAACoC,IAAN,CAAW,0CAAX;MACH;IACJ,CAbD,EAcKE,IAdL,CAcU,YAAY;MAClB,IAAI6F,UAAU,GAAG,IAAIT,qBAAJ,CAA0B;QAAEC,IAAI,EAAE,OAAR;QAAiBX,GAAG,EAAED;MAAtB,CAA1B,CAAjB;MACA,OAAO9B,cAAc,CAAC2C,oBAAf,CAAoCO,UAApC,EAAgD7F,IAAhD,CAAqD,YAAY;QACpEtC,KAAK,CAACoC,IAAN,CAAW,4BAAX,EAAyC+F,UAAzC;QACA,OAAOlD,cAAc,CAACmD,YAAf,GAA8B9F,IAA9B,CAAmC,UAAUiF,SAAV,EAAqB;UAC3DvH,KAAK,CAACoC,IAAN,CAAW,iCAAX,EAA8CmF,SAA9C;;UACAjH,KAAK,CAACE,OAAN,CAAc+B,IAAd,CAAmB1C,eAAe,CAAC2C,aAAhB,CAA8BC,QAA9B,CAAuC4F,UAA1D,EAAsE;YAClErC,GAAG,EAAEA,GAD6D;YAElEC,MAAM,EAAEA,MAF0D;YAGlEjE,SAAS,EAAE1B,KAAK,CAACyB,cAAN,CAAqBC,SAHkC;YAIlEuF,SAAS,EAAEA,SAAS,CAACP;UAJ6C,CAAtE;;UAMA,OAAO/B,cAAc,CAACgC,mBAAf,CAAmCM,SAAnC,EAA8CjF,IAA9C,CAAmD,YAAY;YAClEtC,KAAK,CAACoC,IAAN,CAAW,qCAAX;;YACA9B,KAAK,CAACuH,2BAAN,CAAkC5B,MAAlC;;YACA3F,KAAK,CAAC4G,yBAAN,CAAgCjC,cAAhC;UACH,CAJM,CAAP;QAKH,CAbM,CAAP;MAcH,CAhBM,CAAP;IAiBH,CAjCD,WAkCW,UAAUmC,CAAV,EAAa;MACpBpH,KAAK,CAAC4C,KAAN,CAAY,2BAAZ,EAAyCwE,CAAzC;MACA,MAAMA,CAAN;IACH,CArCD;EAsCH,CA3CD,CAxMqD,CAoPrD;;;EACA5H,iBAAiB,CAACxB,SAAlB,CAA4B4D,8BAA5B,GAA6D,YAAY;IACrE5B,KAAK,CAACoC,IAAN,CAAW,wDAAX,EAAqExC,gBAAgB,CAACkD,4BAAjB,CAA8CwF,wBAAnH;;IACA,KAAKtF,mBAAL,CAAyBpD,gBAAgB,CAACkD,4BAAjB,CAA8CwF,wBAAvE,WAAuG,UAAU1F,KAAV,EAAiB;MACpH5C,KAAK,CAACqH,IAAN,CAAW,4DAAX,EAAyEzE,KAAzE;IACH,CAFD;EAGH,CALD,CArPqD,CA2PrD;EACA;EACA;;;EACApD,iBAAiB,CAACxB,SAAlB,CAA4BuK,sBAA5B,GAAqD,UAAUC,UAAV,EAAsB;IACvE,IAAIlI,KAAK,GAAG,IAAZ,CADuE,CAEvE;;;IACAN,KAAK,CAACoC,IAAN,CAAW,qEAAX,EAAkFxC,gBAAgB,CAACkD,4BAAjB,CAA8C2F,wBAAhI;;IACA,KAAK1D,gBAAL,CAAsBC,OAAtB,CAA8B,UAAUC,cAAV,EAA0B;MACpD3E,KAAK,CAAC0C,mBAAN,CAA0BpD,gBAAgB,CAACkD,4BAAjB,CAA8C2F,wBAAxE,WAAwG,YAAY;QAAE,OAAO9J,SAAP;MAAmB,CAAzI;IACH,CAFD;;IAGA,OAAOsE,OAAO,CAACC,OAAR,EAAP;EACH,CARD;;EASA1D,iBAAiB,CAACxB,SAAlB,CAA4B0K,oBAA5B,GAAmD,UAAUF,UAAV,EAAsB3D,WAAtB,EAAmC;IAClF;IACA,OAAO5B,OAAO,CAACC,OAAR,EAAP;EACH,CAHD;;EAIA1D,iBAAiB,CAACxB,SAAlB,CAA4B2K,mBAA5B,GAAkD,UAAUC,UAAV,EAAsB;IACpE,IAAIC,qBAAqB,GAAG,KAAKC,6BAAL,CAAmCF,UAAnC,CAA5B;;IACA,IAAIC,qBAAqB,KAAK,IAA9B,EAAoC;MAChC,OAAOA,qBAAqB,CAACE,QAAtB,CAA+BH,UAA/B,CAAP;IACH;;IACD,OAAO3F,OAAO,CAACE,MAAR,CAAe,IAAI6F,KAAJ,CAAU,oCAAV,CAAf,CAAP;EACH,CAND,CA3QqD,CAkRrD;;;EACAxJ,iBAAiB,CAACxB,SAAlB,CAA4BgF,mBAA5B,GAAkD,UAAU0B,MAAV,EAAkB;IAChE,IAAIpE,KAAK,GAAG,IAAZ;;IACA,KAAKyE,gBAAL,CAAsBC,OAAtB,CAA8B,UAAUC,cAAV,EAA0B;MACpD3E,KAAK,CAACyH,sBAAN,CAA6B9C,cAA7B;IACH,CAFD;;IAGA,IAAI,KAAKzE,OAAT,EAAkB;MACdR,KAAK,CAACoC,IAAN,CAAW,4BAAX,EAAyCsC,MAAzC;MACA,KAAKuE,iBAAL;MACA,KAAKzI,OAAL,GAAe,IAAf;MACA0I,UAAU,CAAC,YAAY;QAAE,OAAO5I,KAAK,CAACC,gBAAN,CAAuB4I,qBAAvB,CAA6CzE,MAA7C,CAAP;MAA8D,CAA7E,CAAV;IACH;;IACD,OAAOzB,OAAO,CAACC,OAAR,EAAP;EACH,CAZD;;EAaA1D,iBAAiB,CAACxB,SAAlB,CAA4BkI,qBAA5B,GAAoD,UAAUD,MAAV,EAAkBmD,kBAAlB,EAAsCC,kBAAtC,EAA0D;IAC1G,IAAI/I,KAAK,GAAG,IAAZ;;IACA,IAAI,KAAKyE,gBAAL,CAAsBjG,GAAtB,CAA0BmH,MAA1B,CAAJ,EAAuC;MACnC,MAAM,IAAI+C,KAAJ,CAAU,KAAKjH,cAAL,CAAoBY,UAApB,GAAiC,uBAAjC,GAA2DsD,MAA3D,GAAoE,iBAA9E,CAAN;IACH;;IACD,IAAIhB,cAAc,GAAG,IAAIqE,iBAAJ,CAAsB,KAAKjI,cAA3B,CAArB;IACA4D,cAAc,CAACgB,MAAf,GAAwBA,MAAxB;IACAhB,cAAc,CAACsE,QAAf,GAA0BH,kBAA1B;IACAnE,cAAc,CAACuE,iBAAf,GAAmC,EAAnC;IACAvE,cAAc,CAACwE,QAAf,GAA0BJ,kBAA1B;IACApE,cAAc,CAACyE,mBAAf,GAAqC,IAArC;;IACAzE,cAAc,CAAC0E,uBAAf,GAAyC,YAAY;MACjD3J,KAAK,CAACoC,IAAN,CAAW,yBAAX,EAAsC6C,cAAtC;IACH,CAFD;;IAGAA,cAAc,CAAC2E,0BAAf,GAA4C,UAAUC,KAAV,EAAiB;MACzD7J,KAAK,CAACoC,IAAN,CAAW,mCAAmC6D,MAAnC,GAA4C,mBAA5C,GAAkE4D,KAAK,CAACC,aAAN,CAAoBC,kBAAjG,EAAqHF,KAArH;MACA,IAAIG,OAAO,GAAGH,KAAK,CAACC,aAAN,CAAoBC,kBAAlC;MACAE,YAAY,CAAChF,cAAc,CAACyE,mBAAhB,CAAZ;;MACA,IAAI,CAAC,QAAD,EAAW,cAAX,EAA2B,QAA3B,EAAqCQ,OAArC,CAA6CF,OAA7C,IAAwD,CAAC,CAA7D,EAAgE;QAC5D1J,KAAK,CAAC6J,qBAAN,CAA4BlF,cAA5B;MACH,CAFD,MAGK,IAAI+E,OAAO,KAAK,WAAhB,EAA6B;QAC9B1J,KAAK,CAAC8J,yBAAN,CAAgCnF,cAAhC;MACH;IACJ,CAVD;;IAWAA,cAAc,CAACoF,cAAf,GAAgC,UAAUC,KAAV,EAAiB;MAC7C,IAAIA,KAAK,CAACC,SAAV,EAAqB;QACjBvK,KAAK,CAACoC,IAAN,CAAW9B,KAAK,CAACyB,cAAN,CAAqBY,UAArB,GAAkC,0BAA7C,EAAyE2H,KAAK,CAACC,SAA/E;;QACAjK,KAAK,CAACE,OAAN,CAAc+B,IAAd,CAAmB1C,eAAe,CAAC2C,aAAhB,CAA8BC,QAA9B,CAAuCgC,aAA1D,EAAyE;UACrEzC,SAAS,EAAE1B,KAAK,CAACyB,cAAN,CAAqBC,SADqC;UAErEiE,MAAM,EAAEA,MAF6D;UAGrEsE,SAAS,EAAED,KAAK,CAACC,SAHoD;UAIrE5H,UAAU,EAAErC,KAAK,CAACyB,cAAN,CAAqBY;QAJoC,CAAzE;MAMH,CARD,MASK;QACD3C,KAAK,CAACoC,IAAN,CAAW,yCAAX,EAAsDkI,KAAtD;MACH;IACJ,CAbD;;IAcArF,cAAc,CAACuF,OAAf,GAAyB,UAAUC,UAAV,EAAsB;MAC3C,IAAItF,KAAK,GAAGsF,UAAU,CAACtF,KAAvB;MACAnF,KAAK,CAACoC,IAAN,CAAW,mDAAmD+C,KAAK,CAACK,IAApE,EAA0EL,KAA1E;;MACA7E,KAAK,CAACoK,oBAAN,CAA2BzF,cAA3B,EAA2CE,KAA3C;;MACA,IAAIF,cAAc,CAAC0F,eAAf,KAAmC,WAAvC,EAAoD;QAChDrK,KAAK,CAAC8J,yBAAN,CAAgCnF,cAAhC;MACH;IACJ,CAPD;;IAQA,KAAKF,gBAAL,CAAsB6F,GAAtB,CAA0B3E,MAA1B,EAAkChB,cAAlC;;IACAjF,KAAK,CAACoC,IAAN,CAAWgH,kBAAkB,GAAG,yBAAhC;IACA,OAAOnE,cAAP;EACH,CAlDD;;EAmDAzF,iBAAiB,CAACxB,SAAlB,CAA4BkJ,yBAA5B,GAAwD,UAAUjC,cAAV,EAA0B;IAC9E,IAAI3E,KAAK,GAAG,IAAZ;;IACA2J,YAAY,CAAChF,cAAc,CAACyE,mBAAhB,CAAZ;IACAzE,cAAc,CAACyE,mBAAf,GAAqCR,UAAU,CAAC,YAAY;MACxDlJ,KAAK,CAACoC,IAAN,CAAW,kCAAX,EAA+C6C,cAA/C;;MACA3E,KAAK,CAACuK,4BAAN,CAAmC5F,cAAnC;IACH,CAH8C,EAG5C,KAAKlD,cAAL,CAAoB+I,8BAApB,GAAqD,IAHT,CAA/C;EAIH,CAPD;;EAQAtL,iBAAiB,CAACxB,SAAlB,CAA4B6M,4BAA5B,GAA2D,UAAU5F,cAAV,EAA0B;IACjFjF,KAAK,CAACoC,IAAN,CAAW,sDAAX,EAAmExC,gBAAgB,CAACkD,4BAAjB,CAA8CiI,gCAAjH;;IACA,IAAI9F,cAAc,CAACwE,QAAf,KAA4B7J,gBAAgB,CAACyG,iBAAjB,CAAmC6B,IAAnE,EAAyE;MACrE,KAAKlF,mBAAL,CAAyBpD,gBAAgB,CAACkD,4BAAjB,CAA8CiI,gCAAvE,WAA+G,YAAY;QAAE,OAAOpM,SAAP;MAAmB,CAAhJ;IACH;EACJ,CALD;;EAMAa,iBAAiB,CAACxB,SAAlB,CAA4B+J,sBAA5B,GAAqD,UAAU9C,cAAV,EAA0B;IAC3EjF,KAAK,CAACoC,IAAN,CAAW,2BAAX,EAAwC6C,cAAc,CAACsE,QAAvD;IACAtE,cAAc,CAACuF,OAAf,GAAyB,IAAzB;IACAvF,cAAc,CAACoF,cAAf,GAAgC,IAAhC;IACApF,cAAc,CAAC0E,uBAAf,GAAyC,IAAzC;IACA1E,cAAc,CAAC2E,0BAAf,GAA4C,IAA5C;IACA3E,cAAc,CAAC+F,yBAAf,GAA2C,IAA3C;IACAf,YAAY,CAAChF,cAAc,CAACyE,mBAAhB,CAAZ;IACA,KAAKuB,gCAAL,CAAsChG,cAAtC,WAA4D,YAAY;MAAE,OAAOtG,SAAP;IAAmB,CAA7F;;IACA,KAAKoG,gBAAL,WAA6BE,cAAc,CAACgB,MAA5C;;IACAhB,cAAc,CAACiG,KAAf;EACH,CAXD;;EAYA1L,iBAAiB,CAACxB,SAAlB,CAA4BwJ,mBAA5B,GAAkD,UAAUvB,MAAV,EAAkBkF,QAAlB,EAA4B;IAC1E,IAAI,KAAKpG,gBAAL,CAAsBjG,GAAtB,CAA0BmH,MAA1B,CAAJ,EAAuC;MACnC,OAAOkF,QAAQ,CAAC,KAAKpG,gBAAL,CAAsBjG,GAAtB,CAA0BmH,MAA1B,CAAD,CAAf;IACH;;IACD,OAAOtH,SAAP;EACH,CALD,CA7WqD,CAmXrD;EACA;;;EACAa,iBAAiB,CAACxB,SAAlB,CAA4ByD,4BAA5B,GAA2D,UAAU2J,gBAAV,EAA4B;IACnF,IAAIb,SAAS,GAAGa,gBAAgB,CAACb,SAAjC;IAAA,IAA4CtE,MAAM,GAAGmF,gBAAgB,CAACnF,MAAtE;IACAjG,KAAK,CAACoC,IAAN,CAAW,8BAAX,EAA2CmI,SAA3C;;IACA,IAAI,CAACA,SAAL,EAAgB;MACZvK,KAAK,CAACoC,IAAN,CAAW,iEAAX;MACA;IACH;;IACD,IAAI6C,cAAc,GAAG,KAAKF,gBAAL,CAAsBjG,GAAtB,CAA0BmH,MAA1B,CAArB;;IACA,IAAI,CAAChB,cAAD,IAAmB,CAACA,cAAc,CAACoG,iBAAvC,EAA0D;MACtDrL,KAAK,CAACoC,IAAN,CAAW,uBAAX,EAAoCmI,SAApC;;MACA,KAAKe,kBAAL,CAAwBf,SAAxB,EAAmCtE,MAAnC;;MACA;IACH;;IACDjG,KAAK,CAACoC,IAAN,CAAW,2BAAX,EAAwCmI,SAAxC;;IACA,KAAKgB,sBAAL,CAA4BhB,SAA5B,EAAuCtF,cAAvC,WAA6D,YAAY;MAAE,OAAOtG,SAAP;IAAmB,CAA9F;EACH,CAfD;;EAgBAa,iBAAiB,CAACxB,SAAlB,CAA4BuN,sBAA5B,GAAqD,UAAUC,YAAV,EAAwBvG,cAAxB,EAAwC;IACzF,OAAOA,cAAc,CAChBwG,eADE,CACcD,YADd,EAEFlJ,IAFE,CAEG,YAAY;MAClBtC,KAAK,CAACoC,IAAN,CAAW,sCAAX;IACH,CAJM,WAKI,UAAUgF,CAAV,EAAa;MACpBpH,KAAK,CAACqH,IAAN,CAAW,+CAAX,EAA4DD,CAA5D;MACA,MAAMA,CAAN;IACH,CARM,CAAP;EASH,CAVD;;EAWA5H,iBAAiB,CAACxB,SAAlB,CAA4B6J,2BAA5B,GAA0D,UAAU5B,MAAV,EAAkB;IACxE,IAAI3F,KAAK,GAAG,IAAZ;;IACA,KAAKkH,mBAAL,CAAyBvB,MAAzB,EAAiC,UAAUhB,cAAV,EAA0B;MACvD,IAAIyG,WAAW,GAAGpL,KAAK,CAACG,gBAAN,CAAuBwF,MAAvB,CAAlB;;MACA,IAAIyF,WAAJ,EAAiB;QACbA,WAAW,CAAC1G,OAAZ,CAAoB,UAAU2G,UAAV,EAAsB;UACtC3L,KAAK,CAACoC,IAAN,CAAW,wCAAX;;UACA9B,KAAK,CAACiL,sBAAN,CAA6BI,UAA7B,EAAyC1G,cAAzC,WAA+D,YAAY;YAAE,OAAOtG,SAAP;UAAmB,CAAhG;QACH,CAHD;MAIH,CALD,MAMK;QACDqB,KAAK,CAACoC,IAAN,CAAW,+BAAX,EAA4C6D,MAA5C;MACH;IACJ,CAXD;EAYH,CAdD;;EAeAzG,iBAAiB,CAACxB,SAAlB,CAA4BsN,kBAA5B,GAAiD,UAAUE,YAAV,EAAwBvF,MAAxB,EAAgC;IAC7E,IAAI,CAAC,KAAKxF,gBAAL,CAAsBwF,MAAtB,CAAL,EAAoC;MAChC,KAAKxF,gBAAL,CAAsBwF,MAAtB,IAAgC,EAAhC;IACH;;IACD,KAAKxF,gBAAL,CAAsBwF,MAAtB,EAA8BR,IAA9B,CAAmC+F,YAAnC;EACH,CALD;;EAMAhM,iBAAiB,CAACxB,SAAlB,CAA4BmM,qBAA5B,GAAoD,UAAUlF,cAAV,EAA0B;IAC1EjF,KAAK,CAACoC,IAAN,CAAW,+CAAX,EAA4DxC,gBAAgB,CAACkD,4BAAjB,CAA8C8I,yBAA1G;;IACA,KAAK5I,mBAAL,CAAyBpD,gBAAgB,CAACkD,4BAAjB,CAA8C8I,yBAAvE,WAAwG,YAAY;MAAE,OAAOjN,SAAP;IAAmB,CAAzI;EACH,CAHD,CAraqD,CAyarD;;;EACAa,iBAAiB,CAACxB,SAAlB,CAA4BiL,iBAA5B,GAAgD,YAAY;IACxD,IAAI,KAAKzI,OAAT,EAAkB;MACd,KAAKA,OAAL,CAAaqL,GAAb;;MACA,KAAKrL,OAAL,CAAaqC,UAAb;IACH;EACJ,CALD;;EAMA,OAAOrD,iBAAP;AACH,CAjbsC,CAibrCO,kBAAkB,CAAC+L,gBAjbkB,CAAvC;;AAkbAvM,OAAO,CAACC,iBAAR,GAA4BA,iBAA5B","file":"SessionTurn.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TurnWebRtcSession = void 0;\nvar io = __importStar(require(\"socket.io-client\"));\nvar once_1 = __importDefault(require(\"lodash/once\"));\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar TurnConstants_1 = require(\"./TurnConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar MediaSessionBase_1 = require(\"./MediaSessionBase\");\nvar trace = MediaTracer_1.getMediaTracer('TurnWebRtcSession');\n//Currently this version supports subscribing only. Publishing will be implemented as needed.\nvar TurnWebRtcSession = /** @class */ (function (_super) {\n __extends(TurnWebRtcSession, _super);\n function TurnWebRtcSession(sessionParams, sessionHandlers, streamFactory) {\n var _this = _super.call(this, sessionParams, streamFactory) || this;\n _this._sessionHandlers = sessionHandlers;\n _this._socket = null;\n _this._pendingPeersIce = {};\n var iceServers = sessionParams.credentials.ice.map(function (item) { return ({\n urls: item.url,\n username: item.login,\n credential: item.password\n }); });\n _this._configuration = {\n iceServers: iceServers,\n iceTransportPolicy: 'relay'\n };\n _this._joinResponseHandler = _this._joinResponseHandler.bind(_this);\n _this._iceCandidateReceivedHandler = _this._iceCandidateReceivedHandler.bind(_this);\n _this._sendOfferHandler = _this._sendOfferHandler.bind(_this);\n _this._sdpOfferHandler = _this._sdpOfferHandler.bind(_this);\n _this._initiatorPeerReconnectHandler = _this._initiatorPeerReconnectHandler.bind(_this);\n _this._peerDisconnectedHandler = _this._peerDisconnectedHandler.bind(_this);\n _this._onSocketDisconnectedHandler = _this._onSocketDisconnectedHandler.bind(_this);\n return _this;\n }\n Object.defineProperty(TurnWebRtcSession.prototype, \"id\", {\n get: function () {\n return this._sessionParams.sessionId;\n },\n enumerable: false,\n configurable: true\n });\n //#region Socket Connectivity\n TurnWebRtcSession.prototype.connect = function (connectOnly) {\n var _this = this;\n if (connectOnly === void 0) { connectOnly = false; }\n trace.info('Connect to session');\n return this._connectSocket(this._sessionParams.credentials.url, connectOnly)\n .then(function () {\n trace.info('Joining SessionId: ' + _this._sessionParams.sessionId);\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.JOIN_ROOM, {\n clientType: _this._sessionParams.clientType,\n sessionId: _this._sessionParams.sessionId\n });\n })\n .catch(function (error) {\n throw error;\n });\n };\n TurnWebRtcSession.prototype.disconnect = function () {\n trace.info('disconnect - call disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.ForcedByConsumer);\n return this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.ForcedByConsumer);\n };\n TurnWebRtcSession.prototype._connectSocket = function (url, connectOnly) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var socket = (_this._socket = io.connect(url, {\n forceNew: true,\n reconnectionDelay: TurnConstants_1.SOCKET_RECONNECTION_DELAY,\n reconnectionDelayMax: TurnConstants_1.SOCKET_RECONNECTION_DELAY_MAX,\n reconnectionAttempts: TurnConstants_1.SOCKET_RECONNECTION_ATTEMPTS,\n path: TurnConstants_1.SOCKET_PATH\n }));\n var done = once_1.default(function (err) {\n err ? reject(err) : resolve();\n });\n socket.once('connect', function () { return done(); });\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.ERROR, done);\n socket.on('connect_error', done);\n socket.on('connect_timeout', done);\n socket.on('disconnect', _this._onSocketDisconnectedHandler);\n if (!connectOnly) {\n trace.info('Subscribing socket events');\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.SEND_OFFER, _this._sendOfferHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.JOIN_RESPONSE, _this._joinResponseHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.PEER_DISCONNECTED, _this._peerDisconnectedHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.SDP_OFFER, _this._sdpOfferHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.PUBLISHER_RECONNECT, _this._initiatorPeerReconnectHandler);\n socket.on(TurnConstants_1.SOCKET_EVENTS.INCOMING.ICE_CANDIDATE, _this._iceCandidateReceivedHandler);\n }\n });\n };\n TurnWebRtcSession.prototype._onSocketDisconnectedHandler = function (reason) {\n if (this._socket) {\n // The initial example of differentiating between \"forced\" disconnect and \"network\" disconnect is taken from:\n // https://socket.io/docs/client-api/#Event-%E2%80%98disconnect%E2%80%99\n if (reason !== 'io server disconnect' && reason !== 'io client disconnect') {\n trace.info('_onSocketDisconnectedHandler disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.SignalingChannelDisconnect);\n // the disconnection was initiated by the server or by client, you need to call (connect) manually\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.SignalingChannelDisconnect).catch(function () { return undefined; });\n }\n }\n };\n TurnWebRtcSession.prototype.replaceStreamTracks = function (mediaStream) {\n var promises = [];\n if (mediaStream && this._peerConnections) {\n trace.info('replaceStreamTracks - Replace local tracks to peer connection');\n this._peerConnections.forEach(function (peerConnection) {\n mediaStream.getTracks().forEach(function (track) {\n var sender = peerConnection.getSenders().find(function (s) { return s.track.kind === track.kind; });\n if (sender) {\n promises.push(sender\n .replaceTrack(track)\n .then(function () {\n return trace.info(\"replaceStreamTracks - Local \" + track.kind + \" \" + track.id + \" track replace to peer connection\");\n }));\n }\n });\n });\n }\n return Promise.all(promises).then(function () {\n window.mediaStreamAlreadyReplaced = true;\n trace.info('replaceStreamTracks: replace stream tracks - Success');\n });\n };\n //#endregion\n //#region WebRTC Initiator - session Initiator (User on mobile device)\n // Received by Initiator, causing him to emit SDP_OFFER\n TurnWebRtcSession.prototype._sendOfferHandler = function (sendOfferEventData) {\n var _this = this;\n var uid = sendOfferEventData.uid, peerId = sendOfferEventData.peerId;\n trace.info('_sendOfferHandler');\n //Currently we not support of passing role through signaling, so we assume every connection is \"AGENT\" like\n var peerConnection = this._createPeerConnection(peerId, MediaConstants_1.SessionClientType.GUEST, MediaConstants_1.SessionClientRole.AGENT);\n var offerParams = { offerToReceiveAudio: true, offerToReceiveVideo: true };\n //TODO - Alex: Currently we not sending \"role\" through signaling, and by default we assume that the one who asks fot offer, is agent.\n //On later stages we can send or the client \"role\" or the list of \"streams\" that peer is interested in.\n this._sessionStreamsManager\n .getMediaStreamForRole(MediaConstants_1.SessionClientRole.AGENT)\n .then(function (mediaStream) {\n trace.info('_sendOfferHandler stream and peer created');\n if (mediaStream) {\n trace.info('Adding local tracks to peer connection for sending offer');\n mediaStream.getTracks().forEach(function (track) {\n peerConnection.addTrack(track, mediaStream);\n trace.info(\"Local \" + track.kind + \" \" + track.id + \" track added to peer connection\");\n });\n }\n else {\n trace.info('No media stream was found for publishing');\n }\n })\n .then(function () { return peerConnection.createOffer(offerParams); })\n .then(function (offerDesc) {\n trace.info('Initiator has created sdp offer', { offerDesc: offerDesc });\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.SDP_OFFER, {\n uid: uid,\n peerId: peerId,\n sessionId: _this._sessionParams.sessionId,\n sdpOffer: offerDesc.sdp\n });\n return peerConnection.setLocalDescription(offerDesc).then(function () {\n trace.info('Local description was set on peerConnection', peerConnection);\n _this._setPeerConnectionMonitor(peerConnection);\n // make sure using the tracks of the last stream that used\n if (window.latestUserMediaStream && window.mediaStreamAlreadyReplaced) {\n _this.replaceStreamTracks(window.latestUserMediaStream.mediaStream).catch(function (e) {\n return trace.warn('_sendOfferHandler - Failed to replaceStreamTrace', e);\n });\n }\n });\n })\n .catch(function (e) {\n trace.warn('Error', e);\n });\n };\n // Received by the Initiator: Indicates that publish should be started\n TurnWebRtcSession.prototype._joinResponseHandler = function (joinResponseData) {\n var _this = this;\n var sdpAnswer = joinResponseData.sdpAnswer, uid = joinResponseData.uid, peerId = joinResponseData.peerId;\n trace.info('joinResponse Received', { sdpAnswer: sdpAnswer });\n this._withPeerConnection(peerId, function (peerConnection) {\n var answer = new RTCSessionDescription({\n type: 'answer',\n sdp: sdpAnswer\n });\n peerConnection\n .setRemoteDescription(answer)\n .then(function () {\n trace.info('Remote description was set', answer);\n _this._processQueuedIceCandidates(peerId);\n })\n .catch(function (e) {\n trace.warn('Error', e);\n });\n });\n };\n // Received by Initiator after a guests socket has been disconnected\n TurnWebRtcSession.prototype._peerDisconnectedHandler = function (peerDisconnectedEvent) {\n var _this = this;\n var peerId = peerDisconnectedEvent.peerId;\n trace.info('_peerDisconnectedHandler');\n this._withPeerConnection(peerId, function (peerConnection) {\n _this._destroyPeerConnection(peerConnection);\n //this._disconnectInternal(MediaSessionDisconnectReason.PeerDisconnected).catch(() => undefined);\n });\n };\n //#endregion WebRTC Initiator - session Initiator (User on mobile device)\n //#region WebRTC Guest - session Guest (Agent on dashboard platform)\n // Received by Guest, causing him to emit SDP_ANSWER\n TurnWebRtcSession.prototype._sdpOfferHandler = function (sdpOfferEvent) {\n var _this = this;\n var sdpOffer = sdpOfferEvent.sdpOffer, peerId = sdpOfferEvent.peerId, uid = sdpOfferEvent.uid;\n trace.info('sdpOffer Received', { sdpOffer: sdpOffer });\n var peerConnection = this._createPeerConnection(peerId, MediaConstants_1.SessionClientType.INITIATOR, MediaConstants_1.SessionClientRole.USER);\n this._sessionStreamsManager\n .getMediaStreamForRole(MediaConstants_1.SessionClientRole.USER)\n .then(function (mediaStream) {\n if (mediaStream) {\n trace.info('Adding local tracks to peer connection offer handler');\n mediaStream.getTracks().forEach(function (track) {\n peerConnection.addTrack(track, mediaStream);\n trace.info(\"Local \" + track.kind + \" track added to peer connection\");\n });\n }\n else {\n trace.info('No media stream was found for publishing');\n }\n })\n .then(function () {\n var remoteDesc = new RTCSessionDescription({ type: 'offer', sdp: sdpOffer });\n return peerConnection.setRemoteDescription(remoteDesc).then(function () {\n trace.info('Remote description was set', remoteDesc);\n return peerConnection.createAnswer().then(function (sdpAnswer) {\n trace.info('_sdpOfferHandler answer created', sdpAnswer);\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.SDP_ANSWER, {\n uid: uid,\n peerId: peerId,\n sessionId: _this._sessionParams.sessionId,\n sdpAnswer: sdpAnswer.sdp\n });\n return peerConnection.setLocalDescription(sdpAnswer).then(function () {\n trace.info('_sdpOfferHandler local desc was set');\n _this._processQueuedIceCandidates(peerId);\n _this._setPeerConnectionMonitor(peerConnection);\n });\n });\n });\n })\n .catch(function (e) {\n trace.error('Error in _sdpOfferHandler', e);\n throw e;\n });\n };\n // Received by Guest after an Initiator reconnects to room\n TurnWebRtcSession.prototype._initiatorPeerReconnectHandler = function () {\n trace.info('_initiatorPeerReconnectHandler disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.InitiatorPeerReconnected);\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.InitiatorPeerReconnected).catch(function (error) {\n trace.warn('Error while disconnecting during userPeerReconnectHandler.', error);\n });\n };\n //#endregion WebRTC Guest - session Guest (Agent on dashboard platform)\n //#region Peer Connection\n //#region Streams Handling\n TurnWebRtcSession.prototype.onMediaStreamDestroyed = function (clientRole) {\n var _this = this;\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation\n trace.info('onMediaStreamDestroyed disconnect all peer connections from session', MediaConstants_1.MediaSessionDisconnectReason.PublishedStreamDestroyed);\n this._peerConnections.forEach(function (peerConnection) {\n _this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.PublishedStreamDestroyed).catch(function () { return undefined; });\n });\n return Promise.resolve();\n };\n TurnWebRtcSession.prototype.onMediaStreamRenewed = function (clientRole, mediaStream) {\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation\n return Promise.resolve();\n };\n TurnWebRtcSession.prototype.getRemoteTrackStats = function (mediaTrack) {\n var peerConnectionOfTrack = this.getPeerConnectionByMediaTrack(mediaTrack);\n if (peerConnectionOfTrack !== null) {\n return peerConnectionOfTrack.getStats(mediaTrack);\n }\n return Promise.reject(new Error('Provided track is not remote track'));\n };\n //#endregion\n TurnWebRtcSession.prototype._disconnectInternal = function (reason) {\n var _this = this;\n this._peerConnections.forEach(function (peerConnection) {\n _this._destroyPeerConnection(peerConnection);\n });\n if (this._socket) {\n trace.info('Disconnecting from session', reason);\n this.sessionDisconnect();\n this._socket = null;\n setTimeout(function () { return _this._sessionHandlers.onDisconnectedHandler(reason); });\n }\n return Promise.resolve();\n };\n TurnWebRtcSession.prototype._createPeerConnection = function (peerId, peerConnectionType, peerConnectionRole) {\n var _this = this;\n if (this._peerConnections.get(peerId)) {\n throw new Error(this._sessionParams.clientType + \" peer connection for \" + peerId + \" already exists\");\n }\n var peerConnection = new RTCPeerConnection(this._configuration);\n peerConnection.peerId = peerId;\n peerConnection.peerType = peerConnectionType;\n peerConnection.remoteMediaTracks = [];\n peerConnection.peerRole = peerConnectionRole;\n peerConnection.connectionTimoutPrt = null;\n peerConnection.onconnectionstatechange = function () {\n trace.info('onconnectionstatechange', peerConnection);\n };\n peerConnection.oniceconnectionstatechange = function (state) {\n trace.info(\"ICE Connection state for peer \" + peerId + \" was changed to: \" + state.currentTarget.iceConnectionState, state);\n var cnState = state.currentTarget.iceConnectionState;\n clearTimeout(peerConnection.connectionTimoutPrt);\n if (['closed', 'disconnected', 'failed'].indexOf(cnState) > -1) {\n _this._iceStateDisconnected(peerConnection);\n }\n else if (cnState === 'connected') {\n _this.registerPeersRemoteTracks(peerConnection);\n }\n };\n peerConnection.onicecandidate = function (event) {\n if (event.candidate) {\n trace.info(_this._sessionParams.clientType + \" peerConn.onicecandidate\", event.candidate);\n _this._socket.emit(TurnConstants_1.SOCKET_EVENTS.OUTGOING.ICE_CANDIDATE, {\n sessionId: _this._sessionParams.sessionId,\n peerId: peerId,\n candidate: event.candidate,\n clientType: _this._sessionParams.clientType\n });\n }\n else {\n trace.info('ICE Candidate is null in peerConnection', event);\n }\n };\n peerConnection.ontrack = function (trackEvent) {\n var track = trackEvent.track;\n trace.info(\"MediaStreamTrack arrived from peerConnection: \" + track.kind, track);\n _this.addRemoteTrackToPeer(peerConnection, track);\n if (peerConnection.connectionState === 'connected') {\n _this.registerPeersRemoteTracks(peerConnection);\n }\n };\n this._peerConnections.set(peerId, peerConnection);\n trace.info(peerConnectionType + \" peerConnection created\");\n return peerConnection;\n };\n TurnWebRtcSession.prototype._setPeerConnectionMonitor = function (peerConnection) {\n var _this = this;\n clearTimeout(peerConnection.connectionTimoutPrt);\n peerConnection.connectionTimoutPrt = setTimeout(function () {\n trace.info('PeerConnection ICE state timeout', peerConnection);\n _this._handlePeerConnectionTimeout(peerConnection);\n }, this._sessionParams.peerConnectivityTimeoutSeconds * 1000);\n };\n TurnWebRtcSession.prototype._handlePeerConnectionTimeout = function (peerConnection) {\n trace.info('_handlePeerConnectionTimeout disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionStateChangeTimeout);\n if (peerConnection.peerRole === MediaConstants_1.SessionClientRole.USER) {\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionStateChangeTimeout).catch(function () { return undefined; });\n }\n };\n TurnWebRtcSession.prototype._destroyPeerConnection = function (peerConnection) {\n trace.info('Destroying PeerConnection', peerConnection.peerType);\n peerConnection.ontrack = null;\n peerConnection.onicecandidate = null;\n peerConnection.onconnectionstatechange = null;\n peerConnection.oniceconnectionstatechange = null;\n peerConnection.onicegatheringstatechange = null;\n clearTimeout(peerConnection.connectionTimoutPrt);\n this.unregisterPeersRemoteMediaTracks(peerConnection).catch(function () { return undefined; });\n this._peerConnections.delete(peerConnection.peerId);\n peerConnection.close();\n };\n TurnWebRtcSession.prototype._withPeerConnection = function (peerId, callback) {\n if (this._peerConnections.get(peerId)) {\n return callback(this._peerConnections.get(peerId));\n }\n return undefined;\n };\n //#endregion\n //#region ICE Candidates\n TurnWebRtcSession.prototype._iceCandidateReceivedHandler = function (iceCandidateData) {\n var candidate = iceCandidateData.candidate, peerId = iceCandidateData.peerId;\n trace.info('_iceCandidateReceivedHandler', candidate);\n if (!candidate) {\n trace.info('Unexpected case, iceCandidate message arrived without candidate');\n return;\n }\n var peerConnection = this._peerConnections.get(peerId);\n if (!peerConnection || !peerConnection.remoteDescription) {\n trace.info('Queueing iceCandidate', candidate);\n this._queueIceCandidate(candidate, peerId);\n return;\n }\n trace.info('Going to add iceCandidate', candidate);\n this._addIceCandidateToPeer(candidate, peerConnection).catch(function () { return undefined; });\n };\n TurnWebRtcSession.prototype._addIceCandidateToPeer = function (iceCandidate, peerConnection) {\n return peerConnection\n .addIceCandidate(iceCandidate)\n .then(function () {\n trace.info('ICE Candidate add to peer connection');\n })\n .catch(function (e) {\n trace.warn('Error adding ICE Candidate to peer connection', e);\n throw e;\n });\n };\n TurnWebRtcSession.prototype._processQueuedIceCandidates = function (peerId) {\n var _this = this;\n this._withPeerConnection(peerId, function (peerConnection) {\n var pendingIces = _this._pendingPeersIce[peerId];\n if (pendingIces) {\n pendingIces.forEach(function (pendingIce) {\n trace.info('Adding pending ICE to peer connections');\n _this._addIceCandidateToPeer(pendingIce, peerConnection).catch(function () { return undefined; });\n });\n }\n else {\n trace.info('No pending ICE found for peer', peerId);\n }\n });\n };\n TurnWebRtcSession.prototype._queueIceCandidate = function (iceCandidate, peerId) {\n if (!this._pendingPeersIce[peerId]) {\n this._pendingPeersIce[peerId] = [];\n }\n this._pendingPeersIce[peerId].push(iceCandidate);\n };\n TurnWebRtcSession.prototype._iceStateDisconnected = function (peerConnection) {\n trace.info('_iceStateDisconnected disconnect from session', MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionInterrupted);\n this._disconnectInternal(MediaConstants_1.MediaSessionDisconnectReason.PeerConnectionInterrupted).catch(function () { return undefined; });\n };\n //#endregion\n TurnWebRtcSession.prototype.sessionDisconnect = function () {\n if (this._socket) {\n this._socket.off();\n this._socket.disconnect();\n }\n };\n return TurnWebRtcSession;\n}(MediaSessionBase_1.MediaSessionBase));\nexports.TurnWebRtcSession = TurnWebRtcSession;\n\n//# sourceMappingURL=SessionTurn.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaSession/TurnConstants.js"],"names":["Object","defineProperty","exports","value","SOCKET_PATH","SOCKET_RECONNECTION_ATTEMPTS","SOCKET_RECONNECTION_DELAY_MAX","SOCKET_RECONNECTION_DELAY","SOCKET_EVENTS","OUTGOING","ICE_CANDIDATE","JOIN_ROOM","SDP_OFFER","SDP_ANSWER","INCOMING","JOIN_RESPONSE","ERROR","SEND_OFFER","PUBLISHER_RECONNECT","PEER_DISCONNECTED"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;
|
|
1
|
+
{"version":3,"sources":["MediaSession/TurnConstants.js"],"names":["Object","defineProperty","exports","value","SOCKET_PATH","SOCKET_RECONNECTION_ATTEMPTS","SOCKET_RECONNECTION_DELAY_MAX","SOCKET_RECONNECTION_DELAY","SOCKET_EVENTS","OUTGOING","ICE_CANDIDATE","JOIN_ROOM","SDP_OFFER","SDP_ANSWER","INCOMING","JOIN_RESPONSE","ERROR","SEND_OFFER","PUBLISHER_RECONNECT","PEER_DISCONNECTED"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,WAAR,GAAsBF,OAAO,CAACG,4BAAR,GAAuCH,OAAO,CAACI,6BAAR,GAAwCJ,OAAO,CAACK,yBAAR,GAAoCL,OAAO,CAACM,aAAR,GAAwB,KAAK,CAAtK;AACAN,OAAO,CAACM,aAAR,GAAwB;EACpBC,QAAQ,EAAE;IACN;IACAC,aAAa,EAAE,gBAFT;IAGN;IACAC,SAAS,EAAE,UAJL;IAKN;IACAC,SAAS,EAAE,cANL;IAON;IACAC,UAAU,EAAE;EARN,CADU;EAWpBC,QAAQ,EAAE;IACN;IACA;IACAC,aAAa,EAAE,cAHT;IAIN;IACAL,aAAa,EAAE,cALT;IAMN;IACAM,KAAK,EAAE,cAPD;IAQN;IACAC,UAAU,EAAE,WATN;IAUN;IACAL,SAAS,EAAE,cAXL;IAYN;IACAM,mBAAmB,EAAE,oBAbf;IAcN;IACAC,iBAAiB,EAAE;EAfb;AAXU,CAAxB;AA6BAjB,OAAO,CAACK,yBAAR,GAAoC,IAApC,EAA0CL,OAAO,CAACI,6BAAR,GAAwC,IAAlF,EAAwFJ,OAAO,CAACG,4BAAR,GAAuC,GAA/H,EAAoIH,OAAO,CAACE,WAAR,GAAsB,aAA1J","file":"TurnConstants.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SOCKET_PATH = exports.SOCKET_RECONNECTION_ATTEMPTS = exports.SOCKET_RECONNECTION_DELAY_MAX = exports.SOCKET_RECONNECTION_DELAY = exports.SOCKET_EVENTS = void 0;\nexports.SOCKET_EVENTS = {\n OUTGOING: {\n // Emitted to a peer, offering an ICE candidate\n ICE_CANDIDATE: 'onIceCandidate',\n // Initial event, sent by pub/sub as a request to create/join a room\n JOIN_ROOM: 'joinRoom',\n // Sent by publisher, as a response to an SDP offer request (SEND_OFFER)\n SDP_OFFER: 'sdpOfferSend',\n // An SDP response (emitted after receiving an SDP offer)\n SDP_ANSWER: 'sdpAnswerSend'\n },\n INCOMING: {\n // In TURN - Received by a publisher, as a response to an SDP_ANSWER sent by a subscriber\n // In KMS - Received after JOIN_PIPELINE is processed\n JOIN_RESPONSE: 'joinResponse',\n // An incoming ICE candidate sent by a peer\n ICE_CANDIDATE: 'iceCandidate',\n // An error occured in the signaling server\n ERROR: 'errorOccured',\n // Received by a publisher (sent by signaling server when a peer joining a room)\n SEND_OFFER: 'sendOffer',\n // Recieved by a subscriber when publisher sent an SDP offer\n SDP_OFFER: 'sdpOfferRecv',\n // Recieved by all subscribers, when the publisher has reconnected\n PUBLISHER_RECONNECT: 'publisherReconnect',\n // Recieved by the publisher, when a subscriber has disconnected\n PEER_DISCONNECTED: 'peerDisconnected'\n }\n};\nexports.SOCKET_RECONNECTION_DELAY = 3000, exports.SOCKET_RECONNECTION_DELAY_MAX = 6000, exports.SOCKET_RECONNECTION_ATTEMPTS = 100, exports.SOCKET_PATH = '/socket2.io';\n\n//# sourceMappingURL=TurnConstants.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaSubscriber.js","../src/MediaSubscriber.ts"],"names":["Object","defineProperty","exports","value","TechseeMediaSubscriber","events_1","require","MediaDomUtils_1","MediaConstants_1","MediaTracer_1","Compatibility_1","trace","getMediaTracer","privateEvents","subscriberParams","_isDisposed","_isPlaying","_hasVideo","_hasAudio","_mediaElement","info","videoResizeHandler","bind","_emitter","EventEmitter","_subscriberParams","prototype","get","streamType","enumerable","configurable","container","muted","mediaElement","videoWidth","videoHeight","offsetWidth","offsetHeight","muteSound","isMuted","throwIfDisposed","emitEvent","STREAM_STATE_CHANGE","onStateChanged","callback","on","onDispose","SUBSCRIBER_DISPOSE","renderStream","stream","_this","stopRenderInternal","then","renderMediaStreamToVideoEl","mediaStream","videoEl","getAudioTracks","length","getVideoTracks","setPlayingState","streamKind","error","warn","stopRendering","dispose","undefined","removeAllListeners","finalize","isPlaying","KnownMediaStreamKind","Video","disposeResizeHandler_1","resizeHandler","onMediaElementResize","resolution","resolutionFormat","calculateResolution","document","body","contains","removeVideoElementFromDom","Promise","resolve","event","eventArgs","setTimeout","emit","Error"],"mappings":"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","file":"MediaSubscriber.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TechseeMediaSubscriber = void 0;\nvar events_1 = require(\"events\");\nvar MediaDomUtils_1 = require(\"./MediaUtils/MediaDomUtils\");\nvar MediaConstants_1 = require(\"./MediaConstants\");\nvar MediaTracer_1 = require(\"./MediaUtils/MediaTracer\");\nvar Compatibility_1 = require(\"./MediaUtils/Compatibility\");\nvar trace = MediaTracer_1.getMediaTracer('MediaSubscriber');\nvar privateEvents;\n(function (privateEvents) {\n privateEvents[\"STREAM_STATE_CHANGE\"] = \"STREAM_STATE_CHANGE\";\n privateEvents[\"SUBSCRIBER_DISPOSE\"] = \"SUBSCRIBER_DISPOSE\";\n})(privateEvents || (privateEvents = {}));\nvar TechseeMediaSubscriber = /** @class */ (function () {\n function TechseeMediaSubscriber(subscriberParams) {\n this._isDisposed = false;\n this._isPlaying = false;\n this._hasVideo = false;\n this._hasAudio = false;\n this._mediaElement = null;\n trace.info('Subscriber created');\n this.videoResizeHandler = this.videoResizeHandler.bind(this);\n this._emitter = new events_1.EventEmitter();\n this._subscriberParams = subscriberParams;\n }\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"streamType\", {\n //#region IMediaSubscriber\n get: function () {\n return this._subscriberParams.streamType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"container\", {\n get: function () {\n return this._subscriberParams.container;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"isPlaying\", {\n get: function () {\n return this._isPlaying;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"isSoundMuted\", {\n get: function () {\n if (!this._mediaElement) {\n return true;\n }\n return this._mediaElement.muted;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"hasAudio\", {\n get: function () {\n return this._hasAudio;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"hasVideo\", {\n get: function () {\n return this._hasVideo;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"mediaElement\", {\n get: function () {\n return this._mediaElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"videoWidth\", {\n get: function () {\n return this.mediaElement ? this.mediaElement.videoWidth : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"videoHeight\", {\n get: function () {\n return this.mediaElement ? this.mediaElement.videoHeight : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"renderWidth\", {\n get: function () {\n return this.container.offsetWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"renderHeight\", {\n get: function () {\n return this.container.offsetHeight;\n },\n enumerable: false,\n configurable: true\n });\n TechseeMediaSubscriber.prototype.muteSound = function (isMuted) {\n this.throwIfDisposed();\n trace.info('Subscriber mute change - isMuted =', isMuted);\n if (this._mediaElement && this._mediaElement.muted !== isMuted) {\n this._mediaElement.muted = isMuted;\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n }\n };\n TechseeMediaSubscriber.prototype.onStateChanged = function (callback) {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.STREAM_STATE_CHANGE, callback);\n };\n TechseeMediaSubscriber.prototype.onDispose = function (callback) {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.SUBSCRIBER_DISPOSE, callback);\n };\n //#endregion\n //#region Non Interface Methods\n TechseeMediaSubscriber.prototype.renderStream = function (stream) {\n var _this = this;\n this.throwIfDisposed();\n this.stopRenderInternal()\n .then(function () { return MediaDomUtils_1.renderMediaStreamToVideoEl(_this.container, stream.mediaStream, stream.streamType); })\n .then(function (videoEl) {\n _this._hasAudio = stream.mediaStream.getAudioTracks().length > 0;\n _this._hasVideo = stream.mediaStream.getVideoTracks().length > 0;\n _this.setPlayingState(videoEl, stream.streamKind);\n if (_this._hasAudio) {\n _this.muteSound(false);\n }\n })\n .catch(function (error) {\n trace.warn('Error while rendering stream on video element', error);\n });\n };\n TechseeMediaSubscriber.prototype.stopRendering = function () {\n var _this = this;\n return this.stopRenderInternal().then(function () { return _this.setPlayingState(); });\n };\n TechseeMediaSubscriber.prototype.dispose = function () {\n if (this._isDisposed) {\n return;\n }\n this.stopRendering().catch(function () { return undefined; });\n this._isDisposed = true;\n this._emitter.removeAllListeners();\n trace.info('Subscriber disposed');\n this.emitEvent(privateEvents.SUBSCRIBER_DISPOSE);\n };\n //#endregion\n TechseeMediaSubscriber.prototype.setPlayingState = function (mediaElement, streamKind) {\n var _this = this;\n this._isPlaying = !!mediaElement;\n this._mediaElement = mediaElement || null;\n var finalize = function () {\n _this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n trace.info(\"Video element \" + (streamKind || '') + \" \" + (_this.isPlaying ? 'play' : 'stop') + \" success\");\n };\n if (this._mediaElement && streamKind === MediaConstants_1.KnownMediaStreamKind.Video) {\n if (this._mediaElement.videoHeight === 0) {\n var disposeResizeHandler_1 = null;\n var resizeHandler = function () {\n disposeResizeHandler_1 && disposeResizeHandler_1();\n Compatibility_1.onMediaElementResize(_this._mediaElement, _this.videoResizeHandler);\n finalize();\n };\n disposeResizeHandler_1 = Compatibility_1.onMediaElementResize(this._mediaElement, resizeHandler);\n }\n else {\n Compatibility_1.onMediaElementResize(this._mediaElement, this.videoResizeHandler);\n finalize();\n }\n }\n else {\n finalize();\n }\n };\n TechseeMediaSubscriber.prototype.videoResizeHandler = function () {\n trace.info(\"Video resize, new size = w: \" + this.videoWidth + \" h:\" + this.videoHeight);\n var resolution = { videoWidth: this.videoWidth, videoHeight: this.videoHeight };\n var resolutionFormat = MediaDomUtils_1.calculateResolution(resolution);\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE, { resolutionFormat: resolutionFormat });\n };\n TechseeMediaSubscriber.prototype.stopRenderInternal = function () {\n if (this._mediaElement && document.body.contains(this._mediaElement)) {\n return MediaDomUtils_1.removeVideoElementFromDom(this._mediaElement);\n }\n return Promise.resolve();\n };\n TechseeMediaSubscriber.prototype.emitEvent = function (event, eventArgs) {\n var _this = this;\n setTimeout(function () {\n _this._emitter.emit(event, eventArgs);\n });\n };\n TechseeMediaSubscriber.prototype.throwIfDisposed = function () {\n if (this._isDisposed) {\n throw new Error('Subscriber is already disposed');\n }\n };\n return TechseeMediaSubscriber;\n}());\nexports.TechseeMediaSubscriber = TechseeMediaSubscriber;\n\n//# sourceMappingURL=MediaSubscriber.js.map\n","import {EventEmitter} from 'events';\nimport {Nullable} from '@techsee/techsee-common';\nimport {IMediaSubscriber, MediaSubscriberParams} from './MediaContracts';\nimport {TechseeMediaStream} from './TechseeMediaStream';\nimport {calculateResolution, removeVideoElementFromDom, renderMediaStreamToVideoEl} from './MediaUtils/MediaDomUtils';\nimport {KnownMediaStream, KnownMediaStreamKind} from './MediaConstants';\n\nimport {getMediaTracer} from './MediaUtils/MediaTracer';\nimport {onMediaElementResize} from './MediaUtils/Compatibility';\n\nconst trace = getMediaTracer('MediaSubscriber');\n\nenum privateEvents {\n STREAM_STATE_CHANGE = 'STREAM_STATE_CHANGE',\n SUBSCRIBER_DISPOSE = 'SUBSCRIBER_DISPOSE'\n}\n\nexport class TechseeMediaSubscriber implements IMediaSubscriber {\n private _emitter: EventEmitter;\n private _isDisposed = false;\n private _isPlaying = false;\n private _hasVideo = false;\n private _hasAudio = false;\n private _mediaElement: Nullable<HTMLVideoElement> = null;\n private readonly _subscriberParams: MediaSubscriberParams;\n\n constructor(subscriberParams: MediaSubscriberParams) {\n trace.info('Subscriber created');\n\n this.videoResizeHandler = this.videoResizeHandler.bind(this);\n\n this._emitter = new EventEmitter();\n this._subscriberParams = subscriberParams;\n }\n\n //#region IMediaSubscriber\n\n get streamType(): KnownMediaStream {\n return this._subscriberParams.streamType;\n }\n\n get container(): HTMLDivElement {\n return this._subscriberParams.container;\n }\n\n get isPlaying(): boolean {\n return this._isPlaying;\n }\n\n get isSoundMuted(): boolean {\n if (!this._mediaElement) {\n return true;\n }\n\n return this._mediaElement.muted;\n }\n\n get hasAudio(): boolean {\n return this._hasAudio;\n }\n\n get hasVideo(): boolean {\n return this._hasVideo;\n }\n\n get mediaElement(): Nullable<HTMLVideoElement> {\n return this._mediaElement;\n }\n\n get videoWidth(): number {\n return this.mediaElement ? this.mediaElement.videoWidth : 0;\n }\n\n get videoHeight(): number {\n return this.mediaElement ? this.mediaElement.videoHeight : 0;\n }\n\n get renderWidth(): number {\n return this.container.offsetWidth;\n }\n\n get renderHeight(): number {\n return this.container.offsetHeight;\n }\n\n muteSound(isMuted: boolean): void {\n this.throwIfDisposed();\n trace.info('Subscriber mute change - isMuted =', isMuted);\n if (this._mediaElement && this._mediaElement.muted !== isMuted) {\n this._mediaElement.muted = isMuted;\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n }\n }\n\n onStateChanged(callback: () => void): void {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.STREAM_STATE_CHANGE, callback);\n }\n\n onDispose(callback: () => void): void {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.SUBSCRIBER_DISPOSE, callback);\n }\n\n //#endregion\n\n //#region Non Interface Methods\n\n renderStream(stream: TechseeMediaStream): void {\n this.throwIfDisposed();\n this.stopRenderInternal()\n .then(() => renderMediaStreamToVideoEl(this.container, stream.mediaStream, stream.streamType))\n .then((videoEl) => {\n this._hasAudio = stream.mediaStream.getAudioTracks().length > 0;\n this._hasVideo = stream.mediaStream.getVideoTracks().length > 0;\n\n this.setPlayingState(videoEl, stream.streamKind);\n\n if (this._hasAudio) {\n this.muteSound(false);\n }\n })\n .catch((error) => {\n trace.warn('Error while rendering stream on video element', error);\n });\n }\n\n stopRendering(): Promise<void> {\n return this.stopRenderInternal().then(() => this.setPlayingState());\n }\n\n dispose(): void {\n if (this._isDisposed) {\n return;\n }\n\n this.stopRendering().catch(() => undefined);\n\n this._isDisposed = true;\n this._emitter.removeAllListeners();\n trace.info('Subscriber disposed');\n this.emitEvent(privateEvents.SUBSCRIBER_DISPOSE);\n }\n\n //#endregion\n\n private setPlayingState(mediaElement?: HTMLVideoElement, streamKind?: KnownMediaStreamKind): void {\n this._isPlaying = !!mediaElement;\n this._mediaElement = mediaElement || null;\n\n const finalize = (): void => {\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n trace.info(`Video element ${streamKind || ''} ${this.isPlaying ? 'play' : 'stop'} success`);\n };\n\n if (this._mediaElement && streamKind === KnownMediaStreamKind.Video) {\n if (this._mediaElement.videoHeight === 0) {\n let disposeResizeHandler: any = null;\n const resizeHandler = (): void => {\n disposeResizeHandler && disposeResizeHandler();\n onMediaElementResize(this._mediaElement, this.videoResizeHandler);\n finalize();\n };\n\n disposeResizeHandler = onMediaElementResize(this._mediaElement, resizeHandler);\n } else {\n onMediaElementResize(this._mediaElement, this.videoResizeHandler);\n finalize();\n }\n } else {\n finalize();\n }\n }\n\n private videoResizeHandler(): void {\n trace.info(`Video resize, new size = w: ${this.videoWidth} h:${this.videoHeight}`);\n const resolution = {videoWidth: this.videoWidth, videoHeight: this.videoHeight};\n const resolutionFormat = calculateResolution(resolution);\n\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE, {resolutionFormat});\n }\n\n private stopRenderInternal() {\n if (this._mediaElement && document.body.contains(this._mediaElement)) {\n return removeVideoElementFromDom(this._mediaElement);\n }\n\n return Promise.resolve();\n }\n\n private emitEvent(event: string, eventArgs?: any): void {\n setTimeout(() => {\n this._emitter.emit(event, eventArgs);\n });\n }\n\n private throwIfDisposed(): void {\n if (this._isDisposed) {\n throw new Error('Subscriber is already disposed');\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaSubscriber.js","../src/MediaSubscriber.ts"],"names":["Object","defineProperty","exports","value","TechseeMediaSubscriber","events_1","require","MediaDomUtils_1","MediaConstants_1","MediaTracer_1","Compatibility_1","trace","getMediaTracer","privateEvents","subscriberParams","_isDisposed","_isPlaying","_hasVideo","_hasAudio","_mediaElement","info","videoResizeHandler","bind","_emitter","EventEmitter","_subscriberParams","prototype","get","streamType","enumerable","configurable","container","muted","mediaElement","videoWidth","videoHeight","offsetWidth","offsetHeight","muteSound","isMuted","throwIfDisposed","emitEvent","STREAM_STATE_CHANGE","onStateChanged","callback","on","onDispose","SUBSCRIBER_DISPOSE","renderStream","stream","_this","stopRenderInternal","then","renderMediaStreamToVideoEl","mediaStream","videoEl","getAudioTracks","length","getVideoTracks","setPlayingState","streamKind","error","warn","stopRendering","dispose","undefined","removeAllListeners","finalize","isPlaying","KnownMediaStreamKind","Video","disposeResizeHandler_1","resizeHandler","onMediaElementResize","resolution","resolutionFormat","calculateResolution","document","body","contains","removeVideoElementFromDom","Promise","resolve","event","eventArgs","setTimeout","emit","Error"],"mappings":"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","file":"MediaSubscriber.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TechseeMediaSubscriber = void 0;\nvar events_1 = require(\"events\");\nvar MediaDomUtils_1 = require(\"./MediaUtils/MediaDomUtils\");\nvar MediaConstants_1 = require(\"./MediaConstants\");\nvar MediaTracer_1 = require(\"./MediaUtils/MediaTracer\");\nvar Compatibility_1 = require(\"./MediaUtils/Compatibility\");\nvar trace = MediaTracer_1.getMediaTracer('MediaSubscriber');\nvar privateEvents;\n(function (privateEvents) {\n privateEvents[\"STREAM_STATE_CHANGE\"] = \"STREAM_STATE_CHANGE\";\n privateEvents[\"SUBSCRIBER_DISPOSE\"] = \"SUBSCRIBER_DISPOSE\";\n})(privateEvents || (privateEvents = {}));\nvar TechseeMediaSubscriber = /** @class */ (function () {\n function TechseeMediaSubscriber(subscriberParams) {\n this._isDisposed = false;\n this._isPlaying = false;\n this._hasVideo = false;\n this._hasAudio = false;\n this._mediaElement = null;\n trace.info('Subscriber created');\n this.videoResizeHandler = this.videoResizeHandler.bind(this);\n this._emitter = new events_1.EventEmitter();\n this._subscriberParams = subscriberParams;\n }\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"streamType\", {\n //#region IMediaSubscriber\n get: function () {\n return this._subscriberParams.streamType;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"container\", {\n get: function () {\n return this._subscriberParams.container;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"isPlaying\", {\n get: function () {\n return this._isPlaying;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"isSoundMuted\", {\n get: function () {\n if (!this._mediaElement) {\n return true;\n }\n return this._mediaElement.muted;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"hasAudio\", {\n get: function () {\n return this._hasAudio;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"hasVideo\", {\n get: function () {\n return this._hasVideo;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"mediaElement\", {\n get: function () {\n return this._mediaElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"videoWidth\", {\n get: function () {\n return this.mediaElement ? this.mediaElement.videoWidth : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"videoHeight\", {\n get: function () {\n return this.mediaElement ? this.mediaElement.videoHeight : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"renderWidth\", {\n get: function () {\n return this.container.offsetWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TechseeMediaSubscriber.prototype, \"renderHeight\", {\n get: function () {\n return this.container.offsetHeight;\n },\n enumerable: false,\n configurable: true\n });\n TechseeMediaSubscriber.prototype.muteSound = function (isMuted) {\n this.throwIfDisposed();\n trace.info('Subscriber mute change - isMuted =', isMuted);\n if (this._mediaElement && this._mediaElement.muted !== isMuted) {\n this._mediaElement.muted = isMuted;\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n }\n };\n TechseeMediaSubscriber.prototype.onStateChanged = function (callback) {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.STREAM_STATE_CHANGE, callback);\n };\n TechseeMediaSubscriber.prototype.onDispose = function (callback) {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.SUBSCRIBER_DISPOSE, callback);\n };\n //#endregion\n //#region Non Interface Methods\n TechseeMediaSubscriber.prototype.renderStream = function (stream) {\n var _this = this;\n this.throwIfDisposed();\n this.stopRenderInternal()\n .then(function () { return MediaDomUtils_1.renderMediaStreamToVideoEl(_this.container, stream.mediaStream, stream.streamType); })\n .then(function (videoEl) {\n _this._hasAudio = stream.mediaStream.getAudioTracks().length > 0;\n _this._hasVideo = stream.mediaStream.getVideoTracks().length > 0;\n _this.setPlayingState(videoEl, stream.streamKind);\n if (_this._hasAudio) {\n _this.muteSound(false);\n }\n })\n .catch(function (error) {\n trace.warn('Error while rendering stream on video element', error);\n });\n };\n TechseeMediaSubscriber.prototype.stopRendering = function () {\n var _this = this;\n return this.stopRenderInternal().then(function () { return _this.setPlayingState(); });\n };\n TechseeMediaSubscriber.prototype.dispose = function () {\n if (this._isDisposed) {\n return;\n }\n this.stopRendering().catch(function () { return undefined; });\n this._isDisposed = true;\n this._emitter.removeAllListeners();\n trace.info('Subscriber disposed');\n this.emitEvent(privateEvents.SUBSCRIBER_DISPOSE);\n };\n //#endregion\n TechseeMediaSubscriber.prototype.setPlayingState = function (mediaElement, streamKind) {\n var _this = this;\n this._isPlaying = !!mediaElement;\n this._mediaElement = mediaElement || null;\n var finalize = function () {\n _this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n trace.info(\"Video element \" + (streamKind || '') + \" \" + (_this.isPlaying ? 'play' : 'stop') + \" success\");\n };\n if (this._mediaElement && streamKind === MediaConstants_1.KnownMediaStreamKind.Video) {\n if (this._mediaElement.videoHeight === 0) {\n var disposeResizeHandler_1 = null;\n var resizeHandler = function () {\n disposeResizeHandler_1 && disposeResizeHandler_1();\n Compatibility_1.onMediaElementResize(_this._mediaElement, _this.videoResizeHandler);\n finalize();\n };\n disposeResizeHandler_1 = Compatibility_1.onMediaElementResize(this._mediaElement, resizeHandler);\n }\n else {\n Compatibility_1.onMediaElementResize(this._mediaElement, this.videoResizeHandler);\n finalize();\n }\n }\n else {\n finalize();\n }\n };\n TechseeMediaSubscriber.prototype.videoResizeHandler = function () {\n trace.info(\"Video resize, new size = w: \" + this.videoWidth + \" h:\" + this.videoHeight);\n var resolution = { videoWidth: this.videoWidth, videoHeight: this.videoHeight };\n var resolutionFormat = MediaDomUtils_1.calculateResolution(resolution);\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE, { resolutionFormat: resolutionFormat });\n };\n TechseeMediaSubscriber.prototype.stopRenderInternal = function () {\n if (this._mediaElement && document.body.contains(this._mediaElement)) {\n return MediaDomUtils_1.removeVideoElementFromDom(this._mediaElement);\n }\n return Promise.resolve();\n };\n TechseeMediaSubscriber.prototype.emitEvent = function (event, eventArgs) {\n var _this = this;\n setTimeout(function () {\n _this._emitter.emit(event, eventArgs);\n });\n };\n TechseeMediaSubscriber.prototype.throwIfDisposed = function () {\n if (this._isDisposed) {\n throw new Error('Subscriber is already disposed');\n }\n };\n return TechseeMediaSubscriber;\n}());\nexports.TechseeMediaSubscriber = TechseeMediaSubscriber;\n\n//# sourceMappingURL=MediaSubscriber.js.map\n","import {EventEmitter} from 'events';\nimport {Nullable} from '@techsee/techsee-common';\nimport {IMediaSubscriber, MediaSubscriberParams} from './MediaContracts';\nimport {TechseeMediaStream} from './TechseeMediaStream';\nimport {calculateResolution, removeVideoElementFromDom, renderMediaStreamToVideoEl} from './MediaUtils/MediaDomUtils';\nimport {KnownMediaStream, KnownMediaStreamKind} from './MediaConstants';\n\nimport {getMediaTracer} from './MediaUtils/MediaTracer';\nimport {onMediaElementResize} from './MediaUtils/Compatibility';\n\nconst trace = getMediaTracer('MediaSubscriber');\n\nenum privateEvents {\n STREAM_STATE_CHANGE = 'STREAM_STATE_CHANGE',\n SUBSCRIBER_DISPOSE = 'SUBSCRIBER_DISPOSE'\n}\n\nexport class TechseeMediaSubscriber implements IMediaSubscriber {\n private _emitter: EventEmitter;\n private _isDisposed = false;\n private _isPlaying = false;\n private _hasVideo = false;\n private _hasAudio = false;\n private _mediaElement: Nullable<HTMLVideoElement> = null;\n private readonly _subscriberParams: MediaSubscriberParams;\n\n constructor(subscriberParams: MediaSubscriberParams) {\n trace.info('Subscriber created');\n\n this.videoResizeHandler = this.videoResizeHandler.bind(this);\n\n this._emitter = new EventEmitter();\n this._subscriberParams = subscriberParams;\n }\n\n //#region IMediaSubscriber\n\n get streamType(): KnownMediaStream {\n return this._subscriberParams.streamType;\n }\n\n get container(): HTMLDivElement {\n return this._subscriberParams.container;\n }\n\n get isPlaying(): boolean {\n return this._isPlaying;\n }\n\n get isSoundMuted(): boolean {\n if (!this._mediaElement) {\n return true;\n }\n\n return this._mediaElement.muted;\n }\n\n get hasAudio(): boolean {\n return this._hasAudio;\n }\n\n get hasVideo(): boolean {\n return this._hasVideo;\n }\n\n get mediaElement(): Nullable<HTMLVideoElement> {\n return this._mediaElement;\n }\n\n get videoWidth(): number {\n return this.mediaElement ? this.mediaElement.videoWidth : 0;\n }\n\n get videoHeight(): number {\n return this.mediaElement ? this.mediaElement.videoHeight : 0;\n }\n\n get renderWidth(): number {\n return this.container.offsetWidth;\n }\n\n get renderHeight(): number {\n return this.container.offsetHeight;\n }\n\n muteSound(isMuted: boolean): void {\n this.throwIfDisposed();\n trace.info('Subscriber mute change - isMuted =', isMuted);\n if (this._mediaElement && this._mediaElement.muted !== isMuted) {\n this._mediaElement.muted = isMuted;\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n }\n }\n\n onStateChanged(callback: () => void): void {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.STREAM_STATE_CHANGE, callback);\n }\n\n onDispose(callback: () => void): void {\n this.throwIfDisposed();\n this._emitter.on(privateEvents.SUBSCRIBER_DISPOSE, callback);\n }\n\n //#endregion\n\n //#region Non Interface Methods\n\n renderStream(stream: TechseeMediaStream): void {\n this.throwIfDisposed();\n this.stopRenderInternal()\n .then(() => renderMediaStreamToVideoEl(this.container, stream.mediaStream, stream.streamType))\n .then((videoEl) => {\n this._hasAudio = stream.mediaStream.getAudioTracks().length > 0;\n this._hasVideo = stream.mediaStream.getVideoTracks().length > 0;\n\n this.setPlayingState(videoEl, stream.streamKind);\n\n if (this._hasAudio) {\n this.muteSound(false);\n }\n })\n .catch((error) => {\n trace.warn('Error while rendering stream on video element', error);\n });\n }\n\n stopRendering(): Promise<void> {\n return this.stopRenderInternal().then(() => this.setPlayingState());\n }\n\n dispose(): void {\n if (this._isDisposed) {\n return;\n }\n\n this.stopRendering().catch(() => undefined);\n\n this._isDisposed = true;\n this._emitter.removeAllListeners();\n trace.info('Subscriber disposed');\n this.emitEvent(privateEvents.SUBSCRIBER_DISPOSE);\n }\n\n //#endregion\n\n private setPlayingState(mediaElement?: HTMLVideoElement, streamKind?: KnownMediaStreamKind): void {\n this._isPlaying = !!mediaElement;\n this._mediaElement = mediaElement || null;\n\n const finalize = (): void => {\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE);\n trace.info(`Video element ${streamKind || ''} ${this.isPlaying ? 'play' : 'stop'} success`);\n };\n\n if (this._mediaElement && streamKind === KnownMediaStreamKind.Video) {\n if (this._mediaElement.videoHeight === 0) {\n let disposeResizeHandler: any = null;\n const resizeHandler = (): void => {\n disposeResizeHandler && disposeResizeHandler();\n onMediaElementResize(this._mediaElement, this.videoResizeHandler);\n finalize();\n };\n\n disposeResizeHandler = onMediaElementResize(this._mediaElement, resizeHandler);\n } else {\n onMediaElementResize(this._mediaElement, this.videoResizeHandler);\n finalize();\n }\n } else {\n finalize();\n }\n }\n\n private videoResizeHandler(): void {\n trace.info(`Video resize, new size = w: ${this.videoWidth} h:${this.videoHeight}`);\n const resolution = {videoWidth: this.videoWidth, videoHeight: this.videoHeight};\n const resolutionFormat = calculateResolution(resolution);\n\n this.emitEvent(privateEvents.STREAM_STATE_CHANGE, {resolutionFormat});\n }\n\n private stopRenderInternal() {\n if (this._mediaElement && document.body.contains(this._mediaElement)) {\n return removeVideoElementFromDom(this._mediaElement);\n }\n\n return Promise.resolve();\n }\n\n private emitEvent(event: string, eventArgs?: any): void {\n setTimeout(() => {\n this._emitter.emit(event, eventArgs);\n });\n }\n\n private throwIfDisposed(): void {\n if (this._isDisposed) {\n throw new Error('Subscriber is already disposed');\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","MediaConstants_1","require","isEqual_1","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","_isOTDefined","window","OT","e","Promise","resolve","isDefined","reduce","Array","delay","then","reject","Error","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","removeEventListener","isChrome","majorVersion","warn"],"mappings":"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","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise\n .reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(mediaServiceType) {\n var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;\n var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {\n require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/Compatibility.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","registerWebRTCAdapters","onMediaElementResize","isVideoPlaySupportedOnDevice","enumerateMediaDevices","waitForOpenTokIsLoaded","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","MediaConstants_1","require","isEqual_1","ts_environment_detect_1","MediaTracer_1","trace","getMediaTracer","environmentDetect","TsEnvironmentDetect","isIE11","monitoredIeElements","Map","_isOTDefined","window","OT","e","Promise","resolve","isDefined","reduce","Array","delay","then","reject","Error","getDevices","error","devices","navigator","mediaDevices","enumerateDevices","mediaServiceType","isOpenTokService","MediaServiceType","OPENTOK","isMediaServer","MEDIASERVER","OTPlugin","isInstalled","WebRTCAdapter","mediaElement","onResizeHandler","checkTimeoutPtr","unsubscribeIE","clearTimeout","addEventListener","set","videoWidth","videoHeight","checkElementSize_1","lastElementSize","get","currentSize","setTimeout","removeEventListener","isChrome","majorVersion","warn"],"mappings":"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","file":"Compatibility.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.registerWebRTCAdapters = exports.onMediaElementResize = exports.isVideoPlaySupportedOnDevice = exports.enumerateMediaDevices = exports.waitForOpenTokIsLoaded = exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar isEqual_1 = __importDefault(require(\"lodash/isEqual\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('Compatibility');\nvar environmentDetect = new ts_environment_detect_1.TsEnvironmentDetect();\nvar isIE11 = environmentDetect.isIE11();\nvar monitoredIeElements = new Map();\n// Grace period to wait in the unlikely case that Opentok has not finished initializing,\n// and a session initialization was requested\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS = 10;\nexports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL = 500;\nfunction _isOTDefined() {\n try {\n return !!window.OT;\n }\n catch (e) {\n return false;\n }\n}\nfunction waitForOpenTokIsLoaded() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n var isDefined = false;\n return Promise\n .reduce(new Array(exports.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n return Promise.resolve();\n }\n return Promise.delay(exports.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(function () { return isDefined || Promise.reject(new Error('OT is undefined')); });\n}\nexports.waitForOpenTokIsLoaded = waitForOpenTokIsLoaded;\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if (typeof window.OT !== 'undefined' && window.OT && window.OT.getDevices) {\n window.OT.getDevices(function (error, devices) { return (error ? reject(error) : resolve(devices)); });\n }\n else if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n else {\n reject(new Error('Enumerating media devices is not supported'));\n }\n });\n}\nexports.enumerateMediaDevices = enumerateMediaDevices;\nfunction isVideoPlaySupportedOnDevice(mediaServiceType) {\n var isOpenTokService = mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK;\n var isMediaServer = mediaServiceType === MediaConstants_1.MediaServiceType.MEDIASERVER;\n if (!isIE11) {\n return Promise.resolve(true);\n }\n if (isOpenTokService) {\n return waitForOpenTokIsLoaded().then(function () { return window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled(); });\n }\n if (isMediaServer) {\n return Promise.resolve(false);\n }\n if (window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n return Promise.resolve(false);\n}\nexports.isVideoPlaySupportedOnDevice = isVideoPlaySupportedOnDevice;\nfunction onMediaElementResize(mediaElement, onResizeHandler) {\n var checkTimeoutPtr = null;\n var unsubscribeIE = function () {\n clearTimeout(checkTimeoutPtr);\n monitoredIeElements.delete(mediaElement);\n };\n if (!isIE11) {\n mediaElement.addEventListener('resize', onResizeHandler, false);\n }\n else {\n monitoredIeElements.set(mediaElement, {\n videoWidth: mediaElement.videoWidth,\n videoHeight: mediaElement.videoHeight\n });\n var checkElementSize_1 = function () {\n var lastElementSize = monitoredIeElements.get(mediaElement);\n if (!lastElementSize) {\n unsubscribeIE();\n }\n else {\n var currentSize = { videoWidth: mediaElement.videoWidth, videoHeight: mediaElement.videoHeight };\n checkTimeoutPtr = setTimeout(checkElementSize_1, 500);\n if (!isEqual_1.default(currentSize, lastElementSize)) {\n monitoredIeElements.set(mediaElement, lastElementSize);\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(onResizeHandler);\n }\n }\n };\n checkElementSize_1();\n }\n return function () {\n if (!isIE11) {\n mediaElement && mediaElement.removeEventListener('resize', onResizeHandler);\n }\n else {\n unsubscribeIE();\n }\n };\n}\nexports.onMediaElementResize = onMediaElementResize;\nfunction registerWebRTCAdapters() {\n if (isIE11) {\n require('../webrtc-ie-shim.js');\n }\n else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {\n require('webrtc-adapter/dist/adapter_core'); // eslint-disable-line global-require\n }\n else {\n trace.warn('no WebRTC adapters loaded.');\n }\n}\nexports.registerWebRTCAdapters = registerWebRTCAdapters;\n\n//# sourceMappingURL=Compatibility.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","calculateResolution","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","MediaConstants_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","_a","videoWidth","videoHeight","multiplyResolution","videoResolutionFormat","VideoResolutionFormat","NONE","VideoResolutionMultiplication","HD","SD","container","mediaStream","streamType","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","KnownMediaStream","USER_AUDIO_STREAM","AGENT_AUDIO_STREAM","OBSERVER_AUDIO_STREAM","indexOf","play","setAttribute","playRes","then","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","sourceStream","snapshotOptions","x","y","w","h","crop","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = exports.calculateResolution = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();\nfunction calculateResolution(_a) {\n var videoWidth = _a.videoWidth, videoHeight = _a.videoHeight;\n var multiplyResolution = videoWidth * videoHeight;\n var videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.NONE;\n if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.HD) {\n videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.HD;\n }\n if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.SD &&\n multiplyResolution < MediaConstants_1.VideoResolutionMultiplication.HD) {\n videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.SD;\n }\n return videoResolutionFormat;\n}\nexports.calculateResolution = calculateResolution;\nfunction renderMediaStreamToVideoEl(container, mediaStream, streamType) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n if ([\n MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM,\n MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM,\n MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM\n ].indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n }\n });\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then(function (videoElement) {\n return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n });\n })\n .catch(function (error) {\n // eslint-disable-next-line prettier/prettier\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl'));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
|
|
1
|
+
{"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","calculateResolution","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","MediaConstants_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","_a","videoWidth","videoHeight","multiplyResolution","videoResolutionFormat","VideoResolutionFormat","NONE","VideoResolutionMultiplication","HD","SD","container","mediaStream","streamType","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","KnownMediaStream","USER_AUDIO_STREAM","AGENT_AUDIO_STREAM","OBSERVER_AUDIO_STREAM","indexOf","play","setAttribute","playRes","then","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","sourceStream","snapshotOptions","x","y","w","h","crop","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = exports.calculateResolution = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = new ts_environment_detect_1.TsEnvironmentDetect().isIE11();\nfunction calculateResolution(_a) {\n var videoWidth = _a.videoWidth, videoHeight = _a.videoHeight;\n var multiplyResolution = videoWidth * videoHeight;\n var videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.NONE;\n if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.HD) {\n videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.HD;\n }\n if (multiplyResolution >= MediaConstants_1.VideoResolutionMultiplication.SD &&\n multiplyResolution < MediaConstants_1.VideoResolutionMultiplication.HD) {\n videoResolutionFormat = MediaConstants_1.VideoResolutionFormat.SD;\n }\n return videoResolutionFormat;\n}\nexports.calculateResolution = calculateResolution;\nfunction renderMediaStreamToVideoEl(container, mediaStream, streamType) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n if ([\n MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM,\n MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM,\n MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM\n ].indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n }\n });\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings).then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then(function (videoElement) {\n return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement)).then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n });\n })\n .catch(function (error) {\n // eslint-disable-next-line prettier/prettier\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl'));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;
|
|
1
|
+
{"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,cAAR,GAAyBF,OAAO,CAACG,oBAAR,GAA+B,KAAK,CAA7D;;AACA,IAAIC,QAAQ,GAAGC,OAAO,CAAC,yCAAD,CAAtB;;AACAL,OAAO,CAACG,oBAAR,GAA+B,aAA/B;;AACA,SAASD,cAAT,CAAwBI,WAAxB,EAAqC;EACjC,OAAOF,QAAQ,CAACG,SAAT,CAAmBP,OAAO,CAACG,oBAA3B,EAAiDG,WAAjD,CAAP;AACH;;AACDN,OAAO,CAACE,cAAR,GAAyBA,cAAzB","file":"MediaTracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;\nvar Tracer_1 = require(\"@techsee/techsee-common/lib/core/Tracer\");\nexports.TECHSEE_MEDIA_TRACER = 'MediaTracer';\nfunction getMediaTracer(postfixName) {\n return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);\n}\nexports.getMediaTracer = getMediaTracer;\n\n//# sourceMappingURL=MediaTracer.js.map\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaUtils/index.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","MediaTracer_1","require","enumerable","get"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;
|
|
1
|
+
{"version":3,"sources":["MediaUtils/index.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","MediaTracer_1","require","enumerable","get"],"mappings":"AAAA;;AACAA,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;EAAEC,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,cAAR,GAAyB,KAAK,CAA9B;;AACA,IAAIC,aAAa,GAAGC,OAAO,CAAC,eAAD,CAA3B;;AACAN,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,gBAA/B,EAAiD;EAAEK,UAAU,EAAE,IAAd;EAAoBC,GAAG,EAAE,eAAY;IAAE,OAAOH,aAAa,CAACD,cAArB;EAAsC;AAA7E,CAAjD","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = void 0;\nvar MediaTracer_1 = require(\"./MediaTracer\");\nObject.defineProperty(exports, \"getMediaTracer\", { enumerable: true, get: function () { return MediaTracer_1.getMediaTracer; } });\n\n//# sourceMappingURL=index.js.map\n"]}
|