@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,310 +1,335 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
- exports.__esModule = true;
4
- exports.TsOpenTokSession = 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.TsOpenTokSession = 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 _subscriber = require('../subscriber');
14
+ var _subscriber = require("../subscriber");
13
15
 
14
- var _stream = require('./stream');
16
+ var _stream = require("./stream");
15
17
 
16
18
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
17
19
 
18
- 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; }
20
+ 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); } }
19
21
 
20
- 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; }
22
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
21
23
 
22
- var TsOpenTokSession = exports.TsOpenTokSession = function (_TsMediaSession) {
23
- _inherits(TsOpenTokSession, _TsMediaSession);
24
+ 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); }
24
25
 
25
- function TsOpenTokSession(_ref) {
26
- var credentials = _ref.credentials;
26
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
27
27
 
28
- _classCallCheck(this, TsOpenTokSession);
28
+ 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); }; }
29
29
 
30
- var _this = _possibleConstructorReturn(this, _TsMediaSession.call(this));
30
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
31
31
 
32
- _this._credentials = credentials;
33
- _this._session = OT.initSession(credentials.apiKey, credentials.sessionId);
34
- return _this;
35
- }
36
-
37
- TsOpenTokSession.prototype._disconnectIfAlreadyConnected = function _disconnectIfAlreadyConnected() {
38
- if (!this._session.isConnected()) {
39
- return Promise.resolve();
40
- }
41
-
42
- return this.disconnect(true);
43
- };
32
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
44
33
 
45
- TsOpenTokSession.prototype.connect = function connect() {
46
- var _this2 = this;
34
+ 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; } }
47
35
 
