refactor: use rest args where possible.

This commit is contained in:
Christopher Jeffrey 2017-06-30 15:47:33 -07:00
parent e89f285e9a
commit fdb668aea3
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
6 changed files with 62 additions and 158 deletions

View File

@ -532,23 +532,17 @@ HTTPBase.prototype._initSockets = function _initSockets() {
* @param {...Object} args * @param {...Object} args
*/ */
HTTPBase.prototype.to = function to(name) { HTTPBase.prototype.to = function to(name, ...args) {
let list = this.channels.get(name); let list = this.channels.get(name);
let args;
if (!list) if (!list)
return; return;
assert(list.size > 0); assert(list.size > 0);
args = new Array(arguments.length - 1);
for (let i = 1; i < arguments.length; i++)
args[i - 1] = arguments[i];
for (let item = list.head; item; item = item.next) { for (let item = list.head; item; item = item.next) {
let socket = item.value; let socket = item.value;
socket.emit.apply(socket, args); socket.emit(...args);
} }
}; };
@ -1607,16 +1601,11 @@ WebSocket.prototype.emit = function emit() {
return this.socket.emit.apply(this.socket, arguments); return this.socket.emit.apply(this.socket, arguments);
}; };
WebSocket.prototype.call = function call() { WebSocket.prototype.call = function call(...args) {
let socket = this.socket; let socket = this.socket;
let args = new Array(arguments.length);
for (let i = 0; i < arguments.length; i++)
args[i] = arguments[i];
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
args.push(co.wrap(resolve, reject)); args.push(co.wrap(resolve, reject));
socket.emit.apply(socket, args); socket.emit(...args);
}); });
}; };

View File

