@techsee/techsee-media-service 0.7.0-alpha.2 → 0.7.0

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 (149) hide show
  1. package/lib/LocalStreamManager.d.ts +21 -0
  2. package/lib/LocalStreamManager.d.ts.map +1 -0
  3. package/lib/LocalStreamManager.js +268 -0
  4. package/lib/LocalStreamManager.js.map +1 -0
  5. package/lib/MediaConstants.d.ts +52 -0
  6. package/lib/MediaConstants.d.ts.map +1 -0
  7. package/lib/MediaConstants.js +68 -0
  8. package/lib/MediaConstants.js.map +1 -0
  9. package/lib/MediaContracts.d.ts +122 -0
  10. package/lib/MediaContracts.d.ts.map +1 -0
  11. package/lib/MediaContracts.js +6 -0
  12. package/lib/MediaContracts.js.map +1 -0
  13. package/lib/MediaPublisher.d.ts +14 -0
  14. package/lib/MediaPublisher.d.ts.map +1 -0
  15. package/lib/MediaPublisher.js +43 -0
  16. package/lib/MediaPublisher.js.map +1 -0
  17. package/lib/MediaServiceBase.d.ts +64 -0
  18. package/lib/MediaServiceBase.d.ts.map +1 -0
  19. package/lib/MediaServiceBase.js +591 -0
  20. package/lib/MediaServiceBase.js.map +1 -0
  21. package/lib/MediaSession/MediaSessionBase.d.ts +23 -0
  22. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -0
  23. package/lib/MediaSession/MediaSessionBase.js +63 -0
  24. package/lib/MediaSession/MediaSessionBase.js.map +1 -0
  25. package/lib/MediaSession/SessionOpentok.d.ts +49 -0
  26. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -0
  27. package/lib/MediaSession/SessionOpentok.js +379 -0
  28. package/lib/MediaSession/SessionOpentok.js.map +1 -0
  29. package/lib/MediaSession/SessionTurn.d.ts +32 -0
  30. package/lib/MediaSession/SessionTurn.d.ts.map +1 -0
  31. package/lib/MediaSession/SessionTurn.js +439 -0
  32. package/lib/MediaSession/SessionTurn.js.map +1 -0
  33. package/lib/MediaSession/TurnConstants.d.ts +18 -0
  34. package/lib/MediaSession/TurnConstants.d.ts.map +1 -0
  35. package/lib/MediaSession/TurnConstants.js +36 -0
  36. package/lib/MediaSession/TurnConstants.js.map +1 -0
  37. package/lib/MediaSubscriber.d.ts +36 -0
  38. package/lib/MediaSubscriber.d.ts.map +1 -0
  39. package/lib/MediaSubscriber.js +208 -0
  40. package/lib/MediaSubscriber.js.map +1 -0
  41. package/lib/MediaUtils/Compatibility.d.ts +11 -0
  42. package/lib/MediaUtils/Compatibility.d.ts.map +1 -0
  43. package/lib/MediaUtils/Compatibility.js +71 -0
  44. package/lib/MediaUtils/Compatibility.js.map +1 -0
  45. package/lib/MediaUtils/MediaDomUtils.d.ts +4 -0
  46. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -0
  47. package/lib/MediaUtils/MediaDomUtils.js +200 -0
  48. package/lib/MediaUtils/MediaDomUtils.js.map +1 -0
  49. package/lib/MediaUtils/MediaTracer.d.ts +3 -0
  50. package/lib/MediaUtils/MediaTracer.d.ts.map +1 -0
  51. package/lib/MediaUtils/MediaTracer.js +12 -0
  52. package/lib/MediaUtils/MediaTracer.js.map +1 -0
  53. package/lib/TechseeMediaStream.d.ts +14 -0
  54. package/lib/TechseeMediaStream.d.ts.map +1 -0
  55. package/lib/TechseeMediaStream.js +58 -0
  56. package/lib/TechseeMediaStream.js.map +1 -0
  57. package/lib/oldCode/constants.js.map +1 -0
  58. package/lib/oldCode/event-emitter.js.map +1 -0
  59. package/lib/{index.js → oldCode/index.js} +1 -1
  60. package/lib/oldCode/index.js.map +1 -0
  61. package/lib/{opentok → oldCode/opentok}/session.js +6 -0
  62. package/lib/oldCode/opentok/session.js.map +1 -0
  63. package/lib/oldCode/opentok/stream.js.map +1 -0
  64. package/lib/oldCode/publisher.js.map +1 -0
  65. package/lib/{service.js → oldCode/service.js} +4 -6
  66. package/lib/oldCode/service.js.map +1 -0
  67. package/lib/oldCode/session.js.map +1 -0
  68. package/lib/oldCode/stream.js.map +1 -0
  69. package/lib/oldCode/subscriber.js.map +1 -0
  70. package/lib/oldCode/tracer.d.ts +35 -0
  71. package/lib/oldCode/tracer.d.ts.map +1 -0
  72. package/lib/oldCode/tracer.js +151 -0
  73. package/lib/oldCode/tracer.js.map +1 -0
  74. package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
  75. package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
  76. package/lib/oldCode/utils/ImageFixer.js +58 -0
  77. package/lib/oldCode/utils/ImageFixer.js.map +1 -0
  78. package/lib/oldCode/webrtc/constants.js.map +1 -0
  79. package/lib/{webrtc → oldCode/webrtc}/helper.js +2 -4
  80. package/lib/oldCode/webrtc/helper.js.map +1 -0
  81. package/lib/oldCode/webrtc/session-kms.js.map +1 -0
  82. package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
  83. package/lib/{webrtc → oldCode/webrtc}/session-turn.js +47 -41
  84. package/lib/oldCode/webrtc/session-turn.js.map +1 -0
  85. package/lib/{webrtc → oldCode/webrtc}/session-turn.v2.js +85 -48
  86. package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
  87. package/lib/oldCode/webrtc/session.js.map +1 -0
  88. package/lib/{webrtc → oldCode/webrtc}/stream.js +7 -9
  89. package/lib/oldCode/webrtc/stream.js.map +1 -0
  90. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
  91. package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
  92. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
  93. package/lib/qos/raw-qos.js.map +1 -1
  94. package/lib/webrtc-ie-shim.js +3218 -0
  95. package/lib/webrtc-ie-shim.js.map +1 -0
  96. package/package.json +7 -5
  97. package/lib/constants.js.map +0 -1
  98. package/lib/event-emitter.js.map +0 -1
  99. package/lib/index.js.map +0 -1
  100. package/lib/opentok/session.js.map +0 -1
  101. package/lib/opentok/stream.js.map +0 -1
  102. package/lib/publisher.js.map +0 -1
  103. package/lib/service.js.map +0 -1
  104. package/lib/session.js.map +0 -1
  105. package/lib/stream.js.map +0 -1
  106. package/lib/subscriber.js.map +0 -1
  107. package/lib/tracer.js +0 -22
  108. package/lib/tracer.js.map +0 -1
  109. package/lib/v2/Contracts.d.ts +0 -41
  110. package/lib/v2/Contracts.d.ts.map +0 -1
  111. package/lib/v2/Contracts.js +0 -31
  112. package/lib/v2/Contracts.js.map +0 -1
  113. package/lib/v2/LocalStreamManager.d.ts +0 -8
  114. package/lib/v2/LocalStreamManager.d.ts.map +0 -1
  115. package/lib/v2/LocalStreamManager.js +0 -94
  116. package/lib/v2/LocalStreamManager.js.map +0 -1
  117. package/lib/v2/MediaServiceBase.d.ts +0 -24
  118. package/lib/v2/MediaServiceBase.d.ts.map +0 -1
  119. package/lib/v2/MediaServiceBase.js +0 -85
  120. package/lib/v2/MediaServiceBase.js.map +0 -1
  121. package/lib/v2/MediaSubscriber.d.ts +0 -8
  122. package/lib/v2/MediaSubscriber.d.ts.map +0 -1
  123. package/lib/v2/MediaSubscriber.js +0 -17
  124. package/lib/v2/MediaSubscriber.js.map +0 -1
  125. package/lib/webrtc/constants.js.map +0 -1
  126. package/lib/webrtc/helper.js.map +0 -1
  127. package/lib/webrtc/session-kms.js.map +0 -1
  128. package/lib/webrtc/session-loopback.js.map +0 -1
  129. package/lib/webrtc/session-turn.js.map +0 -1
  130. package/lib/webrtc/session-turn.v2.js.map +0 -1
  131. package/lib/webrtc/session.js.map +0 -1
  132. package/lib/webrtc/stream.js.map +0 -1
  133. package/lib/webrtc/temasys/adapter-loader.js.map +0 -1
  134. package/lib/webrtc/temasys/adapter.js.map +0 -1
  135. package/lib/webrtc/webrtc-ie-shim.js.map +0 -1
  136. /package/lib/{constants.js → oldCode/constants.js} +0 -0
  137. /package/lib/{event-emitter.js → oldCode/event-emitter.js} +0 -0
  138. /package/lib/{opentok → oldCode/opentok}/stream.js +0 -0
  139. /package/lib/{publisher.js → oldCode/publisher.js} +0 -0
  140. /package/lib/{session.js → oldCode/session.js} +0 -0
  141. /package/lib/{stream.js → oldCode/stream.js} +0 -0
  142. /package/lib/{subscriber.js → oldCode/subscriber.js} +0 -0
  143. /package/lib/{webrtc → oldCode/webrtc}/constants.js +0 -0
  144. /package/lib/{webrtc → oldCode/webrtc}/session-kms.js +0 -0
  145. /package/lib/{webrtc → oldCode/webrtc}/session-loopback.js +0 -0
  146. /package/lib/{webrtc → oldCode/webrtc}/session.js +0 -0
  147. /package/lib/{webrtc → oldCode/webrtc}/temasys/adapter-loader.js +0 -0
  148. /package/lib/{webrtc → oldCode/webrtc}/temasys/adapter.js +0 -0
  149. /package/lib/{webrtc → oldCode/webrtc}/webrtc-ie-shim.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["opentok/session.js"],"names":["TsOpenTokSession","credentials","_credentials","_session","OT","initSession","apiKey","sessionId","_disconnectIfAlreadyConnected","isConnected","Promise","resolve","disconnect","connect","then","reject","on","emit","EVENTS","CONNECTED","e","DISCONNECTED","STREAM_CREATED","TsOpenTokStream","stream","_streams","delete","id","STREAM_DESTROYED","changedProperty","get","newEvent","property","value","newValue","STREAM_PROPERTY_CHANGED","token","error","off","keepSession","sessionFinalized","finalizeSession","event","once","setTimeout","reason","createPublisher","target","params","otparams","videoSource","audioSource","showControls","name","publishAudio","publishVideo","constraints","video","facingMode","videoDevice","_","assign","deviceId","videoParams","audioDevice","otpublisher","initPublisher","publisher","TsMediaPublisher","_otpublisher","publish","remote","videoWidth","videoHeight","PUBLISHER_EVENTS","getVideoElement","element","setupDimensionsListener","DESTROYED","destroyPublisher","destroy","createSubscriber","_otstream","destroyed","destroyedReason","finish","err","res","onDestroy","otsubscriber","subscribe","subscriber","TsMediaSubscriber","_otsubscriber","destroySubscriber","TsMediaSession"],"mappings":"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","file":"session.js","sourcesContent":["import {\n EVENTS,\n TsMediaSession,\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher,\n} from '../publisher';\n\nimport {\n TsMediaSubscriber,\n} from '../subscriber';\n\nimport {\n TsOpenTokStream,\n} from './stream';\n\nexport class TsOpenTokSession extends TsMediaSession {\n constructor({credentials}) {\n super();\n\n this._credentials = credentials;\n this._session = OT.initSession(\n credentials.apiKey,\n credentials.sessionId\n );\n }\n\n get id() {\n return this._session && this._session.sessionId;\n }\n\n _disconnectIfAlreadyConnected() {\n if (!this._session.isConnected()) {\n return Promise.resolve();\n }\n\n return this.disconnect(true);\n }\n\n connect() {\n return this._disconnectIfAlreadyConnected()\n .then(() => new Promise((resolve, reject) => {\n this._session.on('sessionConnected', () => {\n this.emit(EVENTS.CONNECTED);\n });\n this._session.on('sessionDisconnected', (e) => {\n this.emit(EVENTS.DISCONNECTED, e);\n });\n\n this._session.on('streamCreated', (e) => {\n this.emit(EVENTS.STREAM_CREATED, new TsOpenTokStream(this, e.stream));\n });\n\n this._session.on('streamDestroyed', (e) => {\n this._streams.delete(e.stream.id);\n\n this.emit(EVENTS.STREAM_DESTROYED, e);\n });\n this._session.on('streamPropertyChanged', (e) => {\n if (e.changedProperty === 'videoDimensions') {\n return;\n }\n\n const stream = this._streams.get(e.stream.id);\n\n const newEvent = {\n stream,\n property: e.changedProperty,\n value: e.newValue,\n };\n\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, newEvent);\n });\n\n\n this._session.connect(this._credentials.token, (error) => {\n if (error) {\n this._session.off();\n\n return reject(error);\n }\n\n return resolve();\n });\n }));\n }\n\n disconnect(keepSession) {\n return new Promise((resolve) => {\n this._session.off();\n\n let sessionFinalized = false;\n\n const finalizeSession = (event) => {\n if (sessionFinalized) {\n return;\n }\n\n sessionFinalized = true;\n\n if (!keepSession) {\n this._session = null;\n\n this.emit(EVENTS.DISCONNECTED);\n }\n\n resolve(event);\n };\n\n this._session.once('sessionDisconnected', (event) => finalizeSession(event));\n\n setTimeout(() => finalizeSession({reason: 'clientDisconnectedTimeout'}), 5000);\n\n this._session.disconnect();\n });\n }\n\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n const otparams = {\n videoSource: null,\n audioSource: null,\n showControls: false,\n name: params.name,\n publishAudio: false,\n publishVideo: false,\n constraints: {\n video: {\n facingMode: 'environment'\n }\n }\n };\n\n if (params.videoDevice) {\n _.assign(otparams, {\n publishVideo: true,\n videoSource: params.videoDevice,\n });\n\n otparams.constraints.video.deviceId = params.videoDevice;\n\n if (params.videoParams) {\n _.assign(otparams, params.videoParams);\n }\n }\n\n if (params.audioDevice) {\n _.assign(otparams, {\n publishAudio: true,\n audioSource: params.audioDevice,\n });\n }\n\n return new Promise((resolve, reject) => {\n const otpublisher = OT.initPublisher(target, otparams, (error) => {\n if (error) {\n return reject(error);\n }\n\n const publisher = new TsMediaPublisher(this, {\n _otpublisher: otpublisher,\n });\n\n return resolve(publisher);\n });\n });\n }\n\n publish(publisher) {\n return new Promise((resolve, reject) => {\n publisher._otpublisher.once('streamCreated', (event) => {\n const stream = new TsOpenTokStream(this, event.stream);\n\n publisher.stream = stream;\n stream.publisher = publisher;\n stream.remote = false;\n\n publisher.videoWidth = publisher._otpublisher.videoWidth();\n publisher.videoHeight = publisher._otpublisher.videoHeight();\n\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, stream);\n\n const video = stream.getVideoElement(publisher._otpublisher.element)[0];\n\n stream.setupDimensionsListener(video);\n\n return resolve();\n });\n\n publisher._otpublisher.once('destroyed', () => {\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n publisher._otpublisher.off();\n publisher._otpublisher = null;\n });\n\n this._session.publish(publisher._otpublisher, (error) => {\n if (error) {\n return reject(error);\n }\n });\n });\n }\n\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher._otpublisher.off();\n\n publisher._otpublisher.once('destroyed', () => {\n publisher._otpublisher = null;\n\n resolve();\n });\n\n publisher._otpublisher.destroy();\n });\n }\n\n createSubscriber(stream, target, params) {\n return new Promise((resolve, reject) => {\n if (stream._otstream.destroyed) {\n return reject(stream._otstream.destroyedReason);\n }\n\n const finish = _.once((err, res) => {\n if (err) {\n return reject(err);\n }\n\n return resolve(res);\n });\n\n function onDestroy(event) {\n if (event.stream.id === stream._otstream.id) {\n finish(event.stream.destroyedReason);\n }\n }\n\n this._session.on('streamDestroyed', onDestroy);\n const otsubscriber = this._session.subscribe(\n stream._otstream, target, params,\n (error) => {\n this._session.off('streamDestroyed', onDestroy);\n\n if (error) {\n return finish(error);\n }\n\n const subscriber = new TsMediaSubscriber({\n stream,\n _otsubscriber: otsubscriber,\n _session: this,\n });\n\n return finish(null, subscriber);\n }\n );\n });\n }\n\n destroySubscriber(subscriber) {\n return new Promise((resolve) => {\n subscriber._otsubscriber.off();\n\n subscriber._otsubscriber.on('destroyed', () => {\n subscriber._otsubscriber = null;\n\n return resolve();\n });\n\n subscriber._otsubscriber.destroy();\n });\n }\n}\n\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["opentok/stream.js"],"names":["EVENTS","TsOpenTokStream","session","otstream","id","_otstream","_session","_videoChannelExists","channel","filter","type","length","_audioChannelExists","publishAudio","publish","publisher","_otpublisher","publishVideo","subscribe","target","params","createSubscriber","then","subscriber","stream","_otsubscriber","on","e","emit","SUBSCRIBER_EVENTS","DESTROYED","DISCONNECTED","video","getVideoElement","element","_environment","isIE11","setAttribute","play","setupDimensionsListener","container","$","find","destroySubscriber","getSnapshot","tsMediaElement","timeout","format","quality","x","y","w","h","Promise","resolve","otElement","TsMediaPublisher","crop","_","isUndefined","resize","toLowerCase","getImgData","videoElement","videoElem","canvas","document","createElement","ctx","getContext","width","height","drawImage","videoHeight","videoWidth","toDataURL","currentWidth","currentHeight","currentPosition","position","videoDimensions","ratio","Math","max","css","left","top","setTimeout","pngDataURL","img","Image","onload","widthRatio","heightRatio","src","imgData","reject","getStats","err","stats","streamId","name","hasVideo","hasAudio","TsMediaStream"],"mappings":"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","file":"stream.js","sourcesContent":["import {\n EVENTS,\n TsMediaStream,\n} from '../stream';\n\nimport {\n EVENTS as SUBSCRIBER_EVENTS,\n} from '../subscriber';\n\nimport { TsMediaPublisher } from '../publisher';\n\nexport { EVENTS };\n\nexport class TsOpenTokStream extends TsMediaStream {\n constructor(session, otstream) {\n super(otstream.id, session);\n\n this._otstream = otstream;\n this._session = session;\n\n this._videoChannelExists = this._otstream.channel && (this._otstream.channel.filter((channel) => channel.type === 'video').length > 0);\n this._audioChannelExists = this._otstream.channel && (this._otstream.channel.filter((channel) => channel.type === 'audio').length > 0);\n }\n\n get id() {\n return this._otstream.streamId;\n }\n\n get name() {\n return this._otstream.name;\n }\n\n /**\n * Whether the stream has video. This property can change if the publisher turns on or off video\n * (by calling Publisher.publishVideo()). When this occurs, the Session object dispatches a streamPropertyChanged\n * event (see StreamPropertyChangedEvent).\n */\n get hasVideo() {\n return this._otstream.hasVideo;\n }\n\n /**\n * Whether the stream has audio. This property can change if the publisher turns on or off audio\n * (by calling Publisher.publishAudio()). When this occurs, the Session object dispatches a streamPropertyChanged\n * event (see StreamPropertyChangedEvent).\n */\n get hasAudio() {\n return this._otstream.hasAudio;\n }\n\n /**\n * Indicates if video channel exists in the stream.\n */\n get videoChannelExists() {\n return this._videoChannelExists;\n }\n\n /**\n * Indicates if audio channel exists in the stream.\n */\n get audioChannelExists() {\n return this._audioChannelExists;\n }\n\n publishAudio(publish) {\n if (this.publisher) {\n this.publisher._otpublisher.publishAudio(publish);\n }\n }\n\n publishVideo(publish) {\n if (this.publisher) {\n this.publisher._otpublisher.publishVideo(publish);\n }\n }\n\n subscribe(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n return this._session.createSubscriber(this, target, params)\n .then((subscriber) => {\n subscriber.stream = this;\n this.subscriber = subscriber;\n\n subscriber._otsubscriber.on('destroyed', (e) => {\n subscriber.emit(SUBSCRIBER_EVENTS.DESTROYED, e);\n });\n\n subscriber._otsubscriber.on('disconnected', (e) => {\n subscriber.emit(SUBSCRIBER_EVENTS.DISCONNECTED, e);\n });\n\n const video = this.getVideoElement(subscriber._otsubscriber.element)[0];\n\n if (!this._environment.isIE11()) {\n // Hack to override behavior introduced by Chrome v71 that unmuted video elements can't auto play\n video.setAttribute('muted', '');\n video.play();\n }\n\n this.setupDimensionsListener(video, subscriber);\n\n subscriber.id = subscriber._otsubscriber.id;\n\n return subscriber;\n });\n }\n\n getVideoElement(container) {\n const element = $(container).find('.OT_video-element');\n\n return (element.length > 0) ? element : $(container).find('.OT_video-container > video');\n }\n\n destroySubscriber(subscriber) {\n return this._session.destroySubscriber(subscriber);\n }\n\n getSnapshot(tsMediaElement, timeout = 0, {format = 'image/png', quality = 0.92, x, y, w, h} = {}) {\n return new Promise((resolve) => {\n const otElement = tsMediaElement[tsMediaElement instanceof TsMediaPublisher ? '_otpublisher' : '_otsubscriber'];\n const crop = !_.isUndefined(x) && !_.isUndefined(y) && !_.isUndefined(w) && !_.isUndefined(h);\n const resize = !crop && (!_.isUndefined(w) || !_.isUndefined(h));\n\n if (!this._environment.isIE11() && format.toLowerCase() === 'image/png' && !crop && !resize) {\n return resolve(`data:image/png;base64,${otElement.getImgData()}`);\n }\n\n const videoElement = this.getVideoElement(otElement.element);\n\n if (!this._environment.isIE11()) {\n const videoElem = videoElement[0];\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElem, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n if (!h) {\n h = w * (videoElem.videoHeight / videoElem.videoWidth);\n } else if (!w) {\n w = h * (videoElem.videoWidth / videoElem.videoHeight);\n }\n\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElem, 0, 0, w, h);\n } else {\n canvas.width = videoElem.videoWidth;\n canvas.height = videoElem.videoHeight;\n\n ctx.drawImage(videoElem, 0, 0);\n }\n\n return resolve(canvas.toDataURL(format, quality));\n }\n\n const currentWidth = videoElement.width();\n const currentHeight = videoElement.height();\n const currentPosition = videoElement.position();\n const {width: videoWidth, height: videoHeight} = this.videoDimensions;\n const ratio = Math.max(\n videoWidth / currentWidth,\n videoHeight / currentHeight\n );\n\n videoElement.width(videoWidth / ratio);\n videoElement.height(videoHeight / ratio);\n\n videoElement.css({\n left: currentPosition.left + Math.max(0,\n (currentWidth - videoWidth / ratio) / 2) + 'px',\n\n top: currentPosition.top + Math.max(0,\n (currentHeight - videoHeight / ratio) / 2) + 'px'\n });\n\n setTimeout(() => {\n const pngDataURL = `data:image/png;base64,${otElement.getImgData()}`;\n\n if (format.toLowerCase() === 'image/png' && !crop && !resize) {\n resolve(pngDataURL);\n } else {\n const img = new Image(),\n canvas = document.createElement('canvas'),\n ctx = canvas.getContext('2d');\n\n img.onload = () => {\n if (crop) {\n const widthRatio = img.width / videoWidth;\n const heightRatio = img.height / videoHeight;\n\n x = x && x * widthRatio;\n y = y && y * heightRatio;\n w = w && w * widthRatio;\n h = h && h * heightRatio;\n\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(img, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n if (!h) {\n h = w * (videoHeight / videoWidth);\n } else if (!w) {\n w = h * (videoWidth / videoHeight);\n }\n\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(img, 0, 0, w, h);\n } else {\n canvas.width = img.width;\n canvas.height = img.height;\n\n ctx.drawImage(img);\n }\n\n return resolve(canvas.toDataURL(format, quality));\n };\n\n img.src = pngDataURL;\n }\n\n videoElement.width(currentWidth);\n videoElement.height(currentHeight);\n\n videoElement.css({\n left: currentPosition.left + 'px',\n top: currentPosition.top + 'px'\n });\n }, timeout * 1000);\n })\n .then((imgData) => {\n if (!imgData || imgData.length < 10) {\n return Promise.reject('Failed to get a snapshot');\n }\n\n return imgData;\n });\n }\n\n getStats(subscriber) {\n return new Promise((resolve, reject) => {\n subscriber._otsubscriber.getStats((err, stats) => {\n if (err) {\n return reject(err);\n }\n\n return resolve(stats);\n });\n });\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["publisher.js"],"names":["PUBLISHER_EVENTS","STREAM_CREATED","DESTROYED","VIDEO_DIMENSIONS_CHANGED","EVENTS","TsMediaPublisher","session","data","_","assign","_session","publish","destroy","destroyPublisher","publishAudio","stream","Promise","reject","publishVideo","getSnapshot","options","turnFlashlight","isTorchOn","setAutoLightOffTimer","flashlightTimeout","EventEmitter"],"mappings":";;;;;AAAA;;;;;;;;AAEA;;;AAGA,IAAMA,mBAAmB;AACrBC,oBAAgB,gBADK;AAErBC,eAAW,WAFU;AAGrBC,8BAA0B;AAHL,CAAzB;;QAM6BC,M,GAApBJ,gB;;AAET;;;;;;;;;;;;IAWaK,gB,WAAAA,gB;;;AACT,8BAAYC,OAAZ,EAAqBC,IAArB,EAA2B;AAAA;;AAAA,qDACvB,wBADuB;;AAGvBC,UAAEC,MAAF,QAAeF,IAAf;;AAEA,cAAKG,QAAL,GAAgBJ,OAAhB;AALuB;AAM1B;;AAED;;;;;;;;;;;;;+BAWAK,O,sBAAU;AACN,eAAO,KAAKD,QAAL,CAAcC,OAAd,CAAsB,IAAtB,CAAP;AACH,K;;AAED;;;;;;;;+BAMAC,O,sBAAU;AACN,eAAO,KAAKF,QAAL,CAAcG,gBAAd,CAA+B,IAA/B,CAAP;AACH,K;;AAED;;;;;;;;;;+BAQAC,Y,yBAAaH,O,EAAS;AAClB,YAAI,KAAKI,MAAT,EAAiB;AACb,mBAAO,KAAKA,MAAL,CAAYD,YAAZ,CAAyBH,OAAzB,CAAP;AACH;;AAED,eAAOK,QAAQC,MAAR,EAAP;AACH,K;;AAED;;;;;;;;;;+BAQAC,Y,yBAAaP,O,EAAS;AAClB,YAAI,KAAKI,MAAT,EAAiB;AACb,mBAAO,KAAKA,MAAL,CAAYG,YAAZ,CAAyBP,OAAzB,CAAP;AACH;;AAED,eAAOK,QAAQC,MAAR,EAAP;AACH,K;;AAED;;;;;;;;;;+BAQAE,W,wBAAYC,O,EAAS;AACjB;AACA,eAAO,KAAKL,MAAL,CAAYI,WAAZ,CAAwB,IAAxB,EAA8B,CAA9B,EAAiCC,OAAjC,CAAP;AACH,K;;+BAEDC,c,6BAAiC;AAAA,YAAlBC,SAAkB,uEAAN,IAAM;;AAC7B,eAAO,KAAKP,MAAL,CAAYM,cAAZ,CAA2BC,SAA3B,CAAP;AACH,K;;+BAEDC,oB,iCAAqBC,iB,EAAmB;AACpC,eAAO,KAAKT,MAAL,CAAYQ,oBAAZ,CAAiCC,iBAAjC,CAAP;AACH,K;;;EArFiCC,0B","file":"publisher.js","sourcesContent":["import { EventEmitter } from './event-emitter';\n\n/**\n * @enum PUBLISHER_EVENTS\n */\nconst PUBLISHER_EVENTS = {\n STREAM_CREATED: 'STREAM_CREATED',\n DESTROYED: 'DESTROYED',\n VIDEO_DIMENSIONS_CHANGED: 'VIDEO_DIMENSIONS_CHANGED',\n};\n\nexport { PUBLISHER_EVENTS as EVENTS };\n\n/**\n * Publisher object represents publishing a media stream.\n *\n * Exposes session and stream wrapper methods specific for media publishing.\n *\n * Instance is returned by TsMediaSession.createPublisher() call\n *\n * @class\n *\n * @see TsMediaSession\n */\nexport class TsMediaPublisher extends EventEmitter {\n constructor(session, data) {\n super();\n\n _.assign(this, data);\n\n this._session = session;\n }\n\n /**\n * Publish media stream to a server.\n *\n * @method\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n */\n publish() {\n return this._session.publish(this);\n }\n\n /**\n * Unpublish the media strem and destroy publisher's view\n *\n * @method\n * @return { Promise }\n */\n destroy() {\n return this._session.destroyPublisher(this);\n }\n\n /**\n * Whether or not publish audio\n *\n * @method\n * @param { Boolean } publish\n *\n * @returns { Promise }\n */\n publishAudio(publish) {\n if (this.stream) {\n return this.stream.publishAudio(publish);\n }\n\n return Promise.reject();\n }\n\n /**\n * Whether or not publish video\n *\n * @method\n * @param { Boolean } publish\n *\n * @returns { Promise }\n */\n publishVideo(publish) {\n if (this.stream) {\n return this.stream.publishVideo(publish);\n }\n\n return Promise.reject();\n }\n\n /**\n * Get snapshot of the current frame in the media stream\n *\n * @method\n * @param { Object } options Snapshot options: format, quality and crop positions\n *\n * @returns { Promise<String> } snapshot\n */\n getSnapshot(options) {\n // Since a video publisher (the client) won't be used in IE, we can drop the timeout.\n return this.stream.getSnapshot(this, 0, options);\n }\n\n turnFlashlight(isTorchOn = true) {\n return this.stream.turnFlashlight(isTorchOn);\n }\n\n setAutoLightOffTimer(flashlightTimeout) {\n return this.stream.setAutoLightOffTimer(flashlightTimeout);\n }\n}\n\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["service.js"],"names":["trace","window","WebRtcSessionTrace","environmentDetect","TsEnvironmentDetect","isIE11","require","isChrome","majorVersion","_isOTDefined","OT","e","_waitForOT","Promise","resolve","isDefined","reduce","Array","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","delay","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","then","reject","SERVICE_EVENTS","SESSION_CREATED","EXCEPTION","EVENTS","sessions","latestLocalStream","userMediaPromise","TsMediaServiceFacade","createLocalMediaStream","bind","destroyLocalMediaStream","constraints","videoTrack","getVideoTracks","length","readyState","navigator","mediaDevices","getUserMedia","stream","catch","err","getTracks","forEach","track","stop","toggleMicrophone","enableMic","audioTracks","getAudioTracks","enabled","getDevices","error","devices","enumerateDevices","verifyCameraAccess","deviceOpts","isVideoPlaySupportedOnDevice","WebRTCAdapter","OTPlugin","isInstalled","initSession","isMobile","resolution","mediaServiceType","credentials","isLoopback","MEDIA_SERVICE_TYPES","MEDIASERVER","sessionOptions","tsMediaServer","audio","video","KMSWebRTCSession","TURNSERVER","creds","turnServer","opentok","LoopbackWebRTCSession","TurnWebRTCSession","getTurnMediaSessionV2","mediaSession","subscribeTurnSessionEvents","TsOpenTokSession","session","emit","push","clientType","CLIENT_TYPES","INITIATOR","GUEST","sessionParams","streamFactory","TurnWebRtcSessionV2","disconnectHandler","off","SESSION_EVENTS","DISCONNECTED","on","EventEmitter","TsMediaService"],"mappings":"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","file":"service.js","sourcesContent":["import {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {EventEmitter} from './event-emitter';\nimport {SESSION_EVENTS} from './session';\nimport {TsOpenTokSession} from './opentok/session';\nimport {KMSWebRTCSession, LoopbackWebRTCSession, TurnWebRTCSession, TurnWebRtcSessionV2} from './webrtc/session';\nimport {getHighestResolutionStream, getMediaConstraints} from './webrtc/helper';\n\nimport {\n MEDIA_SERVICE_TYPES,\n WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL,\n WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS\n} from './constants';\nimport {CLIENT_TYPES} from './webrtc/constants';\nimport {getTracer} from './tracer';\n\nconst trace = getTracer('WebRtcSessionTrace', () => window.WebRtcSessionTrace === true);\n\n\nconst environmentDetect = new TsEnvironmentDetect();\nconst isIE11 = environmentDetect.isIE11();\n\nif (isIE11) {\n require('./webrtc/webrtc-ie-shim.js');\n} else if (!(environmentDetect.isChrome() && (environmentDetect.majorVersion() < 49))) {\n require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require\n}\n\nfunction _isOTDefined() {\n try {\n return !!OT;\n } catch (e) {\n return false;\n }\n}\n\nfunction _waitForOT() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n\n let isDefined = false;\n\n return Promise.reduce(\n new Array(WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS),\n () => {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n\n return Promise.resolve();\n }\n\n return Promise.delay(WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(() => isDefined || Promise.reject('OT is undefined'));\n}\n\n/**\n * @enum SERVICE_EVENTS\n */\nconst SERVICE_EVENTS = {\n SESSION_CREATED: 'SESSION_CREATED',\n EXCEPTION: 'EXCEPTION'\n};\n\nexport {SERVICE_EVENTS as EVENTS};\n\nconst sessions = [];\nlet latestLocalStream = null;\nlet userMediaPromise = null;\n\n/**\n * The top of hierarchy and the entry point of the TsMedia Service.\n *\n * @static\n * @class\n * @extends EventEmitter\n */\nclass TsMediaServiceFacade extends EventEmitter {\n constructor() {\n super();\n\n this.createLocalMediaStream = this.createLocalMediaStream.bind(this);\n this.destroyLocalMediaStream = this.destroyLocalMediaStream.bind(this);\n }\n\n /**\n * All created sessoins\n *\n * @member { Object }\n * @memberof TsMediaService\n * @type { Array<TsMediaSession> }\n */\n get sessions() {\n return sessions;\n }\n\n createLocalMediaStream(constraints) {\n trace('createLocalMediaStream');\n if (userMediaPromise) {\n return userMediaPromise;\n }\n\n if (latestLocalStream) {\n const videoTrack = latestLocalStream.getVideoTracks();\n if (videoTrack.length > 0 && videoTrack[0].readyState === 'live') {\n return Promise.resolve(latestLocalStream);\n } else {\n this.destroyLocalMediaStream();\n }\n }\n\n userMediaPromise = new Promise((resolve, reject) => {\n try {\n trace('createLocalMediaStream inside promise');\n\n navigator.mediaDevices.getUserMedia(constraints)\n .then((stream) => {\n latestLocalStream = stream;\n userMediaPromise = null;\n resolve(stream);\n })\n .catch((err) => {\n userMediaPromise = null;\n reject(err);\n });\n } catch (e) {\n userMediaPromise = null;\n reject(e);\n }\n });\n\n return userMediaPromise;\n }\n\n destroyLocalMediaStream() {\n trace('Destroy local streams');\n if (latestLocalStream) {\n latestLocalStream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n\n latestLocalStream = null;\n }\n\n toggleMicrophone(enableMic = true) {\n if (!latestLocalStream) {\n return Promise.resolve();\n }\n\n const audioTracks = latestLocalStream.getAudioTracks();\n if (audioTracks.length > 0) {\n audioTracks[0].enabled = enableMic;\n }\n\n return Promise.resolve();\n }\n\n /**\n * Enumerate available media devices\n *\n * @method\n * @memberof TsMediaService\n * @returns { Promise<Array<MediaDeviceInfo>> } devices list\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo | MediaDeviceInfo documentation}\n */\n getDevices() {\n if ((typeof OT !== 'undefined') && OT && OT.getDevices) {\n return new Promise((resolve, reject) => {\n OT.getDevices((error, devices) => {\n if (error) {\n return reject(error);\n }\n\n return resolve(devices);\n });\n });\n }\n\n if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n return navigator.mediaDevices.enumerateDevices();\n }\n\n return Promise.reject('getDevices is not supported');\n }\n\n /**\n * Verifies camera access\n *\n * @method\n * @memberof TsMediaService\n * @returns { Promise<Object> } returns {stream,constraints} if successful, or rejected promise if failed\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo | MediaDeviceInfo documentation}\n */\n verifyCameraAccess(deviceOpts) {\n return getHighestResolutionStream(deviceOpts);\n }\n\n isVideoPlaySupportedOnDevice() {\n if (!isIE11) {\n return Promise.resolve(true);\n }\n\n if (!!window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n\n if (window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled()) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n }\n\n /**\n * Init WebRTC or OpenTok session depends on required type.\n *\n * Returns an initialized specific implementation of TsMediaSession interface.\n *\n * Assuming mobile will be a publisher and not mobile will be a subscriber.\n *\n * @method\n * @memberof TsMediaService\n *\n * @param { OPENTOK|MEDIASERVER|TURNSERVER } mediaServiceType required implementation\n * @param { Boolean } isMobile Whether techsee-mobile or not calls this method.\n * @param { Object } resolution constraint to use for video stream\n * @param { opentok|tsMediaServer|turnServer } credentials server/service credentials\n * @param { Object } deviceOpts requested devices (mainly audio/video device ids)\n * @param { Boolean } isLoopback Whether to use loopback webrtc\n *\n * @returns { Promise<TsMediaSession> }\n */\n initSession({\n mediaServiceType,\n isMobile,\n resolution,\n credentials,\n deviceOpts,\n isLoopback\n } = {\n isMobile: false,\n resolution: '640x480'\n }) {\n return Promise.resolve()\n .then(() => {\n if (mediaServiceType === MEDIA_SERVICE_TYPES.MEDIASERVER) {\n //\n // KMS CONNECTION\n //\n return Promise.resolve()\n .then(() => {\n const sessionOptions = {\n isMobile,\n resolution,\n\n credentials: credentials.tsMediaServer,\n deviceOpts: deviceOpts || {audio: true, video: true}\n };\n\n return new KMSWebRTCSession(sessionOptions);\n });\n } else if (mediaServiceType === MEDIA_SERVICE_TYPES.TURNSERVER || isLoopback) {\n //\n // TURN-based connection or loopback (no connection)\n //\n return Promise.resolve()\n .then(() => {\n let creds = null;\n\n if (!isLoopback) {\n creds = (mediaServiceType === MEDIA_SERVICE_TYPES.TURNSERVER) ? credentials.turnServer : credentials.opentok;\n }\n\n const sessionOptions = {\n isMobile,\n resolution,\n credentials: creds,\n deviceOpts: deviceOpts || {audio: true, video: true}\n };\n\n if (isLoopback) {\n return new LoopbackWebRTCSession(sessionOptions);\n } else if (isMobile) {\n return new TurnWebRTCSession(sessionOptions, this.createLocalMediaStream);\n } else {\n return this.getTurnMediaSessionV2(sessionOptions)\n .then((mediaSession) => {\n this.subscribeTurnSessionEvents(mediaSession);\n\n return mediaSession;\n });\n }\n });\n }\n\n //\n // OT CONNECTION (default mediaServiceType)\n //\n return Promise.resolve()\n .then(() => _waitForOT())\n .then(() => {\n const sessionOptions = {\n isMobile,\n resolution,\n\n credentials: credentials.opentok\n };\n\n return new TsOpenTokSession(sessionOptions);\n });\n })\n .then((session) => {\n this.emit(SERVICE_EVENTS.SESSION_CREATED, session);\n\n sessions.push(session);\n\n return session;\n });\n }\n\n getTurnMediaSessionV2(sessionOptions) {\n return getMediaConstraints({\n resolution: sessionOptions.resolution,\n deviceOpts: sessionOptions.deviceOpts\n }).then((constraints) => {\n const clientType = sessionOptions.isMobile ? CLIENT_TYPES.INITIATOR : CLIENT_TYPES.GUEST;\n\n // streaming from dashboard is not supported and we\n // don't want to access the camera without a reason\n if (clientType === CLIENT_TYPES.GUEST) {\n delete constraints.video;\n }\n\n const sessionParams = {\n constraints,\n clientType,\n credentials: sessionOptions.credentials,\n streamFactory: this.createLocalMediaStream\n };\n\n return new TurnWebRtcSessionV2(sessionParams);\n });\n }\n\n subscribeTurnSessionEvents(mediaSession) {\n const disconnectHandler = () => {\n this.destroyLocalMediaStream();\n mediaSession.off(SESSION_EVENTS.DISCONNECTED, disconnectHandler);\n };\n\n mediaSession.on(SESSION_EVENTS.DISCONNECTED, disconnectHandler);\n }\n}\n\nexport const TsMediaService = new TsMediaServiceFacade();\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["session.js"],"names":["SESSION_EVENTS","CONNECTED","DISCONNECTED","EXCEPTION","STREAM_CREATED","STREAM_DESTROYED","STREAM_PROPERTY_CHANGED","RECONNECT_TURN_SERVER","TURN_SERVER_CONNECTION_FAILED","PEER_CONNECTED","PEER_DISCONNECTED","EVENTS","TsMediaSession","_streams","Map","on","event","stream","emit","STREAM_EVENTS","PROPERTY_CHANGED","registerStream","id","set","unregisterStream","delete","streamArray","forEach","push","EventEmitter"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;AAEA;;;AAGO,IAAMA,0CAAiB;AAC1BC,eAAW,WADe;AAE1BC,kBAAc,cAFY;AAG1BC,eAAW,WAHe;AAI1BC,oBAAgB,gBAJU;AAK1BC,sBAAkB,kBALQ;AAM1BC,6BAAyB,yBANC;AAO1BC,2BAAuB,uBAPG;AAQ1BC,mCAA+B,+BARL;AAS1BC,oBAAgB,gBATU;AAU1BC,uBAAmB;AAVO,CAAvB;;QAamBC,M,GAAlBX,c;;AAER;;;;;;;;;;;;;;;;IAeaY,c,WAAAA,c;;;AACT,8BAAc;AAAA;;AAAA,qDACV,wBADU;;AAGV,cAAKC,QAAL,GAAgB,IAAIC,GAAJ,EAAhB;;AAEA,cAAKC,EAAL,CAAQf,eAAeM,uBAAvB,EAAgD,UAACU,KAAD,EAAW;AACvD,gBAAIA,MAAMC,MAAV,EAAkB;AACdD,sBAAMC,MAAN,CAAaC,IAAb,CAAkBC,eAAcC,gBAAhC,EAAkDJ,KAAlD;AACH;AACJ,SAJD;AALU;AAUb;;AAED;;;;;;;;AAcA;;;;;;;;;6BASAK,c,2BAAeC,E,EAAIL,M,EAAQ;AACvB,aAAKJ,QAAL,CAAcU,GAAd,CAAkBD,EAAlB,EAAsBL,MAAtB;AACH,K;;6BAEDO,gB,6BAAiBF,E,EAAI;AACjB,aAAKT,QAAL,CAAcY,MAAd,CAAqBH,EAArB;AACH,K;;;;4BAvBa;AACV,gBAAMI,cAAc,EAApB;;AAEA,iBAAKb,QAAL,CAAcc,OAAd,CAAsB,UAACV,MAAD;AAAA,uBAAYS,YAAYE,IAAZ,CAAiBX,MAAjB,CAAZ;AAAA,aAAtB;;AAEA,mBAAOS,WAAP;AACH;;;;EAzB+BG,0B","file":"session.js","sourcesContent":["import {EventEmitter} from './event-emitter';\n\nimport {EVENTS as STREAM_EVENTS} from './stream';\n\n/**\n * @enum SESSION_EVENTS\n */\nexport const SESSION_EVENTS = {\n CONNECTED: 'CONNECTED',\n DISCONNECTED: 'DISCONNECTED',\n EXCEPTION: 'EXCEPTION',\n STREAM_CREATED: 'STREAM_CREATED',\n STREAM_DESTROYED: 'STREAM_DESTROYED',\n STREAM_PROPERTY_CHANGED: 'STREAM_PROPERTY_CHANGED',\n RECONNECT_TURN_SERVER: 'RECONNECT_TURN_SERVER',\n TURN_SERVER_CONNECTION_FAILED: 'TURN_SERVER_CONNECTION_FAILED',\n PEER_CONNECTED: 'PEER_CONNECTED',\n PEER_DISCONNECTED: 'PEER_DISCONNECTED'\n};\n\nexport {SESSION_EVENTS as EVENTS};\n\n/**\n * Session object returned by TsMediaSercice.initSession() call.\n * <br>\n * Represents connection to OpenTok server or TsMediaServer.\n * <br>\n * General interface for the specific implementations - TsOpenTokSession and TsWebRTCSession\n *\n * @interface\n * @extends EventEmitter\n *\n * @fires SESSION_EVENTS#CONNECTED\n * @fires SESSION_EVENTS#DISCONNECTED\n * @fires SESSION_EVENTS#EXCEPTION\n * @fires SESSION_EVENTS#STREAM_CREATED\n */\nexport class TsMediaSession extends EventEmitter {\n constructor() {\n super();\n\n this._streams = new Map();\n\n this.on(SESSION_EVENTS.STREAM_PROPERTY_CHANGED, (event) => {\n if (event.stream) {\n event.stream.emit(STREAM_EVENTS.PROPERTY_CHANGED, event);\n }\n });\n }\n\n /**\n * All media streams registered in the session.\n *\n * @member { Object }\n * @type { Array<TsMediaStream> }\n */\n get streams() {\n const streamArray = [];\n\n this._streams.forEach((stream) => streamArray.push(stream));\n\n return streamArray;\n }\n\n /**\n * Register new media stream in the session.\n *\n * Called internally by TsMediaStream constructor.\n *\n * @method\n * @param { String } id Stream id\n * @param { TsMediaStream } stream Media Stream\n */\n registerStream(id, stream) {\n this._streams.set(id, stream);\n }\n\n unregisterStream(id) {\n this._streams.delete(id);\n }\n}\n\n"]}
package/lib/stream.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["stream.js"],"names":["STREAM_EVENTS","PROPERTY_CHANGED","EVENTS","TsMediaStream","id","session","isRemote","videoTrackSettings","registerStream","remote","_width","width","_height","height","_environment","TsEnvironmentDetect","_updateVideoDimensions","videoEl","videoWidth","videoHeight","stream","property","value","videoDimensions","_session","emit","SESSION_EVENTS","STREAM_PROPERTY_CHANGED","setupDimensionsListener","subscriber","_clearUpdateDimensionsInterval","isIE11","isIOS","$","on","intervalId","setInterval","hasVideo","SUBSCRIBER_EVENTS","DESTROYED","clearInterval","getSnapshot","tsMediaElement","timeout","format","quality","x","y","w","h","TypeError","turnFlashlight","isTorchOn","setAutoLightOffTimer","flashlightTimeout","EventEmitter"],"mappings":"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","file":"stream.js","sourcesContent":["import {EventEmitter} from './event-emitter';\n\nimport {\n EVENTS as SESSION_EVENTS\n} from './session';\n\nimport {\n EVENTS as SUBSCRIBER_EVENTS\n} from './subscriber';\n\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\n/**\n * @enum STREAM_EVENTS\n */\nconst STREAM_EVENTS = {\n PROPERTY_CHANGED: 'PROPERTY_CHANGED'\n};\n\nexport {STREAM_EVENTS as EVENTS};\n\n/**\n * Media stream wrapper.\n *\n * Represents video or audio stream, local or remote.\n *\n * General interface for the specific implementations - TsOpenTokStream or TsWebRTCStream\n *\n * @interface\n *\n * @see TsOpenTokStream\n * @see TsWebRTCStream\n */\nexport class TsMediaStream extends EventEmitter {\n constructor(id, session, isRemote = true, videoTrackSettings) {\n super();\n\n session.registerStream(id, this);\n this.remote = isRemote;\n\n if (videoTrackSettings) {\n this._width = videoTrackSettings.width;\n this._height = videoTrackSettings.height;\n }\n\n /**\n * Environment detector\n *\n * @protected\n * @member { Object }\n */\n this._environment = new TsEnvironmentDetect();\n }\n\n /**\n * Stream video dimensions\n *\n * @member { Object }\n * @type { Object }\n */\n get videoDimensions() {\n // FIXME the fallback dimensions should be removed, and the Opentok/Webrtc implementations\n // should pass the dimensions just like loopback does. I suspect current behavior is\n // the cause of the video element \"jumping\" (change size) on initial connection\n return {width: this._width || 480, height: this._height || 640};\n }\n\n _updateVideoDimensions(videoEl) {\n if (videoEl) {\n this._width = videoEl.videoWidth;\n this._height = videoEl.videoHeight;\n\n const stream = this;\n const property = 'videoDimensions';\n const value = this.videoDimensions;\n\n this._session.emit(SESSION_EVENTS.STREAM_PROPERTY_CHANGED, {stream, property, value});\n }\n }\n\n setupDimensionsListener(videoEl, subscriber) {\n this._clearUpdateDimensionsInterval();\n\n this._width = videoEl.videoWidth;\n this._height = videoEl.videoHeight;\n\n if (!subscriber && !this._environment.isIE11() && !this._environment.isIOS()) {\n $(videoEl).on('resize', () => this._updateVideoDimensions(videoEl));\n } else {\n this.intervalId = setInterval(() => {\n if (subscriber && !(subscriber.stream && subscriber.stream.hasVideo)) {\n return;\n }\n\n if (this._width !== videoEl.videoWidth || this._height !== videoEl.videoHeight) {\n this._updateVideoDimensions(videoEl);\n }\n }, 500);\n }\n\n if (subscriber && this.intervalId) {\n subscriber.on(SUBSCRIBER_EVENTS.DESTROYED, () => {\n this._clearUpdateDimensionsInterval();\n });\n }\n }\n\n _clearUpdateDimensionsInterval() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n\n this.intervalId = null;\n }\n }\n\n /* eslint-disable no-unused-vars */\n /**\n * Get snapshot of the current frame in the media stream\n *\n * Used internally in (TsMediaPublisher | TsMediaSubscriber).getSnapshot\n *\n * @method\n * @param { TsMediaPublisher | TsMediaSubscriber } tsMediaElement\n * @param { Number } timeout Usually used in IE. Time between video element transformation and snapshot.\n * @param { Object } options\n * format: Output MIME type (image/png or image/jpeg; default: image/png).\n * quality: Output quality (between 0 and 1; default: 0.92; applies only when the format is image/jpeg).\n * x: The x coordinate of the crop starting position.\n * y: The y coordinate of the crop starting position.\n * w: Crop width.\n * h: Crop Height.\n *\n * @returns { Promise<String> } snapshot\n */\n getSnapshot(tsMediaElement, timeout = 0, {format = 'image/png', quality = 0.92, x, y, w, h} = {}) {\n throw new TypeError('The method \\'getSnapshot\\' is not implemented');\n }\n\n turnFlashlight(isTorchOn = true) {\n throw new TypeError('The method \\'turnFlashlight\\' is not implemented');\n }\n\n setAutoLightOffTimer(flashlightTimeout) {\n throw new TypeError('The method \\'setAutoLightOffTimer\\' is not implemented');\n }\n\n /* eslint-enable no-unused-vars */\n}\n\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["subscriber.js"],"names":["SUBSCRIBER_EVENTS","DESTROYED","DISCONNECTED","EVENTS","TsMediaSubscriber","data","_","assign","destroy","stream","destroySubscriber","getSnapshot","timeout","options","getStats","EventEmitter"],"mappings":";;;;;AAAA;;;;;;;;AAEA;;;AAGA,IAAMA,oBAAoB;AACtBC,eAAW,WADW;AAEtBC,kBAAc;AAFQ,CAA1B;;QAK8BC,M,GAArBH,iB;;AAET;;;;;;;;;;;;IAWaI,iB,WAAAA,iB;;;AACT,+BAAYC,IAAZ,EAAkB;AAAA;;AAAA,qDACd,wBADc;;AAGdC,UAAEC,MAAF,QAAeF,IAAf;AAHc;AAIjB;;AAED;;;;;;;gCAKAG,O,sBAAU;AACN,eAAO,KAAKC,MAAL,CAAYC,iBAAZ,CAA8B,IAA9B,CAAP;AACH,K;;AAED;;;;;;;;;;;;;gCAWAC,W,wBAAYC,O,EAASC,O,EAAS;AAC1B,eAAO,KAAKJ,MAAL,CAAYE,WAAZ,CAAwB,IAAxB,EAA8BC,OAA9B,EAAuCC,OAAvC,CAAP;AACH,K;;AAED;;;;;;;;gCAMAC,Q,uBAAW;AACP,eAAO,KAAKL,MAAL,CAAYK,QAAZ,CAAqB,IAArB,CAAP;AACH,K;;;EAvCkCC,0B","file":"subscriber.js","sourcesContent":["import { EventEmitter } from './event-emitter';\n\n/**\n * @enum SUBSCRIBER_EVENTS\n */\nconst SUBSCRIBER_EVENTS = {\n DESTROYED: 'DESTROYED',\n DISCONNECTED: 'DISCONNECTED',\n};\n\nexport { SUBSCRIBER_EVENTS as EVENTS };\n\n/**\n * Subscriber object represents subscription to a media stream.\n *\n * Exposes session and stream wrapper methods specific for media subscription.\n *\n * Instance is returned by TsMediaStream.subscribe() call\n *\n * @class\n *\n * @see TsMediaStream\n */\nexport class TsMediaSubscriber extends EventEmitter {\n constructor(data) {\n super();\n\n _.assign(this, data);\n }\n\n /**\n * Unsubscribe from the media stream and destroy subscriber's view\n *\n * @method\n */\n destroy() {\n return this.stream.destroySubscriber(this);\n }\n\n /**\n * Get snapshot of the current frame in the media stream\n *\n * @method\n * @param { Number } timeout Usually used in IE.\n * Time between video element transformation and snapshot.\n *\n * @param { Object } options Snapshot options: format, quality and crop positions\n *\n * @returns { Promise<String> } snapshot\n */\n getSnapshot(timeout, options) {\n return this.stream.getSnapshot(this, timeout, options);\n }\n\n /**\n * Get statistics of the media subscription like bytes received.\n *\n * @method\n * @returns { Promise<ToBeDefined> } stats\n */\n getStats() {\n return this.stream.getStats(this);\n }\n}\n\n"]}
package/lib/tracer.js DELETED
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- exports.__esModule = true;
4
- exports.getTracer = getTracer;
5
- function getTracer(prefix, isEnabledFn) {
6
- var trace = function trace(message) {
7
- var _console;
8
-
9
- if (typeof isEnabledFn !== 'function' || !isEnabledFn()) {
10
- return;
11
- }
12
-
13
- for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
14
- rest[_key - 1] = arguments[_key];
15
- }
16
-
17
- (_console = console).log.apply(_console, [prefix + ':' + message].concat(rest));
18
- };
19
-
20
- return trace;
21
- }
22
- //# sourceMappingURL=tracer.js.map
package/lib/tracer.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["tracer.js"],"names":["getTracer","prefix","isEnabledFn","trace","message","rest","log"],"mappings":";;;QAAgBA,S,GAAAA,S;AAAT,SAASA,SAAT,CAAmBC,MAAnB,EAA2BC,WAA3B,EAAwC;AAC3C,QAAMC,QAAQ,SAARA,KAAQ,CAAUC,OAAV,EAA4B;AAAA;;AACtC,YAAI,OAAOF,WAAP,KAAuB,UAAvB,IAAqC,CAACA,aAA1C,EAAyD;AACrD;AACH;;AAHqC,0CAANG,IAAM;AAANA,gBAAM;AAAA;;AAKtC,6BAAQC,GAAR,kBAAYL,SAAS,GAAT,GAAeG,OAA3B,SAAuCC,IAAvC;AACH,KAND;;AAQA,WAAOF,KAAP;AACH","file":"tracer.js","sourcesContent":["export function getTracer(prefix, isEnabledFn) {\n const trace = function (message, ...rest) {\n if (typeof isEnabledFn !== 'function' || !isEnabledFn()) {\n return;\n }\n\n console.log(prefix + ':' + message, ...rest);\n };\n\n return trace;\n}\n"]}
@@ -1,41 +0,0 @@
1
- export declare type VideoStreamParams = {
2
- resolution: string;
3
- };
4
- export declare type DeviceMediaOptions = {
5
- loopBackVideo?: VideoStreamParams;
6
- cameraVideo?: VideoStreamParams;
7
- desktopStream?: VideoStreamParams;
8
- };
9
- export declare type MediaServiceOptions = {
10
- deviceMediaOptions: DeviceMediaOptions;
11
- };
12
- export declare type MediaSessionParams = {
13
- sessionId: string;
14
- sessionType: MediaSessionType;
15
- clientType: SessionClientType;
16
- clientRole: SessionClientRole;
17
- credentials: any;
18
- };
19
- export declare type MediaSubscriberParams = {
20
- container: HTMLDivElement;
21
- streamType: KnownMediaStream;
22
- };
23
- export declare enum MediaSessionType {
24
- OPENTOK = "OPENTOK",
25
- TURNSERVER = "TURNSERVER"
26
- }
27
- export declare enum SessionClientRole {
28
- AGENT = "AGENT",
29
- OBSERVER = "OBSERVER",
30
- USER = "USER"
31
- }
32
- export declare enum SessionClientType {
33
- INITIATOR = "publisher",
34
- GUEST = "subscriber"
35
- }
36
- export declare enum KnownMediaStream {
37
- AGENT_AUDIO_STREAM = "AGENT_AUDIO_STREAM",
38
- USER_AUDIO_STREAM = "USER_AUDIO_STREAM",
39
- USER_VIDEO_STREAM = "USER_VIDEO_STREAM",
40
- USER_SCREEN_SHARE_STREAM = "USER_SCREEN_SHARE_STREAM"
41
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/v2/Contracts.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,oBAAY,kBAAkB,GAAG;IAC7B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CACpC,CAAA;AAED,oBAAY,mBAAmB,GAAG;IAC9B,kBAAkB,EAAE,kBAAkB,CAAA;CACzC,CAAA;AAED,oBAAY,kBAAkB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,GAAG,CAAC;CACpB,CAAA;AAED,oBAAY,qBAAqB,GAAG;IAChC,SAAS,EAAE,cAAc,CAAC;IAC1B,UAAU,EAAE,gBAAgB,CAAA;CAC/B,CAAA;AAED,oBAAY,gBAAgB;IACxB,OAAO,YAAY;IACnB,UAAU,eAAe;CAC5B;AAED,oBAAY,iBAAiB;IACzB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,IAAI,SAAS;CAChB;AAED,oBAAY,iBAAiB;IACzB,SAAS,cAAc;IACvB,KAAK,eAAe;CACvB;AAED,oBAAY,gBAAgB;IACxB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,wBAAwB,6BAA6B;CACxD","file":"Contracts.d.ts","sourcesContent":["export type VideoStreamParams = {\n resolution: string\n}\n\nexport type DeviceMediaOptions = {\n loopBackVideo?: VideoStreamParams,\n cameraVideo?: VideoStreamParams,\n desktopStream?: VideoStreamParams\n}\n\nexport type MediaServiceOptions = {\n deviceMediaOptions: DeviceMediaOptions\n}\n\nexport type MediaSessionParams = {\n sessionId: string,\n sessionType: MediaSessionType,\n clientType: SessionClientType,\n clientRole: SessionClientRole,\n credentials: any, //TODO - Define type for credentials\n}\n\nexport type MediaSubscriberParams = {\n container: HTMLDivElement,\n streamType: KnownMediaStream\n}\n\nexport enum MediaSessionType {\n OPENTOK = 'OPENTOK',\n TURNSERVER = 'TURNSERVER'\n}\n\nexport enum SessionClientRole {\n AGENT = 'AGENT',\n OBSERVER = 'OBSERVER',\n USER = 'USER'\n};\n\nexport enum SessionClientType {\n INITIATOR = 'publisher',\n GUEST = 'subscriber'\n};\n\nexport enum KnownMediaStream {\n AGENT_AUDIO_STREAM = 'AGENT_AUDIO_STREAM',\n USER_AUDIO_STREAM = 'USER_AUDIO_STREAM',\n USER_VIDEO_STREAM = 'USER_VIDEO_STREAM',\n USER_SCREEN_SHARE_STREAM = 'USER_SCREEN_SHARE_STREAM'\n}\n"]}
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- var MediaSessionType;
5
- (function (MediaSessionType) {
6
- MediaSessionType["OPENTOK"] = "OPENTOK";
7
- MediaSessionType["TURNSERVER"] = "TURNSERVER";
8
- })(MediaSessionType = exports.MediaSessionType || (exports.MediaSessionType = {}));
9
- var SessionClientRole;
10
- (function (SessionClientRole) {
11
- SessionClientRole["AGENT"] = "AGENT";
12
- SessionClientRole["OBSERVER"] = "OBSERVER";
13
- SessionClientRole["USER"] = "USER";
14
- })(SessionClientRole = exports.SessionClientRole || (exports.SessionClientRole = {}));
15
- ;
16
- var SessionClientType;
17
- (function (SessionClientType) {
18
- SessionClientType["INITIATOR"] = "publisher";
19
- SessionClientType["GUEST"] = "subscriber";
20
- })(SessionClientType = exports.SessionClientType || (exports.SessionClientType = {}));
21
- ;
22
- var KnownMediaStream;
23
- (function (KnownMediaStream) {
24
- KnownMediaStream["AGENT_AUDIO_STREAM"] = "AGENT_AUDIO_STREAM";
25
- KnownMediaStream["USER_AUDIO_STREAM"] = "USER_AUDIO_STREAM";
26
- KnownMediaStream["USER_VIDEO_STREAM"] = "USER_VIDEO_STREAM";
27
- KnownMediaStream["USER_SCREEN_SHARE_STREAM"] = "USER_SCREEN_SHARE_STREAM";
28
- })(KnownMediaStream = exports.KnownMediaStream || (exports.KnownMediaStream = {}));
29
-
30
- //# sourceMappingURL=Contracts.js.map
31
- //# sourceMappingURL=Contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["v2/Contracts.js"],"names":["Object","defineProperty","exports","value","MediaSessionType","SessionClientRole","SessionClientType","KnownMediaStream"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACA,IAAIC,gBAAJ;AACA,CAAC,UAAUA,gBAAV,EAA4B;AACzBA,qBAAiB,SAAjB,IAA8B,SAA9B;AACAA,qBAAiB,YAAjB,IAAiC,YAAjC;AACH,CAHD,EAGGA,mBAAmBF,QAAQE,gBAAR,KAA6BF,QAAQE,gBAAR,GAA2B,EAAxD,CAHtB;AAIA,IAAIC,iBAAJ;AACA,CAAC,UAAUA,iBAAV,EAA6B;AAC1BA,sBAAkB,OAAlB,IAA6B,OAA7B;AACAA,sBAAkB,UAAlB,IAAgC,UAAhC;AACAA,sBAAkB,MAAlB,IAA4B,MAA5B;AACH,CAJD,EAIGA,oBAAoBH,QAAQG,iBAAR,KAA8BH,QAAQG,iBAAR,GAA4B,EAA1D,CAJvB;AAKA;AACA,IAAIC,iBAAJ;AACA,CAAC,UAAUA,iBAAV,EAA6B;AAC1BA,sBAAkB,WAAlB,IAAiC,WAAjC;AACAA,sBAAkB,OAAlB,IAA6B,YAA7B;AACH,CAHD,EAGGA,oBAAoBJ,QAAQI,iBAAR,KAA8BJ,QAAQI,iBAAR,GAA4B,EAA1D,CAHvB;AAIA;AACA,IAAIC,gBAAJ;AACA,CAAC,UAAUA,gBAAV,EAA4B;AACzBA,qBAAiB,oBAAjB,IAAyC,oBAAzC;AACAA,qBAAiB,mBAAjB,IAAwC,mBAAxC;AACAA,qBAAiB,mBAAjB,IAAwC,mBAAxC;AACAA,qBAAiB,0BAAjB,IAA+C,0BAA/C;AACH,CALD,EAKGA,mBAAmBL,QAAQK,gBAAR,KAA6BL,QAAQK,gBAAR,GAA2B,EAAxD,CALtB;;AAOA","file":"Contracts.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MediaSessionType;\n(function (MediaSessionType) {\n MediaSessionType[\"OPENTOK\"] = \"OPENTOK\";\n MediaSessionType[\"TURNSERVER\"] = \"TURNSERVER\";\n})(MediaSessionType = exports.MediaSessionType || (exports.MediaSessionType = {}));\nvar SessionClientRole;\n(function (SessionClientRole) {\n SessionClientRole[\"AGENT\"] = \"AGENT\";\n SessionClientRole[\"OBSERVER\"] = \"OBSERVER\";\n SessionClientRole[\"USER\"] = \"USER\";\n})(SessionClientRole = exports.SessionClientRole || (exports.SessionClientRole = {}));\n;\nvar SessionClientType;\n(function (SessionClientType) {\n SessionClientType[\"INITIATOR\"] = \"publisher\";\n SessionClientType[\"GUEST\"] = \"subscriber\";\n})(SessionClientType = exports.SessionClientType || (exports.SessionClientType = {}));\n;\nvar KnownMediaStream;\n(function (KnownMediaStream) {\n KnownMediaStream[\"AGENT_AUDIO_STREAM\"] = \"AGENT_AUDIO_STREAM\";\n KnownMediaStream[\"USER_AUDIO_STREAM\"] = \"USER_AUDIO_STREAM\";\n KnownMediaStream[\"USER_VIDEO_STREAM\"] = \"USER_VIDEO_STREAM\";\n KnownMediaStream[\"USER_SCREEN_SHARE_STREAM\"] = \"USER_SCREEN_SHARE_STREAM\";\n})(KnownMediaStream = exports.KnownMediaStream || (exports.KnownMediaStream = {}));\n\n//# sourceMappingURL=Contracts.js.map\n"]}
@@ -1,8 +0,0 @@
1
- export declare class LocalStreamManager {
2
- private environment;
3
- constructor(environment: any);
4
- getUserMediaStream(constraints: any): Promise<MediaStream>;
5
- getDesktopMediaStream(constraints: any): Promise<MediaStream>;
6
- destroyUserMediaStream(): void;
7
- destroyDesktopMediaStream(): void;
8
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/v2/LocalStreamManager.ts"],"names":[],"mappings":"AAQA,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,WAAW,CAAM;gBAEb,WAAW,EAAE,GAAG;IAI5B,kBAAkB,CAAC,WAAW,EAAE,GAAG;IAmCnC,qBAAqB,CAAC,WAAW,EAAE,GAAG;IAqCtC,sBAAsB;IAWtB,yBAAyB;CAU5B","file":"LocalStreamManager.d.ts","sourcesContent":["import {Nullable} from '@techsee/techsee-common';\n\nlet latestUserMediaStream: Nullable<MediaStream> = null;\nlet userMediaPromise: Nullable<Promise<MediaStream>> = null;\n\nlet latestDesktopMediaStream: Nullable<MediaStream> = null;\nlet desktopMediaPromise: Nullable<Promise<MediaStream>> = null;\n\nexport class LocalStreamManager {\n private environment: any;\n\n constructor(environment: any) {\n this.environment = environment;\n }\n\n getUserMediaStream(constraints: any) {\n if (userMediaPromise) {\n return userMediaPromise;\n }\n\n if (latestUserMediaStream) {\n const videoTrack = latestUserMediaStream.getVideoTracks();\n if (videoTrack.length > 0 && videoTrack[0].readyState === 'live') {\n return Promise.resolve(latestUserMediaStream);\n } else {\n this.destroyUserMediaStream();\n }\n }\n\n userMediaPromise = new Promise((resolve, reject) => {\n try {\n navigator.mediaDevices.getUserMedia(constraints)\n .then((stream: MediaStream) => {\n latestUserMediaStream = stream;\n userMediaPromise = null;\n resolve(stream);\n })\n .catch((err) => {\n userMediaPromise = null;\n reject(err);\n });\n } catch (e) {\n userMediaPromise = null;\n reject(e);\n }\n });\n\n return userMediaPromise;\n }\n\n getDesktopMediaStream(constraints: any) {\n if (desktopMediaPromise) {\n return desktopMediaPromise;\n }\n\n if (latestDesktopMediaStream) {\n const track = latestDesktopMediaStream.getVideoTracks();\n if (track.length > 0 && track[0].readyState === 'live') {\n return Promise.resolve(latestDesktopMediaStream);\n } else {\n this.destroyDesktopMediaStream();\n }\n }\n\n desktopMediaPromise = new Promise((resolve, reject) => {\n try {\n\n //@ts-ignore\n navigator.mediaDevices.getDisplayMedia(constraints)\n .then((stream: MediaStream) => {\n latestDesktopMediaStream = stream;\n desktopMediaPromise = null;\n resolve(stream);\n })\n .catch((err: any) => {\n desktopMediaPromise = null;\n reject(err);\n });\n } catch (e) {\n desktopMediaPromise = null;\n reject(e);\n }\n });\n\n return desktopMediaPromise;\n }\n\n destroyUserMediaStream() {\n if (latestUserMediaStream) {\n latestUserMediaStream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n\n latestUserMediaStream = null;\n userMediaPromise = null;\n }\n\n destroyDesktopMediaStream() {\n if (latestDesktopMediaStream) {\n latestDesktopMediaStream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n\n latestDesktopMediaStream = null;\n desktopMediaPromise = null;\n }\n}\n"]}
@@ -1,94 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- var latestUserMediaStream = null;
5
- var userMediaPromise = null;
6
- var latestDesktopMediaStream = null;
7
- var desktopMediaPromise = null;
8
- var LocalStreamManager = /** @class */function () {
9
- function LocalStreamManager(environment) {
10
- this.environment = environment;
11
- }
12
- LocalStreamManager.prototype.getUserMediaStream = function (constraints) {
13
- if (userMediaPromise) {
14
- return userMediaPromise;
15
- }
16
- if (latestUserMediaStream) {
17
- var videoTrack = latestUserMediaStream.getVideoTracks();
18
- if (videoTrack.length > 0 && videoTrack[0].readyState === 'live') {
19
- return Promise.resolve(latestUserMediaStream);
20
- } else {
21
- this.destroyUserMediaStream();
22
- }
23
- }
24
- userMediaPromise = new Promise(function (resolve, reject) {
25
- try {
26
- navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
27
- latestUserMediaStream = stream;
28
- userMediaPromise = null;
29
- resolve(stream);
30
- }).catch(function (err) {
31
- userMediaPromise = null;
32
- reject(err);
33
- });
34
- } catch (e) {
35
- userMediaPromise = null;
36
- reject(e);
37
- }
38
- });
39
- return userMediaPromise;
40
- };
41
- LocalStreamManager.prototype.getDesktopMediaStream = function (constraints) {
42
- if (desktopMediaPromise) {
43
- return desktopMediaPromise;
44
- }
45
- if (latestDesktopMediaStream) {
46
- var track = latestDesktopMediaStream.getVideoTracks();
47
- if (track.length > 0 && track[0].readyState === 'live') {
48
- return Promise.resolve(latestDesktopMediaStream);
49
- } else {
50
- this.destroyDesktopMediaStream();
51
- }
52
- }
53
- desktopMediaPromise = new Promise(function (resolve, reject) {
54
- try {
55
- //@ts-ignore
56
- navigator.mediaDevices.getDisplayMedia(constraints).then(function (stream) {
57
- latestDesktopMediaStream = stream;
58
- desktopMediaPromise = null;
59
- resolve(stream);
60
- }).catch(function (err) {
61
- desktopMediaPromise = null;
62
- reject(err);
63
- });
64
- } catch (e) {
65
- desktopMediaPromise = null;
66
- reject(e);
67
- }
68
- });
69
- return desktopMediaPromise;
70
- };
71
- LocalStreamManager.prototype.destroyUserMediaStream = function () {
72
- if (latestUserMediaStream) {
73
- latestUserMediaStream.getTracks().forEach(function (track) {
74
- track.stop();
75
- });
76
- }
77
- latestUserMediaStream = null;
78
- userMediaPromise = null;
79
- };
80
- LocalStreamManager.prototype.destroyDesktopMediaStream = function () {
81
- if (latestDesktopMediaStream) {
82
- latestDesktopMediaStream.getTracks().forEach(function (track) {
83
- track.stop();
84
- });
85
- }
86
- latestDesktopMediaStream = null;
87
- desktopMediaPromise = null;
88
- };
89
- return LocalStreamManager;
90
- }();
91
- exports.LocalStreamManager = LocalStreamManager;
92
-
93
- //# sourceMappingURL=LocalStreamManager.js.map
94
- //# sourceMappingURL=LocalStreamManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["v2/LocalStreamManager.js"],"names":["Object","defineProperty","exports","value","latestUserMediaStream","userMediaPromise","latestDesktopMediaStream","desktopMediaPromise","LocalStreamManager","environment","prototype","getUserMediaStream","constraints","videoTrack","getVideoTracks","length","readyState","Promise","resolve","destroyUserMediaStream","reject","navigator","mediaDevices","getUserMedia","then","stream","catch","err","e","getDesktopMediaStream","track","destroyDesktopMediaStream","getDisplayMedia","getTracks","forEach","stop"],"mappings":"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","file":"LocalStreamManager.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar latestUserMediaStream = null;\nvar userMediaPromise = null;\nvar latestDesktopMediaStream = null;\nvar desktopMediaPromise = null;\nvar LocalStreamManager = /** @class */ (function () {\n function LocalStreamManager(environment) {\n this.environment = environment;\n }\n LocalStreamManager.prototype.getUserMediaStream = function (constraints) {\n if (userMediaPromise) {\n return userMediaPromise;\n }\n if (latestUserMediaStream) {\n var videoTrack = latestUserMediaStream.getVideoTracks();\n if (videoTrack.length > 0 && videoTrack[0].readyState === 'live') {\n return Promise.resolve(latestUserMediaStream);\n }\n else {\n this.destroyUserMediaStream();\n }\n }\n userMediaPromise = new Promise(function (resolve, reject) {\n try {\n navigator.mediaDevices.getUserMedia(constraints)\n .then(function (stream) {\n latestUserMediaStream = stream;\n userMediaPromise = null;\n resolve(stream);\n })\n .catch(function (err) {\n userMediaPromise = null;\n reject(err);\n });\n }\n catch (e) {\n userMediaPromise = null;\n reject(e);\n }\n });\n return userMediaPromise;\n };\n LocalStreamManager.prototype.getDesktopMediaStream = function (constraints) {\n if (desktopMediaPromise) {\n return desktopMediaPromise;\n }\n if (latestDesktopMediaStream) {\n var track = latestDesktopMediaStream.getVideoTracks();\n if (track.length > 0 && track[0].readyState === 'live') {\n return Promise.resolve(latestDesktopMediaStream);\n }\n else {\n this.destroyDesktopMediaStream();\n }\n }\n desktopMediaPromise = new Promise(function (resolve, reject) {\n try {\n //@ts-ignore\n navigator.mediaDevices.getDisplayMedia(constraints)\n .then(function (stream) {\n latestDesktopMediaStream = stream;\n desktopMediaPromise = null;\n resolve(stream);\n })\n .catch(function (err) {\n desktopMediaPromise = null;\n reject(err);\n });\n }\n catch (e) {\n desktopMediaPromise = null;\n reject(e);\n }\n });\n return desktopMediaPromise;\n };\n LocalStreamManager.prototype.destroyUserMediaStream = function () {\n if (latestUserMediaStream) {\n latestUserMediaStream.getTracks().forEach(function (track) {\n track.stop();\n });\n }\n latestUserMediaStream = null;\n userMediaPromise = null;\n };\n LocalStreamManager.prototype.destroyDesktopMediaStream = function () {\n if (latestDesktopMediaStream) {\n latestDesktopMediaStream.getTracks().forEach(function (track) {\n track.stop();\n });\n }\n latestDesktopMediaStream = null;\n desktopMediaPromise = null;\n };\n return LocalStreamManager;\n}());\nexports.LocalStreamManager = LocalStreamManager;\n\n//# sourceMappingURL=LocalStreamManager.js.map\n"]}
@@ -1,24 +0,0 @@
1
- import { TechseeMediaSubscriber } from './MediaSubscriber';
2
- import { MediaServiceOptions, MediaSessionParams, MediaSubscriberParams } from './Contracts';
3
- import { TsEnvironmentDetect } from '@techsee/techsee-common/lib/helpers/ts-environment-detect';
4
- export declare abstract class TechseeMediaServiceBase {
5
- private _session;
6
- private _serviceOptions;
7
- private _deviceMediaOptions?;
8
- private readonly _environment;
9
- private readonly _streamsManager;
10
- protected constructor(environment: TsEnvironmentDetect);
11
- protected abstract getPublishedStream(): Promise<MediaStream>;
12
- localStreamsFactory(): Promise<MediaStream>;
13
- initMediaService(serviceOptions: MediaServiceOptions): Promise<void>;
14
- verifyMediaAccess(): Promise<MediaStream>;
15
- connectToSession(sessionParams: MediaSessionParams): Promise<void> | undefined;
16
- disconnectFromSession(): Promise<void>;
17
- createSubscriber(subscriberParams: MediaSubscriberParams): TechseeMediaSubscriber;
18
- clearService(): Promise<undefined>;
19
- private subscribeSessionEvents;
20
- private deviceOptionsGuard;
21
- private normalizeServiceOptions;
22
- private getUserMediaConstraints;
23
- private getDisplayMediaConstraints;
24
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/v2/MediaServiceBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAqB,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAG/G,OAAO,EAAC,mBAAmB,EAAC,MAAM,2DAA2D,CAAC;AAK9F,8BAAsB,uBAAuB;IACzC,OAAO,CAAC,QAAQ,CAMN;IAEV,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,mBAAmB,CAAC,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,SAAS,aAAa,WAAW,EAAE,mBAAmB;IAQtD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC;IAE7D,mBAAmB;IAUnB,gBAAgB,CAAC,cAAc,EAAE,mBAAmB;IAWpD,iBAAiB;IAMjB,gBAAgB,CAAC,aAAa,EAAE,kBAAkB;IAgBlD,qBAAqB;IAMrB,gBAAgB,CAAC,gBAAgB,EAAE,qBAAqB;IAIxD,YAAY;IAMZ,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,0BAA0B;CAGrC","file":"MediaServiceBase.d.ts","sourcesContent":["import {Nullable} from '@techsee/techsee-common';\nimport {TechseeMediaSubscriber} from './MediaSubscriber';\nimport {DeviceMediaOptions, MediaServiceOptions, MediaSessionParams, MediaSubscriberParams} from './Contracts';\n\n//@ts-ignore\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {LocalStreamManager} from './LocalStreamManager';\n\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport abstract class TechseeMediaServiceBase {\n private _session: Nullable<{\n params: MediaSessionParams,\n connectPromise?: Promise<void>,\n connectResolve?: () => void\n connectReject?: () => void\n instance?: any,\n }> = null;\n\n private _serviceOptions: Nullable<MediaServiceOptions> = null;\n private _deviceMediaOptions?: Nullable<DeviceMediaOptions> = null;\n private readonly _environment: TsEnvironmentDetect;\n private readonly _streamsManager: LocalStreamManager;\n\n protected constructor(environment: TsEnvironmentDetect) {\n this._environment = environment;\n\n this._streamsManager = new LocalStreamManager(this._environment);\n\n this.localStreamsFactory = this.localStreamsFactory.bind(this);\n }\n\n protected abstract getPublishedStream(): Promise<MediaStream>;\n\n localStreamsFactory() {\n this.deviceOptionsGuard();\n\n return this.getPublishedStream();\n\n // if (this._deviceMediaOptions!.desktopStream) {\n // return this._streamsManager.getDesktopStream(this._deviceMediaOptions!.desktopStream.resolution);\n // }\n }\n\n initMediaService(serviceOptions: MediaServiceOptions) {\n if (!this._serviceOptions) {\n this._serviceOptions = this.normalizeServiceOptions(serviceOptions);\n } else {\n console.warn('Multiple initialization does not supposed to happen. Please check the flow.');\n }\n\n return Promise.resolve();\n }\n\n //Verifies that application has access to requested media, by creating stream of this media kind\n verifyMediaAccess() {\n this.deviceOptionsGuard();\n\n return this.getPublishedStream();\n }\n\n connectToSession(sessionParams: MediaSessionParams) {\n this.deviceOptionsGuard();\n\n if (!this._session) {\n this._session = {params: sessionParams};\n this._session.connectPromise = new Promise((resolve, reject) => {\n this._session!.connectResolve = resolve;\n this._session!.connectReject = reject;\n });\n } else {\n console.warn('Session connected already. Disconnect before connect to new session again');\n }\n\n return this._session.connectPromise;\n }\n\n disconnectFromSession() {\n this._session = null;\n\n return Promise.resolve();\n }\n\n createSubscriber(subscriberParams: MediaSubscriberParams) {\n return new TechseeMediaSubscriber(subscriberParams);\n }\n\n clearService() {\n return Promise.all([\n this.disconnectFromSession()\n ]).then(() => undefined);\n }\n\n private subscribeSessionEvents(session: any): void {\n\n }\n\n private deviceOptionsGuard() {\n if (!this._deviceMediaOptions) {\n throw new Error('Media service is not initialized');\n }\n }\n\n private normalizeServiceOptions(serviceOptions: MediaServiceOptions) {\n const options = cloneDeep(serviceOptions);\n\n if (!options.deviceMediaOptions.loopBackVideo) {\n options.deviceMediaOptions.loopBackVideo = serviceOptions.deviceMediaOptions.desktopStream;\n }\n\n return options;\n }\n\n private getUserMediaConstraints() {\n\n }\n\n private getDisplayMediaConstraints() {\n\n }\n}\n"]}
@@ -1,85 +0,0 @@
1
- "use strict";
2
-
3
- var __importDefault = undefined && undefined.__importDefault || function (mod) {
4
- return mod && mod.__esModule ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- var MediaSubscriber_1 = require("./MediaSubscriber");
8
- var LocalStreamManager_1 = require("./LocalStreamManager");
9
- var cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
10
- var TechseeMediaServiceBase = /** @class */function () {
11
- function TechseeMediaServiceBase(environment) {
12
- this._session = null;
13
- this._serviceOptions = null;
14
- this._deviceMediaOptions = null;
15
- this._environment = environment;
16
- this._streamsManager = new LocalStreamManager_1.LocalStreamManager(this._environment);
17
- this.localStreamsFactory = this.localStreamsFactory.bind(this);
18
- }
19
- TechseeMediaServiceBase.prototype.localStreamsFactory = function () {
20
- this.deviceOptionsGuard();
21
- return this.getPublishedStream();
22
- // if (this._deviceMediaOptions!.desktopStream) {
23
- // return this._streamsManager.getDesktopStream(this._deviceMediaOptions!.desktopStream.resolution);
24
- // }
25
- };
26
- TechseeMediaServiceBase.prototype.initMediaService = function (serviceOptions) {
27
- if (!this._serviceOptions) {
28
- this._serviceOptions = this.normalizeServiceOptions(serviceOptions);
29
- } else {
30
- console.warn('Multiple initialization does not supposed to happen. Please check the flow.');
31
- }
32
- return Promise.resolve();
33
- };
34
- //Verifies that application has access to requested media, by creating stream of this media kind
35
- TechseeMediaServiceBase.prototype.verifyMediaAccess = function () {
36
- this.deviceOptionsGuard();
37
- return this.getPublishedStream();
38
- };
39
- TechseeMediaServiceBase.prototype.connectToSession = function (sessionParams) {
40
- var _this = this;
41
- this.deviceOptionsGuard();
42
- if (!this._session) {
43
- this._session = { params: sessionParams };
44
- this._session.connectPromise = new Promise(function (resolve, reject) {
45
- _this._session.connectResolve = resolve;
46
- _this._session.connectReject = reject;
47
- });
48
- } else {
49
- console.warn('Session connected already. Disconnect before connect to new session again');
50
- }
51
- return this._session.connectPromise;
52
- };
53
- TechseeMediaServiceBase.prototype.disconnectFromSession = function () {
54
- this._session = null;
55
- return Promise.resolve();
56
- };
57
- TechseeMediaServiceBase.prototype.createSubscriber = function (subscriberParams) {
58
- return new MediaSubscriber_1.TechseeMediaSubscriber(subscriberParams);
59
- };
60
- TechseeMediaServiceBase.prototype.clearService = function () {
61
- return Promise.all([this.disconnectFromSession()]).then(function () {
62
- return undefined;
63
- });
64
- };
65
- TechseeMediaServiceBase.prototype.subscribeSessionEvents = function (session) {};
66
- TechseeMediaServiceBase.prototype.deviceOptionsGuard = function () {
67
- if (!this._deviceMediaOptions) {
68
- throw new Error('Media service is not initialized');
69
- }
70
- };
71
- TechseeMediaServiceBase.prototype.normalizeServiceOptions = function (serviceOptions) {
72
- var options = cloneDeep_1.default(serviceOptions);
73
- if (!options.deviceMediaOptions.loopBackVideo) {
74
- options.deviceMediaOptions.loopBackVideo = serviceOptions.deviceMediaOptions.desktopStream;
75
- }
76
- return options;
77
- };
78
- TechseeMediaServiceBase.prototype.getUserMediaConstraints = function () {};
79
- TechseeMediaServiceBase.prototype.getDisplayMediaConstraints = function () {};
80
- return TechseeMediaServiceBase;
81
- }();
82
- exports.TechseeMediaServiceBase = TechseeMediaServiceBase;
83
-
84
- //# sourceMappingURL=MediaServiceBase.js.map
85
- //# sourceMappingURL=MediaServiceBase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["v2/MediaServiceBase.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","MediaSubscriber_1","require","LocalStreamManager_1","cloneDeep_1","TechseeMediaServiceBase","environment","_session","_serviceOptions","_deviceMediaOptions","_environment","_streamsManager","LocalStreamManager","localStreamsFactory","bind","prototype","deviceOptionsGuard","getPublishedStream","initMediaService","serviceOptions","normalizeServiceOptions","console","warn","Promise","resolve","verifyMediaAccess","connectToSession","sessionParams","_this","params","connectPromise","reject","connectResolve","connectReject","disconnectFromSession","createSubscriber","subscriberParams","TechseeMediaSubscriber","clearService","all","then","undefined","subscribeSessionEvents","session","Error","options","default","deviceMediaOptions","loopBackVideo","desktopStream","getUserMediaConstraints","getDisplayMediaConstraints"],"mappings":"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","file":"MediaServiceBase.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 });\nvar MediaSubscriber_1 = require(\"./MediaSubscriber\");\nvar LocalStreamManager_1 = require(\"./LocalStreamManager\");\nvar cloneDeep_1 = __importDefault(require(\"lodash/cloneDeep\"));\nvar TechseeMediaServiceBase = /** @class */ (function () {\n function TechseeMediaServiceBase(environment) {\n this._session = null;\n this._serviceOptions = null;\n this._deviceMediaOptions = null;\n this._environment = environment;\n this._streamsManager = new LocalStreamManager_1.LocalStreamManager(this._environment);\n this.localStreamsFactory = this.localStreamsFactory.bind(this);\n }\n TechseeMediaServiceBase.prototype.localStreamsFactory = function () {\n this.deviceOptionsGuard();\n return this.getPublishedStream();\n // if (this._deviceMediaOptions!.desktopStream) {\n // return this._streamsManager.getDesktopStream(this._deviceMediaOptions!.desktopStream.resolution);\n // }\n };\n TechseeMediaServiceBase.prototype.initMediaService = function (serviceOptions) {\n if (!this._serviceOptions) {\n this._serviceOptions = this.normalizeServiceOptions(serviceOptions);\n }\n else {\n console.warn('Multiple initialization does not supposed to happen. Please check the flow.');\n }\n return Promise.resolve();\n };\n //Verifies that application has access to requested media, by creating stream of this media kind\n TechseeMediaServiceBase.prototype.verifyMediaAccess = function () {\n this.deviceOptionsGuard();\n return this.getPublishedStream();\n };\n TechseeMediaServiceBase.prototype.connectToSession = function (sessionParams) {\n var _this = this;\n this.deviceOptionsGuard();\n if (!this._session) {\n this._session = { params: sessionParams };\n this._session.connectPromise = new Promise(function (resolve, reject) {\n _this._session.connectResolve = resolve;\n _this._session.connectReject = reject;\n });\n }\n else {\n console.warn('Session connected already. Disconnect before connect to new session again');\n }\n return this._session.connectPromise;\n };\n TechseeMediaServiceBase.prototype.disconnectFromSession = function () {\n this._session = null;\n return Promise.resolve();\n };\n TechseeMediaServiceBase.prototype.createSubscriber = function (subscriberParams) {\n return new MediaSubscriber_1.TechseeMediaSubscriber(subscriberParams);\n };\n TechseeMediaServiceBase.prototype.clearService = function () {\n return Promise.all([\n this.disconnectFromSession()\n ]).then(function () { return undefined; });\n };\n TechseeMediaServiceBase.prototype.subscribeSessionEvents = function (session) {\n };\n TechseeMediaServiceBase.prototype.deviceOptionsGuard = function () {\n if (!this._deviceMediaOptions) {\n throw new Error('Media service is not initialized');\n }\n };\n TechseeMediaServiceBase.prototype.normalizeServiceOptions = function (serviceOptions) {\n var options = cloneDeep_1.default(serviceOptions);\n if (!options.deviceMediaOptions.loopBackVideo) {\n options.deviceMediaOptions.loopBackVideo = serviceOptions.deviceMediaOptions.desktopStream;\n }\n return options;\n };\n TechseeMediaServiceBase.prototype.getUserMediaConstraints = function () {\n };\n TechseeMediaServiceBase.prototype.getDisplayMediaConstraints = function () {\n };\n return TechseeMediaServiceBase;\n}());\nexports.TechseeMediaServiceBase = TechseeMediaServiceBase;\n\n//# sourceMappingURL=MediaServiceBase.js.map\n"]}
@@ -1,8 +0,0 @@
1
- import { MediaSubscriberParams } from './Contracts';
2
- export declare enum MediaSubscriberEvent {
3
- }
4
- export declare class TechseeMediaSubscriber {
5
- private _emitter;
6
- constructor(subscriberParams: MediaSubscriberParams);
7
- on(event: MediaSubscriberEvent): void;
8
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/v2/MediaSubscriber.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAElD,oBAAY,oBAAoB;CAE/B;AAED,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,QAAQ,CAAe;gBAEnB,gBAAgB,EAAE,qBAAqB;IAInD,EAAE,CAAC,KAAK,EAAE,oBAAoB;CAGjC","file":"MediaSubscriber.d.ts","sourcesContent":["import {EventEmitter} from 'events';\nimport {MediaSubscriberParams} from './Contracts';\n\nexport enum MediaSubscriberEvent {\n\n}\n\nexport class TechseeMediaSubscriber {\n private _emitter: EventEmitter;\n\n constructor(subscriberParams: MediaSubscriberParams) {\n this._emitter = new EventEmitter();\n }\n\n on(event: MediaSubscriberEvent) {\n\n }\n}\n"]}