From 089c315a8efac39d7ece52fe855bde0af450a140 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Astori?= Date: Wed, 12 Oct 2016 03:55:40 -0400 Subject: [PATCH 1/2] Use forEach instead of lodash's each, and ES6 fat arrows like it's 2015 --- src/client.js | 18 ++++++++---------- src/clientManager.js | 9 ++++----- src/models/chan.js | 2 +- src/plugins/irc-events/connection.js | 7 +++---- src/plugins/irc-events/link.js | 12 ++++-------- src/plugins/irc-events/mode.js | 2 +- src/plugins/irc-events/motd.js | 2 +- src/plugins/irc-events/names.js | 9 +-------- src/plugins/irc-events/nick.js | 2 +- src/plugins/irc-events/quit.js | 2 +- test/models/chan.js | 3 +-- 11 files changed, 26 insertions(+), 42 deletions(-) diff --git a/src/client.js b/src/client.js index 02d15f16..70f8daa6 100644 --- a/src/client.js +++ b/src/client.js @@ -54,9 +54,7 @@ var inputs = [ ].reduce(function(plugins, name) { var path = "./plugins/inputs/" + name; var plugin = require(path); - plugin.commands.forEach(function(command) { - plugins[command] = plugin; - }); + plugin.commands.forEach(command => plugins[command] = plugin); return plugins; }, {}); @@ -83,7 +81,7 @@ function Client(manager, name, config) { } var delay = 0; - (client.config.networks || []).forEach(function(n) { + (client.config.networks || []).forEach(n => { setTimeout(function() { client.connect(n); }, delay); @@ -150,7 +148,7 @@ Client.prototype.connect = function(args) { if (args.channels) { var badName = false; - args.channels.forEach(function(chan) { + args.channels.forEach(chan => { if (!chan.name) { badName = true; return; @@ -248,7 +246,7 @@ Client.prototype.connect = function(args) { "znc.in/self-message", ]); - events.forEach(function(plugin) { + events.forEach(plugin => { var path = "./plugins/irc-events/" + plugin; require(path).apply(client, [ network.irc, @@ -311,7 +309,7 @@ Client.prototype.setPassword = function(hash, callback) { Client.prototype.input = function(data) { var client = this; - data.text.split("\n").forEach(function(line) { + data.text.split("\n").forEach(line => { data.text = line; client.inputLine(data); }); @@ -387,7 +385,7 @@ Client.prototype.sort = function(data) { switch (type) { case "networks": - _.each(order, function(i) { + order.forEach(i => { var find = _.find(self.networks, {id: i}); if (find) { sorted.push(find); @@ -402,7 +400,7 @@ Client.prototype.sort = function(data) { if (!network) { return; } - _.each(order, function(i) { + order.forEach(i => { var find = _.find(network.channels, {id: i}); if (find) { sorted.push(find); @@ -437,7 +435,7 @@ Client.prototype.quit = function() { socket.disconnect(); } } - this.networks.forEach(function(network) { + this.networks.forEach(network => { if (network.irc) { network.irc.quit("Page closed"); } diff --git a/src/clientManager.js b/src/clientManager.js index 56774b63..120320af 100644 --- a/src/clientManager.js +++ b/src/clientManager.js @@ -54,7 +54,7 @@ ClientManager.prototype.getUsers = function() { var users = []; try { var files = fs.readdirSync(Helper.USERS_PATH); - files.forEach(function(file) { + files.forEach(file => { if (file.indexOf(".json") !== -1) { users.push(file.replace(".json", "")); } @@ -148,11 +148,10 @@ ClientManager.prototype.autoload = function(/* sockets */) { "name" ); var added = _.difference(self.getUsers(), loaded); - _.each(added, function(name) { - self.loadUser(name); - }); + added.forEach(name => self.loadUser(name)); + var removed = _.difference(loaded, self.getUsers()); - _.each(removed, function(name) { + removed.forEach(name => { var client = _.find( self.clients, { name: name diff --git a/src/models/chan.js b/src/models/chan.js index 3aaba2f5..a8c10474 100644 --- a/src/models/chan.js +++ b/src/models/chan.js @@ -59,7 +59,7 @@ Chan.prototype.pushMessage = function(client, msg) { Chan.prototype.sortUsers = function(irc) { var userModeSortPriority = {}; - irc.network.options.PREFIX.forEach(function(prefix, index) { + irc.network.options.PREFIX.forEach((prefix, index) => { userModeSortPriority[prefix.symbol] = index; }); diff --git a/src/plugins/irc-events/connection.js b/src/plugins/irc-events/connection.js index 0c5ab0f9..a5507d93 100644 --- a/src/plugins/irc-events/connection.js +++ b/src/plugins/irc-events/connection.js @@ -1,6 +1,5 @@ "use strict"; -var _ = require("lodash"); var identd = require("../../identd"); var Msg = require("../../models/msg"); var Chan = require("../../models/chan"); @@ -24,7 +23,7 @@ module.exports = function(irc, network) { var delay = 1000; var commands = network.commands; if (Array.isArray(commands)) { - commands.forEach(function(cmd) { + commands.forEach(cmd => { setTimeout(function() { client.input({ target: network.channels[0].id, @@ -35,7 +34,7 @@ module.exports = function(irc, network) { }); } - network.channels.forEach(function(chan) { + network.channels.forEach(chan => { if (chan.type !== Chan.Type.CHANNEL) { return; } @@ -114,7 +113,7 @@ module.exports = function(irc, network) { network.prefixLookup = {}; - _.each(data.options.PREFIX, function(mode) { + data.options.PREFIX.forEach(mode => { network.prefixLookup[mode.mode] = mode.symbol; }); diff --git a/src/plugins/irc-events/link.js b/src/plugins/irc-events/link.js index 76cbfcba..8e7e900b 100644 --- a/src/plugins/irc-events/link.js +++ b/src/plugins/irc-events/link.js @@ -1,6 +1,5 @@ "use strict"; -var _ = require("lodash"); var cheerio = require("cheerio"); var Msg = require("../../models/msg"); var request = require("request"); @@ -16,13 +15,10 @@ module.exports = function(irc, network) { return; } - var links = []; - var split = data.message.replace(/\x02|\x1D|\x1F|\x16|\x0F|\x03(?:[0-9]{1,2}(?:,[0-9]{1,2})?)?/g, "").split(" "); - _.each(split, function(w) { - if (/^https?:\/\//.test(w)) { - links.push(w); - } - }); + const links = data.message + .replace(/\x02|\x1D|\x1F|\x16|\x0F|\x03(?:[0-9]{1,2}(?:,[0-9]{1,2})?)?/g, "") + .split(" ") + .filter(w => /^https?:\/\//.test(w)); if (links.length === 0) { return; diff --git a/src/plugins/irc-events/mode.js b/src/plugins/irc-events/mode.js index 6cadabee..b47985c9 100644 --- a/src/plugins/irc-events/mode.js +++ b/src/plugins/irc-events/mode.js @@ -22,7 +22,7 @@ module.exports = function(irc, network) { var supportsMultiPrefix = network.irc.network.cap.isEnabled("multi-prefix"); var userModeSortPriority = {}; - irc.network.options.PREFIX.forEach(function(prefix, index) { + irc.network.options.PREFIX.forEach((prefix, index) => { userModeSortPriority[prefix.symbol] = index; }); diff --git a/src/plugins/irc-events/motd.js b/src/plugins/irc-events/motd.js index 1075d229..0d777869 100644 --- a/src/plugins/irc-events/motd.js +++ b/src/plugins/irc-events/motd.js @@ -8,7 +8,7 @@ module.exports = function(irc, network) { var lobby = network.channels[0]; if (data.motd) { - data.motd.split("\n").forEach(function(text) { + data.motd.split("\n").forEach(text => { var msg = new Msg({ type: Msg.Type.MOTD, text: text diff --git a/src/plugins/irc-events/names.js b/src/plugins/irc-events/names.js index 3c16149c..daae14b3 100644 --- a/src/plugins/irc-events/names.js +++ b/src/plugins/irc-events/names.js @@ -1,6 +1,5 @@ "use strict"; -var _ = require("lodash"); var User = require("../../models/user"); module.exports = function(irc, network) { @@ -11,13 +10,7 @@ module.exports = function(irc, network) { return; } - chan.users = []; - - _.each(data.users, function(u) { - var user = new User(u, network.prefixLookup); - - chan.users.push(user); - }); + chan.users = data.users.map(u => new User(u, network.prefixLookup)); chan.sortUsers(irc); diff --git a/src/plugins/irc-events/nick.js b/src/plugins/irc-events/nick.js index a1bfc3b7..5096c7a2 100644 --- a/src/plugins/irc-events/nick.js +++ b/src/plugins/irc-events/nick.js @@ -24,7 +24,7 @@ module.exports = function(irc, network) { }); } - network.channels.forEach(function(chan) { + network.channels.forEach(chan => { var user = _.find(chan.users, {name: data.nick}); if (typeof user === "undefined") { return; diff --git a/src/plugins/irc-events/quit.js b/src/plugins/irc-events/quit.js index 24104852..1684f132 100644 --- a/src/plugins/irc-events/quit.js +++ b/src/plugins/irc-events/quit.js @@ -6,7 +6,7 @@ var Msg = require("../../models/msg"); module.exports = function(irc, network) { var client = this; irc.on("quit", function(data) { - network.channels.forEach(function(chan) { + network.channels.forEach(chan => { var from = data.nick; var user = _.find(chan.users, {name: from}); if (typeof user === "undefined") { diff --git a/test/models/chan.js b/test/models/chan.js index a12335c0..1a051182 100644 --- a/test/models/chan.js +++ b/test/models/chan.js @@ -1,6 +1,5 @@ "use strict"; -var _ = require("lodash"); var expect = require("chai").expect; var Chan = require("../../src/models/chan"); @@ -24,7 +23,7 @@ describe("Chan", function() { var prefixLookup = {}; - _.each(network.network.options.PREFIX, function(mode) { + network.network.options.PREFIX.forEach(mode => { prefixLookup[mode.mode] = mode.symbol; }); From e905c139d7f9c7bd8252e1b3792574ef916b4fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Astori?= Date: Wed, 12 Oct 2016 04:00:04 -0400 Subject: [PATCH 2/2] Use native ES5 map method instead of lodash's --- src/client.js | 9 +-------- src/clientManager.js | 5 +---- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/client.js b/src/client.js index 70f8daa6..6e08d814 100644 --- a/src/client.js +++ b/src/client.js @@ -458,14 +458,7 @@ Client.prototype.save = function(force) { return; } - var networks = _.map( - this.networks, - function(n) { - return n.export(); - } - ); - var json = {}; - json.networks = networks; + json.networks = this.networks.map(n => n.export()); client.manager.updateUser(client.name, json); }; diff --git a/src/clientManager.js b/src/clientManager.js index 120320af..f9b2d043 100644 --- a/src/clientManager.js +++ b/src/clientManager.js @@ -143,10 +143,7 @@ ClientManager.prototype.removeUser = function(name) { ClientManager.prototype.autoload = function(/* sockets */) { var self = this; setInterval(function() { - var loaded = _.map( - self.clients, - "name" - ); + var loaded = self.clients.map(c => c.name); var added = _.difference(self.getUsers(), loaded); added.forEach(name => self.loadUser(name));