@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.
@@ -8831,717 +8831,926 @@ exports['WSPlayer'] = WSPlayer;
8831
8831
  * @see Session
8832
8832
  */
8833
8833
 
8834
- var sessionStatus = {};
8835
- /**
8836
- * Fires when {@link Session} ws socket opens.
8837
- * @event CONNECTED
8838
- * @memberof Flashphoner.constants.SESSION_STATUS
8839
- */
8834
+ var SESSION_STATUS = Object.freeze({
8835
+ /**
8836
+ * Fires when {@link Session} ws socket opens.
8837
+ * @event CONNECTED
8838
+ * @memberof Flashphoner.constants.SESSION_STATUS
8839
+ */
8840
+ CONNECTED: 'CONNECTED',
8840
8841
 
8841
- define(sessionStatus, 'CONNECTED', 'CONNECTED');
8842
- /**
8843
- * Fires when {@link Session} receives connect ack from REST App.
8844
- * @event ESTABLISHED
8845
- * @memberof Flashphoner.constants.SESSION_STATUS
8846
- */
8842
+ /**
8843
+ * Fires when {@link Session} receives connect ack from REST App.
8844
+ * @event ESTABLISHED
8845
+ * @memberof Flashphoner.constants.SESSION_STATUS
8846
+ */
8847
+ ESTABLISHED: 'ESTABLISHED',
8847
8848
 
8848
- define(sessionStatus, 'ESTABLISHED', 'ESTABLISHED');
8849
- /**
8850
- * Fires when {@link Session} disconnects.
8851
- * @event DISCONNECTED
8852
- * @memberof Flashphoner.constants.SESSION_STATUS
8853
- */
8849
+ /**
8850
+ * Fires when {@link Session} disconnects.
8851
+ * @event DISCONNECTED
8852
+ * @memberof Flashphoner.constants.SESSION_STATUS
8853
+ */
8854
+ DISCONNECTED: 'DISCONNECTED',
8854
8855
 
8855
- define(sessionStatus, 'DISCONNECTED', 'DISCONNECTED');
8856
- /**
8857
- * Fires if {@link Session} call of rest method error.
8858
- * @event WARN
8859
- * @memberof Flashphoner.constants.SESSION_STATUS
8860
- */
8856
+ /**
8857
+ * Fires if {@link Session} call of rest method error.
8858
+ * @event WARN
8859
+ * @memberof Flashphoner.constants.SESSION_STATUS
8860
+ */
8861
+ WARN: 'WARN',
8861
8862
 
8862
- define(sessionStatus, 'WARN', 'WARN');
8863
- /**
8864
- * Fires if {@link Session} connection failed.
8865
- * Some of the reasons can be network connection failed, REST App failed
8866
- * @event FAILED
8867
- * @memberof Flashphoner.constants.SESSION_STATUS
8868
- */
8863
+ /**
8864
+ * Fires if {@link Session} connection failed.
8865
+ * Some of the reasons can be network connection failed, REST App failed
8866
+ * @event FAILED
8867
+ * @memberof Flashphoner.constants.SESSION_STATUS
8868
+ */
8869
+ FAILED: 'FAILED',
8869
8870
 
8870
- define(sessionStatus, 'FAILED', 'FAILED');
8871
- /**
8872
- * Fires wneh {@link Session} receives debug event
8873
- * @event DEBUG
8874
- * @memberof Flashphoner.constants.SESSION_STATUS
8875
- */
8871
+ /**
8872
+ * Fires wneh {@link Session} receives debug event
8873
+ * @event DEBUG
8874
+ * @memberof Flashphoner.constants.SESSION_STATUS
8875
+ */
8876
+ DEBUG: 'DEBUG',
8876
8877
 
8877
- define(sessionStatus, 'DEBUG', 'DEBUG');
8878
- /**
8879
- * Fires when {@link Session} receives custom REST App message.
8880
- *
8881
- * @event APP_DATA
8882
- * @memberof Flashphoner.constants.SESSION_STATUS
8883
- */
8878
+ /**
8879
+ * Fires when {@link Session} receives custom REST App message.
8880
+ *
8881
+ * @event APP_DATA
8882
+ * @memberof Flashphoner.constants.SESSION_STATUS
8883
+ */
8884
+ APP_DATA: 'APP_DATA',
8884
8885
 
8885
- define(sessionStatus, 'APP_DATA', 'APP_DATA');
8886
- /**
8887
- * Fires when {@link Session} receives status of sendData operation.
8888
- *
8889
- * @event SEND_DATA_STATUS
8890
- * @memberof Flashphoner.constants.SESSION_STATUS
8891
- */
8886
+ /**
8887
+ * Fires when {@link Session} receives status of sendData operation.
8888
+ *
8889
+ * @event SEND_DATA_STATUS
8890
+ * @memberof Flashphoner.constants.SESSION_STATUS
8891
+ */
8892
+ SEND_DATA_STATUS: 'SEND_DATA_STATUS',
8892
8893
 
8893
- define(sessionStatus, 'SEND_DATA_STATUS', 'SEND_DATA_STATUS'); //State of newly created Session
8894
+ /**
8895
+ * State of newly created {@link Session}.
8896
+ *
8897
+ * @event PENDING
8898
+ * @memberof Flashphoner.constants.SESSION_STATUS
8899
+ */
8900
+ PENDING: 'PENDING',
8894
8901
 
8895
- define(sessionStatus, 'PENDING', 'PENDING');
8896
- /**
8897
- * Fires when {@link Session} registers as sip client.
8898
- *
8899
- * @event APP_DATA
8900
- * @memberof Flashphoner.constants.SESSION_STATUS
8901
- */
8902
+ /**
8903
+ * Fires when {@link Session} registers as sip client.
8904
+ *
8905
+ * @event REGISTERED
8906
+ * @memberof Flashphoner.constants.SESSION_STATUS
8907
+ */
8908
+ REGISTERED: 'REGISTERED',
8902
8909
 
8903
- define(sessionStatus, 'REGISTERED', 'REGISTERED');
8904
- /**
8905
- * Fires when {@link Session} unregisters as sip client.
8906
- *
8907
- * @event APP_DATA
8908
- * @memberof Flashphoner.constants.SESSION_STATUS
8909
- */
8910
+ /**
8911
+ * Fires when {@link Session} unregisters as sip client.
8912
+ *
8913
+ * @event UNREGISTERED
8914
+ * @memberof Flashphoner.constants.SESSION_STATUS
8915
+ */
8916
+ UNREGISTERED: 'UNREGISTERED',
8910
8917
 
8911
- define(sessionStatus, 'UNREGISTERED', 'UNREGISTERED');
8912
- define(sessionStatus, 'INCOMING_CALL', 'INCOMING_CALL');
8918
+ /**
8919
+ * Fires when {@link Session} receives an incoming call.
8920
+ *
8921
+ * @event INCOMING_CALL
8922
+ * @memberof Flashphoner.constants.SESSION_STATUS
8923
+ */
8924
+ INCOMING_CALL: 'INCOMING_CALL'
8925
+ });
8913
8926
  /**
8914
8927
  * @namespace Flashphoner.constants.STREAM_STATUS
8915
8928
  * @see Stream
8916
8929
  */
8917
8930
 
8918
- var streamStatus = {}; //State of newly created Stream
8919
-
8920
- define(streamStatus, 'NEW', 'NEW'); //State between publish/play and server response
8931
+ var STREAM_STATUS = Object.freeze({
8932
+ /**
8933
+ * State of newly created {@link Stream}.
8934
+ *
8935
+ * @event NEW
8936
+ * @memberof Flashphoner.constants.STREAM_STATUS
8937
+ */
8938
+ NEW: 'NEW',
8921
8939
 
8922
- define(streamStatus, 'PENDING', 'PENDING');
8923
- /**
8924
- * Fires when {@link Stream} starts publishing.
8925
- * @event PUBLISHING
8926
- * @memberof Flashphoner.constants.STREAM_STATUS
8927
- */
8940
+ /**
8941
+ * State before {@link Stream} publishing/playing.
8942
+ *
8943
+ * @event PENDING
8944
+ * @memberof Flashphoner.constants.STREAM_STATUS
8945
+ */
8946
+ PENDING: 'PENDING',
8928
8947
 
8929
- define(streamStatus, 'PUBLISHING', 'PUBLISHING');
8930
- /**
8931
- * Fires when {@link Stream} starts playing.
8932
- * @event PLAYING
8933
- * @memberof Flashphoner.constants.STREAM_STATUS
8934
- */
8948
+ /**
8949
+ * Fires when {@link Stream} starts publishing.
8950
+ * @event PUBLISHING
8951
+ * @memberof Flashphoner.constants.STREAM_STATUS
8952
+ */
8953
+ PUBLISHING: 'PUBLISHING',
8935
8954
 
8936
- define(streamStatus, 'PLAYING', 'PLAYING');
8937
- /**
8938
- * Fires if {@link Stream} paused.
8939
- * @event PAUSED
8940
- * @memberof Flashphoner.constants.STREAM_STATUS
8941
- */
8955
+ /**
8956
+ * Fires when {@link Stream} starts playing.
8957
+ * @event PLAYING
8958
+ * @memberof Flashphoner.constants.STREAM_STATUS
8959
+ */
8960
+ PLAYING: 'PLAYING',
8942
8961
 
8943
- define(streamStatus, 'PAUSED', 'PAUSED');
8944
- /**
8945
- * Fires if {@link Stream} was unpublished.
8946
- * @event UNPUBLISHING
8947
- * @memberof Flashphoner.constants.STREAM_STATUS
8948
- */
8962
+ /**
8963
+ * Fires if {@link Stream} paused.
8964
+ * @event PAUSED
8965
+ * @memberof Flashphoner.constants.STREAM_STATUS
8966
+ */
8967
+ PAUSED: 'PAUSED',
8949
8968
 
8950
- define(streamStatus, 'UNPUBLISHED', 'UNPUBLISHED');
8951
- /**
8952
- * Fires if {@link Stream} was stopped.
8953
- * @event STOPPED
8954
- * @memberof Flashphoner.constants.STREAM_STATUS
8955
- */
8969
+ /**
8970
+ * Fires if {@link Stream} was unpublished.
8971
+ * @event UNPUBLISHED
8972
+ * @memberof Flashphoner.constants.STREAM_STATUS
8973
+ */
8974
+ UNPUBLISHED: 'UNPUBLISHED',
8956
8975
 
8957
- define(streamStatus, 'STOPPED', 'STOPPED');
8958
- /**
8959
- * Fires if {@link Stream} failed.
8960
- * @event FAILED
8961
- * @memberof Flashphoner.constants.STREAM_STATUS
8962
- */
8976
+ /**
8977
+ * Fires if playing {@link Stream} was stopped.
8978
+ * @event STOPPED
8979
+ * @memberof Flashphoner.constants.STREAM_STATUS
8980
+ */
8981
+ STOPPED: 'STOPPED',
8963
8982
 
8964
- define(streamStatus, 'FAILED', 'FAILED');
8965
- /**
8966
- * Fires if {@link Stream} playback problem.
8967
- * @event PLAYBACK_PROBLEM
8968
- * @memberof Flashphoner.constants.STREAM_STATUS
8969
- */
8983
+ /**
8984
+ * Fires if {@link Stream} failed.
8985
+ * @event FAILED
8986
+ * @memberof Flashphoner.constants.STREAM_STATUS
8987
+ */
8988
+ FAILED: 'FAILED',
8970
8989
 
8971
- define(streamStatus, 'PLAYBACK_PROBLEM', 'PLAYBACK_PROBLEM');
8972
- /**
8973
- * Fires if {@link Stream} resize.
8974
- * @event RESIZE
8975
- * @memberof Flashphoner.constants.STREAM_STATUS
8976
- */
8990
+ /**
8991
+ * Fires if {@link Stream} playback problem.
8992
+ * @event PLAYBACK_PROBLEM
8993
+ * @memberof Flashphoner.constants.STREAM_STATUS
8994
+ */
8995
+ PLAYBACK_PROBLEM: 'PLAYBACK_PROBLEM',
8977
8996
 
8978
- define(streamStatus, 'RESIZE', 'RESIZE');
8979
- /**
8980
- * Fires when {@link Stream} snapshot becomes available.
8981
- * Snapshot is base64 encoded png available through {@link Stream.getInfo}
8982
- * @event SNAPSHOT_COMPLETE
8983
- * @memberof Flashphoner.constants.STREAM_STATUS
8984
- */
8997
+ /**
8998
+ * Fires if playing {@link Stream} picture resizing.
8999
+ * @event RESIZE
9000
+ * @memberof Flashphoner.constants.STREAM_STATUS
9001
+ */
9002
+ RESIZE: 'RESIZE',
8985
9003
 
8986
- define(streamStatus, 'SNAPSHOT_COMPLETE', 'SNAPSHOT_COMPLETE');
8987
- /**
8988
- * Fires on subscribe {@link Stream} if bitrate is higher than available network bandwidth.
8989
- * @event NOT_ENOUGH_BANDWIDTH
8990
- * @memberof Flashphoner.constants.NOT_ENOUGH_BANDWIDTH
8991
- */
9004
+ /**
9005
+ * Fires when {@link Stream} snapshot becomes available.
9006
+ * Snapshot is base64 encoded png available through {@link Stream.getInfo}
9007
+ * @event SNAPSHOT_COMPLETE
9008
+ * @memberof Flashphoner.constants.STREAM_STATUS
9009
+ */
9010
+ SNAPSHOT_COMPLETE: 'SNAPSHOT_COMPLETE',
8992
9011
 
8993
- define(streamStatus, 'NOT_ENOUGH_BANDWIDTH', 'NOT_ENOUGH_BANDWIDTH');
9012
+ /**
9013
+ * Fires on playing {@link Stream} if bitrate is higher than available network bandwidth.
9014
+ * @event NOT_ENOUGH_BANDWIDTH
9015
+ * @memberof Flashphoner.constants.NOT_ENOUGH_BANDWIDTH
9016
+ */
9017
+ NOT_ENOUGH_BANDWIDTH: 'NOT_ENOUGH_BANDWIDTH'
9018
+ });
8994
9019
  /**
8995
9020
  * @namespace Flashphoner.constants.CALL_STATUS
8996
9021
  * @see Call
8997
9022
  */