48
- return this._disconnectIfAlreadyConnected().then(function () {
49
- return new Promise(function (resolve, reject) {
50
- _this2._session.on('sessionConnected', function () {
51
- _this2.emit(_session.EVENTS.CONNECTED);
52
- });
53
- _this2._session.on('sessionDisconnected', function (e) {
54
- _this2.emit(_session.EVENTS.DISCONNECTED, e);
55
- });
36
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
56
37
 
57
- _this2._session.on('streamCreated', function (e) {
58
- _this2.emit(_session.EVENTS.STREAM_CREATED, new _stream.TsOpenTokStream(_this2, e.stream));
59
- });
38
+ var TsOpenTokSession = /*#__PURE__*/function (_TsMediaSession) {
39
+ _inherits(TsOpenTokSession, _TsMediaSession);
60
40
 
61
- _this2._session.on('streamDestroyed', function (e) {
62
- _this2._streams.delete(e.stream.id);
41
+ var _super = _createSuper(TsOpenTokSession);
63
42
 
64
- _this2.emit(_session.EVENTS.STREAM_DESTROYED, e);
65
- });
66
- _this2._session.on('streamPropertyChanged', function (e) {
67
- if (e.changedProperty === 'videoDimensions') {
68
- return;
69
- }
43
+ function TsOpenTokSession(_ref) {
44
+ var _this;
70
45
 
71
- var stream = _this2._streams.get(e.stream.id);
46
+ var credentials = _ref.credentials;
72
47
 
73
- var newEvent = {
74
- stream: stream,
75
- property: e.changedProperty,
76
- value: e.newValue
77
- };
48
+ _classCallCheck(this, TsOpenTokSession);
78
49
 
79
- _this2.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, newEvent);
80
- });
50
+ _this = _super.call(this);
51
+ _this._credentials = credentials;
52
+ _this._session = OT.initSession(credentials.apiKey, credentials.sessionId);
53
+ return _this;
54
+ }
81
55
 
82
- _this2._session.connect(_this2._credentials.token, function (error) {
83
- if (error) {
84
- _this2._session.off();
85
-
86
- return reject(error);
87
- }
88
-
89
- return resolve();
90
- });
91
- });
92
- });
93
- };
56
+ _createClass(TsOpenTokSession, [{
57
+ key: "id",
58
+ get: function get() {
59
+ return this._session && this._session.sessionId;
60
+ }
61
+ }, {
62
+ key: "_disconnectIfAlreadyConnected",
63
+ value: function _disconnectIfAlreadyConnected() {
64
+ if (!this._session.isConnected()) {
65
+ return Promise.resolve();
66
+ }
67
+
68
+ return this.disconnect(true);
69
+ }
70
+ }, {
71
+ key: "connect",
72
+ value: function connect() {
73
+ var _this2 = this;
94
74
 
95
- TsOpenTokSession.prototype.disconnect = function disconnect(keepSession) {
96
- var _this3 = this;
75
+ return this._disconnectIfAlreadyConnected().then(function () {
76
+ return new Promise(function (resolve, reject) {
77
+ _this2._session.on('sessionConnected', function () {
78
+ _this2.emit(_session.EVENTS.CONNECTED);
79
+ });
97
80
 
98
- return new Promise(function (resolve) {
99
- _this3._session.off();
81
+ _this2._session.on('sessionDisconnected', function (e) {
82
+ _this2.emit(_session.EVENTS.DISCONNECTED, e);
83
+ });
100
84
 
101
- var sessionFinalized = false;
85
+ _this2._session.on('streamCreated', function (e) {
86
+ _this2.emit(_session.EVENTS.STREAM_CREATED, new _stream.TsOpenTokStream(_this2, e.stream));
87
+ });
102
88
 
103
- var finalizeSession = function finalizeSession(event) {
104
- if (sessionFinalized) {
105
- return;
106
- }
89
+ _this2._session.on('streamDestroyed', function (e) {
90
+ _this2._streams["delete"](e.stream.id);
107
91
 
108
- sessionFinalized = true;
92
+ _this2.emit(_session.EVENTS.STREAM_DESTROYED, e);
93
+ });
109
94
 
110
- if (!keepSession) {
111
- _this3._session = null;
95
+ _this2._session.on('streamPropertyChanged', function (e) {
96
+ if (e.changedProperty === 'videoDimensions') {
97
+ return;
98
+ }
112
99
 
113
- _this3.emit(_session.EVENTS.DISCONNECTED);
114
- }
100
+ var stream = _this2._streams.get(e.stream.id);
115
101
 
116
- resolve(event);
102
+ var newEvent = {
103
+ stream: stream,
104
+ property: e.changedProperty,
105
+ value: e.newValue
117
106
  };
118
107
 
119
- _this3._session.once('sessionDisconnected', function (event) {
120
- return finalizeSession(event);
121
- });
122
-
123
- setTimeout(function () {
124
- return finalizeSession({ reason: 'clientDisconnectedTimeout' });
125
- }, 5000);
126
-
127
- _this3._session.disconnect();
128
- });
129
- };
108
+ _this2.emit(_session.EVENTS.STREAM_PROPERTY_CHANGED, newEvent);
109
+ });
130
110
 
131
- TsOpenTokSession.prototype.createPublisher = function createPublisher(target, params) {
132
- var _this4 = this;
111
+ _this2._session.connect(_this2._credentials.token, function (error) {
112
+ if (error) {
113
+ _this2._session.off();
133
114
 
134
- if (!params) {
135
- params = target;
136
- target = null;
137
- }
138
-
139
- var otparams = {
140
- videoSource: null,
141
- audioSource: null,
142
- showControls: false,
143
- name: params.name,
144
- publishAudio: false,
145
- publishVideo: false,
146
- constraints: {
147
- video: {
148
- facingMode: 'environment'
149
- }
150
- }
151
- };
152
-
153
- if (params.videoDevice) {
154
- _.assign(otparams, {
155
- publishVideo: true,
156
- videoSource: params.videoDevice
157
- });
158
-
159
- otparams.constraints.video.deviceId = params.videoDevice;
160
-
161
- if (params.videoParams) {
162
- _.assign(otparams, params.videoParams);
115
+ return reject(error);
163
116
  }
164
- }
165
-
166
- if (params.audioDevice) {
167
- _.assign(otparams, {
168
- publishAudio: true,
169
- audioSource: params.audioDevice
170
- });
171
- }
172
-
173
- return new Promise(function (resolve, reject) {
174
- var otpublisher = OT.initPublisher(target, otparams, function (error) {
175
- if (error) {
176
- return reject(error);
177
- }
178
-
179
- var publisher = new _publisher.TsMediaPublisher(_this4, {
180
- _otpublisher: otpublisher
181
- });
182
117
 
183
- return resolve(publisher);
184
- });
118
+ return resolve();
119
+ });
185
120
  });
186
- };
121
+ });
122
+ }
123
+ }, {
124
+ key: "disconnect",
125
+ value: function disconnect(keepSession) {
126
+ var _this3 = this;
187
127
 
188
- TsOpenTokSession.prototype.publish = function publish(publisher) {
189
- var _this5 = this;
128
+ return new Promise(function (resolve) {
129
+ _this3._session.off();
190
130
 
191
- return new Promise(function (resolve, reject) {
192
- publisher._otpublisher.once('streamCreated', function (event) {
193
- var stream = new _stream.TsOpenTokStream(_this5, event.stream);
131
+ var sessionFinalized = false;
194
132
 
195
- publisher.stream = stream;
196
- stream.publisher = publisher;
197
- stream.remote = false;
133
+ var finalizeSession = function finalizeSession(event) {
134
+ if (sessionFinalized) {
135
+ return;
136
+ }
198
137
 
199
- publisher.videoWidth = publisher._otpublisher.videoWidth();
200
- publisher.videoHeight = publisher._otpublisher.videoHeight();
138
+ sessionFinalized = true;
201
139
 
202
- publisher.emit(_publisher.EVENTS.STREAM_CREATED, stream);
140
+ if (!keepSession) {
141
+ _this3._session = null;
203
142
 
204
- var video = stream.getVideoElement(publisher._otpublisher.element)[0];
143
+ _this3.emit(_session.EVENTS.DISCONNECTED);
144
+ }
205
145
 
206
- stream.setupDimensionsListener(video);
146
+ resolve(event);
147
+ };
207
148
 
208
- return resolve();
209
- });
149
+ _this3._session.once('sessionDisconnected', function (event) {
150
+ return finalizeSession(event);
151
+ });
210
152
 
211
- publisher._otpublisher.once('destroyed', function () {
212
- publisher.emit(_publisher.EVENTS.DESTROYED);
153
+ setTimeout(function () {
154
+ return finalizeSession({
155
+ reason: 'clientDisconnectedTimeout'
156
+ });
157
+ }, 5000);
213
158
 
214
- publisher._otpublisher.off();
215
- publisher._otpublisher = null;
216
- });
159
+ _this3._session.disconnect();
160
+ });
161
+ }
162
+ }, {
163
+ key: "createPublisher",
164
+ value: function createPublisher(target, params) {
165
+ var _this4 = this;
166
+
167
+ if (!params) {
168
+ params = target;
169
+ target = null;
170
+ }
171
+
172
+ var otparams = {
173
+ videoSource: null,
174
+ audioSource: null,
175
+ showControls: false,
176
+ name: params.name,
177
+ publishAudio: false,
178
+ publishVideo: false,
179
+ constraints: {
180
+ video: {
181
+ facingMode: 'environment'
182
+ }
183
+ }
184
+ };
217
185
 
218
- _this5._session.publish(publisher._otpublisher, function (error) {
219
- if (error) {
220
- return reject(error);
221
- }
222
- });
186
+ if (params.videoDevice) {
187
+ _.assign(otparams, {
188
+ publishVideo: true,
189
+ videoSource: params.videoDevice
223
190
  });
224
- };
225
-
226
- TsOpenTokSession.prototype.destroyPublisher = function destroyPublisher(publisher) {
227
- return new Promise(function (resolve) {
228
- publisher._otpublisher.off();
229
191
 
230
- publisher._otpublisher.once('destroyed', function () {
231
- publisher._otpublisher = null;
192
+ otparams.constraints.video.deviceId = params.videoDevice;
232
193
 
233
- resolve();
234
- });
194
+ if (params.videoParams) {
195
+ _.assign(otparams, params.videoParams);
196
+ }
197
+ }
235
198
 
236
- publisher._otpublisher.destroy();
199
+ if (params.audioDevice) {
200
+ _.assign(otparams, {
201
+ publishAudio: true,
202
+ audioSource: params.audioDevice
203
+ });
204
+ }
205
+
206
+ return new Promise(function (resolve, reject) {
207
+ var otpublisher = OT.initPublisher(target, otparams, function (error) {
208
+ if (error) {
209
+ return reject(error);
210
+ }
211
+
212
+ var publisher = new _publisher.TsMediaPublisher(_this4, {
213
+ _otpublisher: otpublisher
214
+ });
215
+ return resolve(publisher);
216
+ });
217
+ });
218
+ }
219
+ }, {
220
+ key: "publish",
221
+ value: function publish(publisher) {
222
+ var _this5 = this;
223
+
224
+ return new Promise(function (resolve, reject) {
225
+ publisher._otpublisher.once('streamCreated', function (event) {
226
+ var stream = new _stream.TsOpenTokStream(_this5, event.stream);
227
+ publisher.stream = stream;
228
+ stream.publisher = publisher;
229
+ stream.remote = false;
230
+ publisher.videoWidth = publisher._otpublisher.videoWidth();
231
+ publisher.videoHeight = publisher._otpublisher.videoHeight();
232
+ publisher.emit(_publisher.EVENTS.STREAM_CREATED, stream);
233
+ var video = stream.getVideoElement(publisher._otpublisher.element)[0];
234
+ stream.setupDimensionsListener(video);
235
+ return resolve();
237
236
  });
238
- };
239
-
240
- TsOpenTokSession.prototype.createSubscriber = function createSubscriber(stream, target, params) {
241
- var _this6 = this;
242
-
243
- return new Promise(function (resolve, reject) {
244
- if (stream._otstream.destroyed) {
245
- return reject(stream._otstream.destroyedReason);
246
- }
247
237
 
248
- var finish = _.once(function (err, res) {
249
- if (err) {
250
- return reject(err);
251
- }
238
+ publisher._otpublisher.once('destroyed', function () {
239
+ publisher.emit(_publisher.EVENTS.DESTROYED);
252
240
 
253
- return resolve(res);
254
- });
241
+ publisher._otpublisher.off();
255
242
 
256
- function onDestroy(event) {
257
- if (event.stream.id === stream._otstream.id) {
258
- finish(event.stream.destroyedReason);
259
- }
260
- }
243
+ publisher._otpublisher = null;
244
+ });
261
245
 
262
- _this6._session.on('streamDestroyed', onDestroy);
263
- var otsubscriber = _this6._session.subscribe(stream._otstream, target, params, function (error) {
264
- _this6._session.off('streamDestroyed', onDestroy);
246
+ _this5._session.publish(publisher._otpublisher, function (error) {
247
+ if (error) {
248
+ return reject(error);
249
+ }
250
+ });
251
+ });
252
+ }
253
+ }, {
254
+ key: "destroyPublisher",
255
+ value: function destroyPublisher(publisher) {
256
+ return new Promise(function (resolve) {
257
+ publisher._otpublisher.off();
258
+
259
+ publisher._otpublisher.once('destroyed', function () {
260
+ publisher._otpublisher = null;
261
+ resolve();
262
+ });
265
263
 
266
- if (error) {
267
- return finish(error);
268
- }
264
+ publisher._otpublisher.destroy();
265
+ });
266
+ }
267
+ }, {
268
+ key: "createSubscriber",
269
+ value: function createSubscriber(stream, target, params) {
270
+ var _this6 = this;
271
+
272
+ return new Promise(function (resolve, reject) {
273
+ if (stream._otstream.destroyed) {
274
+ return reject(stream._otstream.destroyedReason);
275
+ }
269
276
 
270
- var subscriber = new _subscriber.TsMediaSubscriber({
271
- stream: stream,
272
- _otsubscriber: otsubscriber,
273
- _session: _this6
274
- });
277
+ var finish = _.once(function (err, res) {
278
+ if (err) {
279
+ return reject(err);
280
+ }
275
281
 
276
- return finish(null, subscriber);
277
- });
282
+ return resolve(res);
278
283
  });
279
- };
280
284
 
281
- TsOpenTokSession.prototype.destroySubscriber = function destroySubscriber(subscriber) {
282
- if (!subscriber._otsubscriber || !(subscriber._otsubscriber.element || subscriber._otsubscriber.stream)) {
283
- return Promise.resolve();
285
+ function onDestroy(event) {
286
+ if (event.stream.id === stream._otstream.id) {
287
+ finish(event.stream.destroyedReason);
288
+ }
284
289
  }
285
290
 
286
- return new Promise(function (resolve) {
287
- subscriber._otsubscriber.off();
291
+ _this6._session.on('streamDestroyed', onDestroy);
288
292
 
289
- subscriber._otsubscriber.on('destroyed', function () {
290
- subscriber._otsubscriber = null;
293
+ var otsubscriber = _this6._session.subscribe(stream._otstream, target, params, function (error) {
294
+ _this6._session.off('streamDestroyed', onDestroy);
291
295
 
292
- return resolve();
293
- });
296
+ if (error) {
297
+ return finish(error);
298
+ }
294
299
 
295
- subscriber._otsubscriber.destroy();
296
- }).timeout(5000).catch(function () {
297
- return null;
300
+ var subscriber = new _subscriber.TsMediaSubscriber({
301
+ stream: stream,
302
+ _otsubscriber: otsubscriber,
303
+ _session: _this6
304
+ });
305
+ return finish(null, subscriber);
306
+ });
307
+ });
308
+ }
309
+ }, {
310
+ key: "destroySubscriber",
311
+ value: function destroySubscriber(subscriber) {
312
+ if (!subscriber._otsubscriber || !(subscriber._otsubscriber.element || subscriber._otsubscriber.stream)) {
313
+ return Promise.resolve();
314
+ }
315
+
316
+ return new Promise(function (resolve) {
317
+ subscriber._otsubscriber.off();
318
+
319
+ subscriber._otsubscriber.on('destroyed', function () {
320
+ subscriber._otsubscriber = null;
321
+ return resolve();
298
322
  });
299
- };
300
323
 
301
- _createClass(TsOpenTokSession, [{
302
- key: 'id',
303
- get: function get() {
304
- return this._session && this._session.sessionId;
305
- }
306
- }]);
324
+ subscriber._otsubscriber.destroy();
325
+ }).timeout(5000)["catch"](function () {
326
+ return null;
327
+ });
328
+ }
329
+ }]);
307
330
 
308
- return TsOpenTokSession;
331
+ return TsOpenTokSession;
309
332
  }(_session.TsMediaSession);
333
+
334
+ exports.TsOpenTokSession = TsOpenTokSession;
310
335
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["oldCode/opentok/session.js"],"names":["TsOpenTokSession","credentials","_credentials","_session","OT","initSession","apiKey","sessionId","_disconnectIfAlreadyConnected","isConnected","Promise","resolve","disconnect","connect","then","reject","on","emit","EVENTS","CONNECTED","e","DISCONNECTED","STREAM_CREATED","TsOpenTokStream","stream","_streams","delete","id","STREAM_DESTROYED","changedProperty","get","newEvent","property","value","newValue","STREAM_PROPERTY_CHANGED","token","error","off","keepSession","sessionFinalized","finalizeSession","event","once","setTimeout","reason","createPublisher","target","params","otparams","videoSource","audioSource","showControls","name","publishAudio","publishVideo","constraints","video","facingMode","videoDevice","_","assign","deviceId","videoParams","audioDevice","otpublisher","initPublisher","publisher","TsMediaPublisher","_otpublisher","publish","remote","videoWidth","videoHeight","PUBLISHER_EVENTS","getVideoElement","element","setupDimensionsListener","DESTROYED","destroyPublisher","destroy","createSubscriber","_otstream","destroyed","destroyedReason","finish","err","res","onDestroy","otsubscriber","subscribe","subscriber","TsMediaSubscriber","_otsubscriber","destroySubscriber","timeout","catch","TsMediaSession"],"mappings":"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","file":"session.js","sourcesContent":["import {\n EVENTS,\n TsMediaSession,\n} from '../session';\n\nimport {\n EVENTS as PUBLISHER_EVENTS,\n TsMediaPublisher,\n} from '../publisher';\n\nimport {\n TsMediaSubscriber,\n} from '../subscriber';\n\nimport {\n TsOpenTokStream,\n} from './stream';\n\nexport class TsOpenTokSession extends TsMediaSession {\n constructor({credentials}) {\n super();\n\n this._credentials = credentials;\n this._session = OT.initSession(\n credentials.apiKey,\n credentials.sessionId\n );\n }\n\n get id() {\n return this._session && this._session.sessionId;\n }\n\n _disconnectIfAlreadyConnected() {\n if (!this._session.isConnected()) {\n return Promise.resolve();\n }\n\n return this.disconnect(true);\n }\n\n connect() {\n return this._disconnectIfAlreadyConnected()\n .then(() => new Promise((resolve, reject) => {\n this._session.on('sessionConnected', () => {\n this.emit(EVENTS.CONNECTED);\n });\n this._session.on('sessionDisconnected', (e) => {\n this.emit(EVENTS.DISCONNECTED, e);\n });\n\n this._session.on('streamCreated', (e) => {\n this.emit(EVENTS.STREAM_CREATED, new TsOpenTokStream(this, e.stream));\n });\n\n this._session.on('streamDestroyed', (e) => {\n this._streams.delete(e.stream.id);\n\n this.emit(EVENTS.STREAM_DESTROYED, e);\n });\n this._session.on('streamPropertyChanged', (e) => {\n if (e.changedProperty === 'videoDimensions') {\n return;\n }\n\n const stream = this._streams.get(e.stream.id);\n\n const newEvent = {\n stream,\n property: e.changedProperty,\n value: e.newValue,\n };\n\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, newEvent);\n });\n\n\n this._session.connect(this._credentials.token, (error) => {\n if (error) {\n this._session.off();\n\n return reject(error);\n }\n\n return resolve();\n });\n }));\n }\n\n disconnect(keepSession) {\n return new Promise((resolve) => {\n this._session.off();\n\n let sessionFinalized = false;\n\n const finalizeSession = (event) => {\n if (sessionFinalized) {\n return;\n }\n\n sessionFinalized = true;\n\n if (!keepSession) {\n this._session = null;\n\n this.emit(EVENTS.DISCONNECTED);\n }\n\n resolve(event);\n };\n\n this._session.once('sessionDisconnected', (event) => finalizeSession(event));\n\n setTimeout(() => finalizeSession({reason: 'clientDisconnectedTimeout'}), 5000);\n\n this._session.disconnect();\n });\n }\n\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n const otparams = {\n videoSource: null,\n audioSource: null,\n showControls: false,\n name: params.name,\n publishAudio: false,\n publishVideo: false,\n constraints: {\n video: {\n facingMode: 'environment'\n }\n }\n };\n\n if (params.videoDevice) {\n _.assign(otparams, {\n publishVideo: true,\n videoSource: params.videoDevice,\n });\n\n otparams.constraints.video.deviceId = params.videoDevice;\n\n if (params.videoParams) {\n _.assign(otparams, params.videoParams);\n }\n }\n\n if (params.audioDevice) {\n _.assign(otparams, {\n publishAudio: true,\n audioSource: params.audioDevice,\n });\n }\n\n return new Promise((resolve, reject) => {\n const otpublisher = OT.initPublisher(target, otparams, (error) => {\n if (error) {\n return reject(error);\n }\n\n const publisher = new TsMediaPublisher(this, {\n _otpublisher: otpublisher,\n });\n\n return resolve(publisher);\n });\n });\n }\n\n publish(publisher) {\n return new Promise((resolve, reject) => {\n publisher._otpublisher.once('streamCreated', (event) => {\n const stream = new TsOpenTokStream(this, event.stream);\n\n publisher.stream = stream;\n stream.publisher = publisher;\n stream.remote = false;\n\n publisher.videoWidth = publisher._otpublisher.videoWidth();\n publisher.videoHeight = publisher._otpublisher.videoHeight();\n\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, stream);\n\n const video = stream.getVideoElement(publisher._otpublisher.element)[0];\n\n stream.setupDimensionsListener(video);\n\n return resolve();\n });\n\n publisher._otpublisher.once('destroyed', () => {\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n publisher._otpublisher.off();\n publisher._otpublisher = null;\n });\n\n this._session.publish(publisher._otpublisher, (error) => {\n if (error) {\n return reject(error);\n }\n });\n });\n }\n\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher._otpublisher.off();\n\n publisher._otpublisher.once('destroyed', () => {\n publisher._otpublisher = null;\n\n resolve();\n });\n\n publisher._otpublisher.destroy();\n });\n }\n\n createSubscriber(stream, target, params) {\n return new Promise((resolve, reject) => {\n if (stream._otstream.destroyed) {\n return reject(stream._otstream.destroyedReason);\n }\n\n const finish = _.once((err, res) => {\n if (err) {\n return reject(err);\n }\n\n return resolve(res);\n });\n\n function onDestroy(event) {\n if (event.stream.id === stream._otstream.id) {\n finish(event.stream.destroyedReason);\n }\n }\n\n this._session.on('streamDestroyed', onDestroy);\n const otsubscriber = this._session.subscribe(\n stream._otstream, target, params,\n (error) => {\n this._session.off('streamDestroyed', onDestroy);\n\n if (error) {\n return finish(error);\n }\n\n const subscriber = new TsMediaSubscriber({\n stream,\n _otsubscriber: otsubscriber,\n _session: this,\n });\n\n return finish(null, subscriber);\n }\n );\n });\n }\n\n destroySubscriber(subscriber) {\n if (!subscriber._otsubscriber || !(subscriber._otsubscriber.element || subscriber._otsubscriber.stream)) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n subscriber._otsubscriber.off();\n\n subscriber._otsubscriber.on('destroyed', () => {\n subscriber._otsubscriber = null;\n\n return resolve();\n });\n\n subscriber._otsubscriber.destroy();\n })\n .timeout(5000)\n .catch(() => null);\n }\n}\n\n"]}
1
+ {"version":3,"sources":["oldCode/opentok/session.js"],"names":["TsOpenTokSession","credentials","_credentials","_session","OT","initSession","apiKey","sessionId","isConnected","Promise","resolve","disconnect","_disconnectIfAlreadyConnected","then","reject","on","emit","EVENTS","CONNECTED","e","DISCONNECTED","STREAM_CREATED","TsOpenTokStream","stream","_streams","id","STREAM_DESTROYED","changedProperty","get","newEvent","property","value","newValue","STREAM_PROPERTY_CHANGED","connect","token","error","off","keepSession","sessionFinalized","finalizeSession","event","once","setTimeout","reason","target","params","otparams","videoSource","audioSource","showControls","name","publishAudio","publishVideo","constraints","video","facingMode","videoDevice","_","assign","deviceId","videoParams","audioDevice","otpublisher","initPublisher","publisher","TsMediaPublisher","_otpublisher","remote","videoWidth","videoHeight","PUBLISHER_EVENTS","getVideoElement","element","setupDimensionsListener","DESTROYED","publish","destroy","_otstream","destroyed","destroyedReason","finish","err","res","onDestroy","otsubscriber","subscribe","subscriber","TsMediaSubscriber","_otsubscriber","timeout","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 {\n TsMediaSubscriber,\n} from '../subscriber';\n\nimport {\n TsOpenTokStream,\n} from './stream';\n\nexport class TsOpenTokSession extends TsMediaSession {\n constructor({credentials}) {\n super();\n\n this._credentials = credentials;\n this._session = OT.initSession(\n credentials.apiKey,\n credentials.sessionId\n );\n }\n\n get id() {\n return this._session && this._session.sessionId;\n }\n\n _disconnectIfAlreadyConnected() {\n if (!this._session.isConnected()) {\n return Promise.resolve();\n }\n\n return this.disconnect(true);\n }\n\n connect() {\n return this._disconnectIfAlreadyConnected()\n .then(() => new Promise((resolve, reject) => {\n this._session.on('sessionConnected', () => {\n this.emit(EVENTS.CONNECTED);\n });\n this._session.on('sessionDisconnected', (e) => {\n this.emit(EVENTS.DISCONNECTED, e);\n });\n\n this._session.on('streamCreated', (e) => {\n this.emit(EVENTS.STREAM_CREATED, new TsOpenTokStream(this, e.stream));\n });\n\n this._session.on('streamDestroyed', (e) => {\n this._streams.delete(e.stream.id);\n\n this.emit(EVENTS.STREAM_DESTROYED, e);\n });\n this._session.on('streamPropertyChanged', (e) => {\n if (e.changedProperty === 'videoDimensions') {\n return;\n }\n\n const stream = this._streams.get(e.stream.id);\n\n const newEvent = {\n stream,\n property: e.changedProperty,\n value: e.newValue,\n };\n\n this.emit(EVENTS.STREAM_PROPERTY_CHANGED, newEvent);\n });\n\n\n this._session.connect(this._credentials.token, (error) => {\n if (error) {\n this._session.off();\n\n return reject(error);\n }\n\n return resolve();\n });\n }));\n }\n\n disconnect(keepSession) {\n return new Promise((resolve) => {\n this._session.off();\n\n let sessionFinalized = false;\n\n const finalizeSession = (event) => {\n if (sessionFinalized) {\n return;\n }\n\n sessionFinalized = true;\n\n if (!keepSession) {\n this._session = null;\n\n this.emit(EVENTS.DISCONNECTED);\n }\n\n resolve(event);\n };\n\n this._session.once('sessionDisconnected', (event) => finalizeSession(event));\n\n setTimeout(() => finalizeSession({reason: 'clientDisconnectedTimeout'}), 5000);\n\n this._session.disconnect();\n });\n }\n\n createPublisher(target, params) {\n if (!params) {\n params = target;\n target = null;\n }\n\n const otparams = {\n videoSource: null,\n audioSource: null,\n showControls: false,\n name: params.name,\n publishAudio: false,\n publishVideo: false,\n constraints: {\n video: {\n facingMode: 'environment'\n }\n }\n };\n\n if (params.videoDevice) {\n _.assign(otparams, {\n publishVideo: true,\n videoSource: params.videoDevice,\n });\n\n otparams.constraints.video.deviceId = params.videoDevice;\n\n if (params.videoParams) {\n _.assign(otparams, params.videoParams);\n }\n }\n\n if (params.audioDevice) {\n _.assign(otparams, {\n publishAudio: true,\n audioSource: params.audioDevice,\n });\n }\n\n return new Promise((resolve, reject) => {\n const otpublisher = OT.initPublisher(target, otparams, (error) => {\n if (error) {\n return reject(error);\n }\n\n const publisher = new TsMediaPublisher(this, {\n _otpublisher: otpublisher,\n });\n\n return resolve(publisher);\n });\n });\n }\n\n publish(publisher) {\n return new Promise((resolve, reject) => {\n publisher._otpublisher.once('streamCreated', (event) => {\n const stream = new TsOpenTokStream(this, event.stream);\n\n publisher.stream = stream;\n stream.publisher = publisher;\n stream.remote = false;\n\n publisher.videoWidth = publisher._otpublisher.videoWidth();\n publisher.videoHeight = publisher._otpublisher.videoHeight();\n\n publisher.emit(PUBLISHER_EVENTS.STREAM_CREATED, stream);\n\n const video = stream.getVideoElement(publisher._otpublisher.element)[0];\n\n stream.setupDimensionsListener(video);\n\n return resolve();\n });\n\n publisher._otpublisher.once('destroyed', () => {\n publisher.emit(PUBLISHER_EVENTS.DESTROYED);\n\n publisher._otpublisher.off();\n publisher._otpublisher = null;\n });\n\n this._session.publish(publisher._otpublisher, (error) => {\n if (error) {\n return reject(error);\n }\n });\n });\n }\n\n destroyPublisher(publisher) {\n return new Promise((resolve) => {\n publisher._otpublisher.off();\n\n publisher._otpublisher.once('destroyed', () => {\n publisher._otpublisher = null;\n\n resolve();\n });\n\n publisher._otpublisher.destroy();\n });\n }\n\n createSubscriber(stream, target, params) {\n return new Promise((resolve, reject) => {\n if (stream._otstream.destroyed) {\n return reject(stream._otstream.destroyedReason);\n }\n\n const finish = _.once((err, res) => {\n if (err) {\n return reject(err);\n }\n\n return resolve(res);\n });\n\n function onDestroy(event) {\n if (event.stream.id === stream._otstream.id) {\n finish(event.stream.destroyedReason);\n }\n }\n\n this._session.on('streamDestroyed', onDestroy);\n const otsubscriber = this._session.subscribe(\n stream._otstream, target, params,\n (error) => {\n this._session.off('streamDestroyed', onDestroy);\n\n if (error) {\n return finish(error);\n }\n\n const subscriber = new TsMediaSubscriber({\n stream,\n _otsubscriber: otsubscriber,\n _session: this,\n });\n\n return finish(null, subscriber);\n }\n );\n });\n }\n\n destroySubscriber(subscriber) {\n if (!subscriber._otsubscriber || !(subscriber._otsubscriber.element || subscriber._otsubscriber.stream)) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n subscriber._otsubscriber.off();\n\n subscriber._otsubscriber.on('destroyed', () => {\n subscriber._otsubscriber = null;\n\n return resolve();\n });\n\n subscriber._otsubscriber.destroy();\n })\n .timeout(5000)\n .catch(() => null);\n }\n}\n\n"],"file":"session.js"}