// eslint 9 flat config(Task 14):最小保守集——JS/TS recommended + 少量明显增益规则。 // 原则:不做风格警察;现有代码若对某规则大面积误报则降级该规则,而非批量改代码。 import eslint from '@eslint/js' import tseslint from 'typescript-eslint' export default tseslint.config( // 依赖与构建产物不参与 lint { ignores: ['**/node_modules/**', '**/dist/**', 'coverage/**', '.artifacts/**', '**/.astro/**'] }, eslint.configs.recommended, ...tseslint.configs.recommended, { rules: { // 未用变量报错,但允许下划线前缀显式豁免(测试/签名对齐常见) '@typescript-eslint/no-unused-vars': [ 'error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_', caughtErrorsIgnorePattern: '^_' }, ], }, }, { // 测试代码放宽 no-explicit-any:夹具行插入用 `as any` 表达"部分列 + 任意宽松形状"、 // catch (e: any) 取 postgres.js 错误细节,均为有意为之(49 处违例集中于此)。 // 生产代码(src/)保持该规则严格。 files: ['tests/**/*.ts', '**/test/**/*.ts'], rules: { '@typescript-eslint/no-explicit-any': 'off', }, }, { // Node 直跑的 .mjs 工具脚本(如 scripts/smoke-real-wxr.mjs):no-undef 对 TS 文件 // 由 TS 接管而关闭,但 .mjs 仍生效且无 node 全局——此处显式声明 node 全局, // 否则 process/setInterval 等误报 no-undef。 files: ['scripts/**/*.mjs'], languageOptions: { globals: { process: 'readonly', setInterval: 'readonly', clearInterval: 'readonly', setTimeout: 'readonly', clearTimeout: 'readonly', console: 'readonly', performance: 'readonly', Buffer: 'readonly', }, }, }, )