| /* 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')))); | |
| }
 |