ISSUE-0087:auth/context/utils.ts JWT session 死代码¶
症状¶
src/auth/context/utils.ts 导出一整套 JWT session 工具:
jwtDecode(token)— 解 JWT payloadisValidToken(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 行)