diff --git a/.eslintrc.json b/.eslintrc.json index d76f8131..12df41a7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -105,7 +105,7 @@ "jsdoc/check-access": "error", "jsdoc/check-alignment": "error", - "jsdoc/check-examples": "error", + "jsdoc/check-examples": "off", "jsdoc/check-indentation": "error", "jsdoc/check-line-alignment": "error", "jsdoc/check-param-names": "error", diff --git a/package.json b/package.json index 8a9fbf42..b151e132 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,8 @@ "devDependencies": { "ava": "~3.15.0", "c8": "~7.10.0", - "eslint": "~7.32.0", - "eslint-plugin-jsdoc": "~37.2.8", + "eslint": "~8.5.0", + "eslint-plugin-jsdoc": "~37.4.0", "eslint-plugin-node": "~11.1.0", "eslint-plugin-unicorn": "~39.0.0", "globby": "~11.0.4", diff --git a/test/rules/lint-javascript.js b/test/rules/lint-javascript.js index 441e1a6d..0c8f4d1f 100644 --- a/test/rules/lint-javascript.js +++ b/test/rules/lint-javascript.js @@ -4,7 +4,7 @@ const { filterTokens } = require("markdownlint-rule-helpers"); const eslint = require("eslint"); -const cliEngine = new eslint.CLIEngine({}); +const eslintInstance = new eslint.ESLint(); const linter = new eslint.Linter(); const languageJavaScript = /js|javascript/i; @@ -28,23 +28,27 @@ module.exports = { "names": [ "lint-javascript" ], "description": "Rule that lints JavaScript code", "tags": [ "test", "lint", "javascript" ], + "asynchronous": true, "function": (params, onError) => { filterTokens(params, "fence", (fence) => { if (languageJavaScript.test(fence.info)) { - let config = cliEngine.getConfigForFile(params.name); - config = cleanJsdocRulesFromEslintConfig(config); - const results = linter.verify(fence.content, config); - results.forEach((result) => { - const lineNumber = fence.lineNumber + result.line; - onError({ - "lineNumber": lineNumber, - "detail": result.message, - "context": params.lines[lineNumber - 1] + return eslintInstance.calculateConfigForFile(params.name) + .then((config) => { + config = cleanJsdocRulesFromEslintConfig(config); + const results = linter.verify(fence.content, config); + results.forEach((result) => { + const lineNumber = fence.lineNumber + result.line; + onError({ + "lineNumber": lineNumber, + "detail": result.message, + "context": params.lines[lineNumber - 1] + }); + }); }); - }); } + return Promise.resolve(); }); - // Unused: + // Unsupported: // filterTokens("code_block"), language unknown // filterTokens("code_inline"), too brief }