UNPKG

webcom-reach

Version:
474 lines (473 loc) 15.5 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/definitions/Events.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/definitions/</a> Events.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">33.33% </span> <span class="quiet">Statements</span> <span class='fraction'>8/24</span> </div> <div class='fl pad1y space-right2'> <span class="strong">0% </span> <span class="quiet">Branches</span> <span class='fraction'>0/13</span> </div> <div class='fl pad1y space-right2'> <span class="strong">16.67% </span> <span class="quiet">Functions</span> <span class='fraction'>2/12</span> </div> <div class='fl pad1y space-right2'> <span class="strong">31.82% </span> <span class="quiet">Lines</span> <span class='fraction'>7/22</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</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-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-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-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-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-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-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-yes">21×</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-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-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-neutral">&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-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-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-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></td><td class="text"><pre class="prettyprint lang-js">import User from '../core/User'; import Room from '../core/Room'; import Invite from '../core/Invite'; import Participant from '../core/Participant'; import Message from '../core/Message'; import Remote from '../core/stream/Remote'; import {ACCEPTED, REJECTED, CANCELED} from '../core/util/constants'; &nbsp; /** * The events supported by {@link Reach#on} * @typedef {Object} Events/Reach * @property {string} USER_ADDED Fired when a new user is registered * @property {string} USER_CHANGED Fired when an existing user logs in or out or changes is status * @property {string} USER_REMOVED Fired when a user is unregistered * @property {string} ROOM_ADDED Fired when a room is created * @property {string} ROOM_CHANGED Fired when a room status is changing * @property {string} ROOM_REMOVED Fired when a room is closed definitely * @property {string} INVITE_ADDED Fired when an invite is received * @property {string} INVITE_CHANGED Fired when an invite status is modified */ &nbsp; /** * The events supported by {@link Room#on} * @typedef {Object} Events/Room * @property {string} PARTICIPANT_ADDED Fired when a new participant is added to the room. Does not mean he's connected but that he's invited to * @property {string} PARTICIPANT_CHANGED Fired when a participant changes is status (enter/leaves the room) * @property {string} PARTICIPANT_REMOVED Fired when a user leaves definitely or is banned * @property {string} MESSAGE_ADDED Fired when a new instant message is sent to the room * @property {string} MESSAGE_CHANGED Fired when an instant message is edited * @property {string} MESSAGE_REMOVED Fired when an instant message is removed * @property {string} STREAM_PUBLISHED Fired when a participant publishes a stream * @property {string} STREAM_UNPUBLISHED Fired when a participant stops the publishing of his stream */ &nbsp; /** * The events supported by {@link Invite#on} * @typedef {Object} Events/Invite * @property {string} ACCEPTED Fired when the invite has been accepted * @property {string} REJECTED Fired when the invite has been accepted * @property {string} CANCELED Fired when the invite has been canceled */ &nbsp; /** * The events supported by {@link Remote#on}. * @typedef {Object} Events/Stream * @property {string} MUTE Fired when the mute status of the stream changes * @property {string} SIZE Fired when the size of the stream changes */ &nbsp; /** * Path configuration for each event * @ignore * @type {{}} */ const paths = { 'USER': () =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >'users',</span></span> 'ROOM': () =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >'rooms',</span></span> 'INVITE': user =&gt; <span class="fstat-no" title="function not covered" >{</span> <span class="cstat-no" title="statement not covered" > if(!user) {</span> <span class="cstat-no" title="statement not covered" > throw new Error('You must be authenticated to list the invites');</span> } <span class="cstat-no" title="statement not covered" > return `_/invites/${user.uid}`;</span> }, 'PARTICIPANT': room =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >`_/rooms/${room.uid}/participants`,</span></span> 'MESSAGE': room =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >`_/rooms/${room.uid}/messages`,</span></span> 'STREAM': room =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >`_/rooms/${room.uid}/streams`</span></span> }; &nbsp; /** * Object type configuration for each event * @ignore * @type {{}} */ const classes = { 'USER': User, 'ROOM': Room, 'INVITE': Invite, 'PARTICIPANT': Participant, 'MESSAGE': Message, 'STREAM': Remote }; &nbsp; /** * Private class to add support test methods * @class _Events * @ignore */ class _Events { constructor(keys) { keys.forEach(key =&gt; {this[key] = key;}); } supports(event) <span class="fstat-no" title="function not covered" >{</span> <span class="cstat-no" title="statement not covered" > if(!event || typeof event !== 'string' || this[event] !== event.toUpperCase()) {</span> <span class="cstat-no" title="statement not covered" > throw new Error(`Unsupported event. Use one of the following: ${JSON.stringify(Object.keys(this))}`);</span> } <span class="cstat-no" title="statement not covered" > return true;</span> } toPath(event) <span class="fstat-no" title="function not covered" >{</span> <span class="cstat-no" title="statement not covered" > if(this.supports(event)) {</span> <span class="cstat-no" title="statement not covered" > return paths[event.toUpperCase().replace(/_.*$/, '')] || (() =&gt; <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >null)</span></span>;</span> } } toClass(event) <span class="fstat-no" title="function not covered" >{</span> <span class="cstat-no" title="statement not covered" > if(this.supports(event)) {</span> <span class="cstat-no" title="statement not covered" > return classes[event.toUpperCase().replace(/_.*$/, '')];</span> } } } &nbsp; /** * @ignore */ export const reach = new _Events([ 'USER_ADDED', 'USER_CHANGED', 'USER_REMOVED', 'ROOM_ADDED', 'ROOM_CHANGED', 'ROOM_REMOVED', 'INVITE_ADDED', 'INVITE_CHANGED' ]); &nbsp; /** * @ignore */ export const room = new _Events([ 'MESSAGE_ADDED', 'MESSAGE_CHANGED', 'MESSAGE_REMOVED', 'PARTICIPANT_ADDED', 'PARTICIPANT_CHANGED', 'PARTICIPANT_REMOVED', 'STREAM_PUBLISHED', 'STREAM_UNPUBLISHED' ]); &nbsp; /** * @ignore */ export const stream = new _Events(['MUTE', 'SIZE']); &nbsp; /** * @ignore */ export const invite = new _Events([ACCEPTED, REJECTED, CANCELED]); &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>