From 15887994fe5a827f857b0f91a35a61d899ed53ce Mon Sep 17 00:00:00 2001 From: Nicholas Hubbard Date: Tue, 3 May 2016 19:09:38 -0400 Subject: [PATCH] JSCS Says Goodbye --- .eslintignore | 6 ++++++ .eslintrc.json | 14 ++++++++++++++ .jscsrc | 9 --------- js/app.js | 16 ++++++++-------- js/class.js | 5 +++-- js/loader.js | 46 +++++++++++++++++++-------------------------- js/main.js | 27 ++++++++++++++++++++++---- js/module.js | 12 ++++++------ js/translator.js | 2 +- serveronly/index.js | 6 +++--- 10 files changed, 83 insertions(+), 60 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.json delete mode 100644 .jscsrc diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..460e735a --- /dev/null +++ b/.eslintignore @@ -0,0 +1,6 @@ +vendor/ +!/vendor/vendor.js +/modules/** +!/modules/default/** +!/modules/node_helper +!/modules/node_helper/** diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..83309505 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,14 @@ +{ + "rules": { + "indent": ["error", "tab"], + "quotes": ["error", "double"], + "max-len": ["error", 250], + "curly": "error", + "camelcase": ["error", {"properties": "never"}] + }, + "env": { + "browser": true, + "node": true, + "es6": true + } +} \ No newline at end of file diff --git a/.jscsrc b/.jscsrc deleted file mode 100644 index 4638b44f..00000000 --- a/.jscsrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "preset": "google", - "validateIndentation": "\t", - "validateQuoteMarks": "\"", - "maximumLineLength": 250, - "requireCurlyBraces": [], - "requireCamelCaseOrUpperCaseIdentifiers": false, - "excludeFiles": [".jscsrc"], -} \ No newline at end of file diff --git a/js/app.js b/js/app.js index 012d33ad..1ffbafb8 100644 --- a/js/app.js +++ b/js/app.js @@ -12,11 +12,11 @@ var path = require("path"); // The next part is here to prevent a major exception when there // is no internet connection. This could probable be solved better. -process.on('uncaughtException', function (err) { - console.log("Whoops! There was an uncaught exception..."); - console.error(err); - console.log("MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?"); - console.log("If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues"); +process.on("uncaughtException", function (err) { + console.log("Whoops! There was an uncaught exception..."); + console.error(err); + console.log("MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?"); + console.log("If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues"); }); /* App - The core app. @@ -41,7 +41,7 @@ var App = function() { var config = Object.assign(defaults, c); callback(config); } catch (e) { - console.error('WARNING! Could not find config. Please create one.'); + console.error("WARNING! Could not find config. Please create one."); callback(defaults); } }; @@ -98,7 +98,7 @@ var App = function() { /* start(callback) * This methods starts the core app. * It loads the config, then it loads all modules. - * When it's done it executs the callback with the config as argument. + * When it"s done it executs the callback with the config as argument. * * argument callback function - The callback function. */ @@ -130,7 +130,7 @@ var App = function() { console.log("Sockets connected & modules started ..."); - if (typeof callback === 'function') { + if (typeof callback === "function") { callback(config); } diff --git a/js/class.js b/js/class.js index 69b0cb09..b1793f16 100644 --- a/js/class.js +++ b/js/class.js @@ -48,8 +48,9 @@ // The dummy class constructor function Class() { // All construction is actually done in the init method - if (!initializing && this.init) - this.init.apply(this, arguments); + if (!initializing && this.init) { + this.init.apply(this, arguments); + } } // Populate our constructed prototype object diff --git a/js/loader.js b/js/loader.js index 2dbd40b2..7ab96812 100644 --- a/js/loader.js +++ b/js/loader.js @@ -1,7 +1,4 @@ /* global config, vendor, MM, Log, Module */ -/* jshint unused:false */ -/* jshint -W061 */ - /* Magic Mirror * Module and File loaders. * @@ -165,31 +162,26 @@ var Loader = (function() { var extension = fileName.slice((Math.max(0, fileName.lastIndexOf(".")) || Infinity) + 1); switch (extension.toLowerCase()) { - case "js": - Log.log("Load script: " + fileName); - - var script = document.createElement("script"); - script.type = "text/javascript"; - script.src = fileName; - script.onload = function() { - if (typeof callback === "function") {callback();} - }; - - document.getElementsByTagName("body")[0].appendChild(script); + case "js": + Log.log("Load script: " + fileName); + var script = document.createElement("script"); + script.type = "text/javascript"; + script.src = fileName; + script.onload = function() { + if (typeof callback === "function") {callback();} + }; + document.getElementsByTagName("body")[0].appendChild(script); break; - - case "css": - Log.log("Load stylesheet: " + fileName); - - var stylesheet = document.createElement("link"); - stylesheet.rel = "stylesheet"; - stylesheet.type = "text/css"; - stylesheet.href = fileName; - stylesheet.onload = function() { - if (typeof callback === "function") {callback();} - }; - - document.getElementsByTagName("head")[0].appendChild(stylesheet); + case "css": + Log.log("Load stylesheet: " + fileName); + var stylesheet = document.createElement("link"); + stylesheet.rel = "stylesheet"; + stylesheet.type = "text/css"; + stylesheet.href = fileName; + stylesheet.onload = function() { + if (typeof callback === "function") {callback();} + }; + document.getElementsByTagName("head")[0].appendChild(stylesheet); break; } diff --git a/js/main.js b/js/main.js index 7a585425..b159687a 100644 --- a/js/main.js +++ b/js/main.js @@ -1,5 +1,4 @@ /* global Log, Loader, Module, config, defaults */ -/* jshint -W020 */ /* Magic Mirror * Main System @@ -165,7 +164,7 @@ var MM = (function() { clearTimeout(module.showHideTimer); module.showHideTimer = setTimeout(function() { // To not take up any space, we just make the position absolute. - // since it's fade out anyway, we can see it lay above or + // since it"s fade out anyway, we can see it lay above or // below other modules. This works way better than adjusting // the .display property. moduleWrapper.style.position = "absolute"; @@ -434,7 +433,27 @@ var MM = (function() { })(); // Add polyfill for Object.assign. -if (typeof Object.assign != 'function') { (function () { Object.assign = function (target) { 'use strict'; if (target === undefined || target === null) { throw new TypeError('Cannot convert undefined or null to object'); } var output = Object(target); for (var index = 1; index < arguments.length; index++) { var source = arguments[index]; if (source !== undefined && source !== null) { for (var nextKey in source) { if (source.hasOwnProperty(nextKey)) { output[nextKey] = source[nextKey]; } } } } return output; }; })(); } - +if (typeof Object.assign != "function") { + (function() { + Object.assign = function(target) { + "use strict"; + if (target === undefined || target === null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + for (var nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey]; + } + } + } + } + return output; + }; + })(); +} MM.init(); diff --git a/js/module.js b/js/module.js index f0b0103d..f21fdec6 100644 --- a/js/module.js +++ b/js/module.js @@ -111,7 +111,7 @@ var Module = Class.extend({ }, /********************************************* - * The methods below don't need subclassing. * + * The methods below don"t need subclassing. * *********************************************/ /* setData(data) @@ -138,7 +138,7 @@ var Module = Class.extend({ }, /* socket() - * Returns a socket object. If it doesn't exsist, it's created. + * Returns a socket object. If it doesn"t exsist, it"s created. * It also registers the notification callback. */ socket: function() { @@ -223,9 +223,9 @@ var Module = Class.extend({ var translations = this.getTranslations(); var translationFile = translations && (translations[config.language.toLowerCase()] || translations.en) || undefined; if(translationFile) { - Translator.load(this, translationFile, callback); + Translator.load(this, translationFile, callback); } else { - callback(); + callback(); } }, @@ -236,7 +236,7 @@ var Module = Class.extend({ * argument defaultValue string - The default value if no translation was found. (Optional) */ translate: function(key, defaultValue) { - return Translator.translate(this, key) || defaultValue || ''; + return Translator.translate(this, key) || defaultValue || ""; }, /* updateDom(speed) @@ -299,7 +299,7 @@ Module.create = function(name) { return obj; } - var temp = obj.constructor(); // give temp the original obj's constructor + var temp = obj.constructor(); // give temp the original obj"s constructor for (var key in obj) { temp[key] = cloneObject(obj[key]); } diff --git a/js/translator.js b/js/translator.js index 87612ed9..b4c2ab53 100644 --- a/js/translator.js +++ b/js/translator.js @@ -47,7 +47,7 @@ var Translator = (function() { _loadJSON: function(file, callback) { var xhr = new XMLHttpRequest(); xhr.overrideMimeType("application/json"); - xhr.open('GET', file, true); + xhr.open("GET", file, true); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == "200") { callback(JSON.parse(xhr.responseText)); diff --git a/serveronly/index.js b/serveronly/index.js index 3b8e0f16..ea435a8e 100644 --- a/serveronly/index.js +++ b/serveronly/index.js @@ -1,5 +1,5 @@ -var app = require('../js/app.js'); +var app = require("../js/app.js"); app.start(function(config) { - console.log(''); - console.log('Ready to go! Please point your browser to: http://localhost:' + config.port); + console.log(""); + console.log("Ready to go! Please point your browser to: http://localhost:" + config.port); });