@flashphoner/websdk 2.0.211 → 2.0.216

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.
@@ -10420,7 +10420,12 @@ var createConnection = function createConnection(options) {
10420
10420
  var id = options.id;
10421
10421
  var authToken = options.authToken;
10422
10422
  var display = options.display || options.localDisplay;
10423
- var flashBufferTime = options.flashBufferTime || 0;
10423
+ var flashBufferTime = options.flashBufferTime || 0; // Set connection logger #WCS-2434
10424
+
10425
+ if (options.logger) {
10426
+ logger = options.logger;
10427
+ }
10428
+
10424
10429
  var url = getConnectionUrl(options.mainUrl, options.flashProto, options.flashPort); //todo state from flash instance
10425
10430
 
10426
10431
  var state = function state() {
@@ -11041,8 +11046,9 @@ var constants = require("./constants");
11041
11046
 
11042
11047
  var util = require('./util');
11043
11048
 
11044
- var logger = require('./util').logger;
11049
+ var LoggerObject = require('./util').logger;
11045
11050
 
11051
+ var coreLogger;
11046
11052
  var loggerConf = {
11047
11053
  push: false,
11048
11054
  severity: "INFO"
@@ -11090,7 +11096,7 @@ var disableConnectionQualityCalculation;
11090
11096
  * @param {String=} options.decoderLocation Location of video-worker2.js file
11091
11097
  * @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
11092
11098
  * @param {Object=} options.constraints Default local media constraints
11093
- * @param {Object=} options.logger Enable logging
11099
+ * @param {Object=} options.logger Core logger options
11094
11100
  * @throws {Error} Error if none of MediaProviders available
11095
11101
  * @memberof Flashphoner
11096
11102
  */
@@ -11099,16 +11105,10 @@ var init = function init(options) {
11099
11105
  if (!initialized) {
11100
11106
  if (!options) {
11101
11107
  options = {};
11102
- }
11108
+ } // init global logger
11103
11109
 
11104
- loggerConf = options.logger || loggerConf;
11105
11110
 
11106
- if (options.logger !== null) {
11107
- loggerConf.enableLogs = true;
11108
- } // init logger
11109
-
11110
-
11111
- logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
11111
+ coreLogger = createLogger(options.logger);
11112
11112
  var waitingTemasys = false;
11113
11113
 
11114
11114
  try {
@@ -11129,7 +11129,7 @@ var init = function init(options) {
11129
11129
  constraints: options.constraints || getDefaultMediaConstraints(),
11130
11130
  extensionId: options.screenSharingExtensionId,
11131
11131
  audioContext: audioContext,
11132
- logger: logger,
11132
+ logger: coreLogger,
11133
11133
  createMicGainNode: enableGainNode
11134
11134
  };
11135
11135
  webRtcProvider.configure(webRtcConf);
@@ -11146,7 +11146,7 @@ var init = function init(options) {
11146
11146
  var webRtcConf = {
11147
11147
  constraints: options.constraints || getDefaultMediaConstraints(),
11148
11148
  extensionId: options.screenSharingExtensionId,
11149
- logger: logger
11149
+ logger: coreLogger
11150
11150
  };
11151
11151
  webRtcProvider.configure(webRtcConf); // Just reorder media provider list
11152
11152
 
@@ -11174,7 +11174,7 @@ var init = function init(options) {
11174
11174
  var flashConf = {
11175
11175
  constraints: options.constraints || getDefaultMediaConstraints(),
11176
11176
  flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
11177
- logger: logger
11177
+ logger: coreLogger
11178
11178
  };
11179
11179
  flashProvider.configure(flashConf);
11180
11180
  }
@@ -11198,7 +11198,7 @@ var init = function init(options) {
11198
11198
  receiverLocation: options.receiverLocation,
11199
11199
  decoderLocation: options.decoderLocation,
11200
11200
  audioContext: audioContext,
11201
- logger: logger
11201
+ logger: coreLogger
11202
11202
  };
11203
11203
  websocketProvider.configure(wsConf);
11204
11204
  } //check at least 1 provider available
@@ -11220,7 +11220,7 @@ var init = function init(options) {
11220
11220
  MediaProvider = _MediaProvider;
11221
11221
  }
11222
11222
  } else {
11223
- logger.warn(LOG_PREFIX, "Preferred media provider is not available.");
11223
+ corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
11224
11224
  }
11225
11225
  }
11226
11226
 
@@ -11248,7 +11248,7 @@ var init = function init(options) {
11248
11248
  options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
11249
11249
  }
11250
11250
 
11251
- logger.info(LOG_PREFIX, "Initialized");
11251
+ coreLogger.info(LOG_PREFIX, "Initialized");
11252
11252
  initialized = true;
11253
11253
  }
11254
11254
  };
@@ -11287,7 +11287,7 @@ var playFirstVideo = function playFirstVideo(display, isLocal, src) {
11287
11287
  }
11288
11288
  };
