@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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flashphoner/websdk",
3
- "version": "2.0.211",
3
+ "version": "2.0.216",
4
4
  "description": "Official Flashphoner WebCallServer WebSDK package",
5
5
  "main": "./src/flashphoner-core.js",
6
6
  "types": "./src/flashphoner-core.d.ts",
@@ -42,6 +42,11 @@ var createConnection = function(options) {
42
42
  var display = options.display || options.localDisplay;
43
43
  var flashBufferTime = options.flashBufferTime || 0;
44
44
 
45
+ // Set connection logger #WCS-2434
46
+ if (options.logger) {
47
+ logger = options.logger;
48
+ }
49
+
45
50
  var url = getConnectionUrl(options.mainUrl, options.flashProto, options.flashPort);
46
51
 
47
52
  //todo state from flash instance
@@ -35,6 +35,7 @@ export declare class Call {
35
35
  switchMic: (deviceId: any) => any;
36
36
  switchToScreen: (source: string, woExtension: boolean) => any;
37
37
  switchToCam: () => void;
38
+ getLogger: () => any;
38
39
  }
39
40
 
40
41
  export declare class Stream {
@@ -76,6 +77,7 @@ export declare class Stream {
76
77
  switchToScreen: (source: string, woExtension: boolean) => any;
77
78
  switchToCam: () => void;
78
79
  sendData: (payload: any) => void;
80
+ getLogger: () => any;
79
81
  }
80
82
 
81
83
  export declare class Session {
@@ -104,7 +106,8 @@ export declare class Session {
104
106
  useCanvasMediaStream?: boolean | undefined;
105
107
  videoContentHint?: string | undefined;
106
108
  unmutePlayOnStart?: boolean | undefined;
107
- sdpHook?: any | undefined
109
+ sdpHook?: any | undefined;
110
+ logger?: any | undefined;
108
111
  }) => Stream;
109
112
  createCall: (options: {
110
113
  callee: string;
@@ -122,6 +125,7 @@ export declare class Session {
122
125
  sipHeaders?: Array<string> | undefined;
123
126
  videoContentHint?: string | undefined;
124
127
  toStream?: string | undefined;
128
+ logger?: any | undefined;
125
129
  }) => Call;
126
130
  getStream: (streamId: string) => any;
127
131
  getStreams: () => any[];
@@ -131,6 +135,7 @@ export declare class Session {
131
135
  startDebug: () => void;
132
136
  stopDebug: () => void;
133
137
  on: (event: string, callback: any) => Session;
138
+ getLogger: () => any;
134
139
  }
135
140
 
136
141
  export namespace Browser {
@@ -197,6 +202,7 @@ export function createSession(options: {
197
202
  pingInterval?: number | undefined;
198
203
  receiveProbes?: number | undefined;
199
204
  probesInterval?: number | undefined;
205
+ logger?: any | undefined;
200
206
  }): Session;
201
207
  export function playFirstSound (noise?: boolean): any;
202
208
  export function playFirstVideo (display: any, isLocal: boolean, src: any): any;
@@ -204,6 +210,3 @@ export function getLogger(): any;
204
210
  import { constants } from "@flashphoner/websdk/src/constants";
205
211
  export declare const firefoxScreenSharingExtensionInstalled: boolean;
206
212
  export { constants };
207
-
208
-
209
-
@@ -3,7 +3,8 @@
3
3
  const { v1: uuid_v1 } = require('uuid');
4
4
  var constants = require("./constants");
5
5
  var util = require('./util');
6
- var logger = require('./util').logger;
6
+ var LoggerObject = require('./util').logger;
7
+ var coreLogger;
7
8
  var loggerConf = {push: false, severity: "INFO"};
8
9
  var Promise = require('promise-polyfill');
9
10
  var KalmanFilter = require('kalmanjs');
@@ -46,7 +47,7 @@ var disableConnectionQualityCalculation;
46
47
  * @param {String=} options.decoderLocation Location of video-worker2.js file
47
48
  * @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
48
49
  * @param {Object=} options.constraints Default local media constraints
49
- * @param {Object=} options.logger Enable logging
50
+ * @param {Object=} options.logger Core logger options
50
51
  * @throws {Error} Error if none of MediaProviders available
51
52
  * @memberof Flashphoner
52
53
  */
@@ -55,12 +56,8 @@ var init = function (options) {
55
56
  if (!options) {
56
57
  options = {};
57
58
  }
58
- loggerConf = options.logger || loggerConf;
59
- if (options.logger !== null) {
60
- loggerConf.enableLogs = true;
61
- }
62
- // init logger
63
- logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
59
+ // init global logger
60
+ coreLogger = createLogger(options.logger);
64
61
  var waitingTemasys = false;
65
62
  try {
66
63
  var audioContext = new (window.AudioContext || window.webkitAudioContext)();
@@ -77,7 +74,7 @@ var init = function (options) {
77
74
  constraints: options.constraints || getDefaultMediaConstraints(),
78
75
  extensionId: options.screenSharingExtensionId,
79
76
  audioContext: audioContext,
80
- logger: logger,
77
+ logger: coreLogger,
81
78
  createMicGainNode: enableGainNode
82
79
  };
83
80
  webRtcProvider.configure(webRtcConf);
@@ -92,7 +89,7 @@ var init = function (options) {
92
89
  var webRtcConf = {
93
90
  constraints: options.constraints || getDefaultMediaConstraints(),
94
91
  extensionId: options.screenSharingExtensionId,
95
- logger: logger
92
+ logger: coreLogger
96
93
  };
97
94
  webRtcProvider.configure(webRtcConf);
98
95
 
@@ -118,7 +115,7 @@ var init = function (options) {
118
115
  var flashConf = {
119
116
  constraints: options.constraints || getDefaultMediaConstraints(),
120
117
  flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
121
- logger: logger
118
+ logger: coreLogger
122
119
  };
123
120
  flashProvider.configure(flashConf);
124
121
  }
@@ -138,7 +135,7 @@ var init = function (options) {
138
135
  receiverLocation: options.receiverLocation,
139
136
  decoderLocation: options.decoderLocation,
140
137
  audioContext: audioContext,
141
- logger: logger
138
+ logger: coreLogger
142
139
  };
143
140
  websocketProvider.configure(wsConf);
144
141
  }
@@ -158,7 +155,7 @@ var init = function (options) {
158
155
  MediaProvider = _MediaProvider;
159
156
  }
160
157
  } else {
161
- logger.warn(LOG_PREFIX, "Preferred media provider is not available.");
158
+ corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
162
159
  }
163
160
  }
164
161
  if (options.preferredMediaProviders && options.preferredMediaProviders.length > 0) {
@@ -181,7 +178,7 @@ var init = function (options) {
181
178
  if (!waitingTemasys && options.mediaProvidersReadyCallback) {
182
179
  options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
183
180
  }
184
- logger.info(LOG_PREFIX, "Initialized");
181
+ coreLogger.info(LOG_PREFIX, "Initialized");
185
182
  initialized = true;
186
183
  }
187
184
  };
@@ -219,17 +216,16 @@ var playFirstVideo = function (display, isLocal, src) {
219
216
  };
220
217
 
221
218
  /**
222
- * Get logger
219
+ * Get core logger
223
220
  *
224
221
  * @returns {Object} Logger
225
222
  * @memberof Flashphoner
226
223
  */
227
-
228
224
  var getLogger = function () {
229
225
  if (!initialized) {
230
226
  console.warn("Initialize API first.");
231
227
  } else {
232
- return logger;
228
+ return coreLogger;
233
229
  }
234
230
  }
235
231
 
@@ -388,6 +384,26 @@ var getSession = function (id) {
388
384
  return sessions[id];
389
385
  };
390
386
 
387
+ // Get logger configuration from options
388
+ var getLoggerConf = function(loggerOptions) {
389
+ var conf = loggerOptions || loggerConf;
390
+ if (loggerOptions !== null) {
391
+ conf.enableLogs = true;
392
+ }
393
+ return conf;
394
+ }
395
+
396
+ // Create a new logger object
397
+ var createLogger = function(loggerOptions, parentLogger = coreLogger) {
398
+ var newLogger = parentLogger;
399
+ if (newLogger === undefined || loggerOptions != undefined) {
400
+ var loggerConf = getLoggerConf(loggerOptions);
401
+ newLogger = new LoggerObject;
402
+ newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
403
+ }
404
+ return newLogger;
405
+ }
406
+
391
407
  /**
392
408
  * Create new session and connect to server.
393
409
  *
@@ -406,6 +422,7 @@ var getSession = function (id) {
406
422
  * @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
407
423
  * @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
408
424
  * @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
425
+ * @param {Object=} options.logger Session logger options
409
426
  * @returns {Session} Created session
410
427
  * @throws {Error} Error if API is not initialized
411
428
  * @throws {TypeError} Error if options.urlServer is not specified
@@ -420,6 +437,11 @@ var createSession = function (options) {
420
437
  throw new TypeError("options.urlServer must be provided");
421
438
  }
422
439
 
440
+ // Set session logger #WCS-2434
441
+ var sessionLogger = createLogger(options.logger)
442
+ // Override logger for all low level operations
443
+ var logger = sessionLogger;
444
+
423
445
  var id_ = uuid_v1();
424
446
  var sessionStatus = SESSION_STATUS.PENDING;
425
447
  var urlServer = options.urlServer;
@@ -518,7 +540,7 @@ var createSession = function (options) {
518
540
  if (timeout != undefined && timeout > 0) {
519
541
  connectionTimeout = setTimeout(function() {
520
542
  if (wsConnection.readyState == 0) {
521
- console.log("WS connection timeout");
543
+ logger.warn(LOG_PREFIX, "WS connection timeout");
522
544
  wsConnection.close();
523
545
  }
524
546
  }, timeout);
@@ -539,7 +561,7 @@ var createSession = function (options) {
539
561
  mediaProviders: Object.keys(MediaProvider),
540
562
  keepAlive: keepAlive,
541
563
  authToken:authToken,
542
- clientVersion: "2.0.211",
564
+ clientVersion: "2.0.216",
543
565
  clientOSVersion: window.navigator.appVersion,
544
566
  clientBrowserVersion: window.navigator.userAgent,
545
567
  msePacketizationVersion: 2,
@@ -796,6 +818,7 @@ var createSession = function (options) {
796
818
  * @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
797
819
  * @param {Array<string>=} options.sipHeaders Array of custom SIP headers
798
820
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
821
+ * @param {Object=} options.logger Call logger options
799
822
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
800
823
  * @returns {Call} Call
801
824
  * @throws {TypeError} Error if no options provided
@@ -806,14 +829,19 @@ var createSession = function (options) {
806
829
  var createCall = function (options) {
807
830
  //check session state
808
831
  if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
809
- logger.info(LOG_PREFIX, "Status is " + sessionStatus);
810
- throw new Error('Invalid session state');
832
+ throw new Error('Invalid session state ' + sessionStatus);
811
833
  }
812
834
 
813
835
  //check options
814
836
  if (!options) {
815
837
  throw new TypeError("options must be provided");
816
838
  }
839
+
840
+ // Set call logger #WCS-2434
841
+ var callLogger = createLogger(options.logger, sessionLogger);
842
+ // Override logger for all low level operations
843
+ var logger = callLogger;
844
+
817
845
  var login = (appKey == 'clickToCallApp') ? '' : cConfig.sipLogin;
818
846
  var caller_ = (options.incoming) ? options.caller : login;
819
847
  var callee_ = options.callee;
@@ -949,7 +977,8 @@ var createSession = function (options) {
949
977
  constraints: constraints,
950
978
  connectionConfig: mediaOptions,
951
979
  audioOutputId: audioOutputId,
952
- videoContentHint: videoContentHint
980
+ videoContentHint: videoContentHint,
981
+ logger: logger
953
982
  }).then(function (newConnection) {
954
983
  mediaConnection = newConnection;
955
984
  return mediaConnection.createOffer({
@@ -1460,7 +1489,7 @@ var createSession = function (options) {
1460
1489
  /**
1461
1490
  * Get call info
1462
1491
  * @returns {string} Info
1463
- * @memberof Stream
1492
+ * @memberof Call
1464
1493
  * @inner
1465
1494
  */
1466
1495
  var getInfo = function () {
@@ -1470,13 +1499,22 @@ var createSession = function (options) {
1470
1499
  /**
1471
1500
  * Get stream error info
1472
1501
  * @returns {string} Error info
1473
- * @memberof Stream
1502
+ * @memberof Call
1474
1503
  * @inner
1475
1504
  */
1476
1505
  var getErrorInfo = function () {
1477
1506
  return errorInfo_;
1478
1507
  };
1479
1508
 
1509
+ /**
1510
+ * Get call logger
1511
+ *
1512
+ * @returns {Object} Logger
1513
+ * @memberof Call
1514
+ */
1515
+ var getLogger = function () {
1516
+ return callLogger;
1517
+ };
1480
1518
 
1481
1519
  call.call = call_;
1482
1520
  call.answer = answer;
@@ -1508,6 +1546,7 @@ var createSession = function (options) {
1508
1546
  call.switchMic = switchMic;
1509
1547
  call.switchToScreen = switchToScreen;
1510
1548
  call.switchToCam = switchToCam;
1549
+ call.getLogger = getLogger;
1511
1550
  calls[id_] = call;
1512
1551
  return call;
1513
1552
  };
@@ -1555,6 +1594,7 @@ var createSession = function (options) {
1555
1594
  * @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
1556
1595
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
1557
1596
  * @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
1597
+ * @param {Object=} options.logger Stream logger options
1558
1598
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
1559
1599
  * @returns {Stream} Stream
1560
1600
  * @throws {TypeError} Error if no options provided
@@ -1569,7 +1609,7 @@ var createSession = function (options) {
1569
1609
  var availableCallbacks = [];
1570
1610
  //check session state
1571
1611
  if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
1572
- throw new Error('Invalid session state');
1612
+ throw new Error('Invalid session state ' + sessionStatus);
1573
1613
  }
1574
1614
 
1575
1615
  //check options
@@ -1580,6 +1620,11 @@ var createSession = function (options) {
1580
1620
  throw new TypeError("options.name must be provided");
1581
1621
  }
1582
1622
 
1623
+ // Set stream logger #WCS-2434
1624
+ var streamLogger = createLogger(options.logger, sessionLogger);
1625
+ // Override logger for all low level operations
1626
+ var logger = streamLogger;
1627
+
1583
1628
  var clientKf = new KalmanFilter();
1584
1629
  var serverKf = new KalmanFilter();
1585
1630
 
@@ -1816,7 +1861,7 @@ var createSession = function (options) {
1816
1861
  var play = function () {
1817
1862
  logger.debug(LOG_PREFIX, "Play stream " + name_);
1818
1863
  if (status_ !== STREAM_STATUS.NEW) {
1819
- throw new Error("Invalid stream state");
1864
+ throw new Error("Invalid stream state " + status_);
1820
1865
  }
1821
1866
  status_ = STREAM_STATUS.PENDING;
1822
1867
  //create mediaProvider connection
@@ -1834,7 +1879,8 @@ var createSession = function (options) {
1834
1879
  audioOutputId: audioOutputId,
1835
1880
  remoteVideo: remoteVideo,
1836
1881
  playoutDelay: playoutDelay,
1837
- unmutePlayOnStart: unmutePlayOnStart
1882
+ unmutePlayOnStart: unmutePlayOnStart,
1883
+ logger: logger
1838
1884
  }, streamRefreshHandlers[id_]).then(function (newConnection) {
1839
1885
  mediaConnection = newConnection;
1840
1886
  try {
@@ -1891,7 +1937,7 @@ var createSession = function (options) {
1891
1937
  var publish = function () {
1892
1938
  logger.debug(LOG_PREFIX, "Publish stream " + name_);
1893
1939
  if (status_ !== STREAM_STATUS.NEW) {
1894
- throw new Error("Invalid stream state");
1940
+ throw new Error("Invalid stream state " + status_);
1895
1941
  }
1896
1942
  status_ = STREAM_STATUS.PENDING;
1897
1943
  published_ = true;
@@ -1922,7 +1968,8 @@ var createSession = function (options) {
1922
1968
  connectionConfig: mediaOptions,
1923
1969
  connectionConstraints: mediaConnectionConstraints,
1924
1970
  customStream: constraints && constraints.customStream ? constraints.customStream : false,
1925
- videoContentHint: videoContentHint
1971
+ videoContentHint: videoContentHint,
1972
+ logger: logger
1926
1973
  }).then(function (newConnection) {
1927
1974
  mediaConnection = newConnection;
1928
1975
  return mediaConnection.createOffer({
@@ -2501,6 +2548,16 @@ var createSession = function (options) {
2501
2548
  });
2502
2549
  };
2503
2550
 
2551
+ /**
2552
+ * Get stream logger
2553
+ *
2554
+ * @returns {Object} Logger
2555
+ * @memberof Stream
2556
+ */
2557
+ var getLogger = function () {
2558
+ return streamLogger;
2559
+ };
2560
+
2504
2561
  stream.play = play;
2505
2562
  stream.publish = publish;
2506
2563
  stream.stop = stop;
@@ -2539,6 +2596,7 @@ var createSession = function (options) {
2539
2596
  stream.switchToScreen = switchToScreen;
2540
2597
  stream.switchToCam = switchToCam;
2541
2598
  stream.sendData = sendData;
2599
+ stream.getLogger = getLogger;
2542
2600
 
2543
2601
  streams[id_] = stream;
2544
2602
  return stream;
@@ -2729,6 +2787,16 @@ var createSession = function (options) {
2729
2787
  return sdp;
2730
2788
  }
2731
2789
 
2790
+ /**
2791
+ * Get session logger
2792
+ *
2793
+ * @returns {Object} Logger
2794
+ * @memberof Session
2795
+ */
2796
+ var getLogger = function () {
2797
+ return sessionLogger;
2798
+ };
2799
+
2732
2800
  //export Session
2733
2801
  session.id = id;
2734
2802
  session.status = status;
@@ -2743,6 +2811,7 @@ var createSession = function (options) {
2743
2811
  session.startDebug = startDebug;
2744
2812
  session.stopDebug = stopDebug;
2745
2813
  session.on = on;
2814
+ session.getLogger = getLogger;
2746
2815
 
2747
2816
  //save interface to global map
2748
2817
  sessions[id_] = session;
@@ -451,8 +451,15 @@ var appSession = function (options) {
451
451
 
452
452
  //participant helpers
453
453
  function play(streamName) {
454
- return function (display) {
455
- var stream = session.createStream({name: streamName, display: display, custom: {name: name_}});
454
+ // Pass stream options to play #WCS-3445
455
+ return function (display, options = {}) {
456
+ var streamOptions = {
457
+ ...options,
458
+ name: streamName,
459
+ display: display,
460
+ custom: {name: name_}
461
+ };
462
+ var stream = session.createStream(streamOptions);
456
463
  stream.play();
457
464
  return stream;
458
465
  }
@@ -13,6 +13,11 @@ var Promise = require('es6-promise').Promise;
13
13
 
14
14
  var createConnection = function (options) {
15
15
  return new Promise(function (resolve, reject) {
16
+ // Set connection logger #WCS-2434
17
+ if (options.logger) {
18
+ logger = options.logger;
19
+ }
20
+
16
21
  var id = options.id;
17
22
  var connectionConfig = options.connectionConfig || {"iceServers": []};
18
23
  var connection = new RTCPeerConnection(connectionConfig, {