@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.
@@ -18344,7 +18344,12 @@ var createConnection = function createConnection(options) {
18344
18344
  var id = options.id;
18345
18345
  var authToken = options.authToken;
18346
18346
  var display = options.display || options.localDisplay;
18347
- var flashBufferTime = options.flashBufferTime || 0;
18347
+ var flashBufferTime = options.flashBufferTime || 0; // Set connection logger #WCS-2434
18348
+
18349
+ if (options.logger) {
18350
+ logger = options.logger;
18351
+ }
18352
+
18348
18353
  var url = getConnectionUrl(options.mainUrl, options.flashProto, options.flashPort); //todo state from flash instance
18349
18354
 
18350
18355
  var state = function state() {
@@ -18965,8 +18970,9 @@ var constants = require("./constants");
18965
18970
 
18966
18971
  var util = require('./util');
18967
18972
 
18968
- var logger = require('./util').logger;
18973
+ var LoggerObject = require('./util').logger;
18969
18974
 
18975
+ var coreLogger;
18970
18976
  var loggerConf = {
18971
18977
  push: false,
18972
18978
  severity: "INFO"
@@ -19014,7 +19020,7 @@ var disableConnectionQualityCalculation;
19014
19020
  * @param {String=} options.decoderLocation Location of video-worker2.js file
19015
19021
  * @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
19016
19022
  * @param {Object=} options.constraints Default local media constraints
19017
- * @param {Object=} options.logger Enable logging
19023
+ * @param {Object=} options.logger Core logger options
19018
19024
  * @throws {Error} Error if none of MediaProviders available
19019
19025
  * @memberof Flashphoner
19020
19026
  */
@@ -19023,16 +19029,10 @@ var init = function init(options) {
19023
19029
  if (!initialized) {
19024
19030
  if (!options) {
19025
19031
  options = {};
19026
- }
19032
+ } // init global logger
19027
19033
 
19028
- loggerConf = options.logger || loggerConf;
19029
19034
 
19030
- if (options.logger !== null) {
19031
- loggerConf.enableLogs = true;
19032
- } // init logger
19033
-
19034
-
19035
- logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
19035
+ coreLogger = createLogger(options.logger);
19036
19036
  var waitingTemasys = false;
19037
19037
 
19038
19038
  try {
@@ -19053,7 +19053,7 @@ var init = function init(options) {
19053
19053
  constraints: options.constraints || getDefaultMediaConstraints(),
19054
19054
  extensionId: options.screenSharingExtensionId,
19055
19055
  audioContext: audioContext,
19056
- logger: logger,
19056
+ logger: coreLogger,
19057
19057
  createMicGainNode: enableGainNode
19058
19058
  };
19059
19059
  webRtcProvider.configure(webRtcConf);
@@ -19070,7 +19070,7 @@ var init = function init(options) {
19070
19070
  var webRtcConf = {
19071
19071
  constraints: options.constraints || getDefaultMediaConstraints(),
19072
19072
  extensionId: options.screenSharingExtensionId,
19073
- logger: logger
19073
+ logger: coreLogger
19074
19074
  };
19075
19075
  webRtcProvider.configure(webRtcConf); // Just reorder media provider list
19076
19076
 
@@ -19098,7 +19098,7 @@ var init = function init(options) {
19098
19098
  var flashConf = {
19099
19099
  constraints: options.constraints || getDefaultMediaConstraints(),
19100
19100
  flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
19101
- logger: logger
19101
+ logger: coreLogger
19102
19102
  };
19103
19103
  flashProvider.configure(flashConf);
19104
19104
  }
@@ -19122,7 +19122,7 @@ var init = function init(options) {
19122
19122
  receiverLocation: options.receiverLocation,
19123
19123
  decoderLocation: options.decoderLocation,
19124
19124
  audioContext: audioContext,
19125
- logger: logger
19125
+ logger: coreLogger
19126
19126
  };
19127
19127
  websocketProvider.configure(wsConf);
19128
19128
  } //check at least 1 provider available
@@ -19144,7 +19144,7 @@ var init = function init(options) {
19144
19144
  MediaProvider = _MediaProvider;
19145
19145
  }
19146
19146
  } else {
19147
- logger.warn(LOG_PREFIX, "Preferred media provider is not available.");
19147
+ corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
19148
19148
  }
19149
19149
  }
19150
19150
 
@@ -19172,7 +19172,7 @@ var init = function init(options) {
19172
19172
  options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
19173
19173
  }
19174
19174
 
19175
- logger.info(LOG_PREFIX, "Initialized");
19175
+ coreLogger.info(LOG_PREFIX, "Initialized");
19176
19176
  initialized = true;
19177
19177
  }
19178
19178
  };
@@ -19211,7 +19211,7 @@ var playFirstVideo = function playFirstVideo(display, isLocal, src) {
19211
19211
  }
19212
19212
  };