11289
11289
  /**
11290
- * Get logger
11290
+ * Get core logger
11291
11291
  *
11292
11292
  * @returns {Object} Logger
11293
11293
  * @memberof Flashphoner
@@ -11298,7 +11298,7 @@ var getLogger = function getLogger() {
11298
11298
  if (!initialized) {
11299
11299
  console.warn("Initialize API first.");
11300
11300
  } else {
11301
- return logger;
11301
+ return coreLogger;
11302
11302
  }
11303
11303
  };
11304
11304
  /**
@@ -11471,6 +11471,31 @@ var getSessions = function getSessions() {
11471
11471
 
11472
11472
  var getSession = function getSession(id) {
11473
11473
  return sessions[id];
11474
+ }; // Get logger configuration from options
11475
+
11476
+
11477
+ var getLoggerConf = function getLoggerConf(loggerOptions) {
11478
+ var conf = loggerOptions || loggerConf;
11479
+
11480
+ if (loggerOptions !== null) {
11481
+ conf.enableLogs = true;
11482
+ }
11483
+
11484
+ return conf;
11485
+ }; // Create a new logger object
11486
+
11487
+
11488
+ var createLogger = function createLogger(loggerOptions) {
11489
+ var parentLogger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : coreLogger;
11490
+ var newLogger = parentLogger;
11491
+
11492
+ if (newLogger === undefined || loggerOptions != undefined) {
11493
+ var loggerConf = getLoggerConf(loggerOptions);
11494
+ newLogger = new LoggerObject();
11495
+ newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
11496
+ }
11497
+
11498
+ return newLogger;
11474
11499
  };
11475
11500
  /**
11476
11501
  * Create new session and connect to server.
@@ -11490,6 +11515,7 @@ var getSession = function getSession(id) {
11490
11515
  * @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
11491
11516
  * @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
11492
11517
  * @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
11518
+ * @param {Object=} options.logger Session logger options
11493
11519
  * @returns {Session} Created session
11494
11520
  * @throws {Error} Error if API is not initialized
11495
11521
  * @throws {TypeError} Error if options.urlServer is not specified
@@ -11504,8 +11530,12 @@ var createSession = function createSession(options) {
11504
11530
 
11505
11531
  if (!options || !options.urlServer) {
11506
11532
  throw new TypeError("options.urlServer must be provided");
11507
- }
11533
+ } // Set session logger #WCS-2434
11534
+
11535
+
11536
+ var sessionLogger = createLogger(options.logger); // Override logger for all low level operations
11508
11537
 
11538
+ var logger = sessionLogger;
11509
11539
  var id_ = uuid_v1();
11510
11540
  var sessionStatus = SESSION_STATUS.PENDING;
11511
11541
  var urlServer = options.urlServer;
@@ -11611,7 +11641,7 @@ var createSession = function createSession(options) {
11611
11641
  if (timeout != undefined && timeout > 0) {
11612
11642
  connectionTimeout = setTimeout(function () {
11613
11643
  if (wsConnection.readyState == 0) {
11614
- console.log("WS connection timeout");
11644
+ logger.warn(LOG_PREFIX, "WS connection timeout");
11615
11645
  wsConnection.close();
11616
11646
  }
11617
11647
  }, timeout);
@@ -11635,7 +11665,7 @@ var createSession = function createSession(options) {
11635
11665
  mediaProviders: Object.keys(MediaProvider),
11636
11666
  keepAlive: keepAlive,
11637
11667
  authToken: authToken,
11638
- clientVersion: "2.0.211",
11668
+ clientVersion: "2.0.216",
11639
11669
  clientOSVersion: window.navigator.appVersion,
11640
11670
  clientBrowserVersion: window.navigator.userAgent,
11641
11671
  msePacketizationVersion: 2,
@@ -11941,6 +11971,7 @@ var createSession = function createSession(options) {
11941
11971
  * @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
11942
11972
  * @param {Array<string>=} options.sipHeaders Array of custom SIP headers
11943
11973
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
11974
+ * @param {Object=} options.logger Call logger options
11944
11975
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
11945
11976
  * @returns {Call} Call
11946
11977
  * @throws {TypeError} Error if no options provided
@@ -11953,15 +11984,18 @@ var createSession = function createSession(options) {
11953
11984
  var createCall = function createCall(options) {
11954
11985
  //check session state
11955
11986
  if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
11956
- logger.info(LOG_PREFIX, "Status is " + sessionStatus);
11957
- throw new Error('Invalid session state');
11987
+ throw new Error('Invalid session state ' + sessionStatus);
11958
11988
  } //check options
11959
11989
 
11960
11990
 
11961
11991
  if (!options) {
11962
11992
  throw new TypeError("options must be provided");
11963
- }
11993
+ } // Set call logger #WCS-2434
11994
+
11995
+
11996
+ var callLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
11964
11997
 
11998
+ var logger = callLogger;
11965
11999
  var login = appKey == 'clickToCallApp' ? '' : cConfig.sipLogin;
11966
12000
  var caller_ = options.incoming ? options.caller : login;
11967
12001
  var callee_ = options.callee;
@@ -12107,7 +12141,8 @@ var createSession = function createSession(options) {
12107
12141
  constraints: constraints,
12108
12142
  connectionConfig: mediaOptions,
12109
12143
  audioOutputId: audioOutputId,
12110
- videoContentHint: videoContentHint
12144
+ videoContentHint: videoContentHint,
12145
+ logger: logger
12111
12146
  }).then(function (newConnection) {
12112
12147
  mediaConnection = newConnection;
12113
12148
  return mediaConnection.createOffer({
@@ -12693,7 +12728,7 @@ var createSession = function createSession(options) {
12693
12728
  /**
12694
12729
  * Get call info
12695
12730
  * @returns {string} Info
12696
- * @memberof Stream
12731
+ * @memberof Call
12697
12732
  * @inner
12698
12733
  */