8998
9023
 
8999
- var callStatus = {}; //State of newly created Call
9000
-
9001
- define(callStatus, 'NEW', 'NEW');
9002
- define(callStatus, 'RING', 'RING');
9003
- define(callStatus, 'RING_MEDIA', 'RING_MEDIA');
9004
- define(callStatus, 'HOLD', 'HOLD');
9005
- define(callStatus, 'ESTABLISHED', 'ESTABLISHED');
9006
- define(callStatus, 'FINISH', 'FINISH');
9007
- define(callStatus, 'BUSY', 'BUSY');
9008
- define(callStatus, 'SESSION_PROGRESS', 'SESSION_PROGRESS');
9009
- define(callStatus, 'FAILED', 'FAILED');
9010
- define(callStatus, 'PENDING', 'PENDING');
9011
- define(callStatus, 'TRYING', 'TRYING');
9024
+ var CALL_STATUS = Object.freeze({
9025
+ /**
9026
+ * State of newly created {@link Call}
9027
+ * @event NEW
9028
+ * @memberof Flashphoner.constants.CALL_STATUS
9029
+ */
9030
+ NEW: 'NEW',
9031
+
9032
+ /**
9033
+ * The server is ringing to the callee
9034
+ * @event RING
9035
+ * @memberof Flashphoner.constants.CALL_STATUS
9036
+ */
9037
+ RING: 'RING',
9038
+ RING_MEDIA: 'RING_MEDIA',
9039
+
9040
+ /**
9041
+ * The {@link Call} was put on hold
9042
+ * @event HOLD
9043
+ * @memberof Flashphoner.constants.CALL_STATUS
9044
+ */
9045
+ HOLD: 'HOLD',
9046
+
9047
+ /**
9048
+ * The {@link Call} is established
9049
+ * @event ESTABLISHED
9050
+ * @memberof Flashphoner.constants.CALL_STATUS
9051
+ */
9052
+ ESTABLISHED: 'ESTABLISHED',
9053
+
9054
+ /**
9055
+ * The {@link Call} is finished
9056
+ * @event FINISH
9057
+ * @memberof Flashphoner.constants.CALL_STATUS
9058
+ */
9059
+ FINISH: 'FINISH',
9060
+
9061
+ /**
9062
+ * Callee is busy
9063
+ * @event BUSY
9064
+ * @memberof Flashphoner.constants.CALL_STATUS
9065
+ */
9066
+ BUSY: 'BUSY',
9067
+
9068
+ /**
9069
+ * SIP session is in progress
9070
+ * @event SESSION_PROGRESS
9071
+ * @memberof Flashphoner.constants.CALL_STATUS
9072
+ */
9073
+ SESSION_PROGRESS: 'SESSION_PROGRESS',
9074
+
9075
+ /**
9076
+ * The {@link Call} is failed
9077
+ * @event FAILED
9078
+ * @memberof Flashphoner.constants.CALL_STATUS
9079
+ */
9080
+ FAILED: 'FAILED',
9081
+
9082
+ /**
9083
+ * The {@link Call} state before ringing
9084
+ * @event PENDING
9085
+ * @memberof Flashphoner.constants.CALL_STATUS
9086
+ */
9087
+ PENDING: 'PENDING',
9088
+
9089
+ /**
9090
+ * The server trying to establish {@link Call}
9091
+ * @event TRYING
9092
+ * @memberof Flashphoner.constants.CALL_STATUS
9093
+ */
9094
+ TRYING: 'TRYING'
9095
+ });
9012
9096
  /**
9013
9097
  * @namespace Flashphoner.constants.STREAM_STATUS_INFO
9014
9098
  * @see Stream
9015
9099
  */
9016
9100
 
