@techsee/techsee-media-service 6.1.0 → 7.0.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 (48) hide show
  1. package/README.md +27 -28
  2. package/lib/LocalStreamManager.d.ts.map +1 -1
  3. package/lib/LocalStreamManager.js +9 -8
  4. package/lib/LocalStreamManager.js.map +1 -1
  5. package/lib/MediaContracts.d.ts.map +1 -1
  6. package/lib/MediaPublisher.d.ts.map +1 -1
  7. package/lib/MediaPublisher.js.map +1 -1
  8. package/lib/MediaServiceBase.d.ts.map +1 -1
  9. package/lib/MediaServiceBase.js +2 -0
  10. package/lib/MediaServiceBase.js.map +1 -1
  11. package/lib/MediaSession/MediaServer.d.ts.map +1 -1
  12. package/lib/MediaSession/MediaServer.js.map +1 -1
  13. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  14. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  15. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  16. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  17. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  18. package/lib/MediaSession/SessionTurn.js +5 -5
  19. package/lib/MediaSession/SessionTurn.js.map +1 -1
  20. package/lib/MediaSubscriber.d.ts.map +1 -1
  21. package/lib/MediaSubscriber.js.map +1 -1
  22. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  23. package/lib/MediaUtils/Compatibility.js +2 -1
  24. package/lib/MediaUtils/Compatibility.js.map +1 -1
  25. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  26. package/lib/MediaUtils/MediaDomUtils.js +2 -1
  27. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  28. package/lib/MultiParty/Contracts.d.ts.map +1 -1
  29. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
  30. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -1
  31. package/lib/MultiParty/MediaCapabilitiesService.js +42 -23
  32. package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
  33. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -1
  34. package/lib/MultiParty/MultiPartyService.d.ts.map +1 -1
  35. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -1
  36. package/lib/MultiParty/OpentokMultiPartyService.d.ts.map +1 -1
  37. package/lib/MultiParty/OpentokMultiPartyService.js +27 -29
  38. package/lib/MultiParty/OpentokMultiPartyService.js.map +1 -1
  39. package/lib/MultiParty/VideoLayoutType.d.ts.map +1 -1
  40. package/lib/MultiParty/index.d.ts +1 -1
  41. package/lib/MultiParty/index.d.ts.map +1 -1
  42. package/lib/MultiParty/index.js +3 -16
  43. package/lib/MultiParty/index.js.map +1 -1
  44. package/lib/MultiParty/opentok.d.ts +407 -457
  45. package/lib/TechseeMediaStream.d.ts.map +1 -1
  46. package/lib/TechseeMediaStream.js.map +1 -1
  47. package/lib/qos/raw-qos.js.map +1 -1
  48. package/package.json +21 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["MultiParty/MediaCapabilitiesService.js"],"names":["__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","call","pop","length","push","__importDefault","mod","__esModule","Object","defineProperty","exports","MediaCapabilitiesService","MediaTracer_1","require","DetectWebRtcService_1","filter_1","ts_environment_detect_1","MediaConstants_1","last_1","first_1","get_1","trace","getMediaTracer","enumerateMediaDevices","navigator","mediaDevices","enumerateDevices","environmentService","TsEnvironmentDetect","getInstance","_a","instance","_initPromise","init","err","error","JSON","stringify","err_1","_b","detectWebRtcService","DetectWebRtcService","DETECT_RTC_ADVISED_TIMEOUT","getWebRtcInfo","webRtcSupportInfo","setDevicesList","info","prototype","hasCamera","devicesList","video","hasGetUserMediaSupported","hasMicrophone","isIOS","audio","hasWebRTC","isWebRTCSupported","isGetUserMediaSupported","setGroupedDevices","groupedDevices","CameraTypes","BACK","FRONT","_supportSwitchCamera","_backCameraDeviceId","_frontCameraDeviceId","localDevicesList","device","kind","toLowerCase","get","enumerable","configurable"],"mappings":"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","file":"MediaCapabilitiesService.js","sourcesContent":["\"use strict\";\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.MediaCapabilitiesService = void 0;\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar DetectWebRtcService_1 = require(\"./DetectWebRtcService\");\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar last_1 = __importDefault(require(\"lodash/last\"));\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar trace = MediaTracer_1.getMediaTracer('MediaCapabilitiesService');\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n return navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n return resolve([]);\n });\n}\nvar MediaCapabilitiesService = /** @class */ (function () {\n function MediaCapabilitiesService() {\n this.environmentService = new ts_environment_detect_1.TsEnvironmentDetect();\n }\n MediaCapabilitiesService.getInstance = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n try {\n if (this.instance) {\n return [2 /*return*/, this.instance];\n }\n if (this._initPromise) {\n return [2 /*return*/, this._initPromise];\n }\n this._initPromise = this.init();\n return [2 /*return*/, this._initPromise];\n }\n catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n return [2 /*return*/];\n });\n });\n };\n MediaCapabilitiesService.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, err_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n this.instance = new MediaCapabilitiesService();\n this.detectWebRtcService = new DetectWebRtcService_1.DetectWebRtcService(DetectWebRtcService_1.DETECT_RTC_ADVISED_TIMEOUT);\n _a = this;\n return [4 /*yield*/, this.detectWebRtcService.getWebRtcInfo()];\n case 1:\n _a.webRtcSupportInfo = _b.sent();\n return [4 /*yield*/, this.setDevicesList()];\n case 2:\n _b.sent();\n trace.info('initialize media capabilities helper successfully');\n return [2 /*return*/, this.instance];\n case 3:\n err_1 = _b.sent();\n trace.error(JSON.stringify(err_1));\n throw err_1;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n MediaCapabilitiesService.prototype.hasCamera = function () {\n return MediaCapabilitiesService.devicesList.video.length > 0 && this.hasGetUserMediaSupported();\n };\n MediaCapabilitiesService.prototype.hasMicrophone = function () {\n return this.environmentService.isIOS()\n ? this.hasGetUserMediaSupported()\n : MediaCapabilitiesService.devicesList.audio.length > 0 && this.hasGetUserMediaSupported();\n };\n MediaCapabilitiesService.prototype.hasWebRTC = function () {\n return MediaCapabilitiesService.webRtcSupportInfo.isWebRTCSupported;\n };\n MediaCapabilitiesService.prototype.hasGetUserMediaSupported = function () {\n return MediaCapabilitiesService.webRtcSupportInfo.isGetUserMediaSupported;\n };\n MediaCapabilitiesService.setGroupedDevices = function () {\n var _a;\n trace.info('setGroupedDevices', this.devicesList);\n this.groupedDevices = {\n video: this.devicesList.video\n ? (_a = {}, _a[MediaConstants_1.CameraTypes.BACK] = last_1.default(this.devicesList.video), _a[MediaConstants_1.CameraTypes.FRONT] = first_1.default(this.devicesList.video), _a) : null,\n audio: last_1.default(this.devicesList.audio) || null\n };\n this._supportSwitchCamera = this.devicesList.video.length > 1;\n this._backCameraDeviceId = get_1.default(this.groupedDevices, \"video.\" + MediaConstants_1.CameraTypes.BACK + \".deviceId\") || '';\n this._frontCameraDeviceId = get_1.default(this.groupedDevices, \"video.\" + MediaConstants_1.CameraTypes.FRONT + \".deviceId\") || '';\n };\n MediaCapabilitiesService.setDevicesList = function () {\n return __awaiter(this, void 0, void 0, function () {\n var localDevicesList, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.webRtcSupportInfo.isWebRTCSupported) return [3 /*break*/, 2];\n return [4 /*yield*/, enumerateMediaDevices()];\n case 1:\n _a = _b.sent();\n return [3 /*break*/, 3];\n case 2:\n _a = [];\n _b.label = 3;\n case 3:\n localDevicesList = _a;\n this.devicesList = {\n video: filter_1.default(localDevicesList, function (device) { return device.kind.toLowerCase() === 'videoinput'; }),\n audio: filter_1.default(localDevicesList, function (device) { return device.kind.toLowerCase() === 'audioinput'; })\n };\n this.setGroupedDevices();\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(MediaCapabilitiesService.prototype, \"supportSwitchCamera\", {\n get: function () {\n return MediaCapabilitiesService._supportSwitchCamera;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MediaCapabilitiesService.prototype, \"backCameraDeviceId\", {\n get: function () {\n return MediaCapabilitiesService._backCameraDeviceId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MediaCapabilitiesService.prototype, \"frontCameraDeviceId\", {\n get: function () {\n return MediaCapabilitiesService._frontCameraDeviceId;\n },\n enumerable: false,\n configurable: true\n });\n MediaCapabilitiesService.groupedDevices = { video: null, audio: null };\n return MediaCapabilitiesService;\n}());\nexports.MediaCapabilitiesService = MediaCapabilitiesService;\n\n//# sourceMappingURL=MediaCapabilitiesService.js.map\n"]}
