@techsee/techsee-media-service 0.21.2 → 0.22.0-alphagb2

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.
Files changed (97) hide show
  1. package/lib/LocalStreamManager.js +435 -317
  2. package/lib/LocalStreamManager.js.map +1 -1
  3. package/lib/MediaConstants.js +72 -44
  4. package/lib/MediaConstants.js.map +1 -1
  5. package/lib/MediaContracts.js +3 -3
  6. package/lib/MediaContracts.js.map +1 -1
  7. package/lib/MediaPublisher.js +45 -35
  8. package/lib/MediaPublisher.js.map +1 -1
  9. package/lib/MediaServiceBase.js +922 -706
  10. package/lib/MediaServiceBase.js.map +1 -1
  11. package/lib/MediaSession/MediaServer.js +512 -379
  12. package/lib/MediaSession/MediaServer.js.map +1 -1
  13. package/lib/MediaSession/MediaSessionBase.js +123 -88
  14. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  15. package/lib/MediaSession/SessionOpentok.js +499 -384
  16. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  17. package/lib/MediaSession/SessionTurn.js +606 -466
  18. package/lib/MediaSession/SessionTurn.js.map +1 -1
  19. package/lib/MediaSession/TurnConstants.js +30 -30
  20. package/lib/MediaSession/TurnConstants.js.map +1 -1
  21. package/lib/MediaSubscriber.js +235 -192
  22. package/lib/MediaSubscriber.js.map +1 -1
  23. package/lib/MediaUtils/Compatibility.js +127 -90
  24. package/lib/MediaUtils/Compatibility.js.map +1 -1
  25. package/lib/MediaUtils/MediaDomUtils.js +230 -179
  26. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  27. package/lib/MediaUtils/MediaTracer.js +8 -4
  28. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  29. package/lib/MultiParty/Contracts.js +3 -3
  30. package/lib/MultiParty/Contracts.js.map +1 -1
  31. package/lib/MultiParty/DetectWebRtcService.js +66 -50
  32. package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
  33. package/lib/MultiParty/MediaCapabilitiesHelper.js +258 -154
  34. package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -1
  35. package/lib/MultiParty/MultiParty.d.ts +1 -8
  36. package/lib/MultiParty/MultiParty.d.ts.map +1 -1
  37. package/lib/MultiParty/MultiParty.js +221 -128
  38. package/lib/MultiParty/MultiParty.js.map +1 -1
  39. package/lib/MultiParty/MultipartyFactory.d.ts +1 -2
  40. package/lib/MultiParty/MultipartyFactory.d.ts.map +1 -1
  41. package/lib/MultiParty/MultipartyFactory.js +12 -7
  42. package/lib/MultiParty/MultipartyFactory.js.map +1 -1
  43. package/lib/MultiParty/OpentokMultiparty.js +611 -384
  44. package/lib/MultiParty/OpentokMultiparty.js.map +1 -1
  45. package/lib/TechseeMediaStream.js +58 -53
  46. package/lib/TechseeMediaStream.js.map +1 -1
  47. package/lib/oldCode/constants.js +20 -15
  48. package/lib/oldCode/constants.js.map +1 -1
  49. package/lib/oldCode/event-emitter.js +45 -22
  50. package/lib/oldCode/event-emitter.js.map +1 -1
  51. package/lib/oldCode/index.js +48 -52
  52. package/lib/oldCode/index.js.map +1 -1
  53. package/lib/oldCode/opentok/session.js +261 -236
  54. package/lib/oldCode/opentok/session.js.map +1 -1
  55. package/lib/oldCode/opentok/stream.js +283 -269
  56. package/lib/oldCode/opentok/stream.js.map +1 -1
  57. package/lib/oldCode/publisher.js +96 -71
  58. package/lib/oldCode/publisher.js.map +1 -1
  59. package/lib/oldCode/service.js +294 -272
  60. package/lib/oldCode/service.js.map +1 -1
  61. package/lib/oldCode/session.js +82 -60
  62. package/lib/oldCode/session.js.map +1 -1
  63. package/lib/oldCode/stream.js +153 -125
  64. package/lib/oldCode/stream.js.map +1 -1
  65. package/lib/oldCode/subscriber.js +60 -35
  66. package/lib/oldCode/subscriber.js.map +1 -1
  67. package/lib/oldCode/tracer.js +179 -138
  68. package/lib/oldCode/tracer.js.map +1 -1
  69. package/lib/oldCode/utils/ImageFixer.js +66 -44
  70. package/lib/oldCode/utils/ImageFixer.js.map +1 -1
  71. package/lib/oldCode/webrtc/constants.js +102 -110
  72. package/lib/oldCode/webrtc/constants.js.map +1 -1
  73. package/lib/oldCode/webrtc/helper.js +176 -124
  74. package/lib/oldCode/webrtc/helper.js.map +1 -1
  75. package/lib/oldCode/webrtc/session-kms.js +408 -393
  76. package/lib/oldCode/webrtc/session-kms.js.map +1 -1
  77. package/lib/oldCode/webrtc/session-loopback.js +245 -227
  78. package/lib/oldCode/webrtc/session-loopback.js.map +1 -1
  79. package/lib/oldCode/webrtc/session-turn.js +705 -658
  80. package/lib/oldCode/webrtc/session-turn.js.map +1 -1
  81. package/lib/oldCode/webrtc/session-turn.v2.js +480 -471
  82. package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -1
  83. package/lib/oldCode/webrtc/session.js +12 -6
  84. package/lib/oldCode/webrtc/session.js.map +1 -1
  85. package/lib/oldCode/webrtc/stream.js +526 -504
  86. package/lib/oldCode/webrtc/stream.js.map +1 -1
  87. package/lib/oldCode/webrtc/temasys/adapter-loader.js +5 -6
  88. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -1
  89. package/lib/oldCode/webrtc/temasys/adapter.js +5264 -5192
  90. package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -1
  91. package/lib/oldCode/webrtc/webrtc-ie-shim.js +3357 -2927
  92. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -1
  93. package/lib/qos/raw-qos.js +348 -274
  94. package/lib/qos/raw-qos.js.map +1 -1
  95. package/lib/webrtc-ie-shim.js +3386 -2985
  96. package/lib/webrtc-ie-shim.js.map +1 -1
  97. package/package.json +12 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaSession/MediaServer.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__importDefault","mod","__esModule","defineProperty","exports","value","MediaServerSession","MediaSessionBase_1","require","MediaConstants_1","openvidu_browser_1","MediaTracer_1","guards_1","bluebird_1","get_1","trace","getMediaTracer","_super","sessionParams","streamFactory","_this","OV","_session","_lastStreamEvents","_credentials","credentials","connect","bind","disconnect","onMediaStreamDestroyed","onPublisherDestroyed","onMediaStreamRenewed","createStreamForPublishing","createMediaPublisher","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","get","connection","connectionId","enumerable","configurable","connectOnly","info","error","Promise","reject","OpenVidu","initSession","initSessionEvents","token","clientRole","_sessionParams","catch","err","sessionDisconnect","resolve","promiseDisconnect","_peerConnections","forEach","peerConnection","push","destroyPeerConnection","all","then","removeSessionEvent","off","removeHandlers","getRemoteTrackStats","mediaTrack","undefined","promises","peerRole","destroyPublisherOnPeerConnection","mediaStream","replaceStreamTracks","Error","initHandlers","on","event","emitEvent","recordingEvents","RECORD_STARTED","RECORD_STOPPED","RECONNECTING","stream","sessionExistsGuard","warn","destroySubscriberOnPeerConnection","has","delete","peerId","subscriber","unsubscribe","unregisterPeersRemoteMediaTracks","publisher","unpublish","localStream","createMediaSubscriber","remoteStream","subscribe","ownPeerId","getMediaStream","getTracks","addRemoteTrackToPeer","registerPeersRemoteTracks","destinationRole","_sessionStreamsManager","getMediaStreamForRole","videoSource","audioSource","track","kind","SessionClientRole","USER","ovParams","publishAudio","publishVideo","ovPublisher","initPublisher","default","preventDefault","JSON","parse","data","streams","peerType","clientType","SessionClientType","INITIATOR","GUEST","remoteMediaTracks","connectionTimoutPrt","set","reduce","promiseChain","streamEvent","publish","shouldThrow","connected","throwableGuard","MediaSessionBase"],"mappings":"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","file":"MediaServer.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 __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediaServerSession = void 0;\nvar MediaSessionBase_1 = require(\"./MediaSessionBase\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar openvidu_browser_1 = require(\"@techsee/openvidu-browser\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar guards_1 = require(\"@techsee/techsee-common/lib/core/guards\");\nvar bluebird_1 = require(\"bluebird\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar trace = MediaTracer_1.getMediaTracer('MediaServerSession');\nvar MediaServerSession = /** @class */ (function (_super) {\n __extends(MediaServerSession, _super);\n function MediaServerSession(sessionParams, streamFactory) {\n var _this = _super.call(this, sessionParams, streamFactory) || this;\n _this.OV = null;\n _this._session = null;\n _this._lastStreamEvents = [];\n _this._credentials = sessionParams.credentials;\n _this.connect = _this.connect.bind(_this);\n _this.disconnect = _this.disconnect.bind(_this);\n _this.onMediaStreamDestroyed = _this.onMediaStreamDestroyed.bind(_this);\n _this.onPublisherDestroyed = _this.onPublisherDestroyed.bind(_this);\n _this.onMediaStreamRenewed = _this.onMediaStreamRenewed.bind(_this);\n _this.createStreamForPublishing = _this.createStreamForPublishing.bind(_this);\n _this.createMediaPublisher = _this.createMediaPublisher.bind(_this);\n _this.connectionCreatedHandler = _this.connectionCreatedHandler.bind(_this);\n _this.connectionDestroyedHandler = _this.connectionDestroyedHandler.bind(_this);\n _this.streamCreatedHandler = _this.streamCreatedHandler.bind(_this);\n _this.streamDestroyedHandler = _this.streamDestroyedHandler.bind(_this);\n return _this;\n }\n Object.defineProperty(MediaServerSession.prototype, \"ownPeerId\", {\n get: function () {\n return this._session && this._session.connection ? this._session.connection.connectionId : '';\n },\n enumerable: false,\n configurable: true\n });\n MediaServerSession.prototype.connect = function (connectOnly) {\n trace.info('Connect to session', this._credentials);\n if (this._session) {\n trace.error('Session already exists');\n return bluebird_1.Promise.reject('Cannot connect to session while another session is active');\n }\n // const iceServers = this._credentials.ice.map((item: any) => ({\n // urls: item.url,\n // username: item.login,\n // credential: item.password\n // }));\n this.OV = new openvidu_browser_1.OpenVidu();\n // this.OV.setAdvancedConfiguration({ iceServers });\n this._session = this.OV.initSession();\n this.initSessionEvents();\n return this._session.connect(this._credentials.token, { clientRole: this._sessionParams.clientRole })\n .catch(function (err) {\n trace.error('Error to connect to session Media Server: ', err);\n throw err;\n });\n };\n MediaServerSession.prototype.sessionDisconnect = function () {\n if (this._session) {\n return this._session.disconnect(true);\n }\n };\n MediaServerSession.prototype.disconnect = function () {\n var _this = this;\n return new bluebird_1.Promise(function (resolve) {\n trace.info('Disconnecting from session');\n var promiseDisconnect = [];\n _this._peerConnections.forEach(function (peerConnection) {\n promiseDisconnect.push(_this.destroyPeerConnection(peerConnection));\n });\n return bluebird_1.Promise.all(promiseDisconnect).then(function () {\n if (!_this._session) {\n trace.info('No active session - resolving');\n resolve();\n return;\n }\n _this.removeSessionEvent();\n _this._session.disconnect();\n _this._lastStreamEvents = [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete _this._session;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete _this.OV;\n resolve();\n });\n });\n };\n MediaServerSession.prototype.removeSessionEvent = function () {\n if (!this._session) {\n return;\n }\n this._session.off('connectionCreated');\n this._session.off('streamCreated');\n this._session.off('streamDestroyed');\n this._session.off('connectionDestroyed');\n this._session.off('sessionDisconnected');\n this._session.off('recordingStarted');\n this._session.off('recordingStopped');\n this._sessionParams.removeHandlers && this._sessionParams.removeHandlers();\n trace.info('Remove Events Listener');\n };\n MediaServerSession.prototype.getRemoteTrackStats = function (mediaTrack) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore// @ts-ignore\n return bluebird_1.Promise.resolve(undefined);\n };\n MediaServerSession.prototype.onMediaStreamDestroyed = function (clientRole) {\n var _this = this;\n trace.info('onMediaStreamDestroyed');\n var promises = [];\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnection.peerRole === clientRole) {\n promises.push(_this.destroyPublisherOnPeerConnection(peerConnection));\n }\n });\n return bluebird_1.Promise.all(promises).then(function () { return trace.info('onMediaStreamDestroyed: Success'); });\n };\n MediaServerSession.prototype.onPublisherDestroyed = function (connectionId) {\n trace.info('onPublisherDestroyed');\n var peerConnection = this._peerConnections.get(connectionId);\n if (!peerConnection) {\n return bluebird_1.Promise.resolve();\n }\n return this.destroyPublisherOnPeerConnection(peerConnection);\n };\n MediaServerSession.prototype.onMediaStreamRenewed = function (clientRole, mediaStream) {\n return bluebird_1.Promise.resolve(undefined);\n };\n MediaServerSession.prototype.replaceStreamTracks = function (mediaStream) {\n return bluebird_1.Promise.reject(new Error('Not implemented'));\n };\n MediaServerSession.prototype.initSessionEvents = function () {\n var _this = this;\n if (!this._session) {\n return;\n }\n this._sessionParams.initHandlers && this._sessionParams.initHandlers();\n this._lastStreamEvents = [];\n this._session.on('connectionCreated', this.connectionCreatedHandler);\n this._session.on('streamCreated', this.streamCreatedHandler);\n this._session.on('streamDestroyed', this.streamDestroyedHandler);\n this._session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this._session.on('recordingStarted', function (event) {\n trace.info('recordingStarted event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STARTED, event);\n });\n this._session.on('recordingStopped', function (event) {\n trace.info('recordingStopped event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STOPPED, event);\n });\n this._session.on('reconnecting', function () {\n trace.info('reconnecting event');\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECONNECTING);\n });\n this._session.on('sessionDisconnected', this.disconnect);\n };\n MediaServerSession.prototype.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n if (!this.sessionExistsGuard(false) || !stream) {\n return;\n }\n var peerConnection = this._peerConnections.get(stream.connection.connectionId);\n if (!peerConnection) {\n trace.warn('Peer connection for remote stream not found');\n return;\n }\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () { return undefined; });\n };\n MediaServerSession.prototype.connectionDestroyedHandler = function (event) {\n trace.info('connectionDestroyedHandler', event);\n var connection = event.connection;\n if (!this.sessionExistsGuard(false) || !connection) {\n return;\n }\n if (this._peerConnections.has(connection.connectionId)) {\n var peerConnection = this._peerConnections.get(connection.connectionId);\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () { return undefined; });\n }\n };\n MediaServerSession.prototype.destroyPeerConnection = function (peerConnection) {\n trace.info('destroyPeerConnection');\n this._peerConnections.delete(peerConnection.peerId);\n return bluebird_1.Promise.all([this.destroyPublisherOnPeerConnection(peerConnection),\n this.destroySubscriberOnPeerConnection(peerConnection)]).then(function () { return undefined; })\n .catch(function () {\n trace.warn('destroyPeerConnection - something wrong with destroy');\n });\n };\n MediaServerSession.prototype.destroySubscriberOnPeerConnection = function (peerConnection) {\n trace.info('destroySubscriberOnPeerConnection', peerConnection);\n if (this.sessionExistsGuard(false) && peerConnection.subscriber) {\n this._session.unsubscribe(peerConnection.subscriber);\n }\n trace.info('destroySubscriberOnPeerConnection- before unregisterPeersRemoteMediaTracks');\n return this.unregisterPeersRemoteMediaTracks(peerConnection)\n .catch(function () { return trace.warn('Error removing remote streams from peerConnection'); })\n .then(function () {\n trace.info('destroySubscriberOnPeerConnection- unregisterPeersRemoteMediaTracks successfully');\n peerConnection.subscriber = null;\n });\n };\n MediaServerSession.prototype.destroyPublisherOnPeerConnection = function (peerConnection) {\n trace.info('destroyPublisherOnPeerConnection');\n if (this.sessionExistsGuard(false) && peerConnection.publisher) {\n trace.info('destroyPublisherOnPeerConnection- unpublish!');\n this._session.unpublish(peerConnection.publisher);\n }\n peerConnection.publisher = null;\n peerConnection.localStream = null;\n return bluebird_1.Promise.resolve();\n };\n MediaServerSession.prototype.createMediaSubscriber = function (remoteStream) {\n var _this = this;\n trace.info('createMediaSubscriber');\n return new bluebird_1.Promise(function (resolve, reject) {\n if (!_this.sessionExistsGuard(false)) {\n return reject('Session not exists');\n }\n trace.info('Before create subscriber');\n var subscriber = _this._session.subscribe(remoteStream, '', {}, function (err) {\n if (err) {\n trace.warn('Error creating subscriber', err);\n return reject(err);\n }\n trace.info('create subscriber successfully', subscriber);\n return resolve(subscriber);\n });\n });\n };\n MediaServerSession.prototype.streamCreatedHandler = function (event) {\n var _this = this;\n if (!event) {\n return bluebird_1.Promise.resolve();\n }\n trace.info('streamCreatedHandler', event.stream);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!this.sessionExistsGuard(false) || !stream || connection.connectionId === this.ownPeerId) {\n return bluebird_1.Promise.resolve();\n }\n if (!this._peerConnections.has(connection.connectionId)) {\n trace.warn('Unexpected case, connection should exist, add to streams to subscribe list', event);\n this._lastStreamEvents.push(event);\n return bluebird_1.Promise.resolve();\n }\n var peerConnection = this._peerConnections.get(connection.connectionId);\n trace.info('Subscribing the stream');\n return this.createMediaSubscriber(stream).then(function (subscriber) {\n peerConnection.subscriber = subscriber;\n trace.info('Registering remote media tracks', peerConnection.subscriber);\n subscriber.stream.getMediaStream().getTracks().forEach(function (mediaTrack) {\n _this.addRemoteTrackToPeer(peerConnection, mediaTrack);\n });\n return _this.registerPeersRemoteTracks(peerConnection);\n });\n };\n MediaServerSession.prototype.createStreamForPublishing = function (destinationRole) {\n var _this = this;\n trace.info('createStreamForPublishing');\n return this._sessionStreamsManager.getMediaStreamForRole(destinationRole)\n .then(function (mediaStream) {\n var stream = { videoSource: null, audioSource: null };\n if (mediaStream) {\n trace.info('Media stream found for publishing', mediaStream);\n mediaStream.getTracks().forEach(function (track) {\n if (track.kind === 'video') {\n stream.videoSource = track;\n }\n else if (track.kind === 'audio') {\n stream.audioSource = track;\n }\n });\n }\n else if (_this._sessionParams.clientRole === MediaConstants_1.SessionClientRole.USER) {\n trace.warn('No local media was found for publishing to destinationRole:', destinationRole);\n }\n return stream;\n });\n };\n MediaServerSession.prototype.createMediaPublisher = function (stream) {\n var _this = this;\n var ovParams = {\n videoSource: stream.videoSource ? stream.videoSource : false,\n audioSource: stream.audioSource ? stream.audioSource : false,\n publishAudio: !!stream.audioSource,\n publishVideo: !!stream.videoSource\n };\n return new bluebird_1.Promise(function (resolve, reject) {\n var ovPublisher = _this.OV.initPublisher('', ovParams, function (error) {\n if (error) {\n reject(error);\n return;\n }\n ovPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n var connectionId = get_1.default(event, 'stream.connection.connectionId');\n _this.onPublisherDestroyed(connectionId);\n //We preventing the default, in order to prevent stop the stream by OV.\n //We managing streams by ourselves and if we allow OV to close the stream, it cannot be reused.\n event.preventDefault();\n });\n resolve(ovPublisher);\n });\n });\n };\n MediaServerSession.prototype.connectionCreatedHandler = function (event) {\n var _this = this;\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!this.sessionExistsGuard(false) || !connection) {\n return;\n }\n var destinationRole = JSON.parse(connection.data).clientRole;\n this.createStreamForPublishing(destinationRole)\n .then(function (streams) {\n var peerConnection = {\n peerId: connection.connectionId,\n peerRole: destinationRole,\n peerType: _this._sessionParams.clientType === MediaConstants_1.SessionClientType.INITIATOR\n ? MediaConstants_1.SessionClientType.GUEST : MediaConstants_1.SessionClientType.INITIATOR,\n connection: connection,\n publisher: null,\n subscriber: null,\n remoteMediaTracks: [],\n localStream: streams,\n connectionTimoutPrt: null\n };\n if (connection.connectionId !== _this.ownPeerId || (!streams.videoSource && !streams.audioSource)) {\n trace.info('Peer connection without publisher was created', peerConnection);\n return peerConnection;\n }\n return _this.createMediaPublisher(streams)\n .then(function (publisher) {\n peerConnection.publisher = publisher;\n trace.info('Peer connection with publisher was created', peerConnection);\n return peerConnection;\n });\n })\n .then(function (peerConnection) {\n _this._peerConnections.set(peerConnection.peerId, peerConnection);\n if (connection.connectionId === _this.ownPeerId) {\n trace.info('Before subscribe the event streams');\n return _this._lastStreamEvents.reduce(function (promiseChain, streamEvent) { return promiseChain.then(function () { return _this.streamCreatedHandler(streamEvent); }); }, bluebird_1.Promise.resolve()).then(function () {\n if (peerConnection.publisher) {\n trace.info('Starting publish to peerConnection.publisher');\n return _this._session.publish(peerConnection.publisher)\n .catch(function (err) {\n trace.info('Error during publish', peerConnection.publisher);\n if (peerConnection.publisher) {\n trace.info('Error during publish- unpublish');\n _this._session.unpublish(peerConnection.publisher);\n }\n throw err;\n });\n }\n return bluebird_1.Promise.resolve();\n });\n }\n })\n .catch(function (error) {\n trace.error('Error handling new peer connection', error);\n });\n };\n MediaServerSession.prototype.sessionExistsGuard = function (shouldThrow) {\n if (shouldThrow === void 0) { shouldThrow = true; }\n var connected = !!(this._session && this._session.connection && this._session.connection.connectionId);\n return guards_1.throwableGuard(connected, 'There no MediaServer session exists', shouldThrow);\n };\n return MediaServerSession;\n}(MediaSessionBase_1.MediaSessionBase));\nexports.MediaServerSession = MediaServerSession;\n\n//# sourceMappingURL=MediaServer.js.map\n"]}
