eslint-docgen
Advanced tools
Comparing version 0.6.2 to 0.7.0
{ | ||
"name": "eslint-docgen", | ||
"version": "0.6.2", | ||
"version": "0.7.0", | ||
"description": "Automatically generate ESLint plugin documentation from rule metadata and test cases.", | ||
@@ -28,3 +28,3 @@ "repository": { | ||
"ejs": "^3.1.6", | ||
"eslint": ">=5.0.0", | ||
"eslint": ">=8.0.0", | ||
"import-fresh": "^3.3.0", | ||
@@ -40,7 +40,7 @@ "jsonschema": "^1.4.0", | ||
"devDependencies": { | ||
"eslint-config-wikimedia": "^0.21.0", | ||
"eslint-config-wikimedia": "^0.22.1", | ||
"eslint-plugin-node": "^11.1.0", | ||
"mocha": "^9.1.3", | ||
"mocha": "^9.2.0", | ||
"nyc": "^15.1.0" | ||
} | ||
} |
@@ -40,3 +40,3 @@ 'use strict'; | ||
function buildDocsFromTests( | ||
async function buildDocsFromTests( | ||
name, ruleMeta, tests, configMap, config, globalTemplates, loadRuleTemplate, testerConfig | ||
@@ -82,3 +82,3 @@ ) { | ||
function buildRuleDetails( testList, isValid, showFixes ) { | ||
async function buildRuleDetails( testList, isValid, showFixes ) { | ||
testList = testList.filter( ( test ) => | ||
@@ -96,3 +96,3 @@ test.docgen === undefined ? | ||
const fix = require( './fix' ); | ||
fixedCode = fix.batchLintFix( codeList, testerConfig ); | ||
fixedCode = await fix.batchLintFix( codeList, testerConfig ); | ||
} else { | ||
@@ -116,3 +116,3 @@ fixedCode = codeList; | ||
const fix = require( './fix' ); | ||
fixedOutput = fix.batchLintFix( outputList, testerConfig ); | ||
fixedOutput = await fix.batchLintFix( outputList, testerConfig ); | ||
} else { | ||
@@ -222,3 +222,3 @@ fixedOutput = outputList; | ||
// Fixes whitespace in block comment. Too expensive for such a small fix? | ||
comments = fix.batchLintFix( comments, testerConfig ); | ||
comments = await fix.batchLintFix( comments, testerConfig ); | ||
} | ||
@@ -276,4 +276,4 @@ } | ||
const invalid = buildRuleDetails( tests.invalid, false ); | ||
const valid = buildRuleDetails( tests.valid, true ); | ||
const invalid = await buildRuleDetails( tests.invalid, false ); | ||
const valid = await buildRuleDetails( tests.valid, true ); | ||
@@ -288,3 +288,3 @@ const validInvalid = invalid.concat( valid ).sort( ( a, b ) => { | ||
if ( ruleMeta.fixable && config.showFixExamples ) { | ||
fixed = buildRuleDetails( | ||
fixed = await buildRuleDetails( | ||
tests.invalid.filter( ( test ) => !!test.output ), | ||
@@ -291,0 +291,0 @@ false, |
'use strict'; | ||
const eslint = require( 'eslint' ); | ||
const linter = new eslint.Linter(); | ||
const cli = new eslint.CLIEngine(); | ||
const config = cli.getConfigForFile( require( './main' ) ); | ||
const rules = cli.getRules(); | ||
const { Linter, ESLint } = require( 'eslint' ); | ||
const linter = new Linter(); | ||
const eslint = new ESLint(); | ||
const mergeOptions = require( 'merge-options' ); | ||
// eslint-disable-next-line node/no-missing-require | ||
const { builtinRules } = require( 'eslint/use-at-your-own-risk' ); | ||
// Optimization: Only use fixable rules | ||
const fixableRules = {}; | ||
Object.keys( config.rules ).forEach( function ( ruleName ) { | ||
if ( rules.has( ruleName ) ) { | ||
const rule = rules.get( ruleName ); | ||
if ( rule.meta.fixable ) { | ||
fixableRules[ ruleName ] = config.rules[ ruleName ]; | ||
async function getConfig() { | ||
const config = await eslint.calculateConfigForFile( require( './main' ) ); | ||
// Optimization: Only use fixable rules | ||
const fixableRules = {}; | ||
Object.keys( config.rules ).forEach( function ( ruleName ) { | ||
if ( builtinRules.has( ruleName ) ) { | ||
const rule = builtinRules.get( ruleName ); | ||
if ( rule.meta.fixable ) { | ||
fixableRules[ ruleName ] = config.rules[ ruleName ]; | ||
} | ||
} | ||
} | ||
} ); | ||
config.rules = fixableRules; | ||
} ); | ||
config.rules = fixableRules; | ||
return config; | ||
} | ||
/** | ||
@@ -29,4 +35,4 @@ * Lint and fix some code | ||
*/ | ||
function lintFix( code, testerConfig ) { | ||
const mergedConfig = mergeOptions( config, testerConfig ); | ||
async function lintFix( code, testerConfig ) { | ||
const mergedConfig = mergeOptions( await getConfig(), testerConfig ); | ||
@@ -59,7 +65,8 @@ // TODO | ||
*/ | ||
function batchLintFix( codeList, testerConfig ) { | ||
async function batchLintFix( codeList, testerConfig ) { | ||
const separator = '\n/* - */\n'; | ||
const codeBlock = codeList.join( ';' + separator ); | ||
// Add an extra semicolon to avoid syntax error | ||
return lintFix( codeBlock, testerConfig ).split( separator ).map( ( code ) => code.trim() ); | ||
const fixed = await lintFix( codeBlock, testerConfig ); | ||
return fixed.split( separator ).map( ( code ) => code.trim() ); | ||
} | ||
@@ -66,0 +73,0 @@ |
@@ -38,3 +38,3 @@ 'use strict'; | ||
function writeDocsFromTests( name, rule, tests, testerConfig, done ) { | ||
async function writeDocsFromTests( name, rule, tests, testerConfig, done ) { | ||
// If the tests have a `docgenConfig` property, this overrides the global configuration | ||
@@ -55,3 +55,3 @@ let configForRule = config; | ||
try { | ||
( { output, messages } = buildDocsFromTests( | ||
( { output, messages } = await buildDocsFromTests( | ||
name, rule.meta, tests, configMap, configForRule, | ||
@@ -58,0 +58,0 @@ globalTemplates, loadRuleTemplate, testerConfig |
37498
846
Updatedeslint@>=8.0.0