跳转至

ISSUE-0087:auth/context/utils.ts JWT session 死代码

症状

src/auth/context/utils.ts 导出一整套 JWT session 工具:

  • jwtDecode(token) — 解 JWT payload
  • isValidToken(accessToken) — 检 token 是否过期
  • tokenExpired(exp) — 设过期定时器 + alert('Token expired')
  • setSession(accessToken) — 写 sessionStorage + 设 axios header(已注释)

但本扩展的登录机制是「storage 轮询 uid+token」(见 login-architecture-evolution), 根本不走 JWT session。这整个文件是从母模板(minimals)迁移时一并搬来、从未接线的死代码。

根因

母模板(minimals admin template)的标准 auth 工具。扩展 fork 时连同 src/auth/ 整目录搬过来, 但扩展改用 webRequest 嗅探 + cookie 自动登录的 storage 模式,这套 JWT 工具从未被调用过。 与 0086-jsstore-insertone-empty-function-footgun 同类——迁移自母产品的未清理残留。

取证(删前 100% 确认零引用)

# 1. 四个符号全仓引用(排除文件自身)→ 空
rg -n 'isValidToken|setSession|tokenExpired|jwtDecode' src/ | rg -v 'auth/context/utils.ts'
# → 零命中

# 2. 谁 import 了 auth/context/utils → 无
#    (components/custom-popover、components/image 下的 './utils' 是各自目录的同名文件,与 auth 无关)

# 3. barrel src/auth/context/index.ts 只导出 3 个组件,未 re-export utils
#    export { AuthContext, AuthConsumer, AuthProvider }

三重确认零引用、零 re-export → 整文件可安全删除。

修复

直接 rm src/auth/context/utils.ts(删前备份到 backup/v0.10.124_20260603_dead-code-cleanup/)。

  • compile:tsc --noEmit ✅ 0 错误
  • build:pnpm build ✅ 10.0s
  • manifest sanity ✅ 0.10.124

经验教训

  • fork 母模板后要扫一遍 src/auth/src/utils/ 的未接线文件——JWT 工具、session 管理、 axios 拦截器这类"标准但本项目用不上"的东西最容易残留。
  • 死代码的危害是误导:留着 utils.ts 会让后人以为登录走 JWT,实际是 storage 轮询, 排查登录问题时白绕一圈。
  • 判删三步:① 符号零引用 ② 文件无人 import ③ barrel 无 re-export。三个都过才删整文件。

影响文件

  • 删除 src/auth/context/utils.ts(68 行)