import prettier from 'eslint-plugin-prettier'; import globals from 'globals'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import js from '@eslint/js'; import { FlatCompat } from '@eslint/eslintrc'; import jsdoc from 'eslint-plugin-jsdoc'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const compat = new FlatCompat({ baseDirectory: __dirname, recommendedConfig: js.configs.recommended, allConfig: js.configs.all, }); // export default [...compat.extends("airbnb-base", "prettier"), { export default [ { ignores: ['**/jsontree.js', '**/prism.js'], // Exclude from linting }, ...compat.extends('prettier'), jsdoc.configs['flat/recommended'], { plugins: { prettier, jsdoc, }, languageOptions: { globals: { ...globals.node, }, ecmaVersion: 2022, sourceType: 'module', }, rules: { 'prettier/prettier': 'error', // JSDoc related rules // 'jsdoc/tag-lines': 1, 'jsdoc/tag-lines': ['error', 'any', { startLines: 1 }], 'jsdoc/require-jsdoc': [ 'error', { require: { FunctionDeclaration: true, MethodDefinition: true, ClassDeclaration: true, ArrowFunctionExpression: true, FunctionExpression: true, }, }, ], 'jsdoc/require-description': 'error', 'jsdoc/require-param': 'error', 'jsdoc/require-param-description': 'error', 'jsdoc/require-param-name': 'error', 'jsdoc/require-param-type': 'error', 'jsdoc/require-returns': 'error', 'jsdoc/require-returns-description': 'error', 'jsdoc/require-returns-type': 'error', }, }, ];