/** * ESLint Configuration for PanConverter * Uses flat config format (ESLint 9+) */ module.exports = [ { // Global ignores ignores: [ 'node_modules/**', 'dist/**', 'coverage/**', '*.min.js' ] }, { // JavaScript files files: ['**/*.js'], languageOptions: { ecmaVersion: 2022, sourceType: 'module', globals: { // Node.js require: 'readonly', module: 'readonly', exports: 'readonly', __dirname: 'readonly', __filename: 'readonly', process: 'readonly', Buffer: 'readonly', console: 'readonly', setTimeout: 'readonly', setInterval: 'readonly', clearTimeout: 'readonly', clearInterval: 'readonly', // Browser window: 'readonly', document: 'readonly', localStorage: 'readonly', alert: 'readonly', prompt: 'readonly', confirm: 'readonly', Event: 'readonly', CustomEvent: 'readonly', HTMLElement: 'readonly', MutationObserver: 'readonly', TextEncoder: 'readonly', FileReader: 'readonly', requestAnimationFrame: 'readonly', cancelAnimationFrame: 'readonly', navigator: 'readonly', location: 'readonly', fetch: 'readonly', URL: 'readonly', Blob: 'readonly', Image: 'readonly', DragEvent: 'readonly', ClipboardEvent: 'readonly', KeyboardEvent: 'readonly', MouseEvent: 'readonly', NodeList: 'readonly', HTMLInputElement: 'readonly', HTMLTextAreaElement: 'readonly', getComputedStyle: 'readonly', // Electron electronAPI: 'readonly', // Libraries marked: 'readonly', DOMPurify: 'readonly', hljs: 'readonly', mermaid: 'readonly', // Node.js global object global: 'writable', // Jest jest: 'readonly', describe: 'readonly', test: 'readonly', expect: 'readonly', beforeEach: 'readonly', afterEach: 'readonly', beforeAll: 'readonly', afterAll: 'readonly' } }, rules: { // Error prevention 'no-unused-vars': ['warn', { argsIgnorePattern: '^_' }], 'no-undef': 'error', 'no-console': 'off', // Allow console for Electron apps // Code quality 'eqeqeq': ['warn', 'always'], 'no-var': 'warn', 'prefer-const': 'warn', // Style (handled by Prettier) 'semi': 'off', 'quotes': 'off', 'indent': 'off', // Async handling 'no-async-promise-executor': 'warn', 'require-await': 'off', // Security 'no-eval': 'error', 'no-implied-eval': 'error', 'no-new-func': 'error' } } ];