1
+ {"version":3,"sources":["MediaSession/MediaServer.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__importDefault","mod","__esModule","defineProperty","exports","value","MediaServerSession","MediaSessionBase_1","require","MediaConstants_1","openvidu_browser_1","MediaTracer_1","guards_1","bluebird_1","get_1","trace","getMediaTracer","_super","sessionParams","streamFactory","_this","OV","_session","_lastStreamEvents","_credentials","credentials","connect","bind","disconnect","onMediaStreamDestroyed","onPublisherDestroyed","onMediaStreamRenewed","createStreamForPublishing","createMediaPublisher","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","get","connection","connectionId","enumerable","configurable","connectOnly","info","error","Promise","reject","OpenVidu","initSession","initSessionEvents","token","clientRole","_sessionParams","err","sessionDisconnect","resolve","promiseDisconnect","_peerConnections","forEach","peerConnection","push","destroyPeerConnection","all","then","removeSessionEvent","off","removeHandlers","getRemoteTrackStats","mediaTrack","undefined","promises","peerRole","destroyPublisherOnPeerConnection","mediaStream","replaceStreamTracks","Error","initHandlers","on","event","emitEvent","recordingEvents","RECORD_STARTED","RECORD_STOPPED","RECONNECTING","stream","sessionExistsGuard","warn","destroySubscriberOnPeerConnection","has","peerId","subscriber","unsubscribe","unregisterPeersRemoteMediaTracks","publisher","unpublish","localStream","createMediaSubscriber","remoteStream","subscribe","ownPeerId","getMediaStream","getTracks","addRemoteTrackToPeer","registerPeersRemoteTracks","destinationRole","_sessionStreamsManager","getMediaStreamForRole","videoSource","audioSource","track","kind","SessionClientRole","USER","ovParams","publishAudio","publishVideo","ovPublisher","initPublisher","preventDefault","JSON","parse","data","streams","peerType","clientType","SessionClientType","INITIATOR","GUEST","remoteMediaTracks","connectionTimoutPrt","set","reduce","promiseChain","streamEvent","publish","shouldThrow","connected","throwableGuard","MediaSessionBase"],"mappings":"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","file":"MediaServer.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 __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediaServerSession = void 0;\nvar MediaSessionBase_1 = require(\"./MediaSessionBase\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar openvidu_browser_1 = require(\"@techsee/openvidu-browser\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar guards_1 = require(\"@techsee/techsee-common/lib/core/guards\");\nvar bluebird_1 = require(\"bluebird\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar trace = MediaTracer_1.getMediaTracer('MediaServerSession');\nvar MediaServerSession = /** @class */ (function (_super) {\n __extends(MediaServerSession, _super);\n function MediaServerSession(sessionParams, streamFactory) {\n var _this = _super.call(this, sessionParams, streamFactory) || this;\n _this.OV = null;\n _this._session = null;\n _this._lastStreamEvents = [];\n _this._credentials = sessionParams.credentials;\n _this.connect = _this.connect.bind(_this);\n _this.disconnect = _this.disconnect.bind(_this);\n _this.onMediaStreamDestroyed = _this.onMediaStreamDestroyed.bind(_this);\n _this.onPublisherDestroyed = _this.onPublisherDestroyed.bind(_this);\n _this.onMediaStreamRenewed = _this.onMediaStreamRenewed.bind(_this);\n _this.createStreamForPublishing = _this.createStreamForPublishing.bind(_this);\n _this.createMediaPublisher = _this.createMediaPublisher.bind(_this);\n _this.connectionCreatedHandler = _this.connectionCreatedHandler.bind(_this);\n _this.connectionDestroyedHandler = _this.connectionDestroyedHandler.bind(_this);\n _this.streamCreatedHandler = _this.streamCreatedHandler.bind(_this);\n _this.streamDestroyedHandler = _this.streamDestroyedHandler.bind(_this);\n return _this;\n }\n Object.defineProperty(MediaServerSession.prototype, \"ownPeerId\", {\n get: function () {\n return this._session && this._session.connection ? this._session.connection.connectionId : '';\n },\n enumerable: false,\n configurable: true\n });\n MediaServerSession.prototype.connect = function (connectOnly) {\n trace.info('Connect to session', this._credentials);\n if (this._session) {\n trace.error('Session already exists');\n return bluebird_1.Promise.reject('Cannot connect to session while another session is active');\n }\n // const iceServers = this._credentials.ice.map((item: any) => ({\n // urls: item.url,\n // username: item.login,\n // credential: item.password\n // }));\n this.OV = new openvidu_browser_1.OpenVidu();\n // this.OV.setAdvancedConfiguration({ iceServers });\n this._session = this.OV.initSession();\n this.initSessionEvents();\n return this._session.connect(this._credentials.token, { clientRole: this._sessionParams.clientRole })\n .catch(function (err) {\n trace.error('Error to connect to session Media Server: ', err);\n throw err;\n });\n };\n MediaServerSession.prototype.sessionDisconnect = function () {\n if (this._session) {\n return this._session.disconnect(true);\n }\n };\n MediaServerSession.prototype.disconnect = function () {\n var _this = this;\n return new bluebird_1.Promise(function (resolve) {\n trace.info('Disconnecting from session');\n var promiseDisconnect = [];\n _this._peerConnections.forEach(function (peerConnection) {\n promiseDisconnect.push(_this.destroyPeerConnection(peerConnection));\n });\n return bluebird_1.Promise.all(promiseDisconnect).then(function () {\n if (!_this._session) {\n trace.info('No active session - resolving');\n resolve();\n return;\n }\n _this.removeSessionEvent();\n _this._session.disconnect();\n _this._lastStreamEvents = [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete _this._session;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete _this.OV;\n resolve();\n });\n });\n };\n MediaServerSession.prototype.removeSessionEvent = function () {\n if (!this._session) {\n return;\n }\n this._session.off('connectionCreated');\n this._session.off('streamCreated');\n this._session.off('streamDestroyed');\n this._session.off('connectionDestroyed');\n this._session.off('sessionDisconnected');\n this._session.off('recordingStarted');\n this._session.off('recordingStopped');\n this._sessionParams.removeHandlers && this._sessionParams.removeHandlers();\n trace.info('Remove Events Listener');\n };\n MediaServerSession.prototype.getRemoteTrackStats = function (mediaTrack) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore// @ts-ignore\n return bluebird_1.Promise.resolve(undefined);\n };\n MediaServerSession.prototype.onMediaStreamDestroyed = function (clientRole) {\n var _this = this;\n trace.info('onMediaStreamDestroyed');\n var promises = [];\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnection.peerRole === clientRole) {\n promises.push(_this.destroyPublisherOnPeerConnection(peerConnection));\n }\n });\n return bluebird_1.Promise.all(promises).then(function () { return trace.info('onMediaStreamDestroyed: Success'); });\n };\n MediaServerSession.prototype.onPublisherDestroyed = function (connectionId) {\n trace.info('onPublisherDestroyed');\n var peerConnection = this._peerConnections.get(connectionId);\n if (!peerConnection) {\n return bluebird_1.Promise.resolve();\n }\n return this.destroyPublisherOnPeerConnection(peerConnection);\n };\n MediaServerSession.prototype.onMediaStreamRenewed = function (clientRole, mediaStream) {\n return bluebird_1.Promise.resolve(undefined);\n };\n MediaServerSession.prototype.replaceStreamTracks = function (mediaStream) {\n return bluebird_1.Promise.reject(new Error('Not implemented'));\n };\n MediaServerSession.prototype.initSessionEvents = function () {\n var _this = this;\n if (!this._session) {\n return;\n }\n this._sessionParams.initHandlers && this._sessionParams.initHandlers();\n this._lastStreamEvents = [];\n this._session.on('connectionCreated', this.connectionCreatedHandler);\n this._session.on('streamCreated', this.streamCreatedHandler);\n this._session.on('streamDestroyed', this.streamDestroyedHandler);\n this._session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this._session.on('recordingStarted', function (event) {\n trace.info('recordingStarted event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STARTED, event);\n });\n this._session.on('recordingStopped', function (event) {\n trace.info('recordingStopped event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STOPPED, event);\n });\n this._session.on('reconnecting', function () {\n trace.info('reconnecting event');\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECONNECTING);\n });\n this._session.on('sessionDisconnected', this.disconnect);\n };\n MediaServerSession.prototype.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n if (!this.sessionExistsGuard(false) || !stream) {\n return;\n }\n var peerConnection = this._peerConnections.get(stream.connection.connectionId);\n if (!peerConnection) {\n trace.warn('Peer connection for remote stream not found');\n return;\n }\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () { return undefined; });\n };\n MediaServerSession.prototype.connectionDestroyedHandler = function (event) {\n trace.info('connectionDestroyedHandler', event);\n var connection = event.connection;\n if (!this.sessionExistsGuard(false) || !connection) {\n return;\n }\n if (this._peerConnections.has(connection.connectionId)) {\n var peerConnection = this._peerConnections.get(connection.connectionId);\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () { return undefined; });\n }\n };\n MediaServerSession.prototype.destroyPeerConnection = function (peerConnection) {\n trace.info('destroyPeerConnection');\n this._peerConnections.delete(peerConnection.peerId);\n return bluebird_1.Promise.all([this.destroyPublisherOnPeerConnection(peerConnection),\n this.destroySubscriberOnPeerConnection(peerConnection)]).then(function () { return undefined; })\n .catch(function () {\n trace.warn('destroyPeerConnection - something wrong with destroy');\n });\n };\n MediaServerSession.prototype.destroySubscriberOnPeerConnection = function (peerConnection) {\n trace.info('destroySubscriberOnPeerConnection', peerConnection);\n if (this.sessionExistsGuard(false) && peerConnection.subscriber) {\n this._session.unsubscribe(peerConnection.subscriber);\n }\n trace.info('destroySubscriberOnPeerConnection- before unregisterPeersRemoteMediaTracks');\n return this.unregisterPeersRemoteMediaTracks(peerConnection)\n .catch(function () { return trace.warn('Error removing remote streams from peerConnection'); })\n .then(function () {\n trace.info('destroySubscriberOnPeerConnection- unregisterPeersRemoteMediaTracks successfully');\n peerConnection.subscriber = null;\n });\n };\n MediaServerSession.prototype.destroyPublisherOnPeerConnection = function (peerConnection) {\n trace.info('destroyPublisherOnPeerConnection');\n if (this.sessionExistsGuard(false) && peerConnection.publisher) {\n trace.info('destroyPublisherOnPeerConnection- unpublish!');\n this._session.unpublish(peerConnection.publisher);\n }\n peerConnection.publisher = null;\n peerConnection.localStream = null;\n return bluebird_1.Promise.resolve();\n };\n MediaServerSession.prototype.createMediaSubscriber = function (remoteStream) {\n var _this = this;\n trace.info('createMediaSubscriber');\n return new bluebird_1.Promise(function (resolve, reject) {\n if (!_this.sessionExistsGuard(false)) {\n return reject('Session not exists');\n }\n trace.info('Before create subscriber');\n var subscriber = _this._session.subscribe(remoteStream, '', {}, function (err) {\n if (err) {\n trace.warn('Error creating subscriber', err);\n return reject(err);\n }\n trace.info('create subscriber successfully', subscriber);\n return resolve(subscriber);\n });\n });\n };\n MediaServerSession.prototype.streamCreatedHandler = function (event) {\n var _this = this;\n if (!event) {\n return bluebird_1.Promise.resolve();\n }\n trace.info('streamCreatedHandler', event.stream);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!this.sessionExistsGuard(false) || !stream || connection.connectionId === this.ownPeerId) {\n return bluebird_1.Promise.resolve();\n }\n if (!this._peerConnections.has(connection.connectionId)) {\n trace.warn('Unexpected case, connection should exist, add to streams to subscribe list', event);\n this._lastStreamEvents.push(event);\n return bluebird_1.Promise.resolve();\n }\n var peerConnection = this._peerConnections.get(connection.connectionId);\n trace.info('Subscribing the stream');\n return this.createMediaSubscriber(stream).then(function (subscriber) {\n peerConnection.subscriber = subscriber;\n trace.info('Registering remote media tracks', peerConnection.subscriber);\n subscriber.stream.getMediaStream().getTracks().forEach(function (mediaTrack) {\n _this.addRemoteTrackToPeer(peerConnection, mediaTrack);\n });\n return _this.registerPeersRemoteTracks(peerConnection);\n });\n };\n MediaServerSession.prototype.createStreamForPublishing = function (destinationRole) {\n var _this = this;\n trace.info('createStreamForPublishing');\n return this._sessionStreamsManager.getMediaStreamForRole(destinationRole)\n .then(function (mediaStream) {\n var stream = { videoSource: null, audioSource: null };\n if (mediaStream) {\n trace.info('Media stream found for publishing', mediaStream);\n mediaStream.getTracks().forEach(function (track) {\n if (track.kind === 'video') {\n stream.videoSource = track;\n }\n else if (track.kind === 'audio') {\n stream.audioSource = track;\n }\n });\n }\n else if (_this._sessionParams.clientRole === MediaConstants_1.SessionClientRole.USER) {\n trace.warn('No local media was found for publishing to destinationRole:', destinationRole);\n }\n return stream;\n });\n };\n MediaServerSession.prototype.createMediaPublisher = function (stream) {\n var _this = this;\n var ovParams = {\n videoSource: stream.videoSource ? stream.videoSource : false,\n audioSource: stream.audioSource ? stream.audioSource : false,\n publishAudio: !!stream.audioSource,\n publishVideo: !!stream.videoSource\n };\n return new bluebird_1.Promise(function (resolve, reject) {\n var ovPublisher = _this.OV.initPublisher('', ovParams, function (error) {\n if (error) {\n reject(error);\n return;\n }\n ovPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n var connectionId = get_1.default(event, 'stream.connection.connectionId');\n _this.onPublisherDestroyed(connectionId);\n //We preventing the default, in order to prevent stop the stream by OV.\n //We managing streams by ourselves and if we allow OV to close the stream, it cannot be reused.\n event.preventDefault();\n });\n resolve(ovPublisher);\n });\n });\n };\n MediaServerSession.prototype.connectionCreatedHandler = function (event) {\n var _this = this;\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!this.sessionExistsGuard(false) || !connection) {\n return;\n }\n var destinationRole = JSON.parse(connection.data).clientRole;\n this.createStreamForPublishing(destinationRole)\n .then(function (streams) {\n var peerConnection = {\n peerId: connection.connectionId,\n peerRole: destinationRole,\n peerType: _this._sessionParams.clientType === MediaConstants_1.SessionClientType.INITIATOR\n ? MediaConstants_1.SessionClientType.GUEST : MediaConstants_1.SessionClientType.INITIATOR,\n connection: connection,\n publisher: null,\n subscriber: null,\n remoteMediaTracks: [],\n localStream: streams,\n connectionTimoutPrt: null\n };\n if (connection.connectionId !== _this.ownPeerId || (!streams.videoSource && !streams.audioSource)) {\n trace.info('Peer connection without publisher was created', peerConnection);\n return peerConnection;\n }\n return _this.createMediaPublisher(streams)\n .then(function (publisher) {\n peerConnection.publisher = publisher;\n trace.info('Peer connection with publisher was created', peerConnection);\n return peerConnection;\n });\n })\n .then(function (peerConnection) {\n _this._peerConnections.set(peerConnection.peerId, peerConnection);\n if (connection.connectionId === _this.ownPeerId) {\n trace.info('Before subscribe the event streams');\n return _this._lastStreamEvents.reduce(function (promiseChain, streamEvent) { return promiseChain.then(function () { return _this.streamCreatedHandler(streamEvent); }); }, bluebird_1.Promise.resolve()).then(function () {\n if (peerConnection.publisher) {\n trace.info('Starting publish to peerConnection.publisher');\n return _this._session.publish(peerConnection.publisher)\n .catch(function (err) {\n trace.info('Error during publish', peerConnection.publisher);\n if (peerConnection.publisher) {\n trace.info('Error during publish- unpublish');\n _this._session.unpublish(peerConnection.publisher);\n }\n throw err;\n });\n }\n return bluebird_1.Promise.resolve();\n });\n }\n })\n .catch(function (error) {\n trace.error('Error handling new peer connection', error);\n });\n };\n MediaServerSession.prototype.sessionExistsGuard = function (shouldThrow) {\n if (shouldThrow === void 0) { shouldThrow = true; }\n var connected = !!(this._session && this._session.connection && this._session.connection.connectionId);\n return guards_1.throwableGuard(connected, 'There no MediaServer session exists', shouldThrow);\n };\n return MediaServerSession;\n}(MediaSessionBase_1.MediaSessionBase));\nexports.MediaServerSession = MediaServerSession;\n\n//# sourceMappingURL=MediaServer.js.map\n"]}
@@ -1,104 +1,139 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", { value: true });
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
4
6
  exports.MediaSessionBase = exports.recordingEvents = void 0;