1
+ {"version":3,"sources":["MultiParty/MediaCapabilitiesService.js"],"names":["__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","call","pop","length","push","__importDefault","mod","__esModule","Object","defineProperty","exports","MediaCapabilitiesService","MediaTracer_1","require","DetectWebRtcService_1","filter_1","ts_environment_detect_1","MediaConstants_1","last_1","first_1","get_1","trace","getMediaTracer","enumerateMediaDevices","navigator","mediaDevices","enumerateDevices","environmentService","TsEnvironmentDetect","getInstance","err_1","_a","instance","_initPromise","init","error","JSON","stringify","err_2","_b","detectWebRtcService","DetectWebRtcService","DETECT_RTC_ADVISED_TIMEOUT","getWebRtcInfo","webRtcSupportInfo","setDevicesList","info","prototype","hasCamera","devicesList","video","hasGetUserMediaSupported","hasMicrophone","isIOS","audio","hasWebRTC","isWebRTCSupported","isGetUserMediaSupported","setGroupedDevices","groupedDevices","CameraTypes","BACK","FRONT","_supportSwitchCamera","_backCameraDeviceId","_frontCameraDeviceId","localDevicesList","device","kind","toLowerCase","get","enumerable","configurable"],"mappings":"AAAA;;AACA,IAAIA,SAAS,GAAI,UAAQ,SAAKA,SAAd,IAA4B,UAAUC,OAAV,EAAmBC,UAAnB,EAA+BC,CAA/B,EAAkCC,SAAlC,EAA6C;AACrF,WAASC,KAAT,CAAeC,KAAf,EAAsB;AAAE,WAAOA,KAAK,YAAYH,CAAjB,GAAqBG,KAArB,GAA6B,IAAIH,CAAJ,CAAM,UAAUI,OAAV,EAAmB;AAAEA,MAAAA,OAAO,CAACD,KAAD,CAAP;AAAiB,KAA5C,CAApC;AAAoF;;AAC5G,SAAO,KAAKH,CAAC,KAAKA,CAAC,GAAGK,OAAT,CAAN,EAAyB,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AACvD,aAASC,SAAT,CAAmBJ,KAAnB,EAA0B;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAACQ,IAAV,CAAeN,KAAf,CAAD,CAAJ;AAA8B,OAApC,CAAqC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC3F,aAASC,QAAT,CAAkBR,KAAlB,EAAyB;AAAE,UAAI;AAAEK,QAAAA,IAAI,CAACP,SAAS,CAAC,OAAD,CAAT,CAAmBE,KAAnB,CAAD,CAAJ;AAAkC,OAAxC,CAAyC,OAAOO,CAAP,EAAU;AAAEJ,QAAAA,MAAM,CAACI,CAAD,CAAN;AAAY;AAAE;;AAC9F,aAASF,IAAT,CAAcI,MAAd,EAAsB;AAAEA,MAAAA,MAAM,CAACC,IAAP,GAAcT,OAAO,CAACQ,MAAM,CAACT,KAAR,CAArB,GAAsCD,KAAK,CAACU,MAAM,CAACT,KAAR,CAAL,CAAoBW,IAApB,CAAyBP,SAAzB,EAAoCI,QAApC,CAAtC;AAAsF;;AAC9GH,IAAAA,IAAI,CAAC,CAACP,SAAS,GAAGA,SAAS,CAACc,KAAV,CAAgBjB,OAAhB,EAAyBC,UAAU,IAAI,EAAvC,CAAb,EAAyDU,IAAzD,EAAD,CAAJ;AACH,GALM,CAAP;AAMH,CARD;;AASA,IAAIO,WAAW,GAAI,UAAQ,SAAKA,WAAd,IAA8B,UAAUlB,OAAV,EAAmBmB,IAAnB,EAAyB;AACrE,MAAIC,CAAC,GAAG;AAAEC,IAAAA,KAAK,EAAE,CAAT;AAAYC,IAAAA,IAAI,EAAE,gBAAW;AAAE,UAAIC,CAAC,CAAC,CAAD,CAAD,GAAO,CAAX,EAAc,MAAMA,CAAC,CAAC,CAAD,CAAP;AAAY,aAAOA,CAAC,CAAC,CAAD,CAAR;AAAc,KAAvE;AAAyEC,IAAAA,IAAI,EAAE,EAA/E;AAAmFC,IAAAA,GAAG,EAAE;AAAxF,GAAR;AAAA,MAAsGC,CAAtG;AAAA,MAAyGC,CAAzG;AAAA,MAA4GJ,CAA5G;AAAA,MAA+GK,CAA/G;AACA,SAAOA,CAAC,GAAG;AAAEjB,IAAAA,IAAI,EAAEkB,IAAI,CAAC,CAAD,CAAZ;AAAiB,aAASA,IAAI,CAAC,CAAD,CAA9B;AAAmC,cAAUA,IAAI,CAAC,CAAD;AAAjD,GAAJ,EAA4D,OAAOC,MAAP,KAAkB,UAAlB,KAAiCF,CAAC,CAACE,MAAM,CAACC,QAAR,CAAD,GAAqB,YAAW;AAAE,WAAO,IAAP;AAAc,GAAjF,CAA5D,EAAgJH,CAAvJ;;AACA,WAASC,IAAT,CAAcG,CAAd,EAAiB;AAAE,WAAO,UAAUC,CAAV,EAAa;AAAE,aAAOvB,IAAI,CAAC,CAACsB,CAAD,EAAIC,CAAJ,CAAD,CAAX;AAAsB,KAA5C;AAA+C;;AAClE,WAASvB,IAAT,CAAcwB,EAAd,EAAkB;AACd,QAAIR,CAAJ,EAAO,MAAM,IAAIS,SAAJ,CAAc,iCAAd,CAAN;;AACP,WAAOf,CAAP;AAAU,UAAI;AACV,YAAIM,CAAC,GAAG,CAAJ,EAAOC,CAAC,KAAKJ,CAAC,GAAGW,EAAE,CAAC,CAAD,CAAF,GAAQ,CAAR,GAAYP,CAAC,CAAC,QAAD,CAAb,GAA0BO,EAAE,CAAC,CAAD,CAAF,GAAQP,CAAC,CAAC,OAAD,CAAD,KAAe,CAACJ,CAAC,GAAGI,CAAC,CAAC,QAAD,CAAN,KAAqBJ,CAAC,CAACa,IAAF,CAAOT,CAAP,CAArB,EAAgC,CAA/C,CAAR,GAA4DA,CAAC,CAAChB,IAAjG,CAAD,IAA2G,CAAC,CAACY,CAAC,GAAGA,CAAC,CAACa,IAAF,CAAOT,CAAP,EAAUO,EAAE,CAAC,CAAD,CAAZ,CAAL,EAAuBnB,IAA9I,EAAoJ,OAAOQ,CAAP;AACpJ,YAAII,CAAC,GAAG,CAAJ,EAAOJ,CAAX,EAAcW,EAAE,GAAG,CAACA,EAAE,CAAC,CAAD,CAAF,GAAQ,CAAT,EAAYX,CAAC,CAAClB,KAAd,CAAL;;AACd,gBAAQ6B,EAAE,CAAC,CAAD,CAAV;AACI,eAAK,CAAL;AAAQ,eAAK,CAAL;AAAQX,YAAAA,CAAC,GAAGW,EAAJ;AAAQ;;AACxB,eAAK,CAAL;AAAQd,YAAAA,CAAC,CAACC,KAAF;AAAW,mBAAO;AAAEhB,cAAAA,KAAK,EAAE6B,EAAE,CAAC,CAAD,CAAX;AAAgBnB,cAAAA,IAAI,EAAE;AAAtB,aAAP;;AACnB,eAAK,CAAL;AAAQK,YAAAA,CAAC,CAACC,KAAF;AAAWM,YAAAA,CAAC,GAAGO,EAAE,CAAC,CAAD,CAAN;AAAWA,YAAAA,EAAE,GAAG,CAAC,CAAD,CAAL;AAAU;;AACxC,eAAK,CAAL;AAAQA,YAAAA,EAAE,GAAGd,CAAC,CAACK,GAAF,CAAMY,GAAN,EAAL;;AAAkBjB,YAAAA,CAAC,CAACI,IAAF,CAAOa,GAAP;;AAAc;;AACxC;AACI,gBAAI,EAAEd,CAAC,GAAGH,CAAC,CAACI,IAAN,EAAYD,CAAC,GAAGA,CAAC,CAACe,MAAF,GAAW,CAAX,IAAgBf,CAAC,CAACA,CAAC,CAACe,MAAF,GAAW,CAAZ,CAAnC,MAAuDJ,EAAE,CAAC,CAAD,CAAF,KAAU,CAAV,IAAeA,EAAE,CAAC,CAAD,CAAF,KAAU,CAAhF,CAAJ,EAAwF;AAAEd,cAAAA,CAAC,GAAG,CAAJ;AAAO;AAAW;;AAC5G,gBAAIc,EAAE,CAAC,CAAD,CAAF,KAAU,CAAV,KAAgB,CAACX,CAAD,IAAOW,EAAE,CAAC,CAAD,CAAF,GAAQX,CAAC,CAAC,CAAD,CAAT,IAAgBW,EAAE,CAAC,CAAD,CAAF,GAAQX,CAAC,CAAC,CAAD,CAAhD,CAAJ,EAA2D;AAAEH,cAAAA,CAAC,CAACC,KAAF,GAAUa,EAAE,CAAC,CAAD,CAAZ;AAAiB;AAAQ;;AACtF,gBAAIA,EAAE,CAAC,CAAD,CAAF,KAAU,CAAV,IAAed,CAAC,CAACC,KAAF,GAAUE,CAAC,CAAC,CAAD,CAA9B,EAAmC;AAAEH,cAAAA,CAAC,CAACC,KAAF,GAAUE,CAAC,CAAC,CAAD,CAAX;AAAgBA,cAAAA,CAAC,GAAGW,EAAJ;AAAQ;AAAQ;;AACrE,gBAAIX,CAAC,IAAIH,CAAC,CAACC,KAAF,GAAUE,CAAC,CAAC,CAAD,CAApB,EAAyB;AAAEH,cAAAA,CAAC,CAACC,KAAF,GAAUE,CAAC,CAAC,CAAD,CAAX;;AAAgBH,cAAAA,CAAC,CAACK,GAAF,CAAMc,IAAN,CAAWL,EAAX;;AAAgB;AAAQ;;AACnE,gBAAIX,CAAC,CAAC,CAAD,CAAL,EAAUH,CAAC,CAACK,GAAF,CAAMY,GAAN;;AACVjB,YAAAA,CAAC,CAACI,IAAF,CAAOa,GAAP;;AAAc;AAXtB;;AAaAH,QAAAA,EAAE,GAAGf,IAAI,CAACiB,IAAL,CAAUpC,OAAV,EAAmBoB,CAAnB,CAAL;AACH,OAjBS,CAiBR,OAAOR,CAAP,EAAU;AAAEsB,QAAAA,EAAE,GAAG,CAAC,CAAD,EAAItB,CAAJ,CAAL;AAAae,QAAAA,CAAC,GAAG,CAAJ;AAAQ,OAjBzB,SAiBkC;AAAED,QAAAA,CAAC,GAAGH,CAAC,GAAG,CAAR;AAAY;AAjB1D;;AAkBA,QAAIW,EAAE,CAAC,CAAD,CAAF,GAAQ,CAAZ,EAAe,MAAMA,EAAE,CAAC,CAAD,CAAR;AAAa,WAAO;AAAE7B,MAAAA,KAAK,EAAE6B,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAV,GAAgB,KAAK,CAA9B;AAAiCnB,MAAAA,IAAI,EAAE;AAAvC,KAAP;AAC/B;AACJ,CA1BD;;AA2BA,IAAIyB,eAAe,GAAI,UAAQ,SAAKA,eAAd,IAAkC,UAAUC,GAAV,EAAe;AACnE,SAAQA,GAAG,IAAIA,GAAG,CAACC,UAAZ,GAA0BD,GAA1B,GAAgC;AAAE,eAAWA;AAAb,GAAvC;AACH,CAFD;;AAGAE,MAAM,CAACC,cAAP,CAAsBC,OAAtB,EAA+B,YAA/B,EAA6C;AAAExC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAwC,OAAO,CAACC,wBAAR,GAAmC,KAAK,CAAxC,C,CACA;;AACA,IAAIC,aAAa,GAAGC,OAAO,CAAC,2BAAD,CAA3B;;AACA,IAAIC,qBAAqB,GAAGD,OAAO,CAAC,uBAAD,CAAnC;;AACA,IAAIE,QAAQ,GAAGV,eAAe,CAACQ,OAAO,CAAC,eAAD,CAAR,CAA9B;;AACA,IAAIG,uBAAuB,GAAGH,OAAO,CAAC,2DAAD,CAArC;;AACA,IAAII,gBAAgB,GAAGJ,OAAO,CAAC,mBAAD,CAA9B;;AACA,IAAIK,MAAM,GAAGb,eAAe,CAACQ,OAAO,CAAC,aAAD,CAAR,CAA5B;;AACA,IAAIM,OAAO,GAAGd,eAAe,CAACQ,OAAO,CAAC,cAAD,CAAR,CAA7B;;AACA,IAAIO,KAAK,GAAGf,eAAe,CAACQ,OAAO,CAAC,YAAD,CAAR,CAA3B;;AACA,IAAIQ,KAAK,GAAGT,aAAa,CAACU,cAAd,CAA6B,0BAA7B,CAAZ;;AACA,SAASC,qBAAT,GAAiC;AAC7B,SAAO,IAAInD,OAAJ,CAAY,UAAUD,OAAV,EAAmBE,MAAnB,EAA2B;AAC1C,QAAImD,SAAS,CAACC,YAAV,IAA0BD,SAAS,CAACC,YAAV,CAAuBC,gBAArD,EAAuE;AACnE,aAAOF,SAAS,CAACC,YAAV,CAAuBC,gBAAvB,GAA0C7C,IAA1C,CAA+CV,OAA/C,WAA8DE,MAA9D,CAAP;AACH;;AACD,WAAOF,OAAO,CAAC,EAAD,CAAd;AACH,GALM,CAAP;AAMH;;AACD,IAAIwC,wBAAwB;AAAG;AAAe,YAAY;AACtD,WAASA,wBAAT,GAAoC;AAChC,SAAKgB,kBAAL,GAA0B,IAAIX,uBAAuB,CAACY,mBAA5B,EAA1B;AACH;;AACDjB,EAAAA,wBAAwB,CAACkB,WAAzB,GAAuC,YAAY;AAC/C,WAAOjE,SAAS,CAAC,IAAD,EAAO,KAAK,CAAZ,EAAe,KAAK,CAApB,EAAuB,YAAY;AAC/C,UAAIkE,KAAJ;AACA,aAAO/C,WAAW,CAAC,IAAD,EAAO,UAAUgD,EAAV,EAAc;AACnC,gBAAQA,EAAE,CAAC7C,KAAX;AACI,eAAK,CAAL;AACI6C,YAAAA,EAAE,CAAC1C,IAAH,CAAQe,IAAR,CAAa,CAAC,CAAD,EAAI,CAAJ,GAAS,CAAT,CAAb;;AACA,gBAAI,KAAK4B,QAAT,EAAmB;AACf,qBAAO,CAAC;AAAE;AAAH,gBAAe,KAAKA,QAApB,CAAP;AACH;;AACD,gBAAI,CAAC,KAAKC,YAAV,EAAwB,OAAO,CAAC;AAAE;AAAH,cAAc,CAAd,CAAP;AACxB,mBAAO,CAAC;AAAE;AAAH,cAAc,KAAKA,YAAnB,CAAP;;AACJ,eAAK,CAAL;AAAQ,mBAAO,CAAC;AAAE;AAAH,cAAeF,EAAE,CAAC5C,IAAH,EAAf,CAAP;;AACR,eAAK,CAAL;AACI,iBAAK8C,YAAL,GAAoB,KAAKC,IAAL,EAApB;AACA,mBAAO,CAAC;AAAE;AAAH,cAAc,KAAKD,YAAnB,CAAP;;AACJ,eAAK,CAAL;AAAQ,mBAAO,CAAC;AAAE;AAAH,cAAeF,EAAE,CAAC5C,IAAH,EAAf,CAAP;;AACR,eAAK,CAAL;AACI2C,YAAAA,KAAK,GAAGC,EAAE,CAAC5C,IAAH,EAAR;AACAkC,YAAAA,KAAK,CAACc,KAAN,CAAYC,IAAI,CAACC,SAAL,CAAeP,KAAf,CAAZ;AACA,kBAAMA,KAAN;;AACJ,eAAK,CAAL;AAAQ,mBAAO,CAAC;AAAE;AAAH,aAAP;AAjBZ;AAmBH,OApBiB,CAAlB;AAqBH,KAvBe,CAAhB;AAwBH,GAzBD;;AA0BAnB,EAAAA,wBAAwB,CAACuB,IAAzB,GAAgC,YAAY;AACxC,WAAOtE,SAAS,CAAC,IAAD,EAAO,KAAK,CAAZ,EAAe,KAAK,CAApB,EAAuB,YAAY;AAC/C,UAAImE,EAAJ,EAAQO,KAAR;;AACA,aAAOvD,WAAW,CAAC,IAAD,EAAO,UAAUwD,EAAV,EAAc;AACnC,gBAAQA,EAAE,CAACrD,KAAX;AACI,eAAK,CAAL;AACIqD,YAAAA,EAAE,CAAClD,IAAH,CAAQe,IAAR,CAAa,CAAC,CAAD,EAAI,CAAJ,GAAS,CAAT,CAAb;;AACA,iBAAK4B,QAAL,GAAgB,IAAIrB,wBAAJ,EAAhB;AACA,iBAAK6B,mBAAL,GAA2B,IAAI1B,qBAAqB,CAAC2B,mBAA1B,CAA8C3B,qBAAqB,CAAC4B,0BAApE,CAA3B;AACAX,YAAAA,EAAE,GAAG,IAAL;AACA,mBAAO,CAAC;AAAE;AAAH,cAAc,KAAKS,mBAAL,CAAyBG,aAAzB,EAAd,CAAP;;AACJ,eAAK,CAAL;AACIZ,YAAAA,EAAE,CAACa,iBAAH,GAAuBL,EAAE,CAACpD,IAAH,EAAvB;AACA,mBAAO,CAAC;AAAE;AAAH,cAAc,KAAK0D,cAAL,EAAd,CAAP;;AACJ,eAAK,CAAL;AACIN,YAAAA,EAAE,CAACpD,IAAH;;AACAkC,YAAAA,KAAK,CAACyB,IAAN,CAAW,mDAAX;AACA,mBAAO,CAAC;AAAE;AAAH,cAAe,KAAKd,QAApB,CAAP;;AACJ,eAAK,CAAL;AACIM,YAAAA,KAAK,GAAGC,EAAE,CAACpD,IAAH,EAAR;AACAkC,YAAAA,KAAK,CAACc,KAAN,CAAYC,IAAI,CAACC,SAAL,CAAeC,KAAf,CAAZ;AACA,kBAAMA,KAAN;;AACJ,eAAK,CAAL;AAAQ,mBAAO,CAAC;AAAE;AAAH,aAAP;AAlBZ;AAoBH,OArBiB,CAAlB;AAsBH,KAxBe,CAAhB;AAyBH,GA1BD;;AA2BA3B,EAAAA,wBAAwB,CAACoC,SAAzB,CAAmCC,SAAnC,GAA+C,YAAY;AACvD,WAAOrC,wBAAwB,CAACsC,WAAzB,CAAqCC,KAArC,CAA2C/C,MAA3C,GAAoD,CAApD,IAAyD,KAAKgD,wBAAL,EAAhE;AACH,GAFD;;AAGAxC,EAAAA,wBAAwB,CAACoC,SAAzB,CAAmCK,aAAnC,GAAmD,YAAY;AAC3D,WAAO,KAAKzB,kBAAL,CAAwB0B,KAAxB,KACD,KAAKF,wBAAL,EADC,GAEDxC,wBAAwB,CAACsC,WAAzB,CAAqCK,KAArC,CAA2CnD,MAA3C,GAAoD,CAApD,IAAyD,KAAKgD,wBAAL,EAF/D;AAGH,GAJD;;AAKAxC,EAAAA,wBAAwB,CAACoC,SAAzB,CAAmCQ,SAAnC,GAA+C,YAAY;AACvD,WAAO5C,wBAAwB,CAACiC,iBAAzB,CAA2CY,iBAAlD;AACH,GAFD;;AAGA7C,EAAAA,wBAAwB,CAACoC,SAAzB,CAAmCI,wBAAnC,GAA8D,YAAY;AACtE,WAAOxC,wBAAwB,CAACiC,iBAAzB,CAA2Ca,uBAAlD;AACH,GAFD;;AAGA9C,EAAAA,wBAAwB,CAAC+C,iBAAzB,GAA6C,YAAY;AACrD,QAAI3B,EAAJ;;AACAV,IAAAA,KAAK,CAACyB,IAAN,CAAW,mBAAX,EAAgC,KAAKG,WAArC;AACA,SAAKU,cAAL,GAAsB;AAClBT,MAAAA,KAAK,EAAE,KAAKD,WAAL,CAAiBC,KAAjB,IACAnB,EAAE,GAAG,EAAL,EAASA,EAAE,CAACd,gBAAgB,CAAC2C,WAAjB,CAA6BC,IAA9B,CAAF,GAAwC3C,MAAM,WAAN,CAAe,KAAK+B,WAAL,CAAiBC,KAAhC,CAAjD,EAAyFnB,EAAE,CAACd,gBAAgB,CAAC2C,WAAjB,CAA6BE,KAA9B,CAAF,GAAyC3C,OAAO,WAAP,CAAgB,KAAK8B,WAAL,CAAiBC,KAAjC,CAAlI,EAA2KnB,EAD3K,IACiL,IAFtK;AAGlBuB,MAAAA,KAAK,EAAEpC,MAAM,WAAN,CAAe,KAAK+B,WAAL,CAAiBK,KAAhC,KAA0C;AAH/B,KAAtB;AAKA,SAAKS,oBAAL,GAA4B,KAAKd,WAAL,CAAiBC,KAAjB,CAAuB/C,MAAvB,GAAgC,CAA5D;AACA,SAAK6D,mBAAL,GAA2B5C,KAAK,WAAL,CAAc,KAAKuC,cAAnB,EAAmC,WAAW1C,gBAAgB,CAAC2C,WAAjB,CAA6BC,IAAxC,GAA+C,WAAlF,KAAkG,EAA7H;AACA,SAAKI,oBAAL,GAA4B7C,KAAK,WAAL,CAAc,KAAKuC,cAAnB,EAAmC,WAAW1C,gBAAgB,CAAC2C,WAAjB,CAA6BE,KAAxC,GAAgD,WAAnF,KAAmG,EAA/H;AACH,GAXD;;AAYAnD,EAAAA,wBAAwB,CAACkC,cAAzB,GAA0C,YAAY;AAClD,WAAOjF,SAAS,CAAC,IAAD,EAAO,KAAK,CAAZ,EAAe,KAAK,CAApB,EAAuB,YAAY;AAC/C,UAAIsG,gBAAJ,EAAsBnC,EAAtB;;AACA,aAAOhD,WAAW,CAAC,IAAD,EAAO,UAAUwD,EAAV,EAAc;AACnC,gBAAQA,EAAE,CAACrD,KAAX;AACI,eAAK,CAAL;AACI,gBAAI,CAAC,KAAK0D,iBAAL,CAAuBY,iBAA5B,EAA+C,OAAO,CAAC;AAAE;AAAH,cAAc,CAAd,CAAP;AAC/C,mBAAO,CAAC;AAAE;AAAH,cAAcjC,qBAAqB,EAAnC,CAAP;;AACJ,eAAK,CAAL;AACIQ,YAAAA,EAAE,GAAGQ,EAAE,CAACpD,IAAH,EAAL;AACA,mBAAO,CAAC;AAAE;AAAH,cAAc,CAAd,CAAP;;AACJ,eAAK,CAAL;AACI4C,YAAAA,EAAE,GAAG,EAAL;AACAQ,YAAAA,EAAE,CAACrD,KAAH,GAAW,CAAX;;AACJ,eAAK,CAAL;AACIgF,YAAAA,gBAAgB,GAAGnC,EAAnB;AACA,iBAAKkB,WAAL,GAAmB;AACfC,cAAAA,KAAK,EAAEnC,QAAQ,WAAR,CAAiBmD,gBAAjB,EAAmC,UAAUC,MAAV,EAAkB;AAAE,uBAAOA,MAAM,CAACC,IAAP,CAAYC,WAAZ,OAA8B,YAArC;AAAoD,eAA3G,CADQ;AAEff,cAAAA,KAAK,EAAEvC,QAAQ,WAAR,CAAiBmD,gBAAjB,EAAmC,UAAUC,MAAV,EAAkB;AAAE,uBAAOA,MAAM,CAACC,IAAP,CAAYC,WAAZ,OAA8B,YAArC;AAAoD,eAA3G;AAFQ,aAAnB;AAIA,iBAAKX,iBAAL;AACA,mBAAO,CAAC;AAAE;AAAH,aAAP;AAjBR;AAmBH,OApBiB,CAAlB;AAqBH,KAvBe,CAAhB;AAwBH,GAzBD;;AA0BAlD,EAAAA,MAAM,CAACC,cAAP,CAAsBE,wBAAwB,CAACoC,SAA/C,EAA0D,qBAA1D,EAAiF;AAC7EuB,IAAAA,GAAG,EAAE,eAAY;AACb,aAAO3D,wBAAwB,CAACoD,oBAAhC;AACH,KAH4E;AAI7EQ,IAAAA,UAAU,EAAE,KAJiE;AAK7EC,IAAAA,YAAY,EAAE;AAL+D,GAAjF;AAOAhE,EAAAA,MAAM,CAACC,cAAP,CAAsBE,wBAAwB,CAACoC,SAA/C,EAA0D,oBAA1D,EAAgF;AAC5EuB,IAAAA,GAAG,EAAE,eAAY;AACb,aAAO3D,wBAAwB,CAACqD,mBAAhC;AACH,KAH2E;AAI5EO,IAAAA,UAAU,EAAE,KAJgE;AAK5EC,IAAAA,YAAY,EAAE;AAL8D,GAAhF;AAOAhE,EAAAA,MAAM,CAACC,cAAP,CAAsBE,wBAAwB,CAACoC,SAA/C,EAA0D,qBAA1D,EAAiF;AAC7EuB,IAAAA,GAAG,EAAE,eAAY;AACb,aAAO3D,wBAAwB,CAACsD,oBAAhC;AACH,KAH4E;AAI7EM,IAAAA,UAAU,EAAE,KAJiE;AAK7EC,IAAAA,YAAY,EAAE;AAL+D,GAAjF;AAOA7D,EAAAA,wBAAwB,CAACgD,cAAzB,GAA0C;AAAET,IAAAA,KAAK,EAAE,IAAT;AAAeI,IAAAA,KAAK,EAAE;AAAtB,GAA1C;AACA,SAAO3C,wBAAP;AACH,CApI6C,EAA9C;;AAqIAD,OAAO,CAACC,wBAAR,GAAmCA,wBAAnC","file":"MediaCapabilitiesService.js","sourcesContent":["\"use strict\";\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.MediaCapabilitiesService = void 0;\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar DetectWebRtcService_1 = require(\"./DetectWebRtcService\");\nvar filter_1 = __importDefault(require(\"lodash/filter\"));\nvar ts_environment_detect_1 = require(\"@techsee/techsee-common/lib/helpers/ts-environment-detect\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar last_1 = __importDefault(require(\"lodash/last\"));\nvar first_1 = __importDefault(require(\"lodash/first\"));\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar trace = MediaTracer_1.getMediaTracer('MediaCapabilitiesService');\nfunction enumerateMediaDevices() {\n return new Promise(function (resolve, reject) {\n if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n return navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n return resolve([]);\n });\n}\nvar MediaCapabilitiesService = /** @class */ (function () {\n function MediaCapabilitiesService() {\n this.environmentService = new ts_environment_detect_1.TsEnvironmentDetect();\n }\n MediaCapabilitiesService.getInstance = function () {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 5]);\n if (this.instance) {\n return [2 /*return*/, this.instance];\n }\n if (!this._initPromise) return [3 /*break*/, 2];\n return [4 /*yield*/, this._initPromise];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n this._initPromise = this.init();\n return [4 /*yield*/, this._initPromise];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n err_1 = _a.sent();\n trace.error(JSON.stringify(err_1));\n throw err_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n MediaCapabilitiesService.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, err_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n this.instance = new MediaCapabilitiesService();\n this.detectWebRtcService = new DetectWebRtcService_1.DetectWebRtcService(DetectWebRtcService_1.DETECT_RTC_ADVISED_TIMEOUT);\n _a = this;\n return [4 /*yield*/, this.detectWebRtcService.getWebRtcInfo()];\n case 1:\n _a.webRtcSupportInfo = _b.sent();\n return [4 /*yield*/, this.setDevicesList()];\n case 2:\n _b.sent();\n trace.info('initialize media capabilities helper successfully');\n return [2 /*return*/, this.instance];\n case 3:\n err_2 = _b.sent();\n trace.error(JSON.stringify(err_2));\n throw err_2;\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n MediaCapabilitiesService.prototype.hasCamera = function () {\n return MediaCapabilitiesService.devicesList.video.length > 0 && this.hasGetUserMediaSupported();\n };\n MediaCapabilitiesService.prototype.hasMicrophone = function () {\n return this.environmentService.isIOS()\n ? this.hasGetUserMediaSupported()\n : MediaCapabilitiesService.devicesList.audio.length > 0 && this.hasGetUserMediaSupported();\n };\n MediaCapabilitiesService.prototype.hasWebRTC = function () {\n return MediaCapabilitiesService.webRtcSupportInfo.isWebRTCSupported;\n };\n MediaCapabilitiesService.prototype.hasGetUserMediaSupported = function () {\n return MediaCapabilitiesService.webRtcSupportInfo.isGetUserMediaSupported;\n };\n MediaCapabilitiesService.setGroupedDevices = function () {\n var _a;\n trace.info('setGroupedDevices', this.devicesList);\n this.groupedDevices = {\n video: this.devicesList.video\n ? (_a = {}, _a[MediaConstants_1.CameraTypes.BACK] = last_1.default(this.devicesList.video), _a[MediaConstants_1.CameraTypes.FRONT] = first_1.default(this.devicesList.video), _a) : null,\n audio: last_1.default(this.devicesList.audio) || null\n };\n this._supportSwitchCamera = this.devicesList.video.length > 1;\n this._backCameraDeviceId = get_1.default(this.groupedDevices, \"video.\" + MediaConstants_1.CameraTypes.BACK + \".deviceId\") || '';\n this._frontCameraDeviceId = get_1.default(this.groupedDevices, \"video.\" + MediaConstants_1.CameraTypes.FRONT + \".deviceId\") || '';\n };\n MediaCapabilitiesService.setDevicesList = function () {\n return __awaiter(this, void 0, void 0, function () {\n var localDevicesList, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.webRtcSupportInfo.isWebRTCSupported) return [3 /*break*/, 2];\n return [4 /*yield*/, enumerateMediaDevices()];\n case 1:\n _a = _b.sent();\n return [3 /*break*/, 3];\n case 2:\n _a = [];\n _b.label = 3;\n case 3:\n localDevicesList = _a;\n this.devicesList = {\n video: filter_1.default(localDevicesList, function (device) { return device.kind.toLowerCase() === 'videoinput'; }),\n audio: filter_1.default(localDevicesList, function (device) { return device.kind.toLowerCase() === 'audioinput'; })\n };\n this.setGroupedDevices();\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(MediaCapabilitiesService.prototype, \"supportSwitchCamera\", {\n get: function () {\n return MediaCapabilitiesService._supportSwitchCamera;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MediaCapabilitiesService.prototype, \"backCameraDeviceId\", {\n get: function () {\n return MediaCapabilitiesService._backCameraDeviceId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MediaCapabilitiesService.prototype, \"frontCameraDeviceId\", {\n get: function () {\n return MediaCapabilitiesService._frontCameraDeviceId;\n },\n enumerable: false,\n configurable: true\n });\n MediaCapabilitiesService.groupedDevices = { video: null, audio: null };\n return MediaCapabilitiesService;\n}());\nexports.MediaCapabilitiesService = MediaCapabilitiesService;\n\n//# sourceMappingURL=MediaCapabilitiesService.js.map\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/MediaCapabilitiesUtils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,QAAO,OAIhC,CAAC;AAGF,eAAO,MAAM,WAAW,QAAa,QAAQ,OAAO,CAQnD,CAAC;AAEF,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQjE","file":"MediaCapabilitiesUtils.d.ts","sourcesContent":["import {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {getMediaTracer} from '../MediaUtils';\nimport {MediaCapabilitiesService} from './MediaCapabilitiesService';\n\nconst trace = getMediaTracer('MediaCapabilitiesUtils');\n\nexport const checkIsMobile = (): boolean => {\n const environmentService = new TsEnvironmentDetect();\n\n return environmentService.isMobile();\n};\n\n\nexport const checkWebRtc = async (): Promise<boolean> => {\n try {\n return (await MediaCapabilitiesService.getInstance()).hasWebRTC();\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n};\n\nexport async function checkVideoCapabilities(): Promise<boolean> {\n try {\n return (await MediaCapabilitiesService.getInstance()).hasCamera();\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n}\n\nexport async function checkAudioCapabilities(): Promise<boolean> {\n try {\n return (await MediaCapabilitiesService.getInstance()).hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n}\n\nexport async function checkSupportSwitchCamera(): Promise<boolean> {\n try {\n return (await MediaCapabilitiesService.getInstance()).supportSwitchCamera;\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n}\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/MediaCapabilitiesUtils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,QAAO,OAIhC,CAAC;AAEF,eAAO,MAAM,WAAW,QAAa,QAAQ,OAAO,CAQnD,CAAC;AAEF,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQjE","file":"MediaCapabilitiesUtils.d.ts","sourcesContent":["import {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {getMediaTracer} from '../MediaUtils';\nimport {MediaCapabilitiesService} from './MediaCapabilitiesService';\n\nconst trace = getMediaTracer('MediaCapabilitiesUtils');\n\nexport const checkIsMobile = (): boolean => {\n const environmentService = new TsEnvironmentDetect();\n\n return environmentService.isMobile();\n};\n\nexport const checkWebRtc = async (): Promise<boolean> => {\n try {\n return (await MediaCapabilitiesService.getInstance()).hasWebRTC();\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n};\n\nexport async function checkVideoCapabilities(): Promise<boolean> {\n try {\n return (await MediaCapabilitiesService.getInstance()).hasCamera();\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n}\n\nexport async function checkAudioCapabilities(): Promise<boolean> {\n try {\n return (await MediaCapabilitiesService.getInstance()).hasMicrophone();\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n}\n\nexport async function checkSupportSwitchCamera(): Promise<boolean> {\n try {\n return (await MediaCapabilitiesService.getInstance()).supportSwitchCamera;\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n\n return false;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/MultiPartyService.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,eAAO,MAAM,kBAAkB,uqLACyoL,CAAC;AAEzqL,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,oBAAY,kBAAkB;IAC1B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;IAC3C,yBAAyB,8BAA8B;IACvD,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;CAC9C;AAID,oBAAY,OAAO,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEJ,oBAAY,eAAe,GAAG;IAC1B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,kBAAkB,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;KAAE,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;CACrB,CAAA;AAED,aAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,eAAe,KAAK,IAAI,KAAK,IAAI,CAAC;AACzF,oBAAY,oBAAoB,GAAG;IAC/B,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,oBAAY,cAAc,GAAG;IACzB,UAAU,EAAE,oBAAoB,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,8BAAsB,iBAAkB,SAAQ,YAAY;IAY5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAXxD,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IACtC,QAAQ,CAAC,UAAU,IAAI,IAAI;IAC3B,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IACtE,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACzD,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IACjE,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;gBAE3B,QAAQ,EAAE,eAAe;CAG3D","file":"MultiPartyService.d.ts","sourcesContent":["import { EventEmitter } from 'events';\nimport { SessionClientRole } from '../MediaConstants';\nimport { SessionSettings } from './Contracts';\n\n// eslint-disable-next-line max-len\nexport const DEFAULT_AVATAR_URI =\n 'data:image/png;base64,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';\n\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 videoElementCreated = 'videoElementCreated',\n participantsNumberChanged = 'participantsNumberChanged',\n videoAudioStatus = 'videoAudioStatus',\n mediaDeviceAccessDenied = 'mediaDeviceAccessDenied',\n cameraSourceChanged = 'cameraSourceChanged'\n}\n\n// ToDo: SubscriberInfo and GetStatsCb will need to be abstracted. Right now they are OT specific.\n// As a quick temporary fix replace with local redefinition of OT types\nexport type OTError = {\n name: string;\n message: string;\n};\n\nexport type IncomingTrackStats = {\n bytesReceived: number;\n packetsLost: number;\n packetsReceived: number;\n };\n\nexport type SubscriberStats = {\n audio: IncomingTrackStats;\n video: IncomingTrackStats & { frameRate: number; };\n timestamp: number;\n}\n\ntype GetStatsCb = (callback: (error?: OTError, stats?: SubscriberStats) => void) => void;\nexport type MultipartySubscriber = {\n getImgData: () => string | null;\n getStats: GetStatsCb;\n};\n\nexport type SubscriberInfo = {\n subscriber: MultipartySubscriber;\n connectionId: string;\n clientRole: SessionClientRole | 'default';\n};\n\nexport abstract class MultiPartyService extends EventEmitter {\n abstract subscribers: Readonly<SubscriberInfo>[];\n abstract ownConnectionId: string;\n\n abstract connect(...args: any[]): void;\n abstract disconnect(): void;\n abstract reinitializeStreams(settings: SessionSettings): Promise<void>;\n abstract switchCamera(): Promise<void>;\n abstract publishAudio(shouldMute: boolean): Promise<void>;\n abstract publishVideo(shouldPublishVideo: boolean): Promise<void>;\n abstract takeSnapshot(connectionId: string): string | null;\n\n constructor(protected readonly settings: SessionSettings) {\n super();\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/MultiPartyService.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAG5C,eAAO,MAAM,kBAAkB,uqLACyoL,CAAC;AAEzqL,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,oBAAY,kBAAkB;IAC1B,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IACvC,mBAAmB,wBAAwB;IAC3C,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;IAC3C,yBAAyB,8BAA8B;IACvD,gBAAgB,qBAAqB;IACrC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;CAC9C;AAID,oBAAY,OAAO,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC1B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,kBAAkB,GAAG;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,aAAK,UAAU,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,eAAe,KAAK,IAAI,KAAK,IAAI,CAAC;AACzF,oBAAY,oBAAoB,GAAG;IAC/B,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,oBAAY,cAAc,GAAG;IACzB,UAAU,EAAE,oBAAoB,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,8BAAsB,iBAAkB,SAAQ,YAAY;IAmB5C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe;IAlBxD,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;IAEjD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAEtC,QAAQ,CAAC,UAAU,IAAI,IAAI;IAE3B,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtE,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzD,QAAQ,CAAC,YAAY,CAAC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjE,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;gBAE3B,QAAQ,EAAE,eAAe;CAG3D","file":"MultiPartyService.d.ts","sourcesContent":["import {EventEmitter} from 'events';\nimport {SessionClientRole} from '../MediaConstants';\nimport {SessionSettings} from './Contracts';\n\n// eslint-disable-next-line max-len\nexport const DEFAULT_AVATAR_URI =\n 'data:image/png;base64,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';\n\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 videoElementCreated = 'videoElementCreated',\n participantsNumberChanged = 'participantsNumberChanged',\n videoAudioStatus = 'videoAudioStatus',\n mediaDeviceAccessDenied = 'mediaDeviceAccessDenied',\n cameraSourceChanged = 'cameraSourceChanged'\n}\n\n// ToDo: SubscriberInfo and GetStatsCb will need to be abstracted. Right now they are OT specific.\n// As a quick temporary fix replace with local redefinition of OT types\nexport type OTError = {\n name: string;\n message: string;\n};\n\nexport type IncomingTrackStats = {\n bytesReceived: number;\n packetsLost: number;\n packetsReceived: number;\n};\n\nexport type SubscriberStats = {\n audio: IncomingTrackStats;\n video: IncomingTrackStats & {frameRate: number};\n timestamp: number;\n};\n\ntype GetStatsCb = (callback: (error?: OTError, stats?: SubscriberStats) => void) => void;\nexport type MultipartySubscriber = {\n getImgData: () => string | null;\n getStats: GetStatsCb;\n};\n\nexport type SubscriberInfo = {\n subscriber: MultipartySubscriber;\n connectionId: string;\n clientRole: SessionClientRole | 'default';\n};\n\nexport abstract class MultiPartyService extends EventEmitter {\n abstract subscribers: Readonly<SubscriberInfo>[];\n\n abstract ownConnectionId: string;\n\n abstract connect(...args: any[]): void;\n\n abstract disconnect(): void;\n\n abstract reinitializeStreams(settings: SessionSettings): Promise<void>;\n\n abstract switchCamera(): Promise<void>;\n\n abstract publishAudio(shouldMute: boolean): Promise<void>;\n\n abstract publishVideo(shouldPublishVideo: boolean): Promise<void>;\n\n abstract takeSnapshot(connectionId: string): string | null;\n\n constructor(protected readonly settings: SessionSettings) {\n super();\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/MultiPartyServiceFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAGtD,eAAO,MAAM,uBAAuB,aAAc,eAAe,8DAAkD,MAAM,KAAG,iBAM3H,CAAC","file":"MultiPartyServiceFactory.d.ts","sourcesContent":["import {MediaServiceType} from '../MediaConstants';\nimport {SessionSettings} from './Contracts';\nimport {MultiPartyService} from './MultiPartyService';\nimport {OpentokMultiPartyService} from './OpentokMultiPartyService';\n\nexport const createMultiPartyService = (settings: SessionSettings, getParticipantDomId: (connectionId?: string) => string): MultiPartyService => {\n if (settings.mediaServiceType === MediaServiceType.OPENTOK) {\n return new OpentokMultiPartyService(settings, getParticipantDomId);\n }\n\n throw new Error('NOT_SUPPORTED');\n};\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/MultiPartyServiceFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAGtD,eAAO,MAAM,uBAAuB,aACtB,eAAe,8DACuB,MAAM,KACvD,iBAMF,CAAC","file":"MultiPartyServiceFactory.d.ts","sourcesContent":["import {MediaServiceType} from '../MediaConstants';\nimport {SessionSettings} from './Contracts';\nimport {MultiPartyService} from './MultiPartyService';\nimport {OpentokMultiPartyService} from './OpentokMultiPartyService';\n\nexport const createMultiPartyService = (\n settings: SessionSettings,\n getParticipantDomId: (connectionId?: string) => string\n): MultiPartyService => {\n if (settings.mediaServiceType === MediaServiceType.OPENTOK) {\n return new OpentokMultiPartyService(settings, getParticipantDomId);\n }\n\n throw new Error('NOT_SUPPORTED');\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/MultiParty/OpentokMultiPartyService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO7E,OAAO,EAGH,iBAAiB,EACjB,cAAc,EAEjB,MAAM,qBAAqB,CAAC;AAc7B,qBAAa,wBAAyB,SAAQ,iBAAiB;IAQvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAPrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAmB;gBAGhC,QAAQ,EAAE,eAAe,EACR,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM;IAOxE,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,WAAW,IAAI,cAAc,EAAE,CAElC;IAEM,OAAO,gBAAiB,WAAW,KAAG,IAAI,CA2C/C;IAEK,UAAU,QAAO,IAAI,CAW1B;IAEK,YAAY,iBAAkB,MAAM,KAAG,MAAM,GAAG,IAAI,CAczD;IAEF,OAAO,CAAC,eAAe,CAmCrB;IAEK,YAAY,eAAsB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAmB9D;IAEK,YAAY,uBACK,OAAO,KAC5B,QAAQ,IAAI,CAAC,CAiBd;IAEK,YAAY,QAAa,QAAQ,IAAI,CAAC,CAuC3C;IAEF,OAAO,CAAC,aAAa;IAOrB,aAAa,aAAoB,eAAe,KAAG,QAAQ,IAAI,CAAC,CAmH9D;IAEF,mBAAmB,aAAoB,eAAe,KAAG,QAAQ,IAAI,CAAC,CAkBpE;IAEF,oBAAoB,kBAIjB,QAAQ,IAAI,CAAC,CAyCd;IAEF,4BAA4B,UAAW,GAAG,KAAG,IAAI,CAe/C;IAEF,sBAAsB,kBAKnB,IAAI,CAgBL;IAEF,wBAAwB,kBAIrB,IAAI,CAsBL;IAEF,0BAA0B,kBAKvB,IAAI,CAyBL;IAEF,kBAAkB,iCAAoB,IAAI,CAExC;IAEF,OAAO,CAAC,0BAA0B,CAIhC;IAEF,OAAO,CAAC,gBAAgB,CA2BtB;CACL","file":"OpentokMultiPartyService.d.ts","sourcesContent":["import { MultiPartyCameraTypes, SessionClientRole } from '../MediaConstants';\nimport { getMediaTracer } from '../MediaUtils';\nimport { BrandingSettings, Credentials, SessionSettings } from './Contracts';\nimport { MediaCapabilitiesService } from './MediaCapabilitiesService';\nimport {\n checkAudioCapabilities,\n checkIsMobile,\n checkVideoCapabilities\n} from './MediaCapabilitiesUtils';\nimport {\n DEFAULT_AVATAR_URI,\n MULTI_PARTY_EVENTS,\n MultiPartyService,\n SubscriberInfo,\n maxParticipantsNumber\n} from './MultiPartyService';\n\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\ntype OpentokSubscriberInfo = SubscriberInfo & {\n subscriber: OT.Subscriber;\n};\n\nexport class OpentokMultiPartyService extends MultiPartyService {\n private subscriberList: OpentokSubscriberInfo[] = [];\n private session?: OT.Session;\n private currentPublisher?: OT.Publisher;\n private branding?: BrandingSettings;\n\n constructor(\n settings: SessionSettings,\n private readonly getParticipantId: (connectionId?: string) => string\n ) {\n super(settings);\n\n this.branding = settings.branding;\n }\n\n get ownConnectionId(): string {\n return this.session?.connection?.connectionId || '';\n }\n\n get subscribers(): SubscriberInfo[] {\n return [...this.subscriberList];\n }\n\n public connect = (credentials: Credentials): void => {\n try {\n this.session = OT.initSession(\n credentials.apiKey,\n credentials.sessionId\n );\n\n this.session.on('connectionCreated', this.connectionCreatedHandler);\n this.session.on(\n 'connectionDestroyed',\n this.connectionDestroyedHandler\n );\n this.session.on('streamCreated', this.streamCreatedHandler);\n this.session.on('streamDestroyed', this.streamDestroyedHandler);\n this.session.on(\n 'streamPropertyChanged',\n this.streamPropertyChangedHandler\n );\n this.session.on(\n 'sessionDisconnected',\n this.sessionDisconnectedHandler\n );\n\n this.session.connect(credentials.token, (error?: any) => {\n if (error) {\n this.session?.off();\n this.session = undefined;\n this.traceErrorCallback(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {\n meta: { err: JSON.stringify(error) }\n });\n\n return;\n }\n\n this.createPublisher(this.settings);\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {\n meta: { err: JSON.stringify(err) }\n });\n }\n };\n\n public disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n public takeSnapshot = (connectionId: string): string | null => {\n if (!connectionId) {\n return null;\n }\n\n if (connectionId === this.ownConnectionId) {\n return this.currentPublisher?.getImgData() || null;\n }\n\n return (\n this.subscribers\n .find((s) => s.connectionId === connectionId)\n ?.subscriber.getImgData() || null\n );\n };\n\n private createPublisher = async (\n settings: Readonly<SessionSettings>\n ): Promise<void> => {\n const canStartWithAudio = await checkAudioCapabilities();\n const canStartWithVideo = await checkVideoCapabilities();\n\n if (!canStartWithAudio && !canStartWithVideo) {\n // FIXME: use emitter\n trace.error(\n 'Did not create publisher due to lack of media capabilities.'\n );\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.initPublisher({\n ...settings,\n cameraEnabled: settings.cameraEnabled && canStartWithVideo,\n startWithAudioMuted:\n settings.startWithAudioMuted && canStartWithAudio\n });\n\n if (!this.currentPublisher) {\n throw new Error(\n 'Creating session requires initialized publisher'\n );\n }\n\n this.currentPublisher &&\n this.session?.publish(\n this.currentPublisher,\n this.traceErrorCallback\n );\n }\n };\n\n public publishAudio = async (shouldMute: boolean): Promise<void> => {\n const canPublishAudio = await checkAudioCapabilities();\n\n // why do we care about audio if 'shouldMute' is true?\n if (shouldMute && !canPublishAudio) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher({\n ...this.settings,\n // so if 'shouldMute' is true then we DON't mute?\n startWithAudioMuted: !shouldMute\n });\n } else {\n this.currentPublisher.publishAudio(shouldMute);\n }\n };\n\n public publishVideo = async (\n shouldPublishVideo: boolean\n ): Promise<void> => {\n const canPublishVideo = await checkVideoCapabilities();\n\n if (shouldPublishVideo && !canPublishVideo) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher({\n ...this.settings,\n cameraEnabled: shouldPublishVideo\n });\n } else {\n this.currentPublisher.publishVideo(shouldPublishVideo);\n }\n };\n\n public switchCamera = async (): Promise<void> => {\n try {\n const mediaCapabilitiesService = await MediaCapabilitiesService.getInstance();\n\n if (!mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n let deviceId = '';\n let cameraType: MultiPartyCameraTypes;\n\n switch (this.settings.selectedCamera) {\n case MultiPartyCameraTypes.BACK:\n cameraType = MultiPartyCameraTypes.FRONT;\n deviceId = mediaCapabilitiesService.frontCameraDeviceId;\n break;\n case MultiPartyCameraTypes.FRONT:\n cameraType = MultiPartyCameraTypes.BACK;\n deviceId = mediaCapabilitiesService.backCameraDeviceId;\n break;\n default:\n throw new Error(\n `cameraType not valid: ${this.settings.selectedCamera}`\n );\n }\n\n return this.currentPublisher?.setVideoSource(deviceId).then(() => {\n this.settings.selectedCamera = cameraType;\n this.emit(MULTI_PARTY_EVENTS.cameraSourceChanged, {\n cameraSource: cameraType\n });\n trace.info(\n `Success to switch camera to cameraType: ${cameraType}`\n );\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n private getClientRole(connection?: any): SessionClientRole {\n return (\n (connection?.data && JSON.parse(connection.data).clientRole) ||\n SessionClientRole.USER\n );\n }\n\n initPublisher = async (settings: SessionSettings): Promise<void> => {\n try {\n const { selectedCamera } = settings;\n const isMobile = checkIsMobile();\n\n const mediaCapabilitiesService = await MediaCapabilitiesService.getInstance();\n const {\n frontCameraDeviceId,\n backCameraDeviceId\n } = mediaCapabilitiesService;\n\n const videoSourceId =\n (selectedCamera === MultiPartyCameraTypes.FRONT\n ? frontCameraDeviceId\n : backCameraDeviceId) || undefined;\n\n const mobileCameraType =\n settings.selectedCamera === MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT;\n\n this.currentPublisher = OT.initPublisher(\n this.getParticipantId(this.session?.connection?.connectionId || ''),\n {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off',\n archiveStatusDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n backgroundImageURI:\n this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI\n },\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.cameraEnabled,\n videoSource: !isMobile ? videoSourceId : undefined,\n facingMode:\n (isMobile || !videoSourceId) ? mobileCameraType : undefined\n },\n this.traceErrorCallback\n );\n if (!this.currentPublisher) {\n trace.error('failed to init publisher');\n } else {\n this.currentPublisher.on(\n 'videoElementCreated',\n (event: any) => {\n trace.info('videoElementCreated', event);\n\n this.emit(\n MULTI_PARTY_EVENTS.videoElementCreated,\n event\n );\n }\n );\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {\n event: event,\n participantId: this.getParticipantId(\n event?.stream?.connection.connectionId\n )\n });\n });\n this.currentPublisher.on('accessDenied', (event: any) => {\n trace.info('Publisher denied media permissions', event);\n\n const connection = this.session?.connection;\n const connectionId = connection?.connectionId;\n const participantId = this.getParticipantId(connectionId);\n const isOwnConnection =\n this.ownConnectionId === connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.mediaDeviceAccessDenied, {\n connectionId,\n isOwnConnection,\n participantId\n });\n });\n this.currentPublisher.on(\n 'streamCreated',\n async (event: any) => {\n await MediaCapabilitiesService.setDevicesList();\n\n const participantId = this.getParticipantId(\n event?.stream?.connection.connectionId\n );\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated, {\n event: event,\n participantId: participantId,\n startWithAudioMuted: this.settings\n .startWithAudioMuted,\n hasAudio: event?.stream?.hasAudio,\n hasVideo: event?.stream?.hasVideo,\n isOwnConnection:\n this.ownConnectionId ===\n event?.stream?.connection?.connectionId\n });\n\n trace.info('publisher stream created', {\n event,\n hasAudio: this.currentPublisher?.stream?.hasAudio,\n participantId\n });\n }\n );\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n reinitializeStreams = async (settings: SessionSettings): Promise<void> => {\n if (this.currentPublisher) {\n this.currentPublisher.destroy();\n this.currentPublisher = undefined;\n }\n await this.createPublisher(settings);\n\n this.subscriberList = this.subscriberList.map((s) => {\n const { connectionId, subscriber } = s;\n const { stream } = subscriber;\n\n this.session?.unsubscribe(subscriber);\n\n return {\n ...s,\n subscriber: this.createSubscriber(stream, connectionId)\n };\n });\n };\n\n streamCreatedHandler = async (\n event: any & {\n stream: any;\n }\n ): Promise<void> => {\n trace.info('streamCreatedHandler', event.stream);\n\n const { stream } = event;\n const { connection } = stream;\n const { connectionId } = connection;\n const participantId = this.getParticipantId(connectionId);\n\n await MediaCapabilitiesService.setDevicesList();\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated, {\n event: event,\n participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n isOwnConnection: this.ownConnectionId === connectionId,\n hasVideo: event?.stream?.hasVideo,\n hasAudio: event?.stream?.hasAudio\n });\n\n if (\n !this.ownConnectionId ||\n !stream ||\n connectionId === this.ownConnectionId\n ) {\n return;\n }\n\n if (this.subscriberList.length >= maxParticipantsNumber - 1) {\n trace.info(\n `a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`\n );\n\n return;\n }\n const subscriber = this.createSubscriber(stream, connectionId);\n\n this.subscriberList.push({\n subscriber,\n connectionId,\n clientRole: this.getClientRole(connection)\n });\n };\n\n streamPropertyChangedHandler = (event: any): void => {\n trace.info('streamPropertyChangedHandler', event);\n\n const { stream } = event;\n\n this.emit(MULTI_PARTY_EVENTS.videoAudioStatus, {\n hasVideo: stream?.hasVideo,\n hasAudio: stream?.hasAudio,\n participantId: this.getParticipantId(\n stream?.connection.connectionId\n ),\n isOwnConnection:\n this.ownConnectionId === stream?.connection?.connectionId,\n stream\n });\n };\n\n streamDestroyedHandler = (\n event: any & {\n stream: any;\n reason: string;\n }\n ): void => {\n trace.info('streamDestroyedHandler', event);\n\n const { stream } = event;\n const destroyedConnectionId =\n stream && stream.connection && stream.connection.connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {\n event: event,\n participantId: this.getParticipantId(\n event?.stream?.connection.connectionId\n )\n });\n this.subscriberList = this.subscriberList.filter(\n (subscriber) => subscriber.connectionId !== destroyedConnectionId\n );\n };\n\n connectionCreatedHandler = (\n event: any & {\n connection: any;\n }\n ): void => {\n trace.info('connectionCreatedHandler', event);\n\n const { connection } = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n this.emit(\n MULTI_PARTY_EVENTS.participantsNumberChanged,\n this.subscriberList.length\n );\n\n const clientRole = this.getClientRole(connection);\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {\n clientRole,\n event,\n participantId: this.getParticipantId(connection.connectionId),\n isOwnConnection: this.ownConnectionId === connection.connectionId\n });\n };\n\n connectionDestroyedHandler = (\n event: any & {\n connection: any;\n reason: string;\n }\n ): void => {\n const { connection } = event;\n const clientRole = this.getClientRole(connection);\n\n trace.info('connectionDestroyedHandler', event);\n\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {\n clientRole,\n event,\n participantId: this.getParticipantId(event?.connection.connectionId)\n });\n\n if (\n !this.ownConnectionId ||\n !connection ||\n connection.connectionId !== this.ownConnectionId\n ) {\n return;\n }\n\n this.emit(\n MULTI_PARTY_EVENTS.participantsNumberChanged,\n this.subscriberList.length\n );\n this.session = undefined;\n };\n\n traceErrorCallback = (error?: Error): void => {\n trace.error(JSON.stringify(error));\n };\n\n private sessionDisconnectedHandler = (event: any) => {\n trace.info('sessionDisconnectedHandler', event);\n // ToDo: Below line makes no sense (according to the OT types). This is not how OT signals work.\n // this?.session?.signal({ retryAfterReconnect: true });\n };\n\n private createSubscriber = (stream: any, connectionId: string): OT.Subscriber => {\n // ToDo: OT session can be undefined. This needs to be fixed.\n const subscriber = this.session!.subscribe(\n stream,\n this.getParticipantId(connectionId),\n {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n videoDisabledDisplayMode: 'off',\n backgroundImageURI:\n this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI\n }\n },\n (err: any) => {\n this.traceErrorCallback(err);\n subscriber?.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n }\n );\n\n return subscriber;\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/MultiParty/OpentokMultiPartyService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,WAAW,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;AAG3E,OAAO,EAGH,iBAAiB,EACjB,cAAc,EAEjB,MAAM,qBAAqB,CAAC;AAc7B,qBAAa,wBAAyB,SAAQ,iBAAiB;IASpB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IARxE,OAAO,CAAC,cAAc,CAA+B;IAErD,OAAO,CAAC,OAAO,CAAC,CAAa;IAE7B,OAAO,CAAC,gBAAgB,CAAC,CAAe;IAExC,OAAO,CAAC,QAAQ,CAAC,CAAmB;gBAExB,QAAQ,EAAE,eAAe,EAAmB,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM;IAM3G,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,WAAW,IAAI,cAAc,EAAE,CAElC;IAEM,OAAO,gBAAiB,WAAW,KAAG,IAAI,CA+B/C;IAEK,UAAU,QAAO,IAAI,CAW1B;IAEK,YAAY,iBAAkB,MAAM,KAAG,MAAM,GAAG,IAAI,CAUzD;IAEF,OAAO,CAAC,eAAe,CAwBrB;IAEK,YAAY,eAAsB,OAAO,KAAG,QAAQ,IAAI,CAAC,CAmB9D;IAEK,YAAY,uBAA8B,OAAO,KAAG,QAAQ,IAAI,CAAC,CAiBtE;IAEK,YAAY,QAAa,QAAQ,IAAI,CAAC,CAmC3C;IAEF,OAAO,CAAC,aAAa;IAIrB,aAAa,aAAoB,eAAe,KAAG,QAAQ,IAAI,CAAC,CA4F9D;IAEF,mBAAmB,aAAoB,eAAe,KAAG,QAAQ,IAAI,CAAC,CAkBpE;IAEF,oBAAoB,kBAIjB,QAAQ,IAAI,CAAC,CAkCd;IAEF,4BAA4B,UAAW,GAAG,KAAG,IAAI,CAY/C;IAEF,sBAAsB,kBAKnB,IAAI,CAcL;IAEF,wBAAwB,kBAIrB,IAAI,CAmBL;IAEF,0BAA0B,kBAKvB,IAAI,CAmBL;IAEF,kBAAkB,iCAAoB,IAAI,CAExC;IAEF,OAAO,CAAC,0BAA0B,CAIhC;IAEF,OAAO,CAAC,gBAAgB,CA0BtB;CACL","file":"OpentokMultiPartyService.d.ts","sourcesContent":["import {MultiPartyCameraTypes, SessionClientRole} from '../MediaConstants';\nimport {getMediaTracer} from '../MediaUtils';\nimport {BrandingSettings, Credentials, SessionSettings} from './Contracts';\nimport {MediaCapabilitiesService} from './MediaCapabilitiesService';\nimport {checkAudioCapabilities, checkIsMobile, checkVideoCapabilities} from './MediaCapabilitiesUtils';\nimport {\n DEFAULT_AVATAR_URI,\n MULTI_PARTY_EVENTS,\n MultiPartyService,\n SubscriberInfo,\n maxParticipantsNumber\n} from './MultiPartyService';\n\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\ntype OpentokSubscriberInfo = SubscriberInfo & {\n subscriber: OT.Subscriber;\n};\n\nexport class OpentokMultiPartyService extends MultiPartyService {\n private subscriberList: OpentokSubscriberInfo[] = [];\n\n private session?: OT.Session;\n\n private currentPublisher?: OT.Publisher;\n\n private branding?: BrandingSettings;\n\n constructor(settings: SessionSettings, private readonly getParticipantId: (connectionId?: string) => string) {\n super(settings);\n\n this.branding = settings.branding;\n }\n\n get ownConnectionId(): string {\n return this.session?.connection?.connectionId || '';\n }\n\n get subscribers(): SubscriberInfo[] {\n return [...this.subscriberList];\n }\n\n public connect = (credentials: Credentials): void => {\n try {\n this.session = OT.initSession(credentials.apiKey, credentials.sessionId);\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.on('streamPropertyChanged', this.streamPropertyChangedHandler);\n this.session.on('sessionDisconnected', this.sessionDisconnectedHandler);\n\n this.session.connect(credentials.token, (error?: any) => {\n if (error) {\n this.session?.off();\n this.session = undefined;\n this.traceErrorCallback(error);\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {\n meta: {err: JSON.stringify(error)}\n });\n\n return;\n }\n\n this.createPublisher(this.settings);\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n this.emit(MULTI_PARTY_EVENTS.connectFailed, {\n meta: {err: JSON.stringify(err)}\n });\n }\n };\n\n public disconnect = (): void => {\n try {\n trace.info('Disconnecting from session');\n\n if (this.session) {\n this.session.disconnect();\n trace.info('Disconnection from session completed');\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n }\n };\n\n public takeSnapshot = (connectionId: string): string | null => {\n if (!connectionId) {\n return null;\n }\n\n if (connectionId === this.ownConnectionId) {\n return this.currentPublisher?.getImgData() || null;\n }\n\n return this.subscribers.find((s) => s.connectionId === connectionId)?.subscriber.getImgData() || null;\n };\n\n private createPublisher = async (settings: Readonly<SessionSettings>): Promise<void> => {\n const canStartWithAudio = await checkAudioCapabilities();\n const canStartWithVideo = await checkVideoCapabilities();\n\n if (!canStartWithAudio && !canStartWithVideo) {\n // FIXME: use emitter\n trace.error('Did not create publisher due to lack of media capabilities.');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.initPublisher({\n ...settings,\n cameraEnabled: settings.cameraEnabled && canStartWithVideo,\n startWithAudioMuted: settings.startWithAudioMuted && canStartWithAudio\n });\n\n if (!this.currentPublisher) {\n throw new Error('Creating session requires initialized publisher');\n }\n\n this.currentPublisher && this.session?.publish(this.currentPublisher, this.traceErrorCallback);\n }\n };\n\n public publishAudio = async (shouldMute: boolean): Promise<void> => {\n const canPublishAudio = await checkAudioCapabilities();\n\n // why do we care about audio if 'shouldMute' is true?\n if (shouldMute && !canPublishAudio) {\n trace.error('could not publish audio');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher({\n ...this.settings,\n // so if 'shouldMute' is true then we DON't mute?\n startWithAudioMuted: !shouldMute\n });\n } else {\n this.currentPublisher.publishAudio(shouldMute);\n }\n };\n\n public publishVideo = async (shouldPublishVideo: boolean): Promise<void> => {\n const canPublishVideo = await checkVideoCapabilities();\n\n if (shouldPublishVideo && !canPublishVideo) {\n trace.error('could not publish video');\n\n return;\n }\n\n if (!this.currentPublisher) {\n await this.createPublisher({\n ...this.settings,\n cameraEnabled: shouldPublishVideo\n });\n } else {\n this.currentPublisher.publishVideo(shouldPublishVideo);\n }\n };\n\n public switchCamera = async (): Promise<void> => {\n try {\n const mediaCapabilitiesService = await MediaCapabilitiesService.getInstance();\n\n if (!mediaCapabilitiesService.supportSwitchCamera) {\n throw new Error('Not Support switch camera');\n }\n\n let deviceId = '';\n let cameraType: MultiPartyCameraTypes;\n\n switch (this.settings.selectedCamera) {\n case MultiPartyCameraTypes.BACK:\n cameraType = MultiPartyCameraTypes.FRONT;\n deviceId = mediaCapabilitiesService.frontCameraDeviceId;\n break;\n case MultiPartyCameraTypes.FRONT:\n cameraType = MultiPartyCameraTypes.BACK;\n deviceId = mediaCapabilitiesService.backCameraDeviceId;\n break;\n default:\n throw new Error(`cameraType not valid: ${this.settings.selectedCamera}`);\n }\n\n return await this.currentPublisher?.setVideoSource(deviceId).then(() => {\n this.settings.selectedCamera = cameraType;\n this.emit(MULTI_PARTY_EVENTS.cameraSourceChanged, {\n cameraSource: cameraType\n });\n trace.info(`Success to switch camera to cameraType: ${cameraType}`);\n });\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n private getClientRole(connection?: any): SessionClientRole {\n return (connection?.data && JSON.parse(connection.data).clientRole) || SessionClientRole.USER;\n }\n\n initPublisher = async (settings: SessionSettings): Promise<void> => {\n try {\n const {selectedCamera} = settings;\n const isMobile = checkIsMobile();\n\n const mediaCapabilitiesService = await MediaCapabilitiesService.getInstance();\n const {frontCameraDeviceId, backCameraDeviceId} = mediaCapabilitiesService;\n\n const videoSourceId =\n (selectedCamera === MultiPartyCameraTypes.FRONT ? frontCameraDeviceId : backCameraDeviceId) ||\n undefined;\n\n const mobileCameraType =\n settings.selectedCamera === MultiPartyCameraTypes.FRONT\n ? OpentokFacingMode.USER\n : OpentokFacingMode.ENVIRONMENT;\n\n this.currentPublisher = OT.initPublisher(\n this.getParticipantId(this.session?.connection?.connectionId || ''),\n {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off',\n archiveStatusDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n backgroundImageURI: this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI\n },\n publishAudio: !settings.startWithAudioMuted,\n publishVideo: settings.cameraEnabled,\n videoSource: !isMobile ? videoSourceId : undefined,\n facingMode: isMobile || !videoSourceId ? mobileCameraType : undefined\n },\n this.traceErrorCallback\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.emit(MULTI_PARTY_EVENTS.videoElementCreated, event);\n });\n this.currentPublisher.on('streamDestroyed', (event: any) => {\n trace.info('Publisher stream destroyed', event);\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {\n event: event,\n participantId: this.getParticipantId(event?.stream?.connection.connectionId)\n });\n });\n this.currentPublisher.on('accessDenied', (event: any) => {\n trace.info('Publisher denied media permissions', event);\n\n const connection = this.session?.connection;\n const connectionId = connection?.connectionId;\n const participantId = this.getParticipantId(connectionId);\n const isOwnConnection = this.ownConnectionId === connectionId;\n\n this.emit(MULTI_PARTY_EVENTS.mediaDeviceAccessDenied, {\n connectionId,\n isOwnConnection,\n participantId\n });\n });\n this.currentPublisher.on('streamCreated', async (event: any) => {\n await MediaCapabilitiesService.setDevicesList();\n\n const participantId = this.getParticipantId(event?.stream?.connection.connectionId);\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated, {\n event: event,\n participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n hasAudio: event?.stream?.hasAudio,\n hasVideo: event?.stream?.hasVideo,\n isOwnConnection: this.ownConnectionId === event?.stream?.connection?.connectionId\n });\n\n trace.info('publisher stream created', {\n event,\n hasAudio: this.currentPublisher?.stream?.hasAudio,\n participantId\n });\n });\n }\n } catch (err) {\n trace.error(JSON.stringify(err));\n throw err;\n }\n };\n\n reinitializeStreams = async (settings: SessionSettings): Promise<void> => {\n if (this.currentPublisher) {\n this.currentPublisher.destroy();\n this.currentPublisher = undefined;\n }\n await this.createPublisher(settings);\n\n this.subscriberList = this.subscriberList.map((s) => {\n const {connectionId, subscriber} = s;\n const {stream} = subscriber;\n\n this.session?.unsubscribe(subscriber);\n\n return {\n ...s,\n subscriber: this.createSubscriber(stream, connectionId)\n };\n });\n };\n\n streamCreatedHandler = async (\n event: any & {\n stream: any;\n }\n ): Promise<void> => {\n trace.info('streamCreatedHandler', event.stream);\n\n const {stream} = event;\n const {connection} = stream;\n const {connectionId} = connection;\n const participantId = this.getParticipantId(connectionId);\n\n await MediaCapabilitiesService.setDevicesList();\n\n if (this.ownConnectionId && stream && connectionId !== this.ownConnectionId) {\n if (this.subscriberList.length < maxParticipantsNumber - 1) {\n const subscriber = this.createSubscriber(stream, connectionId);\n\n this.subscriberList.push({\n subscriber,\n connectionId,\n clientRole: this.getClientRole(connection)\n });\n } else {\n trace.info(\n `a new subscriber cannot be added, as the number of participants reached its limit: ${maxParticipantsNumber}`\n );\n }\n }\n\n this.emit(MULTI_PARTY_EVENTS.streamCreated, {\n event: event,\n participantId: participantId,\n startWithAudioMuted: this.settings.startWithAudioMuted,\n isOwnConnection: this.ownConnectionId === connectionId,\n hasVideo: event?.stream?.hasVideo,\n hasAudio: event?.stream?.hasAudio\n });\n };\n\n streamPropertyChangedHandler = (event: any): void => {\n trace.info('streamPropertyChangedHandler', event);\n\n const {stream} = event;\n\n this.emit(MULTI_PARTY_EVENTS.videoAudioStatus, {\n hasVideo: stream?.hasVideo,\n hasAudio: stream?.hasAudio,\n participantId: this.getParticipantId(stream?.connection.connectionId),\n isOwnConnection: this.ownConnectionId === stream?.connection?.connectionId,\n stream\n });\n };\n\n streamDestroyedHandler = (\n event: any & {\n stream: any;\n reason: string;\n }\n ): void => {\n trace.info('streamDestroyedHandler', event);\n\n const {stream} = event;\n const destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;\n\n this.subscriberList = this.subscriberList.filter(\n (subscriber) => subscriber.connectionId !== destroyedConnectionId\n );\n\n this.emit(MULTI_PARTY_EVENTS.streamDestroyed, {\n event: event,\n participantId: this.getParticipantId(event?.stream?.connection.connectionId)\n });\n };\n\n connectionCreatedHandler = (\n event: any & {\n connection: any;\n }\n ): void => {\n trace.info('connectionCreatedHandler', event);\n\n const {connection} = event;\n\n if (!this.ownConnectionId || !connection) {\n return;\n }\n\n this.emit(MULTI_PARTY_EVENTS.participantsNumberChanged, this.subscriberList.length);\n\n const clientRole = this.getClientRole(connection);\n\n this.emit(MULTI_PARTY_EVENTS.connectionCreated, {\n clientRole,\n event,\n participantId: this.getParticipantId(connection.connectionId),\n isOwnConnection: this.ownConnectionId === connection.connectionId\n });\n };\n\n connectionDestroyedHandler = (\n event: any & {\n connection: any;\n reason: string;\n }\n ): void => {\n const {connection} = event;\n const clientRole = this.getClientRole(connection);\n\n trace.info('connectionDestroyedHandler', event);\n\n this.emit(MULTI_PARTY_EVENTS.connectionDestroyed, {\n clientRole,\n event,\n participantId: this.getParticipantId(event?.connection.connectionId),\n isOwnConnection: this.ownConnectionId === connection.connectionId\n });\n\n if (!this.ownConnectionId || !connection || connection.connectionId !== this.ownConnectionId) {\n return;\n }\n\n this.emit(MULTI_PARTY_EVENTS.participantsNumberChanged, this.subscriberList.length);\n this.session = undefined;\n };\n\n traceErrorCallback = (error?: Error): void => {\n trace.error(JSON.stringify(error));\n };\n\n private sessionDisconnectedHandler = (event: any) => {\n trace.info('sessionDisconnectedHandler', event);\n // ToDo: Below line makes no sense (according to the OT types). This is not how OT signals work.\n // this?.session?.signal({ retryAfterReconnect: true });\n };\n\n private createSubscriber = (stream: any, connectionId: string): OT.Subscriber => {\n // ToDo: OT session can be undefined. This needs to be fixed.\n const subscriber = this.session!.subscribe(\n stream,\n this.getParticipantId(connectionId),\n {\n insertMode: 'append',\n fitMode: 'cover',\n width: '100%',\n height: '100%',\n style: {\n buttonDisplayMode: 'off',\n audioLevelDisplayMode: 'off',\n videoDisabledDisplayMode: 'off',\n backgroundImageURI: this.branding?.backgroundImageURI || DEFAULT_AVATAR_URI\n }\n },\n (err: any) => {\n this.traceErrorCallback(err);\n subscriber?.on('videoElementCreated', (event: any) => {\n trace.info('videoElementCreated', event);\n });\n }\n );\n\n return subscriber;\n };\n}\n"]}
@@ -480,7 +480,7 @@ function (_super) {
480
480
  return __generator(this, function (_b) {
481
481
  switch (_b.label) {
482
482
  case 0:
483
- _b.trys.push([0, 2,, 3]);
483
+ _b.trys.push([0, 3,, 4]);
484
484
 
485
485
  return [4
486
486
  /*yield*/
@@ -510,8 +510,8 @@ function (_super) {
510
510
  throw new Error("cameraType not valid: " + this.settings.selectedCamera);
511
511
  }
512
512
 
513
- return [2
514
- /*return*/
513
+ return [4
514
+ /*yield*/
515
515
  , (_a = this.currentPublisher) === null || _a === void 0 ? void 0 : _a.setVideoSource(deviceId).then(function () {
516
516
  _this.settings.selectedCamera = cameraType_1;
517
517
 
@@ -523,11 +523,16 @@ function (_super) {
523
523
  })];
524
524
 
525
525
  case 2:
526
+ return [2
527
+ /*return*/
528
+ , _b.sent()];
529
+
530
+ case 3:
526
531
  err_1 = _b.sent();
527
532
  trace.error(JSON.stringify(err_1));
528
533
  throw err_1;
529
534
 
530
- case 3:
535
+ case 4:
531
536
  return [2
532
537
  /*return*/
533
538
  ];
@@ -728,6 +733,19 @@ function (_super) {
728
733
  case 1:
729
734
  _c.sent();
730
735
 
736
+ if (this.ownConnectionId && stream && connectionId !== this.ownConnectionId) {
737
+ if (this.subscriberList.length < MultiPartyService_1.maxParticipantsNumber - 1) {
738
+ subscriber = this.createSubscriber(stream, connectionId);
739
+ this.subscriberList.push({
740
+ subscriber: subscriber,
741
+ connectionId: connectionId,
742
+ clientRole: this.getClientRole(connection)
743
+ });
744
+ } else {
745
+ trace.info("a new subscriber cannot be added, as the number of participants reached its limit: " + MultiPartyService_1.maxParticipantsNumber);
746
+ }
747
+ }
748
+
731
749
  this.emit(MultiPartyService_1.MULTI_PARTY_EVENTS.streamCreated, {
732
750
  event: event,
733
751
  participantId: participantId,
@@ -736,26 +754,6 @@ function (_super) {
736
754
  hasVideo: (_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.hasVideo,
737
755
  hasAudio: (_b = event === null || event === void 0 ? void 0 : event.stream) === null || _b === void 0 ? void 0 : _b.hasAudio
738
756
  });
739
-
740
- if (!this.ownConnectionId || !stream || connectionId === this.ownConnectionId) {
741
- return [2
742
- /*return*/
743
- ];
744
- }
745
-
746
- if (this.subscriberList.length >= MultiPartyService_1.maxParticipantsNumber - 1) {
747
- trace.info("a new subscriber cannot be added, as the number of participants reached its limit: " + MultiPartyService_1.maxParticipantsNumber);
748
- return [2
749
- /*return*/
750
- ];
751
- }
752
-
753
- subscriber = this.createSubscriber(stream, connectionId);
754
- this.subscriberList.push({
755
- subscriber: subscriber,
756
- connectionId: connectionId,
757
- clientRole: this.getClientRole(connection)
758
- });
759
757
  return [2
760
758
  /*return*/
761
759
  ];
@@ -785,15 +783,14 @@ function (_super) {
785
783
  trace.info('streamDestroyedHandler', event);
786
784
  var stream = event.stream;
787
785
  var destroyedConnectionId = stream && stream.connection && stream.connection.connectionId;
786
+ _this.subscriberList = _this.subscriberList.filter(function (subscriber) {
787
+ return subscriber.connectionId !== destroyedConnectionId;
788
+ });
788
789
 
789
790
  _this.emit(MultiPartyService_1.MULTI_PARTY_EVENTS.streamDestroyed, {
790
791
  event: event,
791
792
  participantId: _this.getParticipantId((_a = event === null || event === void 0 ? void 0 : event.stream) === null || _a === void 0 ? void 0 : _a.connection.connectionId)
792
793
  });
793
-
794
- _this.subscriberList = _this.subscriberList.filter(function (subscriber) {
795
- return subscriber.connectionId !== destroyedConnectionId;
796
- });
797
794
  };
798
795
 
799
796
  _this.connectionCreatedHandler = function (event) {
@@ -826,7 +823,8 @@ function (_super) {
826
823
  _this.emit(MultiPartyService_1.MULTI_PARTY_EVENTS.connectionDestroyed, {
827
824
  clientRole: clientRole,
828
825
  event: event,
829
- participantId: _this.getParticipantId(event === null || event === void 0 ? void 0 : event.connection.connectionId)
826
+ participantId: _this.getParticipantId(event === null || event === void 0 ? void 0 : event.connection.connectionId),
827
+ isOwnConnection: _this.ownConnectionId === connection.connectionId
830
828
  });
831
829
 
832
830
  if (!_this.ownConnectionId || !connection || connection.connectionId !== _this.ownConnectionId) {