prettier-eslint
Advanced tools
Comparing version
@@ -140,3 +140,3 @@ "use strict"; | ||
`); | ||
var prettier = requireModule(prettierPath, "prettier"); | ||
var prettier = (0, _utils.requireModule)(prettierPath, "prettier"); | ||
try { | ||
@@ -230,19 +230,6 @@ logger.trace(`calling prettier.format with the text and prettierOptions`); | ||
function getPrettierConfig(filePath) { | ||
var prettier = requireModule("prettier", "prettier"); | ||
var prettier = (0, _utils.requireModule)("prettier", "prettier"); | ||
return prettier.resolveConfig.sync(filePath); | ||
} | ||
function requireModule(modulePath, name) { | ||
try { | ||
logger.trace(`requiring "${name}" module at "${modulePath}"`); | ||
return require(modulePath); | ||
} catch (error) { | ||
logger.error(_commonTags.oneLine` | ||
There was trouble getting "${name}". | ||
Is "${modulePath}" a correct path to the "${name}" module? | ||
`); | ||
throw error; | ||
} | ||
} | ||
function getModulePath() { | ||
@@ -264,3 +251,3 @@ var filePath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : __filename; | ||
function getESLintCLIEngine(eslintPath, eslintOptions) { | ||
var _requireModule = requireModule(eslintPath, "eslint"), | ||
var _requireModule = (0, _utils.requireModule)(eslintPath, "eslint"), | ||
CLIEngine = _requireModule.CLIEngine; | ||
@@ -267,0 +254,0 @@ |
@@ -6,8 +6,9 @@ "use strict"; | ||
}); | ||
exports.getOptionsForFormatting = undefined; | ||
exports.requireModule = exports.getOptionsForFormatting = undefined; | ||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); | ||
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; | ||
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); /* eslint import/no-dynamic-require:0 */ | ||
var _commonTags = require("common-tags"); | ||
@@ -28,2 +29,5 @@ | ||
var RULE_NOT_CONFIGURED = "RULE_NOT_CONFIGURED"; | ||
var ruleValueExists = function ruleValueExists(prettierRuleValue) { | ||
return prettierRuleValue !== RULE_NOT_CONFIGURED && prettierRuleValue !== RULE_DISABLED && typeof prettierRuleValue !== "undefined"; | ||
}; | ||
var OPTION_GETTERS = { | ||
@@ -46,8 +50,2 @@ printWidth: { | ||
}, | ||
parser: { | ||
ruleValue: function ruleValue() { | ||
return RULE_NOT_CONFIGURED; | ||
}, | ||
ruleValueToPrettierOption: getParser | ||
}, | ||
singleQuote: { | ||
@@ -99,2 +97,3 @@ ruleValue: function ruleValue(rules) { | ||
exports.getOptionsForFormatting = getOptionsForFormatting; | ||
exports.requireModule = requireModule; | ||
@@ -107,3 +106,3 @@ | ||
var eslint = getRelevantESLintConfig(eslintConfig); | ||
var prettier = getPrettierOptionsFromESLintRules(eslint, prettierOptions, fallbackPrettierOptions); | ||
var prettier = getPrettierOptionsFromESLintRules(eslintConfig, prettierOptions, fallbackPrettierOptions); | ||
return { eslint, prettier }; | ||
@@ -114,19 +113,16 @@ } | ||
var rules = eslintConfig.rules; | ||
// TODO: remove rules that are not fixable for perf | ||
// this will require we load the config for every rule... | ||
// not sure that'll be worth the effort | ||
// but we may be able to maintain a manual list of rules that | ||
// are definitely not fixable. Which is what we'll do for now... | ||
var rulesThatWillNeverBeFixable = [ | ||
// TODO add more | ||
"valid-jsdoc", "global-require", "no-with"]; | ||
var fixableRules = getFixableRules(eslintConfig); | ||
logger.debug("reducing eslint rules down to relevant rules only"); | ||
var relevantRules = Object.keys(rules).reduce(function (rulesAccumulator, ruleName) { | ||
if (rulesThatWillNeverBeFixable.indexOf(ruleName) === -1) { | ||
logger.trace(`adding to relevant rules:`, JSON.stringify({ [ruleName]: rules[ruleName] })); | ||
rulesAccumulator[ruleName] = rules[ruleName]; | ||
var relevantRules = Object.entries(rules).reduce(function (rulesAccumulator, _ref) { | ||
var _ref2 = _slicedToArray(_ref, 2), | ||
name = _ref2[0], | ||
rule = _ref2[1]; | ||
if (fixableRules.includes(name)) { | ||
logger.trace(`adding to relevant rules:`, JSON.stringify({ [name]: rule })); | ||
rulesAccumulator[name] = rule; | ||
} else { | ||
logger.trace(`omitting from relevant rules:`, JSON.stringify({ [ruleName]: rules[ruleName] })); | ||
logger.trace(`omitting from relevant rules:`, JSON.stringify({ [name]: rule })); | ||
} | ||
@@ -147,2 +143,47 @@ return rulesAccumulator; | ||
function getFixableRules(eslintConfig) { | ||
var linter = getESLintLinter("eslint", eslintConfig); | ||
var rules = linter.getRules(); | ||
var fixableRules = []; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var _ref3 = _step.value; | ||
var _ref4 = _slicedToArray(_ref3, 2); | ||
var name = _ref4[0]; | ||
var rule = _ref4[1]; | ||
if (isRuleFixable(rule)) { | ||
fixableRules.push(name); | ||
} | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
return fixableRules; | ||
} | ||
function isRuleFixable(_ref5) { | ||
var meta = _ref5.meta; | ||
return meta && meta.fixable; | ||
} | ||
/** | ||
@@ -156,2 +197,8 @@ * This accepts an eslintConfig object and converts | ||
var prettierPluginOptions = getRuleValue(rules, "prettier/prettier", []); | ||
if (ruleValueExists(prettierPluginOptions)) { | ||
prettierOptions = _extends({}, prettierPluginOptions, prettierOptions); | ||
} | ||
return Object.keys(OPTION_GETTERS).reduce(function (options, key) { | ||
@@ -195,7 +242,2 @@ return configureOptions(prettierOptions, fallbackPrettierOptions, key, options, rules); | ||
function getParser(eslintValue, fallbacks) { | ||
// TODO: handle flow parser config | ||
return makePrettierOption("parser", eslintValue, fallbacks); | ||
} | ||
function getSingleQuote(eslintValue, fallbacks) { | ||
@@ -378,3 +420,3 @@ var prettierValue = void 0; | ||
function makePrettierOption(prettierRuleName, prettierRuleValue, fallbacks) { | ||
if (prettierRuleValue !== RULE_NOT_CONFIGURED && prettierRuleValue !== RULE_DISABLED && typeof prettierRuleValue !== "undefined") { | ||
if (ruleValueExists(prettierRuleValue)) { | ||
return prettierRuleValue; | ||
@@ -397,2 +439,27 @@ } | ||
return undefined; | ||
} | ||
function requireModule(modulePath, name) { | ||
try { | ||
logger.trace(`requiring "${name}" module at "${modulePath}"`); | ||
return require(modulePath); | ||
} catch (error) { | ||
logger.error(_commonTags.oneLine` | ||
There was trouble getting "${name}". | ||
Is "${modulePath}" a correct path to the "${name}" module? | ||
`); | ||
throw error; | ||
} | ||
} | ||
function getESLintLinter(eslintPath, eslintOptions) { | ||
var _requireModule = requireModule(eslintPath, "eslint"), | ||
Linter = _requireModule.Linter; | ||
try { | ||
return new Linter(eslintOptions); | ||
} catch (error) { | ||
logger.error(`There was trouble creating the ESLint Linter.`); | ||
throw error; | ||
} | ||
} |
{ | ||
"name": "prettier-eslint", | ||
"version": "8.5.0", | ||
"version": "8.6.0", | ||
"description": "Formats your JavaScript using prettier followed by eslint --fix", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
47154
2.67%584
7.55%