9017
- var streamStatusInfo = {};
9018
- /**
9019
- * Indicates general error during ICE negotiation. Usually occurs if client is behind some exotic nat/firewall.
9020
- * @event FAILED_BY_ICE_ERROR
9021
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9022
- */
9023
-
9024
- define(streamStatusInfo, 'FAILED_BY_ICE_ERROR', 'Failed by ICE error');
9025
- /**
9026
- * Timeout has been reached during ICE establishment.
9027
- * @event FAILED_BY_ICE_TIMEOUT
9028
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9029
- */
9101
+ var STREAM_STATUS_INFO = Object.freeze({
9102
+ /**
9103
+ * Indicates general error during ICE negotiation. Usually occurs if client is behind some exotic nat/firewall.
9104
+ * @event FAILED_BY_ICE_ERROR
9105
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9106
+ */
9107
+ FAILED_BY_ICE_ERROR: 'Failed by ICE error',
9030
9108
 
9031
- define(streamStatusInfo, 'FAILED_BY_ICE_TIMEOUT', 'Failed by ICE timeout');
9032
- /**
9033
- * ICE refresh failed on session.
9034
- * @event FAILED_BY_KEEP_ALIVE
9035
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9036
- */
9109
+ /**
9110
+ * Timeout has been reached during ICE establishment.
9111
+ * @event FAILED_BY_ICE_TIMEOUT
9112
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9113
+ */
9114
+ FAILED_BY_ICE_TIMEOUT: 'Failed by ICE timeout',
9037
9115
 
9038
- define(streamStatusInfo, 'FAILED_BY_KEEP_ALIVE', 'Failed by ICE keep alive');
9039
- /**
9040
- * DTLS has wrong fingerprint.
9041
- * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
9042
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9043
- */
9116
+ /**
9117
+ * ICE refresh failed on session.
9118
+ * @event FAILED_BY_KEEP_ALIVE
9119
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9120
+ */
9121
+ FAILED_BY_KEEP_ALIVE: 'Failed by ICE keep alive',
9044
9122
 
9045
- define(streamStatusInfo, 'FAILED_BY_DTLS_FINGERPRINT_ERROR', 'Failed by DTLS fingerprint error');
9046
- /**
9047
- * Client did not send DTLS packets or packets were lost/corrupted during transmission.
9048
- * @event FAILED_BY_DTLS_ERROR
9049
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9050
- */
9123
+ /**
9124
+ * DTLS has wrong fingerprint.
9125
+ * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
9126
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9127
+ */
9128
+ FAILED_BY_DTLS_FINGERPRINT_ERROR: 'Failed by DTLS fingerprint error',
9051
9129
 
9052
- define(streamStatusInfo, 'FAILED_BY_DTLS_ERROR', 'Failed by DTLS error');
9053
- /**
9054
- * Indicates general HLS packetizer error, can occur during initialization or packetization (wrong input or out of disk space).
9055
- * @event FAILED_BY_HLS_WRITER_ERROR
9056
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9057
- */
9130
+ /**
9131
+ * Client did not send DTLS packets or packets were lost/corrupted during transmission.
9132
+ * @event FAILED_BY_DTLS_ERROR
9133
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9134
+ */
9135
+ FAILED_BY_DTLS_ERROR: 'Failed by DTLS error',
9058
9136
 
9059
- define(streamStatusInfo, 'FAILED_BY_HLS_WRITER_ERROR', 'Failed by HLS writer error');
9060
- /**
9061
- * Indicates general RTMP republishing error, can occur during initialization or rtmp packetization.
9062
- * @event FAILED_BY_RTMP_WRITER_ERROR
9063
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9064
- */
9137
+ /**
9138
+ * Indicates general HLS packetizer error, can occur during initialization or packetization (wrong input or out of disk space).
9139
+ * @event FAILED_BY_HLS_WRITER_ERROR
9140
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9141
+ */
9142
+ FAILED_BY_HLS_WRITER_ERROR: 'Failed by HLS writer error',
9065
9143
 
9066
- define(streamStatusInfo, 'FAILED_BY_RTMP_WRITER_ERROR', 'Failed by RTMP writer error');
9067
- /**
9068
- * RTP session failed by RTP activity timer.
9069
- * @event FAILED_BY_RTP_ACTIVITY
9070
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9071
- */
9144
+ /**
9145
+ * Indicates general RTMP republishing error, can occur during initialization or rtmp packetization.
9146
+ * @event FAILED_BY_RTMP_WRITER_ERROR
9147
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9148
+ */
9149
+ FAILED_BY_RTMP_WRITER_ERROR: 'Failed by RTMP writer error',
9072
9150
 
9073
- define(streamStatusInfo, 'FAILED_BY_RTP_ACTIVITY', 'Failed by RTP activity');
9074
- /**
9075
- * Related session was disconnected.
9076
- * @event STOPPED_BY_SESSION_DISCONNECT
9077
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9078
- */
9151
+ /**
9152
+ * RTP session failed by RTP activity timer.
9153
+ * @event FAILED_BY_RTP_ACTIVITY
9154
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9155
+ */
9156
+ FAILED_BY_RTP_ACTIVITY: 'Failed by RTP activity',
9079
9157
 
9080
- define(streamStatusInfo, 'STOPPED_BY_SESSION_DISCONNECT', 'Stopped by session disconnect');
9081
- /**
9082
- * Stream was stopped by rest terminate request.
9083
- * @event STOPPED_BY_REST_TERMINATE
9084
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9085
- */
9158
+ /**
9159
+ * Related session was disconnected.
9160
+ * @event STOPPED_BY_SESSION_DISCONNECT
9161
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9162
+ */
9163
+ STOPPED_BY_SESSION_DISCONNECT: 'Stopped by session disconnect',
9086
9164
 
9087
- define(streamStatusInfo, 'STOPPED_BY_REST_TERMINATE', 'Stopped by rest /terminate');
9088
- /**
9089
- * Related publisher stopped its stream or lost connection.
9090
- * @event STOPPED_BY_PUBLISHER_STOP
9091
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9092
- */
9165
+ /**
9166
+ * Stream was stopped by rest terminate request.
9167
+ * @event STOPPED_BY_REST_TERMINATE
9168
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9169
+ */
9170
+ STOPPED_BY_REST_TERMINATE: 'Stopped by rest /terminate',
9093
9171
 
9094
- define(streamStatusInfo, 'STOPPED_BY_PUBLISHER_STOP', 'Stopped by publisher stop');
9095
- /**
9096
- * Stop the media session by user after call was finished or unpublish stream.
9097
- * @event STOPPED_BY_USER
9098
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9099
- */
9172
+ /**
9173
+ * Related publisher stopped its stream or lost connection.
9174
+ * @event STOPPED_BY_PUBLISHER_STOP
9175
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9176
+ */
9177
+ STOPPED_BY_PUBLISHER_STOP: 'Stopped by publisher stop',
9100
9178
 
9101
- define(streamStatusInfo, 'STOPPED_BY_USER', 'Stopped by user');
9102
- /**
9103
- * Error occurred on the stream.
9104
- * @event FAILED_BY_ERROR
9105
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9106
- */
9179
+ /**
9180
+ * Stop the media session by user after call was finished or unpublish stream.
9181
+ * @event STOPPED_BY_USER
9182
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9183
+ */
9184
+ STOPPED_BY_USER: 'Stopped by user',
9107
9185
 
9108
- define(streamStatusInfo, 'FAILED_BY_ERROR', 'Failed by error');
9109
- /**
9110
- * Indicates that error occurred during media session creation. This might be SDP parsing error, all ports are busy, wrong session related config etc.
9111
- * @event FAILED_TO_ADD_STREAM_TO_PROXY
9112
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9113
- */
9186
+ /**
9187
+ * Error occurred on the stream.
9188
+ * @event FAILED_BY_ERROR
9189
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9190
+ */
9191
+ FAILED_BY_ERROR: 'Failed by error',
9114
9192
 
9115
- define(streamStatusInfo, 'FAILED_TO_ADD_STREAM_TO_PROXY', 'Failed to add stream to proxy');
9116
- /**
9117
- * Stopped shapshot distributor.
9118
- * @event DISTRIBUTOR_STOPPED
9119
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9120
- */
9193
+ /**
9194
+ * Indicates that error occurred during media session creation. This might be SDP parsing error, all ports are busy, wrong session related config etc.
9195
+ * @event FAILED_TO_ADD_STREAM_TO_PROXY
9196
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9197
+ */
9198
+ FAILED_TO_ADD_STREAM_TO_PROXY: 'Failed to add stream to proxy',
9121
9199
 
9122
- define(streamStatusInfo, 'DISTRIBUTOR_STOPPED', 'Distributor stopped');
9123
- /**
9124
- * Publish stream is not ready, try again later.
9125
- * @event PUBLISH_STREAM_IS_NOT_READY
9126
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9127
- */
9200
+ /**
9201
+ * Stopped shapshot distributor.
9202
+ * @event DISTRIBUTOR_STOPPED
9203
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9204
+ */
9205
+ DISTRIBUTOR_STOPPED: 'Distributor stopped',
9128
9206
 
9129
- define(streamStatusInfo, 'PUBLISH_STREAM_IS_NOT_READY', 'Publish stream is not ready');
9130
- /**
9131
- * Stream with this name is not found, check the correct of the name.
9132
- * @event STREAM_NOT_FOUND
9133
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9134
- */
9207
+ /**
9208
+ * Publish stream is not ready, try again later.
9209
+ * @event PUBLISH_STREAM_IS_NOT_READY
9210
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9211
+ */
9212
+ PUBLISH_STREAM_IS_NOT_READY: 'Publish stream is not ready',
9135
9213
 
9136
- define(streamStatusInfo, 'STREAM_NOT_FOUND', 'Stream not found');
9137
- /**
9138
- * Server already has a publish stream with the same name, try using different one.
9139
- * @event STREAM_NAME_ALREADY_IN_USE
9140
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9141
- */
9214
+ /**
9215
+ * Stream with this name is not found, check the correct of the name.
9216
+ * @event STREAM_NOT_FOUND
9217
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9218
+ */
9219
+ STREAM_NOT_FOUND: 'Stream not found',
9142
9220
 
9143
- define(streamStatusInfo, 'STREAM_NAME_ALREADY_IN_USE', 'Stream name is already in use');
9144
- /**
9145
- * Error indicates that stream object received by server has empty mediaSessionId field.
9146
- * @event MEDIASESSION_ID_NULL
9147
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9148
- */
9221
+ /**
9222
+ * Server already has a publish stream with the same name, try using different one.
9223
+ * @event STREAM_NAME_ALREADY_IN_USE
9224
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9225
+ */
9226
+ STREAM_NAME_ALREADY_IN_USE: 'Stream name is already in use',
9149
9227
 
9150
- define(streamStatusInfo, 'MEDIASESSION_ID_NULL', 'MediaSessionId is null');
9151
- /**
9152
- * Published or subscribed sessions used this MediaSessionId.
9153
- * @event MEDIASESSION_ID_ALREADY_IN_USE
9154
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9155
- */
9228
+ /**
9229
+ * Error indicates that stream object received by server has empty mediaSessionId field.
9230
+ * @event MEDIASESSION_ID_NULL
9231
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9232
+ */
9233
+ MEDIASESSION_ID_NULL: 'MediaSessionId is null',
9156
9234
 
9157
- define(streamStatusInfo, 'MEDIASESSION_ID_ALREADY_IN_USE', 'MediaSessionId is already in use');
9158
- /**
9159
- * Session is not initialized or terminated on play ordinary stream.
9160
- * @event SESSION_NOT_READY
9161
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9162
- */
9235
+ /**
9236
+ * Published or subscribed sessions used this MediaSessionId.
9237
+ * @event MEDIASESSION_ID_ALREADY_IN_USE
9238
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9239
+ */
9240
+ MEDIASESSION_ID_ALREADY_IN_USE: 'MediaSessionId is already in use',
9163
9241
 
9164
- define(streamStatusInfo, 'SESSION_NOT_READY', 'Session not ready');
9165
- /**
9166
- * Actual session does not exist.
9167
- * @event SESSION_DOES_NOT_EXIST
9168
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9169
- */
9242
+ /**
9243
+ * Session is not initialized or terminated on play ordinary stream.
9244
+ * @event SESSION_NOT_READY
9245
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9246
+ */
9247
+ SESSION_NOT_READY: 'Session not ready',
9170
9248
 
9171
- define(streamStatusInfo, 'SESSION_DOES_NOT_EXIST', 'Session does not exist');
9172
- /**
9173
- * RTSP has wrong format on play stream, check correct of the RTSP url.
9174
- * @event RTSP_HAS_WRONG_FORMAT
9175
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9176
- */
9249
+ /**
9250
+ * Actual session does not exist.
9251
+ * @event SESSION_DOES_NOT_EXIST
9252
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9253
+ */
9254
+ SESSION_DOES_NOT_EXIST: 'Session does not exist',
9177
9255
 
9178
- define(streamStatusInfo, 'RTSP_HAS_WRONG_FORMAT', 'Rtsp has wrong format');
9179
- /**
9180
- * Failed to play vod stream, this format is not supported.
9181
- * @event FILE_HAS_WRONG_FORMAT
9182
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9183
- */
9256
+ /**
9257
+ * RTSP has wrong format on play stream, check the RTSP url validity.
9258
+ * @event RTSP_HAS_WRONG_FORMAT
9259
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9260
+ */
9261
+ RTSP_HAS_WRONG_FORMAT: 'Rtsp has wrong format',
9184
9262
 
9185
- define(streamStatusInfo, 'FILE_HAS_WRONG_FORMAT', 'File has wrong format');
9186
- /**
9187
- * Failed to connect to rtsp stream.
9188
- * @event FAILED_TO_CONNECT_TO_RTSP_STREAM
9189
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9190
- */
9263
+ /**
9264
+ * Failed to play vod stream, this format is not supported.
9265
+ * @event FILE_HAS_WRONG_FORMAT
9266
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9267
+ */
9268
+ FILE_HAS_WRONG_FORMAT: 'File has wrong format',
9191
9269
 
9192
- define(streamStatusInfo, 'FAILED_TO_CONNECT_TO_RTSP_STREAM', 'Failed to connect to rtsp stream');
9193
- /**
9194
- * Rtsp stream is not found, agent received "404-Not Found".
9195
- * @event RTSP_STREAM_NOT_FOUND
9196
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9197
- */
9270
+ /**
9271
+ * Failed to connect to rtsp stream.
9272
+ * @event FAILED_TO_CONNECT_TO_RTSP_STREAM
9273
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9274
+ */
9275
+ FAILED_TO_CONNECT_TO_RTSP_STREAM: 'Failed to connect to rtsp stream',
9198
9276
 
9199
- define(streamStatusInfo, 'RTSP_STREAM_NOT_FOUND', 'Rtsp stream not found');
9200
- /**
9201
- * On shutdown RTSP agent.
9202
- * @event RTSPAGENT_SHUTDOWN
9203
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9204
- */
9277
+ /**
9278
+ * Rtsp stream is not found, agent received "404-Not Found".
9279
+ * @event RTSP_STREAM_NOT_FOUND
9280
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9281
+ */
9282
+ RTSP_STREAM_NOT_FOUND: 'Rtsp stream not found',
9205
9283
 
9206
- define(streamStatusInfo, 'RTSPAGENT_SHUTDOWN', 'RtspAgent shutdown');
9207
- /**
9208
- * Stream failed
9209
- * @event STREAM_FAILED
9210
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9211
- */
9284
+ /**
9285
+ * On shutdown RTSP agent.
9286
+ * @event RTSPAGENT_SHUTDOWN
9287
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9288
+ */
9289
+ RTSPAGENT_SHUTDOWN: 'RtspAgent shutdown',
9212
9290
 
9213
- define(streamStatusInfo, 'STREAM_FAILED', 'Stream failed');
9214
- /**
9215
- * No common codecs on setup track, did not found corresponding trackId->mediaPort.
9216
- * @event NO_COMMON_CODECS
9217
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9218
- */
9291
+ /**
9292
+ * Stream failed
9293
+ * @event STREAM_FAILED
9294
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9295
+ */
9296
+ STREAM_FAILED: 'Stream failed',
9219
9297
 
9220
- define(streamStatusInfo, 'NO_COMMON_CODECS', 'No common codecs');
9221
- /**
9222
- * Bad referenced rtsp link, check for correct, example: rtsp://user:b@d_password@127.0.0.1/stream.
9223
- * @event BAD_URI
9224
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9225
- */
9298
+ /**
9299
+ * No common codecs on setup track, did not found corresponding trackId->mediaPort.
9300
+ * @event NO_COMMON_CODECS
9301
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9302
+ */
9303
+ NO_COMMON_CODECS: 'No common codecs',
9226
9304
 
9227
- define(streamStatusInfo, 'BAD_URI', 'Bad URI');
9228
- /**
9229
- * General VOD error, indicates that Exception occurred while reading/processing media file.
9230
- * @event GOT_EXCEPTION_WHILE_STREAMING_FILE
9231
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9232
- */
9305
+ /**
9306
+ * Bad referenced rtsp link, check for correct, example: rtsp://user:b@d_password@127.0.0.1/stream.
9307
+ * @event BAD_URI
9308
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9309
+ */
9310
+ BAD_URI: 'Bad URI',
9233
9311
 
9234
- define(streamStatusInfo, 'GOT_EXCEPTION_WHILE_STREAMING_FILE', 'Got exception while streaming file');
9235
- /**
9236
- * Requested stream shutdown.
9237
- * @event REQUESTED_STREAM_SHUTDOWN
9238
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9239
- */
9312
+ /**
9313
+ * General VOD error, indicates that Exception occurred while reading/processing media file.
9314
+ * @event GOT_EXCEPTION_WHILE_STREAMING_FILE
9315
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9316
+ */
9317
+ GOT_EXCEPTION_WHILE_STREAMING_FILE: 'Got exception while streaming file',
9240
9318
 
9241
- define(streamStatusInfo, 'REQUESTED_STREAM_SHUTDOWN', 'Requested stream shutdown');
9242
- /**
9243
- * Failed to create movie, file can not be read.
9244
- * @event FAILED_TO_READ_FILE
9245
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9246
- */
9319
+ /**
9320
+ * Requested stream shutdown.
9321
+ * @event REQUESTED_STREAM_SHUTDOWN
9322
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9323
+ */
9324
+ REQUESTED_STREAM_SHUTDOWN: 'Requested stream shutdown',
9247
9325
 
9248
- define(streamStatusInfo, 'FAILED_TO_READ_FILE', 'Failed to read file');
9249
- /**
9250
- * File does not exist, check filename.
9251
- * @event FILE_NOT_FOUND
9252
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9253
- */
9326
+ /**
9327
+ * Failed to create movie, file can not be read.
9328
+ * @event FAILED_TO_READ_FILE
9329
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9330
+ */
9331
+ FAILED_TO_READ_FILE: 'Failed to read file',
9254
9332
 
9255
- define(streamStatusInfo, 'FILE_NOT_FOUND', 'File not found');
9256
- /**
9257
- * Server failed to establish websocket connection with origin server.
9258
- * @event FAILED_TO_CONNECT_TO_ORIGIN_STREAM
9259
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9260
- */
9333
+ /**
9334
+ * File does not exist, check filename.
9335
+ * @event FILE_NOT_FOUND
9336
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9337
+ */
9338
+ FILE_NOT_FOUND: 'File not found',
9261
9339
 
9262
- define(streamStatusInfo, 'FAILED_TO_CONNECT_TO_ORIGIN_STREAM', 'Failed to connect to origin stream');
9263
- /**
9264
- * CDN stream not found.
9265
- * @event CDN_STREAM_NOT_FOUND
9266
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9267
- */
9340
+ /**
9341
+ * Server failed to establish websocket connection with origin server.
9342
+ * @event FAILED_TO_CONNECT_TO_ORIGIN_STREAM
9343
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9344
+ */
9345
+ FAILED_TO_CONNECT_TO_ORIGIN_STREAM: 'Failed to connect to origin stream',
9268
9346
 
9269
- define(streamStatusInfo, 'CDN_STREAM_NOT_FOUND', 'CDN stream not found');
9270
- /**
9271
- * Indicates that provided URL protocol in stream name is invalid.
9272
- * Valid: vod://file.mp4
9273
- * Invalid: dov://file.mp4
9274
- * @event FAILED_TO_GET_AGENT_STORAGE
9275
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9276
- */
9347
+ /**
9348
+ * CDN stream not found.
9349
+ * @event CDN_STREAM_NOT_FOUND
9350
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9351
+ */
9352
+ CDN_STREAM_NOT_FOUND: 'CDN stream not found',
9277
9353
 
9278
- define(streamStatusInfo, 'FAILED_TO_GET_AGENT_STORAGE', 'Failed to get agent storage');
9279
- /**
9280
- * Shutdown agent servicing origin stream.
9281
- * @event AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN
9282
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9283
- */
9354
+ /**
9355
+ * Indicates that provided URL protocol in stream name is invalid.
9356
+ * Valid: vod://file.mp4
9357
+ * Invalid: dov://file.mp4
9358
+ * @event FAILED_TO_GET_AGENT_STORAGE
9359
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9360
+ */
9361
+ FAILED_TO_GET_AGENT_STORAGE: 'Failed to get agent storage',
9284
9362
 
9285
- define(streamStatusInfo, 'AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN', 'Agent servicing origin stream is shutting down');
9286
- /**
9287
- * Terminated by keep-alive on walk through subscribers.
9288
- * @event TERMINATED_BY_KEEP_ALIVE
9289
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9290
- */
9363
+ /**
9364
+ * Shutdown agent servicing origin stream.
9365
+ * @event AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN
9366
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9367
+ */
9368
+ AGENT_SERVICING_ORIGIN_STREAM_IS_SHUTTING_DOWN: 'Agent servicing origin stream is shutting down',
9291
9369
 
9292
- define(streamStatusInfo, 'TERMINATED_BY_KEEP_ALIVE', 'Terminated by keep-alive');
9293
- /**
9294
- * Transcoding required, but disabled in settings
9295
- * @event TRANSCODING_REQUIRED_BUT_DISABLED
9296
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9297
- */
9370
+ /**
9371
+ * Terminated by keep-alive on walk through subscribers.
9372
+ * @event TERMINATED_BY_KEEP_ALIVE
9373
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9374
+ */
9375
+ TERMINATED_BY_KEEP_ALIVE: 'Terminated by keep-alive',
9298
9376
 
9299
- define(streamStatusInfo, 'TRANSCODING_REQUIRED_BUT_DISABLED', 'Transcoding required, but disabled');
9300
- /**
9301
- * Access restricted by access list
9302
- * @event RESTRICTED_ACCESS
9303
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9304
- */
9377
+ /**
9378
+ * Transcoding required, but disabled in server settings
9379
+ * @event TRANSCODING_REQUIRED_BUT_DISABLED
9380
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9381
+ */
9382
+ TRANSCODING_REQUIRED_BUT_DISABLED: 'Transcoding required, but disabled',
9305
9383
 
9306
- define(streamStatusInfo, 'RESTRICTED_ACCESS', 'Restricted access');
9307
- /**
9308
- * No available transcoders for stream
9309
- * @event RESTRICTED_ACCESS
9310
- * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9311
- */
9384
+ /**
9385
+ * Access restricted by access list
9386
+ * @event RESTRICTED_ACCESS
9387
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9388
+ */
9389
+ RESTRICTED_ACCESS: 'Restricted access',
9312
9390
 
9313
- define(streamStatusInfo, 'NO_AVAILABLE_TRANSCODERS', 'No available transcoders');
9391
+ /**
9392
+ * No available transcoders for stream
9393
+ * @event NO_AVAILABLE_TRANSCODERS
9394
+ * @memberof Flashphoner.constants.STREAM_STATUS_INFO
9395
+ */
9396
+ NO_AVAILABLE_TRANSCODERS: 'No available transcoders'
9397
+ });
9314
9398
  /**
9315
9399
  * @namespace Flashphoner.constants.CALL_STATUS_INFO
9316
9400
  * @see Call
9317
9401
  */
