diff --git a/eslint.config.mjs b/eslint.config.mjs index 040c2b7727..46417b6a9e 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -14,20 +14,15 @@ const gitignore = fileURLToPath(new URL('.gitignore', import.meta.url)); const off = 0; const warn = 1; -// const error = 2; - -const mitigatedJsRules = Object.fromEntries( - Object.entries(js.configs.recommended.rules).map(([rule]) => [rule, warn]) -); +const error = 2; /** @type {import('eslint').Linter.RulesRecord} */ const commonRules = { // https://github.com/eslint/eslint/blob/main/packages/js/src/configs/eslint-recommended.js - // ...js.configs.recommended.rules, - ...mitigatedJsRules, + ...js.configs.recommended.rules, // https://eslint.org/docs/latest/rules/eqeqeq - eqeqeq: [warn, 'smart'], + eqeqeq: [error, 'smart'], // https://eslint.org/docs/latest/rules/new-cap 'new-cap': off, @@ -36,16 +31,16 @@ const commonRules = { 'no-async-promise-executor': off, // https://eslint.org/docs/latest/rules/no-caller - 'no-caller': warn, + 'no-caller': error, // https://eslint.org/docs/latest/rules/no-cond-assign - 'no-cond-assign': [warn, 'except-parens'], + 'no-cond-assign': [error, 'except-parens'], // https://eslint.org/docs/latest/rules/no-console 'no-console': off, // https://eslint.org/docs/latest/rules/no-empty - 'no-empty': [warn, { allowEmptyCatch: true }], + 'no-empty': [error, { allowEmptyCatch: true }], // https://eslint.org/docs/latest/rules/no-prototype-builtins 'no-prototype-builtins': off, @@ -55,14 +50,14 @@ const commonRules = { // https://eslint.org/docs/latest/rules/no-unused-vars 'no-unused-vars': [ - warn, + error, { args: 'none' } ], // https://eslint.org/docs/latest/rules/no-use-before-define - 'no-use-before-define': [warn, { functions: false }], + 'no-use-before-define': [error, { functions: false }], // https://eslint.style/rules/js/arrow-parens#arrow-parens '@stylistic/arrow-parens': [warn, 'as-needed'], @@ -101,6 +96,7 @@ const commonRules = { '@stylistic/semi': [warn, 'always'] }; +// https://github.com/gajus/eslint-plugin-jsdoc?tab=readme-ov-file#rules /** @type {import('eslint').Linter.RulesRecord} */ const jsdocRules = { // https://github.com/gajus/eslint-plugin-jsdoc/blob/99cb131ee40fa10f943aadfd73a6d18da082882f/docs/rules/check-alignment.md @@ -117,6 +113,26 @@ const jsdocRules = { 'jsdoc/require-asterisk-prefix': warn }; +// https://github.com/eslint/markdown?tab=readme-ov-file#rules +/** @type {import('eslint').Linter.RulesRecord} */ +const markdownRules = { + 'markdown/fenced-code-language': off, + 'markdown/heading-increment': off, + 'markdown/no-duplicate-definitions': warn, + 'markdown/no-duplicate-headings': [warn, { checkSiblingsOnly: true }], + 'markdown/no-empty-definitions': warn, + 'markdown/no-empty-images': warn, + 'markdown/no-empty-links': warn, + 'markdown/no-html': off, + 'markdown/no-invalid-label-refs': off, + 'markdown/no-missing-atx-heading-space': warn, + 'markdown/no-missing-label-refs': off, // @todo + 'markdown/no-missing-link-fragments': off, + 'markdown/no-multiple-h1': off, + 'markdown/require-alt-text': warn, + 'markdown/table-column-count': warn +}; + export default defineConfig([ includeIgnoreFile(gitignore), globalIgnores([ @@ -246,24 +262,8 @@ export default defineConfig([ markdown }, language: 'markdown/commonmark', - rules: { - 'markdown/fenced-code-language': off, - 'markdown/heading-increment': off, - 'markdown/no-duplicate-definitions': warn, - // 'markdown/no-duplicate-headings': ["error", { checkSiblingsOnly: true }], // @todo waiting for @eslint/markdown@6.6.0 - 'markdown/no-empty-definitions': warn, - 'markdown/no-empty-images': warn, - 'markdown/no-empty-links': warn, - 'markdown/no-html': off, - 'markdown/no-invalid-label-refs': off, - 'markdown/no-missing-atx-heading-space': warn, - 'markdown/no-missing-label-refs': off, // @todo - 'markdown/no-missing-link-fragments': off, - 'markdown/no-multiple-h1': off, - 'markdown/require-alt-text': warn, - 'markdown/table-column-count': warn - } - } + rules: markdownRules + }, // https://github.com/eslint/markdown?tab=readme-ov-file#file-name-details // @todo // works out of the box but results in some `Parsing error`s @@ -271,5 +271,5 @@ export default defineConfig([ // * contributor_docs/fes_contribution_guide.md 354:1 error Parsing error: Unexpected character '🌸' // * contributor_docs/zh-Hans/unit_testing.md 35:1 error Parsing error: Unexpected token // * rfc_p5js_2.md 205:50 error Parsing error: Binding arguments in strict mode - // ...markdown.configs.processor + ...markdown.configs.processor ]); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6802ee68da..876e008e48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "devDependencies": { "@eslint/compat": "^1.2.9", "@eslint/js": "^9.28.0", - "@eslint/markdown": "^6.5.0", + "@eslint/markdown": "^6.6.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.1.0", @@ -916,14 +916,18 @@ } }, "node_modules/@eslint/markdown": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-6.5.0.tgz", - "integrity": "sha512-oSkF0p8X21vKEEAGTZASi7q3tbdTvlGduQ02Xz2A1AFncUP4RLVcNz27XurxVW4fs1JXuh0xBtvokXdtp/nN+Q==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-6.6.0.tgz", + "integrity": "sha512-IsWPy2jU3gaQDlioDC4sT4I4kG1hX1OMWs/q2sWwJrPoMASHW/Z4SDw+6Aql6EsHejGbagYuJbFq9Zvx+Y1b1Q==", "dev": true, "license": "MIT", + "workspaces": [ + "examples/*" + ], "dependencies": { "@eslint/core": "^0.14.0", "@eslint/plugin-kit": "^0.3.1", + "github-slugger": "^2.0.0", "mdast-util-from-markdown": "^2.0.2", "mdast-util-frontmatter": "^2.0.1", "mdast-util-gfm": "^3.0.0", @@ -964,6 +968,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/markdown/node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true, + "license": "ISC" + }, "node_modules/@eslint/markdown/node_modules/mdast-util-find-and-replace": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", diff --git a/package.json b/package.json index 6ef20b8689..40049a8df1 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@eslint/compat": "^1.2.9", "@eslint/js": "^9.28.0", - "@eslint/markdown": "^6.5.0", + "@eslint/markdown": "^6.6.0", "@rollup/plugin-alias": "^5.1.1", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.1.0",