From 54ec93c171125d33da3f607929eb5fc3df416723 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Mon, 31 Mar 2025 08:57:14 -0700 Subject: [PATCH 1/2] fix: re-enable jsdoc checks I forgot to add `eslint-plugin-jsdoc` when creating our new configuration, even though it's present in the legacy configurations. This change re-adds the plugin and configures it for better interaction with TypeScript. --- lib/eslint.mjs | 24 ++++++++++++++++++++++++ lib/prettier.mjs | 3 +-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/eslint.mjs b/lib/eslint.mjs index 2ac31a3..fe4757b 100644 --- a/lib/eslint.mjs +++ b/lib/eslint.mjs @@ -3,6 +3,7 @@ import formatjs from 'eslint-plugin-formatjs' import html from 'eslint-plugin-html' import htmlSettings from 'eslint-plugin-html/src/settings.js' import importPlugin from 'eslint-plugin-import' +import jsdoc from 'eslint-plugin-jsdoc' import jsxA11y from 'eslint-plugin-jsx-a11y' import markdown from 'eslint-plugin-markdown' import react from 'eslint-plugin-react' @@ -131,6 +132,29 @@ const makeEslintConfig = ({ tsconfigRootDir, globals: globalsIn } = {}) => { 'import/no-duplicates': 'error', // Forbid duplicate imports }, }, + // eslint-plugin-jsdoc + jsdoc.configs['flat/recommended-error'], + { + files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'], + extends: [jsdoc.configs['flat/recommended-typescript-error']], + }, + { + rules: { + // If JSDoc comments are present, they must be informative (non-trivial). + // For example, the description "The foo." on a variable called "foo" is not informative. + // https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md + 'jsdoc/informative-docs': ['error'], + + // Require JSDoc comments on public / exported items. + // https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md + 'jsdoc/require-jsdoc': [ + 'error', + { + publicOnly: true, + }, + ], + }, + }, // eslint-plugin-jsx-a11y jsxA11y.flatConfigs.recommended, // eslint-plugin-markdown diff --git a/lib/prettier.mjs b/lib/prettier.mjs index e1bf0b9..20aff07 100644 --- a/lib/prettier.mjs +++ b/lib/prettier.mjs @@ -23,8 +23,7 @@ const prettierConfig = { } /** - * Make a Prettier configuration for Scratch style. - * @returns {import("prettier").Config} + * @returns {import("prettier").Config} A Prettier configuration for Scratch style. */ const makePrettierConfig = () => prettierConfig From 202fee8dadd982ffdf9009cc0c590b0a779cc269 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford <7019101+cwillisf@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:11:38 -0700 Subject: [PATCH 2/2] fix: disable jsdoc/require-jsdoc --- lib/eslint.mjs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/lib/eslint.mjs b/lib/eslint.mjs index fe4757b..dedc911 100644 --- a/lib/eslint.mjs +++ b/lib/eslint.mjs @@ -145,14 +145,9 @@ const makeEslintConfig = ({ tsconfigRootDir, globals: globalsIn } = {}) => { // https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md 'jsdoc/informative-docs': ['error'], - // Require JSDoc comments on public / exported items. + // Don't require JSDoc comments. Library authors should consider turning this on for external interfaces. // https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md - 'jsdoc/require-jsdoc': [ - 'error', - { - publicOnly: true, - }, - ], + 'jsdoc/require-jsdoc': ['off'], }, }, // eslint-plugin-jsx-a11y