9318
9402
 
9319
- var callStatusInfo = {};
9320
- /**
9321
- * Normal call hangup.
9322
- * @event NORMAL_CALL_CLEARING
9323
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9324
- */
9403
+ var CALL_STATUS_INFO = Object.freeze({
9404
+ /**
9405
+ * Normal call hangup.
9406
+ * @event NORMAL_CALL_CLEARING
9407
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9408
+ */
9409
+ NORMAL_CALL_CLEARING: 'Normal call clearing',
9325
9410
 
9326
- define(callStatusInfo, 'NORMAL_CALL_CLEARING', 'Normal call clearing');
9327
- /**
9328
- * Error occurred on session creation.
9329
- * @event FAILED_BY_SESSION_CREATION
9330
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9331
- */
9411
+ /**
9412
+ * Error occurred while creating a session
9413
+ * @event FAILED_BY_SESSION_CREATION
9414
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9415
+ */
9416
+ FAILED_BY_SESSION_CREATION: 'Failed by session creation',
9332
9417
 
9333
- define(callStatusInfo, 'FAILED_BY_SESSION_CREATION', 'Failed by session creation');
9334
- /**
9335
- * Failed by error during ICE establishment.
9336
- * @event FAILED_BY_ICE_ERROR
9337
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9338
- */
9418
+ /**
9419
+ * Failed by error during ICE establishment.
9420
+ * @event FAILED_BY_ICE_ERROR
9421
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9422
+ */
9423
+ FAILED_BY_ICE_ERROR: 'Failed by ICE error',
9339
9424
 
9340
- define(callStatusInfo, 'FAILED_BY_ICE_ERROR', 'Failed by ICE error');
9341
- /**
9342
- * RTP session failed by RTP activity timer.
9343
- * @event FAILED_BY_RTP_ACTIVITY
9344
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9345
- */
9425
+ /**
9426
+ * RTP session failed by RTP activity timer.
9427
+ * @event FAILED_BY_RTP_ACTIVITY
9428
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9429
+ */
9430
+ FAILED_BY_RTP_ACTIVITY: 'Failed by RTP activity',
9346
9431
 
9347
- define(callStatusInfo, 'FAILED_BY_RTP_ACTIVITY', 'Failed by RTP activity');
9348
- /**
9349
- * FF writer was failed on RTMP.
9350
- * @event FAILED_BY_RTMP_WRITER_ERROR
9351
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9352
- */
9432
+ /**
9433
+ * FF writer was failed on RTMP.
9434
+ * @event FAILED_BY_RTMP_WRITER_ERROR
9435
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9436
+ */
9437
+ FAILED_BY_RTMP_WRITER_ERROR: 'Failed by RTMP writer error',
9353
9438
 
9354
- define(callStatusInfo, 'FAILED_BY_RTMP_WRITER_ERROR', 'Failed by RTMP writer error');
9355
- /**
9356
- * DTLS wrong fingerprint.
9357
- * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
9358
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9359
- */
9439
+ /**
9440
+ * DTLS wrong fingerprint.
9441
+ * @event FAILED_BY_DTLS_FINGERPRINT_ERROR
9442
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9443
+ */
9444
+ FAILED_BY_DTLS_FINGERPRINT_ERROR: 'Failed by DTLS fingerprint error',
9360
9445
 
9361
- define(callStatusInfo, 'FAILED_BY_DTLS_FINGERPRINT_ERROR', 'Failed by DTLS fingerprint error');
9362
- /**
9363
- * No common codecs in sdp
9364
- * @event NO_COMMON_CODECS
9365
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9366
- */
9446
+ /**
9447
+ * No common codecs in sdp
9448
+ * @event NO_COMMON_CODECS
9449
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9450
+ */
9451
+ NO_COMMON_CODECS: 'No common codecs',
9367
9452
 
9368
- define(callStatusInfo, 'NO_COMMON_CODECS', 'No common codecs');
9369
- /**
9370
- * Client did not send DTLS packets or packets were lost/corrupted during transmission.
9371
- * @event FAILED_BY_DTLS_ERROR
9372
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9373
- */
9453
+ /**
9454
+ * Client did not send DTLS packets or packets were lost/corrupted during transmission.
9455
+ * @event FAILED_BY_DTLS_ERROR
9456
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9457
+ */
9458
+ FAILED_BY_DTLS_ERROR: 'Failed by DTLS error',
9374
9459
 
9375
- define(callStatusInfo, 'FAILED_BY_DTLS_ERROR', 'Failed by DTLS error');
9376
- /**
9377
- * Error occurred during call
9378
- * @event FAILED_BY_ERROR
9379
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9380
- */
9460
+ /**
9461
+ * Error occurred during the call
9462
+ * @event FAILED_BY_ERROR
9463
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9464
+ */
9465
+ FAILED_BY_ERROR: 'Failed by error',
9381
9466
 
9382
- define(callStatusInfo, 'FAILED_BY_ERROR', 'Failed by error');
9467
+ /**
9468
+ * Call failed by request timeout
9469
+ * @event FAILED_BY_REQUEST_TIMEOUT
9470
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9471
+ */
9472
+ FAILED_BY_REQUEST_TIMEOUT: 'Failed by request timeout',
9473
+
9474
+ /**
9475
+ * Transcoding required, but disabled in settings
9476
+ * @event TRANSCODING_REQUIRED_BUT_DISABLED
9477
+ * @memberof Flashphoner.constants.CALL_STATUS_INFO
9478
+ */
9479
+ TRANSCODING_REQUIRED_BUT_DISABLED: 'Transcoding required, but disabled'
9480
+ });
9383
9481
  /**
9384
- * Call failed by request timeout
9385
- * @event FAILED_BY_REQUEST_TIMEOUT
9386
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9387
- */
9482
+ * @namespace Flashphoner.constants.ERROR_INFO
9483
+ */
9484
+
9485
+ var ERROR_INFO = Object.freeze({
9486
+ /**
9487
+ * Error if none of MediaProviders available
9488
+ * @event NONE_OF_MEDIAPROVIDERS_AVAILABLE
9489
+ * @memberof Flashphoner.constants.ERROR_INFO
9490
+ */
9491
+ NONE_OF_MEDIAPROVIDERS_AVAILABLE: 'None of MediaProviders available',
9388
9492
 
9389
- define(callStatusInfo, 'FAILED_BY_REQUEST_TIMEOUT', 'Failed by request timeout');
9493
+ /**
9494
+ * Error if none of preferred MediaProviders available
9495
+ * @event NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE
9496
+ * @memberof Flashphoner.constants.ERROR_INFO
9497
+ */
9498
+ NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE: 'None of preferred MediaProviders available',
9499
+
9500
+ /**
9501
+ * Error if API is not initialized
9502
+ * @event FLASHPHONER_API_NOT_INITIALIZED
9503
+ * @memberof Flashphoner.constants.ERROR_INFO
9504
+ */
9505
+ FLASHPHONER_API_NOT_INITIALIZED: 'Flashphoner API is not initialized',
9506
+
9507
+ /**
9508
+ * Error if options.urlServer is not specified
9509
+ * @event OPTIONS_URLSERVER_MUST_BE_PROVIDED
9510
+ * @memberof Flashphoner.constants.ERROR_INFO
9511
+ */
9512
+ OPTIONS_URLSERVER_MUST_BE_PROVIDED: 'options.urlServer must be provided',
9513
+
9514
+ /**
9515
+ * Error if session state is not valid
9516
+ * @event INVALID_SESSION_STATE
9517
+ * @memberof Flashphoner.constants.ERROR_INFO
9518
+ */
9519
+ INVALID_SESSION_STATE: 'Invalid session state',
9520
+
9521
+ /**
9522
+ * Error if no options provided
9523
+ * @event OPTIONS_MUST_BE_PROVIDED
9524
+ * @memberof Flashphoner.constants.ERROR_INFO
9525
+ */
9526
+ OPTIONS_MUST_BE_PROVIDED: 'options must be provided',
9527
+
9528
+ /**
9529
+ * Error if call status is not {@link Flashphoner.constants.CALL_STATUS.NEW}
9530
+ * @event INVALID_CALL_STATE
9531
+ * @memberof Flashphoner.constants.ERROR_INFO
9532
+ */
9533
+ INVALID_CALL_STATE: 'Invalid call state',
9534
+
9535
+ /**
9536
+ * Error if event is not specified
9537
+ * @event EVENT_CANT_BE_NULL
9538
+ * @memberof Flashphoner.constants.ERROR_INFO
9539
+ */
9540
+ EVENT_CANT_BE_NULL: 'Event can\'t be null',
9541
+
9542
+ /**
9543
+ * Error if callback is not a valid function
9544
+ * @event CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION
9545
+ * @memberof Flashphoner.constants.ERROR_INFO
9546
+ */
9547
+ CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION: 'Callback needs to be a valid function',
9548
+
9549
+ /**
9550
+ * Error if options.name is not specified
9551
+ * @event OPTIONS_NAME_MUST_BE_PROVIDED
9552
+ * @memberof Flashphoner.constants.ERROR_INFO
9553
+ */
9554
+ OPTIONS_NAME_MUST_BE_PROVIDED: 'options.name must be provided',
9555
+
9556
+ /**
9557
+ * Error if number of cams is less than 2 or camera is already used by other application
9558
+ * @event CAN_NOT_SWITCH_CAM
9559
+ * @memberOf Flashphoner.constants.ERROR_INFO
9560
+ */
9561
+ CAN_NOT_SWITCH_CAM: 'Number of cams is less than 2 or camera is already used by other application',
9562
+
9563
+ /**
9564
+ * Error if number of mics is less than 2 or microphone is already used by other application
9565
+ * @event CAN_NOT_SWITCH_MIC
9566
+ * @memberOf Flashphoner.constants.ERROR_INFO
9567
+ */
9568
+ CAN_NOT_SWITCH_MIC: 'Number of mics is less than 2 or microphone is already used by other application',
9569
+
9570
+ /**
9571
+ * Local browser error detected
9572
+ * @event LOCAL_ERROR
9573
+ * @memberOf Flashphoner.constants.ERROR_INFO
9574
+ */
9575
+ LOCAL_ERROR: 'Local error'
9576
+ });
9390
9577
  /**
9391
- * Transcoding required, but disabled in settings
9392
- * @event TRANSCODING_REQUIRED_BUT_DISABLED
9393
- * @memberof Flashphoner.constants.CALL_STATUS_INFO
9578
+ * Local media devices type
9579
+ * @namespace Flashphoner.constants.MEDIA_DEVICE_KIND
9394
9580
  */
