@techsee/techsee-media-service 999.0.2-switch → 999.0.3-alpha

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 (150) hide show
  1. package/lib/LocalStreamManager.d.ts +12 -0
  2. package/lib/LocalStreamManager.d.ts.map +1 -1
  3. package/lib/LocalStreamManager.js +440 -283
  4. package/lib/LocalStreamManager.js.map +1 -1
  5. package/lib/MediaConstants.d.ts +14 -4
  6. package/lib/MediaConstants.d.ts.map +1 -1
  7. package/lib/MediaConstants.js +83 -38
  8. package/lib/MediaConstants.js.map +1 -1
  9. package/lib/MediaContracts.d.ts +17 -14
  10. package/lib/MediaContracts.d.ts.map +1 -1
  11. package/lib/MediaContracts.js +3 -3
  12. package/lib/MediaContracts.js.map +1 -1
  13. package/lib/MediaPublisher.d.ts +3 -3
  14. package/lib/MediaPublisher.d.ts.map +1 -1
  15. package/lib/MediaPublisher.js +46 -35
  16. package/lib/MediaPublisher.js.map +1 -1
  17. package/lib/MediaServiceBase.d.ts +21 -7
  18. package/lib/MediaServiceBase.d.ts.map +1 -1
  19. package/lib/MediaServiceBase.js +924 -586
  20. package/lib/MediaServiceBase.js.map +1 -1
  21. package/lib/MediaSession/MediaServer.d.ts +45 -0
  22. package/lib/MediaSession/MediaServer.d.ts.map +1 -0
  23. package/lib/MediaSession/MediaServer.js +538 -0
  24. package/lib/MediaSession/MediaServer.js.map +1 -0
  25. package/lib/MediaSession/MediaSessionBase.d.ts +10 -1
  26. package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
  27. package/lib/MediaSession/MediaSessionBase.js +128 -66
  28. package/lib/MediaSession/MediaSessionBase.js.map +1 -1
  29. package/lib/MediaSession/SessionOpentok.d.ts +11 -9
  30. package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
  31. package/lib/MediaSession/SessionOpentok.js +500 -352
  32. package/lib/MediaSession/SessionOpentok.js.map +1 -1
  33. package/lib/MediaSession/SessionTurn.d.ts +4 -1
  34. package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
  35. package/lib/MediaSession/SessionTurn.js +611 -422
  36. package/lib/MediaSession/SessionTurn.js.map +1 -1
  37. package/lib/MediaSession/TurnConstants.js +31 -30
  38. package/lib/MediaSession/TurnConstants.js.map +1 -1
  39. package/lib/MediaSubscriber.d.ts +11 -11
  40. package/lib/MediaSubscriber.d.ts.map +1 -1
  41. package/lib/MediaSubscriber.js +236 -192
  42. package/lib/MediaSubscriber.js.map +1 -1
  43. package/lib/MediaUtils/Compatibility.d.ts +2 -1
  44. package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
  45. package/lib/MediaUtils/Compatibility.js +130 -85
  46. package/lib/MediaUtils/Compatibility.js.map +1 -1
  47. package/lib/MediaUtils/MediaDomUtils.d.ts +3 -2
  48. package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
  49. package/lib/MediaUtils/MediaDomUtils.js +235 -174
  50. package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
  51. package/lib/MediaUtils/MediaTracer.js +9 -4
  52. package/lib/MediaUtils/MediaTracer.js.map +1 -1
  53. package/lib/MediaUtils/index.d.ts +1 -0
  54. package/lib/MediaUtils/index.d.ts.map +1 -0
  55. package/lib/MediaUtils/index.js +16 -0
  56. package/lib/MediaUtils/index.js.map +1 -0
  57. package/lib/MultiParty/Contracts.d.ts +16 -0
  58. package/lib/MultiParty/Contracts.d.ts.map +1 -0
  59. package/lib/MultiParty/Contracts.js +6 -0
  60. package/lib/MultiParty/Contracts.js.map +1 -0
  61. package/lib/MultiParty/DetectWebRtcService.d.ts +16 -0
  62. package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -0
  63. package/lib/MultiParty/DetectWebRtcService.js +79 -0
  64. package/lib/MultiParty/DetectWebRtcService.js.map +1 -0
  65. package/lib/MultiParty/MediaCapabilitiesService.d.ts +23 -0
  66. package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -0
  67. package/lib/MultiParty/MediaCapabilitiesService.js +369 -0
  68. package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -0
  69. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +5 -0
  70. package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -0
  71. package/lib/MultiParty/MediaCapabilitiesUtils.js +305 -0
  72. package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -0
  73. package/lib/MultiParty/MultiPartyService.d.ts +41 -0
  74. package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
  75. package/lib/MultiParty/MultiPartyService.js +72 -0
  76. package/lib/MultiParty/MultiPartyService.js.map +1 -0
  77. package/lib/MultiParty/MultiPartyServiceFactory.d.ts +3 -0
  78. package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -0
  79. package/lib/MultiParty/MultiPartyServiceFactory.js +21 -0
  80. package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -0
  81. package/lib/MultiParty/OpentokMultiPartyService.d.ts +29 -0
  82. package/lib/MultiParty/OpentokMultiPartyService.d.ts.map +1 -0
  83. package/lib/MultiParty/OpentokMultiPartyService.js +888 -0
  84. package/lib/MultiParty/OpentokMultiPartyService.js.map +1 -0
  85. package/lib/MultiParty/VideoLayoutType.d.ts +4 -0
  86. package/lib/MultiParty/VideoLayoutType.d.ts.map +1 -0
  87. package/lib/MultiParty/VideoLayoutType.js +13 -0
  88. package/lib/MultiParty/VideoLayoutType.js.map +1 -0
  89. package/lib/MultiParty/index.d.ts +4 -0
  90. package/lib/MultiParty/index.d.ts.map +1 -0
  91. package/lib/MultiParty/index.js +61 -0
  92. package/lib/MultiParty/index.js.map +1 -0
  93. package/lib/MultiParty/opentok.d.ts +503 -0
  94. package/lib/TechseeMediaStream.d.ts +6 -6
  95. package/lib/TechseeMediaStream.d.ts.map +1 -1
  96. package/lib/TechseeMediaStream.js +59 -53
  97. package/lib/TechseeMediaStream.js.map +1 -1
  98. package/lib/oldCode/constants.js +20 -15
  99. package/lib/oldCode/constants.js.map +1 -1
  100. package/lib/oldCode/event-emitter.js +45 -22
  101. package/lib/oldCode/event-emitter.js.map +1 -1
  102. package/lib/oldCode/index.js +48 -52
  103. package/lib/oldCode/index.js.map +1 -1
  104. package/lib/oldCode/opentok/session.js +261 -236
  105. package/lib/oldCode/opentok/session.js.map +1 -1
  106. package/lib/oldCode/opentok/stream.js +283 -269
  107. package/lib/oldCode/opentok/stream.js.map +1 -1
  108. package/lib/oldCode/publisher.js +96 -71
  109. package/lib/oldCode/publisher.js.map +1 -1
  110. package/lib/oldCode/service.js +294 -272
  111. package/lib/oldCode/service.js.map +1 -1
  112. package/lib/oldCode/session.js +82 -60
  113. package/lib/oldCode/session.js.map +1 -1
  114. package/lib/oldCode/stream.js +153 -125
  115. package/lib/oldCode/stream.js.map +1 -1
  116. package/lib/oldCode/subscriber.js +60 -35
  117. package/lib/oldCode/subscriber.js.map +1 -1
  118. package/lib/oldCode/tracer.d.ts +3 -2
  119. package/lib/oldCode/tracer.d.ts.map +1 -1
  120. package/lib/oldCode/tracer.js +181 -130
  121. package/lib/oldCode/tracer.js.map +1 -1
  122. package/lib/oldCode/utils/ImageFixer.js +67 -44
  123. package/lib/oldCode/utils/ImageFixer.js.map +1 -1
  124. package/lib/oldCode/webrtc/constants.js +102 -110
  125. package/lib/oldCode/webrtc/constants.js.map +1 -1
  126. package/lib/oldCode/webrtc/helper.js +176 -124
  127. package/lib/oldCode/webrtc/helper.js.map +1 -1
  128. package/lib/oldCode/webrtc/session-kms.js +408 -393
  129. package/lib/oldCode/webrtc/session-kms.js.map +1 -1
  130. package/lib/oldCode/webrtc/session-loopback.js +245 -227
  131. package/lib/oldCode/webrtc/session-loopback.js.map +1 -1
  132. package/lib/oldCode/webrtc/session-turn.js +705 -658
  133. package/lib/oldCode/webrtc/session-turn.js.map +1 -1
  134. package/lib/oldCode/webrtc/session-turn.v2.js +480 -471
  135. package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -1
  136. package/lib/oldCode/webrtc/session.js +12 -6
  137. package/lib/oldCode/webrtc/session.js.map +1 -1
  138. package/lib/oldCode/webrtc/stream.js +526 -504
  139. package/lib/oldCode/webrtc/stream.js.map +1 -1
  140. package/lib/oldCode/webrtc/temasys/adapter-loader.js +5 -6
  141. package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -1
  142. package/lib/oldCode/webrtc/temasys/adapter.js +5264 -5192
  143. package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -1
  144. package/lib/oldCode/webrtc/webrtc-ie-shim.js +3357 -2927
  145. package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -1
  146. package/lib/qos/raw-qos.js +348 -273
  147. package/lib/qos/raw-qos.js.map +1 -1
  148. package/lib/webrtc-ie-shim.js +3386 -2985
  149. package/lib/webrtc-ie-shim.js.map +1 -1
  150. package/package.json +54 -42
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/MultiParty/DetectWebRtcService.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uDAAuD,CAAC;AAKvF,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAEzD,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC9C;AAED,qBAAa,mBAAoB,YAAW,eAAe;IACvD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;gBAElC,mBAAmB,EAAE,MAAM;IAMvC,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAsC1C,OAAO,CAAC,MAAM,CAAC,gBAAgB;CASlC","file":"DetectWebRtcService.d.ts","sourcesContent":["import {Nullable} from '@techsee/techsee-common';\nimport {ClientWebRtcInfo} from '@techsee/techsee-common/lib/data-contracts/ClientInfo';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport detectRTC from '@techsee/techsee-common/lib/detectrtc.js';\n\nexport const DETECT_RTC_ADVISED_TIMEOUT = 20;\n\nexport interface WebRtcNativeService extends ClientWebRtcInfo {\n // eslint-disable-next-line @typescript-eslint/ban-types\n load(doneCb: Function): void;\n}\n\nexport interface IWebRtcDetector {\n getWebRtcInfo(): Promise<ClientWebRtcInfo>;\n}\n\nexport class DetectWebRtcService implements IWebRtcDetector {\n private _cachedResult: Nullable<ClientWebRtcInfo>;\n private readonly _nativeService: Nullable<WebRtcNativeService>;\n private readonly _detectionTimeoutSec: number;\n\n constructor(detectionTimeoutSec: number) {\n this._cachedResult = null;\n this._nativeService = detectRTC;\n this._detectionTimeoutSec = detectionTimeoutSec * 1000;\n }\n\n getWebRtcInfo(): Promise<ClientWebRtcInfo> {\n if (this._cachedResult) {\n return Promise.resolve(this._cachedResult);\n }\n\n if (!this._nativeService) {\n this._cachedResult = DetectWebRtcService.getDefaultResult();\n\n return Promise.resolve(this._cachedResult);\n }\n\n return new Promise((resolve) => {\n let timeoutPtr: any = setTimeout(() => {\n timeoutPtr = null;\n this._cachedResult = DetectWebRtcService.getDefaultResult();\n resolve(this._cachedResult);\n }, this._detectionTimeoutSec);\n\n this._nativeService!.load(() => {\n if (timeoutPtr === null) {\n return;\n }\n\n clearTimeout(timeoutPtr);\n\n this._cachedResult = {\n isWebRTCSupported: this._nativeService!.isWebRTCSupported,\n isWebsiteHasWebcamPermissions: this._nativeService!.isWebsiteHasWebcamPermissions,\n isWebsiteHasMicrophonePermissions: this._nativeService!.isWebsiteHasMicrophonePermissions,\n isGetUserMediaSupported: this._nativeService!.isGetUserMediaSupported,\n isApplyConstraintsSupported: this._nativeService!.isApplyConstraintsSupported\n };\n\n resolve(this._cachedResult);\n });\n });\n }\n\n private static getDefaultResult() {\n return {\n isWebRTCSupported: false,\n isWebsiteHasWebcamPermissions: false,\n isWebsiteHasMicrophonePermissions: false,\n isGetUserMediaSupported: false,\n isApplyConstraintsSupported: false\n };\n }\n}\n"]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ "default": mod
6
+ };
7
+ };
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+ exports.DetectWebRtcService = exports.DETECT_RTC_ADVISED_TIMEOUT = void 0; // eslint-disable-next-line @typescript-eslint/ban-ts-comment
13
+ // @ts-ignore
14
+
15
+ var detectrtc_js_1 = __importDefault(require("@techsee/techsee-common/lib/detectrtc.js"));
16
+
17
+ exports.DETECT_RTC_ADVISED_TIMEOUT = 20;
18
+
19
+ var DetectWebRtcService =
20
+ /** @class */
21
+ function () {
22
+ function DetectWebRtcService(detectionTimeoutSec) {
23
+ this._cachedResult = null;
24
+ this._nativeService = detectrtc_js_1["default"];
25
+ this._detectionTimeoutSec = detectionTimeoutSec * 1000;
26
+ }
27
+
28
+ DetectWebRtcService.prototype.getWebRtcInfo = function () {
29
+ var _this = this;
30
+
31
+ if (this._cachedResult) {
32
+ return Promise.resolve(this._cachedResult);
33
+ }
34
+
35
+ if (!this._nativeService) {
36
+ this._cachedResult = DetectWebRtcService.getDefaultResult();
37
+ return Promise.resolve(this._cachedResult);
38
+ }
39
+
40
+ return new Promise(function (resolve) {
41
+ var timeoutPtr = setTimeout(function () {
42
+ timeoutPtr = null;
43
+ _this._cachedResult = DetectWebRtcService.getDefaultResult();
44
+ resolve(_this._cachedResult);
45
+ }, _this._detectionTimeoutSec);
46
+
47
+ _this._nativeService.load(function () {
48
+ if (timeoutPtr === null) {
49
+ return;
50
+ }
51
+
52
+ clearTimeout(timeoutPtr);
53
+ _this._cachedResult = {
54
+ isWebRTCSupported: _this._nativeService.isWebRTCSupported,
55
+ isWebsiteHasWebcamPermissions: _this._nativeService.isWebsiteHasWebcamPermissions,
56
+ isWebsiteHasMicrophonePermissions: _this._nativeService.isWebsiteHasMicrophonePermissions,
57
+ isGetUserMediaSupported: _this._nativeService.isGetUserMediaSupported,
58
+ isApplyConstraintsSupported: _this._nativeService.isApplyConstraintsSupported
59
+ };
60
+ resolve(_this._cachedResult);
61
+ });
62
+ });
63
+ };
64
+
65
+ DetectWebRtcService.getDefaultResult = function () {
66
+ return {
67
+ isWebRTCSupported: false,
68
+ isWebsiteHasWebcamPermissions: false,
69
+ isWebsiteHasMicrophonePermissions: false,
70
+ isGetUserMediaSupported: false,
71
+ isApplyConstraintsSupported: false
72
+ };
73
+ };
74
+
75
+ return DetectWebRtcService;
76
+ }();
77
+
78
+ exports.DetectWebRtcService = DetectWebRtcService;
79
+ //# sourceMappingURL=DetectWebRtcService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["MultiParty/DetectWebRtcService.js"],"names":["__importDefault","mod","__esModule","Object","defineProperty","exports","value","DetectWebRtcService","DETECT_RTC_ADVISED_TIMEOUT","detectrtc_js_1","require","detectionTimeoutSec","_cachedResult","_nativeService","_detectionTimeoutSec","prototype","getWebRtcInfo","_this","Promise","resolve","getDefaultResult","timeoutPtr","setTimeout","load","clearTimeout","isWebRTCSupported","isWebsiteHasWebcamPermissions","isWebsiteHasMicrophonePermissions","isGetUserMediaSupported","isApplyConstraintsSupported"],"mappings":"AAAA;;AACA,IAAIA,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;AAAEC,EAAAA,KAAK,EAAE;AAAT,CAA7C;AACAD,OAAO,CAACE,mBAAR,GAA8BF,OAAO,CAACG,0BAAR,GAAqC,KAAK,CAAxE,C,CACA;AACA;;AACA,IAAIC,cAAc,GAAGT,eAAe,CAACU,OAAO,CAAC,0CAAD,CAAR,CAApC;;AACAL,OAAO,CAACG,0BAAR,GAAqC,EAArC;;AACA,IAAID,mBAAmB;AAAG;AAAe,YAAY;AACjD,WAASA,mBAAT,CAA6BI,mBAA7B,EAAkD;AAC9C,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,cAAL,GAAsBJ,cAAc,WAApC;AACA,SAAKK,oBAAL,GAA4BH,mBAAmB,GAAG,IAAlD;AACH;;AACDJ,EAAAA,mBAAmB,CAACQ,SAApB,CAA8BC,aAA9B,GAA8C,YAAY;AACtD,QAAIC,KAAK,GAAG,IAAZ;;AACA,QAAI,KAAKL,aAAT,EAAwB;AACpB,aAAOM,OAAO,CAACC,OAAR,CAAgB,KAAKP,aAArB,CAAP;AACH;;AACD,QAAI,CAAC,KAAKC,cAAV,EAA0B;AACtB,WAAKD,aAAL,GAAqBL,mBAAmB,CAACa,gBAApB,EAArB;AACA,aAAOF,OAAO,CAACC,OAAR,CAAgB,KAAKP,aAArB,CAAP;AACH;;AACD,WAAO,IAAIM,OAAJ,CAAY,UAAUC,OAAV,EAAmB;AAClC,UAAIE,UAAU,GAAGC,UAAU,CAAC,YAAY;AACpCD,QAAAA,UAAU,GAAG,IAAb;AACAJ,QAAAA,KAAK,CAACL,aAAN,GAAsBL,mBAAmB,CAACa,gBAApB,EAAtB;AACAD,QAAAA,OAAO,CAACF,KAAK,CAACL,aAAP,CAAP;AACH,OAJ0B,EAIxBK,KAAK,CAACH,oBAJkB,CAA3B;;AAKAG,MAAAA,KAAK,CAACJ,cAAN,CAAqBU,IAArB,CAA0B,YAAY;AAClC,YAAIF,UAAU,KAAK,IAAnB,EAAyB;AACrB;AACH;;AACDG,QAAAA,YAAY,CAACH,UAAD,CAAZ;AACAJ,QAAAA,KAAK,CAACL,aAAN,GAAsB;AAClBa,UAAAA,iBAAiB,EAAER,KAAK,CAACJ,cAAN,CAAqBY,iBADtB;AAElBC,UAAAA,6BAA6B,EAAET,KAAK,CAACJ,cAAN,CAAqBa,6BAFlC;AAGlBC,UAAAA,iCAAiC,EAAEV,KAAK,CAACJ,cAAN,CAAqBc,iCAHtC;AAIlBC,UAAAA,uBAAuB,EAAEX,KAAK,CAACJ,cAAN,CAAqBe,uBAJ5B;AAKlBC,UAAAA,2BAA2B,EAAEZ,KAAK,CAACJ,cAAN,CAAqBgB;AALhC,SAAtB;AAOAV,QAAAA,OAAO,CAACF,KAAK,CAACL,aAAP,CAAP;AACH,OAbD;AAcH,KApBM,CAAP;AAqBH,GA9BD;;AA+BAL,EAAAA,mBAAmB,CAACa,gBAApB,GAAuC,YAAY;AAC/C,WAAO;AACHK,MAAAA,iBAAiB,EAAE,KADhB;AAEHC,MAAAA,6BAA6B,EAAE,KAF5B;AAGHC,MAAAA,iCAAiC,EAAE,KAHhC;AAIHC,MAAAA,uBAAuB,EAAE,KAJtB;AAKHC,MAAAA,2BAA2B,EAAE;AAL1B,KAAP;AAOH,GARD;;AASA,SAAOtB,mBAAP;AACH,CA/CwC,EAAzC;;AAgDAF,OAAO,CAACE,mBAAR,GAA8BA,mBAA9B","file":"DetectWebRtcService.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.DetectWebRtcService = exports.DETECT_RTC_ADVISED_TIMEOUT = void 0;\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nvar detectrtc_js_1 = __importDefault(require(\"@techsee/techsee-common/lib/detectrtc.js\"));\nexports.DETECT_RTC_ADVISED_TIMEOUT = 20;\nvar DetectWebRtcService = /** @class */ (function () {\n function DetectWebRtcService(detectionTimeoutSec) {\n this._cachedResult = null;\n this._nativeService = detectrtc_js_1.default;\n this._detectionTimeoutSec = detectionTimeoutSec * 1000;\n }\n DetectWebRtcService.prototype.getWebRtcInfo = function () {\n var _this = this;\n if (this._cachedResult) {\n return Promise.resolve(this._cachedResult);\n }\n if (!this._nativeService) {\n this._cachedResult = DetectWebRtcService.getDefaultResult();\n return Promise.resolve(this._cachedResult);\n }\n return new Promise(function (resolve) {\n var timeoutPtr = setTimeout(function () {\n timeoutPtr = null;\n _this._cachedResult = DetectWebRtcService.getDefaultResult();\n resolve(_this._cachedResult);\n }, _this._detectionTimeoutSec);\n _this._nativeService.load(function () {\n if (timeoutPtr === null) {\n return;\n }\n clearTimeout(timeoutPtr);\n _this._cachedResult = {\n isWebRTCSupported: _this._nativeService.isWebRTCSupported,\n isWebsiteHasWebcamPermissions: _this._nativeService.isWebsiteHasWebcamPermissions,\n isWebsiteHasMicrophonePermissions: _this._nativeService.isWebsiteHasMicrophonePermissions,\n isGetUserMediaSupported: _this._nativeService.isGetUserMediaSupported,\n isApplyConstraintsSupported: _this._nativeService.isApplyConstraintsSupported\n };\n resolve(_this._cachedResult);\n });\n });\n };\n DetectWebRtcService.getDefaultResult = function () {\n return {\n isWebRTCSupported: false,\n isWebsiteHasWebcamPermissions: false,\n isWebsiteHasMicrophonePermissions: false,\n isGetUserMediaSupported: false,\n isApplyConstraintsSupported: false\n };\n };\n return DetectWebRtcService;\n}());\nexports.DetectWebRtcService = DetectWebRtcService;\n\n//# sourceMappingURL=DetectWebRtcService.js.map\n"]}
@@ -0,0 +1,23 @@
1
+ export declare class MediaCapabilitiesService {
2
+ private static detectWebRtcService;
3
+ private static webRtcSupportInfo;
4
+ private static instance;
5
+ private static devicesList;
6
+ private static groupedDevices;
7
+ private static _supportSwitchCamera;
8
+ private static _backCameraDeviceId;
9
+ private static _frontCameraDeviceId;
10
+ private static _initPromise;
11
+ private environmentService;
12
+ static getInstance(): Promise<MediaCapabilitiesService>;
13
+ private static init;
14
+ hasCamera(): boolean;
15
+ hasMicrophone(): boolean;
16
+ hasWebRTC(): boolean;
17
+ hasGetUserMediaSupported(): boolean;
18
+ private static setGroupedDevices;
19
+ static setDevicesList(): Promise<void>;
20
+ get supportSwitchCamera(): boolean;
21
+ get backCameraDeviceId(): string;
22
+ get frontCameraDeviceId(): string;
23
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/MultiParty/MediaCapabilitiesService.ts"],"names":[],"mappings":"AA6BA,qBAAa,wBAAwB;IACjC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAsB;IACxD,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA+B;IAC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,MAAM,CAAC,WAAW,CAAyD;IACnF,OAAO,CAAC,MAAM,CAAC,cAAc,CAA8C;IAC3E,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAU;IAC7C,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAS;IAC3C,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAS;IAC5C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAoC;IAE/D,OAAO,CAAC,kBAAkB,CAA6B;WAEnC,WAAW,IAAI,OAAO,CAAC,wBAAwB,CAAC;mBAoB/C,IAAI;IAmBlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAMxB,SAAS,IAAI,OAAO;IAIpB,wBAAwB,IAAI,OAAO;IAI1C,OAAO,CAAC,MAAM,CAAC,iBAAiB;WAaZ,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnD,IAAW,mBAAmB,YAE7B;IAED,IAAW,kBAAkB,WAE5B;IAED,IAAW,mBAAmB,WAE7B;CACJ","file":"MediaCapabilitiesService.d.ts","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-var-requires\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport {DETECT_RTC_ADVISED_TIMEOUT, DetectWebRtcService} from './DetectWebRtcService';\nimport {ClientWebRtcInfo} from '../MediaContracts';\nimport filter from 'lodash/filter';\nimport {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {CameraTypes} from '../MediaConstants';\nimport last from 'lodash/last';\nimport first from 'lodash/first';\nimport get from 'lodash/get';\nimport {Nullable} from '@techsee/techsee-common';\n\nconst trace = getMediaTracer('MediaCapabilitiesService');\n\nfunction enumerateMediaDevices(): Promise<MediaDeviceInfo[]> {\n return new Promise((resolve, reject) => {\n if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n return navigator.mediaDevices.enumerateDevices().then(resolve).catch(reject);\n }\n\n return resolve([]);\n });\n}\n\ntype GroupedDevices = {\n video: Nullable<{ back?: MediaDeviceInfo; front?: MediaDeviceInfo }>;\n audio: Nullable<MediaDeviceInfo>;\n}\n\nexport class MediaCapabilitiesService {\n private static detectWebRtcService: DetectWebRtcService;\n private static webRtcSupportInfo: ClientWebRtcInfo | undefined;\n private static instance: MediaCapabilitiesService;\n private static devicesList: { video: MediaDeviceInfo[]; audio: MediaDeviceInfo[] };\n private static groupedDevices: GroupedDevices = {video: null, audio: null};\n private static _supportSwitchCamera: boolean;\n private static _backCameraDeviceId: string;\n private static _frontCameraDeviceId: string;\n private static _initPromise: Promise<MediaCapabilitiesService>;\n\n private environmentService = new TsEnvironmentDetect();\n\n public static async getInstance(): Promise<MediaCapabilitiesService> {\n try {\n if (this.instance) {\n return this.instance;\n }\n\n if (this._initPromise) {\n return this._initPromise;\n }\n\n this._initPromise = this.init();\n\n return this._initPromise;\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n throw err;\n }\n }\n\n private static async init(): Promise<MediaCapabilitiesService> {\n try {\n this.instance = new MediaCapabilitiesService();\n\n this.detectWebRtcService = new DetectWebRtcService(DETECT_RTC_ADVISED_TIMEOUT);\n\n this.webRtcSupportInfo = await this.detectWebRtcService.getWebRtcInfo();\n await this.setDevicesList();\n\n trace.info('initialize media capabilities helper successfully');\n\n return this.instance;\n } catch (err) {\n trace.error(JSON.stringify(err));\n\n throw err;\n }\n }\n\n public hasCamera(): boolean {\n return MediaCapabilitiesService.devicesList.video.length > 0 && this.hasGetUserMediaSupported();\n }\n\n public hasMicrophone(): boolean {\n return this.environmentService.isIOS()\n ? this.hasGetUserMediaSupported()\n : MediaCapabilitiesService.devicesList.audio.length > 0 && this.hasGetUserMediaSupported();\n }\n\n public hasWebRTC(): boolean {\n return MediaCapabilitiesService.webRtcSupportInfo!.isWebRTCSupported;\n }\n\n public hasGetUserMediaSupported(): boolean {\n return MediaCapabilitiesService.webRtcSupportInfo!.isGetUserMediaSupported;\n }\n\n private static setGroupedDevices() {\n trace.info('setGroupedDevices', this.devicesList);\n this.groupedDevices = {\n video: this.devicesList.video\n ? {[CameraTypes.BACK]: last(this.devicesList.video), [CameraTypes.FRONT]: first(this.devicesList.video)}\n : null,\n audio: last(this.devicesList.audio) || null\n };\n this._supportSwitchCamera = this.devicesList.video.length > 1;\n this._backCameraDeviceId = get(this.groupedDevices, `video.${CameraTypes.BACK}.deviceId`) || '';\n this._frontCameraDeviceId = get(this.groupedDevices, `video.${CameraTypes.FRONT}.deviceId`) || '';\n }\n\n public static async setDevicesList(): Promise<void> {\n const localDevicesList = this.webRtcSupportInfo!.isWebRTCSupported ? await enumerateMediaDevices() : [];\n\n this.devicesList = {\n video: filter(localDevicesList, (device) => device.kind.toLowerCase() === 'videoinput'),\n audio: filter(localDevicesList, (device) => device.kind.toLowerCase() === 'audioinput')\n };\n\n this.setGroupedDevices();\n }\n\n public get supportSwitchCamera() {\n return MediaCapabilitiesService._supportSwitchCamera;\n }\n\n public get backCameraDeviceId() {\n return MediaCapabilitiesService._backCameraDeviceId;\n }\n\n public get frontCameraDeviceId() {\n return MediaCapabilitiesService._frontCameraDeviceId;\n }\n}\n"]}
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+
3
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+
10
+ return new (P || (P = Promise))(function (resolve, reject) {
11
+ function fulfilled(value) {
12
+ try {
13
+ step(generator.next(value));
14
+ } catch (e) {
15
+ reject(e);
16
+ }
17
+ }
18
+
19
+ function rejected(value) {
20
+ try {
21
+ step(generator["throw"](value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ }
26
+
27
+ function step(result) {
28
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
29
+ }
30
+
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+
35
+ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
36
+ var _ = {
37
+ label: 0,
38
+ sent: function sent() {
39
+ if (t[0] & 1) throw t[1];
40
+ return t[1];
41
+ },
42
+ trys: [],
43
+ ops: []
44
+ },
45
+ f,
46
+ y,
47
+ t,
48
+ g;
49
+ return g = {
50
+ next: verb(0),
51
+ "throw": verb(1),
52
+ "return": verb(2)
53
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
54
+ return this;
55
+ }), g;
56
+
57
+ function verb(n) {
58
+ return function (v) {
59
+ return step([n, v]);
60
+ };
61
+ }
62
+
63
+ function step(op) {
64
+ if (f) throw new TypeError("Generator is already executing.");
65
+
66
+ while (_) {
67
+ try {
68
+ 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;
69
+ if (y = 0, t) op = [op[0] & 2, t.value];
70
+
71
+ switch (op[0]) {
72
+ case 0:
73
+ case 1:
74
+ t = op;
75
+ break;
76
+
77
+ case 4:
78
+ _.label++;
79
+ return {
80
+ value: op[1],
81
+ done: false
82
+ };
83
+
84
+ case 5:
85
+ _.label++;
86
+ y = op[1];
87
+ op = [0];
88
+ continue;
89
+
90
+ case 7:
91
+ op = _.ops.pop();
92
+
93
+ _.trys.pop();
94
+
95
+ continue;
96
+
97
+ default:
98
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
99
+ _ = 0;
100
+ continue;
101
+ }
102
+
103
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
104
+ _.label = op[1];
105
+ break;
106
+ }
107
+
108
+ if (op[0] === 6 && _.label < t[1]) {
109
+ _.label = t[1];
110
+ t = op;
111
+ break;
112
+ }
113
+
114
+ if (t && _.label < t[2]) {
115
+ _.label = t[2];
116
+
117
+ _.ops.push(op);
118
+
119
+ break;
120
+ }
121
+
122
+ if (t[2]) _.ops.pop();
123
+
124
+ _.trys.pop();
125
+
126
+ continue;
127
+ }
128
+
129
+ op = body.call(thisArg, _);
130
+ } catch (e) {
131
+ op = [6, e];
132
+ y = 0;
133
+ } finally {
134
+ f = t = 0;
135
+ }
136
+ }
137
+
138
+ if (op[0] & 5) throw op[1];
139
+ return {
140
+ value: op[0] ? op[1] : void 0,
141
+ done: true
142
+ };
143
+ }
144
+ };
145
+
146
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
147
+ return mod && mod.__esModule ? mod : {
148
+ "default": mod
149
+ };
150
+ };
151
+
152
+ Object.defineProperty(exports, "__esModule", {
153
+ value: true
154
+ });
155
+ exports.MediaCapabilitiesService = void 0; // eslint-disable-next-line @typescript-eslint/no-var-requires
156
+
157
+ var MediaTracer_1 = require("../MediaUtils/MediaTracer");
158
+
159
+ var DetectWebRtcService_1 = require("./DetectWebRtcService");
160
+
161
+ var filter_1 = __importDefault(require("lodash/filter"));
162
+
163
+ var ts_environment_detect_1 = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
164
+
165
+ var MediaConstants_1 = require("../MediaConstants");
166
+
167
+ var last_1 = __importDefault(require("lodash/last"));
168
+
169
+ var first_1 = __importDefault(require("lodash/first"));
170
+
171
+ var get_1 = __importDefault(require("lodash/get"));
172
+
173
+ var trace = MediaTracer_1.getMediaTracer('MediaCapabilitiesService');
174
+
175
+ function enumerateMediaDevices() {
176
+ return new Promise(function (resolve, reject) {
177
+ if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
178
+ return navigator.mediaDevices.enumerateDevices().then(resolve)["catch"](reject);
179
+ }
180
+
181
+ return resolve([]);
182
+ });
183
+ }
184
+
185
+ var MediaCapabilitiesService =
186
+ /** @class */
187
+ function () {
188
+ function MediaCapabilitiesService() {
189
+ this.environmentService = new ts_environment_detect_1.TsEnvironmentDetect();
190
+ }
191
+
192
+ MediaCapabilitiesService.getInstance = function () {
193
+ return __awaiter(this, void 0, void 0, function () {
194
+ return __generator(this, function (_a) {
195
+ try {
196
+ if (this.instance) {
197
+ return [2
198
+ /*return*/
199
+ , this.instance];
200
+ }
201
+
202
+ if (this._initPromise) {
203
+ return [2
204
+ /*return*/
205
+ , this._initPromise];
206
+ }
207
+
208
+ this._initPromise = this.init();
209
+ return [2
210
+ /*return*/
211
+ , this._initPromise];
212
+ } catch (err) {
213
+ trace.error(JSON.stringify(err));
214
+ throw err;
215
+ }
216
+
217
+ return [2
218
+ /*return*/
219
+ ];
220
+ });
221
+ });
222
+ };
223
+
224
+ MediaCapabilitiesService.init = function () {
225
+ return __awaiter(this, void 0, void 0, function () {
226
+ var _a, err_1;
227
+
228
+ return __generator(this, function (_b) {
229
+ switch (_b.label) {
230
+ case 0:
231
+ _b.trys.push([0, 3,, 4]);
232
+
233
+ this.instance = new MediaCapabilitiesService();
234
+ this.detectWebRtcService = new DetectWebRtcService_1.DetectWebRtcService(DetectWebRtcService_1.DETECT_RTC_ADVISED_TIMEOUT);
235
+ _a = this;
236
+ return [4
237
+ /*yield*/
238
+ , this.detectWebRtcService.getWebRtcInfo()];
239
+
240
+ case 1:
241
+ _a.webRtcSupportInfo = _b.sent();
242
+ return [4
243
+ /*yield*/
244
+ , this.setDevicesList()];
245
+
246
+ case 2:
247
+ _b.sent();
248
+
249
+ trace.info('initialize media capabilities helper successfully');
250
+ return [2
251
+ /*return*/
252
+ , this.instance];
253
+
254
+ case 3:
255
+ err_1 = _b.sent();
256
+ trace.error(JSON.stringify(err_1));
257
+ throw err_1;
258
+
259
+ case 4:
260
+ return [2
261
+ /*return*/
262
+ ];
263
+ }
264
+ });
265
+ });
266
+ };
267
+
268
+ MediaCapabilitiesService.prototype.hasCamera = function () {
269
+ return MediaCapabilitiesService.devicesList.video.length > 0 && this.hasGetUserMediaSupported();
270
+ };
271
+
272
+ MediaCapabilitiesService.prototype.hasMicrophone = function () {
273
+ return this.environmentService.isIOS() ? this.hasGetUserMediaSupported() : MediaCapabilitiesService.devicesList.audio.length > 0 && this.hasGetUserMediaSupported();
274
+ };
275
+
276
+ MediaCapabilitiesService.prototype.hasWebRTC = function () {
277
+ return MediaCapabilitiesService.webRtcSupportInfo.isWebRTCSupported;
278
+ };
279
+
280
+ MediaCapabilitiesService.prototype.hasGetUserMediaSupported = function () {
281
+ return MediaCapabilitiesService.webRtcSupportInfo.isGetUserMediaSupported;
282
+ };
283
+
284
+ MediaCapabilitiesService.setGroupedDevices = function () {
285
+ var _a;
286
+
287
+ trace.info('setGroupedDevices', this.devicesList);
288
+ this.groupedDevices = {
289
+ video: this.devicesList.video ? (_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,
290
+ audio: last_1["default"](this.devicesList.audio) || null
291
+ };
292
+ this._supportSwitchCamera = this.devicesList.video.length > 1;
293
+ this._backCameraDeviceId = get_1["default"](this.groupedDevices, "video." + MediaConstants_1.CameraTypes.BACK + ".deviceId") || '';
294
+ this._frontCameraDeviceId = get_1["default"](this.groupedDevices, "video." + MediaConstants_1.CameraTypes.FRONT + ".deviceId") || '';
295
+ };
296
+
297
+ MediaCapabilitiesService.setDevicesList = function () {
298
+ return __awaiter(this, void 0, void 0, function () {
299
+ var localDevicesList, _a;
300
+
301
+ return __generator(this, function (_b) {
302
+ switch (_b.label) {
303
+ case 0:
304
+ if (!this.webRtcSupportInfo.isWebRTCSupported) return [3
305
+ /*break*/
306
+ , 2];
307
+ return [4
308
+ /*yield*/
309
+ , enumerateMediaDevices()];
310
+
311
+ case 1:
312
+ _a = _b.sent();
313
+ return [3
314
+ /*break*/
315
+ , 3];
316
+
317
+ case 2:
318
+ _a = [];
319
+ _b.label = 3;
320
+
321
+ case 3:
322
+ localDevicesList = _a;
323
+ this.devicesList = {
324
+ video: filter_1["default"](localDevicesList, function (device) {
325
+ return device.kind.toLowerCase() === 'videoinput';
326
+ }),
327
+ audio: filter_1["default"](localDevicesList, function (device) {
328
+ return device.kind.toLowerCase() === 'audioinput';
329
+ })
330
+ };
331
+ this.setGroupedDevices();
332
+ return [2
333
+ /*return*/
334
+ ];
335
+ }
336
+ });
337
+ });
338
+ };
339
+
340
+ Object.defineProperty(MediaCapabilitiesService.prototype, "supportSwitchCamera", {
341
+ get: function get() {
342
+ return MediaCapabilitiesService._supportSwitchCamera;
343
+ },
344
+ enumerable: false,
345
+ configurable: true
346
+ });
347
+ Object.defineProperty(MediaCapabilitiesService.prototype, "backCameraDeviceId", {
348
+ get: function get() {
349
+ return MediaCapabilitiesService._backCameraDeviceId;
350
+ },
351
+ enumerable: false,
352
+ configurable: true
353
+ });
354
+ Object.defineProperty(MediaCapabilitiesService.prototype, "frontCameraDeviceId", {
355
+ get: function get() {
356
+ return MediaCapabilitiesService._frontCameraDeviceId;
357
+ },
358
+ enumerable: false,
359
+ configurable: true
360
+ });
361
+ MediaCapabilitiesService.groupedDevices = {
362
+ video: null,
363
+ audio: null
364
+ };
365
+ return MediaCapabilitiesService;
366
+ }();
367
+
368
+ exports.MediaCapabilitiesService = MediaCapabilitiesService;
369
+ //# sourceMappingURL=MediaCapabilitiesService.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,5 @@
1
+ export declare const checkIsMobile: () => boolean;
2
+ export declare const checkWebRtc: () => Promise<boolean>;
3
+ export declare function checkVideoCapabilities(): Promise<boolean>;
4
+ export declare function checkAudioCapabilities(): Promise<boolean>;
5
+ export declare function checkSupportSwitchCamera(): Promise<boolean>;
@@ -0,0 +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"]}