12699
12734
 
@@ -12704,7 +12739,7 @@ var createSession = function createSession(options) {
12704
12739
  /**
12705
12740
  * Get stream error info
12706
12741
  * @returns {string} Error info
12707
- * @memberof Stream
12742
+ * @memberof Call
12708
12743
  * @inner
12709
12744
  */
12710
12745
 
@@ -12712,6 +12747,17 @@ var createSession = function createSession(options) {
12712
12747
  var getErrorInfo = function getErrorInfo() {
12713
12748
  return errorInfo_;
12714
12749
  };
12750
+ /**
12751
+ * Get call logger
12752
+ *
12753
+ * @returns {Object} Logger
12754
+ * @memberof Call
12755
+ */
12756
+
12757
+
12758
+ var getLogger = function getLogger() {
12759
+ return callLogger;
12760
+ };
12715
12761
 
12716
12762
  call.call = call_;
12717
12763
  call.answer = answer;
@@ -12743,6 +12789,7 @@ var createSession = function createSession(options) {
12743
12789
  call.switchMic = switchMic;
12744
12790
  call.switchToScreen = switchToScreen;
12745
12791
  call.switchToCam = switchToCam;
12792
+ call.getLogger = getLogger;
12746
12793
  calls[id_] = call;
12747
12794
  return call;
12748
12795
  };
@@ -12789,6 +12836,7 @@ var createSession = function createSession(options) {
12789
12836
  * @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
12790
12837
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
12791
12838
  * @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
12839
+ * @param {Object=} options.logger Stream logger options
12792
12840
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
12793
12841
  * @returns {Stream} Stream
12794
12842
  * @throws {TypeError} Error if no options provided
@@ -12804,7 +12852,7 @@ var createSession = function createSession(options) {
12804
12852
  var availableCallbacks = []; //check session state
12805
12853
 
12806
12854
  if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
12807
- throw new Error('Invalid session state');
12855
+ throw new Error('Invalid session state ' + sessionStatus);
12808
12856
  } //check options
12809
12857
 
12810
12858
 
@@ -12814,8 +12862,12 @@ var createSession = function createSession(options) {
12814
12862
 
12815
12863
  if (!options.name) {
12816
12864
  throw new TypeError("options.name must be provided");
12817
- }
12865
+ } // Set stream logger #WCS-2434
12866
+
12818
12867
 
12868
+ var streamLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
12869
+
12870
+ var logger = streamLogger;
12819
12871
  var clientKf = new KalmanFilter();
12820
12872
  var serverKf = new KalmanFilter();
12821
12873
  var id_ = uuid_v1();
@@ -13059,7 +13111,7 @@ var createSession = function createSession(options) {
13059
13111
  logger.debug(LOG_PREFIX, "Play stream " + name_);
13060
13112
 
13061
13113
  if (status_ !== STREAM_STATUS.NEW) {
13062
- throw new Error("Invalid stream state");
13114
+ throw new Error("Invalid stream state " + status_);
13063
13115
  }
13064
13116
 
13065
13117
  status_ = STREAM_STATUS.PENDING; //create mediaProvider connection
@@ -13078,7 +13130,8 @@ var createSession = function createSession(options) {
13078
13130
  audioOutputId: audioOutputId,
13079
13131
  remoteVideo: remoteVideo,
13080
13132
  playoutDelay: playoutDelay,
13081
- unmutePlayOnStart: unmutePlayOnStart
13133
+ unmutePlayOnStart: unmutePlayOnStart,
13134
+ logger: logger
13082
13135
  }, streamRefreshHandlers[id_]).then(function (newConnection) {
13083
13136
  mediaConnection = newConnection;
13084
13137
 
@@ -13142,7 +13195,7 @@ var createSession = function createSession(options) {
13142
13195
  logger.debug(LOG_PREFIX, "Publish stream " + name_);
13143
13196
 
13144
13197
  if (status_ !== STREAM_STATUS.NEW) {
13145
- throw new Error("Invalid stream state");
13198
+ throw new Error("Invalid stream state " + status_);
13146
13199
  }
13147
13200
 
13148
13201
  status_ = STREAM_STATUS.PENDING;
@@ -13176,7 +13229,8 @@ var createSession = function createSession(options) {
13176
13229
  connectionConfig: mediaOptions,
13177
13230
  connectionConstraints: mediaConnectionConstraints,
13178
13231
  customStream: constraints && constraints.customStream ? constraints.customStream : false,
13179
- videoContentHint: videoContentHint
13232
+ videoContentHint: videoContentHint,
13233
+ logger: logger
13180
13234
  }).then(function (newConnection) {
13181
13235
  mediaConnection = newConnection;
13182
13236
  return mediaConnection.createOffer({
@@ -13806,6 +13860,17 @@ var createSession = function createSession(options) {
13806
13860
  availableCallbacks.push(promise);
13807
13861
  });
13808
13862
  };
13863
+ /**
13864
+ * Get stream logger
13865
+ *
13866
+ * @returns {Object} Logger
13867
+ * @memberof Stream
13868
+ */
13869
+
13870
+
13871
+ var getLogger = function getLogger() {
13872
+ return streamLogger;
13873
+ };
13809
13874
 
13810
13875
  stream.play = play;
13811
13876
  stream.publish = publish;
@@ -13845,6 +13910,7 @@ var createSession = function createSession(options) {
13845
13910
  stream.switchToScreen = switchToScreen;
13846
13911
  stream.switchToCam = switchToCam;
13847
13912
  stream.sendData = sendData;
13913
+ stream.getLogger = getLogger;
13848
13914
  streams[id_] = stream;
13849
13915
  return stream;
13850
13916
  };
@@ -14053,6 +14119,17 @@ var createSession = function createSession(options) {
14053
14119
  }
14054
14120
 
14055
14121
  return sdp;
14122
+ };
14123
+ /**
14124
+ * Get session logger
14125
+ *
14126
+ * @returns {Object} Logger
14127
+ * @memberof Session
14128
+ */
14129
+
14130
+
14131
+ var getLogger = function getLogger() {
14132
+ return sessionLogger;
14056
14133
  }; //export Session
14057
14134
 
14058
14135
 
@@ -14068,7 +14145,8 @@ var createSession = function createSession(options) {
14068
14145
  session.submitBugReport = submitBugReport;
14069
14146
  session.startDebug = startDebug;
14070
14147
  session.stopDebug = stopDebug;
14071
- session.on = on; //save interface to global map
14148
+ session.on = on;
14149
+ session.getLogger = getLogger; //save interface to global map
14072
14150
 
14073
14151
  sessions[id_] = session;
14074
14152
  return session;
@@ -14114,165 +14192,171 @@ function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeo
14114
14192
  },{}],44:[function(require,module,exports){
14115
14193
  'use strict';
14116
14194
 
14117
- module.exports = {
14118
- isEmptyObject: function isEmptyObject(obj) {
14119
- for (var name in obj) {
14120
- return false;
14121
- }
14195
+ var isEmptyObject = function isEmptyObject(obj) {
14196
+ for (var name in obj) {
14197
+ return false;
14198
+ }
14122
14199
 
14123
- return true;
14124
- },
14200
+ return true;
14201
+ };
14202
+ /**
14203
+ * Copy values of object own properties to array.
14204
+ *
14205
+ * @param obj
14206
+ * @returns {Array}
14207
+ */
14125
14208
 
14126
- /**
14127
- * Copy values of object own properties to array.
14128
- *
14129
- * @param obj
14130
- * @returns {Array}
14131
- */
14132
- copyObjectToArray: function copyObjectToArray(obj) {
14133
- var ret = [];
14134
14209
 
14135
- for (var prop in obj) {
14136
- if (obj.hasOwnProperty(prop)) {
14137
- ret.push(obj[prop]);
14138
- }
14210
+ var copyObjectToArray = function copyObjectToArray(obj) {
14211
+ var ret = [];
14212
+
14213
+ for (var prop in obj) {
14214
+ if (obj.hasOwnProperty(prop)) {
14215
+ ret.push(obj[prop]);
14139
14216
  }
14217
+ }
14140
14218
 
14141
- return ret;
14142
- },
14219
+ return ret;
14220
+ };
14221
+ /**
14222
+ * Copy src properties to dst object.
14223
+ * Will overwrite dst prop with src prop in case of dst prop exist.
14224
+ */
14143
14225
 
14144
- /**
14145
- * Copy src properties to dst object.
14146
- * Will overwrite dst prop with src prop in case of dst prop exist.
14147
- */
14148
- copyObjectPropsToAnotherObject: function copyObjectPropsToAnotherObject(src, dst) {
14149
- for (var prop in src) {
14150
- if (src.hasOwnProperty(prop)) {
14151
- dst[prop] = src[prop];
14152
- }
14226
+
14227
+ var copyObjectPropsToAnotherObject = function copyObjectPropsToAnotherObject(src, dst) {
14228
+ for (var prop in src) {
14229
+ if (src.hasOwnProperty(prop)) {
14230
+ dst[prop] = src[prop];
14153
14231
  }
14154
- },
14155
- processRtcStatsReport: function processRtcStatsReport(browser, report) {
14156
- var result = {};
14232
+ }
14233
+ };
14157
14234
 
14158
- if (browser == "chrome") {
14159
- /**
14160
- * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
14161
- */
14162
- var gotResult = false;
14235
+ var processRtcStatsReport = function processRtcStatsReport(browser, report) {
14236
+ var result = {};
14163
14237
 
14164
- if (report.type && report.type == "googCandidatePair") {
14165
- //check if this is active pair
14166
- if (report.googActiveConnection == "true") {
14167
- gotResult = true;
14168
- }
14169
- }
14238
+ if (browser == "chrome") {
14239
+ /**
14240
+ * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
14241
+ */
14242
+ var gotResult = false;
14170
14243
 
14171
- if (report.type && report.type == "ssrc") {
14244
+ if (report.type && report.type == "googCandidatePair") {
14245
+ //check if this is active pair
14246
+ if (report.googActiveConnection == "true") {
14172
14247
  gotResult = true;
14173
14248
  }
14249
+ }
14174
14250
 
14175
- if (gotResult) {
14176
- for (var k in report) {
14177
- if (report.hasOwnProperty(k)) {
14178
- result[k] = report[k];
14179
- }
14251
+ if (report.type && report.type == "ssrc") {
14252
+ gotResult = true;
14253
+ }
14254
+
14255
+ if (gotResult) {
14256
+ for (var k in report) {
14257
+ if (report.hasOwnProperty(k)) {
14258
+ result[k] = report[k];
14180
14259
  }
14181
14260
  }
14261
+ }
14182
14262
 
14183
- return result;
14184
- } else if (browser == "firefox") {
14185
- /**
14186
- * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
14187
- */
14188
- if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
14189
- result = {};
14263
+ return result;
14264
+ } else if (browser == "firefox") {
14265
+ /**
14266
+ * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
14267
+ */
14268
+ if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
14269
+ result = {};
14190
14270
 
14191
- for (var k in report) {
14192
- if (report.hasOwnProperty(k)) {
14193
- result[k] = report[k];
14194
- }
14271
+ for (var k in report) {
14272
+ if (report.hasOwnProperty(k)) {
14273
+ result[k] = report[k];
14195
14274
  }
14196
14275
  }
14197
-
14198
- return result;
14199
- } else {
14200
- return result;
14201
14276
  }
14202
14277
 
14203
- ;
14278
+ return result;
14279
+ } else {
14280
+ return result;
14281
+ }
14282
+ };
14283
+
14284
+ var Browser = {
14285
+ isIE: function isIE() {
14286
+ return (
14287
+ /*@cc_on!@*/
14288
+ false || !!document.documentMode
14289
+ );
14204
14290
  },
14205
- Browser: {
14206
- isIE: function isIE() {
14207
- return (
14208
- /*@cc_on!@*/
14209
- false || !!document.documentMode
14210
- );
14211
- },
14212
- isFirefox: function isFirefox() {
14213
- return typeof InstallTrigger !== 'undefined';
14214
- },
14215
- isChrome: function isChrome() {
14216
- return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
14217
- },
14218
- isEdge: function isEdge() {
14219
- return !isIE && !!window.StyleMedia;
14220
- },
14221
- isOpera: function isOpera() {
14222
- return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
14223
- },
14224
- isiOS: function isiOS() {
14225
- return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
14226
- },
14227
- isSafari: function isSafari() {
14228
- var userAgent = navigator.userAgent.toLowerCase();
14229
- return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
14230
- },
14231
- isAndroid: function isAndroid() {
14232
- return navigator.userAgent.toLowerCase().indexOf("android") > -1;
14233
- },
14234
- isSafariWebRTC: function isSafariWebRTC() {
14235
- return navigator.mediaDevices && this.isSafari();
14236
- },
14237
- isSamsungBrowser: function isSamsungBrowser() {
14238
- return /SamsungBrowser/i.test(navigator.userAgent);
14239
- },
14240
- isAndroidFirefox: function isAndroidFirefox() {
14241
- return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
14242
- }
14291
+ isFirefox: function isFirefox() {
14292
+ return typeof InstallTrigger !== 'undefined';
14243
14293
  },
14244
- SDP: {
14245
- matchPrefix: function matchPrefix(sdp, prefix) {
14246
- var parts = sdp.trim().split('\n').map(function (line) {
14247
- return line.trim();
14248
- });
14249
- return parts.filter(function (line) {
14250
- return line.indexOf(prefix) === 0;
14251
- });
14252
- },
14253
- writeFmtp: function writeFmtp(sdp, param, codec) {
14254
- var sdpArray = sdp.split("\n");
14255
- var i;
14294
+ isChrome: function isChrome() {
14295
+ return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
14296
+ },
14297
+ isEdge: function isEdge() {
14298
+ return !isIE && !!window.StyleMedia;
14299
+ },
14300
+ isOpera: function isOpera() {
14301
+ return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
14302
+ },
14303
+ isiOS: function isiOS() {
14304
+ return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
14305
+ },
14306
+ isSafari: function isSafari() {
14307
+ var userAgent = navigator.userAgent.toLowerCase();
14308
+ return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
14309
+ },
14310
+ isAndroid: function isAndroid() {
14311
+ return navigator.userAgent.toLowerCase().indexOf("android") > -1;
14312
+ },
14313
+ isSafariWebRTC: function isSafariWebRTC() {
14314
+ return navigator.mediaDevices && this.isSafari();
14315
+ },
14316
+ isSamsungBrowser: function isSamsungBrowser() {
14317
+ return /SamsungBrowser/i.test(navigator.userAgent);
14318
+ },
14319
+ isAndroidFirefox: function isAndroidFirefox() {
14320
+ return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
14321
+ },
14322
+ isChromiumEdge: function isChromiumEdge() {
14323
+ return /Chrome/i.test(navigator.userAgent) && /Edg/i.test(navigator.userAgent);
14324
+ }
14325
+ };
14326
+ var SDP = {
14327
+ matchPrefix: function matchPrefix(sdp, prefix) {
14328
+ var parts = sdp.trim().split('\n').map(function (line) {
14329
+ return line.trim();
14330
+ });
14331
+ return parts.filter(function (line) {
14332
+ return line.indexOf(prefix) === 0;
14333
+ });
14334
+ },
14335
+ writeFmtp: function writeFmtp(sdp, param, codec) {
14336
+ var sdpArray = sdp.split("\n");
14337
+ var i;
14256
14338
 
14257
- for (i = 0; i < sdpArray.length; i++) {
14258
- if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
14259
- sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
14260
- }
14261
- } //normalize sdp after modifications
14339
+ for (i = 0; i < sdpArray.length; i++) {
14340
+ if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
14341
+ sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
14342
+ }
14343
+ } //normalize sdp after modifications
14262
14344
 
14263
14345
 
14264
- var result = "";
14346
+ var result = "";
14265
14347
 
14266
- for (i = 0; i < sdpArray.length; i++) {
14267
- if (sdpArray[i] != "") {
14268
- result += sdpArray[i] + "\n";
14269
- }
14348
+ for (i = 0; i < sdpArray.length; i++) {
14349
+ if (sdpArray[i] != "") {
14350
+ result += sdpArray[i] + "\n";
14270
14351
  }
14271
-
14272
- return result;
14273
14352
  }
14274
- },
14275
- logger: {
14353
+
14354
+ return result;
14355
+ }
14356
+ };
14357
+
14358
+ var logger = function logger() {
14359
+ return {
14276
14360
  init: function init(verbosity, enablePushLogs, customLogger, enableLogs) {
14277
14361
  switch (verbosity.toUpperCase()) {
14278
14362
  case "DEBUG":
@@ -14453,92 +14537,104 @@ module.exports = {
14453
14537
  default:
14454
14538
  this.verbosity = 2;
14455
14539
  }
14456
-
14457
- ;
14458
14540
  }
14459
- },
14460
- stripCodecs: function stripCodecs(sdp, codecs) {
14461
- if (!codecs.length) return sdp;
14462
- var sdpArray = sdp.split("\n");
14463
- var codecsArray = codecs.split(","); //search and delete codecs line
14541
+ };
14542
+ };
14464
14543
 
14465
- var pt = [];
14466
- var i;
14544
+ var stripCodecs = function stripCodecs(sdp, codecs) {
14545
+ if (!codecs.length) return sdp;
14546
+ var sdpArray = sdp.split("\n");
14547
+ var codecsArray = codecs.split(","); //search and delete codecs line
14467
14548
 
14468
- for (var p = 0; p < codecsArray.length; p++) {
14469
- console.log("Searching for codec " + codecsArray[p]);
14549
+ var pt = [];
14550
+ var i;
14470
14551
 
14471
- for (i = 0; i < sdpArray.length; i++) {
14472
- if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
14473
- console.log(codecsArray[p] + " detected");
14474
- pt.push(sdpArray[i].match(/[0-9]+/)[0]);
14475
- sdpArray[i] = "";
14476
- }
14552
+ for (var p = 0; p < codecsArray.length; p++) {
14553
+ console.log("Searching for codec " + codecsArray[p]);
14554
+
14555
+ for (i = 0; i < sdpArray.length; i++) {
14556
+ if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
14557
+ console.log(codecsArray[p] + " detected");
14558
+ pt.push(sdpArray[i].match(/[0-9]+/)[0]);
14559
+ sdpArray[i] = "";
14477
14560
  }
14478
14561
  }
14562
+ }
14479
14563
 
14480
- if (pt.length) {
14481
- //searching for fmtp
14482
- for (p = 0; p < pt.length; p++) {
14483
- for (i = 0; i < sdpArray.length; i++) {
14484
- if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
14485
- sdpArray[i] = "";
14486
- }
14564
+ if (pt.length) {
14565
+ //searching for fmtp
14566
+ for (p = 0; p < pt.length; p++) {
14567
+ for (i = 0; i < sdpArray.length; i++) {
14568
+ if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
14569
+ sdpArray[i] = "";
14487
14570
  }
14488
- } //delete entries from m= line
14571
+ }
14572
+ } //delete entries from m= line
14489
14573
 
14490
14574
 
14491
- for (i = 0; i < sdpArray.length; i++) {
14492
- if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
14493
- var mLineSplitted = sdpArray[i].split(" ");
14494
- var newMLine = "";
14575
+ for (i = 0; i < sdpArray.length; i++) {
14576
+ if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
14577
+ var mLineSplitted = sdpArray[i].split(" ");
14578
+ var newMLine = "";
14495
14579
 
14496
- for (var m = 0; m < mLineSplitted.length; m++) {
14497
- if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
14498
- newMLine += mLineSplitted[m];
14580
+ for (var m = 0; m < mLineSplitted.length; m++) {
14581
+ if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
14582
+ newMLine += mLineSplitted[m];
14499
14583
 
14500
- if (m < mLineSplitted.length - 1) {
14501
- newMLine = newMLine + " ";
14502
- }
14584
+ if (m < mLineSplitted.length - 1) {
14585
+ newMLine = newMLine + " ";
14503
14586
  }
14504
14587
  }
14505
-
14506
- sdpArray[i] = newMLine;
14507
14588
  }
14589
+
14590
+ sdpArray[i] = newMLine;
14508
14591
  }
14509
- } //normalize sdp after modifications
14592
+ }
14593
+ } //normalize sdp after modifications
14510
14594
 
14511
14595
 
14512
- var result = "";
14596
+ var result = "";
14513
14597
 
14514
- for (i = 0; i < sdpArray.length; i++) {
14515
- if (sdpArray[i] != "") {
14516
- result += sdpArray[i] + "\n";
14517
- }
14598
+ for (i = 0; i < sdpArray.length; i++) {
14599
+ if (sdpArray[i] != "") {
14600
+ result += sdpArray[i] + "\n";
14518
14601
  }
14602
+ }
14519
14603
 
14520
- return result;
14521
- },
14522
- getCurrentCodecAndSampleRate: function getCurrentCodecAndSampleRate(sdp, mediaType) {
14523
- var rows = sdp.split("\n");
14524
- var codecPt;
14604
+ return result;
14605
+ };
14525
14606
 
14526
- for (var i = 0; i < rows.length; i++) {
14527
- if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
14528
- var ret = {};
14529
- ret.name = rows[i].split(" ")[1].split("/")[0];
14530
- ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
14531
- return ret;
14532
- } //WCS-2136. WebRTC statistics doesn't work for VP8
14607
+ var getCurrentCodecAndSampleRate = function getCurrentCodecAndSampleRate(sdp, mediaType) {
14608
+ var rows = sdp.split("\n");
14609
+ var codecPt;
14533
14610
 
14611
+ for (var i = 0; i < rows.length; i++) {
14612
+ if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
14613
+ var ret = {};
14614
+ ret.name = rows[i].split(" ")[1].split("/")[0];
14615
+ ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
14616
+ return ret;
14617
+ } //WCS-2136. WebRTC statistics doesn't work for VP8
14534
14618
 
14535
- if (rows[i].indexOf("m=" + mediaType) != -1) {
14536
- codecPt = rows[i].split(" ")[3].trim();
14537
- }
14619
+
14620
+ if (rows[i].indexOf("m=" + mediaType) != -1) {
14621
+ codecPt = rows[i].split(" ")[3].trim();
14538
14622
  }
14539
14623
  }
14540
14624
  };
14541
14625
 
14626
+ module.exports = {
14627
+ isEmptyObject: isEmptyObject,
14628
+ copyObjectToArray: copyObjectToArray,
14629
+ copyObjectPropsToAnotherObject: copyObjectPropsToAnotherObject,
14630
+ processRtcStatsReport: processRtcStatsReport,
14631
+ Browser: Browser,
14632
+ SDP: SDP,
14633
+ logger: logger,
14634
+ stripCodecs: stripCodecs,
14635
+ getCurrentCodecAndSampleRate: getCurrentCodecAndSampleRate
14636
+ };
14637
+
14542
14638
  },{}],45:[function(require,module,exports){
14543
14639
  'use strict';
14544
14640
 
@@ -14558,7 +14654,12 @@ var audioContext;
14558
14654
  var createConnection = function createConnection(options, handlers) {
14559
14655
  return new Promise(function (resolve, reject) {
14560
14656
  var id = options.id;
14561
- var display = options.display;
14657
+ var display = options.display; // Set connection logger #WCS-2434
14658
+
14659
+ if (options.logger) {
14660
+ logger = options.logger;
14661
+ }
14662
+
14562
14663
  var canvas = document.createElement("canvas");
14563
14664
  display.appendChild(canvas);
14564
14665
  canvas.id = id;