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

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 +40 -0
  74. package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
  75. package/lib/MultiParty/MultiPartyService.js +70 -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
@@ -1,25 +1,41 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- exports.__esModule = true;
4
- exports.LoopbackWebRTCSession = undefined;
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5
4
 
6
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.LoopbackWebRTCSession = void 0;
7
9
 
8
- var _session = require('../session');
10
+ var _session = require("../session");
9
11
 
10
- var _publisher = require('../publisher');
12
+ var _publisher = require("../publisher");
11
13
 
12
- var _tsEnvironmentDetect = require('@techsee/techsee-common/lib/helpers/ts-environment-detect');
14
+ var _tsEnvironmentDetect = require("@techsee/techsee-common/lib/helpers/ts-environment-detect");
13
15
 
14
- var _stream = require('./stream');
16
+ var _stream = require("./stream");
15
17
 
16
- var _helper = require('./helper');
18
+ var _helper = require("./helper");
17
19
 
18
20
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19
21
 
20
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
22
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
21
23
 
22
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
24
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25
+
26
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
27
+
28
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
29
+
30
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
31
+
32
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
33
+
34
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
35
+
36
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
37
+
38
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
23
39
 
24
40
  var isIE11 = new _tsEnvironmentDetect.TsEnvironmentDetect().isIE11();
25
41
 
@@ -34,42 +50,55 @@ var isIE11 = new _tsEnvironmentDetect.TsEnvironmentDetect().isIE11();
34
50
  *
35
51
  * @see TsMediaSession
36
52
  */
