Files
butler-sos/eslint.config.js
2025-05-11 18:03:25 +02:00

67 lines
2.0 KiB
JavaScript

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',
},
},
];