7
+
5
8
  var MediaConstants_1 = require("../MediaConstants");
9
+
6
10
  var MediaTracer_1 = require("../MediaUtils/MediaTracer");
11
+
7
12
  var events_1 = require("events");
13
+
8
14
  var recordingEvents;
15
+
9
16
  (function (recordingEvents) {
10
- recordingEvents["RECORD_STARTED"] = "RECORD_STARTED";
11
- recordingEvents["RECORD_STOPPED"] = "RECORD_STOPPED";
12
- recordingEvents["RECONNECTING"] = "RECONNECTING";
17
+ recordingEvents["RECORD_STARTED"] = "RECORD_STARTED";
18
+ recordingEvents["RECORD_STOPPED"] = "RECORD_STOPPED";
19
+ recordingEvents["RECONNECTING"] = "RECONNECTING";
13
20
  })(recordingEvents = exports.recordingEvents || (exports.recordingEvents = {}));
21
+
14
22
  var trace = MediaTracer_1.getMediaTracer('MediaSessionBase');
15
- var MediaSessionBase = /** @class */function () {
16
- function MediaSessionBase(sessionParams, streamFactory) {
17
- this._sessionParams = sessionParams;
18
- this._sessionStreamsManager = streamFactory;
19
- this._emitter = new events_1.EventEmitter();
20
- this._peerConnections = new Map();
23
+
24
+ var MediaSessionBase =
25
+ /** @class */
26
+ function () {
27
+ function MediaSessionBase(sessionParams, streamFactory) {
28
+ this._sessionParams = sessionParams;
29
+ this._sessionStreamsManager = streamFactory;
30
+ this._emitter = new events_1.EventEmitter();
31
+ this._peerConnections = new Map();
32
+ }
33
+
34
+ MediaSessionBase.prototype.registerEventCallback = function (event, callback) {
35
+ this._emitter.on(event, callback);
36
+ };
37
+
38
+ MediaSessionBase.prototype.emitEvent = function (event, eventArgs) {
39
+ var _this = this;
40
+
41
+ setTimeout(function () {
42
+ _this._emitter.emit(event, eventArgs);
43
+ });
44
+ };
45
+
46
+ MediaSessionBase.prototype.addRemoteTrackToPeer = function (sourcePeerConnection, mediaTrack) {
47
+ if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video && sourcePeerConnection.peerRole === MediaConstants_1.SessionClientRole.AGENT) {
48
+ //Currently We don't support video streams from Agent side
49
+ return;
21
50
  }
22
- MediaSessionBase.prototype.registerEventCallback = function (event, callback) {
23
- this._emitter.on(event, callback);
24
- };
25
- MediaSessionBase.prototype.emitEvent = function (event, eventArgs) {
26
- var _this = this;
27
- setTimeout(function () {
28
- _this._emitter.emit(event, eventArgs);
29
- });
30
- };
31
- MediaSessionBase.prototype.addRemoteTrackToPeer = function (sourcePeerConnection, mediaTrack) {
32
- if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video && sourcePeerConnection.peerRole === MediaConstants_1.SessionClientRole.AGENT) {
33
- //Currently We don't support video streams from Agent side
34
- return;
35
- }
36
- var trackType = null;
37
- if (mediaTrack.kind.toLowerCase() === MediaConstants_1.KnownMediaStreamKind.Audio) {
38
- switch (sourcePeerConnection.peerRole) {
39
- case MediaConstants_1.SessionClientRole.AGENT:
40
- trackType = MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM;
41
- break;
42
- case MediaConstants_1.SessionClientRole.OBSERVER:
43
- trackType = MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM;
44
- break;
45
- default:
46
- trackType = MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;
47
- break;
48
- }
49
- } else {
50
- trackType = MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM;
51
- }
52
- var remoteMediaTrack = { mediaTrack: mediaTrack, trackType: trackType, isRegistered: false };
53
- sourcePeerConnection.remoteMediaTracks.push(remoteMediaTrack);
54
- };
55
- MediaSessionBase.prototype.registerPeersRemoteTracks = function (sourcePeerConnection) {
56
- var _this = this;
57
- trace.info('registerPeersRemoteTracks', sourcePeerConnection && sourcePeerConnection.remoteMediaTracks);
58
- sourcePeerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {
59
- if (!remoteMediaTrack.isRegistered) {
60
- trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);
61
- _this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack).then(function () {
62
- remoteMediaTrack.isRegistered = true;
63
- }).catch(function (error) {
64
- trace.warn('Error adding remote media track to available streams', error);
65
- });
66
- }
67
- });
68
- };
69
- MediaSessionBase.prototype.unregisterPeersRemoteMediaTracks = function (peerConnection) {
70
- var _this = this;
71
- var promises = [];
72
- peerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {
73
- var removalPromise = _this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack).then(function () {
74
- return remoteMediaTrack.isRegistered = false;
75
- }).catch(function () {
76
- return trace.warn('Error while removing remote media track', remoteMediaTrack);
77
- });
78
- promises.push(removalPromise);
79
- });
80
- return Promise.all(promises).then(function () {
81
- return undefined;
82
- });
51
+
52
+ var trackType = null;
53
+
54
+ if (mediaTrack.kind.toLowerCase() === MediaConstants_1.KnownMediaStreamKind.Audio) {
55
+ switch (sourcePeerConnection.peerRole) {
56
+ case MediaConstants_1.SessionClientRole.AGENT:
57
+ trackType = MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM;
58
+ break;
59
+
60
+ case MediaConstants_1.SessionClientRole.OBSERVER:
61
+ trackType = MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM;
62
+ break;
63
+
64
+ default:
65
+ trackType = MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;
66
+ break;
67
+ }
68
+ } else {
69
+ trackType = MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM;
70
+ }
71
+
72
+ var remoteMediaTrack = {
73
+ mediaTrack: mediaTrack,
74
+ trackType: trackType,
75
+ isRegistered: false
83
76
  };
