diff --git a/bin/eslint-ignore-errors.js b/bin/eslint-ignore-errors.js index 3d71b833..643d3f77 100755 --- a/bin/eslint-ignore-errors.js +++ b/bin/eslint-ignore-errors.js @@ -11,22 +11,22 @@ const fs = require('fs') const execFile = require('child_process').execFile execFile('eslint', ['--format', 'json', process.argv[2]], (error, stdout) => { - JSON.parse(stdout).forEach(result => { + for (const result of JSON.parse(stdout)) { const filename = result.filePath const jsLines = fs.readFileSync(filename, 'utf8').split('\n') const offensesByLine = {} let addedLines = 0 // Produces {47: ['github/no-d-none', 'github/no-blur'], 83: ['github/no-blur']} - result.messages.forEach(message => { + for (const message of result.messages) { if (offensesByLine[message.line]) { offensesByLine[message.line].push(message.ruleId) } else { offensesByLine[message.line] = [message.ruleId] } - }) + } - Object.keys(offensesByLine).forEach(line => { + for (const line of Object.keys(offensesByLine)) { const lineIndex = line - 1 + addedLines const previousLine = jsLines[lineIndex - 1] const ruleIds = offensesByLine[line].join(', ') @@ -37,12 +37,12 @@ execFile('eslint', ['--format', 'json', process.argv[2]], (error, stdout) => { jsLines.splice(lineIndex, 0, `${leftPad}/* eslint-disable-next-line ${ruleIds} */`) } addedLines += 1 - }) + } if (result.messages.length !== 0) { fs.writeFileSync(filename, jsLines.join('\n'), 'utf8') } - }) + } }) function isDisableComment(line) { diff --git a/bin/npm-check-github-package-requirements.js b/bin/npm-check-github-package-requirements.js index c55b0d8d..88c9aa41 100755 --- a/bin/npm-check-github-package-requirements.js +++ b/bin/npm-check-github-package-requirements.js @@ -10,7 +10,7 @@ function check(name, callback) { function run() { process.stdout.write(`1..${checks.length}\n`) - checks.forEach(([count, name, callback]) => { + for (const [count, name, callback] of checks) { Promise.resolve() .then(callback) .then(() => { @@ -19,7 +19,7 @@ function run() { .catch(error => { process.stdout.write(`not ok ${count} - ${name}\n ${error}\n`) }) - }) + } } const packageRoot = process.argv[2] diff --git a/lib/configs/app.js b/lib/configs/app.js index fa41d90c..92a4fc6d 100644 --- a/lib/configs/app.js +++ b/lib/configs/app.js @@ -7,5 +7,5 @@ module.exports = { 'github/no-dataset': 'error', 'github/no-then': 'error' }, - extends: [require.resolve('./recommended'), require.resolve('./es6'), require.resolve('./browser')] + extends: [require.resolve('./recommended'), require.resolve('./browser')] } diff --git a/lib/configs/es6.js b/lib/configs/es6.js deleted file mode 100644 index a2ec3ebd..00000000 --- a/lib/configs/es6.js +++ /dev/null @@ -1,51 +0,0 @@ -module.exports = { - parserOptions: { - ecmaFeatures: { - ecmaVersion: 6 - }, - sourceType: 'module' - }, - env: { - es6: true - }, - plugins: ['github', 'import'], - rules: { - 'github/array-foreach': 'error', - 'import/default': 'error', - 'import/export': 'error', - 'import/first': 'error', - 'import/named': 'error', - 'import/namespace': 'error', - 'import/no-absolute-path': 'error', - 'import/no-anonymous-default-export': [ - 'error', - { - allowAnonymousClass: false, - allowAnonymousFunction: false, - allowArray: true, - allowArrowFunction: false, - allowLiteral: true, - allowObject: true - } - ], - 'import/no-deprecated': 'error', - 'import/no-duplicates': 'error', - 'import/no-mutable-exports': 'error', - 'import/no-named-as-default-member': 'error', - 'import/no-named-as-default': 'error', - 'import/no-namespace': 'error', - 'no-var': 'error', - 'prefer-const': 'error', - 'prefer-rest-params': 'error', - 'prefer-spread': 'error', - 'prefer-template': 'error' - }, - settings: { - 'import/resolver': { - node: { - extensions: ['.js', '.ts'] - } - } - }, - extends: [require.resolve('./recommended')] -} diff --git a/lib/configs/recommended.js b/lib/configs/recommended.js index fd0d0bf8..43bc3fbc 100644 --- a/lib/configs/recommended.js +++ b/lib/configs/recommended.js @@ -1,8 +1,14 @@ module.exports = { - plugins: ['github', 'prettier', 'eslint-comments'], + parserOptions: { + ecmaFeatures: { + ecmaVersion: 6 + }, + sourceType: 'module' + }, env: { - commonjs: true + es6: true }, + plugins: ['github', 'prettier', 'eslint-comments', 'import'], rules: { 'constructor-super': 'error', 'eslint-comments/disable-enable-pair': 'off', @@ -13,7 +19,31 @@ module.exports = { 'eslint-comments/no-unused-enable': 'error', 'eslint-comments/no-use': ['error', {allow: ['eslint', 'eslint-disable-next-line', 'eslint-env', 'globals']}], 'func-style': ['error', 'declaration', {allowArrowFunctions: true}], + 'github/array-foreach': 'error', 'github/no-implicit-buggy-globals': 'error', + 'import/default': 'error', + 'import/export': 'error', + 'import/first': 'error', + 'import/named': 'error', + 'import/namespace': 'error', + 'import/no-absolute-path': 'error', + 'import/no-anonymous-default-export': [ + 'error', + { + allowAnonymousClass: false, + allowAnonymousFunction: false, + allowArray: true, + allowArrowFunction: false, + allowLiteral: true, + allowObject: true + } + ], + 'import/no-deprecated': 'error', + 'import/no-duplicates': 'error', + 'import/no-mutable-exports': 'error', + 'import/no-named-as-default': 'error', + 'import/no-named-as-default-member': 'error', + 'import/no-namespace': 'error', 'no-case-declarations': 'error', 'no-class-assign': 'error', 'no-compare-neg-zero': 'error', @@ -61,13 +91,25 @@ module.exports = { 'no-unused-vars': 'error', 'no-useless-concat': 'error', 'no-useless-escape': 'error', + 'no-var': 'error', 'object-shorthand': ['error', 'always', {avoidQuotes: true}], + 'prefer-const': 'error', 'prefer-promise-reject-errors': 'error', + 'prefer-rest-params': 'error', + 'prefer-spread': 'error', + 'prefer-template': 'error', 'prettier/prettier': 'error', 'require-yield': 'error', 'use-isnan': 'error', 'valid-typeof': 'error', camelcase: ['error', {properties: 'always'}], eqeqeq: ['error', 'smart'] + }, + settings: { + 'import/resolver': { + node: { + extensions: ['.js', '.ts'] + } + } } } diff --git a/lib/index.js b/lib/index.js index f1c30106..e0a4c486 100644 --- a/lib/index.js +++ b/lib/index.js @@ -17,7 +17,6 @@ module.exports = { configs: { app: require('./configs/app'), browser: require('./configs/browser'), - es6: require('./configs/es6'), recommended: require('./configs/recommended'), typescript: require('./configs/typescript') } diff --git a/lib/rules/js-class-name.js b/lib/rules/js-class-name.js index 14f27a17..e2f2a6c5 100644 --- a/lib/rules/js-class-name.js +++ b/lib/rules/js-class-name.js @@ -5,17 +5,17 @@ module.exports = { }, create(context) { - var allJsClassNameRegexp = /\bjs-[_a-zA-Z0-9-]*/g - var validJsClassNameRegexp = /^js(-[a-z0-9]+)+$/g - var endWithJsClassNameRegexp = /\bjs-[_a-zA-Z0-9-]*$/g + const allJsClassNameRegexp = /\bjs-[_a-zA-Z0-9-]*/g + const validJsClassNameRegexp = /^js(-[a-z0-9]+)+$/g + const endWithJsClassNameRegexp = /\bjs-[_a-zA-Z0-9-]*$/g function checkStringFormat(node, str) { - var matches = str.match(allJsClassNameRegexp) || [] - matches.forEach(function(match) { + const matches = str.match(allJsClassNameRegexp) || [] + for (const match of matches) { if (!match.match(validJsClassNameRegexp)) { context.report(node, 'js- class names should be lowercase and only contain dashes.') } - }) + } } function checkStringEndsWithJSClassName(node, str) { @@ -40,13 +40,13 @@ module.exports = { } }, TemplateLiteral(node) { - node.quasis.forEach(function(quasi) { + for (const quasi of node.quasis) { checkStringFormat(quasi, quasi.value.raw) if (quasi.tail === false) { checkStringEndsWithJSClassName(quasi, quasi.value.raw) } - }) + } } } } diff --git a/lib/rules/no-implicit-buggy-globals.js b/lib/rules/no-implicit-buggy-globals.js index ef48b025..66348812 100644 --- a/lib/rules/no-implicit-buggy-globals.js +++ b/lib/rules/no-implicit-buggy-globals.js @@ -7,14 +7,14 @@ module.exports = { create(context) { return { Program() { - var scope = context.getScope() + const scope = context.getScope() - scope.variables.forEach(function(variable) { + for (const variable of scope.variables) { if (variable.writeable) { return } - variable.defs.forEach(function(def) { + for (const def of variable.defs) { if ( def.type === 'FunctionName' || def.type === 'ClassName' || @@ -23,8 +23,8 @@ module.exports = { ) { context.report(def.node, 'Implicit global variable, assign as global property instead.') } - }) - }) + } + } } } } diff --git a/tests/array-foreach.js b/tests/array-foreach.js index 72609a80..3bfcd924 100644 --- a/tests/array-foreach.js +++ b/tests/array-foreach.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/array-foreach') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/array-foreach') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('array-foreach', rule, { valid: [ diff --git a/tests/async-currenttarget.js b/tests/async-currenttarget.js index f4bc16c0..59e8a5c6 100644 --- a/tests/async-currenttarget.js +++ b/tests/async-currenttarget.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/async-currenttarget') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/async-currenttarget') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('async-currenttarget', rule, { valid: [ diff --git a/tests/async-preventdefault.js b/tests/async-preventdefault.js index 06bc1099..35861f0c 100644 --- a/tests/async-preventdefault.js +++ b/tests/async-preventdefault.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/async-preventdefault') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/async-preventdefault') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('async-preventdefault', rule, { valid: [ diff --git a/tests/authenticity-token.js b/tests/authenticity-token.js index bd567ae1..3c955871 100644 --- a/tests/authenticity-token.js +++ b/tests/authenticity-token.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/authenticity-token') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/authenticity-token') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('authenticity-token', rule, { valid: [], diff --git a/tests/get-attribute.js b/tests/get-attribute.js index f8ffa009..f756ff14 100644 --- a/tests/get-attribute.js +++ b/tests/get-attribute.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/get-attribute') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/get-attribute') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('get-attribute', rule, { valid: [ diff --git a/tests/js-class-name.js b/tests/js-class-name.js index 392ed284..1aa829f9 100644 --- a/tests/js-class-name.js +++ b/tests/js-class-name.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/js-class-name') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/js-class-name') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('js-class-name', rule, { valid: [ diff --git a/tests/no-blur.js b/tests/no-blur.js index f5fffd30..086cf2d6 100644 --- a/tests/no-blur.js +++ b/tests/no-blur.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/no-blur') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/no-blur') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-blur', rule, { valid: [{code: 'target.focus()'}], diff --git a/tests/no-d-none.js b/tests/no-d-none.js index 20aa1f13..ecee4ba7 100644 --- a/tests/no-d-none.js +++ b/tests/no-d-none.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/no-d-none') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/no-d-none') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-d-none', rule, { valid: [ diff --git a/tests/no-dataset.js b/tests/no-dataset.js index 512fe9a1..d1116dea 100644 --- a/tests/no-dataset.js +++ b/tests/no-dataset.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/no-dataset') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/no-dataset') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-dataset', rule, { valid: [ diff --git a/tests/no-implicit-buggy-globals.js b/tests/no-implicit-buggy-globals.js index 5d0c6476..a21e739d 100644 --- a/tests/no-implicit-buggy-globals.js +++ b/tests/no-implicit-buggy-globals.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/no-implicit-buggy-globals') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/no-implicit-buggy-globals') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-implicit-buggy-globals', rule, { valid: [ diff --git a/tests/no-innerText.js b/tests/no-innerText.js index 4dc7ef39..89832df4 100644 --- a/tests/no-innerText.js +++ b/tests/no-innerText.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/no-innerText') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/no-innerText') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-innerText', rule, { valid: [ diff --git a/tests/no-then.js b/tests/no-then.js index fb7fce0d..7fe6ca37 100644 --- a/tests/no-then.js +++ b/tests/no-then.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/no-then') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/no-then') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('no-then', rule, { valid: [ diff --git a/tests/unescaped-html-literal.js b/tests/unescaped-html-literal.js index 29b00356..2bfaca76 100644 --- a/tests/unescaped-html-literal.js +++ b/tests/unescaped-html-literal.js @@ -1,7 +1,7 @@ -var rule = require('../lib/rules/unescaped-html-literal') -var RuleTester = require('eslint').RuleTester +const rule = require('../lib/rules/unescaped-html-literal') +const RuleTester = require('eslint').RuleTester -var ruleTester = new RuleTester() +const ruleTester = new RuleTester() ruleTester.run('unescaped-html-literal', rule, { valid: [