@ -388,8 +388,8 @@ Logger.prototype.setLevel = function setLevel(name) {
* @param {...Object} args * @param {...Object} args
*/ */
Logger.prototype.error = function error(err) { Logger.prototype.error = function error(...args) {
let args; let err = args[0];
if (this.level < Logger.levels.ERROR) if (this.level < Logger.levels.ERROR)
return; return;
@ -397,11 +397,6 @@ Logger.prototype.error = function error(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.ERROR, null, err); return this.logError(Logger.levels.ERROR, null, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.ERROR, null, args); this.log(Logger.levels.ERROR, null, args);
}; };
@ -411,8 +406,8 @@ Logger.prototype.error = function error(err) {
* @param {...Object} args * @param {...Object} args
*/ */
Logger.prototype.warning = function warning(err) { Logger.prototype.warning = function warning(...args) {
let args; let err = args[0];
if (this.level < Logger.levels.WARNING) if (this.level < Logger.levels.WARNING)
return; return;
@ -420,11 +415,6 @@ Logger.prototype.warning = function warning(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.WARNING, null, err); return this.logError(Logger.levels.WARNING, null, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.WARNING, null, args); this.log(Logger.levels.WARNING, null, args);
}; };
@ -434,8 +424,8 @@ Logger.prototype.warning = function warning(err) {
* @param {...Object} args * @param {...Object} args
*/ */
Logger.prototype.info = function info(err) { Logger.prototype.info = function info(...args) {
let args; let err = args[0];
if (this.level < Logger.levels.INFO) if (this.level < Logger.levels.INFO)
return; return;
@ -443,11 +433,6 @@ Logger.prototype.info = function info(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.INFO, null, err); return this.logError(Logger.levels.INFO, null, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.INFO, null, args); this.log(Logger.levels.INFO, null, args);
}; };
@ -457,8 +442,8 @@ Logger.prototype.info = function info(err) {
* @param {...Object} args * @param {...Object} args
*/ */
Logger.prototype.debug = function debug(err) { Logger.prototype.debug = function debug(...args) {
let args; let err = args[0];
if (this.level < Logger.levels.DEBUG) if (this.level < Logger.levels.DEBUG)
return; return;
@ -466,11 +451,6 @@ Logger.prototype.debug = function debug(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.DEBUG, null, err); return this.logError(Logger.levels.DEBUG, null, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.DEBUG, null, args); this.log(Logger.levels.DEBUG, null, args);
}; };
@ -480,8 +460,8 @@ Logger.prototype.debug = function debug(err) {
* @param {...Object} args * @param {...Object} args
*/ */
Logger.prototype.spam = function spam(err) { Logger.prototype.spam = function spam(...args) {
let args; let err = args[0];
if (this.level < Logger.levels.SPAM) if (this.level < Logger.levels.SPAM)
return; return;
@ -489,11 +469,6 @@ Logger.prototype.spam = function spam(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.SPAM, null, err); return this.logError(Logger.levels.SPAM, null, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.SPAM, null, args); this.log(Logger.levels.SPAM, null, args);
}; };
@ -744,11 +719,6 @@ LoggerContext.prototype.error = function error(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.ERROR, err); return this.logError(Logger.levels.ERROR, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.ERROR, args); this.log(Logger.levels.ERROR, args);
}; };
@ -770,8 +740,8 @@ LoggerContext.prototype.logError = function logError(level, err) {
* @param {...Object} args * @param {...Object} args
*/ */
LoggerContext.prototype.warning = function warning(err) { LoggerContext.prototype.warning = function warning(...args) {
let args; let err = args[0];
if (this.logger.level < Logger.levels.WARNING) if (this.logger.level < Logger.levels.WARNING)
return; return;
@ -779,11 +749,6 @@ LoggerContext.prototype.warning = function warning(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.WARNING, err); return this.logError(Logger.levels.WARNING, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.WARNING, args); this.log(Logger.levels.WARNING, args);
}; };
@ -793,8 +758,8 @@ LoggerContext.prototype.warning = function warning(err) {
* @param {...Object} args * @param {...Object} args
*/ */
LoggerContext.prototype.info = function info(err) { LoggerContext.prototype.info = function info(...args) {
let args; let err = args[0];
if (this.logger.level < Logger.levels.INFO) if (this.logger.level < Logger.levels.INFO)
return; return;
@ -802,11 +767,6 @@ LoggerContext.prototype.info = function info(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.INFO, err); return this.logError(Logger.levels.INFO, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.INFO, args); this.log(Logger.levels.INFO, args);
}; };
@ -816,8 +776,8 @@ LoggerContext.prototype.info = function info(err) {
* @param {...Object} args * @param {...Object} args
*/ */
LoggerContext.prototype.debug = function debug(err) { LoggerContext.prototype.debug = function debug(...args) {
let args; let err = args[0];
if (this.logger.level < Logger.levels.DEBUG) if (this.logger.level < Logger.levels.DEBUG)
return; return;
@ -825,11 +785,6 @@ LoggerContext.prototype.debug = function debug(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.DEBUG, err); return this.logError(Logger.levels.DEBUG, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.DEBUG, args); this.log(Logger.levels.DEBUG, args);
}; };
@ -839,8 +794,8 @@ LoggerContext.prototype.debug = function debug(err) {
* @param {...Object} args * @param {...Object} args
*/ */
LoggerContext.prototype.spam = function spam(err) { LoggerContext.prototype.spam = function spam(...args) {
let args; let err = args[0];
if (this.logger.level < Logger.levels.SPAM) if (this.logger.level < Logger.levels.SPAM)
return; return;
@ -848,11 +803,6 @@ LoggerContext.prototype.spam = function spam(err) {
if (err instanceof Error) if (err instanceof Error)
return this.logError(Logger.levels.SPAM, err); return this.logError(Logger.levels.SPAM, err);
args = new Array(arguments.length);
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
this.log(Logger.levels.SPAM, args); this.log(Logger.levels.SPAM, args);
}; };

View File

@ -63,12 +63,12 @@ function exec(gen) {
* Execute generator function * Execute generator function
* with a context and execute. * with a context and execute.
* @param {GeneratorFunction} generator * @param {GeneratorFunction} generator
* @param {Object} ctx * @param {Object?} self
* @returns {Promise} * @returns {Promise}
*/ */
function spawn(generator, ctx) { function spawn(generator, self) {
let gen = generator.call(ctx); let gen = generator.call(self);
return exec(gen); return exec(gen);
} }
@ -97,37 +97,6 @@ function isPromise(obj) {
return obj && typeof obj.then === 'function'; return obj && typeof obj.then === 'function';
} }
/**
* Wrap an async function to be
* executed into a function that
* accepts a node.js style callback.
* @param {AsyncFunction}
* @returns {Function}
*/
function cob(func) {
return function(_) {
let args, callback;
if (arguments.length === 0
|| typeof arguments[arguments.length - 1] !== 'function') {
throw new Error((func.name || 'Function') + ' requires a callback.');
}
args = new Array(arguments.length - 1);
callback = arguments[arguments.length - 1];
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
func.apply(this, args).then((value) => {
setImmediate(() => callback(null, value));
}, (err) => {
setImmediate(() => callback(err));
});
};
}
/** /**
* Wait for a nextTick with a promise. * Wait for a nextTick with a promise.
* @returns {Promise} * @returns {Promise}
@ -170,20 +139,41 @@ function wrap(resolve, reject) {
* style callbacks into a function that * style callbacks into a function that
* returns a promise. * returns a promise.
* @param {Function} func * @param {Function} func
* @param {Object?} ctx * @returns {AsyncFunction}
*/
function promisify(func) {
return function(...args) {
return new Promise((resolve, reject) => {
args.push(wrap(resolve, reject));
func.call(this, ...args);
});
};
}
/**
* Wrap a promise-returning function
* into a function that accepts a
* node.js style callback.
* @param {AsyncFunction} func
* @returns {Function} * @returns {Function}
*/ */
function promisify(func, ctx) { function callbackify(func) {
return function() { return function(...args) {
let args = new Array(arguments.length); let callback;
for (let i = 0; i < arguments.length; i++) if (args.length === 0
args[i] = arguments[i]; || typeof args[args.length - 1] !== 'function') {
throw new Error((func.name || 'Function') + ' requires a callback.');
}
return new Promise((resolve, reject) => { callback = args.pop();
args.push(wrap(resolve, reject));
func.apply(ctx || this, args); func.call(this, ...args).then((value) => {
setImmediate(() => callback(null, value));
}, (err) => {
setImmediate(() => callback(err));
}); });
}; };
} }
@ -314,11 +304,11 @@ exports = co;
exports.exec = exec; exports.exec = exec;
exports.spawn = spawn; exports.spawn = spawn;
exports.co = co; exports.co = co;
exports.cob = cob;
exports.wait = wait; exports.wait = wait;
exports.timeout = timeout; exports.timeout = timeout;
exports.wrap = wrap; exports.wrap = wrap;
exports.promisify = promisify; exports.promisify = promisify;
exports.callbackify = callbackify;
exports.every = every; exports.every = every;
exports.setInterval = startInterval; exports.setInterval = startInterval;
exports.clearInterval = stopInterval; exports.clearInterval = stopInterval;

View File

@ -338,13 +338,9 @@ util.format = function format(args, color) {
* @param {...String} args * @param {...String} args
*/ */
util.log = function log() { util.log = function log(...args) {
let args = new Array(arguments.length);
let msg; let msg;
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
if (!process.stdout) { if (!process.stdout) {
msg = typeof args[0] !== 'object' msg = typeof args[0] !== 'object'
? util.format(args, false) ? util.format(args, false)
@ -363,13 +359,9 @@ util.log = function log() {
* @param {...String} args * @param {...String} args
*/ */
util.error = function error() { util.error = function error(...args) {
let args = new Array(arguments.length);
let msg; let msg;
for (let i = 0; i < args.length; i++)
args[i] = arguments[i];
if (!process.stderr) { if (!process.stderr) {
msg = typeof args[0] !== 'object' msg = typeof args[0] !== 'object'
? util.format(args, false) ? util.format(args, false)

View File

@ -159,12 +159,7 @@ Master.prototype.send = function send(packet) {
* @returns {Boolean} * @returns {Boolean}
*/ */
Master.prototype.sendEvent = function sendEvent() { Master.prototype.sendEvent = function sendEvent(...items) {
let items = new Array(arguments.length);
for (let i = 0; i < items.length; i++)
items[i] = arguments[i];
return this.send(new packets.EventPacket(items)); return this.send(new packets.EventPacket(items));
}; };
@ -184,15 +179,8 @@ Master.prototype.destroy = function destroy() {
* @param {...String} args * @param {...String} args
*/ */
Master.prototype.log = function log() { Master.prototype.log = function log(...items) {
let items = new Array(arguments.length); let text = util.format(items, this.color);
let text;
for (let i = 0; i < items.length; i++)
items[i] = arguments[i];
text = util.format(items, this.color);
this.send(new packets.LogPacket(text)); this.send(new packets.LogPacket(text));
}; };

View File

@ -709,12 +709,7 @@ Worker.prototype.send = function send(packet) {
* @returns {Boolean} * @returns {Boolean}
*/ */
Worker.prototype.sendEvent = function sendEvent() { Worker.prototype.sendEvent = function sendEvent(...items) {
let items = new Array(arguments.length);
for (let i = 0; i < items.length; i++)
items[i] = arguments[i];
return this.send(new packets.EventPacket(items)); return this.send(new packets.EventPacket(items));
}; };