-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcoverage.html
More file actions
executable file
·378 lines (331 loc) · 477 KB
/
coverage.html
File metadata and controls
executable file
·378 lines (331 loc) · 477 KB
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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
make[1]: Entering directory `/home/kal/protrada'
/home/kal/protrada/app-cov
Registering Controllers...
Registering controller '/grid/row'
Registering controller '/grid/table'
Registering controller '/panels/protrada-video'
Registering controller '/panels/domain-details'
Registering controller '/panels/advanced-search'
Registering controller '/panels/export-data'
Registering controller '/bank-and-cart/panels/checkout'
Registering controller '/bank-and-cart/ajax'
Registering controller '/bank-and-cart'
Registering controller '/notifications/generic'
Registering controller '/exchange/panels/place-bid'
Registering controller '/exchange/panels/watchlist'
Registering controller '/exchange/panels/backorder'
Registering controller '/exchange/panels/make-offer'
Registering controller '/exchange/ajax'
Registering controller '/exchange'
Registering controller '/user-settings/ajax'
Registering controller '/user-settings'
Registering controller '/home/panels/import-domains'
Registering controller '/home/panels/list-forsale'
Registering controller '/home/ajax'
Registering controller '/home'
Registering JSON-RPC methods...
JSON-RPC Method 'notifications/f'
JSON-RPC Method 'notifications/'
JSON-RPC Method 'view/modules/exchange/panels/watch'
JSON-RPC Method 'view/modules/home/panels/import-dom'
JSON-RPC Method 'view/modules/home/panels/list-for'
JSON-RPC Method 'view/panels/protrada-v'
JSON-RPC Method 'view/panels/domain-det'
JSON-RPC Method 'view/panels/export-'
JSON-RPC Method 'exchange/'
JSON-RPC Method 'test/ping-'
JSON-RPC Method 'user/update-s'
JSON-RPC Method 'user/check-l'
JSON-RPC Method 'user/get-s'
JSON-RPC Method 'user/reset-s'
JSON-RPC Method 'user/reset-ses'
Server started on port 8181.
info: socket.io started
<!DOCTYPE html><html><head><title>Coverage</title><script>
headings = [];
onload = function(){
headings = document.querySelectorAll('h2');
};
onscroll = function(e){
var heading = find(window.scrollY);
if (!heading) return;
var links = document.querySelectorAll('#menu a')
, link;
for (var i = 0, len = links.length; i < len; ++i) {
link = links[i];
link.className = link.getAttribute('href') == '#' + heading.id
? 'active'
: '';
}
};
function find(y) {
var i = headings.length
, heading;
while (i--) {
heading = headings[i];
if (y > heading.offsetTop) {
return heading;
}
}
}
</script><style>
body {
font: 14px/1.6 "Helvetica Neue", Helvetica, Arial, sans-serif;
margin: 0;
color: #2C2C2C;
border-top: 2px solid #ddd;
}
#coverage {
padding: 60px;
}
h1 a {
color: inherit;
font-weight: inherit;
}
h1 a:hover {
text-decoration: none;
}
.onload h1 {
opacity: 1;
}
h2 {
width: 80%;
margin-top: 80px;
margin-bottom: 0;
font-weight: 100;
letter-spacing: 1px;
border-bottom: 1px solid #eee;
}
a {
color: #8A6343;
font-weight: bold;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
ul {
margin-top: 20px;
padding: 0 15px;
width: 100%;
}
ul li {
float: left;
width: 40%;
margin-top: 5px;
margin-right: 60px;
list-style: none;
border-bottom: 1px solid #eee;
padding: 5px 0;
font-size: 12px;
}
ul::after {
content: '.';
height: 0;
display: block;
visibility: hidden;
clear: both;
}
code {
font: 12px monaco, monospace;
}
pre {
margin: 30px;
padding: 30px;
border: 1px solid #eee;
border-bottom-color: #ddd;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
-webkit-box-shadow: inset 0 0 10px #eee;
-moz-box-shadow: inset 0 0 10px #eee;
overflow-x: auto;
}
img {
margin: 30px;
padding: 1px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-webkit-box-shadow: 0 3px 10px #dedede, 0 1px 5px #888;
-moz-box-shadow: 0 3px 10px #dedede, 0 1px 5px #888;
max-width: 100%;
}
footer {
background: #eee;
width: 100%;
padding: 50px 0;
text-align: right;
border-top: 1px solid #ddd;
}
footer span {
display: block;
margin-right: 30px;
color: #888;
font-size: 12px;
}
#menu {
position: fixed;
font-size: 12px;
overflow-y: auto;
top: 0;
right: 0;
margin: 0;
height: 100%;
padding: 15px 0;
text-align: right;
border-left: 1px solid #eee;
-moz-box-shadow: 0 0 2px #888
, inset 5px 0 20px rgba(0,0,0,.5)
, inset 5px 0 3px rgba(0,0,0,.3);
-webkit-box-shadow: 0 0 2px #888
, inset 5px 0 20px rgba(0,0,0,.5)
, inset 5px 0 3px rgba(0,0,0,.3);
-webkit-font-smoothing: antialiased;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAABmCAMAAAAOARRQAAABelBMVEUjJSU6OzshIyM5OjoqKy02NjgsLS01NTYjJCUzNTUgISMlJSc0NTUvMDA6PDwlJyg1NjYoKis2NjYrLS02ODkpKyw0NDYrLC04ODovLzA4Ojo0NDUtLy86OjwjIyU4OTosLS82ODgtLS8hIyQvMTEnKCooKSsrKy0qLCwkJSUnKCkrLCwpKiwwMjIxMzMqLC0tLS0pKissLC00NTYwMDIwMTQpKysoKSovMDEtLzA2OTkxMzUrKywvLy8qKyszNTY5OzsqKiw6OjswMDExNDUoKiozNDUvMDIyNDY1Njg2Njk5OTozMzU0NjY4ODkiIyUiIyQ4OTkuMDEmKCowMjQwMTErLS4qKywwMTMhIiMpKiopKy0tLjAkJScxNDQvLzExNDYyNDQmKCk5OTslJig5OjskJSYxMzQrLS8gISIwMTIoKCk1NTUlJSUnJygwMDA4ODgiIiMhISI8PDw6Ojo5OTkpKSojIyQ7OzsyMjIpKSssLCw6Ozw1NjlrfLakAAAg2UlEQVR42jR6i3ea6rYvPgANIAhVXh8WvkQlioUiFlFcBtAmoiRNdzxqu9p0J7vrdK29zuPeex77nnvO/35n1r1ndHRktI0jTOacv/l7lCBK5UqVpOha/YxmWK7BC4TQFKVXrbYsnimqxuuMVlOQ0XltWjUdCwRJ1M+tC1KudOs9q6+da2adUewG0SC0SwELfHtgDds93VEuydEbl3QMWeNoYkR7b/0x1ZRobGI3mLwzAhePqTAwhg6aogjNsGy7/jwQ4rkdqe7CWLxF8k9LfMVFyRS7VJqtkrW8Vt/bkR8FZJao16ipknbC3Yw2lM7laO6HBEOadEZ2tpf65c4v8e3u7FyU6qbiNNyCuzXZ6pawgnwgmrpTT/Q7w2EZmiIJ0dzWDI7mhQ80IfRnMu2kzA5r5r1pIFoia+/d93HRYp1GV8TbrkWoU/+jdI0Ff6yGwTjT1Hn8J+8m1rKpGiYPuNiHnMtNMIv+zpsk84MYTNW1/+DpwXLvckdOCMYowVNPREe0QlM8xRHXXFhcNDzupwsSmb5pH+0t0RP2Qk+QtI7F1Qm6JRC6ZPBtPq/dq/kH+jxtCljn9TIpW6rQIgmSVyj6lPICIw4N/taka41PFUInth0je9+jO6Kt1G4/a7V2LEgG02B0pHVuCZrgltSKMuIl5SyufUv9mYuQi+mFgzbBEtFo2g+Dh4sSTrLNu8JPh00sQydpb00tqXBvqRN7Q7kqzcnIxCGnvZt/WmJacoOEO6Dcn8Qre03pOCSQxbMOXUuDNx9SxuLz4W1I18gvjViQ67zV0rxdWL8Te/TQkuo8STS41DR48W7L6YP2uWIqiUV8rd6Gbf/rnegKZeG8TpAM6afhGze9JAOxbLjsnUXEbrZ9vLYd7MT32cPF5mKKxmjy7huaoD9n62GOxni3iIJwv0IzZAZjdZkUtolCNLVfYZNaquFjGszVVf+J0vrz4CawoKdHnOzb0NMH7CDBOybfYNJ4rfeMyFNjkFYVTzMFs87rnPGXLUOeNKRVc0LnU7/UIgelzsy3CMuth0YfvnY0wsD3vODUL3eJcKqHQpm8yM3XZQWJxO6Un9iYloyyLpOwN2obHy6W6gbpcb44XmyC+mg+itAcaprGcrwZCqMj/GmtKn0zPvpTz/Cv1dw21XwP3cRupg3H3MF/S71eTKj1YrdwKdc2Mw0fRmb2sFf8lW3aU6JbIZSEPqvXvjM7G/aApyXlXeqKfMq0g/Su3rUGJPSPrtGElgknrZM3xUXqsAP6zMCNVn5u8aJnSNpJv2uru7t2jfRziW2+GuhqfldUNbPk71olwo+46ePUo1U3WKk/e5YK07F/wGRgcpODmQnIlVeHCWBE4puBi2jq28UKpqiN1/4UOrGz59TNYrrQHtd+11sG40BGD+pXdelNqGOg4NXe8W4eacJV/NS9/2Umtym6WQqveqR9xdCMElpxnbkalM4Vf9uaEcWZaKdyibEIjWKxJZPN95niCL3GiaXyssIrHxoLkqkzLCXULN46/f2h3tQJgyip+Tk9EAjJ9aJshq7t8X45aowSKspMSvPf7r9R8yxNptIaHS5ozuEm6luPDApugyNP8OaqiQ4BjaequXA54SLC83eHIY2r+CZp4409Xqw8Aa2oI7XkCrQi+in0w5AqF/kLNrcUz+qkl/lAobY1jSnx5OJNhyXIz3qfNFlXc0TKaglNwdWkWYt9QQ1Kr6W8zue21iNrdJk+N5oCr2O9nEtWKC7IS5J/zdDEYrmnAYfg6agCy+qcgz7ZofeDc4PbUWSvkshWuAc7OjiUyLkj+RAtdlwXJcjxdpkTTHDhK8lBCi8+JtvDVL1W6elmOM++YS0LuSlaP1oUvAeiW3cFnvTr8EbTz1tsSMYdGeZe40sRWu5uAfj7q+ZoKv2FNQ0p5XY1lmlcigHZqTPpabufEVrNuNPi165w3uCVQJHyJqmSJ7ZHnguqwtCmwViIJijj04ba2JNYtB+yORf5gg1/9t9iw4vUpeqiunSAbf+IBdj/b+iG2qrHvuNP0Vd/+ThVZT/lrvHYjjgDbbyxaqgHNM2uhxa1GW3UedZYhMMwM4mQhltouK+IV4NdbIQNM+8Yv311RZk9kT4tiYR4LkyFcuPpdcjuhUuFqBAWRZa11lcZ3gEBlXywsNhrt+plISZP5DlsV9l4EgY6J3yZPTUcMrgaWAT3oI79eSbGEbcJpr6BD8kyDiVt+G0/hXosQN4NFXKlfWIfsIs0BHODVok1/IGnKFHJYIquh8Xo+2+bkQNTGgWmN/fZ0Y33LSj6lr1GyV7mWIKg7ZTRZPGuhF/zjRNcQ1UPtSYgnWQxSs0yrVhwNDcdGMNSNe2JT3WuzbAM3HykyAajS3Uphf6STKEqxLas9EnmnhA/lyj9Uj+JoY7SVgVmGLl46Rm2u98sbkap2lzAdKBG4r6LgulQOSSjQv1GWdQ0jtDUK/mAaqM1Uqjpu4k3Rvfvxv7YTxLSK+wN3E5jVIzmF23uZ7hiH/sVP49D7tvoKp4S8b1LuvRlivVB/algbhcFITYVXvDpLzpDfplR2uD5V4XJFxpjmIpLc9Y5sB2TpBRix7Bme6GZIq+06v3XzNeTcA4obQIKxrnT4C2JpOqD92dbmSX8MGazly5EsZVMvSU1f4RZwyu8iQXbVdeLlZrjuTT1jrY1uk5c7iZ7RsvhhluqAkq4JpVQAg7RJFtSu+xgJ8Pv6O1j5DkLxT8mkbfyRW5DrQmG7hiDIjCgBsADbjuof6YHLGeV6a5Q1Smx9joUXPpdaaDx97A/Wq00oJkdR7ZYuQRfS533JtxO1erduqWOYIt3wh0wpbLuCNIYkwxbswbikCUu2CDCS+Q+7rgVtfRcm+SOcdKPRlZ/rE7wNVUEE39KTS5uvUKN1PUnkloPkyzhyGQ8qkouEjJ3H/VXdqG6asSRiw3ecMlBvDDt8dDhBHXMwZ2Cajzjr7/76T+IavqPYvz6r7//E/3X3+N//h/0QozbjPgPiir69P/8X3/9F/yv8b/827/++98WItPu5/Hvwd8YPf5bp/2/lX/T/+Of/0MJ/lYTa+L/Ef+d9vN/3/2T6P/+jyTzu/evf6U7vxN7B6pJkRtAF6jUr8I+P8RsP/ptGhfqFk+pQ/DgAy6NJtRYJdXmp4gK7WLqLKJ+MaKhGjOojvL+SnIWrkpy0SLHDe4QuyNzaEA15mLMCcmE8Em+4HdOihW4/ZWuppJEmzeAwcDtv7MuLc9y2V5atvxXNe3S4DUMt5/Qy2LM9kSYKiVWBuKlfp4nxTntpuW03JbIlkiRvBXmT23g1I2OYe6IizUHPIq6zm6mbfsbteKmi/sg9J+ocQBMctGFO7iljo8TPN+z3jxw4do+ZwfqoR9dkNTKHyM305GpTkfhcHexVkPVGEbUOjuo9f0UMPHBFlGEx0SLvJvVRKTwW7PSew5oPme+E42+frJa9cGt2njS3dK5kIif2eYbhuSEQXEqMVfUjhGIuin0G0/W5ezJyJQy3SpMLai4M0JUWb5u1k9tny5bd1pPwYBpQuDCXZl62xg4CdVEAtflXHs6JKmP/pH6mOl796Lgopj0o8d5kKh00hxG3OSdEE/QBo9Hgr8JJqAeLDwJohG5j/DGh61Rc/+tf22/8kEnxHNCEjo0ElvvGfESZkqmz2BDcKV1H1buSkhkdg7p1IMGs2s17nYjpblrWuE2K9WEO/hcRp5e9oOF/QBmOaDtgil+oaU6szPrdwW65fOB0KUTsVUn7LFU7J8e6cxJIl9+FHw5MQMzuQJ+4oxMH3iW/5GK+hWuG0T+gTLs+fAjdtUd58TmIUq04EeyRCYCjkldow234aIgR5bqwrtZosZ+6YEqAmDqatJ9lWasz4IquKALPtd92hGI3Z2BdzzZue+REl1Om4DIWD+RrtUTOJLI+S0jHowXXdAxsGLSd40zYNuEUlOGhrwL6c7tcOtUOvpJCP7QBQS19H+GvZn05ewjlVLz+IGKoC9TyfQjLMBNmXCuqqtTdOSukZW48B0HqgSTCBrBnlFvF4CG2Su7yFzqmJFURK3UmTT3ru050r0ptUpMilYnBJWfl2Bv6kPlUuE1kxxpdzui9AubsR2N2boVSu81OulAwBqoSr1LZ0LLYOomyZHmjqnXlP72s8LnDouEJjtodBvdHaG1jMySYO7crWd90MpCRyCG14vb5IE7Arupw/y/RcCm/Tm3zK6zYj8PYNaGldiUfkB/LHWcmf2lVM+mwyU27a0qq2tscrQ/vzBjN26DnntIrOyGizzXK35yKQdYnUABkyN4saz3WD/viF+eCcsXnIajdWYJWaYHRstIis9CS+tqnFGmz2j5uzfr3Z4prqgK4XOT/PyftvjZqIm8lhkfxJ7Ol3CJF1piYBGAG8wtAk56Drw1YwmOpcz+NdfkSpSLplRXLXHL0Rquj6YW/gabqgK7Dgr6NwtH0B/AN7XrN+MVJ6AmXmUuqmQulrNNYPmH0RoDogydOKLo/QbfYNARSQQKISRCzRXU+q9WWJFL3LZW6u34CkeG97xC0NNGaJ0bvK6SnZS3zPskr5EtuCgjMWR5o2x5BqhKmDWJPRe7JMEOyRb5uUKlHaGVtq5ivSOaSliSXp9SQm2qk8MRJh10MAp9QQ2H5t59J8rjiwSZtoIfMGjlLPVNdYl/LBR0AO6WLGDmkLkIPRE45Y9MftdAK/yNu1Hn6tzOQTesgQ+8fSzB19wO91vCnO23vOWQdwJ63SJrYjdfKFW6W281PKs2k8iT9ai1cgJ4sa3xqdvmtxR8/+D1B8AKc2u+6JftryRhMWSQtoSBgIyyQGyxcnELuAasXN12oSriU4RMz1DD6RL0TSV+om7i1Yt+jEE/jnawM8cX/UhN4nkiv/w9eALrzNhXuQfOzFL0Fi6SjF7/4Qn8rLYBoa85cvgAnkCEBP+HPbEnquVXCZsMS/yzYw2Vru60P/+nJPYKkzZFjmbykzUoEqV836T5q3fP/L383dF82tx18/AZgZczMAgyeWYKmSZIqtHL+e+O4ZRcq9VI3g/qPeCoiK4pcgEqdbS0S/Be54sbVQOuJVPNBblIghzeasNu7h/g+Sz1IdhI5lCwq1nUb3Ji4OCIcqQZqtqJ5w7rXrg/DA9IgVmEGhDgGecEwnCTHffXcXs0V3OCEVzYDKS1vp/oX+ng+6XVU86UjA6FMO2RXOOOrqY1GgPvrAk9HV/BXtCu5RuwF8qgdGDLsBcui4E33ymdBip1X8uKyhIWT8qNRDsXz+gvO9UiEC0d8RG4Tf2x8H4slljgHtCBcxHLTWOYJm5H/fCPCzOgf9qgOUxTRZ0Pc6ha5yLuLVT9ntvIa6gacE99mCovdUumTQdRP4RPsS9129eEe2uSvvGh0bV4Y3QPPhPZMqhZWSMa5R0Hc1SGO4IVOQc0FrirlibTVfKRrYkD8kz3b+X65/QkUNaZdrdl3mCap0Hf3YcCw/LiouJYNbqz88UqeDYv93yO7vvXtgl4XCyAO4ODkY6W+83+LZU//p3/zXNGGrUKClCiOnL27iJZbNWDF02XXAOeFlB7IaADoMH1Yqr+UP9biyZDEa/iJt4MDeIz6GKTdLVBfWGVtRN4fdT2rgReX8UXwF2zOrradm4J0nyTgdPnai3RvzpZvCKDUqjOwD/QA6EDaMCLewX6QWYVnHY1sx1bd8ovYnPm1ZvPH+rE20lWjOCnZ66/xDt0QAl15FjfBcZp+i9OU0RNPQ0t3x2pSNWo8eiYudwsnuP1Hq6iH1LJCJynkYsfgJ0p3pF6SoQk2l+jqE8CPk+ziGJRSKjs+W5AO185umPdkYzlK4wl7TC9NxyyDP7ZoyYVoXiuS6SjnInlLWrwz1i8bGTKXX0AVQWkSfIlglW3zRJRJ8bg5VgE6ZEnqNu9B++0GNQvDQJvFize4ESNKBJP+8vA3LM4AX5SIBq08Mob+7QMTCZx4nwP/64+4BnlZC+8WtlP/CXw6t1PwMwkJ3jhP1FiXLhDF/3I6FGUzO2DSi9ABxKyyL9paZxSEz40ZCPQToDAJu1959k7QdbVxgB4icsu2s4zsTPJhcEDo+N1GX4zSk/wriRh8AqwL62972i9HJHd1ydaLXVzvKvOfGGw5RVcUVMiKXFH4APdkQU/dc5BX0YfKTNZYXCW9mb8bc8mufoQP6BbdQmT99ZjoYfr/go4TgQX9IDgztim7wyFeGMfbNaeqj8Dzs38pgcqwSv2hbqB3oSGKWKy+sesY7p57wAHldqE6NDudk/W7s/zjrK4rZFlFvaGxnSZdHbc1y47qDN6xkoK8O3bfr2j41dlJZ71rB4dlDqapPFa8N6xBrprUdtenUCHwxKNhw1uuTBh+9uU45k4REpQABN2bAO9DSLqoIL26gNroWgup5pUMxHUNSq4Gyz47vBPvilpo5f9OYI2ddAqTqmnxXERxQJ3UK8fHbVE9HagHi3+tqNRoNsArdmAxHA5LwtQo9ZAaNKUTljnokljo2x8scqVpEEIPc01fPCdHOCg0DeWBz8D5TVAAfx8aRH5X2ZYNI3ebKDZdeJ+oBDAxmRqJ30Eh2/DaeAy5diVNMpEDmXiPDsGTzBLXy8eVDdJoIafgx/gxMyQi454QrW56nCyeELgSuNNEmYkflF+t3CZQOVRWjKhIuCclmQSlAXT3+4JGG75B4t/5hQ+ldMP4LsAW6z3XmU6IJJwpnGVnsgUZhoY1fZlwTR8wSU7xRejf2uCx9Z5trVTRRJP9KnEb134dEieil6eCOGWgboI7xsqsqM99jfJLTePjygKlH2CVxxsse9QRzTBFjD/Kjqitr/CCTBt/SJ6nLxz7cKP9pFqBpp0lN5y+adKNsZjrPuroemZauH9aTTFD3EKHW8S55XBLFQAt1jgxTQCTwxmx/JyfsZDN1RroN3VaxpSenpIX7K+ZbL8VdlQDcI4Cbzg3QJLa9yVqNxUelu+EtxLVqeekaAvSJkO6sSVqbUajxqhKshNpvZqoeApF0k/0P0ikkwUcbdwc4A1ejN7Oo0O15kG7hTMoK3hZRBCX7YYeLW0wvcXx/18n/u37yLgzBYVBUvORGli+sfRcX/74uD6P4hq+7xu54TlWJLFzT63uwUDwuEDdOjJQqx7JV+ZjaEAPi7t0MMrR4Q8Rkf18uxD6RK0RKh0hL8YU+DeL97i4pa5ZSyAfXKwZRS/8gXcxdZXm62RBDj8U3sN8x95b5PpPs/mCBKYvpaA50pN5Ct/499AFTtwQ5vgeSh+NHrKIi4NVpwM/XzRaNfJD856lPE6M21zWPguFsH7jbLVyEDfRmt4VwrhCJ5VTYmcSPfGgO5clfN+vbaDZ7sakU5+2vZ2WCDY031NxJarVytfDDVtiafcTGO2rJ/taoL3zChN2qmjxofczTOYQPPVQPh0JVtYgdUQINcSiNEEy58UdYXX1MpWUCEBx7LbcGtAm8XWRQTVOaoV3ySri4RShhs/B/0m4jX6OAwXOvcA09bNSG4czEGv/Wey6V/jbTCNTW6awXdNTcA1GsPe1E9fZdGl7R0vyoVpIdJtfC6d32NNErrvq/R+d65VG+YOwRXppXxOCYyGNSf1K3x6VxAW/vtz4EC1SgCOSPdN62sLsoIzuDfg8GwZAbquVO8HIuFP/ToVoeUB7nnwMF35a1wK1tI6fkrqFKhQdeJpwyls0pIy8AZde3/6LUUbFaYJthyUJSU/kqDXTLQElnn0Jr4B2RVghNrmNmoEn7pXIeshPguXVsvwoTdmClq49JJU3LWhHyWTrJL9bRP6VKv3tZoA/th77p5Jw++OEENvyvWy/pNeExiDUVQaXIRGh8xySZTI36yueFaSXo1uJY0RnXYgEOoWWOJHeaVuX/bGNhHsh2yinznl/++NJcE9j6fBPRcBdq9hb8awNw8U7Bl6GM7x69EDOIIbX/npZ++amlHR9L/35mE/2Ss4gb0xCcY4VyTFLRE796vHysLAamqcyO+aFQyJIDBNslbH2/MrAvZiSEIedc/cqjmv4fbda2pXbv+F5a2szSsdkm9noiNURXt8edUhGUF6fSZWd1IJaXKFwD+49R6eCXD4Bkef7j9tRtNMVgW8BhRz/Qpy1TmeYk0doyjZoJSbePOReVHgkFsCFuQJ+Lgc4BxeAsK/cOiNDRmdNw0ctYhn/nQ498dYI5znzGLoJi1rav7Cn88rL3wLePVtDK5gl77Tki3gHEsIAQ2+IKgarj7Y8W1IQzV5V9N+0TjLqbg68WfKcOmBCOj3JkwJhVIkwDhc+JorXuZEPMEh0vvH3x7iqf+VAwXgd4diZiaJD1zHL9Snx6Wfg4IugreyhabQkcir+y5XgDtdx3Avs7lkeeCBwDvZoTUCXx5QrZkcEqWfYEiEYRs/EphmRALSNGR1Iclgdr5VFoELpzF4++f35w3/j0t5ucW3n2ch4PQCLuUXupsPRR7UA5FjSKrMtPcKAZJfagO4lGE7FH3YKMjorpK0ZxAv+i2JkJhtAMWWWFej4RhPR/cJ3DxwocCvXDi4SGZU4cu+K32XndiFWgopAl+0GApcwf1XvymJcFs39jExIBO4yUjU9MExBLQYc9H+W7+IgdESPRpciT+rKZPebVtaVq+1GYO/5xTAL3HASjNTGIgMvdjWbgc7JvdE1zIFpuC0U9ESiZyzBixzxWxj4Kwh8My34q+FK3KNLtmsA1qyrmKSNQOXCPUZd+ONelBTvFoUI/CYsqa/RhtKiyMf2CgSFqEPk59Y3uqnlZ8gFpswfSYyko23yVZYxzKGxGm49Zqxg1l8oz5Ra9XaRwHkuxepmgyhm0SoNy2KlbcEqK+9QqS9PNx9Ihm9U7gsR55SSJ1FBDNnkuWKxIZ0SDpXuOGwZdoUbOMDPHP4vBAgz2VlSEJAHZGJVbYIg7l/FO5KfIVvxC8pPPxMGcNMoevFDeStt2iqztE10n2TA4dgJH76YS9HDhKHD3iCx6ieFX84BAI3QQnngh76f5ruPQVbr5qZmck/5UjDc26lfrOvUBWy0Ogl8bCoOkMOns81TnC3cuUS9KW8+9A+fe3XYZOFUPG1u5epSSmDLw0s5s2F0W30ANeo+zJkJQz9SPZgzwYpEoktofhGVfmLOAB20boCbW1QWq/NpET/hnMecw/uSyAH4NJc3ECOU4nnkK1fj3S/i5dwb3R7k00AqQQUwt7Ie1qV0aY/VQX0J8hLPy7eBNXMHYZYDNxHZ2Qh6AuXJxq+AeRec/Q+JLhZV6hpXwQEzw7bf5v9uUf2vpq3qlhmy0IIGTkwYdCfSAFmqbdo+3XvDTDjFJde0mbeQLcn2n31xaAqJ0ixO/CLsT4I4G4DoncVTgRGNBtsCcjISWT+oeXZ4Iedw/8OsJI1aPnNKLX/60VvcZb94uasRxCkqlPQ11u1Sa2hHvB80WQENxVyzjns0/PiEByyil21Te6oisk3mNCEMrhouCFO3yEZTHHOCMy9eb/4Tmi8cVf3Lf7P53SY2hX3PSN033As3ETIMLHWumWEO9JXHA2y2SIBlIPpLGG2qvNsCIlIr+B1SWAqRKm2w6Blf7U+zCSBwJrfHG5i8J5Gax/cVonMlon7aHJX/gSvucIncRP93XCqkv7D8IFKFsLiBgHqUpXhE3pYjEcV1dk/JD9zFVCfEaQIVX8Jmfz7IIofcBKQ4OaG+C3xC2veX9CD+iAFXDNaGg9eTVxvkbJRJlW4Nk9Wk13kn696jWppRDe/8pDrYMO9ZyxZ98ReKSz9kWKLLyk2zCZgAniCkLJVX3n1M9DYbomyahWiv/KixRIV9hj/oFz87I+HLznbPTjpa+D+bZQnMuRsljTpv90vQUt/pK7jCFnA30B/jtroSF2/m/gpWn1aQs5WeA6ghzF8SdqWI20fghdSeDOCSCmLgTkfaGgGDmw7nHFkRzGtag57IHS2na06I+gzEphXo1w/Zx2BM/jKL2nZoFjHggtFQjYi8nSVRSXIE58RPbBObXk7uuIL9+rs/5Zo7suJInEUxgsiZZAWS25iBtpEiZeBgDtghEoAE0sjcayNq85M4tbu/LF5h51335PsGzQ09O875+vUS89lkWMyNOFoip2PuyWyMP/iU2XIZdfCCJNDjebDoBLQdpy7QQZC7s9c0wjHJervQNDu2jWzBW5MSAJMr7bP+Iv92BkS/GGgzjEn7MF1IRKFwwzbjbS4/slGOmhx9cZrFu7HSEefojNv3r0UaKfKOWzXsq1zEugbzlMDFsacRJJI/iJlK3vtkZ+PLZIVMFlKA32wbq2Kd5T0uCLZ1CPkAfCdzkz2EYscjDcZq2AWfziN2covN4kXE1lQXPPLTNM1xx3tbiepcO/t3SWm4w87qfh99SL0ZnY+LKFPLPeXVM2mIIoVWt+9Nk0I7nY4O79iGYqxZ8RVz289an6NVdJWnSKZvJQCAuHNiVaDxPAFoH392t9wot5t0/qmU95eEWNbU2udUW5sN9JVqcYlvAIfLeYC33oUzzxZgSktsv21mA7Uly1FA5VnoJFh6N244Wmv3YJGFv/TCPryaw+ZORlpZjQdq/2DYXr3EZskfed0G61P09ipTKmlTQ1067Rg5+PAk5FlQ9e0SWbGf2B/08kqymOTMVOznsALHHNFH4LFRKl2F/NOiYFl9khNHnSu9Ak5sq26Ynl/i2fdTle29Y1ugqmR5Yj4YT9pvslFyYCbw0mNFr5rVQm1LvkG27QMq9ph3t8fmn6r6SQ4oSbr5tz+J1kIawGzDxb6VYOvvWhobDTXfBeNv3b4aNm5XUinsCGqG2q/45m3+LoCOsddFceYhRx1Tsss9PLdPfJdErFMjYd3gddjiP0+XQjcRadZP6bwNLySvunFf20Czy6JqdEW2a96KxdYdOryBv1BjbuUq2yCHeh+6sk7fGmmPi50pe/1l5TyPe5oHW9oPnhPswLyf2TFDdCyYlhwBCstv5C1HwlW7xWoGT9XZt4qVj5WryLPLLD6h/5cMLEjWzgCeAIKNsLak92aBqBsHl4AJwl2N4jfvbSkBExGimv0nFvv09uDScQbjx+w4kPQjgjlW+g9ws9VEJvI2k8N6XxVu0uIwovgTFdunG24gBtaDi+y1YLQwZ8mwbip5fVlO3k0n0AEr/ETbtu8Vjkm+nNSiEb7X/3fMjBL5A8PdgG+/FnbexbFFExmEfetXAnisEKy5z44WVPpQZjSy/jzeGn4yDRsFGqhh87QPaDBWhlo37IFbe/C0xynS91d2tP/AJoJS0sVF6iwAAAAAElFTkSuQmCC");
}
#logo {
position: fixed;
bottom: 10px;
right: 10px;
background: rgba(255,255,255,.1);
font-size: 11px;
display: block;
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
-webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
-moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
color: inherit;
}
#menu li a {
display: block;
color: white;
padding: 0 35px 0 25px;
-webkit-transition: background 300ms;
-moz-transition: background 300ms;
}
#menu li {
position: relative;
list-style: none;
}
#menu a:hover,
#menu a.active {
text-decoration: none;
background: rgba(255,255,255,.1);
}
#menu li:hover .cov {
opacity: 1;
}
#menu li .dirname {
opacity: .60;
padding-right: 2px;
}
#menu li .basename {
opacity: 1;
}
#menu .cov {
background: rgba(0,0,0,.4);
position: absolute;
top: 0;
right: 8px;
font-size: 9px;
opacity: .6;
text-align: left;
width: 17px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
padding: 2px 3px;
text-align: center;
}
#stats:nth-child(2n) {
display: inline-block;
margin-top: 15px;
border: 1px solid #eee;
padding: 10px;
-webkit-box-shadow: inset 0 0 2px #eee;
-moz-box-shadow: inset 0 0 2px #eee;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
#stats div {
float: left;
padding: 0 5px;
}
#stats::after {
display: block;
content: '';
clear: both;
}
#stats .sloc::after {
content: ' SLOC';
color: #b6b6b6;
}
#stats .percentage::after {
content: ' coverage';
color: #b6b6b6;
}
#stats .hits,
#stats .misses {
display: none;
}
.high {
color: #00d4b4;
}
.medium {
color: #e87d0d;
}
.low {
color: #d4081a;
}
.terrible {
color: #d4081a;
font-weight: bold;
}
table {
width: 80%;
margin-top: 10px;
border-collapse: collapse;
border: 1px solid #cbcbcb;
color: #363636;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
}
table thead {
display: none;
}
table td.line,
table td.hits {
width: 20px;
background: #eaeaea;
text-align: center;
font-size: 11px;
padding: 0 10px;
color: #949494;
}
table td.hits {
width: 10px;
padding: 2px 5px;
color: rgba(0,0,0,.2);
background: #f0f0f0;
}
tr.miss td.line,
tr.miss td.hits {
background: #e6c3c7;
}
tr.miss td {
background: #f8d5d8;
}
td.source {
padding-left: 15px;
line-height: 15px;
white-space: pre;
font: 12px monaco, monospace;
}
code .comment { color: #ddd }
code .init { color: #2F6FAD }
code .string { color: #5890AD }
code .keyword { color: #8A6343 }
code .number { color: #2F6FAD }
</style></head><body><div id="coverage"><h1 id="overview">Coverage</h1><div id="menu"><li><a href="#overview">overview</a></li><li><span class="cov medium">60</span><a href="#Bootstrap.js"><span class="basename">Bootstrap.js</span></a></li><li><span class="cov high">100</span><a href="#config/staging.js"><span class="dirname">config/</span><span class="basename">staging.js</span></a></li><li><span class="cov high">100</span><a href="#config/global.js"><span class="dirname">config/</span><span class="basename">global.js</span></a></li><li><span class="cov high">100</span><a href="#lib/DatabaseAdapter.js"><span class="dirname">lib/</span><span class="basename">DatabaseAdapter.js</span></a></li><li><span class="cov terrible">18</span><a href="#lib/Controller.js"><span class="dirname">lib/</span><span class="basename">Controller.js</span></a></li><li><span class="cov low">34</span><a href="#lib/CacheStore.js"><span class="dirname">lib/</span><span class="basename">CacheStore.js</span></a></li><li><span class="cov terrible">14</span><a href="#lib/Cdn.js"><span class="dirname">lib/</span><span class="basename">Cdn.js</span></a></li><li><span class="cov high">75</span><a href="#lib/UserState.js"><span class="dirname">lib/</span><span class="basename">UserState.js</span></a></li><li><span class="cov medium">64</span><a href="#lib/Grid.js"><span class="dirname">lib/</span><span class="basename">Grid.js</span></a></li><li><span class="cov medium">60</span><a href="#lib/JsonRpcServer.js"><span class="dirname">lib/</span><span class="basename">JsonRpcServer.js</span></a></li><li><span class="cov low">32</span><a href="#lib/SessionStore.js"><span class="dirname">lib/</span><span class="basename">SessionStore.js</span></a></li><li><span class="cov low">33</span><a href="#lib/StateStore.js"><span class="dirname">lib/</span><span class="basename">StateStore.js</span></a></li><li><span class="cov medium">65</span><a href="#lib/SocketIoServer.js"><span class="dirname">lib/</span><span class="basename">SocketIoServer.js</span></a></li><li><span class="cov low">27</span><a href="#lib/JsonRpcRequest.js"><span class="dirname">lib/</span><span class="basename">JsonRpcRequest.js</span></a></li><li><span class="cov low">32</span><a href="#lib/APIController.js"><span class="dirname">lib/</span><span class="basename">APIController.js</span></a></li><li><span class="cov terrible">21</span><a href="#lib/Cache/FileAdapter.js"><span class="dirname">lib/Cache/</span><span class="basename">FileAdapter.js</span></a></li><li><span class="cov terrible">19</span><a href="#lib/Cache/DbAdapter.js"><span class="dirname">lib/Cache/</span><span class="basename">DbAdapter.js</span></a></li><li><span class="cov low">35</span><a href="#lib/Cache/MemcacheAdapter.js"><span class="dirname">lib/Cache/</span><span class="basename">MemcacheAdapter.js</span></a></li><li><span class="cov medium">56</span><a href="#controllers/test.js"><span class="dirname">controllers/</span><span class="basename">test.js</span></a></li><li><span class="cov medium">50</span><a href="#controllers/admin.js"><span class="dirname">controllers/</span><span class="basename">admin.js</span></a></li><li><span class="cov terrible">24</span><a href="#controllers/modules/home/ajax.js"><span class="dirname">controllers/modules/home/</span><span class="basename">ajax.js</span></a></li><li><span class="cov high">76</span><a href="#controllers/modules/home/index.js"><span class="dirname">controllers/modules/home/</span><span class="basename">index.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/home/panels/import-domains.js"><span class="dirname">controllers/modules/home/panels/</span><span class="basename">import-domains.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/home/panels/list-forsale.js"><span class="dirname">controllers/modules/home/panels/</span><span class="basename">list-forsale.js</span></a></li><li><span class="cov terrible">10</span><a href="#controllers/modules/user-settings/ajax.js"><span class="dirname">controllers/modules/user-settings/</span><span class="basename">ajax.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/user-settings/index.js"><span class="dirname">controllers/modules/user-settings/</span><span class="basename">index.js</span></a></li><li><span class="cov terrible">24</span><a href="#controllers/modules/exchange/ajax.js"><span class="dirname">controllers/modules/exchange/</span><span class="basename">ajax.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/exchange/index.js"><span class="dirname">controllers/modules/exchange/</span><span class="basename">index.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/exchange/panels/place-bid.js"><span class="dirname">controllers/modules/exchange/panels/</span><span class="basename">place-bid.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/exchange/panels/watchlist.js"><span class="dirname">controllers/modules/exchange/panels/</span><span class="basename">watchlist.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/exchange/panels/backorder.js"><span class="dirname">controllers/modules/exchange/panels/</span><span class="basename">backorder.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/exchange/panels/make-offer.js"><span class="dirname">controllers/modules/exchange/panels/</span><span class="basename">make-offer.js</span></a></li><li><span class="cov high">75</span><a href="#controllers/modules/notifications/generic.js"><span class="dirname">controllers/modules/notifications/</span><span class="basename">generic.js</span></a></li><li><span class="cov low">33</span><a href="#controllers/modules/bank-and-cart/ajax.js"><span class="dirname">controllers/modules/bank-and-cart/</span><span class="basename">ajax.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/bank-and-cart/index.js"><span class="dirname">controllers/modules/bank-and-cart/</span><span class="basename">index.js</span></a></li><li><span class="cov medium">64</span><a href="#controllers/modules/bank-and-cart/panels/checkout.js"><span class="dirname">controllers/modules/bank-and-cart/panels/</span><span class="basename">checkout.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/panels/protrada-video.js"><span class="dirname">controllers/modules/panels/</span><span class="basename">protrada-video.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/panels/domain-details.js"><span class="dirname">controllers/modules/panels/</span><span class="basename">domain-details.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/panels/advanced-search.js"><span class="dirname">controllers/modules/panels/</span><span class="basename">advanced-search.js</span></a></li><li><span class="cov high">81</span><a href="#controllers/modules/panels/export-data.js"><span class="dirname">controllers/modules/panels/</span><span class="basename">export-data.js</span></a></li><li><span class="cov high">75</span><a href="#controllers/modules/grid/row.js"><span class="dirname">controllers/modules/grid/</span><span class="basename">row.js</span></a></li><li><span class="cov high">75</span><a href="#controllers/modules/grid/table.js"><span class="dirname">controllers/modules/grid/</span><span class="basename">table.js</span></a></li><li><span class="cov high">82</span><a href="#api/user/update-state.js"><span class="dirname">api/user/</span><span class="basename">update-state.js</span></a></li><li><span class="cov high">80</span><a href="#api/user/check-login.js"><span class="dirname">api/user/</span><span class="basename">check-login.js</span></a></li><li><span class="cov high">85</span><a href="#api/user/get-state.js"><span class="dirname">api/user/</span><span class="basename">get-state.js</span></a></li><li><span class="cov high">76</span><a href="#api/user/reset-state.js"><span class="dirname">api/user/</span><span class="basename">reset-state.js</span></a></li><li><span class="cov high">83</span><a href="#api/user/reset-session.js"><span class="dirname">api/user/</span><span class="basename">reset-session.js</span></a></li><li><span class="cov medium">63</span><a href="#api/test/ping-pong.js"><span class="dirname">api/test/</span><span class="basename">ping-pong.js</span></a></li><li><span class="cov low">29</span><a href="#api/exchange/grid.js"><span class="dirname">api/exchange/</span><span class="basename">grid.js</span></a></li><li><span class="cov high">80</span><a href="#api/view/panels/protrada-video.js"><span class="dirname">api/view/panels/</span><span class="basename">protrada-video.js</span></a></li><li><span class="cov high">80</span><a href="#api/view/panels/domain-details.js"><span class="dirname">api/view/panels/</span><span class="basename">domain-details.js</span></a></li><li><span class="cov medium">61</span><a href="#api/view/panels/export-data.js"><span class="dirname">api/view/panels/</span><span class="basename">export-data.js</span></a></li><li><span class="cov high">80</span><a href="#api/view/modules/home/panels/import-domains.js"><span class="dirname">api/view/modules/home/panels/</span><span class="basename">import-domains.js</span></a></li><li><span class="cov high">80</span><a href="#api/view/modules/home/panels/list-forsale.js"><span class="dirname">api/view/modules/home/panels/</span><span class="basename">list-forsale.js</span></a></li><li><span class="cov medium">70</span><a href="#api/view/modules/exchange/panels/watchlist.js"><span class="dirname">api/view/modules/exchange/panels/</span><span class="basename">watchlist.js</span></a></li><li><span class="cov high">78</span><a href="#api/notifications/fetch.js"><span class="dirname">api/notifications/</span><span class="basename">fetch.js</span></a></li><li><span class="cov high">75</span><a href="#api/notifications/push.js"><span class="dirname">api/notifications/</span><span class="basename">push.js</span></a></li><a id="logo" href="http://visionmedia.github.com/mocha/">m</a></div><div id="stats" class="low"><div class="percentage">46%</div><div class="sloc">1831</div><div class="hits">843</div><div class="misses">988</div></div><div id="files"><div class="file"><h2 id="Bootstrap.js">Bootstrap.js</h2><div id="stats" class="medium"><div class="percentage">60%</div><div class="sloc">239</div><div class="hits">145</div><div class="misses">94</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Bootstrap, DBWrapper, cronJob, everyauth, express, fs, jade, memcached, modules, path_module, util,</td></tr><tr class="hit"> <td class="line">4</td><td class="hits">1</td><td class="source"> __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },</td></tr><tr class="miss"> <td class="line">5</td><td class="hits">0</td><td class="source"> __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> console.log(__dirname);</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> util = require('util');</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> express = require('express');</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> everyauth = require('everyauth');</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> fs = require('fs');</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> jade = require('jade');</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">19</td><td class="hits">1</td><td class="source"> path_module = require('path');</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> memcached = require('memcached');</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">23</td><td class="hits">1</td><td class="source"> modules = require('../modules');</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> cronJob = require('cron').CronJob;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> DBWrapper = require('node-dbi').DBWrapper;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">29</td><td class="hits">1</td><td class="source"> Bootstrap = (function() {</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">31</td><td class="hits">1</td><td class="source"> module.exports = Bootstrap;</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">33</td><td class="hits">1</td><td class="source"> function Bootstrap(options) {</td></tr><tr class="hit"> <td class="line">34</td><td class="hits">1</td><td class="source"> this.options = options != null ? options : {};</td></tr><tr class="hit"> <td class="line">35</td><td class="hits">1</td><td class="source"> this.handleRequest = __bind(this.handleRequest, this);</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">37</td><td class="hits">1</td><td class="source"> this.modules = {};</td></tr><tr class="hit"> <td class="line">38</td><td class="hits">1</td><td class="source"> this.config = {};</td></tr><tr class="hit"> <td class="line">39</td><td class="hits">1</td><td class="source"> this.usersById = {};</td></tr><tr class="hit"> <td class="line">40</td><td class="hits">1</td><td class="source"> this.nextUserId = 0;</td></tr><tr class="hit"> <td class="line">41</td><td class="hits">1</td><td class="source"> this.jsonRpcServer = null;</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">44</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.start = function() {</td></tr><tr class="hit"> <td class="line">45</td><td class="hits">1</td><td class="source"> var dbConfig, io, server, socketIoServer, usersByLogin,</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="hit"> <td class="line">47</td><td class="hits">1</td><td class="source"> this.loadConfig(this.options.config);</td></tr><tr class="hit"> <td class="line">48</td><td class="hits">1</td><td class="source"> modules.registerModules(__dirname + '/lib', this.modules);</td></tr><tr class="hit"> <td class="line">49</td><td class="hits">1</td><td class="source"> modules.registerModules(__dirname + '/', this.modules);</td></tr><tr class="hit"> <td class="line">50</td><td class="hits">1</td><td class="source"> module.exports = this.modules;</td></tr><tr class="hit"> <td class="line">51</td><td class="hits">1</td><td class="source"> everyauth.debug = true;</td></tr><tr class="hit"> <td class="line">52</td><td class="hits">1</td><td class="source"> usersByLogin = {</td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> "protrada": this.addUser({</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> login: "protrada",</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> password: "test"</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> })</td></tr><tr><td class="line">57</td><td class="hits"></td><td class="source"> };</td></tr><tr class="hit"> <td class="line">58</td><td class="hits">1</td><td class="source"> everyauth.everymodule.findUserById(function(id, callback) {</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> return callback(null, _this.usersById[id]);</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> });</td></tr><tr class="hit"> <td class="line">61</td><td class="hits">1</td><td class="source"> everyauth.everymodule.logoutRedirectPath('/login');</td></tr><tr class="hit"> <td class="line">62</td><td class="hits">1</td><td class="source"> everyauth.everymodule.handleLogout(function(req, res) {</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> req.logout();</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> return this.redirect(res, this.logoutRedirectPath());</td></tr><tr><td class="line">65</td><td class="hits"></td><td class="source"> });</td></tr><tr class="hit"> <td class="line">66</td><td class="hits">1</td><td class="source"> everyauth.password.getLoginPath("/login").postLoginPath("/login").loginView("login").loginLocals(function(req, res, done) {</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> return setTimeout((function() {</td></tr><tr class="miss"> <td class="line">68</td><td class="hits">0</td><td class="source"> return done(null, {</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> title: "Async login"</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">71</td><td class="hits"></td><td class="source"> }), 200);</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> }).authenticate(function(login, password) {</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> var errors, user;</td></tr><tr class="miss"> <td class="line">74</td><td class="hits">0</td><td class="source"> errors = [];</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> if (!login) {</td></tr><tr class="miss"> <td class="line">76</td><td class="hits">0</td><td class="source"> errors.push("Missing login");</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">78</td><td class="hits">0</td><td class="source"> if (!password) {</td></tr><tr class="miss"> <td class="line">79</td><td class="hits">0</td><td class="source"> errors.push("Missing password");</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> if (errors.length) {</td></tr><tr class="miss"> <td class="line">82</td><td class="hits">0</td><td class="source"> return errors;</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">84</td><td class="hits">0</td><td class="source"> user = usersByLogin[login];</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> if (!user) {</td></tr><tr class="miss"> <td class="line">86</td><td class="hits">0</td><td class="source"> return ["Login failed"];</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">88</td><td class="hits">0</td><td class="source"> if (user.password !== password) {</td></tr><tr class="miss"> <td class="line">89</td><td class="hits">0</td><td class="source"> return ["Login failed"];</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> return user;</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> }).getRegisterPath("/register").postRegisterPath("/register").registerView("register.jade").registerLocals(function(req, res, done) {</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> return setTimeout((function() {</td></tr><tr class="miss"> <td class="line">94</td><td class="hits">0</td><td class="source"> return done(null, {</td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source"> title: "Async Register"</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> }), 200);</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> }).validateRegistration(function(newUserAttrs, errors) {</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> var login;</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> login = newUserAttrs.login;</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> if (usersByLogin[login]) {</td></tr><tr class="miss"> <td class="line">102</td><td class="hits">0</td><td class="source"> errors.push("Login already taken");</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">104</td><td class="hits">0</td><td class="source"> return errors;</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> }).registerUser(function(newUserAttrs) {</td></tr><tr class="miss"> <td class="line">106</td><td class="hits">0</td><td class="source"> var login;</td></tr><tr class="miss"> <td class="line">107</td><td class="hits">0</td><td class="source"> login = newUserAttrs[this.loginKey()];</td></tr><tr class="miss"> <td class="line">108</td><td class="hits">0</td><td class="source"> return usersByLogin[login] = addUser(newUserAttrs);</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> }).loginSuccessRedirect("/home").registerSuccessRedirect("/home");</td></tr><tr class="hit"> <td class="line">110</td><td class="hits">1</td><td class="source"> this.app = express();</td></tr><tr class="hit"> <td class="line">111</td><td class="hits">1</td><td class="source"> this.app.use(express.bodyParser());</td></tr><tr class="hit"> <td class="line">112</td><td class="hits">1</td><td class="source"> this.app.use(express.methodOverride());</td></tr><tr class="hit"> <td class="line">113</td><td class="hits">1</td><td class="source"> this.app.use(express["static"](this.config.pubDir));</td></tr><tr class="hit"> <td class="line">114</td><td class="hits">1</td><td class="source"> this.app.use(express.cookieParser());</td></tr><tr class="hit"> <td class="line">115</td><td class="hits">1</td><td class="source"> this.app.use(express.session({</td></tr><tr><td class="line">116</td><td class="hits"></td><td class="source"> 'secret': 'protrada',</td></tr><tr><td class="line">117</td><td class="hits"></td><td class="source"> 'maxAge': 1209600000</td></tr><tr><td class="line">118</td><td class="hits"></td><td class="source"> }));</td></tr><tr class="hit"> <td class="line">119</td><td class="hits">1</td><td class="source"> this.app.use(express.errorHandler());</td></tr><tr class="hit"> <td class="line">120</td><td class="hits">1</td><td class="source"> this.app.use(express.favicon());</td></tr><tr class="hit"> <td class="line">121</td><td class="hits">1</td><td class="source"> this.app.use(this.preEveryauthMiddlewareHack());</td></tr><tr class="hit"> <td class="line">122</td><td class="hits">1</td><td class="source"> this.app.use(everyauth.middleware());</td></tr><tr class="hit"> <td class="line">123</td><td class="hits">1</td><td class="source"> this.app.use(this.postEveryauthMiddlewareHack());</td></tr><tr class="hit"> <td class="line">124</td><td class="hits">1</td><td class="source"> if (this.config.cache.enabled) {</td></tr><tr class="hit"> <td class="line">125</td><td class="hits">1</td><td class="source"> if (__indexOf.call(this.config.cache.stores, 'memcache') >= 0) {</td></tr><tr class="hit"> <td class="line">126</td><td class="hits">1</td><td class="source"> this.options.memcache = new memcached(this.config.memcache.ips, this.config.memcache.options);</td></tr><tr><td class="line">127</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">128</td><td class="hits">1</td><td class="source"> if (__indexOf.call(this.config.cache.stores, 'db') >= 0) {</td></tr><tr class="hit"> <td class="line">129</td><td class="hits">1</td><td class="source"> dbConfig = {</td></tr><tr><td class="line">130</td><td class="hits"></td><td class="source"> host: app.config.sql.host,</td></tr><tr><td class="line">131</td><td class="hits"></td><td class="source"> user: app.config.sql.user,</td></tr><tr><td class="line">132</td><td class="hits"></td><td class="source"> password: app.config.sql.pass,</td></tr><tr><td class="line">133</td><td class="hits"></td><td class="source"> database: 'cache'</td></tr><tr><td class="line">134</td><td class="hits"></td><td class="source"> };</td></tr><tr class="hit"> <td class="line">135</td><td class="hits">1</td><td class="source"> this.options.dbcache = new DBWrapper(this.config.sql.type, dbConfig);</td></tr><tr><td class="line">136</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">137</td><td class="hits">1</td><td class="source"> new cronJob('*/10 * * * * *', function() {</td></tr><tr class="miss"> <td class="line">138</td><td class="hits">0</td><td class="source"> return _this.options.cache.cacheCheck();</td></tr><tr><td class="line">139</td><td class="hits"></td><td class="source"> }, null, true, 'Australia/Sydney');</td></tr><tr><td class="line">140</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">141</td><td class="hits">1</td><td class="source"> this.options.cache = new this.modules.lib.CacheStore;</td></tr><tr class="hit"> <td class="line">142</td><td class="hits">1</td><td class="source"> this.registerControllers();</td></tr><tr class="hit"> <td class="line">143</td><td class="hits">1</td><td class="source"> this.deleteMinified(this.config.pubDir + '/js/require');</td></tr><tr class="hit"> <td class="line">144</td><td class="hits">1</td><td class="source"> this.jsonRpcServer = new this.modules.lib.JsonRpcServer();</td></tr><tr class="hit"> <td class="line">145</td><td class="hits">1</td><td class="source"> this.jsonRpcServer.registerMethods();</td></tr><tr class="hit"> <td class="line">146</td><td class="hits">1</td><td class="source"> this.app.post('/jsonrpc', function(req, res) {</td></tr><tr class="miss"> <td class="line">147</td><td class="hits">0</td><td class="source"> return _this.jsonRpcServer.handleRequest(req, res);</td></tr><tr><td class="line">148</td><td class="hits"></td><td class="source"> });</td></tr><tr class="hit"> <td class="line">149</td><td class="hits">1</td><td class="source"> this.app.configure(function() {</td></tr><tr class="hit"> <td class="line">150</td><td class="hits">1</td><td class="source"> _this.app.set("view engine", "jade");</td></tr><tr class="hit"> <td class="line">151</td><td class="hits">1</td><td class="source"> _this.app.set("views", _this.config.appDir + "/views");</td></tr><tr class="hit"> <td class="line">152</td><td class="hits">1</td><td class="source"> return _this.app.set('view options', {</td></tr><tr><td class="line">153</td><td class="hits"></td><td class="source"> pretty: true</td></tr><tr><td class="line">154</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">155</td><td class="hits"></td><td class="source"> });</td></tr><tr class="hit"> <td class="line">156</td><td class="hits">1</td><td class="source"> this.app.use(this.app.router);</td></tr><tr class="hit"> <td class="line">157</td><td class="hits">1</td><td class="source"> server = this.app.listen(this.options.port);</td></tr><tr class="hit"> <td class="line">158</td><td class="hits">1</td><td class="source"> console.log("Server started on port " + this.options.port + ".");</td></tr><tr class="hit"> <td class="line">159</td><td class="hits">1</td><td class="source"> socketIoServer = new this.modules.lib.SocketIoServer();</td></tr><tr class="hit"> <td class="line">160</td><td class="hits">1</td><td class="source"> socketIoServer.setJsonRpcServer(this.jsonRpcServer);</td></tr><tr class="hit"> <td class="line">161</td><td class="hits">1</td><td class="source"> io = require('socket.io').listen(server);</td></tr><tr class="hit"> <td class="line">162</td><td class="hits">1</td><td class="source"> return io.sockets.on('connection', function(socket) {</td></tr><tr class="miss"> <td class="line">163</td><td class="hits">0</td><td class="source"> return socketIoServer.addClient(socket);</td></tr><tr><td class="line">164</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">165</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">166</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">167</td><td class="hits">1</td><td class="source"> Bootstrap.realUrl = function(url) {</td></tr><tr class="miss"> <td class="line">168</td><td class="hits">0</td><td class="source"> if (url.indexOf('?') >= 0) {</td></tr><tr class="miss"> <td class="line">169</td><td class="hits">0</td><td class="source"> url = url.substr(0, url.indexOf('?'));</td></tr><tr><td class="line">170</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">171</td><td class="hits">0</td><td class="source"> url = url.replace(/\/+$/, '');</td></tr><tr class="miss"> <td class="line">172</td><td class="hits">0</td><td class="source"> if (url === '') {</td></tr><tr class="miss"> <td class="line">173</td><td class="hits">0</td><td class="source"> url = '/login';</td></tr><tr><td class="line">174</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">175</td><td class="hits">0</td><td class="source"> return url;</td></tr><tr><td class="line">176</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">177</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">178</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.realPath = function(path, cb) {</td></tr><tr class="hit"> <td class="line">179</td><td class="hits">22</td><td class="source"> var controller;</td></tr><tr class="hit"> <td class="line">180</td><td class="hits">22</td><td class="source"> controller = this.config.appDir + "/controllers/modules" + path;</td></tr><tr class="hit"> <td class="line">181</td><td class="hits">22</td><td class="source"> return fs.stat(controller + '.coffee', function(err, stat) {</td></tr><tr class="hit"> <td class="line">182</td><td class="hits">22</td><td class="source"> if (err) {</td></tr><tr class="hit"> <td class="line">183</td><td class="hits">4</td><td class="source"> return fs.stat(controller + '/index.coffee', function(err, stat) {</td></tr><tr class="hit"> <td class="line">184</td><td class="hits">4</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">185</td><td class="hits">0</td><td class="source"> return fs.stat(controller + '.js', function(err, stat) {</td></tr><tr class="miss"> <td class="line">186</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">187</td><td class="hits">0</td><td class="source"> controller += '/index.js';</td></tr><tr><td class="line">188</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">189</td><td class="hits">0</td><td class="source"> controller += '.js';</td></tr><tr class="miss"> <td class="line">190</td><td class="hits">0</td><td class="source"> console.log(controller);</td></tr><tr><td class="line">191</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">192</td><td class="hits">0</td><td class="source"> return cb(path, controller);</td></tr><tr><td class="line">193</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">194</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="hit"> <td class="line">195</td><td class="hits">4</td><td class="source"> controller += '/index.coffee';</td></tr><tr class="hit"> <td class="line">196</td><td class="hits">4</td><td class="source"> return cb(path, controller);</td></tr><tr><td class="line">197</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">198</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">199</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="hit"> <td class="line">200</td><td class="hits">18</td><td class="source"> controller += '.coffee';</td></tr><tr class="hit"> <td class="line">201</td><td class="hits">18</td><td class="source"> return cb(path, controller);</td></tr><tr><td class="line">202</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">203</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">204</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">205</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">206</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.getController = function(path) {</td></tr><tr class="hit"> <td class="line">207</td><td class="hits">22</td><td class="source"> var controller, ext, folders, i, module, start, _i, _ref, _ref1;</td></tr><tr class="hit"> <td class="line">208</td><td class="hits">22</td><td class="source"> controller = this.modules;</td></tr><tr class="hit"> <td class="line">209</td><td class="hits">22</td><td class="source"> path = path_module.resolve(path);</td></tr><tr class="hit"> <td class="line">210</td><td class="hits">22</td><td class="source"> ext = path_module.extname(path);</td></tr><tr class="hit"> <td class="line">211</td><td class="hits">22</td><td class="source"> module = path_module.basename(path, ext);</td></tr><tr class="hit"> <td class="line">212</td><td class="hits">22</td><td class="source"> path = path_module.dirname(path);</td></tr><tr class="hit"> <td class="line">213</td><td class="hits">22</td><td class="source"> folders = path.split(path_module.sep);</td></tr><tr class="hit"> <td class="line">214</td><td class="hits">22</td><td class="source"> start = process.env.COVERAGE ? folders.indexOf('app-cov') : folders.indexOf('app');</td></tr><tr class="hit"> <td class="line">215</td><td class="hits">22</td><td class="source"> if (start >= 0) {</td></tr><tr class="miss"> <td class="line">216</td><td class="hits">0</td><td class="source"> for (i = _i = _ref = ++start, _ref1 = folders.length - 1; _ref <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = _ref <= _ref1 ? ++_i : --_i) {</td></tr><tr class="miss"> <td class="line">217</td><td class="hits">0</td><td class="source"> controller = controller[folders[i]];</td></tr><tr><td class="line">218</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">219</td><td class="hits">0</td><td class="source"> return controller[module];</td></tr><tr><td class="line">220</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="hit"> <td class="line">221</td><td class="hits">22</td><td class="source"> return false;</td></tr><tr><td class="line">222</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">223</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">224</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">225</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.handleJadeRequest = function(req, res) {</td></tr><tr class="miss"> <td class="line">226</td><td class="hits">0</td><td class="source"> var url;</td></tr><tr class="miss"> <td class="line">227</td><td class="hits">0</td><td class="source"> url = __dirname + '/views/modules' + Bootstrap.realUrl(req.url);</td></tr><tr class="miss"> <td class="line">228</td><td class="hits">0</td><td class="source"> console.log(url);</td></tr><tr class="miss"> <td class="line">229</td><td class="hits">0</td><td class="source"> return fs.readFile(url, 'utf8', function(err, data) {</td></tr><tr class="miss"> <td class="line">230</td><td class="hits">0</td><td class="source"> var fn, jc;</td></tr><tr class="miss"> <td class="line">231</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">232</td><td class="hits">0</td><td class="source"> res.write(err);</td></tr><tr><td class="line">233</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">234</td><td class="hits">0</td><td class="source"> jc = jade.compile(data, {</td></tr><tr><td class="line">235</td><td class="hits"></td><td class="source"> client: true,</td></tr><tr><td class="line">236</td><td class="hits"></td><td class="source"> filename: url,</td></tr><tr><td class="line">237</td><td class="hits"></td><td class="source"> debug: false,</td></tr><tr><td class="line">238</td><td class="hits"></td><td class="source"> compileDebug: true</td></tr><tr><td class="line">239</td><td class="hits"></td><td class="source"> }).toString();</td></tr><tr class="miss"> <td class="line">240</td><td class="hits">0</td><td class="source"> fn = url.replace(/^.*?app\//, '').replace(/\.jade$/, '').replace(/[\/-]/g, '_');</td></tr><tr class="miss"> <td class="line">241</td><td class="hits">0</td><td class="source"> res.write('document.' + fn + ' = ' + jc);</td></tr><tr><td class="line">242</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">243</td><td class="hits">0</td><td class="source"> return res.end();</td></tr><tr><td class="line">244</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">245</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">246</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">247</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.handleRequest = function(req, res) {</td></tr><tr class="miss"> <td class="line">248</td><td class="hits">0</td><td class="source"> var url,</td></tr><tr><td class="line">249</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">250</td><td class="hits">0</td><td class="source"> url = Bootstrap.realUrl(req.url);</td></tr><tr class="miss"> <td class="line">251</td><td class="hits">0</td><td class="source"> return this.realPath(url, function(url, path) {</td></tr><tr class="miss"> <td class="line">252</td><td class="hits">0</td><td class="source"> var controller;</td></tr><tr class="miss"> <td class="line">253</td><td class="hits">0</td><td class="source"> controller = _this.getController(path);</td></tr><tr class="miss"> <td class="line">254</td><td class="hits">0</td><td class="source"> if (controller) {</td></tr><tr class="miss"> <td class="line">255</td><td class="hits">0</td><td class="source"> controller = new controller;</td></tr><tr class="miss"> <td class="line">256</td><td class="hits">0</td><td class="source"> res.view = {};</td></tr><tr class="miss"> <td class="line">257</td><td class="hits">0</td><td class="source"> return controller.run(req, res, url);</td></tr><tr><td class="line">258</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">259</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">260</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">261</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">262</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.registerControllers = function(path) {</td></tr><tr class="hit"> <td class="line">263</td><td class="hits">33</td><td class="source"> var controller, dest, ext, files,</td></tr><tr><td class="line">264</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="hit"> <td class="line">265</td><td class="hits">33</td><td class="source"> if (path == null) {</td></tr><tr class="hit"> <td class="line">266</td><td class="hits">1</td><td class="source"> path = __dirname + '/controllers/modules';</td></tr><tr><td class="line">267</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">268</td><td class="hits">33</td><td class="source"> if (path === __dirname + '/controllers/modules') {</td></tr><tr class="hit"> <td class="line">269</td><td class="hits">1</td><td class="source"> console.log("Registering Controllers...");</td></tr><tr class="hit"> <td class="line">270</td><td class="hits">1</td><td class="source"> this.app.all('/', this.handleRequest);</td></tr><tr><td class="line">271</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">272</td><td class="hits">33</td><td class="source"> try {</td></tr><tr class="hit"> <td class="line">273</td><td class="hits">33</td><td class="source"> files = fs.readdirSync(path);</td></tr><tr class="hit"> <td class="line">274</td><td class="hits">11</td><td class="source"> return files.forEach(function(file) {</td></tr><tr class="hit"> <td class="line">275</td><td class="hits">33</td><td class="source"> if (file.substr(0, 1) !== '.') {</td></tr><tr class="hit"> <td class="line">276</td><td class="hits">32</td><td class="source"> return _this.registerControllers(path + '/' + file);</td></tr><tr><td class="line">277</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">278</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">279</td><td class="hits"></td><td class="source"> } catch (e) {</td></tr><tr class="hit"> <td class="line">280</td><td class="hits">22</td><td class="source"> ext = path_module.extname(path);</td></tr><tr class="hit"> <td class="line">281</td><td class="hits">22</td><td class="source"> controller = path.replace(/.*?controllers\/modules/, '').replace(ext, '');</td></tr><tr class="hit"> <td class="line">282</td><td class="hits">22</td><td class="source"> dest = path_module.basename(controller, ext);</td></tr><tr class="hit"> <td class="line">283</td><td class="hits">22</td><td class="source"> if (dest === 'index') {</td></tr><tr class="hit"> <td class="line">284</td><td class="hits">4</td><td class="source"> controller = path_module.dirname(controller);</td></tr><tr><td class="line">285</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">286</td><td class="hits">22</td><td class="source"> console.log("Registering controller '" + controller + "'");</td></tr><tr class="hit"> <td class="line">287</td><td class="hits">22</td><td class="source"> this.app.all(controller, this.handleRequest);</td></tr><tr class="hit"> <td class="line">288</td><td class="hits">22</td><td class="source"> this.app.all(controller + ".jade", this.handleJadeRequest);</td></tr><tr class="hit"> <td class="line">289</td><td class="hits">22</td><td class="source"> return this.flushCache(controller);</td></tr><tr><td class="line">290</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">291</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">292</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">293</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.flushCache = function(url) {</td></tr><tr class="hit"> <td class="line">294</td><td class="hits">22</td><td class="source"> var controller,</td></tr><tr><td class="line">295</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="hit"> <td class="line">296</td><td class="hits">22</td><td class="source"> if ((this.config.flush != null) && (this.config.flush === 'all' || __indexOf.call(this.config.flush, url) >= 0)) {</td></tr><tr class="hit"> <td class="line">297</td><td class="hits">22</td><td class="source"> controller = this.modules;</td></tr><tr class="hit"> <td class="line">298</td><td class="hits">22</td><td class="source"> return this.realPath(url, function(url, path) {</td></tr><tr class="hit"> <td class="line">299</td><td class="hits">22</td><td class="source"> controller = _this.getController(path);</td></tr><tr class="hit"> <td class="line">300</td><td class="hits">22</td><td class="source"> if (controller) {</td></tr><tr class="miss"> <td class="line">301</td><td class="hits">0</td><td class="source"> controller = new controller;</td></tr><tr class="miss"> <td class="line">302</td><td class="hits">0</td><td class="source"> return controller.delPageFromCache(url);</td></tr><tr><td class="line">303</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">304</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">305</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">306</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">307</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">308</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.loadConfig = function(config) {</td></tr><tr class="hit"> <td class="line">309</td><td class="hits">1</td><td class="source"> return this.config = require('./config/' + config).config;</td></tr><tr><td class="line">310</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">311</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">312</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.deleteMinified = function(path) {</td></tr><tr class="hit"> <td class="line">313</td><td class="hits">1</td><td class="source"> var files,</td></tr><tr><td class="line">314</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="hit"> <td class="line">315</td><td class="hits">1</td><td class="source"> try {</td></tr><tr class="hit"> <td class="line">316</td><td class="hits">1</td><td class="source"> files = fs.readdirSync(path);</td></tr><tr class="hit"> <td class="line">317</td><td class="hits">1</td><td class="source"> return files.forEach(function(file) {</td></tr><tr class="miss"> <td class="line">318</td><td class="hits">0</td><td class="source"> if (file.substr(0, 1) !== '.') {</td></tr><tr class="miss"> <td class="line">319</td><td class="hits">0</td><td class="source"> return _this.deleteMinified(path + '/' + file);</td></tr><tr><td class="line">320</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">321</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">322</td><td class="hits"></td><td class="source"> } catch (e) {</td></tr><tr class="miss"> <td class="line">323</td><td class="hits">0</td><td class="source"> console.log('Now deleting ' + path);</td></tr><tr class="miss"> <td class="line">324</td><td class="hits">0</td><td class="source"> if (fs.statSync(path).isFile()) {</td></tr><tr class="miss"> <td class="line">325</td><td class="hits">0</td><td class="source"> return fs.unlinkSync(path);</td></tr><tr><td class="line">326</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">327</td><td class="hits">0</td><td class="source"> return fs.rmdirSync(path);</td></tr><tr><td class="line">328</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">329</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">330</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">331</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">332</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.addUser = function(source, sourceUser) {</td></tr><tr class="hit"> <td class="line">333</td><td class="hits">1</td><td class="source"> var user;</td></tr><tr class="hit"> <td class="line">334</td><td class="hits">1</td><td class="source"> user = void 0;</td></tr><tr class="hit"> <td class="line">335</td><td class="hits">1</td><td class="source"> if (arguments.length === 1) {</td></tr><tr class="hit"> <td class="line">336</td><td class="hits">1</td><td class="source"> user = sourceUser = source;</td></tr><tr class="hit"> <td class="line">337</td><td class="hits">1</td><td class="source"> user.id = ++this.nextUserId;</td></tr><tr class="hit"> <td class="line">338</td><td class="hits">1</td><td class="source"> return this.usersById[this.nextUserId] = user;</td></tr><tr><td class="line">339</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">340</td><td class="hits">0</td><td class="source"> user = this.usersById[++this.nextUserId] = {</td></tr><tr><td class="line">341</td><td class="hits"></td><td class="source"> id: this.nextUserId</td></tr><tr><td class="line">342</td><td class="hits"></td><td class="source"> };</td></tr><tr class="miss"> <td class="line">343</td><td class="hits">0</td><td class="source"> user[source] = sourceUser;</td></tr><tr><td class="line">344</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">345</td><td class="hits">0</td><td class="source"> return user;</td></tr><tr><td class="line">346</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">347</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">348</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.preEveryauthMiddlewareHack = function() {</td></tr><tr class="hit"> <td class="line">349</td><td class="hits">1</td><td class="source"> return function(req, res, next) {</td></tr><tr class="miss"> <td class="line">350</td><td class="hits">0</td><td class="source"> var auth, ea, k, sess;</td></tr><tr class="miss"> <td class="line">351</td><td class="hits">0</td><td class="source"> sess = req.session;</td></tr><tr class="miss"> <td class="line">352</td><td class="hits">0</td><td class="source"> auth = sess.auth;</td></tr><tr class="miss"> <td class="line">353</td><td class="hits">0</td><td class="source"> ea = {</td></tr><tr><td class="line">354</td><td class="hits"></td><td class="source"> loggedIn: !!(auth && auth.loggedIn)</td></tr><tr><td class="line">355</td><td class="hits"></td><td class="source"> };</td></tr><tr class="miss"> <td class="line">356</td><td class="hits">0</td><td class="source"> for (k in auth) {</td></tr><tr class="miss"> <td class="line">357</td><td class="hits">0</td><td class="source"> ea[k] = auth[k];</td></tr><tr><td class="line">358</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">359</td><td class="hits">0</td><td class="source"> if (everyauth.enabled.password) {</td></tr><tr class="miss"> <td class="line">360</td><td class="hits">0</td><td class="source"> ea.password || (ea.password = {});</td></tr><tr class="miss"> <td class="line">361</td><td class="hits">0</td><td class="source"> ea.password.loginFormFieldName = everyauth.password.loginFormFieldName();</td></tr><tr class="miss"> <td class="line">362</td><td class="hits">0</td><td class="source"> ea.password.passwordFormFieldName = everyauth.password.passwordFormFieldName();</td></tr><tr class="miss"> <td class="line">363</td><td class="hits">0</td><td class="source"> res.locals.everyauth = ea;</td></tr><tr><td class="line">364</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">365</td><td class="hits">0</td><td class="source"> return next();</td></tr><tr><td class="line">366</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">367</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">368</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">369</td><td class="hits">1</td><td class="source"> Bootstrap.prototype.postEveryauthMiddlewareHack = function() {</td></tr><tr class="hit"> <td class="line">370</td><td class="hits">1</td><td class="source"> var userAlias;</td></tr><tr class="hit"> <td class="line">371</td><td class="hits">1</td><td class="source"> userAlias = everyauth.expressHelperUserAlias || "user";</td></tr><tr class="hit"> <td class="line">372</td><td class="hits">1</td><td class="source"> return function(req, res, next) {</td></tr><tr class="miss"> <td class="line">373</td><td class="hits">0</td><td class="source"> res.locals.everyauth.user = req.user;</td></tr><tr class="miss"> <td class="line">374</td><td class="hits">0</td><td class="source"> res.locals[userAlias] = req.user;</td></tr><tr class="miss"> <td class="line">375</td><td class="hits">0</td><td class="source"> return next();</td></tr><tr><td class="line">376</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">377</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">378</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">379</td><td class="hits">1</td><td class="source"> return Bootstrap;</td></tr><tr><td class="line">380</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">381</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">382</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">383</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="config/staging.js">config/staging.js</h2><div id="stats" class="high"><div class="percentage">100%</div><div class="sloc">5</div><div class="hits">5</div><div class="misses">0</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr><td class="line">3</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">4</td><td class="hits">1</td><td class="source"> exports.config = require('./global').config;</td></tr><tr><td class="line">5</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">6</td><td class="hits">1</td><td class="source"> exports.config.memcache = {</td></tr><tr><td class="line">7</td><td class="hits"></td><td class="source"> ips: ['192.168.10.42:11211'],</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> options: {</td></tr><tr><td class="line">9</td><td class="hits"></td><td class="source"> maxExpiration: 0,</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> poolSize: 1000</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> exports.config.flush = 'all';</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> exports.config.sql = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> type: 'mysql',</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> host: '192.168.10.44',</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> user: 'parklings_com',</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> pass: 'p4rkl1ngs',</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> db: ''</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="config/global.js">config/global.js</h2><div id="stats" class="high"><div class="percentage">100%</div><div class="sloc">2</div><div class="hits">2</div><div class="misses">0</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr><td class="line">3</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">4</td><td class="hits">1</td><td class="source"> exports.config = {</td></tr><tr><td class="line">5</td><td class="hits"></td><td class="source"> appDir: __dirname + "/../../app",</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> pubDir: __dirname + "/../../public",</td></tr><tr><td class="line">7</td><td class="hits"></td><td class="source"> cacheDir: __dirname + "/../../cache",</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> cdn: {</td></tr><tr><td class="line">9</td><td class="hits"></td><td class="source"> domain: 'protrada.cachefly.net/v3',</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> hostname: 'localhost',</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> port: 8181</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> cache: {</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> enabled: true,</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> stores: ['memcache', 'db', 'file'],</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> index: 0</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> service: 'protrada',</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> apis: {</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> exchange: 'api.protrada.com:8080',</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> user: 'user.mashhub.com:8080'</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/DatabaseAdapter.js">lib/DatabaseAdapter.js</h2><div id="stats" class="high"><div class="percentage">100%</div><div class="sloc">6</div><div class="hits">6</div><div class="misses">0</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var DatabaseAdapter;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> DatabaseAdapter = (function() {</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> function DatabaseAdapter() {}</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> module.exports = DatabaseAdapter;</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> return DatabaseAdapter;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/Controller.js">lib/Controller.js</h2><div id="stats" class="terrible"><div class="percentage">18%</div><div class="sloc">70</div><div class="hits">13</div><div class="misses">57</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Controller;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> Controller = (function() {</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> module.exports = Controller;</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> function Controller() {</td></tr><tr class="miss"> <td class="line">10</td><td class="hits">0</td><td class="source"> this.params = {</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> 'expires': 60</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> };</td></tr><tr class="miss"> <td class="line">13</td><td class="hits">0</td><td class="source"> this.namespace = '';</td></tr><tr class="miss"> <td class="line">14</td><td class="hits">0</td><td class="source"> this.view = '';</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Controller.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> var key, val, _ref,</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> this.defaultView(url);</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> res.renderView = this.view;</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> _ref = this.params;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> for (key in _ref) {</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> val = _ref[key];</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> res.view[key] = val;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> return app.options.cache.getNameSpace(res.renderView, function(err, data) {</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> return app.options.cache.setNameSpace(res.renderView, app.options.cache.cs.getNameSpace, function(err, data) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> _this.namespace = data;</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> return _this.ready(req, res, req.url);</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> return _this.ready(req, res, req.url);</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">38</td><td class="hits">0</td><td class="source"> _this.namespace = data;</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> return _this.ready(req, res, req.url);</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">44</td><td class="hits">1</td><td class="source"> Controller.prototype.defaultView = function(url) {</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> if (this.view === '') {</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> return this.view = 'modules/' + url.substr(1);</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">50</td><td class="hits">1</td><td class="source"> Controller.prototype.modMasterParams = function(params) {</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> var key, val, _results;</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> _results = [];</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> for (key in params) {</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> val = params[key];</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> _results.push(this.params[key] = val);</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> return _results;</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">60</td><td class="hits">1</td><td class="source"> Controller.prototype.getPageFromCache = function(url, expire, cb) {</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> return app.options.cache.read(url, function(err, data, change) {</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> return cb(err);</td></tr><tr><td class="line">64</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> return cb(void 0, data);</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> }, expire);</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">70</td><td class="hits">1</td><td class="source"> Controller.prototype.setPageToCache = function(url, content, expire) {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> return app.options.cache.write(url, content, function(err, data, change) {</td></tr><tr class="miss"> <td class="line">72</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> return console.error("Page cache could not be saved: " + err);</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> return console.log("Page cache saved.");</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> }, expire);</td></tr><tr><td class="line">78</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">80</td><td class="hits">1</td><td class="source"> Controller.prototype.delPageFromCache = function(ns) {</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">82</td><td class="hits">0</td><td class="source"> this.defaultView(ns);</td></tr><tr class="miss"> <td class="line">83</td><td class="hits">0</td><td class="source"> return app.options.cache.flushNameSpace(this.view, function(err, data, change) {</td></tr><tr class="miss"> <td class="line">84</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> return console.log(_this.view + " cache data deleted.");</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">90</td><td class="hits">1</td><td class="source"> Controller.prototype.ready = function(req, res, index) {</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> var url,</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> url = index;</td></tr><tr class="miss"> <td class="line">94</td><td class="hits">0</td><td class="source"> if (this.namespace != null) {</td></tr><tr class="miss"> <td class="line">95</td><td class="hits">0</td><td class="source"> index = app.options.cache.hashTag(index, this.namespace);</td></tr><tr class="miss"> <td class="line">96</td><td class="hits">0</td><td class="source"> return this.getPageFromCache(index, res.view.expires, function(err, content) {</td></tr><tr class="miss"> <td class="line">97</td><td class="hits">0</td><td class="source"> if (content) {</td></tr><tr class="miss"> <td class="line">98</td><td class="hits">0</td><td class="source"> console.log("Page cache used.");</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> return res.send(content);</td></tr><tr><td class="line">100</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> return res.render(res.renderView, res.view, function(err, content) {</td></tr><tr class="miss"> <td class="line">102</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">103</td><td class="hits">0</td><td class="source"> return req.next(err);</td></tr><tr><td class="line">104</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">105</td><td class="hits">0</td><td class="source"> _this.setPageToCache(index, content, res.view.expires);</td></tr><tr class="miss"> <td class="line">106</td><td class="hits">0</td><td class="source"> return res.send(content);</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">108</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">110</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">111</td><td class="hits">0</td><td class="source"> return res.render(res.renderView, res.view, function(err, content) {</td></tr><tr class="miss"> <td class="line">112</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">113</td><td class="hits">0</td><td class="source"> return req.next(err);</td></tr><tr><td class="line">114</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">115</td><td class="hits">0</td><td class="source"> return res.send(content);</td></tr><tr><td class="line">116</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">117</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">118</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">119</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">120</td><td class="hits">1</td><td class="source"> return Controller;</td></tr><tr><td class="line">121</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">122</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">123</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">124</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/CacheStore.js">lib/CacheStore.js</h2><div id="stats" class="low"><div class="percentage">34%</div><div class="sloc">93</div><div class="hits">32</div><div class="misses">61</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var CacheStore, util;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> util = require('util');</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> CacheStore = (function() {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> module.exports = CacheStore;</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function CacheStore() {</td></tr><tr class="hit"> <td class="line">12</td><td class="hits">2</td><td class="source"> var store;</td></tr><tr class="hit"> <td class="line">13</td><td class="hits">2</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">2</td><td class="source"> store = app.config.cache.stores[app.config.cache.index];</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">2</td><td class="source"> this.CS = app.modules.lib.Cache[store.charAt(0).toUpperCase() + store.substr(1) + 'Adapter'];</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">2</td><td class="source"> this.cs = new this.CS();</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">20</td><td class="hits">1</td><td class="source"> CacheStore.prototype.changeStore = function(index) {</td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> var store;</td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> if (index < app.config.cache.stores.length) {</td></tr><tr class="hit"> <td class="line">23</td><td class="hits">1</td><td class="source"> store = app.config.cache.stores[index];</td></tr><tr class="hit"> <td class="line">24</td><td class="hits">1</td><td class="source"> this.CS = app.modules.lib.Cache[store.charAt(0).toUpperCase() + store.substr(1) + 'Adapter'];</td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> this.cs = new this.CS();</td></tr><tr class="hit"> <td class="line">26</td><td class="hits">1</td><td class="source"> app.config.cache.index = index;</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> app.config.cache.enabled = false;</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">32</td><td class="hits">1</td><td class="source"> CacheStore.prototype.tag = function(key, tag) {</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> return this.cs.tag(key, tag);</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">38</td><td class="hits">1</td><td class="source"> CacheStore.hash = function(key) {</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">40</td><td class="hits">0</td><td class="source"> return this.CS.hash(key);</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">44</td><td class="hits">1</td><td class="source"> CacheStore.prototype.hashTag = function(key, tag) {</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> return this.cs.hashTag(key, tag);</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">50</td><td class="hits">1</td><td class="source"> CacheStore.prototype.read = function(key, cb, expire) {</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> return this.cs.read(key, cb, expire);</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">61</td><td class="hits">1</td><td class="source"> CacheStore.static_read = function(key, cb, expire) {</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">64</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">66</td><td class="hits">0</td><td class="source"> return this.CS.static_read(key, cb, expire);</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">68</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">71</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">72</td><td class="hits">1</td><td class="source"> CacheStore.prototype.write = function(key, val, cb, expire) {</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">74</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">76</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">77</td><td class="hits">0</td><td class="source"> return this.cs.write(key, val, cb, expire);</td></tr><tr><td class="line">78</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">79</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">81</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">82</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">83</td><td class="hits">1</td><td class="source"> CacheStore.prototype.flush = function(key, cb) {</td></tr><tr class="miss"> <td class="line">84</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> return this.cs.flush(key, cb);</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">87</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">91</td><td class="hits">1</td><td class="source"> CacheStore.prototype.getNameSpace = function(key, cb) {</td></tr><tr class="miss"> <td class="line">92</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> return this.cs.getNameSpace(key, cb);</td></tr><tr><td class="line">94</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">95</td><td class="hits">0</td><td class="source"> return cb(false);</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">99</td><td class="hits">1</td><td class="source"> CacheStore.prototype.setNameSpace = function(key, cb, res) {</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> return this.cs.setNameSpace(key, cb, res);</td></tr><tr><td class="line">102</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">103</td><td class="hits">0</td><td class="source"> return res(true);</td></tr><tr><td class="line">104</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">107</td><td class="hits">1</td><td class="source"> CacheStore.prototype.flushNameSpace = function(key, cb) {</td></tr><tr class="hit"> <td class="line">108</td><td class="hits">15</td><td class="source"> if (app.config.cache.enabled) {</td></tr><tr class="hit"> <td class="line">109</td><td class="hits">15</td><td class="source"> return this.cs.flushNameSpace(key, cb);</td></tr><tr><td class="line">110</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">111</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">113</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">114</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">115</td><td class="hits">1</td><td class="source"> CacheStore.prototype.cacheCheck = function() {</td></tr><tr class="miss"> <td class="line">116</td><td class="hits">0</td><td class="source"> var i, start, val, _i, _results,</td></tr><tr><td class="line">117</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">118</td><td class="hits">0</td><td class="source"> start = !app.config.cache.enabled ? app.config.cache.stores.length - 1 : app.config.cache.index;</td></tr><tr class="miss"> <td class="line">119</td><td class="hits">0</td><td class="source"> if (start < 0) {</td></tr><tr class="miss"> <td class="line">120</td><td class="hits">0</td><td class="source"> return;</td></tr><tr><td class="line">121</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">122</td><td class="hits">0</td><td class="source"> val = 'test';</td></tr><tr class="miss"> <td class="line">123</td><td class="hits">0</td><td class="source"> _results = [];</td></tr><tr class="miss"> <td class="line">124</td><td class="hits">0</td><td class="source"> for (i = _i = start; _i >= 0; i = _i += -1) {</td></tr><tr class="miss"> <td class="line">125</td><td class="hits">0</td><td class="source"> _results.push((function(i) {</td></tr><tr class="miss"> <td class="line">126</td><td class="hits">0</td><td class="source"> var Store, key, store;</td></tr><tr class="miss"> <td class="line">127</td><td class="hits">0</td><td class="source"> store = app.config.cache.stores[i];</td></tr><tr class="miss"> <td class="line">128</td><td class="hits">0</td><td class="source"> Store = app.modules.lib.Cache[store.charAt(0).toUpperCase() + store.substr(1) + 'Adapter'];</td></tr><tr class="miss"> <td class="line">129</td><td class="hits">0</td><td class="source"> store = new Store();</td></tr><tr class="miss"> <td class="line">130</td><td class="hits">0</td><td class="source"> key = Store.hash(val);</td></tr><tr class="miss"> <td class="line">131</td><td class="hits">0</td><td class="source"> return store.write(key, val, function(err, res, change) {</td></tr><tr class="miss"> <td class="line">132</td><td class="hits">0</td><td class="source"> if (change) {</td></tr><tr class="miss"> <td class="line">133</td><td class="hits">0</td><td class="source"> if (i + 1 > app.config.cache.index) {</td></tr><tr class="miss"> <td class="line">134</td><td class="hits">0</td><td class="source"> app.options.cache.changeStore(i + 1);</td></tr><tr class="miss"> <td class="line">135</td><td class="hits">0</td><td class="source"> return _this.cacheCheck();</td></tr><tr><td class="line">136</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">137</td><td class="hits">0</td><td class="source"> } else if (!err) {</td></tr><tr class="miss"> <td class="line">138</td><td class="hits">0</td><td class="source"> return store.flush(key, function(err, res, change) {</td></tr><tr class="miss"> <td class="line">139</td><td class="hits">0</td><td class="source"> if (change) {</td></tr><tr class="miss"> <td class="line">140</td><td class="hits">0</td><td class="source"> if (i + 1 > app.config.cache.index) {</td></tr><tr class="miss"> <td class="line">141</td><td class="hits">0</td><td class="source"> app.options.cache.changeStore(i + 1);</td></tr><tr class="miss"> <td class="line">142</td><td class="hits">0</td><td class="source"> return _this.cacheCheck();</td></tr><tr><td class="line">143</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">144</td><td class="hits">0</td><td class="source"> } else if (!err) {</td></tr><tr class="miss"> <td class="line">145</td><td class="hits">0</td><td class="source"> if (i < app.config.cache.index) {</td></tr><tr class="miss"> <td class="line">146</td><td class="hits">0</td><td class="source"> app.options.cache.changeStore(i);</td></tr><tr><td class="line">147</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">148</td><td class="hits">0</td><td class="source"> return app.config.cache.enabled = true;</td></tr><tr><td class="line">149</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">150</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">151</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">152</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">153</td><td class="hits"></td><td class="source"> })(i));</td></tr><tr><td class="line">154</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">155</td><td class="hits">0</td><td class="source"> return _results;</td></tr><tr><td class="line">156</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">157</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">158</td><td class="hits">1</td><td class="source"> return CacheStore;</td></tr><tr><td class="line">159</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">160</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">161</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">162</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/Cdn.js">lib/Cdn.js</h2><div id="stats" class="terrible"><div class="percentage">14%</div><div class="sloc">56</div><div class="hits">8</div><div class="misses">48</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var CDN, createTag, renderAttributes, renderTag, throwError;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> throwError = function(msg) {</td></tr><tr class="miss"> <td class="line">6</td><td class="hits">0</td><td class="source"> throw new Error("CDN: " + msg);</td></tr><tr><td class="line">7</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> renderAttributes = function(attributes) {</td></tr><tr class="miss"> <td class="line">10</td><td class="hits">0</td><td class="source"> var name, str;</td></tr><tr class="miss"> <td class="line">11</td><td class="hits">0</td><td class="source"> str = [];</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> for (name in attributes) {</td></tr><tr class="miss"> <td class="line">13</td><td class="hits">0</td><td class="source"> str.push(escape(name) + "=\"" + escape(attributes[name]) + "\"");</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">15</td><td class="hits">0</td><td class="source"> return str.sort().join(" ");</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">18</td><td class="hits">1</td><td class="source"> renderTag = function(options, assets, attributes) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> var buf, i, position, src;</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> attributes = attributes || {};</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> src = "";</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> position = void 0;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> if (options.production) {</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> src = "//" + options.domain;</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> buf = [];</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> if (typeof assets === "object") {</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> i = 0;</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> while (i < assets.length) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> buf.push(createTag(src, assets[i], attributes));</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> if ((i + 1) === assets.length) {</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> return buf.join("\n") + "\n";</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> i += 1;</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> } else if (typeof assets === "string") {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return createTag(src, assets, attributes) + "\n";</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> return throwError("asset was not a string or an array");</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">43</td><td class="hits">1</td><td class="source"> createTag = function(src, asset, attributes) {</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> var urlItems;</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> urlItems = asset.split("/");</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> urlItems.shift();</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> switch (urlItems[0]) {</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> case "js":</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> attributes.type = attributes.type || "text/javascript";</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> attributes.src = src + asset;</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> return "<script " + renderAttributes(attributes) + "></script>";</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> case "css":</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> attributes.rel = attributes.rel || "stylesheet";</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> attributes.href = src + asset;</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> return "<link " + renderAttributes(attributes) + " />";</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> case "img":</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> attributes.src = src + asset;</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> return "<img " + renderAttributes(attributes) + " />";</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> default:</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> return throwError("unknown asset type");</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">63</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">64</td><td class="hits">1</td><td class="source"> CDN = function(app, options) {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> var required;</td></tr><tr class="miss"> <td class="line">66</td><td class="hits">0</td><td class="source"> if (typeof app !== "function") {</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> throwError("requires express");</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">69</td><td class="hits">0</td><td class="source"> required = ["domain", "hostname", "port", "production"];</td></tr><tr class="miss"> <td class="line">70</td><td class="hits">0</td><td class="source"> required.forEach(function(index) {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> if (typeof options[index] === "undefined") {</td></tr><tr class="miss"> <td class="line">72</td><td class="hits">0</td><td class="source"> return throwError("missing option \"" + options[index] + "\"");</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> return function(req, res) {</td></tr><tr class="miss"> <td class="line">76</td><td class="hits">0</td><td class="source"> return function(assets, attributes) {</td></tr><tr class="miss"> <td class="line">77</td><td class="hits">0</td><td class="source"> if (typeof assets === "undefined") {</td></tr><tr class="miss"> <td class="line">78</td><td class="hits">0</td><td class="source"> throwError("assets undefined");</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">80</td><td class="hits">0</td><td class="source"> return renderTag(options, assets, attributes);</td></tr><tr><td class="line">81</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">82</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">85</td><td class="hits">1</td><td class="source"> module.exports = CDN;</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/UserState.js">lib/UserState.js</h2><div id="stats" class="high"><div class="percentage">75%</div><div class="sloc">8</div><div class="hits">6</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var UserState;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> UserState = (function() {</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> module.exports = UserState;</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> function UserState() {</td></tr><tr class="miss"> <td class="line">10</td><td class="hits">0</td><td class="source"> this.modules = {};</td></tr><tr class="miss"> <td class="line">11</td><td class="hits">0</td><td class="source"> this.modules.selected = 'home';</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> return UserState;</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/Grid.js">lib/Grid.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">17</div><div class="hits">11</div><div class="misses">6</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Grid;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> Grid = (function() {</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> module.exports = Grid;</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> function Grid() {</td></tr><tr class="miss"> <td class="line">10</td><td class="hits">0</td><td class="source"> this.d = {</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> headers: [],</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> columns: [],</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> records: [],</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> actions: {}</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">18</td><td class="hits">1</td><td class="source"> Grid.prototype.addHeaderLabel = function(data) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return this.d.headers.push(data);</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> Grid.prototype.addMasterColumn = function(data) {</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> return this.d.columns.push(data);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">26</td><td class="hits">1</td><td class="source"> Grid.prototype.addAction = function(data) {</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> return this.d.actions[data.id] = data;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">30</td><td class="hits">1</td><td class="source"> Grid.prototype.addRecord = function(data) {</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> return this.d.records.push(data);</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">34</td><td class="hits">1</td><td class="source"> Grid.prototype.result = function() {</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> return this.d;</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">38</td><td class="hits">1</td><td class="source"> return Grid;</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/JsonRpcServer.js">lib/JsonRpcServer.js</h2><div id="stats" class="medium"><div class="percentage">60%</div><div class="sloc">103</div><div class="hits">62</div><div class="misses">41</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var JsonRpcServer, fs, path_module,</td></tr><tr class="miss"> <td class="line">4</td><td class="hits">0</td><td class="source"> __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };</td></tr><tr><td class="line">5</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">6</td><td class="hits">1</td><td class="source"> fs = require('fs');</td></tr><tr><td class="line">7</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">8</td><td class="hits">1</td><td class="source"> path_module = require('path');</td></tr><tr><td class="line">9</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">10</td><td class="hits">1</td><td class="source"> JsonRpcServer = (function() {</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">12</td><td class="hits">1</td><td class="source"> module.exports = JsonRpcServer;</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> JsonRpcServer.PARSE_ERROR = -32700;</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> JsonRpcServer.INVALID_REQUEST = -32600;</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">18</td><td class="hits">1</td><td class="source"> JsonRpcServer.METHOD_NOT_FOUND = -32601;</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">20</td><td class="hits">1</td><td class="source"> JsonRpcServer.INVALID_PARAMS = -32602;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> JsonRpcServer.INTERNAL_ERROR = -32603;</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">24</td><td class="hits">1</td><td class="source"> function JsonRpcServer() {</td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> this.registeredMethods = {};</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">28</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.registerMethods = function(basePath, path) {</td></tr><tr class="hit"> <td class="line">29</td><td class="hits">27</td><td class="source"> var files,</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="hit"> <td class="line">31</td><td class="hits">27</td><td class="source"> if (basePath == null) {</td></tr><tr class="hit"> <td class="line">32</td><td class="hits">1</td><td class="source"> basePath = __dirname + '/../api';</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">34</td><td class="hits">27</td><td class="source"> if (path == null) {</td></tr><tr class="hit"> <td class="line">35</td><td class="hits">1</td><td class="source"> path = null;</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">37</td><td class="hits">27</td><td class="source"> if (path === null) {</td></tr><tr class="hit"> <td class="line">38</td><td class="hits">1</td><td class="source"> path = basePath;</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">40</td><td class="hits">27</td><td class="source"> if (path === basePath) {</td></tr><tr class="hit"> <td class="line">41</td><td class="hits">1</td><td class="source"> console.log("Registering JSON-RPC methods...");</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">43</td><td class="hits">27</td><td class="source"> try {</td></tr><tr class="hit"> <td class="line">44</td><td class="hits">27</td><td class="source"> files = fs.readdirSync(path);</td></tr><tr class="hit"> <td class="line">45</td><td class="hits">12</td><td class="source"> files.forEach(function(file) {</td></tr><tr class="hit"> <td class="line">46</td><td class="hits">26</td><td class="source"> if (file.substr(0, 1) !== '.') {</td></tr><tr class="hit"> <td class="line">47</td><td class="hits">26</td><td class="source"> return _this.registerMethods(basePath, path + '/' + file);</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> } catch (e) {</td></tr><tr class="hit"> <td class="line">51</td><td class="hits">15</td><td class="source"> this.registerMethod(path.substr(basePath.length + 1, path.length - 8 - basePath.length), path);</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">53</td><td class="hits">27</td><td class="source"> if (path === basePath) {</td></tr><tr class="hit"> <td class="line">54</td><td class="hits">1</td><td class="source"> return console.log();</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">57</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">58</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.getController = function(path) {</td></tr><tr class="hit"> <td class="line">59</td><td class="hits">15</td><td class="source"> var controller, ext, folders, i, module, start, _i, _ref;</td></tr><tr class="hit"> <td class="line">60</td><td class="hits">15</td><td class="source"> controller = app.modules;</td></tr><tr class="hit"> <td class="line">61</td><td class="hits">15</td><td class="source"> path = path_module.resolve(path);</td></tr><tr class="hit"> <td class="line">62</td><td class="hits">15</td><td class="source"> ext = path_module.extname(path);</td></tr><tr class="hit"> <td class="line">63</td><td class="hits">15</td><td class="source"> module = path_module.basename(path, ext);</td></tr><tr class="hit"> <td class="line">64</td><td class="hits">15</td><td class="source"> path = path_module.dirname(path);</td></tr><tr class="hit"> <td class="line">65</td><td class="hits">15</td><td class="source"> folders = path.split(path_module.sep);</td></tr><tr class="hit"> <td class="line">66</td><td class="hits">15</td><td class="source"> start = folders.indexOf('api');</td></tr><tr class="hit"> <td class="line">67</td><td class="hits">15</td><td class="source"> if (start >= 0) {</td></tr><tr class="hit"> <td class="line">68</td><td class="hits">15</td><td class="source"> for (i = _i = start, _ref = folders.length - 1; start <= _ref ? _i <= _ref : _i >= _ref; i = start <= _ref ? ++_i : --_i) {</td></tr><tr class="hit"> <td class="line">69</td><td class="hits">42</td><td class="source"> controller = controller[folders[i]];</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> }</td></tr><tr class="hit"> <td class="line">71</td><td class="hits">15</td><td class="source"> return controller[module];</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> return false;</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">77</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.registerMethod = function(name, path) {</td></tr><tr class="hit"> <td class="line">78</td><td class="hits">15</td><td class="source"> var controller;</td></tr><tr class="hit"> <td class="line">79</td><td class="hits">15</td><td class="source"> console.log(" JSON-RPC Method '" + name + "'");</td></tr><tr class="hit"> <td class="line">80</td><td class="hits">15</td><td class="source"> controller = this.getController(path);</td></tr><tr class="hit"> <td class="line">81</td><td class="hits">15</td><td class="source"> this.registeredMethods[name] = controller;</td></tr><tr class="hit"> <td class="line">82</td><td class="hits">15</td><td class="source"> return this.flushCache(name);</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">85</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.flushCache = function(url) {</td></tr><tr class="hit"> <td class="line">86</td><td class="hits">15</td><td class="source"> var method;</td></tr><tr class="hit"> <td class="line">87</td><td class="hits">15</td><td class="source"> if ((app.config.flush != null) && (app.config.flush === 'all' || __indexOf.call(app.config.flush, url) >= 0)) {</td></tr><tr class="hit"> <td class="line">88</td><td class="hits">15</td><td class="source"> method = new this.registeredMethods[url];</td></tr><tr class="hit"> <td class="line">89</td><td class="hits">15</td><td class="source"> return method.delDataFromCache(url);</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">91</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">93</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.handleRequest = function(req, res) {</td></tr><tr class="miss"> <td class="line">94</td><td class="hits">0</td><td class="source"> return this.handleCall(req.body, res, req);</td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">97</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.call = function(method, params, callback) {</td></tr><tr class="miss"> <td class="line">98</td><td class="hits">0</td><td class="source"> return this.handleRawCall({</td></tr><tr><td class="line">99</td><td class="hits"></td><td class="source"> 'jsonrpc': '2.0',</td></tr><tr><td class="line">100</td><td class="hits"></td><td class="source"> 'method': method,</td></tr><tr><td class="line">101</td><td class="hits"></td><td class="source"> 'params': params,</td></tr><tr><td class="line">102</td><td class="hits"></td><td class="source"> 'id': 1</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> }, function(data) {</td></tr><tr class="miss"> <td class="line">104</td><td class="hits">0</td><td class="source"> var res;</td></tr><tr class="miss"> <td class="line">105</td><td class="hits">0</td><td class="source"> res = JSON.parse(data);</td></tr><tr class="miss"> <td class="line">106</td><td class="hits">0</td><td class="source"> return callback(res.result, res.error);</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">108</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">110</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.handleRawCall = function(call, callback, options) {</td></tr><tr class="miss"> <td class="line">111</td><td class="hits">0</td><td class="source"> var obj, req, result,</td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">113</td><td class="hits">0</td><td class="source"> if (options == null) {</td></tr><tr class="miss"> <td class="line">114</td><td class="hits">0</td><td class="source"> options = {};</td></tr><tr><td class="line">115</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">116</td><td class="hits">0</td><td class="source"> if (call.id === void 0) {</td></tr><tr class="miss"> <td class="line">117</td><td class="hits">0</td><td class="source"> result = JsonRpcServer.Error(null, "No 'id' provided.", JsonRpcServer.INVALID_REQUEST);</td></tr><tr class="miss"> <td class="line">118</td><td class="hits">0</td><td class="source"> } else if (call.jsonrpc === void 0 || call.jsonrpc !== '2.0') {</td></tr><tr class="miss"> <td class="line">119</td><td class="hits">0</td><td class="source"> result = JsonRpcServer.Error(call.id, "Only accepted JSON-RPC version is '2.0'", JsonRpcServer.INVALID_REQUEST);</td></tr><tr class="miss"> <td class="line">120</td><td class="hits">0</td><td class="source"> } else if (call.method === void 0) {</td></tr><tr class="miss"> <td class="line">121</td><td class="hits">0</td><td class="source"> result = JsonRpcServer.Error(null, "No 'method' provided.", JsonRpcServer.INVALID_REQUEST);</td></tr><tr class="miss"> <td class="line">122</td><td class="hits">0</td><td class="source"> } else if (call.params === void 0) {</td></tr><tr class="miss"> <td class="line">123</td><td class="hits">0</td><td class="source"> result = JsonRpcServer.Error(null, "No 'params' provided.", JsonRpcServer.INVALID_REQUEST);</td></tr><tr class="miss"> <td class="line">124</td><td class="hits">0</td><td class="source"> } else if (this.registeredMethods[call.method] === void 0) {</td></tr><tr class="miss"> <td class="line">125</td><td class="hits">0</td><td class="source"> result = JsonRpcServer.Error(null, "No such method '" + call.method + "'.", JsonRpcServer.METHOD_NOT_FOUND);</td></tr><tr><td class="line">126</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">127</td><td class="hits">0</td><td class="source"> if (result) {</td></tr><tr class="miss"> <td class="line">128</td><td class="hits">0</td><td class="source"> return callback(JSON.stringify(result));</td></tr><tr><td class="line">129</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">130</td><td class="hits">0</td><td class="source"> req = new app.modules.lib.JsonRpcRequest(call, function(result, error) {</td></tr><tr class="miss"> <td class="line">131</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">132</td><td class="hits">0</td><td class="source"> if (error == null) {</td></tr><tr class="miss"> <td class="line">133</td><td class="hits">0</td><td class="source"> error = null;</td></tr><tr><td class="line">134</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">135</td><td class="hits">0</td><td class="source"> if (error) {</td></tr><tr class="miss"> <td class="line">136</td><td class="hits">0</td><td class="source"> r = JsonRpcServer.Error(call.id, error, JsonRpcServer.INTERNAL_ERROR);</td></tr><tr><td class="line">137</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">138</td><td class="hits">0</td><td class="source"> r = JsonRpcServer.Success(call.id, result);</td></tr><tr><td class="line">139</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">140</td><td class="hits">0</td><td class="source"> return callback(JSON.stringify(r));</td></tr><tr><td class="line">141</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">142</td><td class="hits">0</td><td class="source"> req.options = options;</td></tr><tr class="miss"> <td class="line">143</td><td class="hits">0</td><td class="source"> obj = new this.registeredMethods[call.method];</td></tr><tr class="miss"> <td class="line">144</td><td class="hits">0</td><td class="source"> return req.validate(obj, function() {</td></tr><tr class="miss"> <td class="line">145</td><td class="hits">0</td><td class="source"> return obj.run(req, call.method);</td></tr><tr><td class="line">146</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">147</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">148</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">149</td><td class="hits">1</td><td class="source"> JsonRpcServer.prototype.handleCall = function(call, res, req) {</td></tr><tr class="miss"> <td class="line">150</td><td class="hits">0</td><td class="source"> return this.handleRawCall(call, function(raw_result) {</td></tr><tr class="miss"> <td class="line">151</td><td class="hits">0</td><td class="source"> res.write(raw_result);</td></tr><tr class="miss"> <td class="line">152</td><td class="hits">0</td><td class="source"> return res.end();</td></tr><tr><td class="line">153</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">154</td><td class="hits"></td><td class="source"> 'res': res,</td></tr><tr><td class="line">155</td><td class="hits"></td><td class="source"> 'req': req</td></tr><tr><td class="line">156</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">157</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">158</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">159</td><td class="hits">1</td><td class="source"> JsonRpcServer.Success = function(id, result) {</td></tr><tr class="miss"> <td class="line">160</td><td class="hits">0</td><td class="source"> return {</td></tr><tr><td class="line">161</td><td class="hits"></td><td class="source"> 'jsonrpc': '2.0',</td></tr><tr><td class="line">162</td><td class="hits"></td><td class="source"> 'result': result,</td></tr><tr><td class="line">163</td><td class="hits"></td><td class="source"> 'id': id</td></tr><tr><td class="line">164</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">165</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">166</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">167</td><td class="hits">1</td><td class="source"> JsonRpcServer.Error = function(id, errorMsg, errorCode) {</td></tr><tr class="miss"> <td class="line">168</td><td class="hits">0</td><td class="source"> if (errorCode == null) {</td></tr><tr class="miss"> <td class="line">169</td><td class="hits">0</td><td class="source"> errorCode = JsonRpcServer.INTERNAL_ERROR;</td></tr><tr><td class="line">170</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">171</td><td class="hits">0</td><td class="source"> return {</td></tr><tr><td class="line">172</td><td class="hits"></td><td class="source"> 'jsonrpc': '2.0',</td></tr><tr><td class="line">173</td><td class="hits"></td><td class="source"> 'error': {</td></tr><tr><td class="line">174</td><td class="hits"></td><td class="source"> 'message': errorMsg,</td></tr><tr><td class="line">175</td><td class="hits"></td><td class="source"> 'code': errorCode</td></tr><tr><td class="line">176</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">177</td><td class="hits"></td><td class="source"> 'id': id</td></tr><tr><td class="line">178</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">179</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">180</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">181</td><td class="hits">1</td><td class="source"> return JsonRpcServer;</td></tr><tr><td class="line">182</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">183</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">184</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">185</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/SessionStore.js">lib/SessionStore.js</h2><div id="stats" class="low"><div class="percentage">32%</div><div class="sloc">53</div><div class="hits">17</div><div class="misses">36</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var SessionStore, util,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> util = require('util');</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> SessionStore = (function(_super) {</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> __extends(SessionStore, _super);</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> module.exports = SessionStore;</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> function SessionStore() {</td></tr><tr class="miss"> <td class="line">16</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">17</td><td class="hits">0</td><td class="source"> this.sessions = {};</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> this.Store = new (app.config.store === 'memcache' ? require('./MemcacheStore') : require('./FileStore'));</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> this.Store.read('session_data', function(err, data) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> return console.error(err);</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> return _this.sessions = JSON.parse(data);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">28</td><td class="hits">1</td><td class="source"> SessionStore.prototype.defaultCallback = function(err) {};</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">30</td><td class="hits">1</td><td class="source"> SessionStore.prototype.get = function(sid, cb) {</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> return cb(null, this.sessions[sid]);</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">37</td><td class="hits">1</td><td class="source"> SessionStore.prototype.set = function(sid, data, cb) {</td></tr><tr class="miss"> <td class="line">38</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> this.sessions[sid] = data;</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> return this.save(function() {</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> return cb(null);</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">47</td><td class="hits">1</td><td class="source"> SessionStore.prototype.save = function(cb) {</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> return this.Store.write("session_data", JSON.stringify(this.sessions), function(err) {</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> console.log(err);</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> console.error("Session data could not be saved: " + err);</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> console.log("Session data saved.");</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> return cb();</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">57</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">59</td><td class="hits">1</td><td class="source"> SessionStore.prototype.destroy = function(sid, cb) {</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> delete this.sessions[sid];</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> return this.save(function() {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> return cb(null);</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">69</td><td class="hits">1</td><td class="source"> SessionStore.prototype.all = function(cb) {</td></tr><tr class="miss"> <td class="line">70</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> return cb(this.sessions);</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">76</td><td class="hits">1</td><td class="source"> SessionStore.prototype.clear = function(cb) {</td></tr><tr class="miss"> <td class="line">77</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">78</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">80</td><td class="hits">0</td><td class="source"> this.sessions = {};</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> return cb();</td></tr><tr><td class="line">82</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">84</td><td class="hits">1</td><td class="source"> SessionStore.prototype.length = function(cb) {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">86</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">88</td><td class="hits">0</td><td class="source"> return cb(this.sessions.length);</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">91</td><td class="hits">1</td><td class="source"> return SessionStore;</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">93</td><td class="hits"></td><td class="source"> })(require('express').session.Store);</td></tr><tr><td class="line">94</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/StateStore.js">lib/StateStore.js</h2><div id="stats" class="low"><div class="percentage">33%</div><div class="sloc">53</div><div class="hits">18</div><div class="misses">35</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var StateStore, fs;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> fs = require('fs');</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> StateStore = (function() {</td></tr><tr class="hit"> <td class="line">8</td><td class="hits">1</td><td class="source"> var _this = this;</td></tr><tr><td class="line">9</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">10</td><td class="hits">1</td><td class="source"> module.exports = StateStore;</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">12</td><td class="hits">1</td><td class="source"> function StateStore() {</td></tr><tr class="miss"> <td class="line">13</td><td class="hits">0</td><td class="source"> this.users = {};</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> fs.readFile('state_data', 'utf8', function(err, data) {</td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> if (err) {</td></tr><tr class="hit"> <td class="line">18</td><td class="hits">1</td><td class="source"> return console.error(err);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> return StateStore.users = JSON.parse(data);</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">24</td><td class="hits">1</td><td class="source"> StateStore.prototype.defaultCallback = function() {};</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">26</td><td class="hits">1</td><td class="source"> StateStore.prototype.get = function(user_id, cb) {</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> if (!this.users[user_id]) {</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> this.users[user_id] = new app.modules.lib.UserState();</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> this.save();</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> return cb(this.users[user_id]);</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">34</td><td class="hits">1</td><td class="source"> StateStore.prototype.set = function(user_id, data, cb) {</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> this.users[user_id] = data;</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> return this.save(function() {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return cb(null);</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">41</td><td class="hits">1</td><td class="source"> StateStore.prototype.reset = function(user_id, cb) {</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> this.users[user_id] = new app.modules.lib.UserState();</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> return this.save(function() {</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> return cb(_this.users[user_id]);</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">49</td><td class="hits">1</td><td class="source"> StateStore.prototype.update = function(user_id, name, value, cb) {</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> var i, part, parts, path, _i, _len,</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> if (!this.users[user_id]) {</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> this.users[user_id] = new app.modules.lib.UserState();</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> parts = name.split(/\./);</td></tr><tr class="miss"> <td class="line">56</td><td class="hits">0</td><td class="source"> for (i = _i = 0, _len = parts.length; _i < _len; i = ++_i) {</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> part = parts[i];</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> if (i === 0) {</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> continue;</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> path = parts.slice(0, i).join("']['");</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> eval("if(this.users[user_id]['" + path + "'] == undefined) this.users[user_id]['" + path + "'] = {};");</td></tr><tr><td class="line">63</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> eval("this.users[user_id]['" + parts.join("']['") + "'] = value;");</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> return this.save(function() {</td></tr><tr class="miss"> <td class="line">66</td><td class="hits">0</td><td class="source"> return cb(_this.users[user_id]);</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">70</td><td class="hits">1</td><td class="source"> StateStore.prototype.save = function(cb) {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> if (cb == null) {</td></tr><tr class="miss"> <td class="line">72</td><td class="hits">0</td><td class="source"> cb = this.defaultCallback;</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">74</td><td class="hits">0</td><td class="source"> return fs.writeFile("state_data", JSON.stringify(this.users), function(err) {</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">76</td><td class="hits">0</td><td class="source"> console.error("State data could not be saved: " + err);</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">78</td><td class="hits">0</td><td class="source"> console.log("State data saved.");</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">80</td><td class="hits">0</td><td class="source"> return cb();</td></tr><tr><td class="line">81</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">82</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">84</td><td class="hits">1</td><td class="source"> StateStore.prototype.destroy = function(user_id, cb) {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> delete this.users[user_id];</td></tr><tr class="miss"> <td class="line">86</td><td class="hits">0</td><td class="source"> return cb(null);</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">89</td><td class="hits">1</td><td class="source"> return StateStore;</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">91</td><td class="hits"></td><td class="source"> }).call(this);</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">93</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/SocketIoServer.js">lib/SocketIoServer.js</h2><div id="stats" class="medium"><div class="percentage">65%</div><div class="sloc">23</div><div class="hits">15</div><div class="misses">8</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var SocketIoServer, fs, jade;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> jade = require('jade');</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> fs = require('fs');</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> SocketIoServer = (function() {</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = SocketIoServer;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function SocketIoServer() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> this.clients = [];</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> SocketIoServer.prototype.setJsonRpcServer = function(jsonRpcServer) {</td></tr><tr class="hit"> <td class="line">18</td><td class="hits">1</td><td class="source"> return this.jsonRpcServer = jsonRpcServer;</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> SocketIoServer.prototype.setupListeners = function(client) {};</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">23</td><td class="hits">1</td><td class="source"> SocketIoServer.prototype.addClient = function(client) {</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> console.log("SocketIOServer: addClient " + client);</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> this.setupListeners(client);</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> return this.clients.push(client);</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">29</td><td class="hits">1</td><td class="source"> SocketIoServer.prototype.receive = function(data) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> return console.log(data);</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">33</td><td class="hits">1</td><td class="source"> SocketIoServer.prototype.broadcastToAll = function() {</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> console.log("BROADCASTING TO " + this.clients.length + " CLIENTS");</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> return this.clients.forEach(function(client) {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return client.emit('notification', {</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> 'data': {</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> 'type': 'preview',</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> 'title': 'Preview',</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> 'time_ago': "" + Math.random() + ' hours',</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">51</td><td class="hits">1</td><td class="source"> return SocketIoServer;</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/JsonRpcRequest.js">lib/JsonRpcRequest.js</h2><div id="stats" class="low"><div class="percentage">27%</div><div class="sloc">70</div><div class="hits">19</div><div class="misses">51</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var JsonRpcRequest;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> JsonRpcRequest = (function() {</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> module.exports = JsonRpcRequest;</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> function JsonRpcRequest(call, callback) {</td></tr><tr class="miss"> <td class="line">10</td><td class="hits">0</td><td class="source"> this.callback = callback;</td></tr><tr class="miss"> <td class="line">11</td><td class="hits">0</td><td class="source"> this.version = call.jsonrpc;</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> this.method = call.method;</td></tr><tr class="miss"> <td class="line">13</td><td class="hits">0</td><td class="source"> this.params = call.params;</td></tr><tr class="miss"> <td class="line">14</td><td class="hits">0</td><td class="source"> this.id = call.id;</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.validate = function(obj, success) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> var def, field, _ref;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> _ref = obj.validate;</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> for (field in _ref) {</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> def = _ref[field];</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> if (def.required === void 0 || !def.required) {</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> if (this.params[field] === void 0 && def["default"] !== void 0) {</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> this.params[field] = def["default"];</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> if (this.params[field] === void 0) {</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> return this.error("Parameter '" + field + "' is required.");</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> /* options </td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> if obj.options</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> if obj.options.requireUserSession</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> if not @validateUserSession()</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> return</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> */</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> </td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> return success();</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">42</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.validateUserSession = function() {</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> var session;</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> session = this.getSession();</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> if (!session || !session.user || !session.user.user_id) {</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> this.logout();</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> return false;</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> return true;</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">52</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.success = function(result) {</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> return this.callback(result);</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">56</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.error = function(message, code) {</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> if (code == null) {</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> code = -32603;</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> return this.callback(null, message);</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">63</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.logout = function(message) {</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> if (message == null) {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> message = '';</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> return this.callback(null, "!logout:" + message);</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">70</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.getSession = function() {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> return this.options.req.session;</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">74</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.getSessionId = function() {</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> return this.options.req.sessionID;</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">78</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.getUserId = function() {</td></tr><tr class="miss"> <td class="line">79</td><td class="hits">0</td><td class="source"> return this.options.req.session.user.user_id;</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">81</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">82</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.getCookies = function() {</td></tr><tr class="miss"> <td class="line">83</td><td class="hits">0</td><td class="source"> return this.options.req.cookies;</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">85</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">86</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.resetSession = function(cb) {</td></tr><tr class="miss"> <td class="line">87</td><td class="hits">0</td><td class="source"> if (!this.options.req.sessionID) {</td></tr><tr class="miss"> <td class="line">88</td><td class="hits">0</td><td class="source"> return cb();</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">90</td><td class="hits">0</td><td class="source"> if (!this.options.req.cookies) {</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> return cb();</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> this.options.req.sessionID = null;</td></tr><tr class="miss"> <td class="line">94</td><td class="hits">0</td><td class="source"> return this.options.req.session.destroy(function() {</td></tr><tr class="miss"> <td class="line">95</td><td class="hits">0</td><td class="source"> return cb();</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">99</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.getState = function(callback, userId) {</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> if (userId === void 0) {</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> return callback(null);</td></tr><tr><td class="line">102</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">103</td><td class="hits">0</td><td class="source"> return app.states.get(userId, function(state) {</td></tr><tr class="miss"> <td class="line">104</td><td class="hits">0</td><td class="source"> return callback(state);</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">108</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">109</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.updateState = function(name, value, success, error, userId) {</td></tr><tr class="miss"> <td class="line">110</td><td class="hits">0</td><td class="source"> if (userId === void 0) {</td></tr><tr class="miss"> <td class="line">111</td><td class="hits">0</td><td class="source"> return error("No user ID.");</td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">113</td><td class="hits">0</td><td class="source"> return app.states.update(userId, name, value, function(state) {</td></tr><tr class="miss"> <td class="line">114</td><td class="hits">0</td><td class="source"> return success(state);</td></tr><tr><td class="line">115</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">116</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">117</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">118</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">119</td><td class="hits">1</td><td class="source"> JsonRpcRequest.prototype.resetState = function(success, error, userId) {</td></tr><tr class="miss"> <td class="line">120</td><td class="hits">0</td><td class="source"> if (userId === void 0) {</td></tr><tr class="miss"> <td class="line">121</td><td class="hits">0</td><td class="source"> return error("No user ID.");</td></tr><tr><td class="line">122</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">123</td><td class="hits">0</td><td class="source"> return app.states.reset(userId, function(state) {</td></tr><tr class="miss"> <td class="line">124</td><td class="hits">0</td><td class="source"> return success(state);</td></tr><tr><td class="line">125</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">126</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">127</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">128</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">129</td><td class="hits">1</td><td class="source"> return JsonRpcRequest;</td></tr><tr><td class="line">130</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">131</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">132</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">133</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/APIController.js">lib/APIController.js</h2><div id="stats" class="low"><div class="percentage">32%</div><div class="sloc">62</div><div class="hits">20</div><div class="misses">42</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var APIController;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> APIController = (function() {</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> module.exports = APIController;</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> function APIController() {</td></tr><tr class="hit"> <td class="line">10</td><td class="hits">15</td><td class="source"> this.params = {</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> 'expires': 60</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> };</td></tr><tr class="hit"> <td class="line">13</td><td class="hits">15</td><td class="source"> this.validate = {};</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">15</td><td class="source"> this.options = {};</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">15</td><td class="source"> this.namespace = '';</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">18</td><td class="hits">1</td><td class="source"> APIController.prototype.run = function(req, url) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> return app.options.cache.getNameSpace(url, function(err, data) {</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return app.options.cache.setNameSpace(url, app.options.cache.cs.getNameSpace, function(err, data) {</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> _this.namespace = data;</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> return _this.ready(req, url);</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> return _this.ready(req, url);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> _this.namespace = data;</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> return _this.ready(req, url);</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">37</td><td class="hits">1</td><td class="source"> APIController.prototype.modMasterParams = function(params) {</td></tr><tr class="miss"> <td class="line">38</td><td class="hits">0</td><td class="source"> var key, val, _results;</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> _results = [];</td></tr><tr class="miss"> <td class="line">40</td><td class="hits">0</td><td class="source"> for (key in params) {</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> val = params[key];</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> _results.push(this.params[key] = val);</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> return _results;</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">47</td><td class="hits">1</td><td class="source"> APIController.prototype.getDataFromCache = function(url, expire, cb) {</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> return app.options.cache.read(url, function(err, data, change) {</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> return cb(err);</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> return cb(void 0, JSON.parse(data));</td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> }, expire);</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">57</td><td class="hits">1</td><td class="source"> APIController.prototype.setDataToCache = function(url, content, expire) {</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> return app.options.cache.write(url, JSON.stringify(content), function(err, data, change) {</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> return console.error("Data cache could not be saved: " + err);</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> return console.log("Data cache saved.");</td></tr><tr><td class="line">63</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">64</td><td class="hits"></td><td class="source"> }, expire);</td></tr><tr><td class="line">65</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">67</td><td class="hits">1</td><td class="source"> APIController.prototype.delDataFromCache = function(ns) {</td></tr><tr class="hit"> <td class="line">68</td><td class="hits">15</td><td class="source"> var _this = this;</td></tr><tr class="hit"> <td class="line">69</td><td class="hits">15</td><td class="source"> return app.options.cache.flushNameSpace(ns, function(err, data, change) {</td></tr><tr class="hit"> <td class="line">70</td><td class="hits">3</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> return console.log(ns + " cache data deleted.");</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">76</td><td class="hits">1</td><td class="source"> APIController.prototype.render = function(cb) {};</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">78</td><td class="hits">1</td><td class="source"> APIController.prototype.ready = function(req, index) {</td></tr><tr class="miss"> <td class="line">79</td><td class="hits">0</td><td class="source"> var url,</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> url = index;</td></tr><tr class="miss"> <td class="line">82</td><td class="hits">0</td><td class="source"> if (this.namespace != null) {</td></tr><tr class="miss"> <td class="line">83</td><td class="hits">0</td><td class="source"> index = app.options.cache.hashTag(index, this.namespace);</td></tr><tr class="miss"> <td class="line">84</td><td class="hits">0</td><td class="source"> return this.getDataFromCache(index, this.params.expires, function(err, content) {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> if (content) {</td></tr><tr class="miss"> <td class="line">86</td><td class="hits">0</td><td class="source"> console.log("Data cache used.");</td></tr><tr class="miss"> <td class="line">87</td><td class="hits">0</td><td class="source"> return req.success(content);</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">89</td><td class="hits">0</td><td class="source"> return _this.render(req, function(err, content) {</td></tr><tr class="miss"> <td class="line">90</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> return req.next(err);</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> _this.setDataToCache(index, content, _this.params.expires);</td></tr><tr class="miss"> <td class="line">94</td><td class="hits">0</td><td class="source"> return req.success(content);</td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> return this.render(req, function(err, content) {</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> return req.next(err);</td></tr><tr><td class="line">102</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">103</td><td class="hits">0</td><td class="source"> return req.success(content);</td></tr><tr><td class="line">104</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">108</td><td class="hits">1</td><td class="source"> return APIController;</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">110</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">111</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/Cache/FileAdapter.js">lib/Cache/FileAdapter.js</h2><div id="stats" class="terrible"><div class="percentage">21%</div><div class="sloc">92</div><div class="hits">20</div><div class="misses">72</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var FileAdapter, crypto, fs, path;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> fs = require('fs');</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> crypto = require('crypto');</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> path = require('path');</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> FileAdapter = (function() {</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> module.exports = FileAdapter;</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> function FileAdapter() {}</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.tag = function(file, folder) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return file = folder + '/' + file;</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> FileAdapter.hash = function(file) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return file = crypto.createHash('md5').update(file).digest('hex');</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.hashTag = function(file, folder) {</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> return this.tag(FileAdapter.hash(file), folder);</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">29</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.read = function(file, cb, expire) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> return fs.stat(app.config.cacheDir + '/' + file, function(err, stat) {</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> var date, now;</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> if (stat) {</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> if (expire !== 0) {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> expire = Math.round(stat.mtime.getTime() / 1000) + stat.mtime.getTimezoneOffset() * 60 + expire;</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">40</td><td class="hits">0</td><td class="source"> now = Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60;</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> if (expire === 0 || expire >= now) {</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> return fs.readFile(app.config.cacheDir + '/' + file, 'utf8', cb);</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">52</td><td class="hits">1</td><td class="source"> FileAdapter.static_read = function(file, cb, expire) {</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">56</td><td class="hits">0</td><td class="source"> return fs.stat(app.config.cacheDir + '/' + file, function(err, stat) {</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> var date, now;</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> if (stat) {</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> if (expire !== 0) {</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> expire = Math.round(stat.mtime.getTime() / 1000) + stat.mtime.getTimezoneOffset() * 60 + expire;</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> now = Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60;</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> if (expire === 0 || expire >= now) {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> return fs.readFile(app.config.cacheDir + '/' + file, 'utf8', cb);</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">70</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">71</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">75</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.write = function(file, data, cb, expire) {</td></tr><tr class="miss"> <td class="line">76</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">77</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">78</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">79</td><td class="hits">0</td><td class="source"> return fs.writeFile(app.config.cacheDir + '/' + file, data, function(err) {</td></tr><tr class="miss"> <td class="line">80</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> return fs.mkdir(app.config.cacheDir + '/' + file.split(path.sep)[0], '0777', cb);</td></tr><tr><td class="line">82</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">83</td><td class="hits">0</td><td class="source"> return cb(err);</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">85</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">88</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.flush = function(file, cb) {</td></tr><tr class="miss"> <td class="line">89</td><td class="hits">0</td><td class="source"> return fs.unlink(app.config.cacheDir + '/' + file, cb);</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">91</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">92</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.getNameSpace = function(file, cb) {</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> return FileAdapter.static_read(FileAdapter.hash(file), cb);</td></tr><tr><td class="line">94</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">96</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.setNameSpace = function(file, cb, res) {</td></tr><tr class="miss"> <td class="line">97</td><td class="hits">0</td><td class="source"> var date, ts;</td></tr><tr class="miss"> <td class="line">98</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> ts = String(Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60);</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> return this.write(FileAdapter.hash(file), ts, function(err, response) {</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">102</td><td class="hits">0</td><td class="source"> return cb(file, res);</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">104</td><td class="hits">0</td><td class="source"> return res(err, response);</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">108</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">109</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.flushNameSpace = function(file, cb) {</td></tr><tr class="miss"> <td class="line">110</td><td class="hits">0</td><td class="source"> var date, ts,</td></tr><tr><td class="line">111</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">112</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">113</td><td class="hits">0</td><td class="source"> ts = String(Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60);</td></tr><tr class="miss"> <td class="line">114</td><td class="hits">0</td><td class="source"> return this.read(FileAdapter.hash(file), function(err, data) {</td></tr><tr class="miss"> <td class="line">115</td><td class="hits">0</td><td class="source"> if (!err && data !== '') {</td></tr><tr class="miss"> <td class="line">116</td><td class="hits">0</td><td class="source"> _this.deleteNameSpaceCache(app.config.cacheDir + '/' + data, function(err, path) {</td></tr><tr class="miss"> <td class="line">117</td><td class="hits">0</td><td class="source"> return fs.rmdir(path, function(err) {});</td></tr><tr><td class="line">118</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">119</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">120</td><td class="hits">0</td><td class="source"> return _this.flush(FileAdapter.hash(file), cb);</td></tr><tr><td class="line">121</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">122</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">123</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">124</td><td class="hits">1</td><td class="source"> FileAdapter.prototype.deleteNameSpaceCache = function(path, cb) {</td></tr><tr class="miss"> <td class="line">125</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">126</td><td class="hits">0</td><td class="source"> return fs.stat(path, function(err, stat) {</td></tr><tr class="miss"> <td class="line">127</td><td class="hits">0</td><td class="source"> if (stat && stat.isDirectory()) {</td></tr><tr class="miss"> <td class="line">128</td><td class="hits">0</td><td class="source"> return fs.readdir(path, function(err, files) {</td></tr><tr class="miss"> <td class="line">129</td><td class="hits">0</td><td class="source"> var pending;</td></tr><tr class="miss"> <td class="line">130</td><td class="hits">0</td><td class="source"> pending = files.length;</td></tr><tr class="miss"> <td class="line">131</td><td class="hits">0</td><td class="source"> if (!pending) {</td></tr><tr class="miss"> <td class="line">132</td><td class="hits">0</td><td class="source"> cb(err, path);</td></tr><tr><td class="line">133</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">134</td><td class="hits">0</td><td class="source"> return files.forEach(function(file) {</td></tr><tr class="miss"> <td class="line">135</td><td class="hits">0</td><td class="source"> if (file.substr(0, 1) !== '.') {</td></tr><tr class="miss"> <td class="line">136</td><td class="hits">0</td><td class="source"> file = path + '/' + file;</td></tr><tr class="miss"> <td class="line">137</td><td class="hits">0</td><td class="source"> return fs.stat(file, function(err, stat) {</td></tr><tr class="miss"> <td class="line">138</td><td class="hits">0</td><td class="source"> if (stat && stat.isFile()) {</td></tr><tr class="miss"> <td class="line">139</td><td class="hits">0</td><td class="source"> return fs.unlink(file, function(err) {</td></tr><tr class="miss"> <td class="line">140</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">141</td><td class="hits">0</td><td class="source"> if (!--pending) {</td></tr><tr class="miss"> <td class="line">142</td><td class="hits">0</td><td class="source"> return cb(err, path);</td></tr><tr><td class="line">143</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">144</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">145</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">146</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">147</td><td class="hits">0</td><td class="source"> return _this.deleteNameSpaceCache(file, function(err, path) {</td></tr><tr class="miss"> <td class="line">148</td><td class="hits">0</td><td class="source"> if (!--pending) {</td></tr><tr class="miss"> <td class="line">149</td><td class="hits">0</td><td class="source"> return cb(err, path);</td></tr><tr><td class="line">150</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">151</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">152</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">153</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">154</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">155</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">156</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">157</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">158</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">159</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">160</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">161</td><td class="hits">1</td><td class="source"> return FileAdapter;</td></tr><tr><td class="line">162</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">163</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">164</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">165</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/Cache/DbAdapter.js">lib/Cache/DbAdapter.js</h2><div id="stats" class="terrible"><div class="percentage">19%</div><div class="sloc">102</div><div class="hits">20</div><div class="misses">82</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var DbAdapter, EventEmitter, crypto, path;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> crypto = require('crypto');</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> path = require('path');</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> EventEmitter = require('events').EventEmitter;</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> DbAdapter = (function() {</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> module.exports = DbAdapter;</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> function DbAdapter() {</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> app.options.dbcache.connect();</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">19</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.tag = function(key, tag) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> return key = tag + '/' + key;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">23</td><td class="hits">1</td><td class="source"> DbAdapter.hash = function(key) {</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return key = crypto.createHash('md5').update(key).digest('hex');</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.hashTag = function(key, tag) {</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> return this.tag(DbAdapter.hash(key), tag);</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">31</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.read = function(key, cb, expire) {</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> var date, split_key, table;</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> split_key = key.split(path.sep);</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> table = split_key.length > 1 ? split_key[0] : 'namespace';</td></tr><tr class="miss"> <td class="line">38</td><td class="hits">0</td><td class="source"> key = split_key.length > 1 ? split_key[1] : key;</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> if (!app.options.dbcache.isConnected()) {</td></tr><tr class="miss"> <td class="line">40</td><td class="hits">0</td><td class="source"> return cb(null, null, true);</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> expire = Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60;</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> return app.options.dbcache.fetchOne('SELECT val FROM `' + table + '` WHERE id = ? AND (expires = 0 OR expires >= ?)', [key, expire], function(err, res) {</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> if (err && (err.code === 'ECONNREFUSED' || err.number === 1049)) {</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> return cb(err, res);</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">56</td><td class="hits">1</td><td class="source"> DbAdapter.static_read = function(key, cb, expire) {</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> var date, split_key, table;</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> split_key = key.split(path.sep);</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> table = split_key.length > 1 ? split_key[0] : 'namespace';</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> key = split_key.length > 1 ? split_key[1] : key;</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> if (!app.options.dbcache.isConnected()) {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> return cb(null, null, true);</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">68</td><td class="hits">0</td><td class="source"> expire = Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60;</td></tr><tr class="miss"> <td class="line">69</td><td class="hits">0</td><td class="source"> return app.options.dbcache.fetchOne('SELECT val FROM `' + table + '` WHERE id = ? AND (expires = 0 OR expires >= ?)', [key, expire], function(err, res) {</td></tr><tr class="miss"> <td class="line">70</td><td class="hits">0</td><td class="source"> if (err && (err.code === 'ECONNREFUSED' || err.number === 1049)) {</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">72</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> return cb(err, res);</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">78</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">81</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.write = function(key, value, cb, expire) {</td></tr><tr class="miss"> <td class="line">82</td><td class="hits">0</td><td class="source"> var date, expires, id, split_key, table,</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> _this = this;</td></tr><tr class="miss"> <td class="line">84</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">87</td><td class="hits">0</td><td class="source"> split_key = key.split(path.sep);</td></tr><tr class="miss"> <td class="line">88</td><td class="hits">0</td><td class="source"> table = split_key.length > 1 ? split_key[0] : 'namespace';</td></tr><tr class="miss"> <td class="line">89</td><td class="hits">0</td><td class="source"> id = split_key.length > 1 ? split_key[1] : key;</td></tr><tr class="miss"> <td class="line">90</td><td class="hits">0</td><td class="source"> if (!app.options.dbcache.isConnected()) {</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> return cb(null, null, true);</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> if (expire !== 0) {</td></tr><tr class="miss"> <td class="line">94</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">95</td><td class="hits">0</td><td class="source"> expires = Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60 + expire;</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">97</td><td class="hits">0</td><td class="source"> expires = expire;</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> return app.options.dbcache.query('REPLACE INTO `' + table + '` VALUES (?, ?, ?)', [id, value, expires], function(err, res) {</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">101</td><td class="hits">0</td><td class="source"> if (err.code === 'ECONNREFUSED' || err.number === 1049) {</td></tr><tr class="miss"> <td class="line">102</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">104</td><td class="hits">0</td><td class="source"> return app.options.dbcache.query('CREATE TABLE IF NOT EXISTS `' + table + '` (id binary(32) NOT NULL, val blob NOT NULL, expires int(11) NOT NULL DEFAULT 0, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8', null, function(err) {</td></tr><tr class="miss"> <td class="line">105</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">106</td><td class="hits">0</td><td class="source"> return _this.write(key, value, cb, expire);</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">108</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">110</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">111</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">113</td><td class="hits">0</td><td class="source"> return cb(err, res);</td></tr><tr><td class="line">114</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">115</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">116</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">117</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">118</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">119</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.flush = function(key, cb) {</td></tr><tr class="miss"> <td class="line">120</td><td class="hits">0</td><td class="source"> var split_key, table;</td></tr><tr class="miss"> <td class="line">121</td><td class="hits">0</td><td class="source"> split_key = key.split(path.sep);</td></tr><tr class="miss"> <td class="line">122</td><td class="hits">0</td><td class="source"> table = split_key.length > 1 ? split_key[0] : 'namespace';</td></tr><tr class="miss"> <td class="line">123</td><td class="hits">0</td><td class="source"> key = split_key.length > 1 ? split_key[1] : key;</td></tr><tr class="miss"> <td class="line">124</td><td class="hits">0</td><td class="source"> if (!app.options.dbcache.isConnected()) {</td></tr><tr class="miss"> <td class="line">125</td><td class="hits">0</td><td class="source"> return cb(null, null, true);</td></tr><tr><td class="line">126</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">127</td><td class="hits">0</td><td class="source"> return app.options.dbcache.query('DELETE FROM `' + table + '` WHERE id = ?', [key], function(err, res) {</td></tr><tr class="miss"> <td class="line">128</td><td class="hits">0</td><td class="source"> if (err && (err.code === 'ECONNREFUSED' || err.number === 1049)) {</td></tr><tr class="miss"> <td class="line">129</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">130</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">131</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">132</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">133</td><td class="hits">0</td><td class="source"> return cb(err, res);</td></tr><tr><td class="line">134</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">135</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">136</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">137</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">138</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">139</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.getNameSpace = function(ns, cb) {</td></tr><tr class="miss"> <td class="line">140</td><td class="hits">0</td><td class="source"> return DbAdapter.static_read(DbAdapter.hash(ns), cb);</td></tr><tr><td class="line">141</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">142</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">143</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.setNameSpace = function(ns, cb, res) {</td></tr><tr class="miss"> <td class="line">144</td><td class="hits">0</td><td class="source"> var date, ts;</td></tr><tr class="miss"> <td class="line">145</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">146</td><td class="hits">0</td><td class="source"> ts = String(Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60);</td></tr><tr class="miss"> <td class="line">147</td><td class="hits">0</td><td class="source"> return this.write(DbAdapter.hash(ns), ts, function(err, response) {</td></tr><tr class="miss"> <td class="line">148</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">149</td><td class="hits">0</td><td class="source"> return cb(ns, res);</td></tr><tr><td class="line">150</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">151</td><td class="hits">0</td><td class="source"> return res(err, response);</td></tr><tr><td class="line">152</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">153</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">154</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">155</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">156</td><td class="hits">1</td><td class="source"> DbAdapter.prototype.flushNameSpace = function(ns, cb) {</td></tr><tr class="miss"> <td class="line">157</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">158</td><td class="hits">0</td><td class="source"> return this.read(DbAdapter.hash(ns), function(err, data) {</td></tr><tr class="miss"> <td class="line">159</td><td class="hits">0</td><td class="source"> if (!err && (data != null)) {</td></tr><tr class="miss"> <td class="line">160</td><td class="hits">0</td><td class="source"> app.options.dbcache.query('DROP TABLE `' + data + '`', null, function(err) {});</td></tr><tr class="miss"> <td class="line">161</td><td class="hits">0</td><td class="source"> return _this.flush(DbAdapter.hash(ns), cb);</td></tr><tr><td class="line">162</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">163</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">164</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">165</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">166</td><td class="hits">1</td><td class="source"> return DbAdapter;</td></tr><tr><td class="line">167</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">168</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">169</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">170</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="lib/Cache/MemcacheAdapter.js">lib/Cache/MemcacheAdapter.js</h2><div id="stats" class="low"><div class="percentage">35%</div><div class="sloc">64</div><div class="hits">23</div><div class="misses">41</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var MemcacheAdapter, crypto;</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">5</td><td class="hits">1</td><td class="source"> crypto = require('crypto');</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> MemcacheAdapter = (function() {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> module.exports = MemcacheAdapter;</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function MemcacheAdapter() {}</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.tag = function(key, tag) {</td></tr><tr class="miss"> <td class="line">14</td><td class="hits">0</td><td class="source"> return key = tag + '/' + key;</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> MemcacheAdapter.hash = function(key) {</td></tr><tr class="hit"> <td class="line">18</td><td class="hits">15</td><td class="source"> return key = crypto.createHash('md5').update(key).digest('hex');</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.hashTag = function(key, tag) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return this.tag(MemcacheAdapter.hash(key), tag);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.read = function(key, cb, expire) {</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> return app.options.memcache.get(key, function(err, res) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> return cb(err, res);</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">40</td><td class="hits">1</td><td class="source"> MemcacheAdapter.static_read = function(key, cb, expire) {</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> return app.options.memcache.get(key, function(err, res) {</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> return cb(err, res);</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">55</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.write = function(key, value, cb, expire) {</td></tr><tr class="miss"> <td class="line">56</td><td class="hits">0</td><td class="source"> if (expire == null) {</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> expire = 0;</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> return app.options.memcache.replace(key, value, expire, function(err, res) {</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> return app.options.memcache.set(key, value, expire, function(err, res) {</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="miss"> <td class="line">66</td><td class="hits">0</td><td class="source"> } else if (!res) {</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> return cb(true);</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">69</td><td class="hits">0</td><td class="source"> return cb(err);</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">71</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> return cb(err);</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">78</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.flush = function(key, cb) {</td></tr><tr class="hit"> <td class="line">79</td><td class="hits">15</td><td class="source"> return app.options.memcache.del(key, function(err, res) {</td></tr><tr class="hit"> <td class="line">80</td><td class="hits">3</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> return cb(err, res, true);</td></tr><tr class="hit"> <td class="line">82</td><td class="hits">3</td><td class="source"> } else if (!res) {</td></tr><tr class="hit"> <td class="line">83</td><td class="hits">3</td><td class="source"> return cb(true);</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> return cb(err);</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">90</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.getNameSpace = function(ns, cb) {</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> return MemcacheAdapter.static_read(MemcacheAdapter.hash(ns), cb);</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">93</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">94</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.setNameSpace = function(ns, cb, res) {</td></tr><tr class="miss"> <td class="line">95</td><td class="hits">0</td><td class="source"> var date, ts;</td></tr><tr class="miss"> <td class="line">96</td><td class="hits">0</td><td class="source"> date = new Date();</td></tr><tr class="miss"> <td class="line">97</td><td class="hits">0</td><td class="source"> ts = String(Math.round(date.getTime() / 1000) + date.getTimezoneOffset() * 60);</td></tr><tr class="miss"> <td class="line">98</td><td class="hits">0</td><td class="source"> return this.write(MemcacheAdapter.hash(ns), ts, function(err, response) {</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> if (!err) {</td></tr><tr class="miss"> <td class="line">100</td><td class="hits">0</td><td class="source"> return cb(ns, res);</td></tr><tr><td class="line">101</td><td class="hits"></td><td class="source"> } else {</td></tr><tr class="miss"> <td class="line">102</td><td class="hits">0</td><td class="source"> return res(err, response);</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">104</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">107</td><td class="hits">1</td><td class="source"> MemcacheAdapter.prototype.flushNameSpace = function(ns, cb) {</td></tr><tr class="hit"> <td class="line">108</td><td class="hits">15</td><td class="source"> return this.flush(MemcacheAdapter.hash(ns), cb);</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">110</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">111</td><td class="hits">1</td><td class="source"> return MemcacheAdapter;</td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">113</td><td class="hits"></td><td class="source"> })();</td></tr><tr><td class="line">114</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">115</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/test.js">controllers/test.js</h2><div id="stats" class="medium"><div class="percentage">56%</div><div class="sloc">16</div><div class="hits">9</div><div class="misses">7</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Test,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Test = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Test, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Test() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Test.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Test;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Test.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> var _this = this;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return req.jsonRpcServer.call(req.query.view, {}, function(result, error) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> if (error) {</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> console.error(error);</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> console.log(result);</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return Modules_Test.__super__.run.apply(_this, arguments);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">28</td><td class="hits">1</td><td class="source"> return Modules_Test;</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/admin.js">controllers/admin.js</h2><div id="stats" class="medium"><div class="percentage">50%</div><div class="sloc">26</div><div class="hits">13</div><div class="misses">13</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Admin, fs, requirejs, util,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> requirejs = require('requirejs');</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> fs = require('fs');</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> util = require('util');</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> Modules_Admin = (function(_super) {</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> __extends(Modules_Admin, _super);</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> module.exports = Modules_Admin;</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">19</td><td class="hits">1</td><td class="source"> function Modules_Admin() {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> Modules_Admin.__super__.constructor.apply(this, arguments);</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> this.modMasterParams({</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> require_conf: 'admin',</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> expires: 10</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> this.view = 'admin';</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">28</td><td class="hits">1</td><td class="source"> Modules_Admin.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> if (!res.locals.everyauth.loggedIn) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> res.redirect('/login');</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> res.view = {</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> id: "spine",</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> layout: true</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> };</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> this.minifyJS();</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return Modules_Admin.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">40</td><td class="hits">1</td><td class="source"> Modules_Admin.prototype.minifyJS = function() {</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> var config;</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> config = {</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> baseUrl: './public/js',</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> mainConfigFile: './public/js/require-config/' + this.params.require_conf + '.js',</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> skipModuleInsertion: true,</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> name: './require-config/' + this.params.require_conf,</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> out: './public/js/require/' + this.params.require_conf + '.js',</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> optimize: 'none',</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> excludeShallow: ["require-config/" + this.params.require_conf]</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> };</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> fs.readFile(app.config.pubDir + '/js/require/' + this.params.require_conf + '.js', 'utf8', function(err, data) {</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> if (err) {</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> return requirejs.optimize(config, function() {});</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> /*</td></tr><tr><td class="line">57</td><td class="hits"></td><td class="source"> fs.exists app.config.pubDir + '/js/require/' + @params.require_conf + '.js', (exists) -></td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> if not exists</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> requirejs.optimize config, () -></td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> */</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">63</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">64</td><td class="hits">1</td><td class="source"> return Modules_Admin;</td></tr><tr><td class="line">65</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/home/ajax.js">controllers/modules/home/ajax.js</h2><div id="stats" class="terrible"><div class="percentage">24%</div><div class="sloc">37</div><div class="hits">9</div><div class="misses">28</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Home_Ajax,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Home_Ajax = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Home_Ajax, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = Modules_Home_Ajax;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function Modules_Home_Ajax() {</td></tr><tr class="miss"> <td class="line">14</td><td class="hits">0</td><td class="source"> Modules_Home_Ajax.__super__.constructor.apply(this, arguments);</td></tr><tr class="miss"> <td class="line">15</td><td class="hits">0</td><td class="source"> this.modMasterParams({</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> expires: 10</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">20</td><td class="hits">1</td><td class="source"> Modules_Home_Ajax.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> res.view.id = 'sidebar';</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> res.view.tabs = [</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> {</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> id: "import-domains",</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> url: "/home/panels/import-domains",</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> "default": true,</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> size: "mini",</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> h1: "import domains",</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> h2: "into portfolio"</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> id: "export-data",</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> url: "/panels/export-data",</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> size: "mini",</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> h1: "export all",</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> h2: "on-screen data"</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> id: "list-forsale",</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> url: "/home/panels/list-forsale",</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> size: "full",</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> h1: "list domains",</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> h2: "for sale"</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> ];</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> res.view.showTradingSummary = req.query.tradingSummary || false;</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> res.view.showDefaultContent = true;</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> res.view.user = {};</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> res.view.user.name = "Protrada testing";</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> res.view.user.type = "Free membership";</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> res.view.user.renewal = "24<sup>th</sup> May, 2012";</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> res.view.portfolioHealth = {};</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> res.view.portfolioHealth["default"] = "<p class='ff-icon-before'>This section can show you at a glance, how healthy your portfolio is (by charting it's ROI%), and also how it is trending. <a href='#'>Read more</a> to learn how to take advantage of this feature.</p>";</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> res.view.satusSummary = {};</td></tr><tr class="miss"> <td class="line">56</td><td class="hits">0</td><td class="source"> res.view.satusSummary.watching = "24";</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> res.view.satusSummary.losing = "2";</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> res.view.satusSummary.winning = "0";</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> res.view.satusSummary.preAuction = "3";</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> res.view.satusSummary.pending = "1";</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> res.view.contentTabs = {};</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> res.view.contentTabs.wholePortfolio = {};</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> res.view.contentTabs.wholePortfolio.title = "Complete domain listing";</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> res.view.contentTabs.wholePortfolio.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> res.view.contentTabs.listedForSale = {};</td></tr><tr class="miss"> <td class="line">66</td><td class="hits">0</td><td class="source"> res.view.contentTabs.listedForSale.title = "Domains listed for sale";</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> res.view.contentTabs.listedForSale.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">68</td><td class="hits">0</td><td class="source"> return Modules_Home_Ajax.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">71</td><td class="hits">1</td><td class="source"> return Modules_Home_Ajax;</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/home/index.js">controllers/modules/home/index.js</h2><div id="stats" class="high"><div class="percentage">76%</div><div class="sloc">13</div><div class="hits">10</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Home, util,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">9</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> util = require('util');</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> Modules_Home = (function(_super) {</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> __extends(Modules_Home, _super);</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> module.exports = Modules_Home;</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> function Modules_Home() {</td></tr><tr class="miss"> <td class="line">16</td><td class="hits">0</td><td class="source"> Modules_Home.__super__.constructor.apply(this, arguments);</td></tr><tr class="miss"> <td class="line">17</td><td class="hits">0</td><td class="source"> this.modMasterParams({</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> id: "defaultSearch"</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> Modules_Home.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> return Modules_Home.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">26</td><td class="hits">1</td><td class="source"> return Modules_Home;</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> })(app.modules.controllers.admin);</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/home/panels/import-domains.js">controllers/modules/home/panels/import-domains.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Home_Panels_ImportDoimains,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Home_Panels_ImportDoimains = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Home_Panels_ImportDoimains, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Home_Panels_ImportDoimains() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Home_Panels_ImportDoimains.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Home_Panels_ImportDoimains;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Home_Panels_ImportDoimains.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_Home_Panels_ImportDoimains.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_Home_Panels_ImportDoimains;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/home/panels/list-forsale.js">controllers/modules/home/panels/list-forsale.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Home_Panels_ListForsale,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Home_Panels_ListForsale = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Home_Panels_ListForsale, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Home_Panels_ListForsale() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Home_Panels_ListForsale.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Home_Panels_ListForsale;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Home_Panels_ListForsale.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_Home_Panels_ListForsale.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_Home_Panels_ListForsale;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/user-settings/ajax.js">controllers/modules/user-settings/ajax.js</h2><div id="stats" class="terrible"><div class="percentage">10%</div><div class="sloc">84</div><div class="hits">9</div><div class="misses">75</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_UserSettings_Ajax,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_UserSettings_Ajax = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_UserSettings_Ajax, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_UserSettings_Ajax() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_UserSettings_Ajax.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_UserSettings_Ajax;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_UserSettings_Ajax.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> res.view.id = 'sidebar';</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> res.view.tabs = [];</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> res.view.user = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> res.view.user.userCanUpgrade = true;</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> res.view.user.fullName = "Andrew Chinn";</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> res.view.user.availableCredits = "657";</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> res.view.user.memberType = "free member";</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> res.view.user.membershipExpires = "(this will never expire)";</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> res.view.user.avatar = {};</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> res.view.user.avatar.hasImage = false;</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> res.view.user.avatar.image = "<img src='moo.gif' alt='user avatar image' />";</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> res.view.user.avatar["default"] = "<span class='avatar-default'>no image linked</span>";</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> res.view.user.social = {};</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> res.view.user.social.hasSocialLinked = true;</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> res.view.user.social.facebook = {};</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> res.view.user.social.facebook.connectedAccount = true;</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> res.view.user.social.facebook.fbUsername = "";</td></tr><tr class="miss"> <td class="line">38</td><td class="hits">0</td><td class="source"> res.view.user.social.facebook["default"] = "<span class='social-default'>no account linked</span>";</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> res.view.user.social.twitter = {};</td></tr><tr class="miss"> <td class="line">40</td><td class="hits">0</td><td class="source"> res.view.user.social.twitter.connectedAccount = false;</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> res.view.user.social.twitter.twUsername = "";</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> res.view.user.social.twitter["default"] = "<span class='social-default'>no account linked</span>";</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts = {};</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying = {};</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.godaddy = {};</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.godaddy.sourceSprite = "GoDaddy";</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.godaddy.isShown = false;</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.godaddy.isAlreadyLinked = true;</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.fabulous = {};</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.fabulous.sourceSprite = "Fabulous";</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.fabulous.isShown = true;</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.fabulous.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.namejet = {};</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.namejet.sourceSprite = "Namejet";</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.namejet.isShown = true;</td></tr><tr class="miss"> <td class="line">56</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.namejet.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.afternic = {};</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.afternic.sourceSprite = "Afternic";</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.afternic.isShown = true;</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.afternic.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.bido = {};</td></tr><tr class="miss"> <td class="line">62</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.bido.sourceSprite = "Bido";</td></tr><tr class="miss"> <td class="line">63</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.bido.isShown = true;</td></tr><tr class="miss"> <td class="line">64</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.bido.isAlreadyLinked = true;</td></tr><tr class="miss"> <td class="line">65</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.pool = {};</td></tr><tr class="miss"> <td class="line">66</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.pool.sourceSprite = "Pool.com";</td></tr><tr class="miss"> <td class="line">67</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.pool.isShown = true;</td></tr><tr class="miss"> <td class="line">68</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.pool.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">69</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.snapNames = {};</td></tr><tr class="miss"> <td class="line">70</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.snapNames.sourceSprite = "Snap Names";</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.snapNames.isShown = true;</td></tr><tr class="miss"> <td class="line">72</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.buying.snapNames.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">73</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling = {};</td></tr><tr class="miss"> <td class="line">74</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.godaddy = {};</td></tr><tr class="miss"> <td class="line">75</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.godaddy.sourceSprite = "GoDaddy";</td></tr><tr class="miss"> <td class="line">76</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.godaddy.isShown = true;</td></tr><tr class="miss"> <td class="line">77</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.godaddy.isAlreadyLinked = true;</td></tr><tr class="miss"> <td class="line">78</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.namejet = {};</td></tr><tr class="miss"> <td class="line">79</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.namejet.sourceSprite = "Namejet";</td></tr><tr class="miss"> <td class="line">80</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.namejet.isShown = true;</td></tr><tr class="miss"> <td class="line">81</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.namejet.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">82</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.sedo = {};</td></tr><tr class="miss"> <td class="line">83</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.sedo.sourceSprite = "Sedo";</td></tr><tr class="miss"> <td class="line">84</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.sedo.isShown = true;</td></tr><tr class="miss"> <td class="line">85</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.sedo.isAlreadyLinked = false;</td></tr><tr class="miss"> <td class="line">86</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.snapNames = {};</td></tr><tr class="miss"> <td class="line">87</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.snapNames.sourceSprite = "Snap Names";</td></tr><tr class="miss"> <td class="line">88</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.snapNames.isShown = true;</td></tr><tr class="miss"> <td class="line">89</td><td class="hits">0</td><td class="source"> res.view.user.externalAccounts.selling.snapNames.isAlreadyLinked = true;</td></tr><tr class="miss"> <td class="line">90</td><td class="hits">0</td><td class="source"> res.view.upgrade = {};</td></tr><tr class="miss"> <td class="line">91</td><td class="hits">0</td><td class="source"> res.view.upgrade.monthlyCost = 49;</td></tr><tr class="miss"> <td class="line">92</td><td class="hits">0</td><td class="source"> return Modules_UserSettings_Ajax.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">93</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">94</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">95</td><td class="hits">1</td><td class="source"> return Modules_UserSettings_Ajax;</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">99</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/user-settings/index.js">controllers/modules/user-settings/index.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_UserSettings,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">9</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_UserSettings = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_UserSettings, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_UserSettings() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_UserSettings.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_UserSettings;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_UserSettings.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_UserSettings.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_UserSettings;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.controllers.admin);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/exchange/ajax.js">controllers/modules/exchange/ajax.js</h2><div id="stats" class="terrible"><div class="percentage">24%</div><div class="sloc">37</div><div class="hits">9</div><div class="misses">28</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Exchange_Ajax,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Exchange_Ajax = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Exchange_Ajax, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = Modules_Exchange_Ajax;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function Modules_Exchange_Ajax() {</td></tr><tr class="miss"> <td class="line">14</td><td class="hits">0</td><td class="source"> Modules_Exchange_Ajax.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">15</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Exchange_Ajax.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> res.view.id = 'exchangeTabs';</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> res.view.tabs = [</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> {</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> id: "watchlist",</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> url: "/exchange/panels/watchlist",</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> "default": true,</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> size: "full",</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> h1: "my watchlist",</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> h2: "domains you star"</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> id: "export-data",</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> url: "/panels/export-data",</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> size: "mini",</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> h1: "export all",</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> h2: "on-screen data"</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> ];</td></tr><tr class="miss"> <td class="line">38</td><td class="hits">0</td><td class="source"> res.view.searchResults = {};</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> res.view.searchResults.state = true;</td></tr><tr class="miss"> <td class="line">40</td><td class="hits">0</td><td class="source"> res.view.searchResults.searchString = "moo";</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> res.view.contentTabs = {};</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> res.view.contentTabs.expiring = {};</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> res.view.contentTabs.expiring.title = "expiring domains listing";</td></tr><tr class="miss"> <td class="line">44</td><td class="hits">0</td><td class="source"> res.view.contentTabs.expiring.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> res.view.contentTabs.auctions = {};</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> res.view.contentTabs.auctions.title = "auction domains listing";</td></tr><tr class="miss"> <td class="line">47</td><td class="hits">0</td><td class="source"> res.view.contentTabs.auctions.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">48</td><td class="hits">0</td><td class="source"> res.view.contentTabs.dropping = {};</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> res.view.contentTabs.dropping.title = "dropping domains listing";</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> res.view.contentTabs.dropping.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> res.view.contentTabs.websites = {};</td></tr><tr class="miss"> <td class="line">52</td><td class="hits">0</td><td class="source"> res.view.contentTabs.websites.title = "websites domains listing";</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> res.view.contentTabs.websites.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">54</td><td class="hits">0</td><td class="source"> res.view.contentTabs.history = {};</td></tr><tr class="miss"> <td class="line">55</td><td class="hits">0</td><td class="source"> res.view.contentTabs.history.title = "history of sales";</td></tr><tr class="miss"> <td class="line">56</td><td class="hits">0</td><td class="source"> res.view.contentTabs.history.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">57</td><td class="hits">0</td><td class="source"> res.view.contentTabs.newRegistrations = {};</td></tr><tr class="miss"> <td class="line">58</td><td class="hits">0</td><td class="source"> res.view.contentTabs.newRegistrations.title = "new domains listing";</td></tr><tr class="miss"> <td class="line">59</td><td class="hits">0</td><td class="source"> res.view.contentTabs.newRegistrations.intoText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent id augue vitae libero ultricies bl andit eget non lacus. Pellentesque a imperdiet diam.";</td></tr><tr class="miss"> <td class="line">60</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Ajax.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">63</td><td class="hits">1</td><td class="source"> return Modules_Exchange_Ajax;</td></tr><tr><td class="line">64</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">65</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/exchange/index.js">controllers/modules/exchange/index.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Exchange,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">9</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Exchange = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Exchange, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Exchange() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Exchange.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Exchange;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Exchange.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_Exchange.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_Exchange;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.controllers.admin);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/exchange/panels/place-bid.js">controllers/modules/exchange/panels/place-bid.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Exchange_Panels_PlaceBid,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_PlaceBid = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Exchange_Panels_PlaceBid, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Exchange_Panels_PlaceBid() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_PlaceBid.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Exchange_Panels_PlaceBid;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_PlaceBid.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_PlaceBid.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_Exchange_Panels_PlaceBid;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/exchange/panels/watchlist.js">controllers/modules/exchange/panels/watchlist.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Exchange_Panels_Watchlist,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_Watchlist = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Exchange_Panels_Watchlist, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Exchange_Panels_Watchlist() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_Watchlist.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Exchange_Panels_Watchlist;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_Watchlist.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_Watchlist.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_Exchange_Panels_Watchlist;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/exchange/panels/backorder.js">controllers/modules/exchange/panels/backorder.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Exchange_Panels_Backorder,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_Backorder = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Exchange_Panels_Backorder, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Exchange_Panels_Backorder() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_Backorder.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Exchange_Panels_Backorder;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_Backorder.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_Backorder.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_Exchange_Panels_Backorder;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/exchange/panels/make-offer.js">controllers/modules/exchange/panels/make-offer.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Exchange_Panels_MakeOffer,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_MakeOffer = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Exchange_Panels_MakeOffer, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Exchange_Panels_MakeOffer() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_MakeOffer.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Exchange_Panels_MakeOffer;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Exchange_Panels_MakeOffer.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_Exchange_Panels_MakeOffer.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_Exchange_Panels_MakeOffer;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/notifications/generic.js">controllers/modules/notifications/generic.js</h2><div id="stats" class="high"><div class="percentage">75%</div><div class="sloc">12</div><div class="hits">9</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Notifications_Generic,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Notifications_Generic = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Notifications_Generic, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Notifications_Generic() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Notifications_Generic.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Notifications_Generic;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Notifications_Generic.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return Modules_Notifications_Generic.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> return Modules_Notifications_Generic;</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/bank-and-cart/ajax.js">controllers/modules/bank-and-cart/ajax.js</h2><div id="stats" class="low"><div class="percentage">33%</div><div class="sloc">27</div><div class="hits">9</div><div class="misses">18</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_BankAndCart_Ajax,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_BankAndCart_Ajax = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_BankAndCart_Ajax, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_BankAndCart_Ajax() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_BankAndCart_Ajax.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_BankAndCart_Ajax;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_BankAndCart_Ajax.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> res.view.id = 'sidebar';</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> res.view.tabs = [];</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> res.view.user = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> res.view.user.userCanUpgrade = true;</td></tr><tr class="miss"> <td class="line">25</td><td class="hits">0</td><td class="source"> res.view.user.fullName = "Andrew Chinn";</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> res.view.user.availableCredits = "657";</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> res.view.user.memberType = "free member";</td></tr><tr class="miss"> <td class="line">28</td><td class="hits">0</td><td class="source"> res.view.user.membershipExpires = "(this will never expire)";</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> res.view.user.avatar = {};</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> res.view.user.avatar.hasImage = false;</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> res.view.user.avatar.image = "<img src=\"moo.gif\" alt=\"user avatar image\" />";</td></tr><tr class="miss"> <td class="line">32</td><td class="hits">0</td><td class="source"> res.view.user.avatar["default"] = "<span class=\"avatar-default\">no image linked</span>";</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> res.view.upgrade = {};</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> res.view.upgrade.monthlyCost = 49;</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> return Modules_BankAndCart_Ajax.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">38</td><td class="hits">1</td><td class="source"> return Modules_BankAndCart_Ajax;</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/bank-and-cart/index.js">controllers/modules/bank-and-cart/index.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_BankAndCart,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">9</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_BankAndCart = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_BankAndCart, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_BankAndCart() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_BankAndCart.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_BankAndCart;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_BankAndCart.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_BankAndCart.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_BankAndCart;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.controllers.admin);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/bank-and-cart/panels/checkout.js">controllers/modules/bank-and-cart/panels/checkout.js</h2><div id="stats" class="medium"><div class="percentage">64%</div><div class="sloc">14</div><div class="hits">9</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_BankAndCart_Panels_Checkout,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_BankAndCart_Panels_Checkout = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_BankAndCart_Panels_Checkout, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_BankAndCart_Panels_Checkout() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_BankAndCart_Panels_Checkout.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_BankAndCart_Panels_Checkout;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_BankAndCart_Panels_Checkout.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.ajax = false;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> if (req.query.ajax) {</td></tr><tr class="miss"> <td class="line">20</td><td class="hits">0</td><td class="source"> res.view.ajax = req.query.ajax;</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return Modules_BankAndCart_Panels_Checkout.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return Modules_BankAndCart_Panels_Checkout;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/panels/protrada-video.js">controllers/modules/panels/protrada-video.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Panels_ProtradaVideo,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Panels_ProtradaVideo = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Panels_ProtradaVideo, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Panels_ProtradaVideo() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Panels_ProtradaVideo.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Panels_ProtradaVideo;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Panels_ProtradaVideo.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_Panels_ProtradaVideo.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_Panels_ProtradaVideo;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/panels/domain-details.js">controllers/modules/panels/domain-details.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Panels_DomainDetails,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Panels_DomainDetails = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Panels_DomainDetails, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Panels_DomainDetails() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Panels_DomainDetails.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Panels_DomainDetails;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Panels_DomainDetails.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_Panels_DomainDetails.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_Panels_DomainDetails;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/panels/advanced-search.js">controllers/modules/panels/advanced-search.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Panels_AdvancedSearch,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Panels_AdvancedSearch = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Panels_AdvancedSearch, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Panels_AdvancedSearch() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Panels_AdvancedSearch.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Panels_AdvancedSearch;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Panels_AdvancedSearch.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_Panels_AdvancedSearch.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_Panels_AdvancedSearch;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/panels/export-data.js">controllers/modules/panels/export-data.js</h2><div id="stats" class="high"><div class="percentage">81%</div><div class="sloc">11</div><div class="hits">9</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Panels_ExportData,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Panels_ExportData = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Panels_ExportData, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Panels_ExportData() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Panels_ExportData.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Panels_ExportData;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Panels_ExportData.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return Modules_Panels_ExportData.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> return Modules_Panels_ExportData;</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/grid/row.js">controllers/modules/grid/row.js</h2><div id="stats" class="high"><div class="percentage">75%</div><div class="sloc">12</div><div class="hits">9</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Grid_Row,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Grid_Row = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Grid_Row, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Grid_Row() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Grid_Row.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Grid_Row;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Grid_Row.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return Modules_Grid_Row.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> return Modules_Grid_Row;</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="controllers/modules/grid/table.js">controllers/modules/grid/table.js</h2><div id="stats" class="high"><div class="percentage">75%</div><div class="sloc">12</div><div class="hits">9</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var Modules_Grid_Table,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> Modules_Grid_Table = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(Modules_Grid_Table, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function Modules_Grid_Table() {</td></tr><tr class="miss"> <td class="line">12</td><td class="hits">0</td><td class="source"> return Modules_Grid_Table.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = Modules_Grid_Table;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> Modules_Grid_Table.prototype.run = function(req, res, url) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> res.view.layout = null;</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return Modules_Grid_Table.__super__.run.apply(this, arguments);</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">22</td><td class="hits">1</td><td class="source"> return Modules_Grid_Table;</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> })(app.modules.lib.Controller);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/user/update-state.js">api/user/update-state.js</h2><div id="stats" class="high"><div class="percentage">82%</div><div class="sloc">17</div><div class="hits">14</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_User_UpdateState,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_User_UpdateState = (function(_super) {</td></tr><tr class="hit"> <td class="line">8</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr><td class="line">9</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">10</td><td class="hits">1</td><td class="source"> __extends(API_User_UpdateState, _super);</td></tr><tr><td class="line">11</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">12</td><td class="hits">1</td><td class="source"> module.exports = API_User_UpdateState;</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> function API_User_UpdateState() {</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> var validate;</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> API_User_UpdateState.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> validate = {</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> "name": {</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> "description": "State key.",</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> "type": "string",</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> "required": true</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> "value": {</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> "description": "New value for state key.",</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> "type": "any",</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> "required": true</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">31</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">35</td><td class="hits">1</td><td class="source"> API_User_UpdateState.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">36</td><td class="hits">0</td><td class="source"> return req.updateState(req.params.name, req.params.value, function(state) {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return cb(null, state);</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> }, function(error) {</td></tr><tr class="miss"> <td class="line">39</td><td class="hits">0</td><td class="source"> return cb(error);</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> }, req.getUserId());</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">43</td><td class="hits">1</td><td class="source"> return API_User_UpdateState;</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/user/check-login.js">api/user/check-login.js</h2><div id="stats" class="high"><div class="percentage">80%</div><div class="sloc">15</div><div class="hits">12</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_User_CheckLogin,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_User_CheckLogin = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_User_CheckLogin, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_User_CheckLogin;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_User_CheckLogin() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_User_CheckLogin.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> requireUserSession: false</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_User_CheckLogin.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var checked, errorMsg;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> checked = false;</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return errorMsg = null;</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> /*</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> if req.params.username == "protrada" and req.params.password == "test"</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> req.options.req.session.user =</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> 'user_id': 123</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> req.options.req.session.save()</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> checked = true</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> else</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> errorMsg = "Your login information is incorrect. Please try again or use the forgot button."</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> req.success(checked: checked, errorMsg: errorMsg)</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> */</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">40</td><td class="hits">1</td><td class="source"> return API_User_CheckLogin;</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/user/get-state.js">api/user/get-state.js</h2><div id="stats" class="high"><div class="percentage">85%</div><div class="sloc">14</div><div class="hits">12</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_User_GetState,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_User_GetState = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_User_GetState, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_User_GetState;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_User_GetState() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_User_GetState.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_User_GetState.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> return req.getState(function(state) {</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> return cb(null, state);</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> }, req.getUserId());</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> return API_User_GetState;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/user/reset-state.js">api/user/reset-state.js</h2><div id="stats" class="high"><div class="percentage">76%</div><div class="sloc">13</div><div class="hits">10</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_User_ResetState,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_User_ResetState = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_User_ResetState, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function API_User_ResetState() {</td></tr><tr class="hit"> <td class="line">12</td><td class="hits">1</td><td class="source"> return API_User_ResetState.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = API_User_ResetState;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> API_User_ResetState.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return req.resetState(function(state) {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return cb(null, state);</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> }, function(error) {</td></tr><tr class="miss"> <td class="line">21</td><td class="hits">0</td><td class="source"> return cb(error);</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> }, req.getUserId());</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> return API_User_ResetState;</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/user/reset-session.js">api/user/reset-session.js</h2><div id="stats" class="high"><div class="percentage">83%</div><div class="sloc">12</div><div class="hits">10</div><div class="misses">2</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_User_ResetSession,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_User_ResetSession = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_User_ResetSession, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> function API_User_ResetSession() {</td></tr><tr class="hit"> <td class="line">12</td><td class="hits">1</td><td class="source"> return API_User_ResetSession.__super__.constructor.apply(this, arguments);</td></tr><tr><td class="line">13</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">14</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> module.exports = API_User_ResetSession;</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">17</td><td class="hits">1</td><td class="source"> API_User_ResetSession.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">18</td><td class="hits">0</td><td class="source"> return req.resetSession(function() {</td></tr><tr class="miss"> <td class="line">19</td><td class="hits">0</td><td class="source"> return cb(null, true);</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">23</td><td class="hits">1</td><td class="source"> return API_User_ResetSession;</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/test/ping-pong.js">api/test/ping-pong.js</h2><div id="stats" class="medium"><div class="percentage">63%</div><div class="sloc">22</div><div class="hits">14</div><div class="misses">8</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_Test_PingPong,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_Test_PingPong = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_Test_PingPong, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_Test_PingPong;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_Test_PingPong() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var validate;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_Test_PingPong.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> validate = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "name": {</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> "description": "A persons name.",</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> "type": "string",</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> "required": true</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> API_Test_PingPong.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> return cb(null, "Hello " + req.params.name);</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">29</td><td class="hits">1</td><td class="source"> API_Test_PingPong.prototype.testWithName = function(test) {</td></tr><tr class="miss"> <td class="line">30</td><td class="hits">0</td><td class="source"> var params;</td></tr><tr class="miss"> <td class="line">31</td><td class="hits">0</td><td class="source"> params = {</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> 'name': 'Bob'</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> };</td></tr><tr class="miss"> <td class="line">34</td><td class="hits">0</td><td class="source"> return test.run(params, function(result) {</td></tr><tr class="miss"> <td class="line">35</td><td class="hits">0</td><td class="source"> return test.assert.equal("Hello " + params.name, result);</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> }, function(error) {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return test.fail(error.message);</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">41</td><td class="hits">1</td><td class="source"> API_Test_PingPong.prototype.testNoName = function(test) {</td></tr><tr class="miss"> <td class="line">42</td><td class="hits">0</td><td class="source"> return test.run({}, function(result) {</td></tr><tr class="miss"> <td class="line">43</td><td class="hits">0</td><td class="source"> return test.fail("This test is supposed to fail, instead got " + result);</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> }, function(error) {});</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">47</td><td class="hits">1</td><td class="source"> return API_Test_PingPong;</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/exchange/grid.js">api/exchange/grid.js</h2><div id="stats" class="low"><div class="percentage">29%</div><div class="sloc">41</div><div class="hits">12</div><div class="misses">29</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_Exchange_Grid,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_Exchange_Grid = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_Exchange_Grid, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_Exchange_Grid;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_Exchange_Grid() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_Exchange_Grid.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> requireUserSession: true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_Exchange_Grid.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var grid, i, _i;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> grid = new app.modules.lib.Grid();</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> grid.addHeaderLabel({</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> action: "stickyswitch",</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> span: 2,</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> title: "Stick"</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">29</td><td class="hits">0</td><td class="source"> grid.addHeaderLabel({</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> span: 2,</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> title: "Basic domain info"</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">33</td><td class="hits">0</td><td class="source"> grid.addHeaderLabel({</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> span: 4,</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> title: "Price/value info"</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> grid.addHeaderLabel({</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> span: 2,</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> title: "Performance info"</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">41</td><td class="hits">0</td><td class="source"> grid.addHeaderLabel({</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> span: 3,</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> title: "Domain registration info"</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> grid.addHeaderLabel({</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> span: 4,</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> title: "Extension info"</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">49</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> span: 2,</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> title: "Bulk"</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> id: "top-actions",</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> type: "menu",</td></tr><tr><td class="line">57</td><td class="hits"></td><td class="source"> values: ["Action 1", "Action 2", "Action 3"]</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> title: "Top action(s)"</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">61</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> sortable: true,</td></tr><tr><td class="line">63</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">64</td><td class="hits"></td><td class="source"> id: "domain-title",</td></tr><tr><td class="line">65</td><td class="hits"></td><td class="source"> active: true,</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> type: "textcombo",</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> values: ["Contains", "Beginning with", "Ending with"]</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> title: "Domain title"</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">71</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> title: "Offers"</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">74</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> sortable: true,</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> id: "cost",</td></tr><tr><td class="line">78</td><td class="hits"></td><td class="source"> type: "text"</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> title: "Cost"</td></tr><tr><td class="line">81</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">82</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> sortable: true,</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">85</td><td class="hits"></td><td class="source"> id: "appraised",</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> type: "text"</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> title: "Appraised"</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">90</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">91</td><td class="hits"></td><td class="source"> title: "Unrealised"</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">93</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">94</td><td class="hits"></td><td class="source"> title: "Income"</td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">96</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> title: "ROI%"</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">99</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">100</td><td class="hits"></td><td class="source"> sortable: true,</td></tr><tr><td class="line">101</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">102</td><td class="hits"></td><td class="source"> id: "accquired",</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> type: "menu",</td></tr><tr><td class="line">104</td><td class="hits"></td><td class="source"> values: ["tomorrow", "2 days", "date range"]</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> title: "Acquired date"</td></tr><tr><td class="line">107</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">108</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> sortable: true,</td></tr><tr><td class="line">110</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">111</td><td class="hits"></td><td class="source"> id: "expiring",</td></tr><tr><td class="line">112</td><td class="hits"></td><td class="source"> type: "menu",</td></tr><tr><td class="line">113</td><td class="hits"></td><td class="source"> values: ["tomorrow", "2 days", "date range"]</td></tr><tr><td class="line">114</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">115</td><td class="hits"></td><td class="source"> title: "Expiry date"</td></tr><tr><td class="line">116</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">117</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">118</td><td class="hits"></td><td class="source"> filter: {</td></tr><tr><td class="line">119</td><td class="hits"></td><td class="source"> id: "status",</td></tr><tr><td class="line">120</td><td class="hits"></td><td class="source"> type: "menu",</td></tr><tr><td class="line">121</td><td class="hits"></td><td class="source"> values: ["pending", "active", "expired", "dropping"]</td></tr><tr><td class="line">122</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">123</td><td class="hits"></td><td class="source"> title: "Status"</td></tr><tr><td class="line">124</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">125</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">126</td><td class="hits"></td><td class="source"> title: ".com"</td></tr><tr><td class="line">127</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">128</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">129</td><td class="hits"></td><td class="source"> title: ".net"</td></tr><tr><td class="line">130</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">131</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">132</td><td class="hits"></td><td class="source"> title: ".org"</td></tr><tr><td class="line">133</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">134</td><td class="hits">0</td><td class="source"> grid.addMasterColumn({</td></tr><tr><td class="line">135</td><td class="hits"></td><td class="source"> title: ".edu"</td></tr><tr><td class="line">136</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">137</td><td class="hits"></td><td class="source"> /*</td></tr><tr><td class="line">138</td><td class="hits"></td><td class="source"> some other actions:</td></tr><tr><td class="line">139</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">140</td><td class="hits"></td><td class="source"> { id: "make-offer", path: "/modules/exchange/panels", tooltip: "Make an offer", icon: "?", text: "Offer" }</td></tr><tr><td class="line">141</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">142</td><td class="hits"></td><td class="source"> { id: "build-website", path: "???", tooltip: "Build website", icon: "X" }</td></tr><tr><td class="line">143</td><td class="hits"></td><td class="source"> { id: "sell-domain", path: "???", tooltip: "List domain for sale", icon: "^", text: "Sell" }</td></tr><tr><td class="line">144</td><td class="hits"></td><td class="source"> { id: "buy-domain", path: "???", tooltip: "Buy this domain now", icon: "-", text: "Buy" }</td></tr><tr><td class="line">145</td><td class="hits"></td><td class="source"> */</td></tr><tr><td class="line">146</td><td class="hits"></td><td class="source"> </td></tr><tr class="miss"> <td class="line">147</td><td class="hits">0</td><td class="source"> grid.addAction({</td></tr><tr><td class="line">148</td><td class="hits"></td><td class="source"> id: "domain-details",</td></tr><tr><td class="line">149</td><td class="hits"></td><td class="source"> path: "/",</td></tr><tr><td class="line">150</td><td class="hits"></td><td class="source"> tooltip: "View domain details",</td></tr><tr><td class="line">151</td><td class="hits"></td><td class="source"> icon: "G"</td></tr><tr><td class="line">152</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">153</td><td class="hits">0</td><td class="source"> grid.addAction({</td></tr><tr><td class="line">154</td><td class="hits"></td><td class="source"> id: "place-bid",</td></tr><tr><td class="line">155</td><td class="hits"></td><td class="source"> path: "/exchange/panels",</td></tr><tr><td class="line">156</td><td class="hits"></td><td class="source"> tooltip: "Bid on this domain",</td></tr><tr><td class="line">157</td><td class="hits"></td><td class="source"> icon: "W",</td></tr><tr><td class="line">158</td><td class="hits"></td><td class="source"> text: "Bid"</td></tr><tr><td class="line">159</td><td class="hits"></td><td class="source"> });</td></tr><tr class="miss"> <td class="line">160</td><td class="hits">0</td><td class="source"> for (i = _i = 0; _i <= 9; i = ++_i) {</td></tr><tr class="miss"> <td class="line">161</td><td class="hits">0</td><td class="source"> grid.addRecord({</td></tr><tr><td class="line">162</td><td class="hits"></td><td class="source"> selected: false,</td></tr><tr><td class="line">163</td><td class="hits"></td><td class="source"> star: false,</td></tr><tr><td class="line">164</td><td class="hits"></td><td class="source"> buttons: ["domain-details", "place-bid"],</td></tr><tr><td class="line">165</td><td class="hits"></td><td class="source"> domain: "353cards",</td></tr><tr><td class="line">166</td><td class="hits"></td><td class="source"> tld: "com"</td></tr><tr><td class="line">167</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">168</td><td class="hits"></td><td class="source"> }</td></tr><tr class="miss"> <td class="line">169</td><td class="hits">0</td><td class="source"> return cb(null, grid.result());</td></tr><tr><td class="line">170</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">171</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">172</td><td class="hits">1</td><td class="source"> return API_Exchange_Grid;</td></tr><tr><td class="line">173</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">174</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">175</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">176</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/view/panels/protrada-video.js">api/view/panels/protrada-video.js</h2><div id="stats" class="high"><div class="percentage">80%</div><div class="sloc">15</div><div class="hits">12</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_View_Panels_ProtradaVideo,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_View_Panels_ProtradaVideo = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_View_Panels_ProtradaVideo, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_View_Panels_ProtradaVideo;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_View_Panels_ProtradaVideo() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_View_Panels_ProtradaVideo.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_View_Panels_ProtradaVideo.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> r = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return cb(null, r);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> return API_View_Panels_ProtradaVideo;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/view/panels/domain-details.js">api/view/panels/domain-details.js</h2><div id="stats" class="high"><div class="percentage">80%</div><div class="sloc">15</div><div class="hits">12</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_View_Panels_DomainDetails,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_View_Panels_DomainDetails = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_View_Panels_DomainDetails, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_View_Panels_DomainDetails;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_View_Panels_DomainDetails() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_View_Panels_DomainDetails.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_View_Panels_DomainDetails.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> r = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return cb(null, r);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> return API_View_Panels_DomainDetails;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/view/panels/export-data.js">api/view/panels/export-data.js</h2><div id="stats" class="medium"><div class="percentage">61%</div><div class="sloc">21</div><div class="hits">13</div><div class="misses">8</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_View_Panels_ExportData,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_View_Panels_ExportData = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_View_Panels_ExportData, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_View_Panels_ExportData;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_View_Panels_ExportData() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_View_Panels_ExportData.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_View_Panels_ExportData.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> r = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> r.tabs = [</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> {</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> 'title': 'Expiring',</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> 'href': '#expiring'</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> 'title': 'Pre-auctions',</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> 'href': '#pre-auction'</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> 'title': 'Auctions',</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> 'href': '#auction'</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> 'title': 'Buy it now',</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> 'href': '#buy-it-now'</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> 'title': 'Websites',</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> 'href': '#websites'</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> 'title': 'History',</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> 'href': '#history'</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> ];</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> r.active_tab = '#expiring';</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> return cb(null, r);</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">49</td><td class="hits">1</td><td class="source"> API_View_Panels_ExportData.prototype.testBasic = function(test) {</td></tr><tr class="miss"> <td class="line">50</td><td class="hits">0</td><td class="source"> return test.run({}, function(result) {</td></tr><tr class="miss"> <td class="line">51</td><td class="hits">0</td><td class="source"> return test.assert.equal(result.tabs.length, 6);</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> }, function(error) {</td></tr><tr class="miss"> <td class="line">53</td><td class="hits">0</td><td class="source"> return test.fail(error);</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">57</td><td class="hits">1</td><td class="source"> return API_View_Panels_ExportData;</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/view/modules/home/panels/import-domains.js">api/view/modules/home/panels/import-domains.js</h2><div id="stats" class="high"><div class="percentage">80%</div><div class="sloc">15</div><div class="hits">12</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_View_Modules_Home_Panels_ImportDomains,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_View_Modules_Home_Panels_ImportDomains = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_View_Modules_Home_Panels_ImportDomains, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_View_Modules_Home_Panels_ImportDomains;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_View_Modules_Home_Panels_ImportDomains() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_View_Modules_Home_Panels_ImportDomains.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_View_Modules_Home_Panels_ImportDomains.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> r = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return cb(null, r);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> return API_View_Modules_Home_Panels_ImportDomains;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/view/modules/home/panels/list-forsale.js">api/view/modules/home/panels/list-forsale.js</h2><div id="stats" class="high"><div class="percentage">80%</div><div class="sloc">15</div><div class="hits">12</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_View_Modules_Home_Panels_ListForsale,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_View_Modules_Home_Panels_ListForsale = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_View_Modules_Home_Panels_ListForsale, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_View_Modules_Home_Panels_ListForsale;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_View_Modules_Home_Panels_ListForsale() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_View_Modules_Home_Panels_ListForsale.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_View_Modules_Home_Panels_ListForsale.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> r = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return cb(null, r);</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">27</td><td class="hits">1</td><td class="source"> return API_View_Modules_Home_Panels_ListForsale;</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/view/modules/exchange/panels/watchlist.js">api/view/modules/exchange/panels/watchlist.js</h2><div id="stats" class="medium"><div class="percentage">70%</div><div class="sloc">17</div><div class="hits">12</div><div class="misses">5</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_View_Modules_Exchange_Panels_Watchlist,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_View_Modules_Exchange_Panels_Watchlist = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_View_Modules_Exchange_Panels_Watchlist, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_View_Modules_Exchange_Panels_Watchlist;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_View_Modules_Exchange_Panels_Watchlist() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var options;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_View_Modules_Exchange_Panels_Watchlist.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> options = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "requireUserSession": true</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">21</td><td class="hits">1</td><td class="source"> API_View_Modules_Exchange_Panels_Watchlist.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var r;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> r = {};</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> r.tabs = [</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> {</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> 'title': 'Expiring',</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> 'href': '#expiring'</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> 'title': 'Pre-auctions',</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> 'href': '#pre-auction'</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> 'title': 'Auctions',</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> 'href': '#auction'</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> 'title': 'Buy it now',</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> 'href': '#buy-it-now'</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> 'title': 'Websites',</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> 'href': '#websites'</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> 'title': 'History',</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> 'href': '#history'</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> ];</td></tr><tr class="miss"> <td class="line">45</td><td class="hits">0</td><td class="source"> r.active_tab = '#expiring';</td></tr><tr class="miss"> <td class="line">46</td><td class="hits">0</td><td class="source"> return cb(null, r);</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">49</td><td class="hits">1</td><td class="source"> return API_View_Modules_Exchange_Panels_Watchlist;</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/notifications/fetch.js">api/notifications/fetch.js</h2><div id="stats" class="high"><div class="percentage">78%</div><div class="sloc">14</div><div class="hits">11</div><div class="misses">3</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_Notifications_Fetch,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_Notifications_Fetch = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_Notifications_Fetch, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_Notifications_Fetch;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_Notifications_Fetch() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> API_Notifications_Fetch.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> this.validate = {</td></tr><tr><td class="line">16</td><td class="hits"></td><td class="source"> "limit": {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "description": "The maximum number of recent notifications to return.",</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> "type": "integer",</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> "required": false,</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> "default": 10</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">22</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">23</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">24</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">25</td><td class="hits">1</td><td class="source"> API_Notifications_Fetch.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">26</td><td class="hits">0</td><td class="source"> var notifs;</td></tr><tr class="miss"> <td class="line">27</td><td class="hits">0</td><td class="source"> notifs = [</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> {</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> 'type': 'preview',</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> 'title': 'Preview',</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> 'time_ago': '4 hours',</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">36</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">37</td><td class="hits"></td><td class="source"> 'type': 'dns-change',</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> 'title': 'DNS Change',</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> 'time_ago': '6 hours',</td></tr><tr><td class="line">40</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">45</td><td class="hits"></td><td class="source"> 'type': 'max-bid-lost',</td></tr><tr><td class="line">46</td><td class="hits"></td><td class="source"> 'title': 'Max Bid Lost',</td></tr><tr><td class="line">47</td><td class="hits"></td><td class="source"> 'time_ago': '8 hours',</td></tr><tr><td class="line">48</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">49</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">50</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">51</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">52</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">53</td><td class="hits"></td><td class="source"> 'type': 'domain-expire',</td></tr><tr><td class="line">54</td><td class="hits"></td><td class="source"> 'title': 'Preview',</td></tr><tr><td class="line">55</td><td class="hits"></td><td class="source"> 'time_ago': '4 hours',</td></tr><tr><td class="line">56</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">57</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">58</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">59</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">60</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">61</td><td class="hits"></td><td class="source"> 'type': 'winning',</td></tr><tr><td class="line">62</td><td class="hits"></td><td class="source"> 'title': 'DNS Change',</td></tr><tr><td class="line">63</td><td class="hits"></td><td class="source"> 'time_ago': '6 hours',</td></tr><tr><td class="line">64</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">65</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">66</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">67</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">68</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">69</td><td class="hits"></td><td class="source"> 'type': 'lost-domain',</td></tr><tr><td class="line">70</td><td class="hits"></td><td class="source"> 'title': 'Max Bid Lost',</td></tr><tr><td class="line">71</td><td class="hits"></td><td class="source"> 'time_ago': '8 hours',</td></tr><tr><td class="line">72</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">73</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">74</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">75</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">76</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">77</td><td class="hits"></td><td class="source"> 'type': 'losing',</td></tr><tr><td class="line">78</td><td class="hits"></td><td class="source"> 'title': 'Preview',</td></tr><tr><td class="line">79</td><td class="hits"></td><td class="source"> 'time_ago': '4 hours',</td></tr><tr><td class="line">80</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">81</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">82</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">83</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">84</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">85</td><td class="hits"></td><td class="source"> 'type': 'for-sale',</td></tr><tr><td class="line">86</td><td class="hits"></td><td class="source"> 'title': 'DNS Change',</td></tr><tr><td class="line">87</td><td class="hits"></td><td class="source"> 'time_ago': '6 hours',</td></tr><tr><td class="line">88</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">89</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">90</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">91</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">92</td><td class="hits"></td><td class="source"> }, {</td></tr><tr><td class="line">93</td><td class="hits"></td><td class="source"> 'type': 'domain-won',</td></tr><tr><td class="line">94</td><td class="hits"></td><td class="source"> 'title': 'Max Bid Lost',</td></tr><tr><td class="line">95</td><td class="hits"></td><td class="source"> 'time_ago': '8 hours',</td></tr><tr><td class="line">96</td><td class="hits"></td><td class="source"> 'h5': "1 hour left & you're currently winning!",</td></tr><tr><td class="line">97</td><td class="hits"></td><td class="source"> 'domain': 'icanhazauction.com',</td></tr><tr><td class="line">98</td><td class="hits"></td><td class="source"> 'action_description': 'do something',</td></tr><tr><td class="line">99</td><td class="hits"></td><td class="source"> 'description': "The auction for this domain will finish on 15th Jan, " + "2012 @ 5:40pm, and you are currently winning! Remember though, this " + 'can change very quickly however. <a title="view preview now" href="">Watch this auction live</a>'</td></tr><tr><td class="line">100</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">101</td><td class="hits"></td><td class="source"> ];</td></tr><tr class="miss"> <td class="line">102</td><td class="hits">0</td><td class="source"> return cb(null, {</td></tr><tr><td class="line">103</td><td class="hits"></td><td class="source"> 'notifications': notifs</td></tr><tr><td class="line">104</td><td class="hits"></td><td class="source"> });</td></tr><tr><td class="line">105</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">106</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">107</td><td class="hits">1</td><td class="source"> return API_Notifications_Fetch;</td></tr><tr><td class="line">108</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">109</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">110</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">111</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div><div class="file"><h2 id="api/notifications/push.js">api/notifications/push.js</h2><div id="stats" class="high"><div class="percentage">75%</div><div class="sloc">16</div><div class="hits">12</div><div class="misses">4</div></div><table id="source"><thead><tr><th>Line</th><th>Hits</th><th>Source</th></tr></thead><tbody><tr><td class="line">1</td><td class="hits"></td><td class="source">// Generated by CoffeeScript 1.3.3</td></tr><tr class="hit"> <td class="line">2</td><td class="hits">1</td><td class="source">(function() {</td></tr><tr class="hit"> <td class="line">3</td><td class="hits">1</td><td class="source"> var API_Notifications_Push,</td></tr><tr><td class="line">4</td><td class="hits"></td><td class="source"> __hasProp = {}.hasOwnProperty,</td></tr><tr class="hit"> <td class="line">5</td><td class="hits">7</td><td class="source"> __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };</td></tr><tr><td class="line">6</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">7</td><td class="hits">1</td><td class="source"> API_Notifications_Push = (function(_super) {</td></tr><tr><td class="line">8</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">9</td><td class="hits">1</td><td class="source"> __extends(API_Notifications_Push, _super);</td></tr><tr><td class="line">10</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">11</td><td class="hits">1</td><td class="source"> module.exports = API_Notifications_Push;</td></tr><tr><td class="line">12</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">13</td><td class="hits">1</td><td class="source"> function API_Notifications_Push() {</td></tr><tr class="hit"> <td class="line">14</td><td class="hits">1</td><td class="source"> var validate;</td></tr><tr class="hit"> <td class="line">15</td><td class="hits">1</td><td class="source"> API_Notifications_Push.__super__.constructor.apply(this, arguments);</td></tr><tr class="hit"> <td class="line">16</td><td class="hits">1</td><td class="source"> validate = {</td></tr><tr><td class="line">17</td><td class="hits"></td><td class="source"> "type": {</td></tr><tr><td class="line">18</td><td class="hits"></td><td class="source"> "description": "The type of notification.",</td></tr><tr><td class="line">19</td><td class="hits"></td><td class="source"> "type": "string",</td></tr><tr><td class="line">20</td><td class="hits"></td><td class="source"> "required": true,</td></tr><tr><td class="line">21</td><td class="hits"></td><td class="source"> "validator": function(value) {</td></tr><tr class="miss"> <td class="line">22</td><td class="hits">0</td><td class="source"> var values;</td></tr><tr class="miss"> <td class="line">23</td><td class="hits">0</td><td class="source"> values = ['dns-change', 'domain-expire', 'domain-won', 'for-sale', 'losing', 'lost-domain', 'max-bid-lost', 'preview', 'winning'];</td></tr><tr class="miss"> <td class="line">24</td><td class="hits">0</td><td class="source"> return values.indexOf(value) >= 0;</td></tr><tr><td class="line">25</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">26</td><td class="hits"></td><td class="source"> },</td></tr><tr><td class="line">27</td><td class="hits"></td><td class="source"> "when": {</td></tr><tr><td class="line">28</td><td class="hits"></td><td class="source"> "description": "The date of the notification.",</td></tr><tr><td class="line">29</td><td class="hits"></td><td class="source"> "type": "timestamp",</td></tr><tr><td class="line">30</td><td class="hits"></td><td class="source"> "required": false,</td></tr><tr><td class="line">31</td><td class="hits"></td><td class="source"> "default": new Date()</td></tr><tr><td class="line">32</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">33</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">34</td><td class="hits"></td><td class="source"> }</td></tr><tr><td class="line">35</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">36</td><td class="hits">1</td><td class="source"> API_Notifications_Push.prototype.render = function(req, cb) {</td></tr><tr class="miss"> <td class="line">37</td><td class="hits">0</td><td class="source"> return cb(null, 'cool');</td></tr><tr><td class="line">38</td><td class="hits"></td><td class="source"> };</td></tr><tr><td class="line">39</td><td class="hits"></td><td class="source"> </td></tr><tr class="hit"> <td class="line">40</td><td class="hits">1</td><td class="source"> return API_Notifications_Push;</td></tr><tr><td class="line">41</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">42</td><td class="hits"></td><td class="source"> })(app.modules.lib.APIController);</td></tr><tr><td class="line">43</td><td class="hits"></td><td class="source"> </td></tr><tr><td class="line">44</td><td class="hits"></td><td class="source">}).call(this);</td></tr></tbody></table></div></div></div></body></html>make[1]: Leaving directory `/home/kal/protrada'