openvidu/openvidu-dashboard/eslint.config.mjs

67 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

// @ts-check
import js from '@eslint/js';
import angular from 'angular-eslint';
import prettier from 'eslint-config-prettier';
import { defineConfig, globalIgnores } from 'eslint/config';
import globals from 'globals';
import tseslint from 'typescript-eslint';
export default defineConfig([
globalIgnores(['**/node_modules/', '**/dist/', '**/.angular/', '**/coverage/']),
{
files: ['**/*.{js,mjs,cjs}'],
extends: [js.configs.recommended],
languageOptions: {
globals: globals.node
}
},
{
files: ['**/*.ts'],
extends: [js.configs.recommended, tseslint.configs.strictTypeChecked, tseslint.configs.stylisticTypeChecked],
languageOptions: {
parserOptions: {
projectService: true,
tsconfigRootDir: import.meta.dirname
},
globals: globals.node
},
rules: {
'@typescript-eslint/consistent-type-imports': ['error', { fixStyle: 'inline-type-imports' }],
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }],
curly: 'error',
eqeqeq: ['error', 'always'],
'padding-line-between-statements': [
'error',
{ blankLine: 'always', prev: '*', next: ['if', 'for', 'while', 'switch', 'try', 'return'] },
{ blankLine: 'always', prev: ['if', 'for', 'while', 'switch', 'try'], next: '*' }
]
}
},
{
files: ['dashboard-*/frontend/**/*.ts'],
extends: [angular.configs.tsRecommended],
processor: angular.processInlineTemplates,
languageOptions: {
globals: globals.browser
},
rules: {
'@angular-eslint/component-selector': ['error', { type: 'element', prefix: 'ovd', style: 'kebab-case' }],
'@angular-eslint/directive-selector': ['error', { type: 'attribute', prefix: 'ovd', style: 'camelCase' }],
'@angular-eslint/no-uncalled-signals': 'error',
'@angular-eslint/prefer-output-readonly': 'error',
'@angular-eslint/prefer-signals': 'error',
'@typescript-eslint/no-extraneous-class': ['error', { allowWithDecorator: true }]
}
},
{
files: ['dashboard-*/frontend/**/*.html'],
extends: [angular.configs.templateRecommended, angular.configs.templateAccessibility],
rules: {
'@angular-eslint/template/button-has-type': 'error',
'@angular-eslint/template/prefer-control-flow': 'error',
'@angular-eslint/template/prefer-self-closing-tags': 'error'
}
},
prettier
]);