/* eslint global-require: 0 */ const { CLIEngine } = require('eslint'); if (CLIEngine) { /* eslint no-inner-declarations: 0 */ const assign = require('object.assign'); const entries = require('object.entries'); const baseConfig = require('.'); const severities = ['off', 'warn', 'error']; function getSeverity(ruleConfig) { if (Array.isArray(ruleConfig)) { return getSeverity(ruleConfig[0]); } if (typeof ruleConfig === 'number') { return severities[ruleConfig]; } return ruleConfig; } function onlyErrorOnRules(rulesToError, config) { const errorsOnly = assign({}, config); const cli = new CLIEngine({ baseConfig: config, useEslintrc: false }); const baseRules = cli.getConfigForFile(require.resolve('./')).rules; entries(baseRules).forEach((rule) => { const ruleName = rule[0]; const ruleConfig = rule[1]; const severity = getSeverity(ruleConfig); if (rulesToError.indexOf(ruleName) === -1 && severity === 'error') { if (Array.isArray(ruleConfig)) { errorsOnly.rules[ruleName] = ['warn'].concat(ruleConfig.slice(1)); } else if (typeof ruleConfig === 'number') { errorsOnly.rules[ruleName] = 1; } else { errorsOnly.rules[ruleName] = 'warn'; } } }); return errorsOnly; } module.exports = onlyErrorOnRules([ 'array-bracket-newline', 'array-bracket-spacing', 'array-element-newline', 'arrow-spacing', 'block-spacing', 'comma-spacing', 'computed-property-spacing', 'dot-location', 'eol-last', 'func-call-spacing', 'function-paren-newline', 'generator-star-spacing', 'implicit-arrow-linebreak', 'indent', 'key-spacing', 'keyword-spacing', 'line-comment-position', 'linebreak-style', 'multiline-ternary', 'newline-per-chained-call', 'no-irregular-whitespace', 'no-mixed-spaces-and-tabs', 'no-multi-spaces', 'no-regex-spaces', 'no-spaced-func', 'no-trailing-spaces', 'no-whitespace-before-property', 'nonblock-statement-body-position', 'object-curly-newline', 'object-curly-spacing', 'object-property-newline', 'one-var-declaration-per-line', 'operator-linebreak', 'padded-blocks', 'padding-line-between-statements', 'rest-spread-spacing', 'semi-spacing', 'semi-style', 'space-before-blocks', 'space-before-function-paren', 'space-in-parens', 'space-infix-ops', 'space-unary-ops', 'spaced-comment', 'switch-colon-spacing', 'template-tag-spacing', 'import/newline-after-import', ], baseConfig); } else { const path = require('path'); const { execSync } = require('child_process'); module.exports = JSON.parse(String(execSync(path.join(__dirname, 'whitespace-async.js')))); }