Last active
April 22, 2016 19:20
-
-
Save daniely/b315ec58e91dbfb6cf804b565a7c9563 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