19213
19213
  /**
19214
- * Get logger
19214
+ * Get core logger
19215
19215
  *
19216
19216
  * @returns {Object} Logger
19217
19217
  * @memberof Flashphoner
@@ -19222,7 +19222,7 @@ var getLogger = function getLogger() {
19222
19222
  if (!initialized) {
19223
19223
  console.warn("Initialize API first.");
19224
19224
  } else {
19225
- return logger;
19225
+ return coreLogger;
19226
19226
  }
19227
19227
  };
19228
19228
  /**
@@ -19395,6 +19395,31 @@ var getSessions = function getSessions() {
19395
19395
 
19396
19396
  var getSession = function getSession(id) {
19397
19397
  return sessions[id];
19398
+ }; // Get logger configuration from options
19399
+
19400
+
19401
+ var getLoggerConf = function getLoggerConf(loggerOptions) {
19402
+ var conf = loggerOptions || loggerConf;
19403
+
19404
+ if (loggerOptions !== null) {
19405
+ conf.enableLogs = true;
19406
+ }
19407
+
19408
+ return conf;
19409
+ }; // Create a new logger object
19410
+
19411
+
19412
+ var createLogger = function createLogger(loggerOptions) {
19413
+ var parentLogger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : coreLogger;
19414
+ var newLogger = parentLogger;
19415
+
19416
+ if (newLogger === undefined || loggerOptions != undefined) {
19417
+ var loggerConf = getLoggerConf(loggerOptions);
19418
+ newLogger = new LoggerObject();
19419
+ newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
19420
+ }
19421
+
19422
+ return newLogger;
19398
19423
  };
19399
19424
  /**
19400
19425
  * Create new session and connect to server.
@@ -19414,6 +19439,7 @@ var getSession = function getSession(id) {
19414
19439
  * @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
19415
19440
  * @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
19416
19441
  * @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
19442
+ * @param {Object=} options.logger Session logger options
19417
19443
  * @returns {Session} Created session
19418
19444
  * @throws {Error} Error if API is not initialized
19419
19445
  * @throws {TypeError} Error if options.urlServer is not specified
@@ -19428,8 +19454,12 @@ var createSession = function createSession(options) {
19428
19454
 
19429
19455
  if (!options || !options.urlServer) {
19430
19456
  throw new TypeError("options.urlServer must be provided");
19431
- }
19457
+ } // Set session logger #WCS-2434
19458
+
19432
19459
 
19460
+ var sessionLogger = createLogger(options.logger); // Override logger for all low level operations
19461
+
19462
+ var logger = sessionLogger;
19433
19463
  var id_ = uuid_v1();
19434
19464
  var sessionStatus = SESSION_STATUS.PENDING;
19435
19465
  var urlServer = options.urlServer;
@@ -19535,7 +19565,7 @@ var createSession = function createSession(options) {
19535
19565
  if (timeout != undefined && timeout > 0) {
19536
19566
  connectionTimeout = setTimeout(function () {
19537
19567
  if (wsConnection.readyState == 0) {
19538
- console.log("WS connection timeout");
19568
+ logger.warn(LOG_PREFIX, "WS connection timeout");
19539
19569
  wsConnection.close();
19540
19570
  }
19541
19571
  }, timeout);
@@ -19559,7 +19589,7 @@ var createSession = function createSession(options) {
19559
19589
  mediaProviders: Object.keys(MediaProvider),
19560
19590
  keepAlive: keepAlive,
19561
19591
  authToken: authToken,
19562
- clientVersion: "2.0.211",
19592
+ clientVersion: "2.0.216",
19563
19593
  clientOSVersion: window.navigator.appVersion,
19564
19594
  clientBrowserVersion: window.navigator.userAgent,
19565
19595
  msePacketizationVersion: 2,
@@ -19865,6 +19895,7 @@ var createSession = function createSession(options) {
19865
19895
  * @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
19866
19896
  * @param {Array<string>=} options.sipHeaders Array of custom SIP headers
19867
19897
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
19898
+ * @param {Object=} options.logger Call logger options
19868
19899
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
19869
19900
  * @returns {Call} Call
19870
19901
  * @throws {TypeError} Error if no options provided
@@ -19877,15 +19908,18 @@ var createSession = function createSession(options) {
19877
19908
  var createCall = function createCall(options) {
19878
19909
  //check session state
19879
19910
  if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
19880
- logger.info(LOG_PREFIX, "Status is " + sessionStatus);
19881
- throw new Error('Invalid session state');
19911
+ throw new Error('Invalid session state ' + sessionStatus);
19882
19912
  } //check options
19883
19913
 
19884
19914
 
19885
19915
  if (!options) {
19886
19916
  throw new TypeError("options must be provided");
19887
- }
19917
+ } // Set call logger #WCS-2434
19918
+
19888
19919
 
19920
+ var callLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
19921
+
19922
+ var logger = callLogger;
19889
19923
  var login = appKey == 'clickToCallApp' ? '' : cConfig.sipLogin;
19890
19924
  var caller_ = options.incoming ? options.caller : login;
19891
19925
  var callee_ = options.callee;
@@ -20031,7 +20065,8 @@ var createSession = function createSession(options) {
20031
20065
  constraints: constraints,
20032
20066
  connectionConfig: mediaOptions,
20033
20067
  audioOutputId: audioOutputId,
20034
- videoContentHint: videoContentHint
20068
+ videoContentHint: videoContentHint,
20069
+ logger: logger
20035
20070
  }).then(function (newConnection) {
20036
20071
  mediaConnection = newConnection;
20037
20072
  return mediaConnection.createOffer({
@@ -20617,7 +20652,7 @@ var createSession = function createSession(options) {
20617
20652
  /**
20618
20653
  * Get call info
20619
20654
  * @returns {string} Info
20620
- * @memberof Stream
20655
+ * @memberof Call
20621
20656
  * @inner
20622
20657
  */
20623
20658
 
@@ -20628,7 +20663,7 @@ var createSession = function createSession(options) {
20628
20663
  /**
20629
20664
  * Get stream error info
20630
20665
  * @returns {string} Error info
20631
- * @memberof Stream
20666
+ * @memberof Call
20632
20667
  * @inner
20633
20668
  */
20634
20669
 
@@ -20636,6 +20671,17 @@ var createSession = function createSession(options) {
20636
20671
  var getErrorInfo = function getErrorInfo() {
20637
20672
  return errorInfo_;
20638
20673
  };
20674
+ /**
20675
+ * Get call logger
20676
+ *
20677
+ * @returns {Object} Logger
20678
+ * @memberof Call
20679
+ */
20680
+
20681
+
20682
+ var getLogger = function getLogger() {
20683
+ return callLogger;
20684
+ };
20639
20685
 
20640
20686
  call.call = call_;
20641
20687
  call.answer = answer;
@@ -20667,6 +20713,7 @@ var createSession = function createSession(options) {
20667
20713
  call.switchMic = switchMic;
20668
20714
  call.switchToScreen = switchToScreen;
20669
20715
  call.switchToCam = switchToCam;
20716
+ call.getLogger = getLogger;
20670
20717
  calls[id_] = call;
20671
20718
  return call;
20672
20719
  };
@@ -20713,6 +20760,7 @@ var createSession = function createSession(options) {
20713
20760
  * @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
20714
20761
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
20715
20762
  * @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
20763
+ * @param {Object=} options.logger Stream logger options
20716
20764
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
20717
20765
  * @returns {Stream} Stream
20718
20766
  * @throws {TypeError} Error if no options provided
@@ -20728,7 +20776,7 @@ var createSession = function createSession(options) {
20728
20776
  var availableCallbacks = []; //check session state
20729
20777
 
20730
20778
  if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
20731
- throw new Error('Invalid session state');
20779
+ throw new Error('Invalid session state ' + sessionStatus);
20732
20780
  } //check options
20733
20781
 
20734
20782
 
@@ -20738,8 +20786,12 @@ var createSession = function createSession(options) {
20738
20786
 
20739
20787
  if (!options.name) {
20740
20788
  throw new TypeError("options.name must be provided");
20741
- }
20789
+ } // Set stream logger #WCS-2434
20742
20790
 
20791
+
20792
+ var streamLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
20793
+
20794
+ var logger = streamLogger;
20743
20795
  var clientKf = new KalmanFilter();
20744
20796
  var serverKf = new KalmanFilter();
20745
20797
  var id_ = uuid_v1();
@@ -20983,7 +21035,7 @@ var createSession = function createSession(options) {
20983
21035
  logger.debug(LOG_PREFIX, "Play stream " + name_);
20984
21036
 
20985
21037
  if (status_ !== STREAM_STATUS.NEW) {
20986
- throw new Error("Invalid stream state");
21038
+ throw new Error("Invalid stream state " + status_);
20987
21039
  }
20988
21040
 
20989
21041
  status_ = STREAM_STATUS.PENDING; //create mediaProvider connection
@@ -21002,7 +21054,8 @@ var createSession = function createSession(options) {
21002
21054
  audioOutputId: audioOutputId,
21003
21055
  remoteVideo: remoteVideo,
21004
21056
  playoutDelay: playoutDelay,
21005
- unmutePlayOnStart: unmutePlayOnStart
21057
+ unmutePlayOnStart: unmutePlayOnStart,
21058
+ logger: logger
21006
21059
  }, streamRefreshHandlers[id_]).then(function (newConnection) {
21007
21060
  mediaConnection = newConnection;
21008
21061
 
@@ -21066,7 +21119,7 @@ var createSession = function createSession(options) {
21066
21119
  logger.debug(LOG_PREFIX, "Publish stream " + name_);
21067
21120
 
21068
21121
  if (status_ !== STREAM_STATUS.NEW) {
21069
- throw new Error("Invalid stream state");
21122
+ throw new Error("Invalid stream state " + status_);
21070
21123
  }
21071
21124
 
21072
21125
  status_ = STREAM_STATUS.PENDING;
@@ -21100,7 +21153,8 @@ var createSession = function createSession(options) {
21100
21153
  connectionConfig: mediaOptions,
21101
21154
  connectionConstraints: mediaConnectionConstraints,
21102
21155
  customStream: constraints && constraints.customStream ? constraints.customStream : false,
21103
- videoContentHint: videoContentHint
21156
+ videoContentHint: videoContentHint,
21157
+ logger: logger
21104
21158
  }).then(function (newConnection) {
21105
21159
  mediaConnection = newConnection;
21106
21160
  return mediaConnection.createOffer({
@@ -21730,6 +21784,17 @@ var createSession = function createSession(options) {
21730
21784
  availableCallbacks.push(promise);
21731
21785
  });
21732
21786
  };
21787
+ /**
21788
+ * Get stream logger
21789
+ *
21790
+ * @returns {Object} Logger
21791
+ * @memberof Stream
21792
+ */
21793
+
21794
+
21795
+ var getLogger = function getLogger() {
21796
+ return streamLogger;
21797
+ };
21733
21798
 
21734
21799
  stream.play = play;
21735
21800
  stream.publish = publish;
@@ -21769,6 +21834,7 @@ var createSession = function createSession(options) {
21769
21834
  stream.switchToScreen = switchToScreen;
21770
21835
  stream.switchToCam = switchToCam;
21771
21836
  stream.sendData = sendData;
21837
+ stream.getLogger = getLogger;
21772
21838
  streams[id_] = stream;
21773
21839
  return stream;
21774
21840
  };
@@ -21977,6 +22043,17 @@ var createSession = function createSession(options) {
21977
22043
  }
21978
22044
 
21979
22045
  return sdp;
22046
+ };
22047
+ /**
22048
+ * Get session logger
22049
+ *
22050
+ * @returns {Object} Logger
22051
+ * @memberof Session
22052
+ */
22053
+
22054
+
22055
+ var getLogger = function getLogger() {
22056
+ return sessionLogger;
21980
22057
  }; //export Session
21981
22058
 
21982
22059
 
@@ -21992,7 +22069,8 @@ var createSession = function createSession(options) {
21992
22069
  session.submitBugReport = submitBugReport;
21993
22070
  session.startDebug = startDebug;
21994
22071
  session.stopDebug = stopDebug;
21995
- session.on = on; //save interface to global map
22072
+ session.on = on;
22073
+ session.getLogger = getLogger; //save interface to global map
21996
22074
 
21997
22075
  sessions[id_] = session;
21998
22076
  return session;
@@ -22058,6 +22136,11 @@ var Promise = require('es6-promise').Promise;
22058
22136
 
22059
22137
  var createConnection = function createConnection(options) {
22060
22138
  return new Promise(function (resolve, reject) {
22139
+ // Set connection logger #WCS-2434
22140
+ if (options.logger) {
22141
+ logger = options.logger;
22142
+ }
22143
+
22061
22144
  var id = options.id;
22062
22145
  var connectionConfig = options.connectionConfig || {
22063
22146
  "iceServers": []
@@ -22693,165 +22776,171 @@ module.exports = {
22693
22776
  },{"./util":46,"es6-promise":2,"uuid":10,"webrtc-adapter":25}],46:[function(require,module,exports){
22694
22777
  'use strict';
22695
22778
 
22696
- module.exports = {
22697
- isEmptyObject: function isEmptyObject(obj) {
22698
- for (var name in obj) {
22699
- return false;
22700
- }
22779
+ var isEmptyObject = function isEmptyObject(obj) {
22780
+ for (var name in obj) {
22781
+ return false;
22782
+ }
22701
22783
 
22702
- return true;
22703
- },
22784
+ return true;
22785
+ };
22786
+ /**
22787
+ * Copy values of object own properties to array.
22788
+ *
22789
+ * @param obj
22790
+ * @returns {Array}
22791
+ */
22704
22792
 
22705
- /**
22706
- * Copy values of object own properties to array.
22707
- *
22708
- * @param obj
22709
- * @returns {Array}
22710
- */
22711
- copyObjectToArray: function copyObjectToArray(obj) {
22712
- var ret = [];
22713
22793
 
22714
- for (var prop in obj) {
22715
- if (obj.hasOwnProperty(prop)) {
22716
- ret.push(obj[prop]);
22717
- }
22794
+ var copyObjectToArray = function copyObjectToArray(obj) {
22795
+ var ret = [];
22796
+
22797
+ for (var prop in obj) {
22798
+ if (obj.hasOwnProperty(prop)) {
22799
+ ret.push(obj[prop]);
22718
22800
  }
22801
+ }
22719
22802
 
22720
- return ret;
22721
- },
22803
+ return ret;
22804
+ };
22805
+ /**
22806
+ * Copy src properties to dst object.
22807
+ * Will overwrite dst prop with src prop in case of dst prop exist.
22808
+ */
22722
22809
 
22723
- /**
22724
- * Copy src properties to dst object.
22725
- * Will overwrite dst prop with src prop in case of dst prop exist.
22726
- */
22727
- copyObjectPropsToAnotherObject: function copyObjectPropsToAnotherObject(src, dst) {
22728
- for (var prop in src) {
22729
- if (src.hasOwnProperty(prop)) {
22730
- dst[prop] = src[prop];
22731
- }
22810
+
22811
+ var copyObjectPropsToAnotherObject = function copyObjectPropsToAnotherObject(src, dst) {
22812
+ for (var prop in src) {
22813
+ if (src.hasOwnProperty(prop)) {
22814
+ dst[prop] = src[prop];
22732
22815
  }
22733
- },
22734
- processRtcStatsReport: function processRtcStatsReport(browser, report) {
22735
- var result = {};
22816
+ }
22817
+ };
22736
22818
 
22737
- if (browser == "chrome") {
22738
- /**
22739
- * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
22740
- */
22741
- var gotResult = false;
22819
+ var processRtcStatsReport = function processRtcStatsReport(browser, report) {
22820
+ var result = {};
22742
22821
 
22743
- if (report.type && report.type == "googCandidatePair") {
22744
- //check if this is active pair
22745
- if (report.googActiveConnection == "true") {
22746
- gotResult = true;
22747
- }
22748
- }
22822
+ if (browser == "chrome") {
22823
+ /**
22824
+ * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
22825
+ */
22826
+ var gotResult = false;
22749
22827
 
22750
- if (report.type && report.type == "ssrc") {
22828
+ if (report.type && report.type == "googCandidatePair") {
22829
+ //check if this is active pair
22830
+ if (report.googActiveConnection == "true") {
22751
22831
  gotResult = true;
22752
22832
  }
22833
+ }
22753
22834
 
22754
- if (gotResult) {
22755
- for (var k in report) {
22756
- if (report.hasOwnProperty(k)) {
22757
- result[k] = report[k];
22758
- }
22835
+ if (report.type && report.type == "ssrc") {
22836
+ gotResult = true;
22837
+ }
22838
+
22839
+ if (gotResult) {
22840
+ for (var k in report) {
22841
+ if (report.hasOwnProperty(k)) {
22842
+ result[k] = report[k];
22759
22843
  }
22760
22844
  }
22845
+ }
22761
22846
 
22762
- return result;
22763
- } else if (browser == "firefox") {
22764
- /**
22765
- * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
22766
- */
22767
- if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
22768
- result = {};
22769
-
22770
- for (var k in report) {
22771
- if (report.hasOwnProperty(k)) {
22772
- result[k] = report[k];
22773
- }
22847
+ return result;
22848
+ } else if (browser == "firefox") {
22849
+ /**
22850
+ * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
22851
+ */
22852
+ if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
22853
+ result = {};
22854
+
22855
+ for (var k in report) {
22856
+ if (report.hasOwnProperty(k)) {
22857
+ result[k] = report[k];
22774
22858
  }
22775
22859
  }
22776
-
22777
- return result;
22778
- } else {
22779
- return result;
22780
22860
  }
22781
22861
 
22782
- ;
22862
+ return result;
22863
+ } else {
22864
+ return result;
22865
+ }
22866
+ };
22867
+
22868
+ var Browser = {
22869
+ isIE: function isIE() {
22870
+ return (
22871
+ /*@cc_on!@*/
22872
+ false || !!document.documentMode
22873
+ );
22783
22874
  },
22784
- Browser: {
22785
- isIE: function isIE() {
22786
- return (
22787
- /*@cc_on!@*/
22788
- false || !!document.documentMode
22789
- );
22790
- },
22791
- isFirefox: function isFirefox() {
22792
- return typeof InstallTrigger !== 'undefined';
22793
- },
22794
- isChrome: function isChrome() {
22795
- return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
22796
- },
22797
- isEdge: function isEdge() {
22798
- return !isIE && !!window.StyleMedia;
22799
- },
22800
- isOpera: function isOpera() {
22801
- return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
22802
- },
22803
- isiOS: function isiOS() {
22804
- return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
22805
- },
22806
- isSafari: function isSafari() {
22807
- var userAgent = navigator.userAgent.toLowerCase();
22808
- return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
22809
- },
22810
- isAndroid: function isAndroid() {
22811
- return navigator.userAgent.toLowerCase().indexOf("android") > -1;
22812
- },
22813
- isSafariWebRTC: function isSafariWebRTC() {
22814
- return navigator.mediaDevices && this.isSafari();
22815
- },
22816
- isSamsungBrowser: function isSamsungBrowser() {
22817
- return /SamsungBrowser/i.test(navigator.userAgent);
22818
- },
22819
- isAndroidFirefox: function isAndroidFirefox() {
22820
- return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
22821
- }
22875
+ isFirefox: function isFirefox() {
22876
+ return typeof InstallTrigger !== 'undefined';
22822
22877
  },
22823
- SDP: {
22824
- matchPrefix: function matchPrefix(sdp, prefix) {
22825
- var parts = sdp.trim().split('\n').map(function (line) {
22826
- return line.trim();
22827
- });
22828
- return parts.filter(function (line) {
22829
- return line.indexOf(prefix) === 0;
22830
- });
22831
- },
22832
- writeFmtp: function writeFmtp(sdp, param, codec) {
22833
- var sdpArray = sdp.split("\n");
22834
- var i;
22878
+ isChrome: function isChrome() {
22879
+ return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
22880
+ },
22881
+ isEdge: function isEdge() {
22882
+ return !isIE && !!window.StyleMedia;
22883
+ },
22884
+ isOpera: function isOpera() {
22885
+ return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
22886
+ },
22887
+ isiOS: function isiOS() {
22888
+ return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
22889
+ },
22890
+ isSafari: function isSafari() {
22891
+ var userAgent = navigator.userAgent.toLowerCase();
22892
+ return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
22893
+ },
22894
+ isAndroid: function isAndroid() {
22895
+ return navigator.userAgent.toLowerCase().indexOf("android") > -1;
22896
+ },
22897
+ isSafariWebRTC: function isSafariWebRTC() {
22898
+ return navigator.mediaDevices && this.isSafari();
22899
+ },
22900
+ isSamsungBrowser: function isSamsungBrowser() {
22901
+ return /SamsungBrowser/i.test(navigator.userAgent);
22902
+ },
22903
+ isAndroidFirefox: function isAndroidFirefox() {
22904
+ return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
22905
+ },
22906
+ isChromiumEdge: function isChromiumEdge() {
22907
+ return /Chrome/i.test(navigator.userAgent) && /Edg/i.test(navigator.userAgent);
22908
+ }
22909
+ };
22910
+ var SDP = {
22911
+ matchPrefix: function matchPrefix(sdp, prefix) {
22912
+ var parts = sdp.trim().split('\n').map(function (line) {
22913
+ return line.trim();
22914
+ });
22915
+ return parts.filter(function (line) {
22916
+ return line.indexOf(prefix) === 0;
22917
+ });
22918
+ },
22919
+ writeFmtp: function writeFmtp(sdp, param, codec) {
22920
+ var sdpArray = sdp.split("\n");
22921
+ var i;
22835
22922
 
22836
- for (i = 0; i < sdpArray.length; i++) {
22837
- if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
22838
- sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
22839
- }
22840
- } //normalize sdp after modifications
22923
+ for (i = 0; i < sdpArray.length; i++) {
22924
+ if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
22925
+ sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
22926
+ }
22927
+ } //normalize sdp after modifications
22841
22928
 
22842
22929
 
22843
- var result = "";
22930
+ var result = "";
22844
22931
 
22845
- for (i = 0; i < sdpArray.length; i++) {
22846
- if (sdpArray[i] != "") {
22847
- result += sdpArray[i] + "\n";
22848
- }
22932
+ for (i = 0; i < sdpArray.length; i++) {
22933
+ if (sdpArray[i] != "") {
22934
+ result += sdpArray[i] + "\n";
22849
22935
  }
22850
-
22851
- return result;
22852
22936
  }
22853
- },
22854
- logger: {
22937
+
22938
+ return result;
22939
+ }
22940
+ };
22941
+
22942
+ var logger = function logger() {
22943
+ return {
22855
22944
  init: function init(verbosity, enablePushLogs, customLogger, enableLogs) {
22856
22945
  switch (verbosity.toUpperCase()) {
22857
22946
  case "DEBUG":
@@ -23032,92 +23121,104 @@ module.exports = {
23032
23121
  default:
23033
23122
  this.verbosity = 2;
23034
23123
  }
23035
-
23036
- ;
23037
23124
  }
23038
- },
23039
- stripCodecs: function stripCodecs(sdp, codecs) {
23040
- if (!codecs.length) return sdp;
23041
- var sdpArray = sdp.split("\n");
23042
- var codecsArray = codecs.split(","); //search and delete codecs line
23125
+ };
23126
+ };
23043
23127
 
23044
- var pt = [];
23045
- var i;
23128
+ var stripCodecs = function stripCodecs(sdp, codecs) {
23129
+ if (!codecs.length) return sdp;
23130
+ var sdpArray = sdp.split("\n");
23131
+ var codecsArray = codecs.split(","); //search and delete codecs line
23046
23132
 
23047
- for (var p = 0; p < codecsArray.length; p++) {
23048
- console.log("Searching for codec " + codecsArray[p]);
23133
+ var pt = [];
23134
+ var i;
23049
23135
 
23050
- for (i = 0; i < sdpArray.length; i++) {
23051
- if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
23052
- console.log(codecsArray[p] + " detected");
23053
- pt.push(sdpArray[i].match(/[0-9]+/)[0]);
23054
- sdpArray[i] = "";
23055
- }
23136
+ for (var p = 0; p < codecsArray.length; p++) {
23137
+ console.log("Searching for codec " + codecsArray[p]);
23138
+
23139
+ for (i = 0; i < sdpArray.length; i++) {
23140
+ if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
23141
+ console.log(codecsArray[p] + " detected");
23142
+ pt.push(sdpArray[i].match(/[0-9]+/)[0]);
23143
+ sdpArray[i] = "";
23056
23144
  }
23057
23145
  }
23146
+ }
23058
23147
 
23059
- if (pt.length) {
23060
- //searching for fmtp
23061
- for (p = 0; p < pt.length; p++) {
23062
- for (i = 0; i < sdpArray.length; i++) {
23063
- if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
23064
- sdpArray[i] = "";
23065
- }
23148
+ if (pt.length) {
23149
+ //searching for fmtp
23150
+ for (p = 0; p < pt.length; p++) {
23151
+ for (i = 0; i < sdpArray.length; i++) {
23152
+ if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
23153
+ sdpArray[i] = "";
23066
23154
  }
23067
- } //delete entries from m= line
23155
+ }
23156
+ } //delete entries from m= line
23068
23157
 
23069
23158
 
23070
- for (i = 0; i < sdpArray.length; i++) {
23071
- if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
23072
- var mLineSplitted = sdpArray[i].split(" ");
23073
- var newMLine = "";
23159
+ for (i = 0; i < sdpArray.length; i++) {
23160
+ if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
23161
+ var mLineSplitted = sdpArray[i].split(" ");
23162
+ var newMLine = "";
23074
23163
 
23075
- for (var m = 0; m < mLineSplitted.length; m++) {
23076
- if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
23077
- newMLine += mLineSplitted[m];
23164
+ for (var m = 0; m < mLineSplitted.length; m++) {
23165
+ if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
23166
+ newMLine += mLineSplitted[m];
23078
23167
 
23079
- if (m < mLineSplitted.length - 1) {
23080
- newMLine = newMLine + " ";
23081
- }
23168
+ if (m < mLineSplitted.length - 1) {
23169
+ newMLine = newMLine + " ";
23082
23170
  }
23083
23171
  }
23084
-
23085
- sdpArray[i] = newMLine;
23086
23172
  }
23173
+
23174
+ sdpArray[i] = newMLine;
23087
23175
  }
23088
- } //normalize sdp after modifications
23176
+ }
23177
+ } //normalize sdp after modifications
23089
23178
 
23090
23179
 
23091
- var result = "";
23180
+ var result = "";
23092
23181
 
23093
- for (i = 0; i < sdpArray.length; i++) {
23094
- if (sdpArray[i] != "") {
23095
- result += sdpArray[i] + "\n";
23096
- }
23182
+ for (i = 0; i < sdpArray.length; i++) {
23183
+ if (sdpArray[i] != "") {
23184
+ result += sdpArray[i] + "\n";
23097
23185
  }
23186
+ }
23098
23187
 
23099
- return result;
23100
- },
23101
- getCurrentCodecAndSampleRate: function getCurrentCodecAndSampleRate(sdp, mediaType) {
23102
- var rows = sdp.split("\n");
23103
- var codecPt;
23188
+ return result;
23189
+ };
23104
23190
 
23105
- for (var i = 0; i < rows.length; i++) {
23106
- if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
23107
- var ret = {};
23108
- ret.name = rows[i].split(" ")[1].split("/")[0];
23109
- ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
23110
- return ret;
23111
- } //WCS-2136. WebRTC statistics doesn't work for VP8
23191
+ var getCurrentCodecAndSampleRate = function getCurrentCodecAndSampleRate(sdp, mediaType) {
23192
+ var rows = sdp.split("\n");
23193
+ var codecPt;
23112
23194
 
23195
+ for (var i = 0; i < rows.length; i++) {
23196
+ if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
23197
+ var ret = {};
23198
+ ret.name = rows[i].split(" ")[1].split("/")[0];
23199
+ ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
23200
+ return ret;
23201
+ } //WCS-2136. WebRTC statistics doesn't work for VP8
23113
23202
 
23114
- if (rows[i].indexOf("m=" + mediaType) != -1) {
23115
- codecPt = rows[i].split(" ")[3].trim();
23116
- }
23203
+
23204
+ if (rows[i].indexOf("m=" + mediaType) != -1) {
23205
+ codecPt = rows[i].split(" ")[3].trim();
23117
23206
  }
23118
23207
  }
23119
23208
  };
23120
23209
 
23210
+ module.exports = {
23211
+ isEmptyObject: isEmptyObject,
23212
+ copyObjectToArray: copyObjectToArray,
23213
+ copyObjectPropsToAnotherObject: copyObjectPropsToAnotherObject,
23214
+ processRtcStatsReport: processRtcStatsReport,
23215
+ Browser: Browser,
23216
+ SDP: SDP,
23217
+ logger: logger,
23218
+ stripCodecs: stripCodecs,
23219
+ getCurrentCodecAndSampleRate: getCurrentCodecAndSampleRate
23220
+ };
23221
+
23121
23222
  },{}],47:[function(require,module,exports){
23122
23223
  'use strict';
23123
23224
 
@@ -23137,7 +23238,12 @@ var audioContext;
23137
23238
  var createConnection = function createConnection(options, handlers) {
23138
23239
  return new Promise(function (resolve, reject) {
23139
23240
  var id = options.id;
23140
- var display = options.display;
23241
+ var display = options.display; // Set connection logger #WCS-2434
23242
+
23243
+ if (options.logger) {
23244
+ logger = options.logger;
23245
+ }
23246
+
23141
23247
  var canvas = document.createElement("canvas");
23142
23248
  display.appendChild(canvas);
23143
23249
  canvas.id = id;