Files
cms-website/eslint.config.js
T
浅念 7194d1bcef feat(preview): 路由驱动的本地预览服务器
Plan 4 Task 7(V2 spec §12.2):apps/preview-server 零依赖 node:http 服务——
只读 succeeded job 的 dist + route-manifest(不查库),exact/ignore 双索引匹配
(query_key 行全串优先),html/asset 文件服务(manifest content_type 优先、
扩展名 MIME 表兜底、未知扩展 octet-stream)、redirect 301+Location、gone 410、
未命中 404 走 dist/404.html 自定义页;全响应 X-Robots-Tag noindex + HTML 响应
基础 CSP;回环绑定白名单(库级即拒);穿越预检先于 URL 解析(裸/编码点段、
反斜杠)+ target_file resolve+realpath 双检在 dist 内;目录请求一律 404(禁
列表);仅 GET/HEAD。sf.ts 增 preview:start(job 定位 + succeeded 校验 + 产物
行读取后即断池;--host 外值拒绝先于 DB 访问)。集成测试 12 例:真实构建产物
全链 + 手构 gone/MIME 探针行 + CLI 拒绝与子进程 happy path 冒烟。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-22 13:29:30 +08:00

50 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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、apps/preview-server/
// server.mjs):no-undef 对 TS 文件由 TS 接管而关闭,但 .mjs 仍生效且无 node
// 全局——此处显式声明 node 全局,否则 process/setInterval/URL 等误报 no-undef。
files: ['scripts/**/*.mjs', 'apps/preview-server/**/*.mjs'],
languageOptions: {
globals: {
process: 'readonly',
setInterval: 'readonly',
clearInterval: 'readonly',
setTimeout: 'readonly',
clearTimeout: 'readonly',
console: 'readonly',
performance: 'readonly',
Buffer: 'readonly',
URL: 'readonly',
URLSearchParams: 'readonly',
},
},
},
)