diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..534efaa04 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 6, + sourceType: 'module' + }, + extends: [ + 'eslint:recommended', + 'plugin:ember-suave/recommended' + ], + env: { + browser: true + }, + rules: { + indent: ['error', 4], + 'space-before-function-paren': ['error', {anonymous: 'ignore', named: 'never'}], + 'object-curly-spacing': ['error', 'never'], + 'array-bracket-spacing': ['error', 'never'], + 'key-spacing': ['error', {mode: 'minimum'}], + 'keyword-spacing': ['error', {overrides: { + 'catch': {'after': true} + }}], + 'ember-suave/require-access-in-comments': 'off' + }, + globals: { + moment: false, + validator: false + } +}; diff --git a/.jscsrc b/.jscsrc deleted file mode 100644 index 15197078c..000000000 --- a/.jscsrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "preset": "ember-suave", - "validateIndentation": 4, - "disallowSpacesInFunction": null, - "disallowSpacesInNamedFunctionExpression": { - "beforeOpeningRoundBrace": true - }, - "disallowSpacesInFunctionDeclaration": { - "beforeOpeningRoundBrace": true - }, - "disallowSpacesInsideObjectBrackets": "all", - "requireCommentsToIncludeAccess": null, - "requireSpacesInsideObjectBrackets": null -} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 54b7a8601..000000000 --- a/.jshintrc +++ /dev/null @@ -1,36 +0,0 @@ -{ - "predef": [ - "server", - "document", - "window", - "-Promise", - "-Notification", - "validator", - "moment" - ], - "browser": true, - "boss": true, - "curly": true, - "debug": false, - "devel": true, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esversion": 6, - "unused": true -} diff --git a/.travis.yml b/.travis.yml index 62628887d..2c10e7034 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,11 +9,6 @@ env: global: - GITHUB_OAUTH_KEY=003a44d58f12089d0c0261338298af3813330949 -matrix: - include: - - node_js: "4" - env: TEST_SUITE=lint - branches: except: - /^greenkeeper-.+$/ @@ -43,4 +38,4 @@ before_script: - export DISPLAY=:99; sh -e /etc/init.d/xvfb start; sleep 3; script: - - if [ "$TEST_SUITE" == "lint" ]; then grunt lint; else npm test; fi + - if [ "$TEST_SUITE" == "lint" ]; then npm run lint; else npm test; fi diff --git a/Gruntfile.js b/Gruntfile.js index 30f2d43e7..1528ae59e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -35,53 +35,6 @@ module.exports = function(grunt) { } }, - jshint: { - options: { - jshintrc: true, - ignores: [ - 'node_modules/**', - 'bower_components/**', - 'tmp/**', - 'dist/**', - 'vendor/**' - ] - }, - - all: ['**/*.js'] - }, - - jscs: { - app: { - options: { - config: '.jscsrc', - excludeFiles: [ - 'node_modules/**', - 'bower_components/**', - 'tests/**', - 'tmp/**', - 'dist/**', - 'vendor/**' - ] - }, - - files: { - src: ['**/*.js'] - } - }, - - tests: { - options: { - config: 'tests/.jscsrc' - }, - - files: { - src: [ - 'tests/**/*.js' - ] - } - } - }, - // ### grunt-bg-shell // Used to run ember-cli watch in the background bgShell: { @@ -146,10 +99,6 @@ module.exports = function(grunt) { ['shell:npm-install', 'shell:bower-install'] ); - grunt.registerTask('lint', 'Run the code style checks and linter', - ['jshint', 'jscs', 'shell:csscomblint'] - ); - // ### Build About Page *(Utility Task)* // Builds the github contributors partial template used on the about page, // and downloads the avatar for each of the users. diff --git a/app/authenticators/oauth2-ghost.js b/app/authenticators/oauth2-ghost.js index 1a1c404ad..7204808b3 100644 --- a/app/authenticators/oauth2-ghost.js +++ b/app/authenticators/oauth2-ghost.js @@ -1,4 +1,3 @@ -/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */ import Oauth2Authenticator from './oauth2'; import RSVP from 'rsvp'; import run from 'ember-runloop'; diff --git a/app/mirage/factories/.eslintrc.js b/app/mirage/factories/.eslintrc.js new file mode 100644 index 000000000..4a7848cde --- /dev/null +++ b/app/mirage/factories/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + rules: { + 'brace-style': 'off', + 'camelcase': 'off' + } +}; diff --git a/bower.json b/bower.json index 1487eb62d..b8f97dbd7 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,7 @@ { "name": "ghost-admin", "dependencies": { + "Faker": "3.1.0", "devicejs": "0.2.7", "ember": "2.9.0", "ember-cli-shims": "0.1.3", @@ -10,8 +11,8 @@ "google-caja": "6005.0.0", "jquery-file-upload": "9.12.3", "jquery-ui": "1.11.4", - "jqueryui-touch-punch": "furf/jquery-ui-touch-punch#4bc009145202d9c7483ba85f3a236a8f3470354d", "jquery.simulate.drag-sortable": "0.1.0", + "jqueryui-touch-punch": "furf/jquery-ui-touch-punch#4bc009145202d9c7483ba85f3a236a8f3470354d", "keymaster": "1.6.3", "lodash": "3.7.0", "normalize.css": "3.0.3", diff --git a/ember-cli-build.js b/ember-cli-build.js index c945b4e0f..85b5e9bdf 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -1,4 +1,4 @@ -/* jscs:disable */ +/* eslint-disable */ /* global require, module */ var EmberApp = require('ember-cli/lib/broccoli/ember-app'), @@ -86,7 +86,6 @@ module.exports = function (defaults) { compress: mythCompress, outputFile: isProduction ? 'ghost.min.css' : 'ghost.css' }, - hinting: false, fingerprint: disabled, nodeAssets: { 'blueimp-md5': { diff --git a/lib/.jshintrc b/lib/.jshintrc deleted file mode 100644 index 839c191fa..000000000 --- a/lib/.jshintrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "node": true, - "browser": false -} diff --git a/package.json b/package.json index d8335dd13..699d84db5 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "scripts": { "start": "ember server", "build": "ember build", - "test": "ember test" + "test": "ember test", + "lint": "ember test --launch phantomjs -f 'ESLint'" }, "engines": { "node": "~0.12.0 || ^4.2.0" @@ -42,10 +43,10 @@ "ember-cli-content-security-policy": "0.5.0", "ember-cli-dependency-checker": "1.3.0", "ember-cli-deprecation-workflow": "0.2.3", + "ember-cli-eslint": "3.0.0", "ember-cli-fastclick": "1.3.0", "ember-cli-htmlbars": "1.1.0", "ember-cli-htmlbars-inline-precompile": "0.3.6", - "ember-cli-jshint": "2.0.1", "ember-cli-mirage": "0.1.14", "ember-cli-mocha": "0.11.0", "ember-cli-node-assets": "0.1.4", @@ -69,19 +70,17 @@ "ember-simple-auth": "1.1.0", "ember-sinon": "0.5.1", "ember-sortable": "1.9.0", - "ember-suave": "4.0.1", "ember-watson": "0.8.3", "ember-wormhole": "0.5.1", "emberx-file-input": "1.1.0", + "eslint-plugin-ember-suave": "1.0.0", "fs-extra": "1.0.0", "ghost-editor": "0.1.4", "glob": "7.1.1", "grunt": "1.0.1", "grunt-bg-shell": "2.3.3", "grunt-contrib-clean": "1.0.0", - "grunt-contrib-jshint": "1.0.0", "grunt-contrib-watch": "1.0.0", - "grunt-jscs": "3.0.1", "grunt-shell": "1.3.1", "jquery-deparam": "0.5.2", "liquid-fire": "0.26.4", @@ -106,9 +105,7 @@ "grunt", "grunt-bg-shell", "grunt-contrib-clean", - "grunt-contrib-jshint", "grunt-contrib-watch", - "grunt-jscs", "grunt-shell" ] } diff --git a/tests/.eslintrc.js b/tests/.eslintrc.js new file mode 100644 index 000000000..7f4676cc7 --- /dev/null +++ b/tests/.eslintrc.js @@ -0,0 +1,11 @@ +module.exports = { + env: { + 'embertest': true, + 'mocha': true + }, + globals: { + server: false, + expect: false, + fileUpload: false + } +}; diff --git a/tests/.jscsrc b/tests/.jscsrc deleted file mode 100644 index 411c02d93..000000000 --- a/tests/.jscsrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "preset": "../.jscsrc", - "requireBlocksOnNewline": null -} diff --git a/tests/.jshintrc b/tests/.jshintrc deleted file mode 100644 index ef5ddd50e..000000000 --- a/tests/.jshintrc +++ /dev/null @@ -1,59 +0,0 @@ -{ - "predef": [ - "server", - "authenticateSession", - "invalidateSession", - "currentSession", - "document", - "window", - "location", - "setTimeout", - "-Promise", - "define", - "console", - "visit", - "exists", - "fillIn", - "click", - "keyEvent", - "triggerEvent", - "find", - "findWithAssert", - "wait", - "DS", - "andThen", - "currentURL", - "currentPath", - "currentRouteName", - "expect", - "fileUpload", - "moment" - ], - "mocha": true, - "node": false, - "browser": false, - "boss": true, - "curly": false, - "debug": false, - "devel": false, - "eqeqeq": true, - "evil": true, - "expr": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esversion": 6 -}