9395
9581
 
9396
- define(callStatusInfo, 'TRANSCODING_REQUIRED_BUT_DISABLED', 'Transcoding required, but disabled');
9397
- /**
9398
- * @namespace Flashphoner.constants.ERROR_INFO
9399
- */
9582
+ var MEDIA_DEVICE_KIND = Object.freeze({
9583
+ /**
9584
+ * List local media output devices
9585
+ * @see Flashphoner.getMediaDevices
9586
+ * @memberOf Flashphoner.constants.MEDIA_DEVICE_KIND
9587
+ */
9588
+ OUTPUT: 'output',
9589
+
9590
+ /**
9591
+ * List local media input devices
9592
+ * @see Flashphoner.getMediaDevices
9593
+ * @memberOf Flashphoner.constants.MEDIA_DEVICE_KIND
9594
+ */
9595
+ INPUT: 'input',
9400
9596
 
9401
- var errorInfo = {};
9597
+ /**
9598
+ * List local media devices
9599
+ * @see Flashphoner.getMediaDevices
9600
+ * @memberOf Flashphoner.constants.MEDIA_DEVICE_KIND
9601
+ */
9602
+ ALL: 'all'
9603
+ });
9402
9604
  /**
9403
- * Error if none of MediaProviders available
9404
- * @event NONE_OF_MEDIAPROVIDERS_AVAILABLE
9405
- * @memberof Flashphoner.constants.ERROR_INFO
9605
+ * WebRTC transport type
9606
+ * @namespace Flashphoner.constants.TRANSPORT_TYPE
9406
9607
  */
9407
9608
 
9408
- define(errorInfo, 'NONE_OF_MEDIAPROVIDERS_AVAILABLE', 'None of MediaProviders available');
9609
+ var TRANSPORT_TYPE = Object.freeze({
9610
+ /**
9611
+ * WebRTC RTP traffic goes over UDP (default)
9612
+ * @see Stream
9613
+ * @memberOf Flashphoner.constants.TRANSPORT_TYPE
9614
+ */
9615
+ UDP: 'UDP',
9616
+
9617
+ /**
9618
+ * WebRTC RTP traffic goes over TCP
9619
+ * @see Stream
9620
+ * @memberOf Flashphoner.constants.TRANSPORT_TYPE
9621
+ */
9622
+ TCP: 'TCP'
9623
+ });
9409
9624
  /**
9410
- * Error if none of preferred MediaProviders available
9411
- * @event NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE
9412
- * @memberof Flashphoner.constants.ERROR_INFO
9625
+ * WebRTC connection quality type
9626
+ * @namespace Flashphoner.constants.CONNECTION_QUALITY
9413
9627
  */
9414
9628
 
9415
- define(errorInfo, 'NONE_OF_PREFERRED_MEDIAPROVIDERS_AVAILABLE', 'None of preferred MediaProviders available');
9416
- /**
9417
- * Error if API is not initialized
9418
- * @event FLASHPHONER_API_NOT_INITIALIZED
9419
- * @memberof Flashphoner.constants.ERROR_INFO
9420
- */
9629
+ var CONNECTION_QUALITY = Object.freeze({
9630
+ /**
9631
+ * Channel bandwidth is perfect
9632
+ * @see Stream
9633
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9634
+ */
9635
+ PERFECT: 'PERFECT',
9421
9636
 
9422
- define(errorInfo, 'FLASHPHONER_API_NOT_INITIALIZED', 'Flashphoner API is not initialized');
9423
- /**
9424
- * Error if options.urlServer is not specified
9425
- * @event OPTIONS_URLSERVER_MUST_BE_PROVIDED
9426
- * @memberof Flashphoner.constants.ERROR_INFO
9427
- */
9637
+ /**
9638
+ * Channel bandwidth is good
9639
+ * @see Stream
9640
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9641
+ */
9642
+ GOOD: 'GOOD',
9428
9643
 
9429
- define(errorInfo, 'OPTIONS_URLSERVER_MUST_BE_PROVIDED', 'options.urlServer must be provided');
9430
- /**
9431
- * Error if session state is not REGISTERED
9432
- * @event INVALID_SESSION_STATE
9433
- * @memberof Flashphoner.constants.ERROR_INFO
9434
- */
9644
+ /**
9645
+ * Channel bandwidth is bad
9646
+ * @see Stream
9647
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9648
+ */
9649
+ BAD: 'BAD',
9435
9650
 
9436
- define(errorInfo, 'INVALID_SESSION_STATE', 'Invalid session state');
9437
- /**
9438
- * Error if no options provided
9439
- * @event OPTIONS_MUST_BE_PROVIDED
9440
- * @memberof Flashphoner.constants.ERROR_INFO
9441
- */
9651
+ /**
9652
+ * Channel bandwidth is unknown (initial state)
9653
+ * @see Stream
9654
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9655
+ */
9656
+ UNKNOWN: 'UNKNOWN',
9442
9657
 
9443
- define(errorInfo, 'OPTIONS_MUST_BE_PROVIDED', 'options must be provided');
9658
+ /**
9659
+ * Channel bandwidth is updating
9660
+ * @see Stream
9661
+ * @memberOf Flashphoner.constants.CONNECTION_QUALITY
9662
+ */
9663
+ UPDATE: 'UPDATE'
9664
+ });
9444
9665
  /**
9445
- * Error if call status is not {@link Flashphoner.constants.CALL_STATUS.NEW}
9446
- * @event INVALID_CALL_STATE
9447
- * @memberof Flashphoner.constants.ERROR_INFO
9666
+ * Websocket signaling stream event
9667
+ * @see Stream
9668
+ * @memberOf Flashphoner.constants
9448
9669
  */
9449
9670
 
9450
- define(errorInfo, 'INVALID_CALL_STATE', 'Invalid call state');
9671
+ var STREAM_EVENT = 'STREAM_EVENT';
9451
9672
  /**
9452
- * Error if event is not specified
9453
- * @event EVENT_CANT_BE_NULL
9454
- * @memberof Flashphoner.constants.ERROR_INFO
9673
+ * Websocket signaling stream event type
9674
+ * @namespace Flashphoner.constants.STREAM_EVENT_TYPE
9455
9675
  */
9456
9676
 
9457
- define(errorInfo, 'EVENT_CANT_BE_NULL', 'Event can\'t be null');
9458
- /**
9459
- * Error if callback is not a valid function
9460
- * @event CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION
9461
- * @memberof Flashphoner.constants.ERROR_INFO
9462
- */
9677
+ var STREAM_EVENT_TYPE = Object.freeze({
9678
+ /**
9679
+ * Stream audio is muted
9680
+ * @see Stream
9681
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9682
+ */
9683
+ AUDIO_MUTED: 'audioMuted',
9463
9684
 
9464
- define(errorInfo, 'CALLBACK_NEEDS_TO_BE_A_VALID_FUNCTION', 'Callback needs to be a valid function');
9465
- /**
9466
- * Error if session state is not ESTABLISHED
9467
- * @event INVALID_SESSION_STATE
9468
- * @memberof Flashphoner.constants.ERROR_INFO
9469
- */
9685
+ /**
9686
+ * Stream audio is unmuted
9687
+ * @see Stream
9688
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9689
+ */
9690
+ AUDIO_UNMUTED: 'audioUnmuted',
9470
9691
 
9471
- define(errorInfo, 'INVALID_SESSION_STATE', 'Invalid session state');
9472
- /**
9473
- * Error if options.name is not specified
9474
- * @event OPTIONS_NAME_MUST_BE_PROVIDED
9475
- * @memberof Flashphoner.constants.ERROR_INFO
9476
- */
9692
+ /**
9693
+ * Stream video is muted
9694
+ * @see Stream
9695
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9696
+ */
9697
+ VIDEO_MUTED: 'videoMuted',
9477
9698
 
9478
- define(errorInfo, 'OPTIONS_NAME_MUST_BE_PROVIDED', 'options.name must be provided');
9479
- /**
9480
- * Error if number of cams is less than 2 or already used custom stream
9481
- * @event CAN_NOT_SWITCH_CAM
9482
- * @memberOf Flashphoner.constants.ERROR_INFO
9483
- */
9699
+ /**
9700
+ * Stream videoo is unmuted
9701
+ * @see Stream
9702
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9703
+ */
9704
+ VIDEO_UNMUTED: 'videoUnmuted',
9484
9705
 
9485
- define(errorInfo, 'CAN_NOT_SWITCH_CAM', 'Number of cams is less than 2 or already used custom stream');
9706
+ /**
9707
+ * Data bound to the stream are received
9708
+ * @see Stream
9709
+ * @memberOf Flashphoner.constants.STREAM_EVENT_TYPE
9710
+ */
9711
+ DATA: 'data'
9712
+ });
9486
9713
  /**
9487
- * Error if number of mics is less than 2 or already used custom stream
9488
- * @event CAN_NOT_SWITCH_MIC
9489
- * @memberOf Flashphoner.constants.ERROR_INFO
9714
+ * WebRTC video content hint type
9715
+ * @namespace Flashphoner.constants.CONTENT_HINT_TYPE
9490
9716
  */
9491
9717
 
9492
- define(errorInfo, 'CAN_NOT_SWITCH_MIC', 'Number of mics is less than 2 or already used custom stream');
9493
- /**
9494
- * Error if recived local error
9495
- * @event CAN_NOT_SWITCH_MIC
9496
- * @memberOf Flashphoner.constants.ERROR_INFO
9497
- */
9718
+ var CONTENT_HINT_TYPE = Object.freeze({
9719
+ /**
9720
+ * Video content is motion (webcam case): keep FPS, resolution and bitrate may change
9721
+ * @see Stream
9722
+ * @memberOf Flashphoner.constants.CONTENT_HINT_TYPE
9723
+ */
9724
+ MOTION: 'motion',
9498
9725
 
9499
- define(errorInfo, 'LOCAL_ERROR', 'Local error');
9500
- var mediaDeviceKind = {};
9501
- define(mediaDeviceKind, 'OUTPUT', 'output');
9502
- define(mediaDeviceKind, 'INPUT', 'input');
9503
- define(mediaDeviceKind, 'ALL', 'all');
9504
- var transportType = {};
9505
- define(transportType, 'UDP', 'UDP');
9506
- define(transportType, 'TCP', 'TCP');
9507
- var connectionQuality = {};
9508
- define(connectionQuality, 'PERFECT', 'PERFECT');
9509
- define(connectionQuality, 'GOOD', 'GOOD');
9510
- define(connectionQuality, 'BAD', 'BAD');
9511
- define(connectionQuality, 'UNKNOWN', 'UNKNOWN');
9512
- define(connectionQuality, 'UPDATE', 'UPDATE');
9513
- var streamEventType = {};
9514
- define(streamEventType, 'AUDIO_MUTED', 'audioMuted');
9515
- define(streamEventType, 'AUDIO_UNMUTED', 'audioUnmuted');
9516
- define(streamEventType, 'VIDEO_MUTED', 'videoMuted');
9517
- define(streamEventType, 'VIDEO_UNMUTED', 'videoUnmuted');
9518
- define(streamEventType, 'DATA', 'data');
9519
- var contentHintType = {};
9520
- define(contentHintType, 'MOTION', 'motion');
9521
- define(contentHintType, 'DETAIL', 'detail');
9522
- define(contentHintType, 'TEXT', 'text');
9523
- var constants = {};
9524
- define(constants, 'SESSION_STATUS', sessionStatus);
9525
- define(constants, 'STREAM_EVENT_TYPE', streamEventType);
9526
- define(constants, 'STREAM_EVENT', 'STREAM_EVENT');
9527
- define(constants, 'STREAM_STATUS', streamStatus);
9528
- define(constants, 'CALL_STATUS', callStatus);
9529
- define(constants, 'STREAM_STATUS_INFO', streamStatusInfo);
9530
- define(constants, 'CALL_STATUS_INFO', callStatusInfo);
9531
- define(constants, 'ERROR_INFO', errorInfo);
9532
- define(constants, 'MEDIA_DEVICE_KIND', mediaDeviceKind);
9533
- define(constants, 'TRANSPORT_TYPE', transportType);
9534
- define(constants, 'CONNECTION_QUALITY', connectionQuality);
9535
- define(constants, 'CONTENT_HINT_TYPE', contentHintType); //define helper
9536
-
9537
- function define(obj, name, value) {
9538
- Object.defineProperty(obj, name, {
9539
- value: value,
9540
- enumerable: true
9541
- });
9542
- }
9726
+ /**
9727
+ * Video content is detail (sreen sharing case): keep resolution, bitrate may change, FPS may drop
9728
+ * @see Stream
9729
+ * @memberOf Flashphoner.constants.CONTENT_HINT_TYPE
9730
+ */
9731
+ DETAIL: 'detail',
9543
9732
 
9544
- module.exports = constants;
9733
+ /**
9734
+ * Video content is text (sreen sharing case): keep resolution and bitrate, FPS may drop
9735
+ * @see Stream
9736
+ * @memberOf Flashphoner.constants.CONTENT_HINT_TYPE
9737
+ */
9738
+ TEXT: 'text'
9739
+ });
9740
+ module.exports = {
9741
+ SESSION_STATUS: SESSION_STATUS,
9742
+ STREAM_STATUS: STREAM_STATUS,
9743
+ CALL_STATUS: CALL_STATUS,
9744
+ STREAM_STATUS_INFO: STREAM_STATUS_INFO,
9745
+ CALL_STATUS_INFO: CALL_STATUS_INFO,
9746
+ ERROR_INFO: ERROR_INFO,
9747
+ MEDIA_DEVICE_KIND: MEDIA_DEVICE_KIND,
9748
+ TRANSPORT_TYPE: TRANSPORT_TYPE,
9749
+ CONNECTION_QUALITY: CONNECTION_QUALITY,
9750
+ STREAM_EVENT: STREAM_EVENT,
9751
+ STREAM_EVENT_TYPE: STREAM_EVENT_TYPE,
9752
+ CONTENT_HINT_TYPE: CONTENT_HINT_TYPE
9753
+ };
9545
9754
 
