Skip to content
This repository was archived by the owner on Jul 17, 2020. It is now read-only.

Commit b4a4ee0

Browse files
author
Zirak
committed
Added handling for setTimeout and Promise in /eval
1 parent 93836e6 commit b4a4ee0

File tree

3 files changed

+66
-32
lines changed

3 files changed

+66
-32
lines changed

source/codeWorker.js

Lines changed: 60 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,11 @@ Object.defineProperty( Array.prototype, 'join', {
115115
}( Array.prototype.join ))
116116
});
117117

118+
118119
/* we define it outside so it'll not be in strict mode */
119120
var exec = function ( code ) {
120121
return eval( 'undefined;\n' + code );
121-
}
122+
};
122123
var console = {
123124
_items : [],
124125
log : function() {
@@ -127,30 +128,51 @@ var console = {
127128
};
128129
console.error = console.info = console.debug = console.log;
129130

130-
(function(){
131+
(function() {
131132
"use strict";
132133

133134
global.onmessage = function ( event ) {
134-
postMessage({
135+
global.postMessage({
135136
event : 'start'
136137
});
137138

138139
var jsonStringify = JSON.stringify, /*backup*/
139-
result;
140+
result,
141+
142+
originalSetTimeout = setTimeout,
143+
timeoutCounter = 0;
144+
145+
var sendResult = function ( result ) {
146+
global.postMessage({
147+
answer : jsonStringify( result, reviver ),
148+
log : jsonStringify( console._items, reviver ).slice( 1, -1 )
149+
});
150+
};
151+
var done = function ( result ) {
152+
if ( timeoutCounter < 1 ) {
153+
sendResult( result );
154+
}
155+
};
140156

141-
try {
142-
result = exec( event.data );
143-
}
144-
catch ( e ) {
145-
result = e.toString();
146-
}
157+
var reviver = function ( key, value ) {
158+
var output;
147159

148-
/*JSON does not like any of the following*/
160+
if ( shouldString(value) ) {
161+
output = '' + value;
162+
}
163+
else {
164+
output = value;
165+
}
166+
167+
return output;
168+
};
169+
170+
/*JSON does not like any of the following*/
149171
var strung = {
150172
Function : true, Error : true,
151173
Undefined : true, RegExp : true
152174
};
153-
var should_string = function ( value ) {
175+
var shouldString = function ( value ) {
154176
var type = ( {} ).toString.call( value ).slice( 8, -1 );
155177

156178
if ( type in strung ) {
@@ -160,22 +182,34 @@ console.error = console.info = console.debug = console.log;
160182
return value !== value || value === Infinity;
161183
};
162184

163-
var reviver = function ( key, value ) {
164-
var output;
185+
self.setTimeout = function (cb) {
186+
var args = [].slice.call( arguments );
187+
args[ 0 ] = wrapper;
188+
timeoutCounter += 1;
165189

166-
if ( should_string(value) ) {
167-
output = '' + value;
168-
}
169-
else {
170-
output = value;
171-
}
190+
originalSetTimeout.apply( self, args );
172191

173-
return output;
174-
};
192+
function wrapper () {
193+
timeoutCounter -= 1;
194+
cb.apply( self, arguments );
175195

176-
postMessage({
177-
answer : jsonStringify( result, reviver ),
178-
log : jsonStringify( console._items, reviver ).slice( 1, -1 )
179-
});
196+
done();
197+
}
198+
};
199+
200+
try {
201+
result = exec( event.data );
202+
}
203+
catch ( e ) {
204+
result = e.toString();
205+
}
206+
207+
/*handle promises appropriately*/
208+
if ( result.then && result.catch ) {
209+
result.then( done ).catch( done );
210+
}
211+
else {
212+
done( result );
213+
}
180214
};
181215
})();

source/eval.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
//execute arbitrary js code in a relatively safe environment
22
bot.eval = (function () {
3-
window.URL = window.URL || window.webkitURL || window.mozURL || null;
43

54
//translation tool: http://tinkerbin.heroku.com/84dPpGFr
6-
var worker_code = atob( 'dmFyIGdsb2JhbCA9IHRoaXM7CgovKm1vc3QgZXh0cmEgZnVuY3Rpb25zIGNvdWxkIGJlIHBvc3NpYmx5IHVuc2FmZSovCnZhciB3aGl0ZXkgPSB7CgknQXJyYXknICAgICAgICAgICAgICA6IDEsCgknQm9vbGVhbicgICAgICAgICAgICA6IDEsCgknRGF0ZScgICAgICAgICAgICAgICA6IDEsCgknRXJyb3InICAgICAgICAgICAgICA6IDEsCgknRXZhbEVycm9yJyAgICAgICAgICA6IDEsCgknRnVuY3Rpb24nICAgICAgICAgICA6IDEsCgknSW5maW5pdHknICAgICAgICAgICA6IDEsCgknSlNPTicgICAgICAgICAgICAgICA6IDEsCgknTWFwJyAgICAgICAgICAgICAgICA6IDEsCgknTWF0aCcgICAgICAgICAgICAgICA6IDEsCgknTmFOJyAgICAgICAgICAgICAgICA6IDEsCgknTnVtYmVyJyAgICAgICAgICAgICA6IDEsCgknT2JqZWN0JyAgICAgICAgICAgICA6IDEsCgknUHJvbWlzZScgICAgICAgICAgICA6IDEsCgknUHJveHknICAgICAgICAgICAgICA6IDEsCgknUmFuZ2VFcnJvcicgICAgICAgICA6IDEsCgknUmVmZXJlbmNlRXJyb3InICAgICA6IDEsCgknUmVnRXhwJyAgICAgICAgICAgICA6IDEsCgknU2V0JyAgICAgICAgICAgICAgICA6IDEsCgknU3RyaW5nJyAgICAgICAgICAgICA6IDEsCgknU3ludGF4RXJyb3InICAgICAgICA6IDEsCgknVHlwZUVycm9yJyAgICAgICAgICA6IDEsCgknVVJJRXJyb3InICAgICAgICAgICA6IDEsCgknV2Vha01hcCcgICAgICAgICAgICA6IDEsCgknV2Vha1NldCcgICAgICAgICAgICA6IDEsCgknYXRvYicgICAgICAgICAgICAgICA6IDEsCgknYnRvYScgICAgICAgICAgICAgICA6IDEsCgknY29uc29sZScgICAgICAgICAgICA6IDEsCgknZGVjb2RlVVJJJyAgICAgICAgICA6IDEsCgknZGVjb2RlVVJJQ29tcG9uZW50JyA6IDEsCgknZW5jb2RlVVJJJyAgICAgICAgICA6IDEsCgknZW5jb2RlVVJJQ29tcG9uZW50JyA6IDEsCgknZXZhbCcgICAgICAgICAgICAgICA6IDEsCgknZXhlYycgICAgICAgICAgICAgICA6IDEsIC8qIG91ciBvd24gZnVuY3Rpb24gKi8KCSdnbG9iYWwnICAgICAgICAgICAgIDogMSwKCSdpc0Zpbml0ZScgICAgICAgICAgIDogMSwKCSdpc05hTicgICAgICAgICAgICAgIDogMSwKCSdvbm1lc3NhZ2UnICAgICAgICAgIDogMSwKCSdwYXJzZUZsb2F0JyAgICAgICAgIDogMSwKCSdwYXJzZUludCcgICAgICAgICAgIDogMSwKCSdwb3N0TWVzc2FnZScgICAgICAgIDogMSwKCSdzZWxmJyAgICAgICAgICAgICAgIDogMSwKCSd1bmRlZmluZWQnICAgICAgICAgIDogMSwKCSd3aGl0ZXknICAgICAgICAgICAgIDogMSwKCgkvKiB0eXBlZCBhcnJheXMgYW5kIHNoaXQgKi8KCSdBcnJheUJ1ZmZlcicgICAgICAgOiAxLAoJJ0Jsb2InICAgICAgICAgICAgICA6IDEsCgknRmxvYXQzMkFycmF5JyAgICAgIDogMSwKCSdGbG9hdDY0QXJyYXknICAgICAgOiAxLAoJJ0ludDhBcnJheScgICAgICAgICA6IDEsCgknSW50MTZBcnJheScgICAgICAgIDogMSwKCSdJbnQzMkFycmF5JyAgICAgICAgOiAxLAoJJ1VpbnQ4QXJyYXknICAgICAgICA6IDEsCgknVWludDE2QXJyYXknICAgICAgIDogMSwKCSdVaW50MzJBcnJheScgICAgICAgOiAxLAoJJ1VpbnQ4Q2xhbXBlZEFycmF5JyA6IDEsCgoJLyoKCXRoZXNlIHByb3BlcnRpZXMgYWxsb3cgRkYgdG8gZnVuY3Rpb24uIHdpdGhvdXQgdGhlbSwgYSBmdWNrZmVzdCBvZgoJaW5leHBsaWNhYmxlIGVycm9ycyBlbnVzZXMuIHRvb2sgbWUgYWJvdXQgNCBob3VycyB0byB0cmFjayB0aGVzZSBmdWNrZXJzCglkb3duLgoJZnVjayBoZWxsIGl0IGlzbid0IGZ1dHVyZS1wcm9vZiwgYnV0IHRoZSBlcnJvcnMgdGhyb3duIGFyZSB1bmNhdGNoYWJsZQoJYW5kIHVudHJhY2FibGUuIHNvIGEgaGVhZHMtdXAuIGVuam95LCBmdXR1cmUtbWUhCgkqLwoJJ0RPTUV4Y2VwdGlvbicgOiAxLAoJJ0V2ZW50JyAgICAgICAgOiAxLAoJJ01lc3NhZ2VFdmVudCcgOiAxLAoJJ1dvcmtlck1lc3NhZ2VFdmVudCc6IDEKfTsKClsgZ2xvYmFsLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsKSBdLmZvckVhY2goZnVuY3Rpb24gKCBvYmogKSB7CglPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyggb2JqICkuZm9yRWFjaChmdW5jdGlvbiggcHJvcCApIHsKCQlpZiggd2hpdGV5Lmhhc093blByb3BlcnR5KHByb3ApICkgewogICAgICAgICAgICByZXR1cm47CgkJfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIG9iaiwgcHJvcCwgewogICAgICAgICAgICAgICAgZ2V0IDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8qIFRFRSBIRUUgKi8KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoIHByb3AgKyAnIGlzIG5vdCBkZWZpbmVkJyApOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZSA6IGZhbHNlLAogICAgICAgICAgICAgICAgZW51bWVyYWJsZSA6IGZhbHNlCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoIGUgKSB7CiAgICAgICAgICAgIGRlbGV0ZSBvYmpbIHByb3AgXTsKCiAgICAgICAgICAgIGlmICggb2JqWyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIG9ialsgcHJvcCBdID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0pOwp9KTsKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSggQXJyYXkucHJvdG90eXBlLCAnam9pbicsIHsKCXdyaXRhYmxlOiBmYWxzZSwKCWNvbmZpZ3VyYWJsZTogZmFsc2UsCgllbnVtcmFibGU6IGZhbHNlLAoKCXZhbHVlOiAoZnVuY3Rpb24gKCBvbGQgKSB7CgkJcmV0dXJuIGZ1bmN0aW9uICggYXJnICkgewoJCQlpZiAoIHRoaXMubGVuZ3RoID4gNTAwIHx8IChhcmcgJiYgYXJnLmxlbmd0aCA+IDUwMCkgKSB7CgkJCQl0aHJvdyAnRXhjZXB0aW9uOiB0b28gbWFueSBpdGVtcyc7CgkJCX0KCgkJCXJldHVybiBvbGQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwoJCX07Cgl9KCBBcnJheS5wcm90b3R5cGUuam9pbiApKQp9KTsKCi8qIHdlIGRlZmluZSBpdCBvdXRzaWRlIHNvIGl0J2xsIG5vdCBiZSBpbiBzdHJpY3QgbW9kZSAqLwp2YXIgZXhlYyA9IGZ1bmN0aW9uICggY29kZSApIHsKCXJldHVybiBldmFsKCAndW5kZWZpbmVkO1xuJyArIGNvZGUgKTsKfQp2YXIgY29uc29sZSA9IHsKCV9pdGVtcyA6IFtdLAoJbG9nIDogZnVuY3Rpb24oKSB7CgkJY29uc29sZS5faXRlbXMucHVzaC5hcHBseSggY29uc29sZS5faXRlbXMsIGFyZ3VtZW50cyApOwoJfQp9Owpjb25zb2xlLmVycm9yID0gY29uc29sZS5pbmZvID0gY29uc29sZS5kZWJ1ZyA9IGNvbnNvbGUubG9nOwoKKGZ1bmN0aW9uKCl7CgkidXNlIHN0cmljdCI7CgoJZ2xvYmFsLm9ubWVzc2FnZSA9IGZ1bmN0aW9uICggZXZlbnQgKSB7CgkJcG9zdE1lc3NhZ2UoewoJCQlldmVudCA6ICdzdGFydCcKCQl9KTsKCgkJdmFyIGpzb25TdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeSwgLypiYWNrdXAqLwoJCQlyZXN1bHQ7CgoJCXRyeSB7CgkJCXJlc3VsdCA9IGV4ZWMoIGV2ZW50LmRhdGEgKTsKCQl9CgkJY2F0Y2ggKCBlICkgewoJCQlyZXN1bHQgPSBlLnRvU3RyaW5nKCk7CgkJfQoKCQkvKkpTT04gZG9lcyBub3QgbGlrZSBhbnkgb2YgdGhlIGZvbGxvd2luZyovCgkJdmFyIHN0cnVuZyA9IHsKCQkJRnVuY3Rpb24gIDogdHJ1ZSwgRXJyb3IgIDogdHJ1ZSwKCQkJVW5kZWZpbmVkIDogdHJ1ZSwgUmVnRXhwIDogdHJ1ZQoJCX07CgkJdmFyIHNob3VsZF9zdHJpbmcgPSBmdW5jdGlvbiAoIHZhbHVlICkgewoJCQl2YXIgdHlwZSA9ICgge30gKS50b1N0cmluZy5jYWxsKCB2YWx1ZSApLnNsaWNlKCA4LCAtMSApOwoKCQkJaWYgKCB0eXBlIGluIHN0cnVuZyApIHsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJCS8qbmVpdGhlciBkb2VzIGl0IGZlZWwgY29tcGFzc2lvbmF0ZSBhYm91dCBOYU4gb3IgSW5maW5pdHkqLwoJCQlyZXR1cm4gdmFsdWUgIT09IHZhbHVlIHx8IHZhbHVlID09PSBJbmZpbml0eTsKCQl9OwoKCQl2YXIgcmV2aXZlciA9IGZ1bmN0aW9uICgga2V5LCB2YWx1ZSApIHsKCQkJdmFyIG91dHB1dDsKCgkJCWlmICggc2hvdWxkX3N0cmluZyh2YWx1ZSkgKSB7CgkJCQlvdXRwdXQgPSAnJyArIHZhbHVlOwoJCQl9CgkJCWVsc2UgewoJCQkJb3V0cHV0ID0gdmFsdWU7CgkJCX0KCgkJCXJldHVybiBvdXRwdXQ7CgkJfTsKCgkJcG9zdE1lc3NhZ2UoewoJCQlhbnN3ZXIgOiBqc29uU3RyaW5naWZ5KCByZXN1bHQsIHJldml2ZXIgKSwKCQkJbG9nICAgIDoganNvblN0cmluZ2lmeSggY29uc29sZS5faXRlbXMsIHJldml2ZXIgKS5zbGljZSggMSwgLTEgKQoJCX0pOwoJfTsKfSkoKTsK' );
5+
//just a base64 encode of codeWorker.js
6+
var workerCode = atob( 'dmFyIGdsb2JhbCA9IHRoaXM7CgovKm1vc3QgZXh0cmEgZnVuY3Rpb25zIGNvdWxkIGJlIHBvc3NpYmx5IHVuc2FmZSovCnZhciB3aGl0ZXkgPSB7CgknQXJyYXknICAgICAgICAgICAgICA6IDEsCgknQm9vbGVhbicgICAgICAgICAgICA6IDEsCgknRGF0ZScgICAgICAgICAgICAgICA6IDEsCgknRXJyb3InICAgICAgICAgICAgICA6IDEsCgknRXZhbEVycm9yJyAgICAgICAgICA6IDEsCgknRnVuY3Rpb24nICAgICAgICAgICA6IDEsCgknSW5maW5pdHknICAgICAgICAgICA6IDEsCgknSlNPTicgICAgICAgICAgICAgICA6IDEsCgknTWFwJyAgICAgICAgICAgICAgICA6IDEsCgknTWF0aCcgICAgICAgICAgICAgICA6IDEsCgknTmFOJyAgICAgICAgICAgICAgICA6IDEsCgknTnVtYmVyJyAgICAgICAgICAgICA6IDEsCgknT2JqZWN0JyAgICAgICAgICAgICA6IDEsCgknUHJvbWlzZScgICAgICAgICAgICA6IDEsCgknUHJveHknICAgICAgICAgICAgICA6IDEsCgknUmFuZ2VFcnJvcicgICAgICAgICA6IDEsCgknUmVmZXJlbmNlRXJyb3InICAgICA6IDEsCgknUmVnRXhwJyAgICAgICAgICAgICA6IDEsCgknU2V0JyAgICAgICAgICAgICAgICA6IDEsCgknU3RyaW5nJyAgICAgICAgICAgICA6IDEsCgknU3ludGF4RXJyb3InICAgICAgICA6IDEsCgknVHlwZUVycm9yJyAgICAgICAgICA6IDEsCgknVVJJRXJyb3InICAgICAgICAgICA6IDEsCgknV2Vha01hcCcgICAgICAgICAgICA6IDEsCgknV2Vha1NldCcgICAgICAgICAgICA6IDEsCgknYXRvYicgICAgICAgICAgICAgICA6IDEsCgknYnRvYScgICAgICAgICAgICAgICA6IDEsCgknY29uc29sZScgICAgICAgICAgICA6IDEsCgknZGVjb2RlVVJJJyAgICAgICAgICA6IDEsCgknZGVjb2RlVVJJQ29tcG9uZW50JyA6IDEsCgknZW5jb2RlVVJJJyAgICAgICAgICA6IDEsCgknZW5jb2RlVVJJQ29tcG9uZW50JyA6IDEsCgknZXZhbCcgICAgICAgICAgICAgICA6IDEsCgknZXhlYycgICAgICAgICAgICAgICA6IDEsIC8qIG91ciBvd24gZnVuY3Rpb24gKi8KCSdnbG9iYWwnICAgICAgICAgICAgIDogMSwKCSdpc0Zpbml0ZScgICAgICAgICAgIDogMSwKCSdpc05hTicgICAgICAgICAgICAgIDogMSwKCSdvbm1lc3NhZ2UnICAgICAgICAgIDogMSwKCSdwYXJzZUZsb2F0JyAgICAgICAgIDogMSwKCSdwYXJzZUludCcgICAgICAgICAgIDogMSwKCSdwb3N0TWVzc2FnZScgICAgICAgIDogMSwKCSdzZWxmJyAgICAgICAgICAgICAgIDogMSwKCSd1bmRlZmluZWQnICAgICAgICAgIDogMSwKCSd3aGl0ZXknICAgICAgICAgICAgIDogMSwKCgkvKiB0eXBlZCBhcnJheXMgYW5kIHNoaXQgKi8KCSdBcnJheUJ1ZmZlcicgICAgICAgOiAxLAoJJ0Jsb2InICAgICAgICAgICAgICA6IDEsCgknRmxvYXQzMkFycmF5JyAgICAgIDogMSwKCSdGbG9hdDY0QXJyYXknICAgICAgOiAxLAoJJ0ludDhBcnJheScgICAgICAgICA6IDEsCgknSW50MTZBcnJheScgICAgICAgIDogMSwKCSdJbnQzMkFycmF5JyAgICAgICAgOiAxLAoJJ1VpbnQ4QXJyYXknICAgICAgICA6IDEsCgknVWludDE2QXJyYXknICAgICAgIDogMSwKCSdVaW50MzJBcnJheScgICAgICAgOiAxLAoJJ1VpbnQ4Q2xhbXBlZEFycmF5JyA6IDEsCgoJLyoKCXRoZXNlIHByb3BlcnRpZXMgYWxsb3cgRkYgdG8gZnVuY3Rpb24uIHdpdGhvdXQgdGhlbSwgYSBmdWNrZmVzdCBvZgoJaW5leHBsaWNhYmxlIGVycm9ycyBlbnVzZXMuIHRvb2sgbWUgYWJvdXQgNCBob3VycyB0byB0cmFjayB0aGVzZSBmdWNrZXJzCglkb3duLgoJZnVjayBoZWxsIGl0IGlzbid0IGZ1dHVyZS1wcm9vZiwgYnV0IHRoZSBlcnJvcnMgdGhyb3duIGFyZSB1bmNhdGNoYWJsZQoJYW5kIHVudHJhY2FibGUuIHNvIGEgaGVhZHMtdXAuIGVuam95LCBmdXR1cmUtbWUhCgkqLwoJJ0RPTUV4Y2VwdGlvbicgOiAxLAoJJ0V2ZW50JyAgICAgICAgOiAxLAoJJ01lc3NhZ2VFdmVudCcgOiAxLAoJJ1dvcmtlck1lc3NhZ2VFdmVudCc6IDEKfTsKClsgZ2xvYmFsLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsKSBdLmZvckVhY2goZnVuY3Rpb24gKCBvYmogKSB7CglPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyggb2JqICkuZm9yRWFjaChmdW5jdGlvbiggcHJvcCApIHsKCQlpZiggd2hpdGV5Lmhhc093blByb3BlcnR5KHByb3ApICkgewogICAgICAgICAgICByZXR1cm47CgkJfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoIG9iaiwgcHJvcCwgewogICAgICAgICAgICAgICAgZ2V0IDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8qIFRFRSBIRUUgKi8KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoIHByb3AgKyAnIGlzIG5vdCBkZWZpbmVkJyApOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZSA6IGZhbHNlLAogICAgICAgICAgICAgICAgZW51bWVyYWJsZSA6IGZhbHNlCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoIGUgKSB7CiAgICAgICAgICAgIGRlbGV0ZSBvYmpbIHByb3AgXTsKCiAgICAgICAgICAgIGlmICggb2JqWyBwcm9wIF0gIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIG9ialsgcHJvcCBdID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCX0pOwp9KTsKCk9iamVjdC5kZWZpbmVQcm9wZXJ0eSggQXJyYXkucHJvdG90eXBlLCAnam9pbicsIHsKCXdyaXRhYmxlOiBmYWxzZSwKCWNvbmZpZ3VyYWJsZTogZmFsc2UsCgllbnVtcmFibGU6IGZhbHNlLAoKCXZhbHVlOiAoZnVuY3Rpb24gKCBvbGQgKSB7CgkJcmV0dXJuIGZ1bmN0aW9uICggYXJnICkgewoJCQlpZiAoIHRoaXMubGVuZ3RoID4gNTAwIHx8IChhcmcgJiYgYXJnLmxlbmd0aCA+IDUwMCkgKSB7CgkJCQl0aHJvdyAnRXhjZXB0aW9uOiB0b28gbWFueSBpdGVtcyc7CgkJCX0KCgkJCXJldHVybiBvbGQuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwoJCX07Cgl9KCBBcnJheS5wcm90b3R5cGUuam9pbiApKQp9KTsKCgovKiB3ZSBkZWZpbmUgaXQgb3V0c2lkZSBzbyBpdCdsbCBub3QgYmUgaW4gc3RyaWN0IG1vZGUgKi8KdmFyIGV4ZWMgPSBmdW5jdGlvbiAoIGNvZGUgKSB7CglyZXR1cm4gZXZhbCggJ3VuZGVmaW5lZDtcbicgKyBjb2RlICk7Cn07CnZhciBjb25zb2xlID0gewoJX2l0ZW1zIDogW10sCglsb2cgOiBmdW5jdGlvbigpIHsKCQljb25zb2xlLl9pdGVtcy5wdXNoLmFwcGx5KCBjb25zb2xlLl9pdGVtcywgYXJndW1lbnRzICk7Cgl9Cn07CmNvbnNvbGUuZXJyb3IgPSBjb25zb2xlLmluZm8gPSBjb25zb2xlLmRlYnVnID0gY29uc29sZS5sb2c7CgooZnVuY3Rpb24oKXsKCSJ1c2Ugc3RyaWN0IjsKCglnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24gKCBldmVudCApIHsKCQlnbG9iYWwucG9zdE1lc3NhZ2UoewoJCQlldmVudCA6ICdzdGFydCcKCQl9KTsKCgkJdmFyIGpzb25TdHJpbmdpZnkgPSBKU09OLnN0cmluZ2lmeSwgLypiYWNrdXAqLwoJCQlyZXN1bHQsCgogICAgICAgICAgICBvcmlnaW5hbFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0LAogICAgICAgICAgICB0aW1lb3V0Q291bnRlciA9IDA7CgogICAgICAgIHZhciBkb25lID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICBnbG9iYWwucG9zdE1lc3NhZ2UoewoJCQkgICAgYW5zd2VyIDoganNvblN0cmluZ2lmeSggcmVzdWx0LCByZXZpdmVyICksCgkJCSAgICBsb2cgICAgOiBqc29uU3RyaW5naWZ5KCBjb25zb2xlLl9pdGVtcywgcmV2aXZlciApLnNsaWNlKCAxLCAtMSApCgkJICAgIH0pOwogICAgICAgIH07CgogICAgICAgIHZhciByZXZpdmVyID0gZnVuY3Rpb24gKCBrZXksIHZhbHVlICkgewoJCQl2YXIgb3V0cHV0OwoKCQkJaWYgKCBzaG91bGRTdHJpbmcodmFsdWUpICkgewoJCQkJb3V0cHV0ID0gJycgKyB2YWx1ZTsKCQkJfQoJCQllbHNlIHsKCQkJCW91dHB1dCA9IHZhbHVlOwoJCQl9CgoJCQlyZXR1cm4gb3V0cHV0OwoJCX07CgogICAgICAgIC8qSlNPTiBkb2VzIG5vdCBsaWtlIGFueSBvZiB0aGUgZm9sbG93aW5nKi8KCQl2YXIgc3RydW5nID0gewoJCQlGdW5jdGlvbiAgOiB0cnVlLCBFcnJvciAgOiB0cnVlLAoJCQlVbmRlZmluZWQgOiB0cnVlLCBSZWdFeHAgOiB0cnVlCgkJfTsKCQl2YXIgc2hvdWxkU3RyaW5nID0gZnVuY3Rpb24gKCB2YWx1ZSApIHsKCQkJdmFyIHR5cGUgPSAoIHt9ICkudG9TdHJpbmcuY2FsbCggdmFsdWUgKS5zbGljZSggOCwgLTEgKTsKCgkJCWlmICggdHlwZSBpbiBzdHJ1bmcgKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQkvKm5laXRoZXIgZG9lcyBpdCBmZWVsIGNvbXBhc3Npb25hdGUgYWJvdXQgTmFOIG9yIEluZmluaXR5Ki8KCQkJcmV0dXJuIHZhbHVlICE9PSB2YWx1ZSB8fCB2YWx1ZSA9PT0gSW5maW5pdHk7CgkJfTsKCiAgICAgICAgc2VsZi5zZXRUaW1lb3V0ID0gZnVuY3Rpb24gKGNiKSB7CiAgICAgICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpOwogICAgICAgICAgICBhcmdzWzBdID0gd3JhcHBlcjsKICAgICAgICAgICAgdGltZW91dENvdW50ZXIgKz0gMTsKCiAgICAgICAgICAgIG9yaWdpbmFsU2V0VGltZW91dC5hcHBseShzZWxmLCBhcmdzKTsKCiAgICAgICAgICAgIGZ1bmN0aW9uIHdyYXBwZXIgKCkgewogICAgICAgICAgICAgICAgdGltZW91dENvdW50ZXIgLT0gMTsKICAgICAgICAgICAgICAgIGNiLmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7CgogICAgICAgICAgICAgICAgaWYgKCF0aW1lb3V0Q291bnRlcikgewogICAgICAgICAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgoJCXRyeSB7CgkJCXJlc3VsdCA9IGV4ZWMoIGV2ZW50LmRhdGEgKTsKCQl9CgkJY2F0Y2ggKCBlICkgewoJCQlyZXN1bHQgPSBlLnRvU3RyaW5nKCk7CgkJfQoKICAgICAgICBpZiAodGltZW91dENvdW50ZXIgPCAxKSB7CiAgICAgICAgICAgIGRvbmUoKTsKICAgICAgICB9Cgl9Owp9KSgpOwo=' );
77

8-
var blob = new Blob( [worker_code], { type : 'application/javascript' } ),
9-
code_url = window.URL.createObjectURL( blob );
8+
var blob = new Blob( [workerCode], { type : 'application/javascript' } ),
9+
codeUrl = window.URL.createObjectURL( blob );
1010

1111
setTimeout(function () {
1212
if (bot.devMode) {
@@ -16,7 +16,7 @@ setTimeout(function () {
1616
}, 1000);
1717

1818
return function ( code, cb ) {
19-
var worker = new Worker( code_url ),
19+
var worker = new Worker( codeUrl ),
2020
timeout;
2121

2222
if ( code[0] === 'c' ) {

source/plugins/roomPermissions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ var galleryMode = {
161161
// Room should be unlocked if there aren't any more muted users and we're
162162
//locked.
163163
shouldUnlockRoom : function () {
164-
return this.roomInGallery() && !( Object.keys(muted).length );
164+
return this.roomInGallery() && !( Object.keys(muted).length );
165165
}
166166
};
167167

0 commit comments

Comments
 (0)