84
- MediaSessionBase.prototype.getPeerConnectionByMediaTrack = function (mediaTrack) {
85
- var peerConnectionOfTrack = null;
86
- this._peerConnections.forEach(function (peerConnection) {
87
- if (peerConnectionOfTrack !== null) {
88
- return;
89
- }
90
- var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) {
91
- return track.mediaTrack.id === mediaTrack.id;
92
- });
93
- if (remoteTrack.length === 1) {
94
- peerConnectionOfTrack = peerConnection;
95
- }
77
+ sourcePeerConnection.remoteMediaTracks.push(remoteMediaTrack);
78
+ };
79
+
80
+ MediaSessionBase.prototype.registerPeersRemoteTracks = function (sourcePeerConnection) {
81
+ var _this = this;
82
+
83
+ trace.info('registerPeersRemoteTracks', sourcePeerConnection && sourcePeerConnection.remoteMediaTracks);
84
+ sourcePeerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {
85
+ if (!remoteMediaTrack.isRegistered) {
86
+ trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);
87
+
88
+ _this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack).then(function () {
89
+ remoteMediaTrack.isRegistered = true;
90
+ })["catch"](function (error) {
91
+ trace.warn('Error adding remote media track to available streams', error);
96
92
  });
97
- return peerConnectionOfTrack;
98
- };
99
- return MediaSessionBase;
93
+ }
94
+ });
95
+ };
96
+
97
+ MediaSessionBase.prototype.unregisterPeersRemoteMediaTracks = function (peerConnection) {
98
+ var _this = this;
99
+
100
+ var promises = [];
101
+ peerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {
102
+ var removalPromise = _this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack).then(function () {
103
+ return remoteMediaTrack.isRegistered = false;
104
+ })["catch"](function () {
105
+ return trace.warn('Error while removing remote media track', remoteMediaTrack);
106
+ });
107
+
108
+ promises.push(removalPromise);
109
+ });
110
+ return Promise.all(promises).then(function () {
111
+ return undefined;
112
+ });
113
+ };
114
+
115
+ MediaSessionBase.prototype.getPeerConnectionByMediaTrack = function (mediaTrack) {
116
+ var peerConnectionOfTrack = null;
117
+
118
+ this._peerConnections.forEach(function (peerConnection) {
119
+ if (peerConnectionOfTrack !== null) {
120
+ return;
121
+ }
122
+
123
+ var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) {
124
+ return track.mediaTrack.id === mediaTrack.id;
125
+ });
126
+
127
+ if (remoteTrack.length === 1) {
128
+ peerConnectionOfTrack = peerConnection;
129
+ }
130
+ });
131
+
132
+ return peerConnectionOfTrack;
133
+ };
134
+
135
+ return MediaSessionBase;
100
136
  }();
