import eslint from '@eslint/js'; import globals from 'globals'; import tseslint from 'typescript-eslint'; export default tseslint.config( { ignores: [ '**/coverage/**', '**/dist/**', // Built headless agent bundle (gitignored, esbuild output), plan 014. '**/dist-agent/**', '**/node_modules/**', '**/*.d.ts', // Built plugin bundle (gitignored, esbuild output), not source. 'apps/obsidian-plugin/main.js', // Built preview bundle (gitignored, esbuild output), not source. The // preview's own sources next to it are linted normally. 'apps/obsidian-plugin/preview/preview.js', 'apps/obsidian-plugin/preview/preview.js.map', // Claude Design export bundle, reference artefacts, not linted source. 'design/**', ], }, eslint.configs.recommended, ...tseslint.configs.recommended, { files: ['**/*.js', '**/*.mjs'], languageOptions: { globals: globals.node, }, }, { files: ['**/*.ts'], languageOptions: { globals: { ...globals.browser, ...globals.node, }, parserOptions: { ecmaVersion: 2023, sourceType: 'module', }, }, rules: { '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-non-null-assertion': 'error', }, }, { files: ['**/*.test.ts'], languageOptions: { globals: globals.node, }, }, );