9546
9755
  },{}],40:[function(require,module,exports){
9547
9756
  'use strict';
@@ -9555,8 +9764,9 @@ var constants = require("./constants");
9555
9764
 
9556
9765
  var util = require('./util');
9557
9766
 
9558
- var logger = require('./util').logger;
9767
+ var LoggerObject = require('./util').logger;
9559
9768
 
9769
+ var coreLogger;
9560
9770
  var loggerConf = {
9561
9771
  push: false,
9562
9772
  severity: "INFO"
@@ -9604,7 +9814,7 @@ var disableConnectionQualityCalculation;
9604
9814
  * @param {String=} options.decoderLocation Location of video-worker2.js file
9605
9815
  * @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
9606
9816
  * @param {Object=} options.constraints Default local media constraints
9607
- * @param {Object=} options.logger Enable logging
9817
+ * @param {Object=} options.logger Core logger options
9608
9818
  * @throws {Error} Error if none of MediaProviders available
9609
9819
  * @memberof Flashphoner
9610
9820
  */
@@ -9613,16 +9823,10 @@ var init = function init(options) {
9613
9823
  if (!initialized) {
9614
9824
  if (!options) {
9615
9825
  options = {};
9616
- }
9826
+ } // init global logger
9617
9827
 
9618
- loggerConf = options.logger || loggerConf;
9619
9828
 
9620
- if (options.logger !== null) {
9621
- loggerConf.enableLogs = true;
9622
- } // init logger
9623
-
9624
-
9625
- logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
9829
+ coreLogger = createLogger(options.logger);
9626
9830
  var waitingTemasys = false;
9627
9831
 
9628
9832
  try {
@@ -9643,7 +9847,7 @@ var init = function init(options) {
9643
9847
  constraints: options.constraints || getDefaultMediaConstraints(),
9644
9848
  extensionId: options.screenSharingExtensionId,
9645
9849
  audioContext: audioContext,
9646
- logger: logger,
9850
+ logger: coreLogger,
9647
9851
  createMicGainNode: enableGainNode
9648
9852
  };
9649
9853
  webRtcProvider.configure(webRtcConf);
@@ -9660,7 +9864,7 @@ var init = function init(options) {
9660
9864
  var webRtcConf = {
9661
9865
  constraints: options.constraints || getDefaultMediaConstraints(),
9662
9866
  extensionId: options.screenSharingExtensionId,
9663
- logger: logger
9867
+ logger: coreLogger
9664
9868
  };
9665
9869
  webRtcProvider.configure(webRtcConf); // Just reorder media provider list
9666
9870
 
@@ -9688,7 +9892,7 @@ var init = function init(options) {
9688
9892
  var flashConf = {
9689
9893
  constraints: options.constraints || getDefaultMediaConstraints(),
9690
9894
  flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
9691
- logger: logger
9895
+ logger: coreLogger
9692
9896
  };
9693
9897
  flashProvider.configure(flashConf);
9694
9898
  }
@@ -9712,7 +9916,7 @@ var init = function init(options) {
9712
9916
  receiverLocation: options.receiverLocation,
9713
9917
  decoderLocation: options.decoderLocation,
9714
9918
  audioContext: audioContext,
9715
- logger: logger
9919
+ logger: coreLogger
9716
9920
  };
9717
9921
  websocketProvider.configure(wsConf);
9718
9922
  } //check at least 1 provider available
@@ -9734,7 +9938,7 @@ var init = function init(options) {
9734
9938
  MediaProvider = _MediaProvider;
9735
9939
  }
9736
9940
  } else {
9737
- logger.warn(LOG_PREFIX, "Preferred media provider is not available.");
9941
+ corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
9738
9942
  }
9739
9943
  }
9740
9944
 
@@ -9762,7 +9966,7 @@ var init = function init(options) {
9762
9966
  options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
9763
9967
  }
9764
9968
 
9765
- logger.info(LOG_PREFIX, "Initialized");
9969
+ coreLogger.info(LOG_PREFIX, "Initialized");
9766
9970
  initialized = true;
9767
9971
  }
9768
9972
  };
@@ -9801,7 +10005,7 @@ var playFirstVideo = function playFirstVideo(display, isLocal, src) {
9801
10005
  }
9802
10006
  };
9803
10007
  /**
9804
- * Get logger
10008
+ * Get core logger
9805
10009
  *
9806
10010
  * @returns {Object} Logger
9807
10011
  * @memberof Flashphoner
@@ -9812,7 +10016,7 @@ var getLogger = function getLogger() {
9812
10016
  if (!initialized) {
9813
10017
  console.warn("Initialize API first.");
9814
10018
  } else {
9815
- return logger;
10019
+ return coreLogger;
9816
10020
  }
9817
10021
  };
9818
10022
  /**
@@ -9985,6 +10189,31 @@ var getSessions = function getSessions() {
9985
10189
 
9986
10190
  var getSession = function getSession(id) {
9987
10191
  return sessions[id];
10192
+ }; // Get logger configuration from options
10193
+
10194
+
10195
+ var getLoggerConf = function getLoggerConf(loggerOptions) {
10196
+ var conf = loggerOptions || loggerConf;
10197
+
10198
+ if (loggerOptions !== null) {
10199
+ conf.enableLogs = true;
10200
+ }
10201
+
10202
+ return conf;
10203
+ }; // Create a new logger object
10204
+
10205
+
10206
+ var createLogger = function createLogger(loggerOptions) {
10207
+ var parentLogger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : coreLogger;
10208
+ var newLogger = parentLogger;
10209
+
10210
+ if (newLogger === undefined || loggerOptions != undefined) {
10211
+ var loggerConf = getLoggerConf(loggerOptions);
10212
+ newLogger = new LoggerObject();
10213
+ newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
10214
+ }
10215
+
10216
+ return newLogger;
9988
10217
  };
9989
10218
  /**
9990
10219
  * Create new session and connect to server.
@@ -10004,6 +10233,7 @@ var getSession = function getSession(id) {
10004
10233
  * @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
10005
10234
  * @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
10006
10235
  * @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
10236
+ * @param {Object=} options.logger Session logger options
10007
10237
  * @returns {Session} Created session
10008
10238
  * @throws {Error} Error if API is not initialized
10009
10239
  * @throws {TypeError} Error if options.urlServer is not specified
@@ -10018,8 +10248,12 @@ var createSession = function createSession(options) {
10018
10248
 
10019
10249
  if (!options || !options.urlServer) {
10020
10250
  throw new TypeError("options.urlServer must be provided");
10021
- }
10251
+ } // Set session logger #WCS-2434
10022
10252
 
10253
+
10254
+ var sessionLogger = createLogger(options.logger); // Override logger for all low level operations
10255
+
10256
+ var logger = sessionLogger;
10023
10257
  var id_ = uuid_v1();
10024
10258
  var sessionStatus = SESSION_STATUS.PENDING;
10025
10259
  var urlServer = options.urlServer;
@@ -10125,7 +10359,7 @@ var createSession = function createSession(options) {
10125
10359
  if (timeout != undefined && timeout > 0) {
10126
10360
  connectionTimeout = setTimeout(function () {
10127
10361
  if (wsConnection.readyState == 0) {
10128
- console.log("WS connection timeout");
10362
+ logger.warn(LOG_PREFIX, "WS connection timeout");
10129
10363
  wsConnection.close();
10130
10364
  }
10131
10365
  }, timeout);
@@ -10149,7 +10383,7 @@ var createSession = function createSession(options) {
10149
10383
  mediaProviders: Object.keys(MediaProvider),
10150
10384
  keepAlive: keepAlive,
10151
10385
  authToken: authToken,
10152
- clientVersion: "2.0.212",
10386
+ clientVersion: "2.0.217",
10153
10387
  clientOSVersion: window.navigator.appVersion,
10154
10388
  clientBrowserVersion: window.navigator.userAgent,
10155
10389
  msePacketizationVersion: 2,
@@ -10455,6 +10689,7 @@ var createSession = function createSession(options) {
10455
10689
  * @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
10456
10690
  * @param {Array<string>=} options.sipHeaders Array of custom SIP headers
10457
10691
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
10692
+ * @param {Object=} options.logger Call logger options
10458
10693
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
10459
10694
  * @returns {Call} Call
10460
10695
  * @throws {TypeError} Error if no options provided
@@ -10467,15 +10702,18 @@ var createSession = function createSession(options) {
10467
10702
  var createCall = function createCall(options) {
10468
10703
  //check session state
10469
10704
  if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
10470
- logger.info(LOG_PREFIX, "Status is " + sessionStatus);
10471
- throw new Error('Invalid session state');
10705
+ throw new Error('Invalid session state ' + sessionStatus);
10472
10706
  } //check options
10473
10707
 
10474
10708
 
10475
10709
  if (!options) {
10476
10710
  throw new TypeError("options must be provided");
10477
- }
10711
+ } // Set call logger #WCS-2434
10712
+
10478
10713
 
10714
+ var callLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
10715
+
10716
+ var logger = callLogger;
10479
10717
  var login = appKey == 'clickToCallApp' ? '' : cConfig.sipLogin;
10480
10718
  var caller_ = options.incoming ? options.caller : login;
10481
10719
  var callee_ = options.callee;
@@ -10621,7 +10859,8 @@ var createSession = function createSession(options) {
10621
10859
  constraints: constraints,
10622
10860
  connectionConfig: mediaOptions,
10623
10861
  audioOutputId: audioOutputId,
10624
- videoContentHint: videoContentHint
10862
+ videoContentHint: videoContentHint,
10863
+ logger: logger
10625
10864
  }).then(function (newConnection) {
10626
10865
  mediaConnection = newConnection;
10627
10866
  return mediaConnection.createOffer({
@@ -11207,7 +11446,7 @@ var createSession = function createSession(options) {
11207
11446
  /**
11208
11447
  * Get call info
11209
11448
  * @returns {string} Info
11210
- * @memberof Stream
11449
+ * @memberof Call
11211
11450
  * @inner
11212
11451
  */
11213
11452
 
