webcom-reach
Version:
Create apps using WebRTC with Webcom
474 lines (473 loc) • 15.5 kB
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"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">21×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-no"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-neutral"> </span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral"> </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';
/**
* 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
*/
/**
* 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
*/
/**
* 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
*/
/**
* 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
*/
/**
* Path configuration for each event
* @ignore
* @type {{}}
*/
const paths = {
'USER': () => <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >'users',</span></span>
'ROOM': () => <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >'rooms',</span></span>
'INVITE': user => <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 => <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >`_/rooms/${room.uid}/participants`,</span></span>
'MESSAGE': room => <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >`_/rooms/${room.uid}/messages`,</span></span>
'STREAM': room => <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >`_/rooms/${room.uid}/streams`</span></span>
};
/**
* Object type configuration for each event
* @ignore
* @type {{}}
*/
const classes = {
'USER': User,
'ROOM': Room,
'INVITE': Invite,
'PARTICIPANT': Participant,
'MESSAGE': Message,
'STREAM': Remote
};
/**
* Private class to add support test methods
* @class _Events
* @ignore
*/
class _Events {
constructor(keys) {
keys.forEach(key => {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(/_.*$/, '')] || (() => <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>
}
}
}
/**
* @ignore
*/
export const reach = new _Events([
'USER_ADDED', 'USER_CHANGED', 'USER_REMOVED',
'ROOM_ADDED', 'ROOM_CHANGED', 'ROOM_REMOVED',
'INVITE_ADDED', 'INVITE_CHANGED'
]);
/**
* @ignore
*/
export const room = new _Events([
'MESSAGE_ADDED', 'MESSAGE_CHANGED', 'MESSAGE_REMOVED',
'PARTICIPANT_ADDED', 'PARTICIPANT_CHANGED', 'PARTICIPANT_REMOVED',
'STREAM_PUBLISHED', 'STREAM_UNPUBLISHED'
]);
/**
* @ignore
*/
export const stream = new _Events(['MUTE', 'SIZE']);
/**
* @ignore
*/
export const invite = new _Events([ACCEPTED, REJECTED, CANCELED]);
</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>