@techsee/techsee-media-service 0.21.1 → 0.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -205,6 +205,6 @@ function getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions)
205
205
  }
206
206
  }
207
207
  exports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;
208
-
209
208
  //# sourceMappingURL=MediaDomUtils.js.map
209
+
210
210
  //# sourceMappingURL=MediaDomUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaUtils/MediaDomUtils.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","MediaConstants_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","container","mediaStream","streamType","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","KnownMediaStream","USER_AUDIO_STREAM","AGENT_AUDIO_STREAM","OBSERVER_AUDIO_STREAM","indexOf","play","setAttribute","playRes","then","catch","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","videoHeight","videoWidth","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","sourceStream","snapshotOptions","x","y","w","h","crop","default","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = (new ts_environment_detect_1.TsEnvironmentDetect()).isIE11();\nfunction renderMediaStreamToVideoEl(container, mediaStream, streamType) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n if ([MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM]\n .indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n }\n });\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then(function (videoElement) { return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n }); })\n .catch(function (error) {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n\n//# sourceMappingURL=MediaDomUtils.js.map\n"]}
1
+ {"version":3,"sources":["MediaUtils/MediaDomUtils.js","../src/MediaUtils/MediaDomUtils.ts"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","getSnapshotFromMediaStream","removeVideoElementFromDom","renderMediaStreamToVideoEl","isUndefined_1","require","ts_environment_detect_1","retry_with_timeout_1","MediaTracer_1","MediaConstants_1","trace","getMediaTracer","isIE11","TsEnvironmentDetect","container","mediaStream","streamType","Promise","resolve","reject","document","body","contains","Error","doResolve","videoEl","info","createElement","muted","playsInline","window","WebRTCAdapter","appendChild","bindVideoElement","srcObject","addEventListener","KnownMediaStream","USER_AUDIO_STREAM","AGENT_AUDIO_STREAM","OBSERVER_AUDIO_STREAM","indexOf","play","setAttribute","playRes","then","catch","error","handleComplete","parentElement","tagName","waitForObjectSettings","intervalInMs","timeoutInMs","repeatWithTimeout","isVideoPlaying","videoHeight","videoWidth","waitForVideoSettings","unBindVideoElement","parentNode","removeChild","warn","remove","defaultSnapshot","format","quality","sourceStream","snapshotOptions","x","y","w","h","crop","default","resize","tempContainer","style","cssText","doneFn","err","image","setTimeout","videoElement","getImgDataIE11","getImgData","imgData","length","canvas","ctx","getContext","width","height","drawImage","toDataURL","_drawAndRemove","base64","getFrame","Image","onload"],"mappings":"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","file":"MediaDomUtils.js","sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSnapshotFromMediaStream = exports.removeVideoElementFromDom = exports.renderMediaStreamToVideoEl = void 0;\nvar isUndefined_1 = __importDefault(require(\"lodash/isUndefined\"));\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar retry_with_timeout_1 = require(\"@techsee/techsee-common/lib/core/retry-with-timeout\");\nvar MediaTracer_1 = require(\"./MediaTracer\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar trace = MediaTracer_1.getMediaTracer('DomUtils');\nvar isIE11 = (new ts_environment_detect_1.TsEnvironmentDetect()).isIE11();\nfunction renderMediaStreamToVideoEl(container, mediaStream, streamType) {\n return new Promise(function (resolve, reject) {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n return;\n }\n var doResolve = function (videoEl) {\n trace.info('Video element created successfully', { videoEl: videoEl });\n resolve(videoEl);\n };\n var videoEl = document.createElement('video');\n videoEl.muted = true;\n videoEl.playsInline = true;\n if (isIE11 && window.WebRTCAdapter) {\n container.appendChild(videoEl);\n window.WebRTCAdapter.bindVideoElement(videoEl);\n }\n videoEl.srcObject = mediaStream;\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', function () {\n if ([MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM, MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM]\n .indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n }\n });\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n try {\n var playRes = videoEl.play();\n if (playRes && playRes.then) {\n playRes.then(function () {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n }\n else if (!isIE11) {\n doResolve(videoEl);\n }\n if (playRes && playRes.catch) {\n playRes.catch(function (error) {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n }\n catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n return;\n }\n if (isIE11) {\n var handleComplete = function () { return videoEl.parentElement.tagName !== 'OBJECT'; };\n var waitForObjectSettings = { intervalInMs: 30, timeoutInMs: 200 };\n retry_with_timeout_1.repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(function () {\n //We will wait, until video is played, then we resolve\n var isVideoPlaying = function () { return videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0; };\n var waitForVideoSettings = { intervalInMs: 50, timeoutInMs: 10000 };\n retry_with_timeout_1.repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(function () { return doResolve(videoEl.parentElement); })\n .catch(function () { return reject(new Error('Timeout while waiting for video to play')); });\n });\n }\n else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\nexports.renderMediaStreamToVideoEl = renderMediaStreamToVideoEl;\nfunction removeVideoElementFromDom(videoEl) {\n return new Promise(function (resolve) {\n if (isIE11 && window.WebRTCAdapter) {\n window.WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n }\n else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n }\n else {\n videoEl.remove();\n }\n resolve();\n });\n}\nexports.removeVideoElementFromDom = removeVideoElementFromDom;\nvar defaultSnapshot = {\n format: 'image/png',\n quality: 0.92\n};\nfunction getSnapshotFromMediaStream(mediaStream, sourceStream, snapshotOptions) {\n if (snapshotOptions === void 0) { snapshotOptions = defaultSnapshot; }\n var format = snapshotOptions.format, quality = snapshotOptions.quality, x = snapshotOptions.x, y = snapshotOptions.y, w = snapshotOptions.w, h = snapshotOptions.h;\n var crop = !isUndefined_1.default(x) && !isUndefined_1.default(y) && !isUndefined_1.default(w) && !isUndefined_1.default(h);\n var resize = !crop && (!isUndefined_1.default(w) || !isUndefined_1.default(h));\n return new Promise(function (resolve, reject) {\n var tempContainer = document.createElement('div');\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n var doneFn = function (err, image) {\n if (err) {\n reject(err);\n return;\n }\n setTimeout(function () {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then(function (videoElement) { return Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then(function (imgData) {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n doneFn(null, imgData);\n }); })\n .catch(function (error) {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n //Gets image in all browsers except of IE\n function getImgData(videoElement) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n canvas.width = w;\n canvas.height = h;\n ctx.drawImage(videoElement, 0, 0, w, h);\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n ctx.drawImage(videoElement, 0, 0);\n }\n return canvas.toDataURL(format, quality);\n }\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement) {\n return new Promise(function (resolve) {\n var videoWidth = videoElement.videoWidth, videoHeight = videoElement.videoHeight;\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n }\n else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n function _drawAndRemove(image) {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n }\n else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n }\n else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n return canvas.toDataURL(format, quality);\n }\n var base64 = videoElement.getFrame();\n var image = new Image();\n image.onload = function () { return resolve(_drawAndRemove(image)); };\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\nexports.getSnapshotFromMediaStream = getSnapshotFromMediaStream;\n","import isUndefined from 'lodash/isUndefined';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n//@ts-ignore\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {repeatWithTimeout} from '@techsee/techsee-common/lib/core/retry-with-timeout';\nimport {SnapshotOptions} from '../MediaContracts';\nimport {getMediaTracer} from './MediaTracer';\nimport {KnownMediaStream} from '../MediaConstants';\n\nconst trace = getMediaTracer('DomUtils');\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nexport function renderMediaStreamToVideoEl(container: HTMLDivElement, mediaStream: MediaStream, streamType: KnownMediaStream): Promise<HTMLVideoElement> {\n return new Promise((resolve, reject) => {\n if (!document.body.contains(container)) {\n reject(new Error('Cannot render to container that is not attached to dom'));\n\n return;\n }\n\n const doResolve = (videoEl: HTMLVideoElement): void => {\n trace.info('Video element created successfully', {videoEl});\n resolve(videoEl);\n };\n\n const videoEl = document.createElement('video') as any;\n\n videoEl.muted = true;\n videoEl.playsInline = true;\n\n if (isIE11 && (window as any).WebRTCAdapter) {\n container.appendChild(videoEl);\n (window as any).WebRTCAdapter.bindVideoElement(videoEl);\n }\n\n videoEl.srcObject = mediaStream;\n\n // When unplugged the headphones in ios the video element got paused.\n videoEl.addEventListener('pause', () => {\n if ([KnownMediaStream.USER_AUDIO_STREAM, KnownMediaStream.AGENT_AUDIO_STREAM, KnownMediaStream.OBSERVER_AUDIO_STREAM]\n .indexOf(streamType) > -1) {\n trace.info('Video element got paused. IOS headphones disconnected');\n videoEl.play();\n }\n });\n\n if (!isIE11) {\n // Hack to override behavior introduced by Chrome/FF that unmuted video elements can't auto play\n videoEl.setAttribute('muted', '');\n }\n\n try {\n const playRes = videoEl.play();\n\n if (playRes && playRes.then) {\n playRes.then(() => {\n trace.info('Video element play success');\n if (!isIE11) {\n doResolve(videoEl);\n }\n });\n } else if (!isIE11) {\n doResolve(videoEl);\n }\n\n if (playRes && playRes.catch) {\n playRes.catch((error: any) => {\n trace.error('Reject while executing play method on video element', error);\n reject(error);\n });\n }\n } catch (error) {\n reject(error);\n trace.error('Error while executing play method on video element', error);\n\n return;\n }\n\n\n if (isIE11) {\n const handleComplete = (): boolean => videoEl.parentElement.tagName !== 'OBJECT';\n\n const waitForObjectSettings = {intervalInMs: 30, timeoutInMs: 200};\n\n repeatWithTimeout(handleComplete, waitForObjectSettings)\n .then(() => {\n //We will wait, until video is played, then we resolve\n const isVideoPlaying = (): boolean => videoEl.videoHeight <= 0 || videoEl.videoWidth <= 0;\n const waitForVideoSettings = {intervalInMs: 50, timeoutInMs: 10000};\n\n repeatWithTimeout(isVideoPlaying, waitForVideoSettings)\n .then(() => doResolve(videoEl.parentElement))\n .catch(() => reject(new Error('Timeout while waiting for video to play')));\n });\n } else {\n container.appendChild(videoEl);\n //doResolve(videoEl);\n }\n });\n}\n\nexport function removeVideoElementFromDom(videoEl: HTMLVideoElement): Promise<void> {\n return new Promise((resolve) => {\n if (isIE11 && (window as any).WebRTCAdapter) {\n (window as any).WebRTCAdapter.unBindVideoElement(videoEl);\n if (videoEl && videoEl.parentNode && videoEl.parentNode.removeChild) {\n videoEl.parentNode.removeChild(videoEl);\n trace.info('Video element removed successfully');\n } else {\n trace.warn('Video element not removed', videoEl, videoEl.parentNode);\n }\n } else {\n videoEl.remove();\n }\n\n resolve();\n });\n}\n\nconst defaultSnapshot: SnapshotOptions = {\n format: 'image/png',\n quality: 0.92\n};\n\nexport function getSnapshotFromMediaStream(mediaStream: MediaStream, sourceStream: KnownMediaStream, snapshotOptions: SnapshotOptions = defaultSnapshot): Promise<string> {\n const {format, quality, x, y, w, h} = snapshotOptions;\n const crop = !isUndefined(x) && !isUndefined(y) && !isUndefined(w) && !isUndefined(h);\n const resize = !crop && (!isUndefined(w) || !isUndefined(h));\n\n return new Promise((resolve, reject) => {\n\n const tempContainer = document.createElement('div');\n\n tempContainer.style.cssText = 'position:absolute;left: -10000px;';\n document.body.appendChild(tempContainer);\n\n const doneFn = (err: any, image?: any): void => {\n if (err) {\n reject(err);\n\n return;\n }\n\n setTimeout(() => {\n document.body.removeChild(tempContainer);\n if (!err) {\n resolve(image);\n }\n }, 50);\n };\n\n renderMediaStreamToVideoEl(tempContainer, mediaStream, sourceStream)\n .then((videoElement) => Promise.resolve(isIE11 ? getImgDataIE11(videoElement) : getImgData(videoElement))\n .then((imgData: any) => {\n if (!imgData || imgData.length < 10) {\n throw new Error('Failed to create a snapshot - imgData is null or empty');\n }\n\n doneFn(null, imgData);\n }))\n .catch((error) => {\n doneFn(error || new Error('Failed to create a snapshot - can\\'t render MediaStream To VideoEl '));\n });\n });\n\n //Gets image in all browsers except of IE\n function getImgData(videoElement: HTMLVideoElement): string {\n const {videoWidth, videoHeight} = videoElement;\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(videoElement, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n canvas.width = w;\n canvas.height = h;\n\n ctx.drawImage(videoElement, 0, 0, w, h);\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n\n ctx.drawImage(videoElement, 0, 0);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n //Gets image in IE browser. There should be TechSee IE11 plugin or OpenTok plugin installed.\n function getImgDataIE11(videoElement: any): Promise<string> {\n return new Promise((resolve) => {\n const {videoWidth, videoHeight} = videoElement;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d')!;\n\n if (crop || resize) {\n canvas.width = w;\n canvas.height = h;\n } else {\n canvas.height = videoHeight;\n canvas.width = videoWidth;\n }\n\n function _drawAndRemove(image: any): string {\n if (crop) {\n ctx.drawImage(image, x, y, w, h, 0, 0, w, h);\n } else if (resize) {\n ctx.drawImage(image, 0, 0, w, h);\n } else {\n ctx.drawImage(image, 0, 0, videoWidth, videoHeight);\n }\n\n return canvas.toDataURL(format, quality);\n }\n\n const base64 = videoElement.getFrame();\n const image = new Image();\n\n image.onload = () => resolve(_drawAndRemove(image));\n image.setAttribute('src', 'data:image/bmp;base64,' + base64);\n });\n }\n}\n"]}
@@ -8,6 +8,6 @@ function getMediaTracer(postfixName) {
8
8
  return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);
9
9
  }
10
10
  exports.getMediaTracer = getMediaTracer;
11
-
12
11
  //# sourceMappingURL=MediaTracer.js.map
12
+
13
13
  //# sourceMappingURL=MediaTracer.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MediaUtils/MediaTracer.js"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,cAAR,GAAyBF,QAAQG,oBAAR,GAA+B,KAAK,CAA7D;AACA,IAAIC,WAAWC,QAAQ,yCAAR,CAAf;AACAL,QAAQG,oBAAR,GAA+B,aAA/B;AACA,SAASD,cAAT,CAAwBI,WAAxB,EAAqC;AACjC,WAAOF,SAASG,SAAT,CAAmBP,QAAQG,oBAA3B,EAAiDG,WAAjD,CAAP;AACH;AACDN,QAAQE,cAAR,GAAyBA,cAAzB;;AAEA","file":"MediaTracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;\nvar Tracer_1 = require(\"@techsee/techsee-common/lib/core/Tracer\");\nexports.TECHSEE_MEDIA_TRACER = 'MediaTracer';\nfunction getMediaTracer(postfixName) {\n return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);\n}\nexports.getMediaTracer = getMediaTracer;\n\n//# sourceMappingURL=MediaTracer.js.map\n"]}
1
+ {"version":3,"sources":["MediaUtils/MediaTracer.js","../src/MediaUtils/MediaTracer.ts"],"names":["Object","defineProperty","exports","value","getMediaTracer","TECHSEE_MEDIA_TRACER","Tracer_1","require","postfixName","getTracer"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,cAAR,GAAyBF,QAAQG,oBAAR,GAA+B,KAAK,CAA7D;ACFA,IAAAC,WAAAC,QAAA,yCAAA,CAAA;AAEaL,QAAAG,oBAAA,GAAuB,aAAvB;AAEb,SAAgBD,cAAhB,CAA+BI,WAA/B,EAAkD;AAC9C,WAAOF,SAAAG,SAAA,CAAUP,QAAAG,oBAAV,EAAgCG,WAAhC,CAAP;AACH;AAFDN,QAAAE,cAAA,GAAAA,cAAA","file":"MediaTracer.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMediaTracer = exports.TECHSEE_MEDIA_TRACER = void 0;\nvar Tracer_1 = require(\"@techsee/techsee-common/lib/core/Tracer\");\nexports.TECHSEE_MEDIA_TRACER = 'MediaTracer';\nfunction getMediaTracer(postfixName) {\n return Tracer_1.getTracer(exports.TECHSEE_MEDIA_TRACER, postfixName);\n}\nexports.getMediaTracer = getMediaTracer;\n","import {getTracer, ITechseeTracer} from '@techsee/techsee-common/lib/core/Tracer';\n\nexport const TECHSEE_MEDIA_TRACER = 'MediaTracer';\n\nexport function getMediaTracer(postfixName: string): ITechseeTracer {\n return getTracer(TECHSEE_MEDIA_TRACER, postfixName);\n}\n"]}
@@ -10,7 +10,14 @@ export declare enum MULTI_PARTY_EVENTS {
10
10
  connectionDestroyed = "connectionDestroyed",
11
11
  streamCreated = "streamCreated"
12
12
  }
13
- export declare abstract class MultiParty extends EventEmitter {
13
+ export interface IMultiParty {
14
+ session: any;
15
+ subscribers: Array<any> | undefined;
16
+ connect(...args: any[]): void;
17
+ disconnect(): void;
18
+ on(event: string | symbol, listener: (...args: any[]) => void): IMultiParty;
19
+ }
20
+ export declare abstract class MultiParty extends EventEmitter implements IMultiParty {
14
21
  abstract session: any;
15
22
  abstract subscribers: Array<any> | undefined;
16
23
  protected settings: ISessionSettings;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/MultiParty.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAI7C,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,oBAAY,kBAAkB;IAC1B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;CAClC;AAED,8BAAsB,UAAW,SAAQ,YAAY;IACjD,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAErC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IACtC,QAAQ,CAAC,UAAU,IAAI,IAAI;gBAEf,QAAQ,EAAE,gBAAgB;CAIzC;AAED,eAAO,MAAM,oBAAoB,QAAa,QAAQ,OAAO,CAW5D,CAAC","file":"MultiParty.d.ts","sourcesContent":["import {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport {EventEmitter} from 'events';\nimport {ISessionSettings} from './Contracts';\n\nconst trace = getMediaTracer('Multiparty');\n\nexport const participateDomId = 'participate';\nexport const maxParticipantsNumber = 2;\n\nexport enum MULTI_PARTY_EVENTS {\n connectFailed = 'connectFailed',\n streamDestroyed = 'streamDestroyed',\n connectionCreated = 'connectionCreated',\n connectionDestroyed = 'connectionDestroyed',\n streamCreated = 'streamCreated'\n}\n\nexport abstract class MultiParty extends EventEmitter {\n abstract session: any;\n abstract subscribers: Array<any> | undefined;\n protected settings: ISessionSettings;\n\n abstract connect(...args: any[]): void;\n abstract disconnect(): void;\n\n constructor(settings: ISessionSettings) {\n super();\n this.settings = settings;\n }\n}\n\nexport const couldStartMultiparty = async (): Promise<boolean> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return mediaCapabilitiesHelper.hasWebRTC();\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n return false;\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/MultiParty.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAI7C,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,oBAAY,kBAAkB;IAC1B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;CAClC;AAED,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,GAAG,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAEpC,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC9B,UAAU,IAAI,IAAI,CAAC;IACnB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,WAAW,CAAC;CAC/E;AAED,8BAAsB,UAAW,SAAQ,YAAa,YAAW,WAAW;IACxE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAErC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IACtC,QAAQ,CAAC,UAAU,IAAI,IAAI;gBAEf,QAAQ,EAAE,gBAAgB;CAIzC;AAED,eAAO,MAAM,oBAAoB,QAAa,QAAQ,OAAO,CAW5D,CAAC","file":"MultiParty.d.ts","sourcesContent":["import {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport {EventEmitter} from 'events';\nimport {ISessionSettings} from './Contracts';\n\nconst trace = getMediaTracer('Multiparty');\n\nexport const participateDomId = 'participate';\nexport const maxParticipantsNumber = 2;\n\nexport enum MULTI_PARTY_EVENTS {\n connectFailed = 'connectFailed',\n streamDestroyed = 'streamDestroyed',\n connectionCreated = 'connectionCreated',\n connectionDestroyed = 'connectionDestroyed',\n streamCreated = 'streamCreated'\n}\n\nexport interface IMultiParty {\n session: any;\n subscribers: Array<any> | undefined;\n\n connect(...args: any[]): void;\n disconnect(): void;\n on(event: string | symbol, listener: (...args: any[]) => void): IMultiParty;\n}\n\nexport abstract class MultiParty extends EventEmitter implements IMultiParty {\n abstract session: any;\n abstract subscribers: Array<any> | undefined;\n protected settings: ISessionSettings;\n\n abstract connect(...args: any[]): void;\n abstract disconnect(): void;\n\n constructor(settings: ISessionSettings) {\n super();\n this.settings = settings;\n }\n}\n\nexport const couldStartMultiparty = async (): Promise<boolean> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return mediaCapabilitiesHelper.hasWebRTC();\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n return false;\n }\n};\n"]}
@@ -1,2 +1,3 @@
1
1
  import { ISessionSettings } from './Contracts';
2
- export declare const createMultiParty: (settings: ISessionSettings) => any;
2
+ import { IMultiParty } from './MultiParty';
3
+ export declare const createMultiParty: (settings: ISessionSettings) => IMultiParty;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/MultipartyFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,gBAAgB,aAAc,gBAAgB,KAAG,GAM7D,CAAC","file":"MultipartyFactory.d.ts","sourcesContent":["import {MediaServiceType} from '../MediaConstants';\nimport {OpentokMultiparty} from './OpentokMultiparty';\nimport {ISessionSettings} from './Contracts';\n\nexport const createMultiParty = (settings: ISessionSettings): any => {\n if (settings.mediaServiceType === MediaServiceType.OPENTOK) {\n return new OpentokMultiparty(settings);\n }\n\n throw new Error('NOT_SUPPORTED');\n};\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/MultipartyFactory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAO,MAAM,gBAAgB,aAAc,gBAAgB,KAAG,WAM7D,CAAC","file":"MultipartyFactory.d.ts","sourcesContent":["import {MediaServiceType} from '../MediaConstants';\nimport {OpentokMultiparty} from './OpentokMultiparty';\nimport {ISessionSettings} from './Contracts';\nimport { IMultiParty } from './MultiParty';\n\nexport const createMultiParty = (settings: ISessionSettings): IMultiParty => {\n if (settings.mediaServiceType === MediaServiceType.OPENTOK) {\n return new OpentokMultiparty(settings);\n }\n\n throw new Error('NOT_SUPPORTED');\n};\n"]}
@@ -11,6 +11,6 @@ var createMultiParty = function createMultiParty(settings) {
11
11
  throw new Error('NOT_SUPPORTED');
12
12
  };
13
13
  exports.createMultiParty = createMultiParty;
14
- //# sourceMappingURL=MultipartyFactory.js.map
15
14
 
16
15
  //# sourceMappingURL=MultipartyFactory.js.map
16
+ //# sourceMappingURL=MultipartyFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MultiParty/MultipartyFactory.js","../src/MultiParty/MultipartyFactory.ts"],"names":["Object","defineProperty","exports","value","createMultiParty","MediaConstants_1","require","OpentokMultiparty_1","settings","mediaServiceType","MediaServiceType","OPENTOK","OpentokMultiparty","Error"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,gBAAR,GAA2B,KAAK,CAAhC;ACFA,IAAAC,mBAAAC,QAAA,mBAAA,CAAA;AACA,IAAAC,sBAAAD,QAAA,qBAAA,CAAA;AAGO,IAAMF,mBAAmB,SAAnBA,gBAAmB,CAACI,QAAD,EAA2B;AACvD,QAAIA,SAASC,gBAAT,KAA8BJ,iBAAAK,gBAAA,CAAiBC,OAAnD,EAA4D;AACxD,eAAO,IAAIJ,oBAAAK,iBAAJ,CAAsBJ,QAAtB,CAAP;AACH;AAED,UAAM,IAAIK,KAAJ,CAAU,eAAV,CAAN;AACH,CANM;AAAMX,QAAAE,gBAAA,GAAgBA,gBAAhB","file":"MultipartyFactory.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMultiParty = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar OpentokMultiparty_1 = require(\"./OpentokMultiparty\");\nvar createMultiParty = function (settings) {\n if (settings.mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK) {\n return new OpentokMultiparty_1.OpentokMultiparty(settings);\n }\n throw new Error('NOT_SUPPORTED');\n};\nexports.createMultiParty = createMultiParty;\n","import {MediaServiceType} from '../MediaConstants';\nimport {OpentokMultiparty} from './OpentokMultiparty';\nimport {ISessionSettings} from './Contracts';\n\nexport const createMultiParty = (settings: ISessionSettings): any => {\n if (settings.mediaServiceType === MediaServiceType.OPENTOK) {\n return new OpentokMultiparty(settings);\n }\n\n throw new Error('NOT_SUPPORTED');\n};\n"]}
1
+ {"version":3,"sources":["MultiParty/MultipartyFactory.js"],"names":["Object","defineProperty","exports","value","createMultiParty","MediaConstants_1","require","OpentokMultiparty_1","settings","mediaServiceType","MediaServiceType","OPENTOK","OpentokMultiparty","Error"],"mappings":"AAAA;;AACAA,OAAOC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C,EAAEC,OAAO,IAAT,EAA7C;AACAD,QAAQE,gBAAR,GAA2B,KAAK,CAAhC;AACA,IAAIC,mBAAmBC,QAAQ,mBAAR,CAAvB;AACA,IAAIC,sBAAsBD,QAAQ,qBAAR,CAA1B;AACA,IAAIF,mBAAmB,SAAnBA,gBAAmB,CAAUI,QAAV,EAAoB;AACvC,QAAIA,SAASC,gBAAT,KAA8BJ,iBAAiBK,gBAAjB,CAAkCC,OAApE,EAA6E;AACzE,eAAO,IAAIJ,oBAAoBK,iBAAxB,CAA0CJ,QAA1C,CAAP;AACH;AACD,UAAM,IAAIK,KAAJ,CAAU,eAAV,CAAN;AACH,CALD;AAMAX,QAAQE,gBAAR,GAA2BA,gBAA3B;;AAEA","file":"MultipartyFactory.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMultiParty = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar OpentokMultiparty_1 = require(\"./OpentokMultiparty\");\nvar createMultiParty = function (settings) {\n if (settings.mediaServiceType === MediaConstants_1.MediaServiceType.OPENTOK) {\n return new OpentokMultiparty_1.OpentokMultiparty(settings);\n }\n throw new Error('NOT_SUPPORTED');\n};\nexports.createMultiParty = createMultiParty;\n\n//# sourceMappingURL=MultipartyFactory.js.map\n"]}
@@ -407,6 +407,6 @@ var OpentokMultiparty = /** @class */function (_super) {
407
407
  return OpentokMultiparty;
408
408
  }(MultiParty_1.MultiParty);
409
409
  exports.OpentokMultiparty = OpentokMultiparty;
410
- //# sourceMappingURL=OpentokMultiparty.js.map
411
410
 
412
411
  //# sourceMappingURL=OpentokMultiparty.js.map
412
+ //# sourceMappingURL=OpentokMultiparty.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["MultiParty/OpentokMultiparty.js","../src/MultiParty/OpentokMultiparty.ts"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","__importDefault","mod","__esModule","defineProperty","exports","OpentokMultiparty","MultiParty_1","require","MediaConstants_1","MediaTracer_1","get_1","filter_1","cloneDeep_1","MediaCapabilitiesHelper_1","OT","trace","getMediaTracer","OpentokFacingMode","_super","_this","arguments","subscribers","connect","credentials","session","initSession","apiKey","sessionId","err","error","JSON","stringify","emit","MULTI_PARTY_EVENTS","connectFailed","meta","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","token","_a","off","traceError","settings","defaultCamera","CameraTypes","NONE","startWithAudioMuted","info","createPublisher","disconnect","couldStartPublishVideo","mediaCapabilitiesHelper","err_1","MediaCapabilitiesHelper","init","hasCamera","couldStartPublishAudio","err_2","hasMicrophone","settingsForPublisher","default","currentPublisher","initPublisher","publish","publishAudio","_b","publishVideo","properties","insertMode","width","height","facingMode","FRONT","USER","ENVIRONMENT","participateDomId","event","streamCreated","stream","connection","ownConnectionId","connectionId","maxParticipantsNumber","subscriber_1","subscribe","subscriber","clientRole","data","parse","destroyedConnectionId","streamDestroyed","connectionCreated","connectionDestroyed","get","enumerable","configurable","MultiParty"],"mappings":"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","file":"OpentokMultiparty.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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\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.OpentokMultiparty = void 0;\nvar MultiParty_1 = require(\"./MultiParty\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar cloneDeep_1 = __importDefault(require(\"lodash/cloneDeep\"));\nvar MediaCapabilitiesHelper_1 = require(\"./MediaCapabilitiesHelper\");\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar OT = require('@opentok/client');\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\n// The preferred camera position to use for the video source\nvar OpentokFacingMode;\n(function (OpentokFacingMode) {\n OpentokFacingMode[\"USER\"] = \"user\";\n OpentokFacingMode[\"ENVIRONMENT\"] = \"environment\";\n})(OpentokFacingMode || (OpentokFacingMode = {}));\nvar OpentokMultiparty = /** @class */ (function (_super) {\n __extends(OpentokMultiparty, _super);\n function OpentokMultiparty() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.subscribers = [];\n _this.connect = function (credentials) {\n _this.credentials = credentials;\n try {\n _this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(err) } });\n return;\n }\n _this.session.on('connectionCreated', _this.connectionCreatedHandler);\n _this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this.session.on('streamCreated', _this.streamCreatedHandler);\n _this.session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this.session.connect(_this.credentials.token, function (error) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(error) } });\n return [2 /*return*/];\n }\n if (this.settings.defaultCamera === MediaConstants_1.CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.createPublisher(this.settings)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n };\n _this.disconnect = function () {\n try {\n trace.info('Disconnecting from session');\n if (_this.session) {\n _this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n _this.couldStartPublishVideo = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, (settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false];\n case 2:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n throw err_1;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.couldStartPublishAudio = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone()];\n case 2:\n err_2 = _a.sent();\n trace.error(JSON.stringify(err_2));\n throw err_2;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.createPublisher = function (settingsForPublisher) { return __awaiter(_this, void 0, void 0, function () {\n var settings, couldStartPublishVideo, couldStartPublishAudio;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n settings = cloneDeep_1.default(settingsForPublisher);\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n couldStartPublishVideo = _a.sent();\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 2:\n couldStartPublishAudio = _a.sent();\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n return [2 /*return*/];\n }\n if (!couldStartPublishVideo) {\n settings.defaultCamera = MediaConstants_1.CameraTypes.NONE;\n }\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishAudio = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.startWithAudioMuted = !value;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish audio');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishAudio(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.defaultCamera = value ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish video');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishVideo(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.initPublisher = function (settings) {\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE,\n facingMode: settings.defaultCamera === MediaConstants_1.CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n _this.currentPublisher = OT.initPublisher(MultiParty_1.participateDomId + \"1\", properties, _this.traceError);\n if (!_this.currentPublisher) {\n trace.error('failed to init publisher');\n }\n else {\n _this.currentPublisher.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n _this.currentPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n });\n _this.currentPublisher.on('streamCreated', function (event) {\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);\n trace.info('publisher stream created', event, get_1.default(_this.currentPublisher, 'stream.hasAudio'));\n });\n }\n };\n _this.streamCreatedHandler = function (event) {\n trace.info('streamCreatedHandler', event.stream);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!_this.ownConnectionId || !stream || connection.connectionId === _this.ownConnectionId) {\n return;\n }\n if (_this.subscribers.length >= MultiParty_1.maxParticipantsNumber - 1) {\n trace.info(\"a new subscriber cannot be added, as the number of participants reached its limit: \" + MultiParty_1.maxParticipantsNumber);\n }\n else {\n //fixme: use width and height passed in settings\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n var subscriber_1 = _this.session.subscribe(event.stream, \"\" + MultiParty_1.participateDomId + _this.subscribers.length, properties, function (err) {\n _this.traceError(err);\n subscriber_1.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n });\n _this.subscribers.push({\n subscriber: subscriber_1,\n connectionId: connection.connectionId,\n clientRole: (connection === null || connection === void 0 ? void 0 : connection.data) ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n _this.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n var destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { meta: { event: JSON.stringify(event) } });\n _this.subscribers = filter_1.default(_this.subscribers, function (subscriber) { return subscriber.connectionId !== destroyedConnectionId; });\n };\n _this.connectionCreatedHandler = function (event) {\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection) {\n return;\n }\n var clientRole = connection.data ? JSON.parse(connection.data).clientRole : 'default'; //fixme temp workaround for BE\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, { meta: { clientRole: clientRole, event: JSON.stringify(event) } });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {\n return;\n }\n _this.session = null;\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { meta: { event: JSON.stringify(event) } });\n };\n _this.traceError = function (error) {\n trace.error(error);\n };\n return _this;\n }\n Object.defineProperty(OpentokMultiparty.prototype, \"ownConnectionId\", {\n get: function () {\n return this.session && this.session.connection && this.session.connection.connectionId;\n },\n enumerable: false,\n configurable: true\n });\n return OpentokMultiparty;\n}(MultiParty_1.MultiParty));\nexports.OpentokMultiparty = OpentokMultiparty;\n","import {maxParticipantsNumber, MULTI_PARTY_EVENTS, MultiParty, participateDomId} from './MultiParty';\nimport {CameraTypes} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport get from 'lodash/get';\nimport {ICredentials, ISessionSettings} from './Contracts';\nimport filter from 'lodash/filter';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {MediaCapabilitiesHelper} from './MediaCapabilitiesHelper';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst OT = require('@opentok/client');\nconst trace = getMediaTracer('Multiparty');\n\n// The preferred camera position to use for the video source\nenum OpentokFacingMode {\n USER = 'user',\n ENVIRONMENT = 'environment'\n}\n\nexport class OpentokMultiparty extends MultiParty {\n subscribers: Array<any> = [];\n session: any;\n currentPublisher: any;\n credentials: any;\n\n get ownConnectionId(): string | boolean {\n return this.session && this.session.connection && this.session.connection.connectionId;\n }\n\n connect = (credentials: ICredentials): void => {\n this.credentials = credentials;\n\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(err)}});\n\n return;\n }\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n\n this.session.connect(this.credentials.token, async (error: any) => {\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {meta: {err: JSON.stringify(error)}});\n\n return;\n }\n\n if (this.settings.defaultCamera === CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n\n return;\n }\n\n await this.createPublisher(this.settings);\n });\n };\n\n disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n couldStartPublishVideo = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return (settings.defaultCamera !== CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false;\n\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n couldStartPublishAudio = async (settings: ISessionSettings): Promise<boolean | Error> => {\n try {\n const mediaCapabilitiesHelper = await MediaCapabilitiesHelper.init();\n\n return !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n createPublisher = async (settingsForPublisher: ISessionSettings): Promise<void> => {\n const settings = cloneDeep(settingsForPublisher);\n const couldStartPublishVideo = await this.couldStartPublishVideo(settings);\n const couldStartPublishAudio = await this.couldStartPublishAudio(settings);\n\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n\n return;\n }\n\n if (!couldStartPublishVideo) {\n settings.defaultCamera = CameraTypes.NONE;\n }\n\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n };\n\n publishAudio = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.startWithAudioMuted = !value;\n\n if (value && !await this.couldStartPublishAudio(settings)) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishAudio(value);\n }\n };\n\n publishVideo = async (value: boolean): Promise<void> => {\n const settings = cloneDeep(this.settings);\n\n settings.defaultCamera = value ? this.settings.defaultCamera : CameraTypes.NONE;\n\n if (value && !await this.couldStartPublishVideo(settings)) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n } else {\n this.currentPublisher.publishVideo(value);\n }\n };\n\n initPublisher = (settings: ISessionSettings) => {\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== CameraTypes.NONE,\n facingMode: settings.defaultCamera === CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n\n this.currentPublisher = OT.initPublisher(`${participateDomId}1`, properties, this.traceError);\n\n if (!this.currentPublisher) {\n trace.error('failed to init publisher');\n } else {\n this.currentPublisher.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n });\n this.currentPublisher.on('streamCreated', (event: any) => {\n this.emit(MULTI_PARTY_EVENTS.streamCreated, event);\n trace.info('publisher stream created', event, get(this.currentPublisher, 'stream.hasAudio'));\n });\n }\n }\n\n streamCreatedHandler = (event: { stream: any }): void => {\n trace.info('streamCreatedHandler', event.stream);\n this.emit(MULTI_PARTY_EVENTS.streamCreated, event);\n\n const {stream} = event;\n const {connection} = stream || {connection: null};\n\n if (!this.ownConnectionId || !stream || connection.connectionId === this.ownConnectionId) {\n return;\n }\n\n if (this.subscribers.length >= maxParticipantsNumber - 1) {\n trace.info(`a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`);\n } else {\n //fixme: use width and height passed in settings\n const properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n\n const subscriber = this.session.subscribe(event.stream, `${participateDomId}${this.subscribers.length}`, properties, (err: any) => {\n this.traceError(err);\n\n subscriber.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n });\n\n this.subscribers.push({\n subscriber,\n connectionId: connection.connectionId,\n clientRole: connection?.data ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n\n streamDestroyedHandler = (event: any): void => {\n trace.info('streamDestroyedHandler', event);\n const {stream} = event;\n const destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {meta: {event: JSON.stringify(event)}});\n this.subscribers = filter(this.subscribers, (subscriber) => subscriber.connectionId !== destroyedConnectionId);\n };\n\n connectionCreatedHandler = (event: any): void => {\n trace.info('connectionCreatedHandler', event);\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n const clientRole = connection.data ? JSON.parse(connection.data).clientRole : 'default'; //fixme temp workaround for BE\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {meta: {clientRole, event: JSON.stringify(event)}});\n };\n\n connectionDestroyedHandler = (event: any): void => {\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection || connection.connectionId !== this.ownConnectionId) {\n return;\n }\n\n this.session = null;\n trace.info('connectionDestroyedHandler', event);\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {meta: {event: JSON.stringify(event)}});\n };\n\n traceError = (error: any): void => {\n trace.error(error);\n };\n}\n"]}
1
+ {"version":3,"sources":["MultiParty/OpentokMultiparty.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","_","label","sent","t","trys","ops","f","y","g","verb","Symbol","iterator","n","v","op","TypeError","pop","length","push","__importDefault","mod","__esModule","defineProperty","exports","OpentokMultiparty","MultiParty_1","require","MediaConstants_1","MediaTracer_1","get_1","filter_1","cloneDeep_1","MediaCapabilitiesHelper_1","OT","trace","getMediaTracer","OpentokFacingMode","_super","_this","arguments","subscribers","connect","credentials","session","initSession","apiKey","sessionId","err","error","JSON","stringify","emit","MULTI_PARTY_EVENTS","connectFailed","meta","on","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","token","_a","off","traceError","settings","defaultCamera","CameraTypes","NONE","startWithAudioMuted","info","createPublisher","disconnect","couldStartPublishVideo","mediaCapabilitiesHelper","err_1","MediaCapabilitiesHelper","init","hasCamera","couldStartPublishAudio","err_2","hasMicrophone","settingsForPublisher","default","currentPublisher","initPublisher","publish","publishAudio","_b","publishVideo","properties","insertMode","width","height","facingMode","FRONT","USER","ENVIRONMENT","participateDomId","event","streamCreated","stream","connection","ownConnectionId","connectionId","maxParticipantsNumber","subscriber_1","subscribe","subscriber","clientRole","data","parse","destroyedConnectionId","streamDestroyed","connectionCreated","connectionDestroyed","get","enumerable","configurable","MultiParty"],"mappings":"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","file":"OpentokMultiparty.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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\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.OpentokMultiparty = void 0;\nvar MultiParty_1 = require(\"./MultiParty\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar cloneDeep_1 = __importDefault(require(\"lodash/cloneDeep\"));\nvar MediaCapabilitiesHelper_1 = require(\"./MediaCapabilitiesHelper\");\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar OT = require('@opentok/client');\nvar trace = MediaTracer_1.getMediaTracer('Multiparty');\n// The preferred camera position to use for the video source\nvar OpentokFacingMode;\n(function (OpentokFacingMode) {\n OpentokFacingMode[\"USER\"] = \"user\";\n OpentokFacingMode[\"ENVIRONMENT\"] = \"environment\";\n})(OpentokFacingMode || (OpentokFacingMode = {}));\nvar OpentokMultiparty = /** @class */ (function (_super) {\n __extends(OpentokMultiparty, _super);\n function OpentokMultiparty() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.subscribers = [];\n _this.connect = function (credentials) {\n _this.credentials = credentials;\n try {\n _this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(err) } });\n return;\n }\n _this.session.on('connectionCreated', _this.connectionCreatedHandler);\n _this.session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this.session.on('streamCreated', _this.streamCreatedHandler);\n _this.session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this.session.connect(_this.credentials.token, function (error) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (error) {\n this.session.off();\n this.session = null;\n this.traceError(error);\n this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectFailed, { meta: { err: JSON.stringify(error) } });\n return [2 /*return*/];\n }\n if (this.settings.defaultCamera === MediaConstants_1.CameraTypes.NONE && this.settings.startWithAudioMuted) {\n trace.info('camera is none, no need to create publisher');\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.createPublisher(this.settings)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); });\n };\n _this.disconnect = function () {\n try {\n trace.info('Disconnecting from session');\n if (_this.session) {\n _this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n _this.couldStartPublishVideo = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, (settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE)\n ? mediaCapabilitiesHelper.hasCamera()\n : false];\n case 2:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n throw err_1;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.couldStartPublishAudio = function (settings) { return __awaiter(_this, void 0, void 0, function () {\n var mediaCapabilitiesHelper, err_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, MediaCapabilitiesHelper_1.MediaCapabilitiesHelper.init()];\n case 1:\n mediaCapabilitiesHelper = _a.sent();\n return [2 /*return*/, !settings.startWithAudioMuted && mediaCapabilitiesHelper.hasMicrophone()];\n case 2:\n err_2 = _a.sent();\n trace.error(JSON.stringify(err_2));\n throw err_2;\n case 3: return [2 /*return*/];\n }\n });\n }); };\n _this.createPublisher = function (settingsForPublisher) { return __awaiter(_this, void 0, void 0, function () {\n var settings, couldStartPublishVideo, couldStartPublishAudio;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n settings = cloneDeep_1.default(settingsForPublisher);\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n couldStartPublishVideo = _a.sent();\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 2:\n couldStartPublishAudio = _a.sent();\n if (!couldStartPublishVideo && !couldStartPublishAudio) {\n // FIXME: use emitter\n trace.error('could not create a publisher, due to lack of media capabilities or settings');\n return [2 /*return*/];\n }\n if (!couldStartPublishVideo) {\n settings.defaultCamera = MediaConstants_1.CameraTypes.NONE;\n }\n if (!couldStartPublishAudio) {\n settings.startWithAudioMuted = true;\n }\n if (!this.currentPublisher) {\n this.initPublisher(settings);\n this.session.publish(this.currentPublisher, this.traceError);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishAudio = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.startWithAudioMuted = !value;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishAudio(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish audio');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishAudio(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.publishVideo = function (value) { return __awaiter(_this, void 0, void 0, function () {\n var settings, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n settings = cloneDeep_1.default(this.settings);\n settings.defaultCamera = value ? this.settings.defaultCamera : MediaConstants_1.CameraTypes.NONE;\n _a = value;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, this.couldStartPublishVideo(settings)];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n trace.error('could not publish video');\n return [2 /*return*/];\n }\n if (!this.currentPublisher) {\n this.createPublisher(settings);\n }\n else {\n this.currentPublisher.publishVideo(value);\n }\n return [2 /*return*/];\n }\n });\n }); };\n _this.initPublisher = function (settings) {\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200',\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.defaultCamera !== MediaConstants_1.CameraTypes.NONE,\n facingMode: settings.defaultCamera === MediaConstants_1.CameraTypes.FRONT ? OpentokFacingMode.USER : OpentokFacingMode.ENVIRONMENT\n };\n _this.currentPublisher = OT.initPublisher(MultiParty_1.participateDomId + \"1\", properties, _this.traceError);\n if (!_this.currentPublisher) {\n trace.error('failed to init publisher');\n }\n else {\n _this.currentPublisher.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n _this.currentPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n });\n _this.currentPublisher.on('streamCreated', function (event) {\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);\n trace.info('publisher stream created', event, get_1.default(_this.currentPublisher, 'stream.hasAudio'));\n });\n }\n };\n _this.streamCreatedHandler = function (event) {\n trace.info('streamCreatedHandler', event.stream);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamCreated, event);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!_this.ownConnectionId || !stream || connection.connectionId === _this.ownConnectionId) {\n return;\n }\n if (_this.subscribers.length >= MultiParty_1.maxParticipantsNumber - 1) {\n trace.info(\"a new subscriber cannot be added, as the number of participants reached its limit: \" + MultiParty_1.maxParticipantsNumber);\n }\n else {\n //fixme: use width and height passed in settings\n var properties = {\n insertMode: 'append',\n width: '200',\n height: '200'\n };\n var subscriber_1 = _this.session.subscribe(event.stream, \"\" + MultiParty_1.participateDomId + _this.subscribers.length, properties, function (err) {\n _this.traceError(err);\n subscriber_1.on('videoElementCreated', function (event) {\n trace.info('videoElementCreated', event);\n });\n });\n _this.subscribers.push({\n subscriber: subscriber_1,\n connectionId: connection.connectionId,\n clientRole: (connection === null || connection === void 0 ? void 0 : connection.data) ? JSON.parse(connection.data).clientRole : 'default' //fixme temp workaround for BE\n });\n }\n };\n _this.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n var destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.streamDestroyed, { meta: { event: JSON.stringify(event) } });\n _this.subscribers = filter_1.default(_this.subscribers, function (subscriber) { return subscriber.connectionId !== destroyedConnectionId; });\n };\n _this.connectionCreatedHandler = function (event) {\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection) {\n return;\n }\n var clientRole = connection.data ? JSON.parse(connection.data).clientRole : 'default'; //fixme temp workaround for BE\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionCreated, { meta: { clientRole: clientRole, event: JSON.stringify(event) } });\n };\n _this.connectionDestroyedHandler = function (event) {\n var connection = event.connection;\n if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {\n return;\n }\n _this.session = null;\n trace.info('connectionDestroyedHandler', event);\n _this.emit(MultiParty_1.MULTI_PARTY_EVENTS.connectionDestroyed, { meta: { event: JSON.stringify(event) } });\n };\n _this.traceError = function (error) {\n trace.error(error);\n };\n return _this;\n }\n Object.defineProperty(OpentokMultiparty.prototype, \"ownConnectionId\", {\n get: function () {\n return this.session && this.session.connection && this.session.connection.connectionId;\n },\n enumerable: false,\n configurable: true\n });\n return OpentokMultiparty;\n}(MultiParty_1.MultiParty));\nexports.OpentokMultiparty = OpentokMultiparty;\n\n//# sourceMappingURL=OpentokMultiparty.js.map\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techsee/techsee-media-service",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "description": "Techsee Media Service Client",
5
5
  "author": "TechSee",
6
6
  "main": "lib/index.js",
@@ -21,7 +21,7 @@
21
21
  "@opentok/client": "~2.19.2",
22
22
  "@techsee/kurento-utils-temasys-mod": "6.6.3-dev-3",
23
23
  "@techsee/openvidu-browser": "~12.15.6",
24
- "@techsee/techsee-common": "~0.24.0",
24
+ "@techsee/techsee-common": "^0.24.5",
25
25
  "bluebird": "~3.7.2",
26
26
  "kurento-utils": "6.6.2",
27
27
  "lodash": "4.17.20",