diff --git a/.eslintrc.json b/.eslintrc.json index c49c0cd6..a63980e7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,6 +6,12 @@ "mocha": true, "node": true }, + "globals": { + "config": true, + "Log": true, + "MM": true, + "moment": true + }, "parserOptions": { "sourceType": "module", "ecmaVersion": 2017, @@ -16,7 +22,6 @@ "rules": { "eqeqeq": "error", "no-prototype-builtins": "off", - "no-undef": "off", "no-unused-vars": "off" } } diff --git a/CHANGELOG.md b/CHANGELOG.md index 65b66771..50ddd64b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). - Replaced grunt-based linters with their non-grunt equivalents - Switch to most of the eslint:recommended rules and fix warnings - Replaced insecure links with https ones +- Cleaned up all "no-undef" warnings from eslint ### Deleted - Removed truetype (ttf) fonts diff --git a/js/class.js b/js/class.js index 053207aa..aab1799e 100644 --- a/js/class.js +++ b/js/class.js @@ -1,9 +1,12 @@ +/* global Class, xyz */ + /* Simple JavaScript Inheritance * By John Resig https://johnresig.com/ + * + * Inspired by base2 and Prototype + * * MIT Licensed. */ - -// Inspired by base2 and Prototype (function () { var initializing = false; var fnTest = /xyz/.test(function () { xyz; }) ? /\b_super\b/ : /.*/; diff --git a/js/defaults.js b/js/defaults.js index 6ab78198..36275e6c 100644 --- a/js/defaults.js +++ b/js/defaults.js @@ -1,4 +1,4 @@ -/* exported defaults */ +/* global mmPort */ /* Magic Mirror * Config Defaults @@ -6,9 +6,8 @@ * By Michael Teeuw https://michaelteeuw.nl * MIT Licensed. */ - -var port = 8080; var address = "localhost"; +var port = 8080; if (typeof(mmPort) !== "undefined") { port = mmPort; } diff --git a/js/loader.js b/js/loader.js index 32368d77..7199fe88 100644 --- a/js/loader.js +++ b/js/loader.js @@ -1,4 +1,4 @@ -/* global config, vendor, MM, Log, Module */ +/* global defaultModules, Module, vendor */ /* Magic Mirror * Module and File loaders. diff --git a/js/logger.js b/js/logger.js index 876826e8..60d91b2f 100644 --- a/js/logger.js +++ b/js/logger.js @@ -1,16 +1,12 @@ -/* exported Log */ - /* Magic Mirror * Logger + * This logger is very simple, but needs to be extended. + * This system can eventually be used to push the log messages to an external target. * * By Michael Teeuw https://michaelteeuw.nl * MIT Licensed. */ - -// This logger is very simple, but needs to be extended. -// This system can eventually be used to push the log messages to an external target. - -var Log = (function() { +const Log = (function() { return { info: Function.prototype.bind.call(console.info, console), log: Function.prototype.bind.call(console.log, console), diff --git a/js/main.js b/js/main.js index e914e2f4..271a3be7 100644 --- a/js/main.js +++ b/js/main.js @@ -1,4 +1,4 @@ -/* global Log, Loader, Module, config, defaults */ +/* global Loader, Module, defaults, Translator */ /* Magic Mirror * Main System diff --git a/js/module.js b/js/module.js index c9d9d7f8..6ac218bf 100644 --- a/js/module.js +++ b/js/module.js @@ -1,4 +1,4 @@ -/* exported Module */ +/* global Class, cloneObject, Loader, MMSocket, nunjucks, Translator */ /* Magic Mirror * Module Blueprint. @@ -6,7 +6,6 @@ * By Michael Teeuw https://michaelteeuw.nl * MIT Licensed. */ - var Module = Class.extend({ /********************************************************* @@ -237,7 +236,7 @@ var Module = Class.extend({ */ socket: function () { if (typeof this._socket === "undefined") { - this._socket = this._socket = new MMSocket(this.name); + this._socket = new MMSocket(this.name); } var self = this; @@ -467,8 +466,8 @@ function cmpVersions(a, b) { Module.register = function (name, moduleDefinition) { if (moduleDefinition.requiresVersion) { - Log.log("Check MagicMirror version for module '" + name + "' - Minimum version: " + moduleDefinition.requiresVersion + " - Current version: " + version); - if (cmpVersions(version, moduleDefinition.requiresVersion) >= 0) { + Log.log("Check MagicMirror version for module '" + name + "' - Minimum version: " + moduleDefinition.requiresVersion + " - Current version: " + global.version); + if (cmpVersions(global.version, moduleDefinition.requiresVersion) >= 0) { Log.log("Version is ok!"); } else { Log.log("Version is incorrect. Skip module: '" + name + "'"); diff --git a/js/node_helper.js b/js/node_helper.js index 824de6e2..89c6e23e 100644 --- a/js/node_helper.js +++ b/js/node_helper.js @@ -4,12 +4,10 @@ * By Michael Teeuw https://michaelteeuw.nl * MIT Licensed. */ +const Class = require("./class.js"); +const express = require("express"); -var Class = require("./class.js"); -var express = require("express"); -var path = require("path"); - -NodeHelper = Class.extend({ +var NodeHelper = Class.extend({ init: function() { console.log("Initializing new module helper ..."); }, @@ -114,7 +112,6 @@ NodeHelper = Class.extend({ } }); }); - } }); @@ -122,4 +119,5 @@ NodeHelper.create = function(moduleDefinition) { return NodeHelper.extend(moduleDefinition); }; -module.exports = NodeHelper; +/*************** DO NOT EDIT THE LINE BELOW ***************/ +if (typeof module !== "undefined") {module.exports = NodeHelper;} diff --git a/js/server.js b/js/server.js index 44ef44f0..4d08fc14 100644 --- a/js/server.js +++ b/js/server.js @@ -71,7 +71,7 @@ var Server = function(config, callback) { var html = fs.readFileSync(path.resolve(global.root_path + "/index.html"), {encoding: "utf8"}); html = html.replace("#VERSION#", global.version); - configFile = "config/config.js"; + var configFile = "config/config.js"; if (typeof(global.configuration_file) !== "undefined") { configFile = global.configuration_file; } diff --git a/js/socketclient.js b/js/socketclient.js index d10c0d60..2274c20e 100644 --- a/js/socketclient.js +++ b/js/socketclient.js @@ -1,3 +1,11 @@ +/* global io */ + +/* Magic Mirror + * TODO add description + * + * By Michael Teeuw https://michaelteeuw.nl + * MIT Licensed. + */ var MMSocket = function(moduleName) { var self = this; diff --git a/js/translator.js b/js/translator.js index 36034b47..1ebf9fbf 100644 --- a/js/translator.js +++ b/js/translator.js @@ -1,4 +1,4 @@ -/* exported Translator */ +/* global translations */ /* Magic Mirror * Translator (l10n) diff --git a/js/utils.js b/js/utils.js index bdd81e57..df11d0b2 100644 --- a/js/utils.js +++ b/js/utils.js @@ -1,12 +1,9 @@ -/* exported Utils */ - /* Magic Mirror * Utils * * By Rodrigo Ramírez Norambuena https://rodrigoramirez.com * MIT Licensed. */ - var colors = require("colors/safe"); var Utils = { diff --git a/modules/default/alert/alert.js b/modules/default/alert/alert.js index f2d4f852..3ec8c8f7 100644 --- a/modules/default/alert/alert.js +++ b/modules/default/alert/alert.js @@ -1,4 +1,4 @@ -/* global Module */ +/* global Module, NotificationFx */ /* Magic Mirror * Module: alert diff --git a/modules/default/calendar/calendar.js b/modules/default/calendar/calendar.js index a245e543..0f042051 100755 --- a/modules/default/calendar/calendar.js +++ b/modules/default/calendar/calendar.js @@ -1,4 +1,4 @@ -/* global Module */ +/* global cloneObject, Module */ /* Magic Mirror * Module: Calendar diff --git a/modules/default/calendar/calendarfetcher.js b/modules/default/calendar/calendarfetcher.js index 9b6fc04e..177fd9ac 100644 --- a/modules/default/calendar/calendarfetcher.js +++ b/modules/default/calendar/calendarfetcher.js @@ -5,8 +5,8 @@ * MIT Licensed. */ -var ical = require("./vendor/ical.js"); -var moment = require("moment"); +const ical = require("./vendor/ical.js"); +const moment = require("moment"); var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntries, maximumNumberOfDays, auth, includePastEvents) { var self = this; @@ -25,7 +25,7 @@ var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntri clearTimeout(reloadTimer); reloadTimer = null; - nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]); + var nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]); var opts = { headers: { "User-Agent": "Mozilla/5.0 (Node.js "+ nodeVersion + ") MagicMirror/" + global.version + " (https://github.com/MichMich/MagicMirror/)" @@ -61,7 +61,7 @@ var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntri } // console.log(data); - newEvents = []; + var newEvents = []; // limitFunction doesn't do much limiting, see comment re: the dates array in rrule section below as to why we need to do the filtering ourselves var limitFunction = function(date, i) {return true;}; @@ -97,7 +97,7 @@ var CalendarFetcher = function(url, reloadInterval, excludedEvents, maximumEntri if (typeof event.end !== "undefined") { endDate = eventDate(event, "end"); } else if(typeof event.duration !== "undefined") { - dur=moment.duration(event.duration); + var dur=moment.duration(event.duration); endDate = startDate.clone().add(dur); } else { if (!isFacebookBirthday) { diff --git a/modules/default/calendar/debug.js b/modules/default/calendar/debug.js index ac7c9a8f..51e6f20c 100644 --- a/modules/default/calendar/debug.js +++ b/modules/default/calendar/debug.js @@ -15,8 +15,6 @@ var maximumEntries = 10; var maximumNumberOfDays = 365; var user = "magicmirror"; var pass = "MyStrongPass"; -var broadcastPastEvents = false; - var auth = { user: user, pass: pass @@ -24,7 +22,7 @@ var auth = { console.log("Create fetcher ..."); -fetcher = new CalendarFetcher(url, fetchInterval, [], maximumEntries, maximumNumberOfDays, auth); +var fetcher = new CalendarFetcher(url, fetchInterval, [], maximumEntries, maximumNumberOfDays, auth); fetcher.onReceive(function(fetcher) { console.log(fetcher.events()); diff --git a/modules/default/clock/clock.js b/modules/default/clock/clock.js index 8ef842c2..6c4e2ff6 100644 --- a/modules/default/clock/clock.js +++ b/modules/default/clock/clock.js @@ -1,4 +1,4 @@ -/* global Log, Module, moment, config */ +/* global Module, SunCalc */ /* Magic Mirror * Module: Clock @@ -289,11 +289,12 @@ Module.register("clock",{ // Both clocks have been configured, check position var placement = this.config.analogPlacement; - analogWrapper = document.createElement("div"); + var analogWrapper = document.createElement("div"); analogWrapper.id = "analog"; analogWrapper.style.cssFloat = "none"; analogWrapper.appendChild(clockCircle); - digitalWrapper = document.createElement("div"); + + var digitalWrapper = document.createElement("div"); digitalWrapper.id = "digital"; digitalWrapper.style.cssFloat = "none"; digitalWrapper.appendChild(dateWrapper); diff --git a/modules/default/compliments/compliments.js b/modules/default/compliments/compliments.js index 2a3ee919..5b79c09a 100644 --- a/modules/default/compliments/compliments.js +++ b/modules/default/compliments/compliments.js @@ -1,4 +1,4 @@ -/* global Log, Module, moment */ +/* global Module */ /* Magic Mirror * Module: Compliments @@ -127,7 +127,7 @@ Module.register("compliments", { compliments.push.apply(compliments, this.config.compliments.anytime); - for (entry in this.config.compliments) { + for (var entry in this.config.compliments) { if (new RegExp(entry).test(date)) { compliments.push.apply(compliments, this.config.compliments[entry]); } @@ -188,7 +188,7 @@ Module.register("compliments", { // create a span to hold it all var compliment = document.createElement("span"); // process all the parts of the compliment text - for (part of parts){ + for (var part of parts){ // create a text element for each part compliment.appendChild(document.createTextNode(part)); // add a break ` diff --git a/modules/default/newsfeed/fetcher.js b/modules/default/newsfeed/fetcher.js index 997ddc9a..e74ac114 100644 --- a/modules/default/newsfeed/fetcher.js +++ b/modules/default/newsfeed/fetcher.js @@ -81,8 +81,8 @@ var Fetcher = function(url, reloadInterval, encoding, logFeedWarnings) { scheduleTimer(); }); - nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]); - headers = {"User-Agent": "Mozilla/5.0 (Node.js "+ nodeVersion + ") MagicMirror/" + global.version + " (https://github.com/MichMich/MagicMirror/)", + var nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]); + var headers = {"User-Agent": "Mozilla/5.0 (Node.js "+ nodeVersion + ") MagicMirror/" + global.version + " (https://github.com/MichMich/MagicMirror/)", "Cache-Control": "max-age=0, no-cache, no-store, must-revalidate", "Pragma": "no-cache"}; diff --git a/modules/default/newsfeed/newsfeed.js b/modules/default/newsfeed/newsfeed.js index 5afe9ed8..5926c712 100644 --- a/modules/default/newsfeed/newsfeed.js +++ b/modules/default/newsfeed/newsfeed.js @@ -126,7 +126,7 @@ Module.register("newsfeed",{ if (this.config.removeStartTags === "title" || this.config.removeStartTags === "both") { - for (f=0; f { it(`should return 200 HTTP code for vendor "${vendor}"`, function () { - urlVendor = "http://localhost:8080/vendor/" + vendors[vendor]; + var urlVendor = "http://localhost:8080/vendor/" + vendors[vendor]; request.get(urlVendor, function (err, res, body) { expect(res.statusCode).to.equal(200); }); @@ -39,7 +38,7 @@ describe("Vendors", function () { Object.keys(vendors).forEach(vendor => { it(`should return 404 HTTP code for vendor https://localhost/"${vendor}"`, function() { - urlVendor = "http://localhost:8080/" + vendors[vendor]; + var urlVendor = "http://localhost:8080/" + vendors[vendor]; request.get(urlVendor, function (err, res, body) { expect(res.statusCode).to.equal(404); }); diff --git a/tests/servers/basic-auth.js b/tests/servers/basic-auth.js index 067a000b..4028997a 100644 --- a/tests/servers/basic-auth.js +++ b/tests/servers/basic-auth.js @@ -19,7 +19,8 @@ app.use(auth.connect(basic)); // Set available directories var directories = ["/tests/configs"]; var directory; -rootPath = path.resolve(__dirname + "/../../"); +var rootPath = path.resolve(__dirname + "/../../"); + for (var i in directories) { directory = directories[i]; app.use(directory, express.static(path.resolve(rootPath + directory))); diff --git a/vendor/vendor.js b/vendor/vendor.js index fa2abd6f..7cc7d130 100755 --- a/vendor/vendor.js +++ b/vendor/vendor.js @@ -1,12 +1,9 @@ -/* exported vendor */ - /* Magic Mirror * Vendor File Definition * * By Michael Teeuw https://michaelteeuw.nl * MIT Licensed. */ - var vendor = { "moment.js" : "node_modules/moment/min/moment-with-locales.js", "moment-timezone.js" : "node_modules/moment-timezone/builds/moment-timezone-with-data.js",