/* 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 whitespaceRules = require('./whitespaceRules'); 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(whitespaceRules, baseConfig); } else { const path = require('path'); const { execSync } = require('child_process'); module.exports = JSON.parse(String(execSync(path.join(__dirname, 'whitespace-async.js')))); }