Comparing version 0.4.0 to 0.4.1
@@ -47,3 +47,2 @@ (function() { | ||
socket.on("ran:" + options.id, success); | ||
running(socket, options, success); | ||
return socket.on("error:" + options.id, error); | ||
@@ -54,12 +53,31 @@ }); | ||
}, | ||
run: function(func, gen3_options) { | ||
runTask: function(func, gen3_options) { | ||
var self = this; | ||
var promises, task, context; | ||
promises = gen3_options !== void 0 && Object.prototype.hasOwnProperty.call(gen3_options, "promises") && gen3_options.promises !== void 0 ? gen3_options.promises : false; | ||
task = gen3_options !== void 0 && Object.prototype.hasOwnProperty.call(gen3_options, "task") && gen3_options.task !== void 0 ? gen3_options.task : false; | ||
var context; | ||
context = gen3_options !== void 0 && Object.prototype.hasOwnProperty.call(gen3_options, "context") && gen3_options.context !== void 0 ? gen3_options.context : {}; | ||
var options, gen4_asyncResult, socket; | ||
return new Promise(function(gen2_onFulfilled) { | ||
options = { | ||
func: func.toString(), | ||
context: context | ||
}; | ||
gen2_onFulfilled(Promise.resolve(self.getSocket()).then(function(gen4_asyncResult) { | ||
socket = gen4_asyncResult; | ||
return new Promise(function(success, error) { | ||
options.id = ++self.count; | ||
socket.emit("runTask", options); | ||
socket.on("error:" + options.id, error); | ||
return running(socket, options, success); | ||
}); | ||
})); | ||
}); | ||
}, | ||
run: function(func, gen5_options) { | ||
var self = this; | ||
var promises, context; | ||
promises = gen5_options !== void 0 && Object.prototype.hasOwnProperty.call(gen5_options, "promises") && gen5_options.promises !== void 0 ? gen5_options.promises : false; | ||
context = gen5_options !== void 0 && Object.prototype.hasOwnProperty.call(gen5_options, "context") && gen5_options.context !== void 0 ? gen5_options.context : {}; | ||
var options; | ||
options = { | ||
func: func.toString(), | ||
task: task, | ||
context: context | ||
@@ -66,0 +84,0 @@ }; |
(function() { | ||
var Promise = require("bluebird"); | ||
var gen1_promisify = function(fn) { | ||
return new Promise(function(onFulfilled, onRejected) { | ||
fn(function(error, result) { | ||
if (error) { | ||
onRejected(error); | ||
} else { | ||
onFulfilled(result); | ||
} | ||
}); | ||
}); | ||
var self = this; | ||
var serverRequire; | ||
serverRequire = function(path) { | ||
if (path[0] === ".") { | ||
path = process.cwd() + "/" + path; | ||
} | ||
return require(path); | ||
}; | ||
var self = this; | ||
module.exports = function(port) { | ||
@@ -23,6 +19,6 @@ var self = this; | ||
convertErrorToEmit = function(options, run) { | ||
var gen2_asyncResult; | ||
return new Promise(function(gen3_onFulfilled) { | ||
gen3_onFulfilled(new Promise(function(gen3_onFulfilled) { | ||
gen3_onFulfilled(Promise.resolve(run())); | ||
var gen1_asyncResult; | ||
return new Promise(function(gen2_onFulfilled) { | ||
gen2_onFulfilled(new Promise(function(gen2_onFulfilled) { | ||
gen2_onFulfilled(Promise.resolve(run())); | ||
}).then(void 0, function(e) { | ||
@@ -34,11 +30,3 @@ return socket.emit("error:" + options.id, e); | ||
emitResult = function(options, result) { | ||
if (options.task) { | ||
tasks.push({ | ||
id: options.id, | ||
stop: result.stop | ||
}); | ||
return socket.emit("running:" + options.id, result); | ||
} else { | ||
return socket.emit("ran:" + options.id, result); | ||
} | ||
return socket.emit("ran:" + options.id, result); | ||
}; | ||
@@ -58,11 +46,4 @@ runWithPromise = function(options) { | ||
exec = function(context, func, callback) { | ||
var originalRequire, serverRequire, runFunc; | ||
originalRequire = require; | ||
var runFunc; | ||
context.process = process; | ||
serverRequire = function(path) { | ||
if (path[0] === ".") { | ||
path = process.cwd() + "/" + path; | ||
} | ||
return originalRequire(path); | ||
}; | ||
context.require = require; | ||
@@ -89,2 +70,17 @@ context.serverRequire = serverRequire; | ||
}; | ||
socket.on("runTask", function(options) { | ||
var context, runFunc, result; | ||
context = options.context; | ||
context.Promise = require("bluebird"); | ||
context.process = process; | ||
context.require = require; | ||
context.serverRequire = serverRequire; | ||
runFunc = Function("context", "\n for (var property in context) {\n eval ('var '+property+'= context.'+property);\n }\n\n // in a task we just need to swallow root level promises that complete\n var gen1_promisify = function(fn) {\n return new Promise(function(onFulfilled, onRejected) {\n fn(function(error, result) {\n if (error) {\n onRejected(error);\n } else {\n onFulfilled(result);\n }\n });\n });\n };\n\n return (" + options.func + ")();\n "); | ||
result = runFunc(context); | ||
tasks.push({ | ||
id: options.id, | ||
stop: result.stop | ||
}); | ||
return socket.emit("running:" + options.id, result); | ||
}); | ||
socket.on("run", function(options) { | ||
@@ -102,32 +98,23 @@ if (options.promise) { | ||
return socket.on("stop", function(options) { | ||
var runningTask, gen4_asyncResult; | ||
return new Promise(function(gen3_onFulfilled) { | ||
runningTask = function() { | ||
var gen5_results, gen6_items, gen7_i, task; | ||
gen5_results = []; | ||
gen6_items = tasks; | ||
for (gen7_i = 0; gen7_i < gen6_items.length; ++gen7_i) { | ||
task = gen6_items[gen7_i]; | ||
(function(task) { | ||
if (task.id === options.id) { | ||
return gen5_results.push(task); | ||
} | ||
})(task); | ||
} | ||
return gen5_results; | ||
}()[0]; | ||
gen3_onFulfilled(Promise.resolve(function() { | ||
if (runningTask) { | ||
return new Promise(function(gen3_onFulfilled) { | ||
gen3_onFulfilled(gen1_promisify(function(gen8_callback) { | ||
return runningTask.stop(gen8_callback); | ||
}).then(function(gen9_asyncResult) { | ||
gen9_asyncResult; | ||
tasks.splice(tasks.indexOf(runningTask), 1); | ||
return socket.emit("stopped:" + options.id); | ||
})); | ||
}); | ||
} | ||
}())); | ||
}); | ||
var runningTask; | ||
runningTask = function() { | ||
var gen3_results, gen4_items, gen5_i, task; | ||
gen3_results = []; | ||
gen4_items = tasks; | ||
for (gen5_i = 0; gen5_i < gen4_items.length; ++gen5_i) { | ||
task = gen4_items[gen5_i]; | ||
(function(task) { | ||
if (task.id === options.id) { | ||
return gen3_results.push(task); | ||
} | ||
})(task); | ||
} | ||
return gen3_results; | ||
}()[0]; | ||
if (runningTask) { | ||
return runningTask.stop(function(result) { | ||
tasks.splice(tasks.indexOf(runningTask), 1); | ||
return socket.emit("stopped:" + options.id, result); | ||
}); | ||
} | ||
}); | ||
@@ -134,0 +121,0 @@ }); |
{ | ||
"name": "censeo", | ||
"version": "0.4.0", | ||
"version": "0.4.1", | ||
"description": "Run arbitrary JavaScript or PogoScript on a server", | ||
@@ -5,0 +5,0 @@ "author": "Derek Ekins <derek@spathi.com>", |
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
13995
216
3
2