UNPKG

webcom-reach

Version:
603 lines (602 loc) 19.1 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/core/Config.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">all files</a> / <a href="index.html">src/core/</a> Config.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">48.89% </span> <span class="quiet">Statements</span> <span class='fraction'>22/45</span> </div> <div class='fl pad1y space-right2'> <span class="strong">33.33% </span> <span class="quiet">Branches</span> <span class='fraction'>9/27</span> </div> <div class='fl pad1y space-right2'> <span class="strong">52.94% </span> <span class="quiet">Functions</span> <span class='fraction'>9/17</span> </div> <div class='fl pad1y space-right2'> <span class="strong">50% </span> <span class="quiet">Lines</span> <span class='fraction'>21/42</span> </div> </div> </div> <div class='status-line low'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">20×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">10×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import media from './util/Media'; import * as DataSync from './util/DataSync'; import * as Log from './util/Log'; import cache from './util/cache'; &nbsp; const _flattenServers = servers =&gt; <span class="fstat-no" title="function not covered" >{</span> const _expand = <span class="cstat-no" title="statement not covered" >servers.map(server =&gt; <span class="fstat-no" title="function not covered" >{</span></span> const {username, credential, urls, url} = <span class="cstat-no" title="statement not covered" >server;</span> const uris = <span class="cstat-no" title="statement not covered" >urls || url;</span> <span class="cstat-no" title="statement not covered" > if(typeof uris !== 'string' ) {</span> <span class="cstat-no" title="statement not covered" > return uris.map(uri =&gt; (<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >{username, credential, urls: uri})</span></span>);</span> } <span class="cstat-no" title="statement not covered" > return [server];</span> }); <span class="cstat-no" title="statement not covered" > return [].concat(..._expand);</span> }; &nbsp; /** * The Reach configuration object * @class Config */ export default class Config { /** * Create configuration * @access protected * @param obj */ constructor(obj) { /** * The default media constraints. These can be overridden when subscribing to a stream. * @type {MediaStreamConstraints} */ this.constraints = null; &nbsp; /** * The id/element dom element that will hold the local video/audio element * @type {string|Element} */ this.localStreamContainer = null; /** * The id/element dom element that will hold the remote video/audio element * @type {string|Element} */ this.remoteStreamContainer = null; &nbsp; /** * The preferred video Codec. Takes a RegExp matching the codec name and sample rate. * Predefined values can be found in {@link Codec/video} * @type {RegExp} * @example &lt;caption&gt;Prefer VP9&lt;/caption&gt; * var myReach = new Reach('https://io.datasync.orange.com/base/&lt;my_namespace&gt;', { * preferredVideoCodec: Reach.codecs.video.VP9 * }); */ this.preferredVideoCodec = null; &nbsp; /** * The preferred audio Codec. Takes a RegExp matching the codec name and sample rate. * Predefined values can be found in {@link Codec/audio} * @type {RegExp} * @example &lt;caption&gt;Prefer opus&lt;/caption&gt; * var myReach = new Reach('https://io.datasync.orange.com/base/&lt;my_namespace&gt;', { * preferredAudioCodec: Reach.codecs.audio.OPUS * }); */ this.preferredAudioCodec = null; &nbsp; // Populate with default values this.reset(); &nbsp; // Populate with data this.assign(obj); &nbsp; // Read ICE servers from server DataSync.get('_/ice').then(snapData =&gt; { <span class="missing-if-branch" title="else path not taken" >E</span>if(snapData) { this.iceServers = snapData.val(); Log.i('ICEServers', this.iceServers.length &gt; 0 ? this.iceServers : <span class="branch-1 cbranch-no" title="branch not covered" >'None')</span>; } }, e =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >Log.d('ICEServers', e))</span></span>; &nbsp; // TODO #Feat: Add boolean prop to request permission on start, sdpEditor (for user defined SDP modifications) } &nbsp; /** * Assign new conf values * @access protected * @param {object} obj the new conf values */ assign(obj) { Object.keys(obj || {}).forEach(key =&gt; {this[key] = obj[key];}); } &nbsp; /** * The log level (DEBUG, INFO, WARN, ERROR) * @type {string} */ set logLevel(level) { cache.logLevel = level; } &nbsp; /** * The log level (DEBUG, INFO, WARN, ERROR) * @returns {string} */ get logLevel() { return cache.logLevel; } &nbsp; /** * List of TURN/STUN servers to use for ICE. This list will be merged with the ICE servers declared in the namespace (**_/ice**). * @type {ICEServer[]} */ set iceServers(servers) { Log.d('Config~set~iceServers', servers); <span class="missing-if-branch" title="else path not taken" >E</span>if(servers) { <span class="missing-if-branch" title="else path not taken" >E</span>if (!this._iceServers) { /** * @ignore */ this._iceServers = [].concat(servers || <span class="branch-1 cbranch-no" title="branch not covered" >[])</span>; } else { // flatten existing const _currentServers = <span class="cstat-no" title="statement not covered" >_flattenServers(this._iceServers);</span> // flatten new const _newServers = <span class="cstat-no" title="statement not covered" >_flattenServers(servers);</span> // Add only the missing servers <span class="cstat-no" title="statement not covered" > _newServers.forEach(newServer =&gt; <span class="fstat-no" title="function not covered" >{</span></span> <span class="cstat-no" title="statement not covered" > if(!_currentServers.some(server =&gt;</span> <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > server.urls === newServer.urls &amp;&amp;</span></span> server.username === newServer.username &amp;&amp; server.credential === newServer.credential)) { <span class="cstat-no" title="statement not covered" > _currentServers.push(newServer);</span> } }); // Re-group by username/credential <span class="cstat-no" title="statement not covered" > this._iceServers = _currentServers.reduce((previous, current) =&gt; <span class="fstat-no" title="function not covered" >{</span></span> const {username, credential, urls} = <span class="cstat-no" title="statement not covered" >current;</span> const idx = <span class="cstat-no" title="statement not covered" >previous.findIndex(s =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >s.username === username &amp;&amp; s.credential === credential)</span></span>;</span> <span class="cstat-no" title="statement not covered" > if(idx &gt;= 0) {</span> <span class="cstat-no" title="statement not covered" > previous[idx].urls.push(urls);</span> } else { <span class="cstat-no" title="statement not covered" > previous.push({username, credential, urls: [urls]});</span> } <span class="cstat-no" title="statement not covered" > return previous;</span> }, []); } } } &nbsp; /** * List of TURN/STUN servers to use for ICE. This list will be merged with the ICE servers declared in the namespace (**_/ice**). * @type {ICEServer[]} */ get iceServers() { return this._iceServers || [ { username: 'admin', credential: 'webcom1234', urls: [ 'turns:turn1.webcom.orange.com:443', 'turn:turn1.webcom.orange.com:443?transport=tcp', 'turn:turn1.webcom.orange.com:3478?transport=tcp' ] } ]; } &nbsp; /** * Resets configuration to default values * @protected */ reset () { this.assign({ constraints: media.constraints(), logLevel: 'ERROR' }); } } &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Wed Oct 11 2017 13:49:15 GMT+0000 (UTC) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>