@@ -11218,7 +11457,7 @@ var createSession = function createSession(options) {
11218
11457
  /**
11219
11458
  * Get stream error info
11220
11459
  * @returns {string} Error info
11221
- * @memberof Stream
11460
+ * @memberof Call
11222
11461
  * @inner
11223
11462
  */
11224
11463
 
@@ -11226,6 +11465,17 @@ var createSession = function createSession(options) {
11226
11465
  var getErrorInfo = function getErrorInfo() {
11227
11466
  return errorInfo_;
11228
11467
  };
11468
+ /**
11469
+ * Get call logger
11470
+ *
11471
+ * @returns {Object} Logger
11472
+ * @memberof Call
11473
+ */
11474
+
11475
+
11476
+ var getLogger = function getLogger() {
11477
+ return callLogger;
11478
+ };
11229
11479
 
11230
11480
  call.call = call_;
11231
11481
  call.answer = answer;
@@ -11257,6 +11507,7 @@ var createSession = function createSession(options) {
11257
11507
  call.switchMic = switchMic;
11258
11508
  call.switchToScreen = switchToScreen;
11259
11509
  call.switchToCam = switchToCam;
11510
+ call.getLogger = getLogger;
11260
11511
  calls[id_] = call;
11261
11512
  return call;
11262
11513
  };
@@ -11303,6 +11554,7 @@ var createSession = function createSession(options) {
11303
11554
  * @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
11304
11555
  * @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
11305
11556
  * @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
11557
+ * @param {Object=} options.logger Stream logger options
11306
11558
  * @param {sdpHook} sdpHook The callback that handles sdp from the server
11307
11559
  * @returns {Stream} Stream
11308
11560
  * @throws {TypeError} Error if no options provided
@@ -11318,7 +11570,7 @@ var createSession = function createSession(options) {
11318
11570
  var availableCallbacks = []; //check session state
11319
11571
 
11320
11572
  if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
11321
- throw new Error('Invalid session state');
11573
+ throw new Error('Invalid session state ' + sessionStatus);
11322
11574
  } //check options
11323
11575
 
11324
11576
 
@@ -11328,8 +11580,12 @@ var createSession = function createSession(options) {
11328
11580
 
11329
11581
  if (!options.name) {
11330
11582
  throw new TypeError("options.name must be provided");
11331
- }
11583
+ } // Set stream logger #WCS-2434
11584
+
11332
11585
 
11586
+ var streamLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
11587
+
11588
+ var logger = streamLogger;
11333
11589
  var clientKf = new KalmanFilter();
11334
11590
  var serverKf = new KalmanFilter();
11335
11591
  var id_ = uuid_v1();
@@ -11573,7 +11829,7 @@ var createSession = function createSession(options) {
11573
11829
  logger.debug(LOG_PREFIX, "Play stream " + name_);
11574
11830
 
11575
11831
  if (status_ !== STREAM_STATUS.NEW) {
11576
- throw new Error("Invalid stream state");
11832
+ throw new Error("Invalid stream state " + status_);
11577
11833
  }
11578
11834
 
11579
11835
  status_ = STREAM_STATUS.PENDING; //create mediaProvider connection
@@ -11592,7 +11848,8 @@ var createSession = function createSession(options) {
11592
11848
  audioOutputId: audioOutputId,
11593
11849
  remoteVideo: remoteVideo,
11594
11850
  playoutDelay: playoutDelay,
11595
- unmutePlayOnStart: unmutePlayOnStart
11851
+ unmutePlayOnStart: unmutePlayOnStart,
11852
+ logger: logger
11596
11853
  }, streamRefreshHandlers[id_]).then(function (newConnection) {
11597
11854
  mediaConnection = newConnection;
11598
11855
 
@@ -11656,7 +11913,7 @@ var createSession = function createSession(options) {
11656
11913
  logger.debug(LOG_PREFIX, "Publish stream " + name_);
11657
11914
 
11658
11915
  if (status_ !== STREAM_STATUS.NEW) {
11659
- throw new Error("Invalid stream state");
11916
+ throw new Error("Invalid stream state " + status_);
11660
11917
  }
11661
11918
 
11662
11919
  status_ = STREAM_STATUS.PENDING;
@@ -11690,7 +11947,8 @@ var createSession = function createSession(options) {
11690
11947
  connectionConfig: mediaOptions,
11691
11948
  connectionConstraints: mediaConnectionConstraints,
11692
11949
  customStream: constraints && constraints.customStream ? constraints.customStream : false,
11693
- videoContentHint: videoContentHint
11950
+ videoContentHint: videoContentHint,
11951
+ logger: logger
11694
11952
  }).then(function (newConnection) {
11695
11953
  mediaConnection = newConnection;
11696
11954
  return mediaConnection.createOffer({
@@ -12320,6 +12578,17 @@ var createSession = function createSession(options) {
12320
12578
  availableCallbacks.push(promise);
12321
12579
  });
12322
12580
  };
12581
+ /**
12582
+ * Get stream logger
12583
+ *
12584
+ * @returns {Object} Logger
12585
+ * @memberof Stream
12586
+ */
12587
+
12588
+
12589
+ var getLogger = function getLogger() {
12590
+ return streamLogger;
12591
+ };
12323
12592
 
12324
12593
  stream.play = play;
12325
12594
  stream.publish = publish;
@@ -12359,6 +12628,7 @@ var createSession = function createSession(options) {
12359
12628
  stream.switchToScreen = switchToScreen;
12360
12629
  stream.switchToCam = switchToCam;
12361
12630
  stream.sendData = sendData;
12631
+ stream.getLogger = getLogger;
12362
12632
  streams[id_] = stream;
12363
12633
  return stream;
12364
12634
  };
@@ -12567,6 +12837,17 @@ var createSession = function createSession(options) {
12567
12837
  }
12568
12838
 
12569
12839
  return sdp;
12840
+ };
12841
+ /**
12842
+ * Get session logger
12843
+ *
12844
+ * @returns {Object} Logger
12845
+ * @memberof Session
12846
+ */
12847
+
12848
+
12849
+ var getLogger = function getLogger() {
12850
+ return sessionLogger;
12570
12851
  }; //export Session
12571
12852
 
12572
12853
 
@@ -12582,7 +12863,8 @@ var createSession = function createSession(options) {
12582
12863
  session.submitBugReport = submitBugReport;
12583
12864
  session.startDebug = startDebug;
12584
12865
  session.stopDebug = stopDebug;
12585
- session.on = on; //save interface to global map
12866
+ session.on = on;
12867
+ session.getLogger = getLogger; //save interface to global map
12586
12868
 
12587
12869
  sessions[id_] = session;
12588
12870
  return session;
@@ -12628,165 +12910,171 @@ function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeo
12628
12910
  },{}],42:[function(require,module,exports){
12629
12911
  'use strict';
12630
12912
 
12631
- module.exports = {
12632
- isEmptyObject: function isEmptyObject(obj) {
12633
- for (var name in obj) {
12634
- return false;
12635
- }
12913
+ var isEmptyObject = function isEmptyObject(obj) {
12914
+ for (var name in obj) {
12915
+ return false;
12916
+ }
12636
12917
 
12637
- return true;
12638
- },
12918
+ return true;
12919
+ };
12920
+ /**
12921
+ * Copy values of object own properties to array.
12922
+ *
12923
+ * @param obj
12924
+ * @returns {Array}
12925
+ */
12639
12926
 
12640
- /**
12641
- * Copy values of object own properties to array.
12642
- *
12643
- * @param obj
12644
- * @returns {Array}
12645
- */
12646
- copyObjectToArray: function copyObjectToArray(obj) {
12647
- var ret = [];
12648
12927
 
12649
- for (var prop in obj) {
12650
- if (obj.hasOwnProperty(prop)) {
12651
- ret.push(obj[prop]);
12652
- }
12928
+ var copyObjectToArray = function copyObjectToArray(obj) {
12929
+ var ret = [];
12930
+
12931
+ for (var prop in obj) {
12932
+ if (obj.hasOwnProperty(prop)) {
12933
+ ret.push(obj[prop]);
12653
12934
  }
12935
+ }
12654
12936
 
12655
- return ret;
12656
- },
12937
+ return ret;
12938
+ };
12939
+ /**
12940
+ * Copy src properties to dst object.
12941
+ * Will overwrite dst prop with src prop in case of dst prop exist.
12942
+ */
12657
12943
 
12658
- /**
12659
- * Copy src properties to dst object.
12660
- * Will overwrite dst prop with src prop in case of dst prop exist.
12661
- */
12662
- copyObjectPropsToAnotherObject: function copyObjectPropsToAnotherObject(src, dst) {
12663
- for (var prop in src) {
12664
- if (src.hasOwnProperty(prop)) {
12665
- dst[prop] = src[prop];
12666
- }
12944
+
12945
+ var copyObjectPropsToAnotherObject = function copyObjectPropsToAnotherObject(src, dst) {
12946
+ for (var prop in src) {
12947
+ if (src.hasOwnProperty(prop)) {
12948
+ dst[prop] = src[prop];
12667
12949
  }
12668
- },
12669
- processRtcStatsReport: function processRtcStatsReport(browser, report) {
12670
- var result = {};
12950
+ }
12951
+ };
12671
12952
 
12672
- if (browser == "chrome") {
12673
- /**
12674
- * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
12675
- */
12676
- var gotResult = false;
12953
+ var processRtcStatsReport = function processRtcStatsReport(browser, report) {
12954
+ var result = {};
12677
12955
 
12678
- if (report.type && report.type == "googCandidatePair") {
12679
- //check if this is active pair
12680
- if (report.googActiveConnection == "true") {
12681
- gotResult = true;
12682
- }
12683
- }
12956
+ if (browser == "chrome") {
12957
+ /**
12958
+ * Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
12959
+ */
12960
+ var gotResult = false;
12684
12961
 
12685
- if (report.type && report.type == "ssrc") {
12962
+ if (report.type && report.type == "googCandidatePair") {
12963
+ //check if this is active pair
12964
+ if (report.googActiveConnection == "true") {
12686
12965
  gotResult = true;
12687
12966
  }
12967
+ }
12688
12968
 
12689
- if (gotResult) {
12690
- for (var k in report) {
12691
- if (report.hasOwnProperty(k)) {
12692
- result[k] = report[k];
12693
- }
12969
+ if (report.type && report.type == "ssrc") {
12970
+ gotResult = true;
12971
+ }
12972
+
12973
+ if (gotResult) {
12974
+ for (var k in report) {
12975
+ if (report.hasOwnProperty(k)) {
12976
+ result[k] = report[k];
12694
12977
  }
12695
12978
  }
12979
+ }
12696
12980
 
12697
- return result;
12698
- } else if (browser == "firefox") {
12699
- /**
12700
- * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
12701
- */
12702
- if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
12703
- result = {};
12981
+ return result;
12982
+ } else if (browser == "firefox") {
12983
+ /**
12984
+ * RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
12985
+ */
12986
+ if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
12987
+ result = {};
12704
12988
 
12705
- for (var k in report) {
12706
- if (report.hasOwnProperty(k)) {
12707
- result[k] = report[k];
12708
- }
12989
+ for (var k in report) {
12990
+ if (report.hasOwnProperty(k)) {
12991
+ result[k] = report[k];
12709
12992
  }
12710
12993
  }
12711
-
12712
- return result;
12713
- } else {
12714
- return result;
12715
12994
  }
12716
12995
 
12717
- ;
12996
+ return result;
12997
+ } else {
12998
+ return result;
12999
+ }
13000
+ };
13001
+
13002
+ var Browser = {
13003
+ isIE: function isIE() {
13004
+ return (
13005
+ /*@cc_on!@*/
13006
+ false || !!document.documentMode
13007
+ );
12718
13008
  },
12719
- Browser: {
12720
- isIE: function isIE() {
12721
- return (
12722
- /*@cc_on!@*/
12723
- false || !!document.documentMode
12724
- );
12725
- },
12726
- isFirefox: function isFirefox() {
12727
- return typeof InstallTrigger !== 'undefined';
12728
- },
12729
- isChrome: function isChrome() {
12730
- return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
12731
- },
12732
- isEdge: function isEdge() {
12733
- return !isIE && !!window.StyleMedia;
12734
- },
12735
- isOpera: function isOpera() {
12736
- return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
12737
- },
12738
- isiOS: function isiOS() {
12739
- return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
12740
- },
12741
- isSafari: function isSafari() {
12742
- var userAgent = navigator.userAgent.toLowerCase();
12743
- return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
12744
- },
12745
- isAndroid: function isAndroid() {
12746
- return navigator.userAgent.toLowerCase().indexOf("android") > -1;
12747
- },
12748
- isSafariWebRTC: function isSafariWebRTC() {
12749
- return navigator.mediaDevices && this.isSafari();
12750
- },
12751
- isSamsungBrowser: function isSamsungBrowser() {
12752
- return /SamsungBrowser/i.test(navigator.userAgent);
12753
- },
12754
- isAndroidFirefox: function isAndroidFirefox() {
12755
- return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
12756
- }
13009
+ isFirefox: function isFirefox() {
13010
+ return typeof InstallTrigger !== 'undefined';
12757
13011
  },
12758
- SDP: {
12759
- matchPrefix: function matchPrefix(sdp, prefix) {
12760
- var parts = sdp.trim().split('\n').map(function (line) {
12761
- return line.trim();
12762
- });
12763
- return parts.filter(function (line) {
12764
- return line.indexOf(prefix) === 0;
12765
- });
12766
- },
12767
- writeFmtp: function writeFmtp(sdp, param, codec) {
12768
- var sdpArray = sdp.split("\n");
12769
- var i;
13012
+ isChrome: function isChrome() {
13013
+ return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
13014
+ },
13015
+ isEdge: function isEdge() {
13016
+ return !isIE && !!window.StyleMedia;
13017
+ },
13018
+ isOpera: function isOpera() {
13019
+ return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
13020
+ },
13021
+ isiOS: function isiOS() {
13022
+ return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
13023
+ },
13024
+ isSafari: function isSafari() {
13025
+ var userAgent = navigator.userAgent.toLowerCase();
13026
+ return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
13027
+ },
13028
+ isAndroid: function isAndroid() {
13029
+ return navigator.userAgent.toLowerCase().indexOf("android") > -1;
13030
+ },
13031
+ isSafariWebRTC: function isSafariWebRTC() {
13032
+ return navigator.mediaDevices && this.isSafari();
13033
+ },
13034
+ isSamsungBrowser: function isSamsungBrowser() {
13035
+ return /SamsungBrowser/i.test(navigator.userAgent);
13036
+ },
13037
+ isAndroidFirefox: function isAndroidFirefox() {
13038
+ return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
13039
+ },
13040
+ isChromiumEdge: function isChromiumEdge() {
13041
+ return /Chrome/i.test(navigator.userAgent) && /Edg/i.test(navigator.userAgent);
13042
+ }
13043
+ };
13044
+ var SDP = {
13045
+ matchPrefix: function matchPrefix(sdp, prefix) {
13046
+ var parts = sdp.trim().split('\n').map(function (line) {
13047
+ return line.trim();
13048
+ });
13049
+ return parts.filter(function (line) {
13050
+ return line.indexOf(prefix) === 0;
13051
+ });
13052
+ },
13053
+ writeFmtp: function writeFmtp(sdp, param, codec) {
13054
+ var sdpArray = sdp.split("\n");
13055
+ var i;
12770
13056
 
12771
- for (i = 0; i < sdpArray.length; i++) {
12772
- if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
12773
- sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
12774
- }
12775
- } //normalize sdp after modifications
13057
+ for (i = 0; i < sdpArray.length; i++) {
13058
+ if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
13059
+ sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
13060
+ }
13061
+ } //normalize sdp after modifications
12776
13062
 
12777
13063
 
12778
- var result = "";
13064
+ var result = "";
12779
13065
 
12780
- for (i = 0; i < sdpArray.length; i++) {
12781
- if (sdpArray[i] != "") {
12782
- result += sdpArray[i] + "\n";
12783
- }
13066
+ for (i = 0; i < sdpArray.length; i++) {
13067
+ if (sdpArray[i] != "") {
13068
+ result += sdpArray[i] + "\n";
12784
13069
  }
12785
-
12786
- return result;
12787
13070
  }
12788
- },
12789
- logger: {
13071
+
13072
+ return result;
13073
+ }
13074
+ };
13075
+
13076
+ var logger = function logger() {
13077
+ return {
12790
13078
  init: function init(verbosity, enablePushLogs, customLogger, enableLogs) {
12791
13079
  switch (verbosity.toUpperCase()) {
12792
13080
  case "DEBUG":
@@ -12967,92 +13255,104 @@ module.exports = {
12967
13255
  default:
12968
13256
  this.verbosity = 2;
12969
13257
  }
12970
-
12971
- ;
12972
13258
  }
12973
- },
12974
- stripCodecs: function stripCodecs(sdp, codecs) {
12975
- if (!codecs.length) return sdp;
12976
- var sdpArray = sdp.split("\n");
12977
- var codecsArray = codecs.split(","); //search and delete codecs line
13259
+ };
13260
+ };
12978
13261
 
12979
- var pt = [];
12980
- var i;
13262
+ var stripCodecs = function stripCodecs(sdp, codecs) {
13263
+ if (!codecs.length) return sdp;
13264
+ var sdpArray = sdp.split("\n");
13265
+ var codecsArray = codecs.split(","); //search and delete codecs line
12981
13266
 
12982
- for (var p = 0; p < codecsArray.length; p++) {
12983
- console.log("Searching for codec " + codecsArray[p]);
13267
+ var pt = [];
13268
+ var i;
12984
13269
 
12985
- for (i = 0; i < sdpArray.length; i++) {
12986
- if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
12987
- console.log(codecsArray[p] + " detected");
12988
- pt.push(sdpArray[i].match(/[0-9]+/)[0]);
12989
- sdpArray[i] = "";
12990
- }
13270
+ for (var p = 0; p < codecsArray.length; p++) {
13271
+ console.log("Searching for codec " + codecsArray[p]);
13272
+
13273
+ for (i = 0; i < sdpArray.length; i++) {
13274
+ if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
13275
+ console.log(codecsArray[p] + " detected");
13276
+ pt.push(sdpArray[i].match(/[0-9]+/)[0]);
13277
+ sdpArray[i] = "";
12991
13278
  }
12992
13279
  }
13280
+ }
12993
13281
 
12994
- if (pt.length) {
12995
- //searching for fmtp
12996
- for (p = 0; p < pt.length; p++) {
12997
- for (i = 0; i < sdpArray.length; i++) {
12998
- if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
12999
- sdpArray[i] = "";
13000
- }
13282
+ if (pt.length) {
13283
+ //searching for fmtp
13284
+ for (p = 0; p < pt.length; p++) {
13285
+ for (i = 0; i < sdpArray.length; i++) {
13286
+ if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
13287
+ sdpArray[i] = "";
13001
13288
  }
13002
- } //delete entries from m= line
13289
+ }
13290
+ } //delete entries from m= line
13003
13291
 
13004
13292
 
13005
- for (i = 0; i < sdpArray.length; i++) {
13006
- if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
13007
- var mLineSplitted = sdpArray[i].split(" ");
13008
- var newMLine = "";
13293
+ for (i = 0; i < sdpArray.length; i++) {
13294
+ if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
13295
+ var mLineSplitted = sdpArray[i].split(" ");
13296
+ var newMLine = "";
13009
13297
 
13010
- for (var m = 0; m < mLineSplitted.length; m++) {
13011
- if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
13012
- newMLine += mLineSplitted[m];
13298
+ for (var m = 0; m < mLineSplitted.length; m++) {
13299
+ if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
13300
+ newMLine += mLineSplitted[m];
13013
13301
 
13014
- if (m < mLineSplitted.length - 1) {
13015
- newMLine = newMLine + " ";
13016
- }
13302
+ if (m < mLineSplitted.length - 1) {
13303
+ newMLine = newMLine + " ";
13017
13304
  }
13018
13305
  }
13019
-
13020
- sdpArray[i] = newMLine;
13021
13306
  }
13307
+
13308
+ sdpArray[i] = newMLine;
13022
13309
  }
13023
- } //normalize sdp after modifications
13310
+ }
13311
+ } //normalize sdp after modifications
13024
13312
 
13025
13313
 
13026
- var result = "";
13314
+ var result = "";
13027
13315
 
13028
- for (i = 0; i < sdpArray.length; i++) {
13029
- if (sdpArray[i] != "") {
13030
- result += sdpArray[i] + "\n";
13031
- }
13316
+ for (i = 0; i < sdpArray.length; i++) {
13317
+ if (sdpArray[i] != "") {
13318
+ result += sdpArray[i] + "\n";
13032
13319
  }
13320
+ }
13033
13321
 
13034
- return result;
13035
- },
13036
- getCurrentCodecAndSampleRate: function getCurrentCodecAndSampleRate(sdp, mediaType) {
13037
- var rows = sdp.split("\n");
13038
- var codecPt;
13322
+ return result;
13323
+ };
13039
13324
 
13040
- for (var i = 0; i < rows.length; i++) {
13041
- if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
13042
- var ret = {};
13043
- ret.name = rows[i].split(" ")[1].split("/")[0];
13044
- ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
13045
- return ret;
13046
- } //WCS-2136. WebRTC statistics doesn't work for VP8
13325
+ var getCurrentCodecAndSampleRate = function getCurrentCodecAndSampleRate(sdp, mediaType) {
13326
+ var rows = sdp.split("\n");
13327
+ var codecPt;
13047
13328
 
13329
+ for (var i = 0; i < rows.length; i++) {
13330
+ if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
13331
+ var ret = {};
13332
+ ret.name = rows[i].split(" ")[1].split("/")[0];
13333
+ ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
13334
+ return ret;
13335
+ } //WCS-2136. WebRTC statistics doesn't work for VP8
13048
13336
 
13049
- if (rows[i].indexOf("m=" + mediaType) != -1) {
13050
- codecPt = rows[i].split(" ")[3].trim();
13051
- }
13337
+
13338
+ if (rows[i].indexOf("m=" + mediaType) != -1) {
13339
+ codecPt = rows[i].split(" ")[3].trim();
13052
13340
  }
13053
13341
  }
13054
13342
  };
13055
13343
 
13344
+ module.exports = {
13345
+ isEmptyObject: isEmptyObject,
13346
+ copyObjectToArray: copyObjectToArray,
13347
+ copyObjectPropsToAnotherObject: copyObjectPropsToAnotherObject,
13348
+ processRtcStatsReport: processRtcStatsReport,
13349
+ Browser: Browser,
13350
+ SDP: SDP,
13351
+ logger: logger,
13352
+ stripCodecs: stripCodecs,
13353
+ getCurrentCodecAndSampleRate: getCurrentCodecAndSampleRate
13354
+ };
13355
+
13056
13356
  },{}],43:[function(require,module,exports){
13057
13357
  'use strict';
13058
13358
 
@@ -13086,6 +13386,11 @@ var mics = [];
13086
13386
 
13087
13387
  var createConnection = function createConnection(options) {
13088
13388
  return new Promise(function (resolve, reject) {
13389
+ // Set connection logger #WCS-2434
13390
+ if (options.logger) {
13391
+ logger = options.logger;
13392
+ }
13393
+
13089
13394
  var id = options.id;
13090
13395
  var connectionConfig = options.connectionConfig || {
13091
13396
  "iceServers": []
@@ -13216,9 +13521,9 @@ var createConnection = function createConnection(options) {
13216
13521
  function setContentHint(stream, hint) {
13217
13522
  stream.getVideoTracks().forEach(function (track) {
13218
13523
  if (track.contentHint === undefined) {
13219
- logger.warn("contentHint unsupported");
13524
+ logger.warn(LOG_PREFIX, "Track contentHint unsupported");
13220
13525
  } else {
13221
- logger.info("Set video track contentHint to " + hint);
13526
+ logger.info(LOG_PREFIX, "Set video track contentHint to " + hint);
13222
13527
  track.contentHint = hint;
13223
13528
  }
13224
13529
  });
@@ -13255,7 +13560,7 @@ var createConnection = function createConnection(options) {
13255
13560
  //WCS-2771 add playback delay
13256
13561
  connection.getReceivers().forEach(function (track) {
13257
13562
  if (track.playoutDelayHint === undefined) {
13258
- logger.warn("playout delay unsupported");
13563
+ logger.warn(LOG_PREFIX, "Playout delay unsupported");
13259
13564
  }
13260
13565
 
13261
13566
  track.playoutDelayHint = playoutDelay;
@@ -13648,7 +13953,7 @@ var createConnection = function createConnection(options) {
13648
13953
  localVideo.srcObject.addTrack(audioTrack);
13649
13954
  }
13650
13955
 
13651
- logger.info("Switch camera to " + cam);
13956
+ logger.info(LOG_PREFIX, "Switch camera to " + cam);
13652
13957
  resolve(cam);
13653
13958
  })["catch"](function (reason) {
13654
13959
  logger.error(LOG_PREFIX, reason);
@@ -13706,7 +14011,7 @@ var createConnection = function createConnection(options) {
13706
14011
  localVideo.srcObject.addTrack(videoTrack);
13707
14012
  }
13708
14013
 
13709
- logger.info("Switch mic to " + mic);
14014
+ logger.info(LOG_PREFIX, "Switch mic to " + mic);
13710
14015
  resolve(mic);
13711
14016
  })["catch"](function (reason) {
13712
14017
  logger.error(LOG_PREFIX, reason);
@@ -13800,7 +14105,7 @@ var createConnection = function createConnection(options) {
13800
14105
  localVideo.srcObject.addTrack(currentAudioTrack);
13801
14106
  }
13802
14107
  });
13803
- logger.info("Switch to screen");
14108
+ logger.info(LOG_PREFIX, "Switch to screen");
13804
14109
  screenShare = true;
13805
14110
  resolve();
13806
14111
  };
@@ -13832,7 +14137,7 @@ var createConnection = function createConnection(options) {
13832
14137
  });
13833
14138
  }
13834
14139
 
13835
- logger.info("Switch to cam");
14140
+ logger.info(LOG_PREFIX, "Switch to cam");
13836
14141
  screenShare = false;
13837
14142
  };
13838
14143
 
@@ -14704,7 +15009,12 @@ var audioContext;
14704
15009
  var createConnection = function createConnection(options, handlers) {
14705
15010
  return new Promise(function (resolve, reject) {
14706
15011
  var id = options.id;
14707
- var display = options.display;
15012
+ var display = options.display; // Set connection logger #WCS-2434
15013
+
15014
+ if (options.logger) {
15015
+ logger = options.logger;
15016
+ }
15017
+
14708
15018
  var canvas = document.createElement("canvas");
14709
15019
  display.appendChild(canvas);
14710
15020
  canvas.id = id;