101
- exports.MediaSessionBase = MediaSessionBase;
102
137
 
103
- //# sourceMappingURL=MediaSessionBase.js.map
138
+ exports.MediaSessionBase = MediaSessionBase;
104
139
  //# sourceMappingURL=MediaSessionBase.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaSession/MediaSessionBase.js"],"names":["Object","defineProperty","exports","value","MediaSessionBase","recordingEvents","MediaConstants_1","require","MediaTracer_1","events_1","trace","getMediaTracer","sessionParams","streamFactory","_sessionParams","_sessionStreamsManager","_emitter","EventEmitter","_peerConnections","Map","prototype","registerEventCallback","event","callback","on","emitEvent","eventArgs","_this","setTimeout","emit","addRemoteTrackToPeer","sourcePeerConnection","mediaTrack","kind","KnownMediaStreamKind","Video","peerRole","SessionClientRole","AGENT","trackType","toLowerCase","Audio","KnownMediaStream","AGENT_AUDIO_STREAM","OBSERVER","OBSERVER_AUDIO_STREAM","USER_AUDIO_STREAM","USER_VIDEO_STREAM","remoteMediaTrack","isRegistered","remoteMediaTracks","push","registerPeersRemoteTracks","info","forEach","addRemoteMediaTrack","then","catch","error","warn","unregisterPeersRemoteMediaTracks","peerConnection","promises","removalPromise","removeMediaTrack","Promise","all","undefined","getPeerConnectionByMediaTrack","peerConnectionOfTrack","remoteTrack","filter","track","id","length"],"mappings":"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","file":"MediaSessionBase.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediaSessionBase = exports.recordingEvents = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar events_1 = require(\"events\");\nvar recordingEvents;\n(function (recordingEvents) {\n recordingEvents[\"RECORD_STARTED\"] = \"RECORD_STARTED\";\n recordingEvents[\"RECORD_STOPPED\"] = \"RECORD_STOPPED\";\n recordingEvents[\"RECONNECTING\"] = \"RECONNECTING\";\n})(recordingEvents = exports.recordingEvents || (exports.recordingEvents = {}));\nvar trace = MediaTracer_1.getMediaTracer('MediaSessionBase');\nvar MediaSessionBase = /** @class */ (function () {\n function MediaSessionBase(sessionParams, streamFactory) {\n this._sessionParams = sessionParams;\n this._sessionStreamsManager = streamFactory;\n this._emitter = new events_1.EventEmitter();\n this._peerConnections = new Map();\n }\n MediaSessionBase.prototype.registerEventCallback = function (event, callback) {\n this._emitter.on(event, callback);\n };\n MediaSessionBase.prototype.emitEvent = function (event, eventArgs) {\n var _this = this;\n setTimeout(function () {\n _this._emitter.emit(event, eventArgs);\n });\n };\n MediaSessionBase.prototype.addRemoteTrackToPeer = function (sourcePeerConnection, mediaTrack) {\n if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video &&\n sourcePeerConnection.peerRole === MediaConstants_1.SessionClientRole.AGENT) {\n //Currently We don't support video streams from Agent side\n return;\n }\n var trackType = null;\n if (mediaTrack.kind.toLowerCase() === MediaConstants_1.KnownMediaStreamKind.Audio) {\n switch (sourcePeerConnection.peerRole) {\n case MediaConstants_1.SessionClientRole.AGENT:\n trackType = MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM;\n break;\n case MediaConstants_1.SessionClientRole.OBSERVER:\n trackType = MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM;\n break;\n default:\n trackType = MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;\n break;\n }\n }\n else {\n trackType = MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM;\n }\n var remoteMediaTrack = { mediaTrack: mediaTrack, trackType: trackType, isRegistered: false };\n sourcePeerConnection.remoteMediaTracks.push(remoteMediaTrack);\n };\n MediaSessionBase.prototype.registerPeersRemoteTracks = function (sourcePeerConnection) {\n var _this = this;\n trace.info('registerPeersRemoteTracks', sourcePeerConnection && sourcePeerConnection.remoteMediaTracks);\n sourcePeerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {\n if (!remoteMediaTrack.isRegistered) {\n trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);\n _this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack)\n .then(function () {\n remoteMediaTrack.isRegistered = true;\n })\n .catch(function (error) {\n trace.warn('Error adding remote media track to available streams', error);\n });\n }\n });\n };\n MediaSessionBase.prototype.unregisterPeersRemoteMediaTracks = function (peerConnection) {\n var _this = this;\n var promises = [];\n peerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {\n var removalPromise = _this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack)\n .then(function () { return remoteMediaTrack.isRegistered = false; })\n .catch(function () { return trace.warn('Error while removing remote media track', remoteMediaTrack); });\n promises.push(removalPromise);\n });\n return Promise.all(promises).then(function () { return undefined; });\n };\n MediaSessionBase.prototype.getPeerConnectionByMediaTrack = function (mediaTrack) {\n var peerConnectionOfTrack = null;\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnectionOfTrack !== null) {\n return;\n }\n var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) { return track.mediaTrack.id === mediaTrack.id; });\n if (remoteTrack.length === 1) {\n peerConnectionOfTrack = peerConnection;\n }\n });\n return peerConnectionOfTrack;\n };\n return MediaSessionBase;\n}());\nexports.MediaSessionBase = MediaSessionBase;\n\n//# sourceMappingURL=MediaSessionBase.js.map\n"]}
