Files
plex-playlist/frontend/eslint.config.js
copilotcoder e61b70c4a0
Some checks failed
CICD / Build and Push CICD Images (push) Successful in 37m29s
CICD / Build CICD Image Failure Postmortem (push) Has been skipped
CICD / Source Checks (push) Successful in 8m58s
CICD / Dependency Audits (Informational) (push) Successful in 1m26s
CICD / Source Lanes Failure Postmortem (push) Has been skipped
CICD / CICD Tests Complete (push) Successful in 5s
CICD / Build Release Images (push) Failing after 5m45s
CICD / Production Images Complete (push) Has been cancelled
CICD / Production Image Failures Postmortem (push) Has been cancelled
CICD / Runtime Black-Box Integration Tests (push) Has been cancelled
CICD / Integration Tests Failure Postmortem (push) Has been cancelled
CICD / End-to-End Tests (push) Has been cancelled
CICD / E2E Tests Failure Postmortem (push) Has been cancelled
CICD / Promote Staging Images To Release (push) Has been cancelled
CICD / Build Tester Images (push) Has started running
fix(frontend): restore TS6-compatible lint and type checks
2026-07-22 13:28:30 -04:00

115 lines
3.0 KiB
JavaScript

import typescript from '@typescript-eslint/eslint-plugin';
import typescriptParser from '@typescript-eslint/parser';
import vue from 'eslint-plugin-vue';
import vueParser from 'vue-eslint-parser';
import jsdoc from 'eslint-plugin-jsdoc';
import tsdoc from 'eslint-plugin-tsdoc';
import security from 'eslint-plugin-security';
const securityRules = security.configs?.recommended?.rules ?? {};
export default [
// Ignore patterns (replaces .eslintignore)
{
ignores: [
'node_modules/',
'.yarn/',
'dist/',
'dist-ssr/',
'*.local',
'coverage/',
'.env*',
'.vscode/',
'.idea/',
'*.tmp',
'*.temp',
],
},
// JavaScript files
{
files: ['**/*.{js,mjs,cjs}'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: {
security,
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
...securityRules,
},
},
// TypeScript files
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
parser: typescriptParser,
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: {
'@typescript-eslint': typescript,
jsdoc,
tsdoc,
security,
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
...securityRules,
// TSDoc rules for TypeScript files
'tsdoc/syntax': 'error',
'jsdoc/require-description': 'error',
'jsdoc/require-param': 'error',
'jsdoc/require-param-description': 'error',
'jsdoc/require-returns': 'error',
'jsdoc/require-returns-description': 'error',
'jsdoc/check-param-names': 'error',
'jsdoc/check-tag-names': 'error',
'jsdoc/check-types': 'error',
'jsdoc/valid-types': 'error',
},
},
// Vue files
{
files: ['**/*.vue'],
languageOptions: {
parser: vueParser,
parserOptions: {
parser: typescriptParser,
ecmaVersion: 'latest',
sourceType: 'module',
},
},
plugins: {
vue,
'@typescript-eslint': typescript,
jsdoc,
tsdoc,
security,
},
rules: {
...vue.configs['essential'].rules,
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
...securityRules,
// TSDoc rules for Vue files
'tsdoc/syntax': 'error',
'jsdoc/require-description': 'error',
'jsdoc/require-param': 'error',
'jsdoc/require-param-description': 'error',
'jsdoc/require-returns': 'error',
'jsdoc/require-returns-description': 'error',
'jsdoc/check-param-names': 'error',
'jsdoc/check-tag-names': 'error',
'jsdoc/check-types': 'error',
'jsdoc/valid-types': 'error',
},
},
];