@flashphoner/websdk 2.0.212 → 2.0.217

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.
@@ -8579,717 +8579,926 @@ function filterStats(result, track, outbound) {
8579
8579
  * @see Session
8580
8580
  */
8581
8581
 
8582
- var sessionStatus = {};
8583
- /**
8584
- * Fires when {@link Session} ws socket opens.
8585
- * @event CONNECTED
8586
- * @memberof Flashphoner.constants.SESSION_STATUS
8587
- */
8582
+ var SESSION_STATUS = Object.freeze({
8583
+ /**
8584
+ * Fires when {@link Session} ws socket opens.
8585
+ * @event CONNECTED
8586
+ * @memberof Flashphoner.constants.SESSION_STATUS
8587
+ */
8588
+ CONNECTED: 'CONNECTED',
8588
8589
 
8589
- define(sessionStatus, 'CONNECTED', 'CONNECTED');
8590
- /**
8591
- * Fires when {@link Session} receives connect ack from REST App.
8592
- * @event ESTABLISHED
8593
- * @memberof Flashphoner.constants.SESSION_STATUS
8594
- */
8590
+ /**
8591
+ * Fires when {@link Session} receives connect ack from REST App.
8592
+ * @event ESTABLISHED
8593
+ * @memberof Flashphoner.constants.SESSION_STATUS
8594
+ */
8595
+ ESTABLISHED: 'ESTABLISHED',
8595
8596
 
8596
- define(sessionStatus, 'ESTABLISHED', 'ESTABLISHED');
8597
- /**
8598
- * Fires when {@link Session} disconnects.
8599
- * @event DISCONNECTED
8600
- * @memberof Flashphoner.constants.SESSION_STATUS
8601
- */
8597
+ /**
8598
+ * Fires when {@link Session} disconnects.
8599
+ * @event DISCONNECTED
8600
+ * @memberof Flashphoner.constants.SESSION_STATUS
8601
+ */
8602
+ DISCONNECTED: 'DISCONNECTED',
8602
8603
 
8603
- define(sessionStatus, 'DISCONNECTED', 'DISCONNECTED');
8604
- /**
8605
- * Fires if {@link Session} call of rest method error.
8606
- * @event WARN
8607
- * @memberof Flashphoner.constants.SESSION_STATUS
8608
- */
8604
+ /**
8605
+ * Fires if {@link Session} call of rest method error.
8606
+ * @event WARN
8607
+ * @memberof Flashphoner.constants.SESSION_STATUS
8608
+ */
8609
+ WARN: 'WARN',
8609
8610
 
8610
- define(sessionStatus, 'WARN', 'WARN');
8611
- /**
8612
- * Fires if {@link Session} connection failed.
8613
- * Some of the reasons can be network connection failed, REST App failed
8614
- * @event FAILED
8615
- * @memberof Flashphoner.constants.SESSION_STATUS
8616
- */
8611
+ /**
8612
+ * Fires if {@link Session} connection failed.
8613
+ * Some of the reasons can be network connection failed, REST App failed
8614
+ * @event FAILED
8615
+ * @memberof Flashphoner.constants.SESSION_STATUS
8616
+ */
8617
+ FAILED: 'FAILED',
8617
8618
 
8618
- define(sessionStatus, 'FAILED', 'FAILED');
8619
- /**
8620
- * Fires wneh {@link Session} receives debug event
8621
- * @event DEBUG
8622
- * @memberof Flashphoner.constants.SESSION_STATUS
8623
- */
8619
+ /**
8620
+ * Fires wneh {@link Session} receives debug event
8621
+ * @event DEBUG
8622
+ * @memberof Flashphoner.constants.SESSION_STATUS
8623
+ */
8624
+ DEBUG: 'DEBUG',
8624
8625
 
8625
- define(sessionStatus, 'DEBUG', 'DEBUG');
8626
- /**
8627
- * Fires when {@link Session} receives custom REST App message.
8628
- *
8629
- * @event APP_DATA
8630
- * @memberof Flashphoner.constants.SESSION_STATUS
8631
- */
8626
+ /**
8627
+ * Fires when {@link Session} receives custom REST App message.
8628
+ *
8629
+ * @event APP_DATA
8630
+ * @memberof Flashphoner.constants.SESSION_STATUS
8631
+ */
8632
+ APP_DATA: 'APP_DATA',
8632
8633
 
8633
- define(sessionStatus, 'APP_DATA', 'APP_DATA');
8634
- /**
8635
- * Fires when {@link Session} receives status of sendData operation.
8636
- *
8637
- * @event SEND_DATA_STATUS
8638
- * @memberof Flashphoner.constants.SESSION_STATUS
8639
- */
8634
+ /**
8635
+ * Fires when {@link Session} receives status of sendData operation.
8636
+ *
8637
+ * @event SEND_DATA_STATUS
8638
+ * @memberof Flashphoner.constants.SESSION_STATUS
8639
+ */
8640
+ SEND_DATA_STATUS: 'SEND_DATA_STATUS',
8640
8641
 
8641
- define(sessionStatus, 'SEND_DATA_STATUS', 'SEND_DATA_STATUS'); //State of newly created Session
8642
+ /**
8643
+ * State of newly created {@link Session}.
8644
+ *
8645
+ * @event PENDING
8646
+ * @memberof Flashphoner.constants.SESSION_STATUS
8647
+ */
8648
+ PENDING: 'PENDING',
8642
8649
 
8643
- define(sessionStatus, 'PENDING', 'PENDING');
8644
- /**
8645
- * Fires when {@link Session} registers as sip client.
8646
- *
8647
- * @event APP_DATA
8648
- * @memberof Flashphoner.constants.SESSION_STATUS
8649
- */
8650
+ /**
8651
+ * Fires when {@link Session} registers as sip client.
8652
+ *
8653
+ * @event REGISTERED
8654
+ * @memberof Flashphoner.constants.SESSION_STATUS
8655
+ */
8656
+ REGISTERED: 'REGISTERED',
8650
8657
 
8651
- define(sessionStatus, 'REGISTERED', 'REGISTERED');
8652
- /**
8653
- * Fires when {@link Session} unregisters as sip client.
8654
- *
8655
- * @event APP_DATA
8656
- * @memberof Flashphoner.constants.SESSION_STATUS
8657
- */
8658
+ /**
8659
+ * Fires when {@link Session} unregisters as sip client.
8660
+ *
8661
+ * @event UNREGISTERED
8662
+ * @memberof Flashphoner.constants.SESSION_STATUS
8663
+ */
8664
+ UNREGISTERED: 'UNREGISTERED',
8658
8665
 
8659
- define(sessionStatus, 'UNREGISTERED', 'UNREGISTERED');
8660
- define(sessionStatus, 'INCOMING_CALL', 'INCOMING_CALL');
8666
+ /**
8667
+ * Fires when {@link Session} receives an incoming call.
8668
+ *
8669
+ * @event INCOMING_CALL
8670
+ * @memberof Flashphoner.constants.SESSION_STATUS
8671
+ */
8672
+ INCOMING_CALL: 'INCOMING_CALL'
8673
+ });
8661
8674
  /**
8662
8675
  * @namespace Flashphoner.constants.STREAM_STATUS
8663
8676
  * @see Stream
8664
8677
  */
8665
8678
 
8666
- var streamStatus = {}; //State of newly created Stream
8667
-
8668
- define(streamStatus, 'NEW', 'NEW'); //State between publish/play and server response
8679
+ var STREAM_STATUS = Object.freeze({
8680
+ /**
8681
+ * State of newly created {@link Stream}.
8682
+ *
8683
+ * @event NEW
8684
+ * @memberof Flashphoner.constants.STREAM_STATUS
8685
+ */
8686
+ NEW: 'NEW',
8669
8687
 
8670
- define(streamStatus, 'PENDING', 'PENDING');
8671
- /**
8672
- * Fires when {@link Stream} starts publishing.
8673
- * @event PUBLISHING
8674
- * @memberof Flashphoner.constants.STREAM_STATUS
8675
- */
8688
+ /**
8689
+ * State before {@link Stream} publishing/playing.
8690
+ *
8691
+ * @event PENDING
8692
+ * @memberof Flashphoner.constants.STREAM_STATUS
8693
+ */
8694
+ PENDING: 'PENDING',
8676
8695
 
8677
- define(streamStatus, 'PUBLISHING', 'PUBLISHING');
8678
- /**
8679
- * Fires when {@link Stream} starts playing.
8680
- * @event PLAYING
8681
- * @memberof Flashphoner.constants.STREAM_STATUS
8682
- */
8696
+ /**
8697
+ * Fires when {@link Stream} starts publishing.
8698
+ * @event PUBLISHING
8699
+ * @memberof Flashphoner.constants.STREAM_STATUS
8700
+ */
8701
+ PUBLISHING: 'PUBLISHING',
8683
8702
 
8684
- define(streamStatus, 'PLAYING', 'PLAYING');
8685
- /**
8686
- * Fires if {@link Stream} paused.
8687
- * @event PAUSED
8688
- * @memberof Flashphoner.constants.STREAM_STATUS
8689
- */
8703
+ /**
8704
+ * Fires when {@link Stream} starts playing.
8705
+ * @event PLAYING
8706
+ * @memberof Flashphoner.constants.STREAM_STATUS
8707
+ */
8708
+ PLAYING: 'PLAYING',
8690
8709
 
8691
- define(streamStatus, 'PAUSED', 'PAUSED');
8692
- /**
8693
- * Fires if {@link Stream} was unpublished.
8694
- * @event UNPUBLISHING
8695
- * @memberof Flashphoner.constants.STREAM_STATUS
8696
- */
8710
+ /**
8711
+ * Fires if {@link Stream} paused.
8712
+ * @event PAUSED
8713
+ * @memberof Flashphoner.constants.STREAM_STATUS
8714
+ */
8715
+ PAUSED: 'PAUSED',
8697
8716
 
8698
- define(streamStatus, 'UNPUBLISHED', 'UNPUBLISHED');
8699
- /**
8700
- * Fires if {@link Stream} was stopped.
8701
- * @event STOPPED
8702
- * @memberof Flashphoner.constants.STREAM_STATUS
8703
- */
8717
+ /**
8718
+ * Fires if {@link Stream} was unpublished.
8719
+ * @event UNPUBLISHED
8720
+ * @memberof Flashphoner.constants.STREAM_STATUS
8721
+ */
8722
+ UNPUBLISHED: 'UNPUBLISHED',
8704
8723
 
8705
- define(streamStatus, 'STOPPED', 'STOPPED');
8706
- /**
8707
- * Fires if {@link Stream} failed.
8708
- * @event FAILED
8709
- * @memberof Flashphoner.constants.STREAM_STATUS
8710
- */
8724
+ /**
8725
+ * Fires if playing {@link Stream} was stopped.
8726
+ * @event STOPPED
8727
+ * @memberof Flashphoner.constants.STREAM_STATUS
8728
+ */
8729
+ STOPPED: 'STOPPED',
8711
8730
 
8712
- define(streamStatus, 'FAILED', 'FAILED');
8713
- /**
8714
- * Fires if {@link Stream} playback problem.
8715
- * @event PLAYBACK_PROBLEM
8716
- * @memberof Flashphoner.constants.STREAM_STATUS
8717
- */
8731
+ /**
8732
+ * Fires if {@link Stream} failed.
8733
+ * @event FAILED
8734
+ * @memberof Flashphoner.constants.STREAM_STATUS
8735
+ */
8736
+ FAILED: 'FAILED',
8718
8737
 
8719
- define(streamStatus, 'PLAYBACK_PROBLEM', 'PLAYBACK_PROBLEM');
8720
- /**
8721
- * Fires if {@link Stream} resize.
8722
- * @event RESIZE
8723
- * @memberof Flashphoner.constants.STREAM_STATUS
8724
- */
8738
+ /**
8739
+ * Fires if {@link Stream} playback problem.
8740
+ * @event PLAYBACK_PROBLEM
8741
+ * @memberof Flashphoner.constants.STREAM_STATUS
8742
+ */
8743
+ PLAYBACK_PROBLEM: 'PLAYBACK_PROBLEM',
8725
8744
 
8726
- define(streamStatus, 'RESIZE', 'RESIZE');
8727
- /**
8728
- * Fires when {@link Stream} snapshot becomes available.
8729
- * Snapshot is base64 encoded png available through {@link Stream.getInfo}
8730
- * @event SNAPSHOT_COMPLETE
8731
- * @memberof Flashphoner.constants.STREAM_STATUS
8732
- */
8745
+ /**
8746
+ * Fires if playing {@link Stream} picture resizing.
8747
+ * @event RESIZE
8748
+ * @memberof Flashphoner.constants.STREAM_STATUS
8749
+ */
8750
+ RESIZE: 'RESIZE',
8733
8751
 
8734
- define(streamStatus, 'SNAPSHOT_COMPLETE', 'SNAPSHOT_COMPLETE');
8735
- /**
8736
- * Fires on subscribe {@link Stream} if bitrate is higher than available network bandwidth.
8737
- * @event NOT_ENOUGH_BANDWIDTH
8738
- * @memberof Flashphoner.constants.NOT_ENOUGH_BANDWIDTH
8739
- */
8752
+ /**
8753
+ * Fires when {@link Stream} snapshot becomes available.
8754
+ * Snapshot is base64 encoded png available through {@link Stream.getInfo}
8755
+ * @event SNAPSHOT_COMPLETE
8756
+ * @memberof Flashphoner.constants.STREAM_STATUS
8757
+ */
8758
+ SNAPSHOT_COMPLETE: 'SNAPSHOT_COMPLETE',
8740
8759
 
8741
- define(streamStatus, 'NOT_ENOUGH_BANDWIDTH', 'NOT_ENOUGH_BANDWIDTH');
8760
+ /**
8761
+ * Fires on playing {@link Stream} if bitrate is higher than available network bandwidth.
8762
+ * @event NOT_ENOUGH_BANDWIDTH
8763
+ * @memberof Flashphoner.constants.NOT_ENOUGH_BANDWIDTH
8764
+ */
8765
+ NOT_ENOUGH_BANDWIDTH: 'NOT_ENOUGH_BANDWIDTH'
8766
+ });
8742
8767
  /**
8743
8768
  * @namespace Flashphoner.constants.CALL_STATUS
8744
8769
  * @see Call
8745
8770
  */
8746
8771
 
8747
- var callStatus = {}; //State of newly created Call
8748
-
8749
- define(callStatus, 'NEW', 'NEW');
8750
- define(callStatus, 'RING', 'RING');
8751
- define(callStatus, 'RING_MEDIA', 'RING_MEDIA');
8752
- define(callStatus, 'HOLD', 'HOLD');
8753
- define(callStatus, 'ESTABLISHED', 'ESTABLISHED');
8754
- define(callStatus, 'FINISH', 'FINISH');
8755
- define(callStatus, 'BUSY', 'BUSY');
8756
- define(callStatus, 'SESSION_PROGRESS', 'SESSION_PROGRESS');
8757
- define(callStatus, 'FAILED', 'FAILED');
8758
- define(callStatus, 'PENDING', 'PENDING');
8759
- define(callStatus, 'TRYING', 'TRYING');
8772
+ var CALL_STATUS = Object.freeze({
8773
+ /**
8774
+ * State of newly created {@link Call}
8775
+ * @event NEW
8776
+ * @memberof Flashphoner.constants.CALL_STATUS
8777
+ */
8778
+ NEW: 'NEW',
8779
+
8780
+ /**
8781
+ * The server is ringing to the callee
8782
+ * @event RING
8783
+ * @memberof Flashphoner.constants.CALL_STATUS
8784
+ */
8785
+ RING: 'RING',
8786
+ RING_MEDIA: 'RING_MEDIA',
8787
+
8788
+ /**
8789
+ * The {@link Call} was put on hold
8790
+ * @event HOLD
8791
+ * @memberof Flashphoner.constants.CALL_STATUS
8792
+ */
8793
+ HOLD: 'HOLD',
8794
+
8795
+ /**
8796
+ * The {@link Call} is established
8797
+ * @event ESTABLISHED
8798
+ * @memberof Flashphoner.constants.CALL_STATUS
8799
+ */
8800
+ ESTABLISHED: 'ESTABLISHED',
8801
+
8802
+ /**
8803
+ * The {@link Call} is finished
8804
+ * @event FINISH
8805
+ * @memberof Flashphoner.constants.CALL_STATUS
8806
+ */
8807
+ FINISH: 'FINISH',
8808
+
8809
+ /**
8810
+ * Callee is busy
8811
+ * @event BUSY
8812
+ * @memberof Flashphoner.constants.CALL_STATUS
8813
+ */
8814
+ BUSY: 'BUSY',
8815
+
8816
+ /**
8817
+ * SIP session is in progress
8818
+ * @event SESSION_PROGRESS
8819
+ * @memberof Flashphoner.constants.CALL_STATUS
8820
+ */
8821
+ SESSION_PROGRESS: 'SESSION_PROGRESS',
8822
+
8823
+ /**
8824
+ * The {@link Call} is failed
8825
+ * @event FAILED
8826
+ * @memberof Flashphoner.constants.CALL_STATUS
8827
+ */
8828
+ FAILED: 'FAILED',
8829
+
8830
+ /**
8831
+ * The {@link Call} state before ringing
8832
+ * @event PENDING
8833
+ * @memberof Flashphoner.constants.CALL_STATUS
8834
+ */
8835
+ PENDING: 'PENDING',
8836
+
8837
+ /**
8838
+ * The server trying to establish {@link Call}
8839
+ * @event TRYING
8840
+ * @memberof Flashphoner.constants.CALL_STATUS
8841
+ */
8842
+ TRYING: 'TRYING'
8843
+ });
8760
8844
  /**
8761
8845
  * @namespace Flashphoner.constants.STREAM_STATUS_INFO
8762
8846
  * @see Stream
8763
8847
  */
8764
8848
 
8765
- var streamStatusInfo = {};
8766
- /**
8767
- * Indicates general error during ICE negotiation. Usually occurs if client is behind some exotic nat/firewall.
8768
- * @event FAILED_BY_ICE_ERROR
8769
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8770
- */
8771
-
8772
- define(streamStatusInfo, 'FAILED_BY_ICE_ERROR', 'Failed by ICE error');
8773
- /**
8774
- * Timeout has been reached during ICE establishment.
8775
- * @event FAILED_BY_ICE_TIMEOUT
8776
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8777
- */
8849
+ var STREAM_STATUS_INFO = Object.freeze({
8850
+ /**
8851
+ * Indicates general error during ICE negotiation. Usually occurs if client is behind some exotic nat/firewall.
8852
+ * @event FAILED_BY_ICE_ERROR
8853
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8854
+ */
8855
+ FAILED_BY_ICE_ERROR: 'Failed by ICE error',
8778
8856
 
8779
- define(streamStatusInfo, 'FAILED_BY_ICE_TIMEOUT', 'Failed by ICE timeout');
8780
- /**
8781
- * ICE refresh failed on session.
8782
- * @event FAILED_BY_KEEP_ALIVE
8783
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8784
- */
8857
+ /**
8858
+ * Timeout has been reached during ICE establishment.
8859
+ * @event FAILED_BY_ICE_TIMEOUT
8860
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8861
+ */
8862
+ FAILED_BY_ICE_TIMEOUT: 'Failed by ICE timeout',
8785
8863
 
8786
- define(streamStatusInfo, 'FAILED_BY_KEEP_ALIVE', 'Failed by ICE keep alive');
8787
- /**
8788
- * DTLS has wrong fingerprint.
8789
- * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
8790
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8791
- */
8864
+ /**
8865
+ * ICE refresh failed on session.
8866
+ * @event FAILED_BY_KEEP_ALIVE
8867
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8868
+ */
8869
+ FAILED_BY_KEEP_ALIVE: 'Failed by ICE keep alive',
8792
8870
 
8793
- define(streamStatusInfo, 'FAILED_BY_DTLS_FINGERPRINT_ERROR', 'Failed by DTLS fingerprint error');
8794
- /**
8795
- * Client did not send DTLS packets or packets were lost/corrupted during transmission.
8796
- * @event FAILED_BY_DTLS_ERROR
8797
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8798
- */
8871
+ /**
8872
+ * DTLS has wrong fingerprint.
8873
+ * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
8874
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8875
+ */
8876
+ FAILED_BY_DTLS_FINGERPRINT_ERROR: 'Failed by DTLS fingerprint error',
8799
8877
 
8800
- define(streamStatusInfo, 'FAILED_BY_DTLS_ERROR', 'Failed by DTLS error');
8801
- /**
8802
- * Indicates general HLS packetizer error, can occur during initialization or packetization (wrong input or out of disk space).
8803
- * @event FAILED_BY_HLS_WRITER_ERROR
8804
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8805
- */
8878
+ /**
8879
+ * Client did not send DTLS packets or packets were lost/corrupted during transmission.
8880
+ * @event FAILED_BY_DTLS_ERROR
8881
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8882
+ */
8883
+ FAILED_BY_DTLS_ERROR: 'Failed by DTLS error',
8806
8884
 
8807
- define(streamStatusInfo, 'FAILED_BY_HLS_WRITER_ERROR', 'Failed by HLS writer error');
8808
- /**
8809
- * Indicates general RTMP republishing error, can occur during initialization or rtmp packetization.
8810
- * @event FAILED_BY_RTMP_WRITER_ERROR
8811
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8812
- */
8885
+ /**
8886
+ * Indicates general HLS packetizer error, can occur during initialization or packetization (wrong input or out of disk space).
8887
+ * @event FAILED_BY_HLS_WRITER_ERROR
8888
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8889
+ */
8890
+ FAILED_BY_HLS_WRITER_ERROR: 'Failed by HLS writer error',
8813
8891
 
8814
- define(streamStatusInfo, 'FAILED_BY_RTMP_WRITER_ERROR', 'Failed by RTMP writer error');
8815
- /**
8816
- * RTP session failed by RTP activity timer.
8817
- * @event FAILED_BY_RTP_ACTIVITY
8818
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8819
- */
8892
+ /**
8893
+ * Indicates general RTMP republishing error, can occur during initialization or rtmp packetization.
8894
+ * @event FAILED_BY_RTMP_WRITER_ERROR
8895
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8896
+ */
8897
+ FAILED_BY_RTMP_WRITER_ERROR: 'Failed by RTMP writer error',
8820
8898
 
8821
- define(streamStatusInfo, 'FAILED_BY_RTP_ACTIVITY', 'Failed by RTP activity');
8822
- /**
8823
- * Related session was disconnected.
8824
- * @event STOPPED_BY_SESSION_DISCONNECT
8825
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8826
- */
8899
+ /**
8900
+ * RTP session failed by RTP activity timer.
8901
+ * @event FAILED_BY_RTP_ACTIVITY
8902
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8903
+ */
8904
+ FAILED_BY_RTP_ACTIVITY: 'Failed by RTP activity',
8827
8905
 
8828
- define(streamStatusInfo, 'STOPPED_BY_SESSION_DISCONNECT', 'Stopped by session disconnect');
8829
- /**
8830
- * Stream was stopped by rest terminate request.
8831
- * @event STOPPED_BY_REST_TERMINATE
8832
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8833
- */
8906
+ /**
8907
+ * Related session was disconnected.
8908
+ * @event STOPPED_BY_SESSION_DISCONNECT
8909
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8910
+ */
8911
+ STOPPED_BY_SESSION_DISCONNECT: 'Stopped by session disconnect',
8834
8912
 
8835
- define(streamStatusInfo, 'STOPPED_BY_REST_TERMINATE', 'Stopped by rest /terminate');
8836
- /**
8837
- * Related publisher stopped its stream or lost connection.
8838
- * @event STOPPED_BY_PUBLISHER_STOP
8839
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8840
- */
8913
+ /**
8914
+ * Stream was stopped by rest terminate request.
8915
+ * @event STOPPED_BY_REST_TERMINATE
8916
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8917
+ */
8918
+ STOPPED_BY_REST_TERMINATE: 'Stopped by rest /terminate',
8841
8919
 
8842
- define(streamStatusInfo, 'STOPPED_BY_PUBLISHER_STOP', 'Stopped by publisher stop');
8843
- /**
8844
- * Stop the media session by user after call was finished or unpublish stream.
8845
- * @event STOPPED_BY_USER
8846
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8847
- */
8920
+ /**
8921
+ * Related publisher stopped its stream or lost connection.
8922
+ * @event STOPPED_BY_PUBLISHER_STOP
8923
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8924
+ */
8925
+ STOPPED_BY_PUBLISHER_STOP: 'Stopped by publisher stop',
8848
8926
 
8849
- define(streamStatusInfo, 'STOPPED_BY_USER', 'Stopped by user');
8850
- /**
8851
- * Error occurred on the stream.
8852
- * @event FAILED_BY_ERROR
8853
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8854
- */
8927
+ /**
8928
+ * Stop the media session by user after call was finished or unpublish stream.
8929
+ * @event STOPPED_BY_USER
8930
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8931
+ */
8932
+ STOPPED_BY_USER: 'Stopped by user',
8855
8933
 
8856
- define(streamStatusInfo, 'FAILED_BY_ERROR', 'Failed by error');
8857
- /**
8858
- * Indicates that error occurred during media session creation. This might be SDP parsing error, all ports are busy, wrong session related config etc.
8859
- * @event FAILED_TO_ADD_STREAM_TO_PROXY
8860
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8861
- */
8934
+ /**
8935
+ * Error occurred on the stream.
8936
+ * @event FAILED_BY_ERROR
8937
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8938
+ */
8939
+ FAILED_BY_ERROR: 'Failed by error',
8862
8940
 
8863
- define(streamStatusInfo, 'FAILED_TO_ADD_STREAM_TO_PROXY', 'Failed to add stream to proxy');
8864
- /**
8865
- * Stopped shapshot distributor.
8866
- * @event DISTRIBUTOR_STOPPED
8867
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8868
- */
8941
+ /**
8942
+ * Indicates that error occurred during media session creation. This might be SDP parsing error, all ports are busy, wrong session related config etc.
8943
+ * @event FAILED_TO_ADD_STREAM_TO_PROXY
8944
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8945
+ */
8946
+ FAILED_TO_ADD_STREAM_TO_PROXY: 'Failed to add stream to proxy',
8869
8947
 
8870
- define(streamStatusInfo, 'DISTRIBUTOR_STOPPED', 'Distributor stopped');
8871
- /**
8872
- * Publish stream is not ready, try again later.
8873
- * @event PUBLISH_STREAM_IS_NOT_READY
8874
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8875
- */
8948
+ /**
8949
+ * Stopped shapshot distributor.
8950
+ * @event DISTRIBUTOR_STOPPED
8951
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8952
+ */
8953
+ DISTRIBUTOR_STOPPED: 'Distributor stopped',
8876
8954
 
8877
- define(streamStatusInfo, 'PUBLISH_STREAM_IS_NOT_READY', 'Publish stream is not ready');
8878
- /**
8879
- * Stream with this name is not found, check the correct of the name.
8880
- * @event STREAM_NOT_FOUND
8881
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8882
- */
8955
+ /**
8956
+ * Publish stream is not ready, try again later.
8957
+ * @event PUBLISH_STREAM_IS_NOT_READY
8958
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8959
+ */
8960
+ PUBLISH_STREAM_IS_NOT_READY: 'Publish stream is not ready',
8883
8961
 
8884
- define(streamStatusInfo, 'STREAM_NOT_FOUND', 'Stream not found');
8885
- /**
8886
- * Server already has a publish stream with the same name, try using different one.
8887
- * @event STREAM_NAME_ALREADY_IN_USE
8888
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8889
- */
8962
+ /**
8963
+ * Stream with this name is not found, check the correct of the name.
8964
+ * @event STREAM_NOT_FOUND
8965
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8966
+ */
8967
+ STREAM_NOT_FOUND: 'Stream not found',
8890
8968
 
8891
- define(streamStatusInfo, 'STREAM_NAME_ALREADY_IN_USE', 'Stream name is already in use');
8892
- /**
8893
- * Error indicates that stream object received by server has empty mediaSessionId field.
8894
- * @event MEDIASESSION_ID_NULL
8895
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8896
- */
8969
+ /**
8970
+ * Server already has a publish stream with the same name, try using different one.
8971
+ * @event STREAM_NAME_ALREADY_IN_USE
8972
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8973
+ */
8974
+ STREAM_NAME_ALREADY_IN_USE: 'Stream name is already in use',
8897
8975
 
8898
- define(streamStatusInfo, 'MEDIASESSION_ID_NULL', 'MediaSessionId is null');
8899
- /**
8900
- * Published or subscribed sessions used this MediaSessionId.
8901
- * @event MEDIASESSION_ID_ALREADY_IN_USE
8902
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8903
- */
8976
+ /**
8977
+ * Error indicates that stream object received by server has empty mediaSessionId field.
8978
+ * @event MEDIASESSION_ID_NULL
8979
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8980
+ */
8981
+ MEDIASESSION_ID_NULL: 'MediaSessionId is null',
8904
8982
 
8905
- define(streamStatusInfo, 'MEDIASESSION_ID_ALREADY_IN_USE', 'MediaSessionId is already in use');
8906
- /**
8907
- * Session is not initialized or terminated on play ordinary stream.
8908
- * @event SESSION_NOT_READY
8909
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8910
- */
8983
+ /**
8984
+ * Published or subscribed sessions used this MediaSessionId.
8985
+ * @event MEDIASESSION_ID_ALREADY_IN_USE
8986
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8987
+ */
8988
+ MEDIASESSION_ID_ALREADY_IN_USE: 'MediaSessionId is already in use',
8911
8989
 
8912
- define(streamStatusInfo, 'SESSION_NOT_READY', 'Session not ready');
8913
- /**
8914
- * Actual session does not exist.
8915
- * @event SESSION_DOES_NOT_EXIST
8916
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8917
- */
8990
+ /**
8991
+ * Session is not initialized or terminated on play ordinary stream.
8992
+ * @event SESSION_NOT_READY
8993
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8994
+ */
8995
+ SESSION_NOT_READY: 'Session not ready',
8918
8996
 
8919
- define(streamStatusInfo, 'SESSION_DOES_NOT_EXIST', 'Session does not exist');
8920
- /**
8921
- * RTSP has wrong format on play stream, check correct of the RTSP url.
8922
- * @event RTSP_HAS_WRONG_FORMAT
8923
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8924
- */
8997
+ /**
8998
+ * Actual session does not exist.
8999
+ * @event SESSION_DOES_NOT_EXIST
9000
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9001
+ */
9002
+ SESSION_DOES_NOT_EXIST: 'Session does not exist',
8925
9003
 
8926
- define(streamStatusInfo, 'RTSP_HAS_WRONG_FORMAT', 'Rtsp has wrong format');
8927
- /**
8928
- * Failed to play vod stream, this format is not supported.
8929
- * @event FILE_HAS_WRONG_FORMAT
8930
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8931
- */
9004
+ /**
9005
+ * RTSP has wrong format on play stream, check the RTSP url validity.
9006
+ * @event RTSP_HAS_WRONG_FORMAT
9007
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9008
+ */
9009
+ RTSP_HAS_WRONG_FORMAT: 'Rtsp has wrong format',
8932
9010
 
8933
- define(streamStatusInfo, 'FILE_HAS_WRONG_FORMAT', 'File has wrong format');
8934
- /**
8935
- * Failed to connect to rtsp stream.
8936
- * @event FAILED_TO_CONNECT_TO_RTSP_STREAM
8937
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8938
- */
9011
+ /**
9012
+ * Failed to play vod stream, this format is not supported.
9013
+ * @event FILE_HAS_WRONG_FORMAT
9014
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9015
+ */
9016
+ FILE_HAS_WRONG_FORMAT: 'File has wrong format',
8939
9017
 
8940
- define(streamStatusInfo, 'FAILED_TO_CONNECT_TO_RTSP_STREAM', 'Failed to connect to rtsp stream');
8941
- /**
8942
- * Rtsp stream is not found, agent received "404-Not Found".
8943
- * @event RTSP_STREAM_NOT_FOUND
8944
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8945
- */
9018
+ /**
9019
+ * Failed to connect to rtsp stream.
9020
+ * @event FAILED_TO_CONNECT_TO_RTSP_STREAM
9021
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9022
+ */
9023
+ FAILED_TO_CONNECT_TO_RTSP_STREAM: 'Failed to connect to rtsp stream',
8946
9024
 
8947
- define(streamStatusInfo, 'RTSP_STREAM_NOT_FOUND', 'Rtsp stream not found');
8948
- /**
8949
- * On shutdown RTSP agent.
8950
- * @event RTSPAGENT_SHUTDOWN
8951
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8952
- */
9025
+ /**
9026
+ * Rtsp stream is not found, agent received "404-Not Found".
9027
+ * @event RTSP_STREAM_NOT_FOUND
9028
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9029
+ */
9030
+ RTSP_STREAM_NOT_FOUND: 'Rtsp stream not found',
8953
9031
 
8954
- define(streamStatusInfo, 'RTSPAGENT_SHUTDOWN', 'RtspAgent shutdown');
8955
- /**
8956
- * Stream failed
8957
- * @event STREAM_FAILED
8958
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8959
- */
9032
+ /**
9033
+ * On shutdown RTSP agent.
9034
+ * @event RTSPAGENT_SHUTDOWN
9035
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9036
+ */
9037
+ RTSPAGENT_SHUTDOWN: 'RtspAgent shutdown',
8960
9038
 
8961
- define(streamStatusInfo, 'STREAM_FAILED', 'Stream failed');
8962
- /**
8963
- * No common codecs on setup track, did not found corresponding trackId->mediaPort.
8964
- * @event NO_COMMON_CODECS
8965
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8966
- */
9039
+ /**
9040
+ * Stream failed
9041
+ * @event STREAM_FAILED
9042
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9043
+ */
9044
+ STREAM_FAILED: 'Stream failed',
8967
9045
 
8968
- define(streamStatusInfo, 'NO_COMMON_CODECS', 'No common codecs');
8969
- /**
8970
- * Bad referenced rtsp link, check for correct, example: rtsp://user:b@d_password@127.0.0.1/stream.
8971
- * @event BAD_URI
8972
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8973
- */
9046
+ /**
9047
+ * No common codecs on setup track, did not found corresponding trackId->mediaPort.
9048
+ * @event NO_COMMON_CODECS
9049
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9050
+ */
9051
+ NO_COMMON_CODECS: 'No common codecs',
8974
9052
 
8975
- define(streamStatusInfo, 'BAD_URI', 'Bad URI');
8976
- /**
8977
- * General VOD error, indicates that Exception occurred while reading/processing media file.
8978
- * @event GOT_EXCEPTION_WHILE_STREAMING_FILE
8979
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8980
- */
9053
+ /**
9054
+ * Bad referenced rtsp link, check for correct, example: rtsp://user:b@d_password@127.0.0.1/stream.
9055
+ * @event BAD_URI
9056
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9057
+ */
9058
+ BAD_URI: 'Bad URI',
8981
9059
 
8982
- define(streamStatusInfo, 'GOT_EXCEPTION_WHILE_STREAMING_FILE', 'Got exception while streaming file');
8983
- /**
8984
- * Requested stream shutdown.
8985
- * @event REQUESTED_STREAM_SHUTDOWN
8986
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8987
- */
9060
+ /**
9061
+ * General VOD error, indicates that Exception occurred while reading/processing media file.
9062
+ * @event GOT_EXCEPTION_WHILE_STREAMING_FILE
9063
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9064
+ */
9065
+ GOT_EXCEPTION_WHILE_STREAMING_FILE: 'Got exception while streaming file',
8988
9066
 
8989
- define(streamStatusInfo, 'REQUESTED_STREAM_SHUTDOWN', 'Requested stream shutdown');
8990
- /**
8991
- * Failed to create movie, file can not be read.
8992
- * @event FAILED_TO_READ_FILE
8993
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
8994
- */
9067
+ /**
9068
+ * Requested stream shutdown.
9069
+ * @event REQUESTED_STREAM_SHUTDOWN
9070
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9071
+ */
9072
+ REQUESTED_STREAM_SHUTDOWN: 'Requested stream shutdown',
8995
9073
 
8996
- define(streamStatusInfo, 'FAILED_TO_READ_FILE', 'Failed to read file');
8997
- /**
8998
- * File does not exist, check filename.
8999
- * @event FILE_NOT_FOUND
9000
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9001
- */
9074
+ /**
9075
+ * Failed to create movie, file can not be read.
9076
+ * @event FAILED_TO_READ_FILE
9077
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9078
+ */
9079
+ FAILED_TO_READ_FILE: 'Failed to read file',
9002
9080
 
9003
- define(streamStatusInfo, 'FILE_NOT_FOUND', 'File not found');
9004
- /**
9005
- * Server failed to establish websocket connection with origin server.
9006
- * @event FAILED_TO_CONNECT_TO_ORIGIN_STREAM
9007
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9008
- */
9081
+ /**
9082
+ * File does not exist, check filename.
9083
+ * @event FILE_NOT_FOUND
9084
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9085
+ */
9086
+ FILE_NOT_FOUND: 'File not found',
9009
9087
 
9010
- define(streamStatusInfo, 'FAILED_TO_CONNECT_TO_ORIGIN_STREAM', 'Failed to connect to origin stream');
9011
- /**
9012
- * CDN stream not found.
9013
- * @event CDN_STREAM_NOT_FOUND
9014
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9015
- */
9088
+ /**
9089
+ * Server failed to establish websocket connection with origin server.
9090
+ * @event FAILED_TO_CONNECT_TO_ORIGIN_STREAM
9091
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9092
+ */
9093
+ FAILED_TO_CONNECT_TO_ORIGIN_STREAM: 'Failed to connect to origin stream',
9016
9094
 
9017
- define(streamStatusInfo, 'CDN_STREAM_NOT_FOUND', 'CDN stream not found');
9018
- /**
9019
- * Indicates that provided URL protocol in stream name is invalid.
9020
- * Valid: vod://file.mp4
9021
- * Invalid: dov://file.mp4
9022
- * @event FAILED_TO_GET_AGENT_STORAGE
9023
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9024
- */
9095
+ /**
9096
+ * CDN stream not found.
9097
+ * @event CDN_STREAM_NOT_FOUND
9098
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9099
+ */
9100
+ CDN_STREAM_NOT_FOUND: 'CDN stream not found',
9025
9101
 
9026
- define(streamStatusInfo, 'FAILED_TO_GET_AGENT_STORAGE', 'Failed to get agent storage');
9027
- /**
9028
- * Shutdown agent servicing origin stream.
9029
- * @event AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN
9030
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9031
- */
9102
+ /**
9103
+ * Indicates that provided URL protocol in stream name is invalid.
9104
+ * Valid: vod://file.mp4
9105
+ * Invalid: dov://file.mp4
9106
+ * @event FAILED_TO_GET_AGENT_STORAGE
9107
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9108
+ */
9109
+ FAILED_TO_GET_AGENT_STORAGE: 'Failed to get agent storage',
9032
9110
 
9033
- define(streamStatusInfo, 'AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN', 'Agent servicing origin stream is shutting down');
9034
- /**
9035
- * Terminated by keep-alive on walk through subscribers.
9036
- * @event TERMINATED_BY_KEEP_ALIVE
9037
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9038
- */
9111
+ /**
9112
+ * Shutdown agent servicing origin stream.
9113
+ * @event AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN
9114
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9115
+ */
9116
+ AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN: 'Agent servicing origin stream is shutting down',
9039
9117
 
9040
- define(streamStatusInfo, 'TERMINATED_BY_KEEP_ALIVE', 'Terminated by keep-alive');
9041
- /**
9042
- * Transcoding required, but disabled in settings
9043
- * @event TRANSCODING_REQUIRED_BUT_DISABLED
9044
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9045
- */
9118
+ /**
9119
+ * Terminated by keep-alive on walk through subscribers.
9120
+ * @event TERMINATED_BY_KEEP_ALIVE
9121
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9122
+ */
9123
+ TERMINATED_BY_KEEP_ALIVE: 'Terminated by keep-alive',
9046
9124
 
9047
- define(streamStatusInfo, 'TRANSCODING_REQUIRED_BUT_DISABLED', 'Transcoding required, but disabled');
9048
- /**
9049
- * Access restricted by access list
9050
- * @event RESTRICTED_ACCESS
9051
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9052
- */
9125
+ /**
9126
+ * Transcoding required, but disabled in server settings
9127
+ * @event TRANSCODING_REQUIRED_BUT_DISABLED
9128
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9129
+ */
9130
+ TRANSCODING_REQUIRED_BUT_DISABLED: 'Transcoding required, but disabled',
9053
9131
 
9054
- define(streamStatusInfo, 'RESTRICTED_ACCESS', 'Restricted access');
9055
- /**
9056
- * No available transcoders for stream
9057
- * @event RESTRICTED_ACCESS
9058
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9059
- */
9132
+ /**
9133
+ * Access restricted by access list
9134
+ * @event RESTRICTED_ACCESS
9135
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9136
+ */
9137
+ RESTRICTED_ACCESS: 'Restricted access',
9060
9138
 
9061
- define(streamStatusInfo, 'NO_AVAILABLE_TRANSCODERS', 'No available transcoders');
9139
+ /**
9140
+ * No available transcoders for stream
9141
+ * @event NO_AVAILABLE_TRANSCODERS
9142
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9143
+ */
9144
+ NO_AVAILABLE_TRANSCODERS: 'No available transcoders'
9145
+ });
9062
9146
  /**
9063
9147
  * @namespace Flashphoner.constants.CALL_STATUS_INFO
9064
9148
  * @see Call
9065
9149
  */
9066
9150
 
9067
- var callStatusInfo = {};
9068
- /**
9069
- * Normal call hangup.
9070
- * @event NORMAL_CALL_CLEARING
9071
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9072
- */
9151
+ var CALL_STATUS_INFO = Object.freeze({
9152
+ /**
9153
+ * Normal call hangup.
9154
+ * @event NORMAL_CALL_CLEARING
9155
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9156
+ */
9157
+ NORMAL_CALL_CLEARING: 'Normal call clearing',
9073
9158
 
9074
- define(callStatusInfo, 'NORMAL_CALL_CLEARING', 'Normal call clearing');
9075
- /**
9076
- * Error occurred on session creation.
9077
- * @event FAILED_BY_SESSION_CREATION
9078
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9079
- */
9159
+ /**
9160
+ * Error occurred while creating a session
9161
+ * @event FAILED_BY_SESSION_CREATION
9162
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9163
+ */
9164
+ FAILED_BY_SESSION_CREATION: 'Failed by session creation',
9080
9165
 
9081
- define(callStatusInfo, 'FAILED_BY_SESSION_CREATION', 'Failed by session creation');
9082
- /**
9083
- * Failed by error during ICE establishment.
9084
- * @event FAILED_BY_ICE_ERROR
9085
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9086
- */
9166
+ /**
9167
+ * Failed by error during ICE establishment.
9168
+ * @event FAILED_BY_ICE_ERROR
9169
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9170
+ */
9171
+ FAILED_BY_ICE_ERROR: 'Failed by ICE error',
9087
9172
 
9088
- define(callStatusInfo, 'FAILED_BY_ICE_ERROR', 'Failed by ICE error');
9089
- /**
9090
- * RTP session failed by RTP activity timer.
9091
- * @event FAILED_BY_RTP_ACTIVITY
9092
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9093
- */
9173
+ /**
9174
+ * RTP session failed by RTP activity timer.
9175
+ * @event FAILED_BY_RTP_ACTIVITY
9176
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9177
+ */
9178
+ FAILED_BY_RTP_ACTIVITY: 'Failed by RTP activity',
9094
9179
 
9095
- define(callStatusInfo, 'FAILED_BY_RTP_ACTIVITY', 'Failed by RTP activity');
9096
- /**
9097
- * FF writer was failed on RTMP.
9098
- * @event FAILED_BY_RTMP_WRITER_ERROR
9099
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9100
- */
9180
+ /**
9181
+ * FF writer was failed on RTMP.
9182
+ * @event FAILED_BY_RTMP_WRITER_ERROR
9183
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9184
+ */
9185
+ FAILED_BY_RTMP_WRITER_ERROR: 'Failed by RTMP writer error',
9101
9186
 
9102
- define(callStatusInfo, 'FAILED_BY_RTMP_WRITER_ERROR', 'Failed by RTMP writer error');
9103
- /**
9104
- * DTLS wrong fingerprint.
9105
- * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
9106
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9107
- */
9187
+ /**
9188
+ * DTLS wrong fingerprint.
9189
+ * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
9190
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9191
+ */
9192
+ FAILED_BY_DTLS_FINGERPRINT_ERROR: 'Failed by DTLS fingerprint error',
9108
9193
 
9109
- define(callStatusInfo, 'FAILED_BY_DTLS_FINGERPRINT_ERROR', 'Failed by DTLS fingerprint error');
9110
- /**
9111
- * No common codecs in sdp
9112
- * @event NO_COMMON_CODECS
9113
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9114
- */
9194
+ /**
9195
+ * No common codecs in sdp
9196
+ * @event NO_COMMON_CODECS
9197
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9198
+ */
9199
+ NO_COMMON_CODECS: 'No common codecs',
9115
9200
 
9116
- define(callStatusInfo, 'NO_COMMON_CODECS', 'No common codecs');
9117
- /**
9118
- * Client did not send DTLS packets or packets were lost/corrupted during transmission.
9119
- * @event FAILED_BY_DTLS_ERROR
9120
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9121
- */
9201
+ /**
9202
+ * Client did not send DTLS packets or packets were lost/corrupted during transmission.
9203
+ * @event FAILED_BY_DTLS_ERROR
9204
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9205
+ */
9206
+ FAILED_BY_DTLS_ERROR: 'Failed by DTLS error',
9122
9207
 
9123
- define(callStatusInfo, 'FAILED_BY_DTLS_ERROR', 'Failed by DTLS error');
9124
- /**
9125
- * Error occurred during call
9126
- * @event FAILED_BY_ERROR
9127
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9128
- */
9208
+ /**
9209
+ * Error occurred during the call
9210
+ * @event FAILED_BY_ERROR
9211
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9212
+ */
9213
+ FAILED_BY_ERROR: 'Failed by error',
9129
9214
 
9130
- define(callStatusInfo, 'FAILED_BY_ERROR', 'Failed by error');
9215
+ /**
9216
+ * Call failed by request timeout
9217
+ * @event FAILED_BY_REQUEST_TIMEOUT
9218
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9219
+ */
9220
+ FAILED_BY_REQUEST_TIMEOUT: 'Failed by request timeout',
9221
+
9222
+ /**
9223
+ * Transcoding required, but disabled in settings
9224
+ * @event TRANSCODING_REQUIRED_BUT_DISABLED
9225
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9226
+ */
9227
+ TRANSCODING_REQUIRED_BUT_DISABLED: 'Transcoding required, but disabled'
9228
+ });
9131
9229
  /**
9132
- * Call failed by request timeout
9133
- * @event FAILED_BY_REQUEST_TIMEOUT
9134
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9135
- */
9230
+ * @namespace Flashphoner.constants.ERROR_INFO
9231
+ */
9232
+
9233
+ var ERROR_INFO = Object.freeze({
9234
+ /**
9235
+ * Error if none of MediaProviders available
9236
+ * @event NONE_OF_MEDIAPROVIDERS_AVAILABLE
9237
+ * @memberof Flashphoner.constants.ERROR_INFO
9238
+ */
9239
+ NONE_OF_MEDIAPROVIDERS_AVAILABLE: 'None of MediaProviders available',
9136
9240
 
9137
- define(callStatusInfo, 'FAILED_BY_REQUEST_TIMEOUT', 'Failed by request timeout');
9241
+ /**
9242
+ * Error if none of preferred MediaProviders available
9243
+ * @event NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE
9244
+ * @memberof Flashphoner.constants.ERROR_INFO
9245
+ */
9246
+ NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE: 'None of preferred MediaProviders available',
9247
+
9248
+ /**
9249
+ * Error if API is not initialized
9250
+ * @event FLASHPHONER_API_NOT_INITIALIZED
9251
+ * @memberof Flashphoner.constants.ERROR_INFO
9252
+ */
9253
+ FLASHPHONER_API_NOT_INITIALIZED: 'Flashphoner API is not initialized',
9254
+
9255
+ /**
9256
+ * Error if options.urlServer is not specified
9257
+ * @event OPTIONS_URLSERVER_MUST_BE_PROVIDED
9258
+ * @memberof Flashphoner.constants.ERROR_INFO
9259
+ */
9260
+ OPTIONS_URLSERVER_MUST_BE_PROVIDED: 'options.urlServer must be provided',
9261
+
9262
+ /**
9263
+ * Error if session state is not valid
9264
+ * @event INVALID_SESSION_STATE
9265
+ * @memberof Flashphoner.constants.ERROR_INFO
9266
+ */
9267
+ INVALID_SESSION_STATE: 'Invalid session state',
9268
+
9269
+ /**
9270
+ * Error if no options provided
9271
+ * @event OPTIONS_MUST_BE_PROVIDED
9272
+ * @memberof Flashphoner.constants.ERROR_INFO
9273
+ */
9274
+ OPTIONS_MUST_BE_PROVIDED: 'options must be provided',
9275
+
9276
+ /**
9277
+ * Error if call status is not {@link Flashphoner.constants.CALL_STATUS.NEW}
9278
+ * @event INVALID_CALL_STATE
9279
+ * @memberof Flashphoner.constants.ERROR_INFO
9280
+ */
9281
+ INVALID_CALL_STATE: 'Invalid call state',
9282
+
9283
+ /**
9284
+ * Error if event is not specified
9285
+ * @event EVENT_CANT_BE_NULL
9286
+ * @memberof Flashphoner.constants.ERROR_INFO
9287
+ */
9288
+ EVENT_CANT_BE_NULL: 'Event can\'t be null',
9289
+
9290
+ /**
9291
+ * Error if callback is not a valid function
9292
+ * @event CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION
9293
+ * @memberof Flashphoner.constants.ERROR_INFO
9294
+ */
9295
+ CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION: 'Callback needs to be a valid function',
9296
+
9297
+ /**
9298
+ * Error if options.name is not specified
9299
+ * @event OPTIONS_NAME_MUST_BE_PROVIDED
9300
+ * @memberof Flashphoner.constants.ERROR_INFO
9301
+ */
9302
+ OPTIONS_NAME_MUST_BE_PROVIDED: 'options.name must be provided',
9303
+
9304
+ /**
9305
+ * Error if number of cams is less than 2 or camera is already used by other application
9306
+ * @event CAN_NOT_SWITCH_CAM
9307
+ * @memberOf Flashphoner.constants.ERROR_INFO
9308
+ */
9309
+ CAN_NOT_SWITCH_CAM: 'Number of cams is less than 2 or camera is already used by other application',
9310
+
9311
+ /**
9312
+ * Error if number of mics is less than 2 or microphone is already used by other application
9313
+ * @event CAN_NOT_SWITCH_MIC
9314
+ * @memberOf Flashphoner.constants.ERROR_INFO
9315
+ */
9316
+ CAN_NOT_SWITCH_MIC: 'Number of mics is less than 2 or microphone is already used by other application',
9317
+
9318
+ /**
9319
+ * Local browser error detected
9320
+ * @event LOCAL_ERROR
9321
+ * @memberOf Flashphoner.constants.ERROR_INFO
9322
+ */
9323
+ LOCAL_ERROR: 'Local error'
9324
+ });
9138
9325
  /**
9139
- * Transcoding required, but disabled in settings
9140
- * @event TRANSCODING_REQUIRED_BUT_DISABLED
9141
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9326
+ * Local media devices type
9327
+ * @namespace Flashphoner.constants.MEDIA_DEVICE_KIND
9142
9328
  */
9143
9329
 
9144
- define(callStatusInfo, 'TRANSCODING_REQUIRED_BUT_DISABLED', 'Transcoding required, but disabled');
9145
- /**
9146
- * @namespace Flashphoner.constants.ERROR_INFO
9147
- */
9330
+ var MEDIA_DEVICE_KIND = Object.freeze({
9331
+ /**
9332
+ * List local media output devices
9333
+ * @see Flashphoner.getMediaDevices
9334
+ * @memberOf Flashphoner.constants.MEDIA_DEVICE_KIND
9335
+ */
9336
+ OUTPUT: 'output',
9337
+
9338
+ /**
9339
+ * List local media input devices
9340
+ * @see Flashphoner.getMediaDevices
9341
+ * @memberOf Flashphoner.constants.MEDIA_DEVICE_KIND
9342
+ */
9343
+ INPUT: 'input',
9148
9344
 
9149
- var errorInfo = {};
9345
+ /**
9346
+ * List local media devices
9347
+ * @see Flashphoner.getMediaDevices
9348
+ * @memberOf Flashphoner.constants.MEDIA_DEVICE_KIND
9349
+ */
9350
+ ALL: 'all'
9351
+ });
9150
9352
  /**
9151
- * Error if none of MediaProviders available
9152
- * @event NONE_OF_MEDIAPROVIDERS_AVAILABLE
9153
- * @memberof Flashphoner.constants.ERROR_INFO
9353
+ * WebRTC transport type
9354
+ * @namespace Flashphoner.constants.TRANSPORT_TYPE
9154
9355
  */
9155
9356
 
9156
- define(errorInfo, 'NONE_OF_MEDIAPROVIDERS_AVAILABLE', 'None of MediaProviders available');
9357
+ var TRANSPORT_TYPE = Object.freeze({
9358
+ /**
9359
+ * WebRTC RTP traffic goes over UDP (default)
9360
+ * @see Stream
9361
+ * @memberOf Flashphoner.constants.TRANSPORT_TYPE
9362
+ */
9363
+ UDP: 'UDP',
9364
+
9365
+ /**
9366
+ * WebRTC RTP traffic goes over TCP
9367
+ * @see Stream
9368
+ * @memberOf Flashphoner.constants.TRANSPORT_TYPE
9369
+ */
9370
+ TCP: 'TCP'
9371
+ });
9157
9372
  /**
9158
- * Error if none of preferred MediaProviders available
9159
- * @event NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE
9160
- * @memberof Flashphoner.constants.ERROR_INFO
9373
+ * WebRTC connection quality type
9374
+ * @namespace Flashphoner.constants.CONNECTION_QUALITY
9161
9375
  */
9162
9376
 
9163
- define(errorInfo, 'NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE', 'None of preferred MediaProviders available');
9164
- /**
9165
- * Error if API is not initialized
9166
- * @event FLASHPHONER_API_NOT_INITIALIZED
9167
- * @memberof Flashphoner.constants.ERROR_INFO
9168
- */
9377
+ var CONNECTION_QUALITY = Object.freeze({
9378
+ /**
9379
+ * Channel bandwidth is perfect
9380
+ * @see Stream
9381
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9382
+ */
9383
+ PERFECT: 'PERFECT',
9169
9384
 
9170
- define(errorInfo, 'FLASHPHONER_API_NOT_INITIALIZED', 'Flashphoner API is not initialized');
9171
- /**
9172
- * Error if options.urlServer is not specified
9173
- * @event OPTIONS_URLSERVER_MUST_BE_PROVIDED
9174
- * @memberof Flashphoner.constants.ERROR_INFO
9175
- */
9385
+ /**
9386
+ * Channel bandwidth is good
9387
+ * @see Stream
9388
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9389
+ */
9390
+ GOOD: 'GOOD',
9176
9391
 
9177
- define(errorInfo, 'OPTIONS_URLSERVER_MUST_BE_PROVIDED', 'options.urlServer must be provided');
9178
- /**
9179
- * Error if session state is not REGISTERED
9180
- * @event INVALID_SESSION_STATE
9181
- * @memberof Flashphoner.constants.ERROR_INFO
9182
- */
9392
+ /**
9393
+ * Channel bandwidth is bad
9394
+ * @see Stream
9395
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9396
+ */
9397
+ BAD: 'BAD',
9183
9398
 
9184
- define(errorInfo, 'INVALID_SESSION_STATE', 'Invalid session state');
9185
- /**
9186
- * Error if no options provided
9187
- * @event OPTIONS_MUST_BE_PROVIDED
9188
- * @memberof Flashphoner.constants.ERROR_INFO
9189
- */
9399
+ /**
9400
+ * Channel bandwidth is unknown (initial state)
9401
+ * @see Stream
9402
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9403
+ */
9404
+ UNKNOWN: 'UNKNOWN',
9190
9405
 
9191
- define(errorInfo, 'OPTIONS_MUST_BE_PROVIDED', 'options must be provided');
9406
+ /**
9407
+ * Channel bandwidth is updating
9408
+ * @see Stream
9409
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9410
+ */
9411
+ UPDATE: 'UPDATE'
9412
+ });
9192
9413
  /**
9193
- * Error if call status is not {@link Flashphoner.constants.CALL_STATUS.NEW}
9194
- * @event INVALID_CALL_STATE
9195
- * @memberof Flashphoner.constants.ERROR_INFO
9414
+ * Websocket signaling stream event
9415
+ * @see Stream
9416
+ * @memberOf Flashphoner.constants
9196
9417
  */
9197
9418
 
9198
- define(errorInfo, 'INVALID_CALL_STATE', 'Invalid call state');
9419
+ var STREAM_EVENT = 'STREAM_EVENT';
9199
9420
  /**
9200
- * Error if event is not specified
9201
- * @event EVENT_CANT_BE_NULL
9202
- * @memberof Flashphoner.constants.ERROR_INFO
9421
+ * Websocket signaling stream event type
9422
+ * @namespace Flashphoner.constants.STREAM_EVENT_TYPE
9203
9423
  */
9204
9424
 
9205
- define(errorInfo, 'EVENT_CANT_BE_NULL', 'Event can\'t be null');
9206
- /**
9207
- * Error if callback is not a valid function
9208
- * @event CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION
9209
- * @memberof Flashphoner.constants.ERROR_INFO
9210
- */
9425
+ var STREAM_EVENT_TYPE = Object.freeze({
9426
+ /**
9427
+ * Stream audio is muted
9428
+ * @see Stream
9429
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9430
+ */
9431
+ AUDIO_MUTED: 'audioMuted',
9211
9432
 
9212
- define(errorInfo, 'CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION', 'Callback needs to be a valid function');
9213
- /**
9214
- * Error if session state is not ESTABLISHED
9215
- * @event INVALID_SESSION_STATE
9216
- * @memberof Flashphoner.constants.ERROR_INFO
9217
- */
9433
+ /**
9434
+ * Stream audio is unmuted
9435
+ * @see Stream
9436
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9437
+ */
9438
+ AUDIO_UNMUTED: 'audioUnmuted',
9218
9439
 
9219
- define(errorInfo, 'INVALID_SESSION_STATE', 'Invalid session state');
9220
- /**
9221
- * Error if options.name is not specified
9222
- * @event OPTIONS_NAME_MUST_BE_PROVIDED
9223
- * @memberof Flashphoner.constants.ERROR_INFO
9224
- */
9440
+ /**
9441
+ * Stream video is muted
9442
+ * @see Stream
9443
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9444
+ */
9445
+ VIDEO_MUTED: 'videoMuted',
9225
9446
 
9226
- define(errorInfo, 'OPTIONS_NAME_MUST_BE_PROVIDED', 'options.name must be provided');
9227
- /**
9228
- * Error if number of cams is less than 2 or already used custom stream
9229
- * @event CAN_NOT_SWITCH_CAM
9230
- * @memberOf Flashphoner.constants.ERROR_INFO
9231
- */
9447
+ /**
9448
+ * Stream videoo is unmuted
9449
+ * @see Stream
9450
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9451
+ */
9452
+ VIDEO_UNMUTED: 'videoUnmuted',
9232
9453
 
9233
- define(errorInfo, 'CAN_NOT_SWITCH_CAM', 'Number of cams is less than 2 or already used custom stream');
9454
+ /**
9455
+ * Data bound to the stream are received
9456
+ * @see Stream
9457
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9458
+ */
9459
+ DATA: 'data'
9460
+ });
9234
9461
  /**
9235
- * Error if number of mics is less than 2 or already used custom stream
9236
- * @event CAN_NOT_SWITCH_MIC
9237
- * @memberOf Flashphoner.constants.ERROR_INFO
9462
+ * WebRTC video content hint type
9463
+ * @namespace Flashphoner.constants.CONTENT_HINT_TYPE
9238
9464
  */
9239
9465
 
9240
- define(errorInfo, 'CAN_NOT_SWITCH_MIC', 'Number of mics is less than 2 or already used custom stream');
9241
- /**
9242
- * Error if recived local error
9243
- * @event CAN_NOT_SWITCH_MIC
9244
- * @memberOf Flashphoner.constants.ERROR_INFO
9245
- */
9466
+ var CONTENT_HINT_TYPE = Object.freeze({
9467
+ /**
9468
+ * Video content is motion (webcam case): keep FPS, resolution and bitrate may change
9469
+ * @see Stream
9470
+ * @memberOf Flashphoner.constants.CONTENT_HINT_TYPE
9471
+ */
9472
+ MOTION: 'motion',
9246
9473
 
9247
- define(errorInfo, 'LOCAL_ERROR', 'Local error');
9248
- var mediaDeviceKind = {};
9249
- define(mediaDeviceKind, 'OUTPUT', 'output');
9250
- define(mediaDeviceKind, 'INPUT', 'input');
9251
- define(mediaDeviceKind, 'ALL', 'all');
9252
- var transportType = {};
9253
- define(transportType, 'UDP', 'UDP');
9254
- define(transportType, 'TCP', 'TCP');
9255
- var connectionQuality = {};
9256
- define(connectionQuality, 'PERFECT', 'PERFECT');
9257
- define(connectionQuality, 'GOOD', 'GOOD');
9258
- define(connectionQuality, 'BAD', 'BAD');
9259
- define(connectionQuality, 'UNKNOWN', 'UNKNOWN');
9260
- define(connectionQuality, 'UPDATE', 'UPDATE');
9261
- var streamEventType = {};
9262
- define(streamEventType, 'AUDIO_MUTED', 'audioMuted');
9263
- define(streamEventType, 'AUDIO_UNMUTED', 'audioUnmuted');
9264
- define(streamEventType, 'VIDEO_MUTED', 'videoMuted');
9265
- define(streamEventType, 'VIDEO_UNMUTED', 'videoUnmuted');
9266
- define(streamEventType, 'DATA', 'data');
9267
- var contentHintType = {};
9268
- define(contentHintType, 'MOTION', 'motion');
9269
- define(contentHintType, 'DETAIL', 'detail');
9270
- define(contentHintType, 'TEXT', 'text');
9271
- var constants = {};
9272
- define(constants, 'SESSION_STATUS', sessionStatus);
9273
- define(constants, 'STREAM_EVENT_TYPE', streamEventType);
9274
- define(constants, 'STREAM_EVENT', 'STREAM_EVENT');
9275
- define(constants, 'STREAM_STATUS', streamStatus);
9276
- define(constants, 'CALL_STATUS', callStatus);
9277
- define(constants, 'STREAM_STATUS_INFO', streamStatusInfo);
9278
- define(constants, 'CALL_STATUS_INFO', callStatusInfo);
9279
- define(constants, 'ERROR_INFO', errorInfo);
9280
- define(constants, 'MEDIA_DEVICE_KIND', mediaDeviceKind);
9281
- define(constants, 'TRANSPORT_TYPE', transportType);
9282
- define(constants, 'CONNECTION_QUALITY', connectionQuality);
9283
- define(constants, 'CONTENT_HINT_TYPE', contentHintType); //define helper
9284
-
9285
- function define(obj, name, value) {
9286
- Object.defineProperty(obj, name, {
9287
- value: value,
9288
- enumerable: true
9289
- });
9290
- }
9474
+ /**
9475
+ * Video content is detail (sreen sharing case): keep resolution, bitrate may change, FPS may drop
9476
+ * @see Stream
9477
+ * @memberOf Flashphoner.constants.CONTENT_HINT_TYPE
9478
+ */
9479
+ DETAIL: 'detail',
9291
9480
 
9292
- module.exports = constants;
9481
+ /**
9482
+ * Video content is text (sreen sharing case): keep resolution and bitrate, FPS may drop
9483
+ * @see Stream
9484
+ * @memberOf Flashphoner.constants.CONTENT_HINT_TYPE
9485
+ */
9486
+ TEXT: 'text'
9487
+ });
9488
+ module.exports = {
9489
+ SESSION_STATUS: SESSION_STATUS,
9490
+ STREAM_STATUS: STREAM_STATUS,
9491
+ CALL_STATUS: CALL_STATUS,
9492
+ STREAM_STATUS_INFO: STREAM_STATUS_INFO,
9493
+ CALL_STATUS_INFO: CALL_STATUS_INFO,
9494
+ ERROR_INFO: ERROR_INFO,
9495
+ MEDIA_DEVICE_KIND: MEDIA_DEVICE_KIND,
9496
+ TRANSPORT_TYPE: TRANSPORT_TYPE,
9497
+ CONNECTION_QUALITY: CONNECTION_QUALITY,
9498
+ STREAM_EVENT: STREAM_EVENT,
9499
+ STREAM_EVENT_TYPE: STREAM_EVENT_TYPE,
9500
+ CONTENT_HINT_TYPE: CONTENT_HINT_TYPE
9501
+ };
9293
9502
 
9294
9503
  },{}],40:[function(require,module,exports){
9295
9504
  'use strict';
@@ -9317,7 +9526,12 @@ var createConnection = function createConnection(options) {
9317
9526
  var id = options.id;
9318
9527
  var authToken = options.authToken;
9319
9528
  var display = options.display || options.localDisplay;
9320
- var flashBufferTime = options.flashBufferTime || 0;
9529
+ var flashBufferTime = options.flashBufferTime || 0; // Set connection logger #WCS-2434
9530
+
9531
+ if (options.logger) {
9532
+ logger = options.logger;
9533
+ }
9534
+
9321
9535
  var url = getConnectionUrl(options.mainUrl, options.flashProto, options.flashPort); //todo state from flash instance
9322
9536
 
9323
9537
  var state = function state() {
@@ -9938,8 +10152,9 @@ var constants = require("./constants");
9938
10152
 
9939
10153
  var util = require('./util');
9940
10154
 
9941
- var logger = require('./util').logger;
10155
+ var LoggerObject = require('./util').logger;
9942
10156
 
10157
+ var coreLogger;
9943
10158
  var loggerConf = {
9944
10159
  push: false,
9945
10160
  severity: "INFO"
@@ -9987,7 +10202,7 @@ var disableConnectionQualityCalculation;
9987
10202
  * @param {String=} options.decoderLocation Location of video-worker2.js file
9988
10203
  * @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
9989
10204
  * @param {Object=} options.constraints Default local media constraints
9990
- * @param {Object=} options.logger Enable logging
10205
+ * @param {Object=} options.logger Core logger options
9991
10206
  * @throws {Error} Error if none of MediaProviders available
9992
10207
  * @memberof Flashphoner
9993
10208
  */
@@ -9996,16 +10211,10 @@ var init = function init(options) {
9996
10211
  if (!initialized) {
9997
10212
  if (!options) {
9998
10213
  options = {};
9999
- }
10000
-
10001
- loggerConf = options.logger || loggerConf;
10214
+ } // init global logger
10002
10215
 
10003
- if (options.logger !== null) {
10004
- loggerConf.enableLogs = true;
10005
- } // init logger
10006
10216
 
10007
-
10008
- logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
10217
+ coreLogger = createLogger(options.logger);
10009
10218
  var waitingTemasys = false;
10010
10219
 
10011
10220
  try {
@@ -10026,7 +10235,7 @@ var init = function init(options) {
10026
10235
  constraints: options.constraints || getDefaultMediaConstraints(),
10027
10236
  extensionId: options.screenSharingExtensionId,
10028
10237
  audioContext: audioContext,
10029
- logger: logger,
10238
+ logger: coreLogger,
10030
10239
  createMicGainNode: enableGainNode
10031
10240
  };
10032
10241
  webRtcProvider.configure(webRtcConf);
@@ -10043,7 +10252,7 @@ var init = function init(options) {
10043
10252
  var webRtcConf = {
10044
10253
  constraints: options.constraints || getDefaultMediaConstraints(),
10045
10254
  extensionId: options.screenSharingExtensionId,
10046
- logger: logger
10255
+ logger: coreLogger
10047
10256
  };
10048
10257
  webRtcProvider.configure(webRtcConf); // Just reorder media provider list
10049
10258
 
@@ -10071,7 +10280,7 @@ var init = function init(options) {
10071
10280
  var flashConf = {
10072
10281
  constraints: options.constraints || getDefaultMediaConstraints(),
10073
10282
  flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
10074
- logger: logger
10283
+ logger: coreLogger
10075
10284
  };
10076
10285
  flashProvider.configure(flashConf);
10077
10286
  }
@@ -10095,7 +10304,7 @@ var init = function init(options) {
10095
10304
  receiverLocation: options.receiverLocation,
10096
10305
  decoderLocation: options.decoderLocation,
10097
10306
  audioContext: audioContext,
10098
- logger: logger
10307
+ logger: coreLogger
10099
10308
  };
10100
10309
  websocketProvider.configure(wsConf);
10101
10310
  } //check at least 1 provider available
@@ -10117,7 +10326,7 @@ var init = function init(options) {
10117
10326
  MediaProvider = _MediaProvider;
10118
10327
  }
10119
10328
  } else {
10120
- logger.warn(LOG_PREFIX, "Preferred media provider is not available.");
10329
+ corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
10121
10330
  }
10122
10331
  }
10123
10332
 
@@ -10145,7 +10354,7 @@ var init = function init(options) {
10145
10354
  options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
10146
10355
  }
10147
10356
 
10148
- logger.info(LOG_PREFIX, "Initialized");
10357
+ coreLogger.info(LOG_PREFIX, "Initialized");
10149
10358
  initialized = true;
10150
10359
  }
10151
10360
  };
@@ -10184,7 +10393,7 @@ var playFirstVideo = function playFirstVideo(display, isLocal, src) {
10184
10393
  }
10185
10394
  };
10186
10395
  /**
10187
- * Get logger
10396
+ * Get core logger
10188
10397
  *
10189
10398
  * @returns {Object} Logger
10190
10399
  * @memberof Flashphoner
@@ -10195,7 +10404,7 @@ var getLogger = function getLogger() {
10195
10404
  if (!initialized) {
10196
10405
  console.warn("Initialize API first.");
10197
10406
  } else {
10198
- return logger;
10407
+ return coreLogger;
10199
10408
  }
10200
10409
  };
10201
10410
  /**
@@ -10368,6 +10577,31 @@ var getSessions = function getSessions() {
10368
10577
 
10369
10578
  var getSession = function getSession(id) {
10370
10579
  return sessions[id];
10580
+ }; // Get logger configuration from options
10581
+
10582
+
10583
+ var getLoggerConf = function getLoggerConf(loggerOptions) {
10584
+ var conf = loggerOptions || loggerConf;
10585
+
10586
+ if (loggerOptions !== null) {
10587
+ conf.enableLogs = true;
10588
+ }
10589
+
10590
+ return conf;
10591
+ }; // Create a new logger object
10592
+
10593
+
10594
+ var createLogger = function createLogger(loggerOptions) {
10595
+ var parentLogger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : coreLogger;
10596
+ var newLogger = parentLogger;
10597
+
10598
+ if (newLogger === undefined || loggerOptions != undefined) {
10599
+ var loggerConf = getLoggerConf(loggerOptions);
10600
+ newLogger = new LoggerObject();
10601
+ newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
10602
+ }
10603
+
10604
+ return newLogger;
10371
10605
  };
10372
10606
  /**
10373
10607
  * Create new session and connect to server.
@@ -10387,6 +10621,7 @@ var getSession = function getSession(id) {
10387
10621
  * @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
10388
10622
  * @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
10389
10623
  * @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
10624
+ * @param {Object=} options.logger Session logger options
10390
10625
  * @returns {Session} Created session
10391
10626
  * @throws {Error} Error if API is not initialized
10392
10627
  * @throws {TypeError} Error if options.urlServer is not specified
@@ -10401,8 +10636,12 @@ var createSession = function createSession(options) {
10401
10636
 
10402
10637
  if (!options || !options.urlServer) {
10403
10638
  throw new TypeError("options.urlServer must be provided");
10404
- }
10639
+ } // Set session logger #WCS-2434
10640
+
10405
10641
 
10642
+ var sessionLogger = createLogger(options.logger); // Override logger for all low level operations
10643
+
10644
+ var logger = sessionLogger;
10406
10645
  var id_ = uuid_v1();
10407
10646
  var sessionStatus = SESSION_STATUS.PENDING;
10408
10647
  var urlServer = options.urlServer;
@@ -10508,7 +10747,7 @@ var createSession = function createSession(options) {
10508
10747
  if (timeout != undefined && timeout > 0) {
10509
10748
  connectionTimeout = setTimeout(function () {
10510
10749
  if (wsConnection.readyState == 0) {
10511
- console.log("WS connection timeout");
10750
+ logger.warn(LOG_PREFIX, "WS connection timeout");
10512
10751
  wsConnection.close();
10513
10752
  }
10514
10753
  }, timeout);
@@ -10532,7 +10771,7 @@ var createSession = function createSession(options) {
10532
10771
  mediaProviders: Object.keys(MediaProvider),
10533
10772
  keepAlive: keepAlive,
10534
10773
  authToken: authToken,
10535
- clientVersion: "2.0.212",
10774
+ clientVersion: "2.0.217",
10536
10775
  clientOSVersion: window.navigator.appVersion,
10537
10776
  clientBrowserVersion: window.navigator.userAgent,
10538
10777
  msePacketizationVersion: 2,
@@ -10838,6 +11077,7 @@ var createSession = function createSession(options) {
10838
11077
  * @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
10839
11078
  * @param {Array<string>=} options.sipHeaders Array of custom SIP headers
10840
11079
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
11080
+ * @param {Object=} options.logger Call logger options
10841
11081
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
10842
11082
  * @returns {Call} Call
10843
11083
  * @throws {TypeError} Error if no options provided
@@ -10850,15 +11090,18 @@ var createSession = function createSession(options) {
10850
11090
  var createCall = function createCall(options) {
10851
11091
  //check session state
10852
11092
  if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
10853
- logger.info(LOG_PREFIX, "Status is " + sessionStatus);
10854
- throw new Error('Invalid session state');
11093
+ throw new Error('Invalid session state ' + sessionStatus);
10855
11094
  } //check options
10856
11095
 
10857
11096
 
10858
11097
  if (!options) {
10859
11098
  throw new TypeError("options must be provided");
10860
- }
11099
+ } // Set call logger #WCS-2434
11100
+
11101
+
11102
+ var callLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
10861
11103
 
11104
+ var logger = callLogger;
10862
11105
  var login = appKey == 'clickToCallApp' ? '' : cConfig.sipLogin;
10863
11106
  var caller_ = options.incoming ? options.caller : login;
10864
11107
  var callee_ = options.callee;
@@ -11004,7 +11247,8 @@ var createSession = function createSession(options) {
11004
11247
  constraints: constraints,
11005
11248
  connectionConfig: mediaOptions,
11006
11249
  audioOutputId: audioOutputId,
11007
- videoContentHint: videoContentHint
11250
+ videoContentHint: videoContentHint,
11251
+ logger: logger
11008
11252
  }).then(function (newConnection) {
11009
11253
  mediaConnection = newConnection;
11010
11254
  return mediaConnection.createOffer({
@@ -11590,7 +11834,7 @@ var createSession = function createSession(options) {
11590
11834
  /**
11591
11835
  * Get call info
11592
11836
  * @returns {string} Info
11593
- * @memberof Stream
11837
+ * @memberof Call
11594
11838
  * @inner
11595
11839
  */
11596
11840
 
@@ -11601,7 +11845,7 @@ var createSession = function createSession(options) {
11601
11845
  /**
11602
11846
  * Get stream error info
11603
11847
  * @returns {string} Error info
11604
- * @memberof Stream
11848
+ * @memberof Call
11605
11849
  * @inner
11606
11850
  */
11607
11851
 
@@ -11609,6 +11853,17 @@ var createSession = function createSession(options) {
11609
11853
  var getErrorInfo = function getErrorInfo() {
11610
11854
  return errorInfo_;
11611
11855
  };
11856
+ /**
11857
+ * Get call logger
11858
+ *
11859
+ * @returns {Object} Logger
11860
+ * @memberof Call
11861
+ */
11862
+
11863
+
11864
+ var getLogger = function getLogger() {
11865
+ return callLogger;
11866
+ };
11612
11867
 
11613
11868
  call.call = call_;
11614
11869
  call.answer = answer;
@@ -11640,6 +11895,7 @@ var createSession = function createSession(options) {
11640
11895
  call.switchMic = switchMic;
11641
11896
  call.switchToScreen = switchToScreen;
11642
11897
  call.switchToCam = switchToCam;
11898
+ call.getLogger = getLogger;
11643
11899
  calls[id_] = call;
11644
11900
  return call;
11645
11901
  };
@@ -11686,6 +11942,7 @@ var createSession = function createSession(options) {
11686
11942
  * @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
11687
11943
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
11688
11944
  * @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
11945
+ * @param {Object=} options.logger Stream logger options
11689
11946
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
11690
11947
  * @returns {Stream} Stream
11691
11948
  * @throws {TypeError} Error if no options provided
@@ -11701,7 +11958,7 @@ var createSession = function createSession(options) {
11701
11958
  var availableCallbacks = []; //check session state
11702
11959
 
11703
11960
  if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
11704
- throw new Error('Invalid session state');
11961
+ throw new Error('Invalid session state ' + sessionStatus);
11705
11962
  } //check options
11706
11963
 
11707
11964
 
@@ -11711,8 +11968,12 @@ var createSession = function createSession(options) {
11711
11968
 
11712
11969
  if (!options.name) {
11713
11970
  throw new TypeError("options.name must be provided");
11714
- }
11971
+ } // Set stream logger #WCS-2434
11715
11972
 
11973
+
11974
+ var streamLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
11975
+
11976
+ var logger = streamLogger;
11716
11977
  var clientKf = new KalmanFilter();
11717
11978
  var serverKf = new KalmanFilter();
11718
11979
  var id_ = uuid_v1();
@@ -11956,7 +12217,7 @@ var createSession = function createSession(options) {
11956
12217
  logger.debug(LOG_PREFIX, "Play stream " + name_);
11957
12218
 
11958
12219
  if (status_ !== STREAM_STATUS.NEW) {
11959
- throw new Error("Invalid stream state");
12220
+ throw new Error("Invalid stream state " + status_);
11960
12221
  }
11961
12222
 
11962
12223
  status_ = STREAM_STATUS.PENDING; //create mediaProvider connection
@@ -11975,7 +12236,8 @@ var createSession = function createSession(options) {
11975
12236
  audioOutputId: audioOutputId,
11976
12237
  remoteVideo: remoteVideo,
11977
12238
  playoutDelay: playoutDelay,
11978
- unmutePlayOnStart: unmutePlayOnStart
12239
+ unmutePlayOnStart: unmutePlayOnStart,
12240
+ logger: logger
11979
12241
  }, streamRefreshHandlers[id_]).then(function (newConnection) {
11980
12242
  mediaConnection = newConnection;
11981
12243
 
@@ -12039,7 +12301,7 @@ var createSession = function createSession(options) {
12039
12301
  logger.debug(LOG_PREFIX, "Publish stream " + name_);
12040
12302
 
12041
12303
  if (status_ !== STREAM_STATUS.NEW) {
12042
- throw new Error("Invalid stream state");
12304
+ throw new Error("Invalid stream state " + status_);
12043
12305
  }
12044
12306
 
12045
12307
  status_ = STREAM_STATUS.PENDING;
@@ -12073,7 +12335,8 @@ var createSession = function createSession(options) {
12073
12335
  connectionConfig: mediaOptions,
12074
12336
  connectionConstraints: mediaConnectionConstraints,
12075
12337
  customStream: constraints && constraints.customStream ? constraints.customStream : false,
12076
- videoContentHint: videoContentHint
12338
+ videoContentHint: videoContentHint,
12339
+ logger: logger
12077
12340
  }).then(function (newConnection) {
12078
12341
  mediaConnection = newConnection;
12079
12342
  return mediaConnection.createOffer({
@@ -12703,6 +12966,17 @@ var createSession = function createSession(options) {
12703
12966
  availableCallbacks.push(promise);
12704
12967
  });
12705
12968
  };
12969
+ /**
12970
+ * Get stream logger
12971
+ *
12972
+ * @returns {Object} Logger
12973
+ * @memberof Stream
12974
+ */
12975
+
12976
+
12977
+ var getLogger = function getLogger() {
12978
+ return streamLogger;
12979
+ };
12706
12980
 
12707
12981
  stream.play = play;
12708
12982
  stream.publish = publish;
@@ -12742,6 +13016,7 @@ var createSession = function createSession(options) {
12742
13016
  stream.switchToScreen = switchToScreen;
12743
13017
  stream.switchToCam = switchToCam;
12744
13018
  stream.sendData = sendData;
13019
+ stream.getLogger = getLogger;
12745
13020
  streams[id_] = stream;
12746
13021
  return stream;
12747
13022
  };
@@ -12950,6 +13225,17 @@ var createSession = function createSession(options) {
12950
13225
  }
12951
13226
 
12952
13227
  return sdp;
13228
+ };
13229
+ /**
13230
+ * Get session logger
13231
+ *
13232
+ * @returns {Object} Logger
13233
+ * @memberof Session
13234
+ */
13235
+
13236
+
13237
+ var getLogger = function getLogger() {
13238
+ return sessionLogger;
12953
13239
  }; //export Session
12954
13240
 
12955
13241
 
@@ -12965,7 +13251,8 @@ var createSession = function createSession(options) {
12965
13251
  session.submitBugReport = submitBugReport;
12966
13252
  session.startDebug = startDebug;
12967
13253
  session.stopDebug = stopDebug;
12968
- session.on = on; //save interface to global map
13254
+ session.on = on;
13255
+ session.getLogger = getLogger; //save interface to global map
12969
13256
 
12970
13257
  sessions[id_] = session;
12971
13258
  return session;
@@ -13011,165 +13298,171 @@ function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeo
13011
13298
  },{}],43:[function(require,module,exports){
13012
13299
  'use strict';
13013
13300
 
13014
- module.exports = {
13015
- isEmptyObject: function isEmptyObject(obj) {
13016
- for (var name in obj) {
13017
- return false;
13018
- }
13301
+ var isEmptyObject = function isEmptyObject(obj) {
13302
+ for (var name in obj) {
13303
+ return false;
13304
+ }
13019
13305
 
13020
- return true;
13021
- },
13306
+ return true;
13307
+ };
13308
+ /**
13309
+ * Copy values of object own properties to array.
13310
+ *
13311
+ * @param obj
13312
+ * @returns {Array}
13313
+ */
13022
13314
 
13023
- /**
13024
- * Copy values of object own properties to array.
13025
- *
13026
- * @param obj
13027
- * @returns {Array}
13028
- */
13029
- copyObjectToArray: function copyObjectToArray(obj) {
13030
- var ret = [];
13031
13315
 
13032
- for (var prop in obj) {
13033
- if (obj.hasOwnProperty(prop)) {
13034
- ret.push(obj[prop]);
13035
- }
13316
+ var copyObjectToArray = function copyObjectToArray(obj) {
13317
+ var ret = [];
13318
+
13319
+ for (var prop in obj) {
13320
+ if (obj.hasOwnProperty(prop)) {
13321
+ ret.push(obj[prop]);
13036
13322
  }
13323
+ }
13037
13324
 
13038
- return ret;
13039
- },
13325
+ return ret;
13326
+ };
13327
+ /**
13328
+ * Copy src properties to dst object.
13329
+ * Will overwrite dst prop with src prop in case of dst prop exist.
13330
+ */
13040
13331
 
13041
- /**
13042
- * Copy src properties to dst object.
13043
- * Will overwrite dst prop with src prop in case of dst prop exist.
13044
- */
13045
- copyObjectPropsToAnotherObject: function copyObjectPropsToAnotherObject(src, dst) {
13046
- for (var prop in src) {
13047
- if (src.hasOwnProperty(prop)) {
13048
- dst[prop] = src[prop];
13049
- }
13332
+
13333
+ var copyObjectPropsToAnotherObject = function copyObjectPropsToAnotherObject(src, dst) {
13334
+ for (var prop in src) {
13335
+ if (src.hasOwnProperty(prop)) {
13336
+ dst[prop] = src[prop];
13050
13337
  }
13051
- },
13052
- processRtcStatsReport: function processRtcStatsReport(browser, report) {
13053
- var result = {};
13338
+ }
13339
+ };
13054
13340
 
13055
- if (browser == "chrome") {
13056
- /**
13057
- * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
13058
- */
13059
- var gotResult = false;
13341
+ var processRtcStatsReport = function processRtcStatsReport(browser, report) {
13342
+ var result = {};
13060
13343
 
13061
- if (report.type && report.type == "googCandidatePair") {
13062
- //check if this is active pair
13063
- if (report.googActiveConnection == "true") {
13064
- gotResult = true;
13065
- }
13066
- }
13344
+ if (browser == "chrome") {
13345
+ /**
13346
+ * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
13347
+ */
13348
+ var gotResult = false;
13067
13349
 
13068
- if (report.type && report.type == "ssrc") {
13350
+ if (report.type && report.type == "googCandidatePair") {
13351
+ //check if this is active pair
13352
+ if (report.googActiveConnection == "true") {
13069
13353
  gotResult = true;
13070
13354
  }
13355
+ }
13071
13356
 
13072
- if (gotResult) {
13073
- for (var k in report) {
13074
- if (report.hasOwnProperty(k)) {
13075
- result[k] = report[k];
13076
- }
13357
+ if (report.type && report.type == "ssrc") {
13358
+ gotResult = true;
13359
+ }
13360
+
13361
+ if (gotResult) {
13362
+ for (var k in report) {
13363
+ if (report.hasOwnProperty(k)) {
13364
+ result[k] = report[k];
13077
13365
  }
13078
13366
  }
13367
+ }
13079
13368
 
13080
- return result;
13081
- } else if (browser == "firefox") {
13082
- /**
13083
- * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
13084
- */
13085
- if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
13086
- result = {};
13369
+ return result;
13370
+ } else if (browser == "firefox") {
13371
+ /**
13372
+ * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
13373
+ */
13374
+ if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
13375
+ result = {};
13087
13376
 
13088
- for (var k in report) {
13089
- if (report.hasOwnProperty(k)) {
13090
- result[k] = report[k];
13091
- }
13377
+ for (var k in report) {
13378
+ if (report.hasOwnProperty(k)) {
13379
+ result[k] = report[k];
13092
13380
  }
13093
13381
  }
13094
-
13095
- return result;
13096
- } else {
13097
- return result;
13098
13382
  }
13099
13383
 
13100
- ;
13384
+ return result;
13385
+ } else {
13386
+ return result;
13387
+ }
13388
+ };
13389
+
13390
+ var Browser = {
13391
+ isIE: function isIE() {
13392
+ return (
13393
+ /*@cc_on!@*/
13394
+ false || !!document.documentMode
13395
+ );
13101
13396
  },
13102
- Browser: {
13103
- isIE: function isIE() {
13104
- return (
13105
- /*@cc_on!@*/
13106
- false || !!document.documentMode
13107
- );
13108
- },
13109
- isFirefox: function isFirefox() {
13110
- return typeof InstallTrigger !== 'undefined';
13111
- },
13112
- isChrome: function isChrome() {
13113
- return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
13114
- },
13115
- isEdge: function isEdge() {
13116
- return !isIE && !!window.StyleMedia;
13117
- },
13118
- isOpera: function isOpera() {
13119
- return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
13120
- },
13121
- isiOS: function isiOS() {
13122
- return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
13123
- },
13124
- isSafari: function isSafari() {
13125
- var userAgent = navigator.userAgent.toLowerCase();
13126
- return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
13127
- },
13128
- isAndroid: function isAndroid() {
13129
- return navigator.userAgent.toLowerCase().indexOf("android") > -1;
13130
- },
13131
- isSafariWebRTC: function isSafariWebRTC() {
13132
- return navigator.mediaDevices && this.isSafari();
13133
- },
13134
- isSamsungBrowser: function isSamsungBrowser() {
13135
- return /SamsungBrowser/i.test(navigator.userAgent);
13136
- },
13137
- isAndroidFirefox: function isAndroidFirefox() {
13138
- return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
13139
- }
13397
+ isFirefox: function isFirefox() {
13398
+ return typeof InstallTrigger !== 'undefined';
13140
13399
  },
13141
- SDP: {
13142
- matchPrefix: function matchPrefix(sdp, prefix) {
13143
- var parts = sdp.trim().split('\n').map(function (line) {
13144
- return line.trim();
13145
- });
13146
- return parts.filter(function (line) {
13147
- return line.indexOf(prefix) === 0;
13148
- });
13149
- },
13150
- writeFmtp: function writeFmtp(sdp, param, codec) {
13151
- var sdpArray = sdp.split("\n");
13152
- var i;
13400
+ isChrome: function isChrome() {
13401
+ return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
13402
+ },
13403
+ isEdge: function isEdge() {
13404
+ return !isIE && !!window.StyleMedia;
13405
+ },
13406
+ isOpera: function isOpera() {
13407
+ return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
13408
+ },
13409
+ isiOS: function isiOS() {
13410
+ return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
13411
+ },
13412
+ isSafari: function isSafari() {
13413
+ var userAgent = navigator.userAgent.toLowerCase();
13414
+ return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
13415
+ },
13416
+ isAndroid: function isAndroid() {
13417
+ return navigator.userAgent.toLowerCase().indexOf("android") > -1;
13418
+ },
13419
+ isSafariWebRTC: function isSafariWebRTC() {
13420
+ return navigator.mediaDevices && this.isSafari();
13421
+ },
13422
+ isSamsungBrowser: function isSamsungBrowser() {
13423
+ return /SamsungBrowser/i.test(navigator.userAgent);
13424
+ },
13425
+ isAndroidFirefox: function isAndroidFirefox() {
13426
+ return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
13427
+ },
13428
+ isChromiumEdge: function isChromiumEdge() {
13429
+ return /Chrome/i.test(navigator.userAgent) && /Edg/i.test(navigator.userAgent);
13430
+ }
13431
+ };
13432
+ var SDP = {
13433
+ matchPrefix: function matchPrefix(sdp, prefix) {
13434
+ var parts = sdp.trim().split('\n').map(function (line) {
13435
+ return line.trim();
13436
+ });
13437
+ return parts.filter(function (line) {
13438
+ return line.indexOf(prefix) === 0;
13439
+ });
13440
+ },
13441
+ writeFmtp: function writeFmtp(sdp, param, codec) {
13442
+ var sdpArray = sdp.split("\n");
13443
+ var i;
13153
13444
 
13154
- for (i = 0; i < sdpArray.length; i++) {
13155
- if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
13156
- sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
13157
- }
13158
- } //normalize sdp after modifications
13445
+ for (i = 0; i < sdpArray.length; i++) {
13446
+ if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
13447
+ sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
13448
+ }
13449
+ } //normalize sdp after modifications
13159
13450
 
13160
13451
 
13161
- var result = "";
13452
+ var result = "";
13162
13453
 
13163
- for (i = 0; i < sdpArray.length; i++) {
13164
- if (sdpArray[i] != "") {
13165
- result += sdpArray[i] + "\n";
13166
- }
13454
+ for (i = 0; i < sdpArray.length; i++) {
13455
+ if (sdpArray[i] != "") {
13456
+ result += sdpArray[i] + "\n";
13167
13457
  }
13168
-
13169
- return result;
13170
13458
  }
13171
- },
13172
- logger: {
13459
+
13460
+ return result;
13461
+ }
13462
+ };
13463
+
13464
+ var logger = function logger() {
13465
+ return {
13173
13466
  init: function init(verbosity, enablePushLogs, customLogger, enableLogs) {
13174
13467
  switch (verbosity.toUpperCase()) {
13175
13468
  case "DEBUG":
@@ -13350,92 +13643,104 @@ module.exports = {
13350
13643
  default:
13351
13644
  this.verbosity = 2;
13352
13645
  }
13353
-
13354
- ;
13355
13646
  }
13356
- },
13357
- stripCodecs: function stripCodecs(sdp, codecs) {
13358
- if (!codecs.length) return sdp;
13359
- var sdpArray = sdp.split("\n");
13360
- var codecsArray = codecs.split(","); //search and delete codecs line
13647
+ };
13648
+ };
13361
13649
 
13362
- var pt = [];
13363
- var i;
13650
+ var stripCodecs = function stripCodecs(sdp, codecs) {
13651
+ if (!codecs.length) return sdp;
13652
+ var sdpArray = sdp.split("\n");
13653
+ var codecsArray = codecs.split(","); //search and delete codecs line
13364
13654
 
13365
- for (var p = 0; p < codecsArray.length; p++) {
13366
- console.log("Searching for codec " + codecsArray[p]);
13655
+ var pt = [];
13656
+ var i;
13367
13657
 
13368
- for (i = 0; i < sdpArray.length; i++) {
13369
- if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
13370
- console.log(codecsArray[p] + " detected");
13371
- pt.push(sdpArray[i].match(/[0-9]+/)[0]);
13372
- sdpArray[i] = "";
13373
- }
13658
+ for (var p = 0; p < codecsArray.length; p++) {
13659
+ console.log("Searching for codec " + codecsArray[p]);
13660
+
13661
+ for (i = 0; i < sdpArray.length; i++) {
13662
+ if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
13663
+ console.log(codecsArray[p] + " detected");
13664
+ pt.push(sdpArray[i].match(/[0-9]+/)[0]);
13665
+ sdpArray[i] = "";
13374
13666
  }
13375
13667
  }
13668
+ }
13376
13669
 
13377
- if (pt.length) {
13378
- //searching for fmtp
13379
- for (p = 0; p < pt.length; p++) {
13380
- for (i = 0; i < sdpArray.length; i++) {
13381
- if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
13382
- sdpArray[i] = "";
13383
- }
13670
+ if (pt.length) {
13671
+ //searching for fmtp
13672
+ for (p = 0; p < pt.length; p++) {
13673
+ for (i = 0; i < sdpArray.length; i++) {
13674
+ if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
13675
+ sdpArray[i] = "";
13384
13676
  }
13385
- } //delete entries from m= line
13677
+ }
13678
+ } //delete entries from m= line
13386
13679
 
13387
13680
 
13388
- for (i = 0; i < sdpArray.length; i++) {
13389
- if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
13390
- var mLineSplitted = sdpArray[i].split(" ");
13391
- var newMLine = "";
13681
+ for (i = 0; i < sdpArray.length; i++) {
13682
+ if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
13683
+ var mLineSplitted = sdpArray[i].split(" ");
13684
+ var newMLine = "";
13392
13685
 
13393
- for (var m = 0; m < mLineSplitted.length; m++) {
13394
- if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
13395
- newMLine += mLineSplitted[m];
13686
+ for (var m = 0; m < mLineSplitted.length; m++) {
13687
+ if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
13688
+ newMLine += mLineSplitted[m];
13396
13689
 
13397
- if (m < mLineSplitted.length - 1) {
13398
- newMLine = newMLine + " ";
13399
- }
13690
+ if (m < mLineSplitted.length - 1) {
13691
+ newMLine = newMLine + " ";
13400
13692
  }
13401
13693
  }
13402
-
13403
- sdpArray[i] = newMLine;
13404
13694
  }
13695
+
13696
+ sdpArray[i] = newMLine;
13405
13697
  }
13406
- } //normalize sdp after modifications
13698
+ }
13699
+ } //normalize sdp after modifications
13407
13700
 
13408
13701
 
13409
- var result = "";
13702
+ var result = "";
13410
13703
 
13411
- for (i = 0; i < sdpArray.length; i++) {
13412
- if (sdpArray[i] != "") {
13413
- result += sdpArray[i] + "\n";
13414
- }
13704
+ for (i = 0; i < sdpArray.length; i++) {
13705
+ if (sdpArray[i] != "") {
13706
+ result += sdpArray[i] + "\n";
13415
13707
  }
13708
+ }
13416
13709
 
13417
- return result;
13418
- },
13419
- getCurrentCodecAndSampleRate: function getCurrentCodecAndSampleRate(sdp, mediaType) {
13420
- var rows = sdp.split("\n");
13421
- var codecPt;
13710
+ return result;
13711
+ };
13422
13712
 
13423
- for (var i = 0; i < rows.length; i++) {
13424
- if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
13425
- var ret = {};
13426
- ret.name = rows[i].split(" ")[1].split("/")[0];
13427
- ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
13428
- return ret;
13429
- } //WCS-2136. WebRTC statistics doesn't work for VP8
13713
+ var getCurrentCodecAndSampleRate = function getCurrentCodecAndSampleRate(sdp, mediaType) {
13714
+ var rows = sdp.split("\n");
13715
+ var codecPt;
13430
13716
 
13717
+ for (var i = 0; i < rows.length; i++) {
13718
+ if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
13719
+ var ret = {};
13720
+ ret.name = rows[i].split(" ")[1].split("/")[0];
13721
+ ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
13722
+ return ret;
13723
+ } //WCS-2136. WebRTC statistics doesn't work for VP8
13431
13724
 
13432
- if (rows[i].indexOf("m=" + mediaType) != -1) {
13433
- codecPt = rows[i].split(" ")[3].trim();
13434
- }
13725
+
13726
+ if (rows[i].indexOf("m=" + mediaType) != -1) {
13727
+ codecPt = rows[i].split(" ")[3].trim();
13435
13728
  }
13436
13729
  }
13437
13730
  };
13438
13731
 
13732
+ module.exports = {
13733
+ isEmptyObject: isEmptyObject,
13734
+ copyObjectToArray: copyObjectToArray,
13735
+ copyObjectPropsToAnotherObject: copyObjectPropsToAnotherObject,
13736
+ processRtcStatsReport: processRtcStatsReport,
13737
+ Browser: Browser,
13738
+ SDP: SDP,
13739
+ logger: logger,
13740
+ stripCodecs: stripCodecs,
13741
+ getCurrentCodecAndSampleRate: getCurrentCodecAndSampleRate
13742
+ };
13743
+
13439
13744
  },{}],44:[function(require,module,exports){
13440
13745
  'use strict';
13441
13746
 
@@ -13469,6 +13774,11 @@ var mics = [];
13469
13774
 
13470
13775
  var createConnection = function createConnection(options) {
13471
13776
  return new Promise(function (resolve, reject) {
13777
+ // Set connection logger #WCS-2434
13778
+ if (options.logger) {
13779
+ logger = options.logger;
13780
+ }
13781
+
13472
13782
  var id = options.id;
13473
13783
  var connectionConfig = options.connectionConfig || {
13474
13784
  "iceServers": []
@@ -13599,9 +13909,9 @@ var createConnection = function createConnection(options) {
13599
13909
  function setContentHint(stream, hint) {
13600
13910
  stream.getVideoTracks().forEach(function (track) {
13601
13911
  if (track.contentHint === undefined) {
13602
- logger.warn("contentHint unsupported");
13912
+ logger.warn(LOG_PREFIX, "Track contentHint unsupported");
13603
13913
  } else {
13604
- logger.info("Set video track contentHint to " + hint);
13914
+ logger.info(LOG_PREFIX, "Set video track contentHint to " + hint);
13605
13915
  track.contentHint = hint;
13606
13916
  }
13607
13917
  });
@@ -13638,7 +13948,7 @@ var createConnection = function createConnection(options) {
13638
13948
  //WCS-2771 add playback delay
13639
13949
  connection.getReceivers().forEach(function (track) {
13640
13950
  if (track.playoutDelayHint === undefined) {
13641
- logger.warn("playout delay unsupported");
13951
+ logger.warn(LOG_PREFIX, "Playout delay unsupported");
13642
13952
  }
13643
13953
 
13644
13954
  track.playoutDelayHint = playoutDelay;
@@ -14031,7 +14341,7 @@ var createConnection = function createConnection(options) {
14031
14341
  localVideo.srcObject.addTrack(audioTrack);
14032
14342
  }
14033
14343
 
14034
- logger.info("Switch camera to " + cam);
14344
+ logger.info(LOG_PREFIX, "Switch camera to " + cam);
14035
14345
  resolve(cam);
14036
14346
  })["catch"](function (reason) {
14037
14347
  logger.error(LOG_PREFIX, reason);
@@ -14089,7 +14399,7 @@ var createConnection = function createConnection(options) {
14089
14399
  localVideo.srcObject.addTrack(videoTrack);
14090
14400
  }
14091
14401
 
14092
- logger.info("Switch mic to " + mic);
14402
+ logger.info(LOG_PREFIX, "Switch mic to " + mic);
14093
14403
  resolve(mic);
14094
14404
  })["catch"](function (reason) {
14095
14405
  logger.error(LOG_PREFIX, reason);
@@ -14183,7 +14493,7 @@ var createConnection = function createConnection(options) {
14183
14493
  localVideo.srcObject.addTrack(currentAudioTrack);
14184
14494
  }
14185
14495
  });
14186
- logger.info("Switch to screen");
14496
+ logger.info(LOG_PREFIX, "Switch to screen");
14187
14497
  screenShare = true;
14188
14498
  resolve();
14189
14499
  };
@@ -14215,7 +14525,7 @@ var createConnection = function createConnection(options) {
14215
14525
  });
14216
14526
  }
14217
14527
 
14218
- logger.info("Switch to cam");
14528
+ logger.info(LOG_PREFIX, "Switch to cam");
14219
14529
  screenShare = false;
14220
14530
  };
14221
14531