1
+ {"version":3,"sources":["MediaSession/MediaSessionBase.js"],"names":["Object","defineProperty","exports","value","MediaSessionBase","recordingEvents","MediaConstants_1","require","MediaTracer_1","events_1","trace","getMediaTracer","sessionParams","streamFactory","_sessionParams","_sessionStreamsManager","_emitter","EventEmitter","_peerConnections","Map","prototype","registerEventCallback","event","callback","on","emitEvent","eventArgs","_this","setTimeout","emit","addRemoteTrackToPeer","sourcePeerConnection","mediaTrack","kind","KnownMediaStreamKind","Video","peerRole","SessionClientRole","AGENT","trackType","toLowerCase","Audio","KnownMediaStream","AGENT_AUDIO_STREAM","OBSERVER","OBSERVER_AUDIO_STREAM","USER_AUDIO_STREAM","USER_VIDEO_STREAM","remoteMediaTrack","isRegistered","remoteMediaTracks","push","registerPeersRemoteTracks","info","forEach","addRemoteMediaTrack","then","error","warn","unregisterPeersRemoteMediaTracks","peerConnection","promises","removalPromise","removeMediaTrack","Promise","all","undefined","getPeerConnectionByMediaTrack","peerConnectionOfTrack","remoteTrack","filter","track","id","length"],"mappings":"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","file":"MediaSessionBase.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediaSessionBase = exports.recordingEvents = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar events_1 = require(\"events\");\nvar recordingEvents;\n(function (recordingEvents) {\n recordingEvents[\"RECORD_STARTED\"] = \"RECORD_STARTED\";\n recordingEvents[\"RECORD_STOPPED\"] = \"RECORD_STOPPED\";\n recordingEvents[\"RECONNECTING\"] = \"RECONNECTING\";\n})(recordingEvents = exports.recordingEvents || (exports.recordingEvents = {}));\nvar trace = MediaTracer_1.getMediaTracer('MediaSessionBase');\nvar MediaSessionBase = /** @class */ (function () {\n function MediaSessionBase(sessionParams, streamFactory) {\n this._sessionParams = sessionParams;\n this._sessionStreamsManager = streamFactory;\n this._emitter = new events_1.EventEmitter();\n this._peerConnections = new Map();\n }\n MediaSessionBase.prototype.registerEventCallback = function (event, callback) {\n this._emitter.on(event, callback);\n };\n MediaSessionBase.prototype.emitEvent = function (event, eventArgs) {\n var _this = this;\n setTimeout(function () {\n _this._emitter.emit(event, eventArgs);\n });\n };\n MediaSessionBase.prototype.addRemoteTrackToPeer = function (sourcePeerConnection, mediaTrack) {\n if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video &&\n sourcePeerConnection.peerRole === MediaConstants_1.SessionClientRole.AGENT) {\n //Currently We don't support video streams from Agent side\n return;\n }\n var trackType = null;\n if (mediaTrack.kind.toLowerCase() === MediaConstants_1.KnownMediaStreamKind.Audio) {\n switch (sourcePeerConnection.peerRole) {\n case MediaConstants_1.SessionClientRole.AGENT:\n trackType = MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM;\n break;\n case MediaConstants_1.SessionClientRole.OBSERVER:\n trackType = MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM;\n break;\n default:\n trackType = MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;\n break;\n }\n }\n else {\n trackType = MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM;\n }\n var remoteMediaTrack = { mediaTrack: mediaTrack, trackType: trackType, isRegistered: false };\n sourcePeerConnection.remoteMediaTracks.push(remoteMediaTrack);\n };\n MediaSessionBase.prototype.registerPeersRemoteTracks = function (sourcePeerConnection) {\n var _this = this;\n trace.info('registerPeersRemoteTracks', sourcePeerConnection && sourcePeerConnection.remoteMediaTracks);\n sourcePeerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {\n if (!remoteMediaTrack.isRegistered) {\n trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);\n _this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack)\n .then(function () {\n remoteMediaTrack.isRegistered = true;\n })\n .catch(function (error) {\n trace.warn('Error adding remote media track to available streams', error);\n });\n }\n });\n };\n MediaSessionBase.prototype.unregisterPeersRemoteMediaTracks = function (peerConnection) {\n var _this = this;\n var promises = [];\n peerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {\n var removalPromise = _this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack)\n .then(function () { return remoteMediaTrack.isRegistered = false; })\n .catch(function () { return trace.warn('Error while removing remote media track', remoteMediaTrack); });\n promises.push(removalPromise);\n });\n return Promise.all(promises).then(function () { return undefined; });\n };\n MediaSessionBase.prototype.getPeerConnectionByMediaTrack = function (mediaTrack) {\n var peerConnectionOfTrack = null;\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnectionOfTrack !== null) {\n return;\n }\n var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) { return track.mediaTrack.id === mediaTrack.id; });\n if (remoteTrack.length === 1) {\n peerConnectionOfTrack = peerConnection;\n }\n });\n return peerConnectionOfTrack;\n };\n return MediaSessionBase;\n}());\nexports.MediaSessionBase = MediaSessionBase;\n\n//# sourceMappingURL=MediaSessionBase.js.map\n"]}