diff --git a/lib/eslint.mjs b/lib/eslint.mjs index 2ac31a3..dedc911 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,24 @@ 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'], + + // 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': ['off'], + }, + }, // 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