diff --git a/.eslintrc.yml b/.eslintrc.yml index 937aef1f..e5486756 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -9,22 +9,28 @@ env: node: true rules: + arrow-body-style: 2 + arrow-parens: [2, always] + arrow-spacing: 2 block-scoped-var: 2 block-spacing: [2, always] brace-style: [2, 1tbs] comma-dangle: 0 curly: [2, all] + dot-location: [2, property] dot-notation: 2 eol-last: 2 eqeqeq: 2 handle-callback-err: 2 - indent: [2, tab, { "MemberExpression": 1 }] + indent: [2, tab] key-spacing: [2, {beforeColon: false, afterColon: true}] keyword-spacing: [2, {before: true, after: true}] linebreak-style: [2, unix] - no-compare-neg-zero: 2 + no-catch-shadow: 2 + no-confusing-arrow: 2 no-console: 0 no-control-regex: 0 + no-duplicate-imports: 2 no-else-return: 2 no-implicit-globals: 2 no-multi-spaces: 2 @@ -33,12 +39,14 @@ rules: no-template-curly-in-string: 2 no-trailing-spaces: 2 no-unsafe-negation: 2 - no-useless-escape: 2 + no-useless-computed-key: 2 no-useless-return: 2 object-curly-spacing: [2, never] padded-blocks: [2, never] + prefer-const: 2 quote-props: [2, as-needed] quotes: [2, double, avoid-escape] + semi-style: [2, last] semi: [2, always] space-before-blocks: 2 space-before-function-paren: [2, never] @@ -46,6 +54,8 @@ rules: space-infix-ops: 2 spaced-comment: [2, always] strict: 2 + template-curly-spacing: 2 + yoda: 2 globals: log: false diff --git a/client/js/libs/handlebars/ircmessageparser/findLinks.js b/client/js/libs/handlebars/ircmessageparser/findLinks.js index 1bd989b2..564722e7 100644 --- a/client/js/libs/handlebars/ircmessageparser/findLinks.js +++ b/client/js/libs/handlebars/ircmessageparser/findLinks.js @@ -16,7 +16,7 @@ const commonSchemes = [ ]; function findLinks(text) { - let result = []; + const result = []; // URI.withinString() identifies URIs within text, e.g. to translate them to // -Tags. @@ -29,7 +29,7 @@ function findLinks(text) { // Check if the scheme of the detected URL matches a common one above. // In a URL like `foo..http://example.com`, the scheme would be `foo..http`, // so we need to clean up the end of the scheme and filter out the rest. - const matchedScheme = commonSchemes.find(scheme => parsedScheme.endsWith(scheme)); + const matchedScheme = commonSchemes.find((scheme) => parsedScheme.endsWith(scheme)); // A known scheme was found, extract the unknown part from the URL if (matchedScheme) { diff --git a/client/js/libs/handlebars/ircmessageparser/merge.js b/client/js/libs/handlebars/ircmessageparser/merge.js index 893997cc..623327d8 100644 --- a/client/js/libs/handlebars/ircmessageparser/merge.js +++ b/client/js/libs/handlebars/ircmessageparser/merge.js @@ -48,10 +48,10 @@ function merge(textParts, styleFragments) { .sort((a, b) => a.start - b.start); // Distribute the style fragments within the text parts - return allParts.map(textPart => { + return allParts.map((textPart) => { textPart.fragments = styleFragments - .filter(fragment => anyIntersection(textPart, fragment)) - .map(fragment => assign(textPart, fragment)); + .filter((fragment) => anyIntersection(textPart, fragment)) + .map((fragment) => assign(textPart, fragment)); return textPart; }); diff --git a/client/js/libs/handlebars/ircmessageparser/parseStyle.js b/client/js/libs/handlebars/ircmessageparser/parseStyle.js index a0f3fd08..2d4ca24d 100644 --- a/client/js/libs/handlebars/ircmessageparser/parseStyle.js +++ b/client/js/libs/handlebars/ircmessageparser/parseStyle.js @@ -84,7 +84,6 @@ function parseStyle(text) { // encountered since the previous styling character. while (position < text.length) { switch (text[position]) { - case RESET: emitFragment(); resetStyle(); @@ -178,7 +177,7 @@ function prepare(text) { .reduce((prev, curr) => { if (prev.length) { const lastEntry = prev[prev.length - 1]; - if (properties.every(key => curr[key] === lastEntry[key])) { + if (properties.every((key) => curr[key] === lastEntry[key])) { lastEntry.text += curr.text; lastEntry.end += curr.text.length; return prev; diff --git a/client/js/libs/handlebars/parse.js b/client/js/libs/handlebars/parse.js index 426cbe4f..b5e9e5d7 100644 --- a/client/js/libs/handlebars/parse.js +++ b/client/js/libs/handlebars/parse.js @@ -8,7 +8,7 @@ const merge = require("./ircmessageparser/merge"); // Create an HTML `span` with styling information for a given fragment function createFragment(fragment) { - let classes = []; + const classes = []; if (fragment.bold) { classes.push("irc-bold"); } @@ -50,7 +50,7 @@ function createFragment(fragment) { module.exports = function parse(text) { // Extract the styling information and get the plain text version from it const styleFragments = parseStyle(text); - const cleanText = styleFragments.map(fragment => fragment.text).join(""); + const cleanText = styleFragments.map((fragment) => fragment.text).join(""); // On the plain text, find channels and URLs, returned as "parts". Parts are // arrays of objects containing start and end markers, as well as metadata @@ -67,7 +67,7 @@ module.exports = function parse(text) { // Merge the styling information with the channels / URLs / text objects and // generate HTML strings with the resulting fragments - return merge(parts, styleFragments).map(textPart => { + return merge(parts, styleFragments).map((textPart) => { // Create HTML strings with styling information const fragments = textPart.fragments.map(createFragment).join(""); diff --git a/client/js/lounge.js b/client/js/lounge.js index 712140e2..99bf8e3a 100644 --- a/client/js/lounge.js +++ b/client/js/lounge.js @@ -52,7 +52,7 @@ $(function() { id: "emoji", match: /\B:([-+\w]*):?$/, search(term, callback) { - callback(Object.keys(emojiMap).filter(name => name.indexOf(term) === 0)); + callback(Object.keys(emojiMap).filter((name) => name.indexOf(term) === 0)); }, template(value) { return `${emojiMap[value]} ${value}`; @@ -69,7 +69,7 @@ $(function() { search(term, callback) { term = term.slice(1); if (term[0] === "@") { - callback(completeNicks(term.slice(1)).map(val => "@" + val)); + callback(completeNicks(term.slice(1)).map((val) => "@" + val)); } else { callback(completeNicks(term)); } @@ -119,7 +119,7 @@ $(function() { search(term, callback) { term = term.toLowerCase(); const matchingColorCodes = constants.colorCodeMap - .filter(i => i[0].startsWith(term) || i[1].toLowerCase().startsWith(term)); + .filter((i) => i[0].startsWith(term) || i[1].toLowerCase().startsWith(term)); callback(matchingColorCodes); }, @@ -138,8 +138,8 @@ $(function() { search(term, callback, match) { term = term.toLowerCase(); const matchingColorCodes = constants.colorCodeMap - .filter(i => i[0].startsWith(term) || i[1].toLowerCase().startsWith(term)) - .map(pair => pair.concat(match[1])); // Needed to pass fg color to `template`... + .filter((i) => i[0].startsWith(term) || i[1].toLowerCase().startsWith(term)) + .map((pair) => pair.concat(match[1])); // Needed to pass fg color to `template`... callback(matchingColorCodes); }, @@ -476,7 +476,7 @@ $(function() { $(container).empty(); } - // Check if date changed + // Check if date changed var prevMsg = $(container.find(".msg")).last(); var prevMsgTime = new Date(prevMsg.attr("data-time")); var msgTime = new Date(msg.attr("data-time")); @@ -490,7 +490,7 @@ $(function() { prevMsg.after(templates.date_marker({msgDate: msgTime})); } - // Add message to the container + // Add message to the container container .append(msg) .trigger("msg", [ @@ -1099,7 +1099,7 @@ $(function() { const fuzzyOptions = { pre: "", post: "", - extract: el => $(el).text() + extract: (el) => $(el).text() }; const result = fuzzy.filter( @@ -1438,7 +1438,7 @@ $(function() { return $.grep( words, - w => !w.toLowerCase().indexOf(word.toLowerCase()) + (w) => !w.toLowerCase().indexOf(word.toLowerCase()) ); } @@ -1447,7 +1447,7 @@ $(function() { return $.grep( words, - w => !w.toLowerCase().indexOf(word.toLowerCase()) + (w) => !w.toLowerCase().indexOf(word.toLowerCase()) ); } @@ -1464,7 +1464,7 @@ $(function() { return $.grep( words, - w => !w.toLowerCase().indexOf(word.toLowerCase()) + (w) => !w.toLowerCase().indexOf(word.toLowerCase()) ); } @@ -1628,19 +1628,17 @@ $(function() { // Only start opening socket.io connection after all events have been registered socket.open(); - window.addEventListener( - "popstate", - (e) => { - const {state} = e; - if (!state) { - return; - } - const {clickTarget} = state; - if (clickTarget) { - $(clickTarget).trigger("click", { - pushState: false - }); - } + window.addEventListener("popstate", (e) => { + const {state} = e; + if (!state) { + return; } - ); + + const {clickTarget} = state; + if (clickTarget) { + $(clickTarget).trigger("click", { + pushState: false + }); + } + }); }); diff --git a/package.json b/package.json index 78c55b47..94269a67 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "babel-loader": "7.0.0", "babel-preset-env": "1.5.2", "chai": "4.0.2", - "eslint": "3.19.0", + "eslint": "4.0.0", "font-awesome": "4.7.0", "fuzzy": "0.1.3", "handlebars": "4.0.10", diff --git a/src/client.js b/src/client.js index f483d514..fd01948f 100644 --- a/src/client.js +++ b/src/client.js @@ -58,7 +58,7 @@ var inputs = [ ].reduce(function(plugins, name) { var path = "./plugins/inputs/" + name; var plugin = require(path); - plugin.commands.forEach(command => plugins[command] = plugin); + plugin.commands.forEach((command) => plugins[command] = plugin); return plugins; }, {}); @@ -88,7 +88,7 @@ function Client(manager, name, config) { } var delay = 0; - (client.config.networks || []).forEach(n => { + (client.config.networks || []).forEach((n) => { setTimeout(function() { client.connect(n); }, delay); @@ -155,7 +155,7 @@ Client.prototype.connect = function(args) { if (args.channels) { var badName = false; - args.channels.forEach(chan => { + args.channels.forEach((chan) => { if (!chan.name) { badName = true; return; @@ -273,7 +273,7 @@ Client.prototype.connect = function(args) { "znc.in/self-message", // Legacy echo-message for ZNc ]); - events.forEach(plugin => { + events.forEach((plugin) => { var path = "./plugins/irc-events/" + plugin; require(path).apply(client, [ network.irc, @@ -319,7 +319,7 @@ Client.prototype.setPassword = function(hash, callback) { Client.prototype.input = function(data) { var client = this; - data.text.split("\n").forEach(line => { + data.text.split("\n").forEach((line) => { data.text = line; client.inputLine(data); }); @@ -422,12 +422,10 @@ Client.prototype.sort = function(data) { switch (data.type) { case "networks": - this.networks.sort((a, b) => { - return order.indexOf(a.id) - order.indexOf(b.id); - }); + this.networks.sort((a, b) => order.indexOf(a.id) - order.indexOf(b.id)); // Sync order to connected clients - this.emit("sync_sort", {order: this.networks.map(obj => obj.id), type: data.type, target: data.target}); + this.emit("sync_sort", {order: this.networks.map((obj) => obj.id), type: data.type, target: data.target}); break; @@ -437,12 +435,10 @@ Client.prototype.sort = function(data) { return; } - network.channels.sort((a, b) => { - return order.indexOf(a.id) - order.indexOf(b.id); - }); + network.channels.sort((a, b) => order.indexOf(a.id) - order.indexOf(b.id)); // Sync order to connected clients - this.emit("sync_sort", {order: network.channels.map(obj => obj.id), type: data.type, target: data.target}); + this.emit("sync_sort", {order: network.channels.map((obj) => obj.id), type: data.type, target: data.target}); break; } @@ -472,7 +468,7 @@ Client.prototype.quit = function() { socket.disconnect(); } } - this.networks.forEach(network => { + this.networks.forEach((network) => { if (network.irc) { network.irc.quit("Page closed"); } @@ -496,7 +492,7 @@ Client.prototype.clientAttach = function(socketId) { client.attachedClients[socketId] = client.lastActiveChannel; // Update old networks to store ip and hostmask - client.networks.forEach(network => { + client.networks.forEach((network) => { if (!network.ip) { save = true; network.ip = (client.config && client.config.ip) || client.ip; @@ -539,7 +535,7 @@ Client.prototype.save = _.debounce(function SaveClient() { } const client = this; - let json = {}; - json.networks = this.networks.map(n => n.export()); + const json = {}; + json.networks = this.networks.map((n) => n.export()); client.manager.updateUser(client.name, json); }, 1000, {maxWait: 10000}); diff --git a/src/clientManager.js b/src/clientManager.js index 6e73af19..95fa7054 100644 --- a/src/clientManager.js +++ b/src/clientManager.js @@ -36,17 +36,17 @@ ClientManager.prototype.findClient = function(name, token) { }; ClientManager.prototype.autoloadUsers = function() { - this.getUsers().forEach(name => this.loadUser(name)); + this.getUsers().forEach((name) => this.loadUser(name)); fs.watch(Helper.USERS_PATH, _.debounce(() => { - const loaded = this.clients.map(c => c.name); + const loaded = this.clients.map((c) => c.name); const updatedUsers = this.getUsers(); // New users created since last time users were loaded - _.difference(updatedUsers, loaded).forEach(name => this.loadUser(name)); + _.difference(updatedUsers, loaded).forEach((name) => this.loadUser(name)); // Existing users removed since last time users were loaded - _.difference(loaded, updatedUsers).forEach(name => { + _.difference(loaded, updatedUsers).forEach((name) => { const client = _.find(this.clients, {name: name}); if (client) { client.quit(); @@ -78,7 +78,7 @@ ClientManager.prototype.getUsers = function() { var users = []; try { var files = fs.readdirSync(Helper.USERS_PATH); - files.forEach(file => { + files.forEach((file) => { if (file.indexOf(".json") !== -1) { users.push(file.replace(".json", "")); } @@ -127,7 +127,7 @@ ClientManager.prototype.updateUser = function(name, opts, callback) { return false; } - let user = this.readUserConfig(name); + const user = this.readUserConfig(name); const currentUser = JSON.stringify(user, null, "\t"); _.assign(user, opts); const newUser = JSON.stringify(user, null, "\t"); diff --git a/src/identification.js b/src/identification.js index ea4cca28..8ea51fe7 100644 --- a/src/identification.js +++ b/src/identification.js @@ -38,7 +38,7 @@ class Identification { } serverConnection(socket) { - socket.on("data", data => { + socket.on("data", (data) => { this.respondToIdent(socket, data); socket.end(); }); diff --git a/src/models/user.js b/src/models/user.js index ce91a38d..f1dca1e4 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -12,7 +12,7 @@ function User(attr, prefixLookup) { }); // irc-framework sets character mode, but lounge works with symbols - this.modes = this.modes.map(mode => prefixLookup[mode]); + this.modes = this.modes.map((mode) => prefixLookup[mode]); if (this.modes[0]) { this.mode = this.modes[0]; diff --git a/src/plugins/irc-events/connection.js b/src/plugins/irc-events/connection.js index e44b7676..92222117 100644 --- a/src/plugins/irc-events/connection.js +++ b/src/plugins/irc-events/connection.js @@ -30,7 +30,7 @@ module.exports = function(irc, network) { var delay = 1000; var commands = network.commands; if (Array.isArray(commands)) { - commands.forEach(cmd => { + commands.forEach((cmd) => { setTimeout(function() { client.input({ target: network.channels[0].id, @@ -41,7 +41,7 @@ module.exports = function(irc, network) { }); } - network.channels.forEach(chan => { + network.channels.forEach((chan) => { if (chan.type !== Chan.Type.CHANNEL) { return; } @@ -126,7 +126,7 @@ module.exports = function(irc, network) { network.prefixLookup = {}; - data.options.PREFIX.forEach(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 2502446d..834fe351 100644 --- a/src/plugins/irc-events/link.js +++ b/src/plugins/irc-events/link.js @@ -16,13 +16,13 @@ module.exports = function(client, chan, originalMsg) { const links = originalMsg.text .replace(/\x02|\x1D|\x1F|\x16|\x0F|\x03(?:[0-9]{1,2}(?:,[0-9]{1,2})?)?/g, "") .split(" ") - .filter(w => /^https?:\/\//.test(w)); + .filter((w) => /^https?:\/\//.test(w)); if (links.length === 0) { return; } - let msg = new Msg({ + const msg = new Msg({ type: Msg.Type.TOGGLE, time: originalMsg.time, self: originalMsg.self, diff --git a/src/plugins/irc-events/mode.js b/src/plugins/irc-events/mode.js index f673f16b..28f94052 100644 --- a/src/plugins/irc-events/mode.js +++ b/src/plugins/irc-events/mode.js @@ -21,7 +21,7 @@ module.exports = function(irc, network) { return; } - data.modes.forEach(mode => { + data.modes.forEach((mode) => { const text = mode.mode; const add = text[0] === "+"; const char = text[1]; @@ -46,14 +46,14 @@ module.exports = function(irc, network) { } let usersUpdated; - let userModeSortPriority = {}; + const userModeSortPriority = {}; const supportsMultiPrefix = network.irc.network.cap.isEnabled("multi-prefix"); irc.network.options.PREFIX.forEach((prefix, index) => { userModeSortPriority[prefix.symbol] = index; }); - data.modes.forEach(mode => { + data.modes.forEach((mode) => { let text = mode.mode; const add = text[0] === "+"; const char = text[1]; diff --git a/src/plugins/irc-events/motd.js b/src/plugins/irc-events/motd.js index 0d777869..062943b3 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(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 6384b44d..16ade0f3 100644 --- a/src/plugins/irc-events/names.js +++ b/src/plugins/irc-events/names.js @@ -10,12 +10,10 @@ module.exports = function(irc, network) { return; } - chan.users = data.users.map(user => { - return new User({ - nick: user.nick, - modes: user.modes, - }, network.prefixLookup); - }); + chan.users = data.users.map((user) => new User({ + nick: user.nick, + modes: user.modes, + }, network.prefixLookup)); chan.sortUsers(irc); diff --git a/src/plugins/irc-events/nick.js b/src/plugins/irc-events/nick.js index 4baf7178..7c8b61ad 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(chan => { + network.channels.forEach((chan) => { var user = _.find(chan.users, {nick: data.nick}); if (typeof user === "undefined") { return; diff --git a/src/plugins/irc-events/quit.js b/src/plugins/irc-events/quit.js index dbcf0082..3882eadc 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(chan => { + network.channels.forEach((chan) => { var from = data.nick; var user = _.find(chan.users, {nick: from}); if (typeof user === "undefined") { diff --git a/src/server.js b/src/server.js index b609cfa2..08f5222c 100644 --- a/src/server.js +++ b/src/server.js @@ -35,7 +35,7 @@ module.exports = function() { .engine("html", expressHandlebars({ extname: ".html", helpers: { - tojson: c => JSON.stringify(c) + tojson: (c) => JSON.stringify(c) } })) .set("view engine", "html") @@ -211,7 +211,7 @@ function init(socket, client) { Helper.password .compare(old || "", client.config.password) - .then(matching => { + .then((matching) => { if (!matching) { socket.emit("change-password", { error: "The current password field does not match your account password" @@ -220,7 +220,7 @@ function init(socket, client) { } const hash = Helper.password.hash(p1); - client.setPassword(hash, success => { + client.setPassword(hash, (success) => { const obj = {}; if (success) { @@ -232,7 +232,7 @@ function init(socket, client) { socket.emit("change-password", obj); }); - }).catch(error => { + }).catch((error) => { log.error(`Error while checking users password. Error: ${error}`); }); } @@ -291,18 +291,18 @@ function localAuth(client, user, password, callback) { Helper.password .compare(password, client.config.password) - .then(matching => { + .then((matching) => { if (matching && Helper.password.requiresUpdate(client.config.password)) { const hash = Helper.password.hash(password); - client.setPassword(hash, success => { + client.setPassword(hash, (success) => { if (success) { log.info(`User ${colors.bold(client.name)} logged in and their hashed password has been updated to match new security requirements`); } }); } callback(matching); - }).catch(error => { + }).catch((error) => { log.error(`Error while checking users password. Error: ${error}`); }); } diff --git a/test/client/js/libs/handlebars/friendlydateTest.js b/test/client/js/libs/handlebars/friendlydateTest.js index 6e76003e..d9091e11 100644 --- a/test/client/js/libs/handlebars/friendlydateTest.js +++ b/test/client/js/libs/handlebars/friendlydateTest.js @@ -16,7 +16,7 @@ describe("friendlydate Handlebars helper", () => { }); it("should not render any friendly dates prior to the day before", () => { - [2, 7, 30, 365, 1000].forEach(day => { + [2, 7, 30, 365, 1000].forEach((day) => { const time = new Date().getTime() - 24 * 3600 * 1000 * day; expect(friendlydate(time)).to.equal(moment(time).format("D MMMM YYYY")); }); diff --git a/test/client/js/libs/handlebars/parse.js b/test/client/js/libs/handlebars/parse.js index d3737e98..f8d5a091 100644 --- a/test/client/js/libs/handlebars/parse.js +++ b/test/client/js/libs/handlebars/parse.js @@ -13,8 +13,8 @@ describe("parse Handlebars helper", () => { expected: "#&">bug" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -25,8 +25,8 @@ describe("parse Handlebars helper", () => { expected: "textwithcontrolcodes" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -68,8 +68,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -119,8 +119,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -134,8 +134,8 @@ describe("parse Handlebars helper", () => { expected: "http://." }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -182,8 +182,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -197,8 +197,8 @@ describe("parse Handlebars helper", () => { expected: "#" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -237,8 +237,8 @@ describe("parse Handlebars helper", () => { "bold" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -263,8 +263,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -279,8 +279,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -302,8 +302,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); @@ -318,8 +318,8 @@ describe("parse Handlebars helper", () => { "" }]; - const actual = testCases.map(testCase => parse(testCase.input)); - const expected = testCases.map(testCase => testCase.expected); + const actual = testCases.map((testCase) => parse(testCase.input)); + const expected = testCases.map((testCase) => testCase.expected); expect(actual).to.deep.equal(expected); }); diff --git a/test/models/chan.js b/test/models/chan.js index fc0068e9..0201a076 100644 --- a/test/models/chan.js +++ b/test/models/chan.js @@ -23,7 +23,7 @@ describe("Chan", function() { var prefixLookup = {}; - network.network.options.PREFIX.forEach(mode => { + network.network.options.PREFIX.forEach((mode) => { prefixLookup[mode.mode] = mode.symbol; }); @@ -32,7 +32,7 @@ describe("Chan", function() { }; var getUserNames = function(chan) { - return chan.users.map(u => u.nick); + return chan.users.map((u) => u.nick); }; it("should sort a simple user list", function() { diff --git a/test/plugins/link.js b/test/plugins/link.js index 4eab22f1..2dd38a5c 100644 --- a/test/plugins/link.js +++ b/test/plugins/link.js @@ -21,7 +21,7 @@ describe("Link plugin", function() { }); it("should be able to fetch basic information about URLs", function(done) { - let message = this.irc.createMessage({ + const message = this.irc.createMessage({ text: "http://localhost:9002/basic" }); diff --git a/test/server.js b/test/server.js index 0b1a3388..4d06f980 100644 --- a/test/server.js +++ b/test/server.js @@ -12,7 +12,7 @@ describe("Server", () => { const webURL = `http://${Helper.config.host}:${Helper.config.port}/`; describe("Express", () => { - it("should run a web server on " + webURL, done => { + it("should run a web server on " + webURL, (done) => { request(webURL, (error, response, body) => { expect(error).to.be.null; expect(body).to.include("The Lounge"); @@ -22,7 +22,7 @@ describe("Server", () => { }); }); - it("should serve static content correctly", done => { + it("should serve static content correctly", (done) => { request(webURL + "manifest.json", (error, response, body) => { expect(error).to.be.null; @@ -58,11 +58,11 @@ describe("Server", () => { client.close(); }); - it("should emit authorized message", done => { + it("should emit authorized message", (done) => { client.on("authorized", done); }); - it("should create network", done => { + it("should create network", (done) => { client.on("init", () => { client.emit("conn", { username: "test-user", @@ -75,7 +75,7 @@ describe("Server", () => { }); }); - client.on("network", data => { + client.on("network", (data) => { expect(data.networks).to.be.an("array"); expect(data.networks).to.have.lengthOf(1); expect(data.networks[0].realname).to.equal("The Lounge Test"); @@ -86,8 +86,8 @@ describe("Server", () => { }); }); - it("should emit init message", done => { - client.on("init", data => { + it("should emit init message", (done) => { + client.on("init", (data) => { expect(data.active).to.equal(-1); expect(data.networks).to.be.an("array"); expect(data.networks).to.be.empty; diff --git a/test/tests/passwords.js b/test/tests/passwords.js index 48d45c9d..a5c1fa96 100644 --- a/test/tests/passwords.js +++ b/test/tests/passwords.js @@ -8,25 +8,25 @@ describe("Client passwords", function() { it("hashed password should match", function() { // Generated with third party tool to test implementation - let comparedPassword = Helper.password.compare(inputPassword, "$2a$11$zrPPcfZ091WNfs6QrRHtQeUitlgrJcecfZhxOFiQs0FWw7TN3Q1oS"); + const comparedPassword = Helper.password.compare(inputPassword, "$2a$11$zrPPcfZ091WNfs6QrRHtQeUitlgrJcecfZhxOFiQs0FWw7TN3Q1oS"); - return comparedPassword.then(result => { + return comparedPassword.then((result) => { expect(result).to.be.true; }); }); it("wrong hashed password should not match", function() { // Compare against a fake hash - let comparedPassword = Helper.password.compare(inputPassword, "$2a$11$zrPPcfZ091WRONGPASSWORDitlgrJcecfZhxOFiQs0FWw7TN3Q1oS"); + const comparedPassword = Helper.password.compare(inputPassword, "$2a$11$zrPPcfZ091WRONGPASSWORDitlgrJcecfZhxOFiQs0FWw7TN3Q1oS"); - return comparedPassword.then(result => { + return comparedPassword.then((result) => { expect(result).to.be.false; }); }); it("freshly hashed password should match", function() { - let hashedPassword = Helper.password.hash(inputPassword); - let comparedPassword = Helper.password.compare(inputPassword, hashedPassword); + const hashedPassword = Helper.password.hash(inputPassword); + const comparedPassword = Helper.password.compare(inputPassword, hashedPassword); return comparedPassword.then((result) => { expect(result).to.be.true; diff --git a/webpack.config.js b/webpack.config.js index 93b9794e..577bcca4 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,7 +7,7 @@ const path = require("path"); // Common configuration // ******************** -let config = { +const config = { entry: { "js/bundle.js": path.resolve(__dirname, "client/js/lounge.js"), "js/bundle.vendor.js": [