37
- var LoopbackWebRTCSession = exports.LoopbackWebRTCSession = function (_TsMediaSession) {
38
- _inherits(LoopbackWebRTCSession, _TsMediaSession);
39
-
40
- function LoopbackWebRTCSession(_ref) {
41
- var credentials = _ref.credentials,
42
- deviceOpts = _ref.deviceOpts;
43
-
44
- _classCallCheck(this, LoopbackWebRTCSession);
45
-
46
- var _this = _possibleConstructorReturn(this, _TsMediaSession.call(this));
47
-
48
- _this._credentials = credentials;
49
- _this._deviceOpts = deviceOpts;
50
- _this._constraints = null;
51
- return _this;
53
+ var LoopbackWebRTCSession = /*#__PURE__*/function (_TsMediaSession) {
54
+ _inherits(LoopbackWebRTCSession, _TsMediaSession);
55
+
56
+ var _super = _createSuper(LoopbackWebRTCSession);
57
+
58
+ function LoopbackWebRTCSession(_ref) {
59
+ var _this;
60
+
61
+ var credentials = _ref.credentials,
62
+ deviceOpts = _ref.deviceOpts;
63
+
64
+ _classCallCheck(this, LoopbackWebRTCSession);
65
+
66
+ _this = _super.call(this);
67
+ _this._credentials = credentials;
68
+ _this._deviceOpts = deviceOpts;
69
+ _this._constraints = null;
70
+ return _this;
71
+ }
72
+ /**
73
+ * Id of the session.
74
+ *
75
+ * @member { String }
76
+ *
77
+ * @type { String }
78
+ */
79
+
80
+
81
+ _createClass(LoopbackWebRTCSession, [{
82
+ key: "id",
83
+ get: function get() {
84
+ return _.get(this._credentials, 'sessionId');
85
+ }
86
+ }, {
87
+ key: "isLoopback",
88
+ get: function get() {
89
+ return true;
90
+ }
91
+ }, {
92
+ key: "_setTrackStateTo",
93
+ value: function _setTrackStateTo(state) {
94
+ return function (track) {
95
+ if (track.setEnabled) {
96
+ track.setEnabled(state);
97
+ } else {
98
+ track.enabled = state;
99
+ }
100
+ };
52
101
  }
53
-
54
- /**
55
- * Id of the session.
56
- *
57
- * @member { String }
58
- *
59
- * @type { String }
60
- */
61
-
62
-
63
- LoopbackWebRTCSession.prototype._setTrackStateTo = function _setTrackStateTo(state) {
64
- return function (track) {
65
- if (track.setEnabled) {
66
- track.setEnabled(state);
67
- } else {
68
- track.enabled = state;
69
- }
70
- };
71
- };
72
-
73
102
  /**
74
103
  * Loopback does not connect, but still need to provide an implementation.
75
104
  *
@@ -78,31 +107,33 @@ var LoopbackWebRTCSession = exports.LoopbackWebRTCSession = function (_TsMediaSe
78
107
  *
79
108
  */
80
109
 
81
-
82
- LoopbackWebRTCSession.prototype.connect = function connect() {
83
- return Promise.resolve();
84
- };
85
-
86
- LoopbackWebRTCSession.prototype._toggleAllStreams = function _toggleAllStreams(state) {
87
- var _this2 = this;
88
-
89
- if (!_.isEmpty(this._streams)) {
90
- this._streams.forEach(function (stream) {
91
- return stream._mediaStream.getTracks().forEach(_this2._setTrackStateTo(state));
92
- });
93
- }
94
- };
95
-
96
- LoopbackWebRTCSession.prototype._stopAllStreams = function _stopAllStreams() {
97
- if (!_.isEmpty(this._streams)) {
98
- this._streams.forEach(function (stream) {
99
- return stream._mediaStream.getTracks().forEach(function (track) {
100
- return track.stop();
101
- });
102
- });
103
- }
104
- };
105
-
110
+ }, {
111
+ key: "connect",
112
+ value: function connect() {
113
+ return Promise.resolve();
114
+ }
115
+ }, {
116
+ key: "_toggleAllStreams",
117
+ value: function _toggleAllStreams(state) {
118
+ var _this2 = this;
119
+
120
+ if (!_.isEmpty(this._streams)) {
121
+ this._streams.forEach(function (stream) {
122
+ return stream._mediaStream.getTracks().forEach(_this2._setTrackStateTo(state));
123
+ });
124
+ }
125
+ }
126
+ }, {
127
+ key: "_stopAllStreams",
128
+ value: function _stopAllStreams() {
129
+ if (!_.isEmpty(this._streams)) {
130
+ this._streams.forEach(function (stream) {
131
+ return stream._mediaStream.getTracks().forEach(function (track) {
132
+ return track.stop();
133
+ });
134
+ });
135
+ }
136
+ }
106
137
  /**
107
138
  * Cleanup
108
139
  *
@@ -111,11 +142,11 @@ var LoopbackWebRTCSession = exports.LoopbackWebRTCSession = function (_TsMediaSe
111
142
  *
112
143
  */
113
144
 
114
-
115
- LoopbackWebRTCSession.prototype.disconnect = function disconnect() {
116
- return Promise.resolve();
117
- };
118
-
145
+ }, {
146
+ key: "disconnect",
147
+ value: function disconnect() {
148
+ return Promise.resolve();
149
+ }
119
150
  /**
120
151
  * Create new TsMediaPublisher instance
121
152
  *
@@ -136,59 +167,51 @@ var LoopbackWebRTCSession = exports.LoopbackWebRTCSession = function (_TsMediaSe
136
167
  * @see TsMediaPublisher
137
168
  */
138
169
 
170
+ }, {
171
+ key: "createPublisher",
172
+ value: function createPublisher(t, p) {
173
+ var _this3 = this;
174
+
175
+ var target = t,
176
+ params = p;
177
+
178
+ if (!params) {
179
+ params = target;
180
+ target = null;
181
+ }
182
+
183
+ return new Promise(function (resolve, reject) {
184
+ (0, _helper.getHighestResolutionStream)(_this3._deviceOpts, _this3._constraints).then(function (result) {
185
+ _this3._constraints = result.constraints;
186
+ return resolve(result.stream);
187
+ })["catch"](function (error) {
188
+ return reject(error);
189
+ });
190
+ }).then(function (mediaStream) {
191
+ // Clear previous streams
192
+ _this3._streams.clear(); //
193
+ // Get tracks that are related to the publisher (audio or video)
194
+ //
139
195
 
140
- LoopbackWebRTCSession.prototype.createPublisher = function createPublisher(t, p) {
141
- var _this3 = this;
142
-
143
- var target = t,
144
- params = p;
145
-
146
- if (!params) {
147
- params = target;
148
- target = null;
149
- }
150
-
151
- return new Promise(function (resolve, reject) {
152
- (0, _helper.getHighestResolutionStream)(_this3._deviceOpts, _this3._constraints).then(function (result) {
153
- _this3._constraints = result.constraints;
154
-
155
- return resolve(result.stream);
156
- }).catch(function (error) {
157
- return reject(error);
158
- });
159
- }).then(function (mediaStream) {
160
- // Clear previous streams
161
- _this3._streams.clear();
162
-
163
- //
164
- // Get tracks that are related to the publisher (audio or video)
165
- //
166
- var tracks = mediaStream.getTracks().filter(function (track) {
167
- return track.kind === 'video' && params.videoDevice || track.kind === 'audio' && params.audioDevice;
168
- });
169
-
170
- var videoTrackSettings = (0, _helper.getVideoTrackSettings)(mediaStream);
171
-
172
- var tsstream = new _stream.TsWebRTCStream(_this3, mediaStream, params.name, false, videoTrackSettings);
173
-
174
- var publisher = new _publisher.TsMediaPublisher(_this3, {
175
- stream: tsstream,
176
- tracks: tracks,
177
- videoParams: params.videoParams,
178
-
179
- videoHeight: tsstream.videoDimensions.height,
180
- videoWidth: tsstream.videoDimensions.width,
181
-
182
- _target: target
183
- });
184
-
185
- tsstream.publisher = publisher;
186
- _this3.publisher = publisher;
187
196
 
188
- return publisher;
197
+ var tracks = mediaStream.getTracks().filter(function (track) {
198
+ return track.kind === 'video' && params.videoDevice || track.kind === 'audio' && params.audioDevice;
189
199
  });
190
- };
191
-
200
+ var videoTrackSettings = (0, _helper.getVideoTrackSettings)(mediaStream);
201
+ var tsstream = new _stream.TsWebRTCStream(_this3, mediaStream, params.name, false, videoTrackSettings);
202
+ var publisher = new _publisher.TsMediaPublisher(_this3, {
203
+ stream: tsstream,
204
+ tracks: tracks,
205
+ videoParams: params.videoParams,
206
+ videoHeight: tsstream.videoDimensions.height,
207
+ videoWidth: tsstream.videoDimensions.width,
208
+ _target: target
209
+ });
210
+ tsstream.publisher = publisher;
211
+ _this3.publisher = publisher;
212
+ return publisher;
213
+ });
214
+ }
192
215
  /**
193
216
  * Publish stream from previously create TsMediaPublisher instance.
194
217
  *
@@ -207,83 +230,86 @@ var LoopbackWebRTCSession = exports.LoopbackWebRTCSession = function (_TsMediaSe
207
230
  * @see TsMediaPublisher#publish
208
231
  */
209
232
 
233
+ }, {
234
+ key: "publish",
235
+ value: function publish(publisher) {
236
+ var _this4 = this;
237
+
238
+ return Promise.resolve().then(function () {
239
+ publisher.emit(_publisher.EVENTS.STREAM_CREATED, publisher.stream);
240
+
241
+ _this4.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, {
242
+ stream: publisher.stream,
243
+ property: 'hasVideo',
244
+ value: publisher.stream.hasVideo
245
+ });
210
246
 
211
- LoopbackWebRTCSession.prototype.publish = function publish(publisher) {
212
- var _this4 = this;
213
-
214
- return Promise.resolve().then(function () {
215
- publisher.emit(_publisher.EVENTS.STREAM_CREATED, publisher.stream);
216
- _this4.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, {
217
- stream: publisher.stream,
218
- property: 'hasVideo',
219
- value: publisher.stream.hasVideo
220
- });
221
- _this4.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, {
222
- stream: publisher.stream,
223
- property: 'hasAudio',
224
- value: publisher.stream.hasAudio
225
- });
226
-
227
- if (_this4.publisher._element) {
228
- return;
229
- }
230
-
231
- if (publisher._target) {
232
- //
233
- // New video element where publishing video stream will be rendered
234
- //
235
- var video = document.createElement('video');
236
-
237
- if (!isIE11) {
238
- video.src = URL.createObjectURL(publisher.stream._mediaStream);
239
- }
240
-
241
- video.playsInline = true;
242
- video.autoplay = true;
243
-
244
- if (isIE11) {
245
- publisher._target.appendChild(video);
246
- publisher._element = attachMediaStream(video, publisher.stream._mediaStream);
247
- }
248
-
249
- var streamDimensions = publisher.stream.videoDimensions;
250
-
251
- var params = _.assign({}, {
252
- fitMode: 'contain',
253
- insertMode: 'append',
254
- mirror: false,
255
- resolution: streamDimensions.width + 'x' + streamDimensions.height,
256
- width: '100%',
257
- height: '100%'
258
- }, publisher.videoParams);
259
-
260
- var elementHeight = typeof params.height === 'string' ? params.height : params.height + 'px';
261
- var elementWidth = typeof params.width === 'string' ? params.width : params.width + 'px';
262
-
263
- _.assign((isIE11 ? publisher._element : video).style, {
264
- height: elementHeight,
265
- width: elementWidth,
266
-
267
- position: 'relative',
268
- 'object-fit': params.fitMode
269
- });
270
-
271
- if (!isIE11) {
272
- publisher._target.appendChild(video);
273
- publisher._element = video;
274
- }
275
-
276
- publisher.stream.setupDimensionsListener(video);
277
- }
278
-
279
- //
280
- // Enable (unpause) all media tracks related to publisher.
281
- // They are sending data to the server from this moment.
282
- //
283
- _this4._toggleAllStreams(true);
247
+ _this4.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, {
248
+ stream: publisher.stream,
249
+ property: 'hasAudio',
250
+ value: publisher.stream.hasAudio
284
251
  });
285
- };
286
252
 
253
+ if (_this4.publisher._element) {
254
+ return;
255
+ }
256
+
257
+ if (publisher._target) {
258
+ //
259
+ // New video element where publishing video stream will be rendered
260
+ //
261
+ var video = document.createElement('video');
262
+
263
+ if (!isIE11) {
264
+ video.src = URL.createObjectURL(publisher.stream._mediaStream);
265
+ }
266
+
267
+ video.playsInline = true;
268
+ video.autoplay = true;
269
+
270
+ if (isIE11) {
271
+ publisher._target.appendChild(video);
272
+
273
+ publisher._element = attachMediaStream(video, publisher.stream._mediaStream);
274
+ }
275
+
276
+ var streamDimensions = publisher.stream.videoDimensions;
277
+
278
+ var params = _.assign({}, {
279
+ fitMode: 'contain',
280
+ insertMode: 'append',
281
+ mirror: false,
282
+ resolution: "".concat(streamDimensions.width, "x").concat(streamDimensions.height),
283
+ width: '100%',
284
+ height: '100%'
285
+ }, publisher.videoParams);
286
+
287
+ var elementHeight = typeof params.height === 'string' ? params.height : params.height + 'px';
288
+ var elementWidth = typeof params.width === 'string' ? params.width : params.width + 'px';
289
+
290
+ _.assign((isIE11 ? publisher._element : video).style, {
291
+ height: elementHeight,
292
+ width: elementWidth,
293
+ position: 'relative',
294
+ 'object-fit': params.fitMode
295
+ });
296
+
297
+ if (!isIE11) {
298
+ publisher._target.appendChild(video);
299
+
300
+ publisher._element = video;
301
+ }
302
+
303
+ publisher.stream.setupDimensionsListener(video);
304
+ } //
305
+ // Enable (unpause) all media tracks related to publisher.
306
+ // They are sending data to the server from this moment.
307
+ //
308
+
309
+
310
+ _this4._toggleAllStreams(true);
311
+ });
312
+ }
287
313
  /**
288
314
  * Unpublish stream and destroy publisher's view.
289
315
  *
@@ -300,37 +326,29 @@ var LoopbackWebRTCSession = exports.LoopbackWebRTCSession = function (_TsMediaSe
300
326
  * @see TsMediaPublisher#destroy
301
327
  */
302
328
 
329
+ }, {
330
+ key: "destroyPublisher",
331
+ value: function destroyPublisher(publisher) {
332
+ var _this5 = this;
303
333
 
304
- LoopbackWebRTCSession.prototype.destroyPublisher = function destroyPublisher(publisher) {
305
- var _this5 = this;
306
-
307
- return new Promise(function (resolve) {
308
- _this5._toggleAllStreams(false);
309
- _this5._stopAllStreams();
310
-
311
- if (publisher._element) {
312
- publisher._element.remove();
313
- }
334
+ return new Promise(function (resolve) {
335
+ _this5._toggleAllStreams(false);
314
336
 
315
- _this5.publisher = null;
316
- publisher.emit(_publisher.EVENTS.DESTROYED);
317
-
318
- return resolve();
319
- });
320
- };
337
+ _this5._stopAllStreams();
321
338
 
322
- _createClass(LoopbackWebRTCSession, [{
323
- key: 'id',
324
- get: function get() {
325
- return _.get(this._credentials, 'sessionId');
339
+ if (publisher._element) {
340
+ publisher._element.remove();
326
341
  }
327
- }, {
328
- key: 'isLoopback',
329
- get: function get() {
330
- return true;
331
- }
332
- }]);
333
342
 
334
- return LoopbackWebRTCSession;
343
+ _this5.publisher = null;
344
+ publisher.emit(_publisher.EVENTS.DESTROYED);
345
+ return resolve();
346
+ });
347
+ }
348
+ }]);
349
+
350
+ return LoopbackWebRTCSession;
335
351
  }(_session.TsMediaSession);
352
+
353
+ exports.LoopbackWebRTCSession = LoopbackWebRTCSession;
336
354
  //# sourceMappingURL=session-loopback.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["oldCode/webrtc/session-loopback.js"],"names":["isIE11","TsEnvironmentDetect","LoopbackWebRTCSession","credentials","deviceOpts","_credentials","_deviceOpts","_constraints","_setTrackStateTo","state","track","setEnabled","enabled","connect","Promise","resolve","_toggleAllStreams","_","isEmpty","_streams","forEach","stream","_mediaStream","getTracks","_stopAllStreams","stop","disconnect","createPublisher","t","p","target","params","reject","then","result","constraints","catch","error","mediaStream","clear","tracks","filter","kind","videoDevice","audioDevice","videoTrackSettings","tsstream","TsWebRTCStream","name","publisher","TsMediaPublisher","videoParams","videoHeight","videoDimensions","height","videoWidth","width","_target","publish","emit","PUBLISHER_EVENTS","STREAM_CREATED","EVENTS","STREAM_PROPERTY_CHANGED","property","value","hasVideo","hasAudio","_element","video","document","createElement","src","URL","createObjectURL","playsInline","autoplay","appendChild","attachMediaStream","streamDimensions","assign","fitMode","insertMode","mirror","resolution","elementHeight","elementWidth","style","position","setupDimensionsListener","destroyPublisher","remove","DESTROYED","get","TsMediaSession"],"mappings":"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","file":"session-loopback.js","sourcesContent":["import {\n EVENTS,\n TsMediaSession\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher\n} from '../publisher';\n\nimport { TsEnvironmentDetect } from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\nimport {\n TsWebRTCStream,\n} from './stream';\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nimport {\n getVideoTrackSettings,\n getHighestResolutionStream\n} from './helper';\n\n/**\n * WebRTC-specific implementation of TsMediaSession.\n *\n * Instance of this class is returned by TsMediaService.initSession call\n * with 'LOOPBACK' as desired mediaType.\n *\n * @class\n * @extends TsMediaSession\n *\n * @see TsMediaSession\n */\nexport class LoopbackWebRTCSession extends TsMediaSession {\n constructor({ credentials, deviceOpts }) {\n super();\n\n this._credentials = credentials;\n this._deviceOpts = deviceOpts;\n this._constraints = null;\n }\n\n /**\n * Id of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get id() {\n return _.get(this._credentials, 'sessionId');\n }\n\n get isLoopback() {\n return true;\n }\n\n _setTrackStateTo(state) {\n return function (track) {\n if (track.setEnabled) {\n track.setEnabled(state);\n } else {\n track.enabled = state;\n }\n };\n }\n\n /**\n * Loopback does not connect, but still need to provide an implementation.\n *\n * @method\n * @returns { Promise }\n *\n */\n connect() {\n return Promise.resolve();\n }\n\n _toggleAllStreams(state) {\n if (!_.isEmpty(this._streams)) {\n this._streams.forEach((stream) => stream._mediaStream.getTracks().forEach(this._setTrackStateTo(state)));\n }\n }\n\n _stopAllStreams() {\n if (!_.isEmpty(this._streams)) {\n this._streams.forEach((stream) => stream._mediaStream.getTracks().forEach((track) => track.stop()));\n }\n }\n\n /**\n * Cleanup\n *\n * @method\n * @returns { Promise }\n *\n */\n disconnect() {\n return Promise.resolve();\n }\n\n /**\n * Create new TsMediaPublisher instance\n *\n * @method\n *\n * @param { DOMElement } [target] Video element\n * that will be used to render publishing video stream\n * @param { Object } params\n * @param { String } [params.videoDevice] Video device id\n * @param { String } [params.videoParams] Video device id\n * @param { String } [params.videoParams.fitMode] Video fit mode\n * @param { Number|String } [params.videoParams.width] Video element width\n * @param { Number|String } [params.videoParams.height] Video element height\n * @param { String } [params.audioDevice] Video device id\n *\n * @returns { Promise<TsMediaPublisher> } publisher\n *\n * @see TsMediaPublisher\n */\n createPublisher(t, p) {\n let target = t,\n params = p;\n\n if (!params) {\n params = target;\n target = null;\n }\n\n return new Promise((resolve, reject) => {\n getHighestResolutionStream(this._deviceOpts, this._constraints)\n .then((result) => {\n this._constraints = result.constraints;\n\n return resolve(result.stream);\n })\n .catch((error) => reject(error));\n })\n .then((mediaStream) => {\n // Clear previous streams\n this._streams.clear();\n\n //\n // Get tracks that are related to the publisher (audio or video)\n //\n const tracks = mediaStream.getTracks()\n .filter((track) => (\n (track.kind === 'video' && params.videoDevice) ||\n (track.kind === 'audio' && params.audioDevice)));\n\n const videoTrackSettings = getVideoTrackSettings(mediaStream);\n\n const tsstream = new TsWebRTCStream(this, mediaStream, params.name, false, videoTrackSettings);\n\n const publisher = new TsMediaPublisher(this, {\n stream: tsstream,\n tracks,\n videoParams: params.videoParams,\n\n videoHeight: tsstream.videoDimensions.height,\n videoWidth: tsstream.videoDimensions.width,\n\n _target: target,\n });\n\n tsstream.publisher = publisher;\n this.publisher = publisher;\n\n return publisher;\n });\n }\n\n /**\n * Publish stream from previously create TsMediaPublisher instance.\n *\n * Used internally by TsMediaPublisher.publish\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n *\n * @see TsMediaPublisher#publish\n */\n publish(publisher) {\n return Promise.resolve()\n .then(() => {\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, publisher.stream);\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasVideo',\n value: publisher.stream.hasVideo,\n });\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasAudio',\n value: publisher.stream.hasAudio,\n });\n\n if (this.publisher._element) {\n return;\n }\n\n if (publisher._target) {\n //\n // New video element where publishing video stream will be rendered\n //\n const video = document.createElement('video');\n\n if (!isIE11) {\n video.src = URL.createObjectURL(publisher.stream._mediaStream);\n }\n\n video.playsInline = true;\n video.autoplay = true;\n\n if (isIE11) {\n publisher._target.appendChild(video);\n publisher._element = attachMediaStream(video, publisher.stream._mediaStream);\n }\n\n const streamDimensions = publisher.stream.videoDimensions;\n\n const params = _.assign({}, {\n fitMode: 'contain',\n insertMode: 'append',\n mirror: false,\n resolution: `${streamDimensions.width}x${streamDimensions.height}`,\n width: '100%',\n height: '100%',\n }, publisher.videoParams);\n\n const elementHeight = (typeof params.height === 'string') ? params.height : params.height + 'px';\n const elementWidth = (typeof params.width === 'string') ? params.width : params.width + 'px';\n\n _.assign((isIE11 ? publisher._element : video).style, {\n height: elementHeight,\n width: elementWidth,\n\n position: 'relative',\n 'object-fit': params.fitMode,\n });\n\n if (!isIE11) {\n publisher._target.appendChild(video);\n publisher._element = video;\n }\n\n publisher.stream.setupDimensionsListener(video);\n }\n\n //\n // Enable (unpause) all media tracks related to publisher.\n // They are sending data to the server from this moment.\n //\n this._toggleAllStreams(true);\n });\n }\n\n /**\n * Unpublish stream and destroy publisher's view.\n *\n * Used internally by TsMediaPublisher.destroy\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#DESTROYED\n *\n * @see TsMediaPublisher#destroy\n */\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n this._toggleAllStreams(false);\n this._stopAllStreams();\n\n if (publisher._element) {\n publisher._element.remove();\n }\n\n this.publisher = null;\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n return resolve();\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["oldCode/webrtc/session-loopback.js"],"names":["isIE11","TsEnvironmentDetect","LoopbackWebRTCSession","credentials","deviceOpts","_credentials","_deviceOpts","_constraints","_","get","state","track","setEnabled","enabled","Promise","resolve","isEmpty","_streams","forEach","stream","_mediaStream","getTracks","_setTrackStateTo","stop","t","p","target","params","reject","then","result","constraints","error","mediaStream","clear","tracks","filter","kind","videoDevice","audioDevice","videoTrackSettings","tsstream","TsWebRTCStream","name","publisher","TsMediaPublisher","videoParams","videoHeight","videoDimensions","height","videoWidth","width","_target","emit","PUBLISHER_EVENTS","STREAM_CREATED","EVENTS","STREAM_PROPERTY_CHANGED","property","value","hasVideo","hasAudio","_element","video","document","createElement","src","URL","createObjectURL","playsInline","autoplay","appendChild","attachMediaStream","streamDimensions","assign","fitMode","insertMode","mirror","resolution","elementHeight","elementWidth","style","position","setupDimensionsListener","_toggleAllStreams","_stopAllStreams","remove","DESTROYED","TsMediaSession"],"mappings":"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","sourcesContent":["import {\n EVENTS,\n TsMediaSession\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher\n} from '../publisher';\n\nimport { TsEnvironmentDetect } from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\n\nimport {\n TsWebRTCStream,\n} from './stream';\n\nconst isIE11 = (new TsEnvironmentDetect()).isIE11();\n\nimport {\n getVideoTrackSettings,\n getHighestResolutionStream\n} from './helper';\n\n/**\n * WebRTC-specific implementation of TsMediaSession.\n *\n * Instance of this class is returned by TsMediaService.initSession call\n * with 'LOOPBACK' as desired mediaType.\n *\n * @class\n * @extends TsMediaSession\n *\n * @see TsMediaSession\n */\nexport class LoopbackWebRTCSession extends TsMediaSession {\n constructor({ credentials, deviceOpts }) {\n super();\n\n this._credentials = credentials;\n this._deviceOpts = deviceOpts;\n this._constraints = null;\n }\n\n /**\n * Id of the session.\n *\n * @member { String }\n *\n * @type { String }\n */\n get id() {\n return _.get(this._credentials, 'sessionId');\n }\n\n get isLoopback() {\n return true;\n }\n\n _setTrackStateTo(state) {\n return function (track) {\n if (track.setEnabled) {\n track.setEnabled(state);\n } else {\n track.enabled = state;\n }\n };\n }\n\n /**\n * Loopback does not connect, but still need to provide an implementation.\n *\n * @method\n * @returns { Promise }\n *\n */\n connect() {\n return Promise.resolve();\n }\n\n _toggleAllStreams(state) {\n if (!_.isEmpty(this._streams)) {\n this._streams.forEach((stream) => stream._mediaStream.getTracks().forEach(this._setTrackStateTo(state)));\n }\n }\n\n _stopAllStreams() {\n if (!_.isEmpty(this._streams)) {\n this._streams.forEach((stream) => stream._mediaStream.getTracks().forEach((track) => track.stop()));\n }\n }\n\n /**\n * Cleanup\n *\n * @method\n * @returns { Promise }\n *\n */\n disconnect() {\n return Promise.resolve();\n }\n\n /**\n * Create new TsMediaPublisher instance\n *\n * @method\n *\n * @param { DOMElement } [target] Video element\n * that will be used to render publishing video stream\n * @param { Object } params\n * @param { String } [params.videoDevice] Video device id\n * @param { String } [params.videoParams] Video device id\n * @param { String } [params.videoParams.fitMode] Video fit mode\n * @param { Number|String } [params.videoParams.width] Video element width\n * @param { Number|String } [params.videoParams.height] Video element height\n * @param { String } [params.audioDevice] Video device id\n *\n * @returns { Promise<TsMediaPublisher> } publisher\n *\n * @see TsMediaPublisher\n */\n createPublisher(t, p) {\n let target = t,\n params = p;\n\n if (!params) {\n params = target;\n target = null;\n }\n\n return new Promise((resolve, reject) => {\n getHighestResolutionStream(this._deviceOpts, this._constraints)\n .then((result) => {\n this._constraints = result.constraints;\n\n return resolve(result.stream);\n })\n .catch((error) => reject(error));\n })\n .then((mediaStream) => {\n // Clear previous streams\n this._streams.clear();\n\n //\n // Get tracks that are related to the publisher (audio or video)\n //\n const tracks = mediaStream.getTracks()\n .filter((track) => (\n (track.kind === 'video' && params.videoDevice) ||\n (track.kind === 'audio' && params.audioDevice)));\n\n const videoTrackSettings = getVideoTrackSettings(mediaStream);\n\n const tsstream = new TsWebRTCStream(this, mediaStream, params.name, false, videoTrackSettings);\n\n const publisher = new TsMediaPublisher(this, {\n stream: tsstream,\n tracks,\n videoParams: params.videoParams,\n\n videoHeight: tsstream.videoDimensions.height,\n videoWidth: tsstream.videoDimensions.width,\n\n _target: target,\n });\n\n tsstream.publisher = publisher;\n this.publisher = publisher;\n\n return publisher;\n });\n }\n\n /**\n * Publish stream from previously create TsMediaPublisher instance.\n *\n * Used internally by TsMediaPublisher.publish\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#STREAM_CREATED\n * @fires SESSION_EVENTS#STREAM_PROPERTY_CHANGED\n * @fires STREAM_EVENTS#PROPERTY_CHANGED\n *\n * @see TsMediaPublisher#publish\n */\n publish(publisher) {\n return Promise.resolve()\n .then(() => {\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, publisher.stream);\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasVideo',\n value: publisher.stream.hasVideo,\n });\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, {\n stream: publisher.stream,\n property: 'hasAudio',\n value: publisher.stream.hasAudio,\n });\n\n if (this.publisher._element) {\n return;\n }\n\n if (publisher._target) {\n //\n // New video element where publishing video stream will be rendered\n //\n const video = document.createElement('video');\n\n if (!isIE11) {\n video.src = URL.createObjectURL(publisher.stream._mediaStream);\n }\n\n video.playsInline = true;\n video.autoplay = true;\n\n if (isIE11) {\n publisher._target.appendChild(video);\n publisher._element = attachMediaStream(video, publisher.stream._mediaStream);\n }\n\n const streamDimensions = publisher.stream.videoDimensions;\n\n const params = _.assign({}, {\n fitMode: 'contain',\n insertMode: 'append',\n mirror: false,\n resolution: `${streamDimensions.width}x${streamDimensions.height}`,\n width: '100%',\n height: '100%',\n }, publisher.videoParams);\n\n const elementHeight = (typeof params.height === 'string') ? params.height : params.height + 'px';\n const elementWidth = (typeof params.width === 'string') ? params.width : params.width + 'px';\n\n _.assign((isIE11 ? publisher._element : video).style, {\n height: elementHeight,\n width: elementWidth,\n\n position: 'relative',\n 'object-fit': params.fitMode,\n });\n\n if (!isIE11) {\n publisher._target.appendChild(video);\n publisher._element = video;\n }\n\n publisher.stream.setupDimensionsListener(video);\n }\n\n //\n // Enable (unpause) all media tracks related to publisher.\n // They are sending data to the server from this moment.\n //\n this._toggleAllStreams(true);\n });\n }\n\n /**\n * Unpublish stream and destroy publisher's view.\n *\n * Used internally by TsMediaPublisher.destroy\n *\n * @method\n *\n * @param { TsMediaPublisher } publisher\n *\n * @returns { Promise }\n *\n * @fires PUBLISHER_EVENTS#DESTROYED\n *\n * @see TsMediaPublisher#destroy\n */\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n this._toggleAllStreams(false);\n this._stopAllStreams();\n\n if (publisher._element) {\n publisher._element.remove();\n }\n\n this.publisher = null;\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n return resolve();\n });\n }\n}\n"],"file":"session-loopback.js"}