Created
April 25, 2016 17:56
-
-
Save daniely/90b60f3ec0f3e3f24cbe0d7f486661f5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// executes the given code and handles the result | |
var run = function(code) { | |
var result = { | |
input: code, | |
output: null, | |
error: null | |
}; | |
try { | |
result.output = stringify(runHidden(code)); | |
} catch(e) { | |
result.error = e.message; | |
} | |
if (result.output === 'undefined') { | |
result.output = ''; | |
} | |
application.remote.output(result); | |
} | |
// protects even the worker scope from being accessed | |
var runHidden = function(code) { | |
var indexedDB = null; | |
var location = null; | |
var navigator = null; | |
var onerror = null; | |
var onmessage = null; | |
var performance = null; | |
var self = null; | |
var webkitIndexedDB = null; | |
var postMessage = null; | |
var close = null; | |
var openDatabase = null; | |
var openDatabaseSync = null; | |
var webkitRequestFileSystem = null; | |
var webkitRequestFileSystemSync = null; | |
var webkitResolveLocalFileSystemSyncURL = null; | |
var webkitResolveLocalFileSystemURL = null; | |
var addEventListener = null; | |
var dispatchEvent = null; | |
var removeEventListener = null; | |
var dump = null; | |
var onoffline = null; | |
var ononline = null; | |
var importScripts = null; | |
var application = null; | |
return eval(code); | |
} | |
// converts the output into a string | |
var stringify = function(output) { | |
var result; | |
if (typeof output == 'undefined') { | |
result = 'undefined'; | |
} else if (output === null) { | |
result = 'null'; | |
} else { | |
result = JSON.stringify(output) || output.toString(); | |
} | |
return result; | |
} | |
application.setInterface({run:run}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment