diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000000..69c945431e --- /dev/null +++ b/.eslintrc @@ -0,0 +1,120 @@ +{ + "rules": { + "indent": [2, 2], + "quotes": [2, "single"], + "linebreak-style": [2, "unix"], + "semi": [2, "always"], + "no-extra-parens": 2, + "no-unexpected-multiline": 2, + "block-scoped-var": 2, + "dot-location": [2, "property"], + "dot-notation": 2, + "eqeqeq": 2, + "no-caller": 2, + "no-eval": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-empty-pattern": 2, + "no-empty-label": 2, + "no-lone-blocks": 2, + "no-loop-func": 2, + "no-implicit-coercion": 2, + "no-implied-eval": 2, + "no-native-reassign": 2, + "no-new-func": 2, + "no-new-wrappers": 2, + "no-new": 2, + "no-octal-escape": 2, + "no-octal": 2, + "no-param-reassign": 2, + "no-process-env": 2, + "no-proto": 2, + "no-implied-eval": 2, + "yoda": 2, + "wrap-iife": 2, + "radix": 2, + "no-with": 2, + "no-void": 2, + "no-useless-concat": 2, + "no-unused-expressions": 2, + "no-throw-literal": 2, + "no-sequences": 2, + "no-self-compare": 2, + "no-return-assign": 2, + "no-redeclare": 2, + "strict": [2, "global"], + "no-delete-var": 2, + "no-label-var": 2, + "no-shadow-restricted-names": 2, + "no-shadow": [2, { "builtinGlobals": true }], + "no-undef-init": 2, + "no-undef": [2, { typeof: true }], + "no-unused-vars": 2, + "no-use-before-define": 2, + "global-require": 2, + "handle-callback-err": [2, "^.*(e|E)rr"], + "no-path-concat": 2, + "arrow-spacing": 2, + "constructor-super": 2, + "generator-star-spacing": 2, + "no-arrow-condition": 2, + "no-class-assign": 2, + "no-const-assign": 2, + "no-dupe-class-members": 2, + "no-this-before-super": 2, + "no-var": 2, + "object-shorthand": 2, + "prefer-const": 0, + "prefer-spread": 2, + "prefer-template": 2, + "array-bracket-spacing": [2, "never"], + "brace-style": [2, "1tbs", { "allowSingleLine": false }], + "camelcase": 2, + "comma-spacing": 2, + "comma-style": [2, "last"], + "comma-dangle": [2, "always-multiline"], + "computed-property-spacing": [2, "never"], + "consistent-this": [2, "self"], + "func-names": 2, + "func-style": [2, "declaration", { "allowArrowFunctions": true }], + "block-spacing": [2, "always"], + "key-spacing": [2, {"beforeColon": false, "afterColon": true}], + "max-nested-callbacks": [2, 3], + "new-cap": 2, + "new-parens": 2, + "newline-after-var": 2, + "no-array-constructor": 2, + "no-continue": 2, + "no-lonely-if": 2, + "no-mixed-spaces-and-tabs": 2, + "no-trailing-spaces": 2, + "no-spaced-func": 2, + "no-new-object": 2, + "no-nested-ternary": 2, + "one-var": [2, "never"], + "operator-linebreak": [2, "after"], + "quote-props": [2, "as-needed"], + "semi-spacing": [2, {"before": false, "after": true}], + "space-after-keywords": 2, + "space-before-blocks": 2, + "space-before-function-paren": 2, + "space-before-keywords": 2, + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-return-throw-case": 2, + "space-unary-ops": 2, + "spaced-comment": [2, "always", { exceptions: ["-"]}], + "padded-blocks": [2, "never"], + "no-multiple-empty-lines": [2, {max: 2}] + }, + "env": { + "es6": true, + "node": true + }, + ecmaFeatures : { + modules: true + }, + "extends": "eslint:recommended" +} diff --git a/tasks/gulp-eslint.js b/tasks/gulp-eslint.js index 92dd25947c..403dc517f3 100644 --- a/tasks/gulp-eslint.js +++ b/tasks/gulp-eslint.js @@ -1,43 +1,21 @@ import gulp from 'gulp'; import eslint from 'gulp-eslint'; -import _ from 'lodash'; - -// TODO remove once we upgrade to lodash 3 -const defaultsDeep = _.partialRight(_.merge, _.defaults); - -const shared = { - rules: { - indent: [2, 2], - quotes: [2, 'single'], - 'linebreak-style': [2, 'unix'], - semi: [2, 'always'] - }, - extends: 'eslint:recommended', - env: { - es6: true - } -}; - -gulp.task('lint:client', () => { - return gulp.src(['./website/public/js/**/*.js']) - .pipe(eslint(defaultsDeep({ - env: { - node: true - } - }, shared))) - .pipe(eslint.format()) - .pipe(eslint.failAfterError()); -}); +// TODO lint client +// TDOO separate linting cong between +// TODO lint gulp tasks, tests, ...? +// TODO what about prefer-const rule? +// TODO remove estraverse dependency once https://github.com/adametry/gulp-eslint/issues/117 sorted out gulp.task('lint:server', () => { - return gulp.src(['./website/src/**/*.js']) - .pipe(eslint(defaultsDeep({ - env: { - browser: true - } - }, shared))) + return gulp + .src([ + './website/src/**/api-v3/**/*.js', + './website/src/models/user.js', + './website/src/server.js' + ]) + .pipe(eslint()) .pipe(eslint.format()) .pipe(eslint.failAfterError()); }); -gulp.task('lint', ['lint:server', 'lint:client']); +gulp.task('lint', ['lint:server']);