UNPKG

censeo

Version:

Run arbitrary JavaScript or PogoScript on a server

106 lines 4.54 kB
(function() { var self = this; var botname, CenseoError; botname = require("node-random-name"); console.log("Client name", botname); CenseoError = function(message, code) { this.message = message; return this.code = code; }; CenseoError.prototype = new Error(); CenseoError.prototype.name = "CenseoError"; CenseoError.prototype.consturctor = CenseoError; module.exports = function(port) { var self = this; var requestId, newRequestId, unWrapError, running; requestId = 0; newRequestId = function() { ++requestId; return botname + ":" + requestId; }; unWrapError = function(doThrow) { var receiveError; return receiveError = function(error) { return doThrow(new CenseoError(error.message)); }; }; running = function(socket, options, success) { return socket.on("running:" + options.id, function(result) { return success({ stop: function() { var self = this; return new Promise(function(success) { socket.on("stopped:" + options.id, success); return socket.emit("stop", options); }); }, data: result.data }); }); }; return { getSocket: function() { var self = this; return new Promise(function(success) { var io; if (self.socket) { return success(self.socket); } else { io = require("socket.io-client"); self.socket = io("http://localhost:" + port); return self.socket.on("connect", function() { return success(self.socket); }); } }); }, exec: function(options) { var self = this; var gen1_asyncResult, socket; return new Promise(function(gen2_onFulfilled) { gen2_onFulfilled(Promise.resolve(self.getSocket()).then(function(gen1_asyncResult) { socket = gen1_asyncResult; return new Promise(function(success, error) { options.id = newRequestId(); socket.on("ran:" + options.id, success); socket.on("error:" + options.id, unWrapError(error)); return socket.emit("run", options); }); })); }); }, runTask: function(func, gen3_options) { var self = this; 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 = newRequestId(); socket.emit("runTask", options); socket.on("error:" + options.id, unWrapError(error)); return running(socket, options, success); }); })); }); }, run: function(func, gen5_options) { var self = this; var context; 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(), context: context }; return self.exec(options, func); } }; }; }).call(this);