Repository navigation
chore(deps): drop the unused feather package and its moment@1.3.0 - #311
Conversation
Nothing imports the feather npm package; the icons come from the vendored public/assets/js/feather.min.js. #295 moved it to 0.0.6, whose moment@1.3.0 carries CVE-2017-18214 and CVE-2022-24785. Removing it takes feather, moment and utest out of the lockfile.
|
Sorry @saiemgilani, this account has used its review budget of 1,500,000 diff characters for the last 7 days. You can request another review in 1 day and 6 hours by commenting |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideRemoves the unused File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe Astro package manifest removes the ChangesAstro dependency update
Priority: ➖ Normal Estimated code review effort: 1 (Trivial) | ~2 minutes Change: Other Merge Risk: ⚪ Minimal · up to No actionable merge-blocking issue is established for this dependency removal. Complete normal build and test checks before merging. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR evidence:
|
| light | dark | |
|---|---|---|
| desktop 1280×800 | ||
| mobile 390×844 |
Thumbnails show the first screen; click one for the full page.
Walkthrough
Recorded against the PR build: a scroll-through of each evidence route, plus any Walkthrough steps: flow the PR names. Each link downloads the clip (a few hundred KB).
| flow | clips |
|---|---|
game-401856682 |
desktop light · mobile light |
Lighthouse: PR vs base
Base 879a3b3 → head 87e4923 · 3 runs per preset, median (min–max) · preview flags forced on: game-page-v2, scoreboard-compact, nfl, coaches, source-switch, player-pages, game-links, game-colours, five-factors
/game/401856682: frontend-only (saved HTML + built assets, gzip, no server wait)
| base mobile | PR mobile | base desktop | PR desktop | |
|---|---|---|---|---|
| Performance | 63 (54–64) | 61 (60–61) | 90 (90–91) | 90 (90–92) |
| Accessibility | 82 | 82 | 82 | 82 |
| Best Practices | 96 | 96 | 96 | 96 |
| SEO | 100 | 100 | 100 | 100 |
| FCP / LCP | 3.5 s / 4.1 s | 3.5 s / 4.1 s | 0.7 s / 0.8 s | 0.7 s / 0.8 s |
| TBT | 43 ms (31 ms–47 ms) | 41 ms (39 ms–43 ms) | 0 ms | 0 ms |
| CLS | 0.335 (0.321–0.410) | 0.377 (0.359–0.377) | 0.188 (0.175–0.188) | 0.188 (0.165–0.191) |
| Speed Index | 3.5 s | 3.5 s | 0.7 s | 0.7 s |
| HTML / JS transfer | 157 KB / 157 KB | 157 KB / 157 KB | 157 KB / 157 KB | 157 KB / 157 KB |
| DOM elements | 14,995 | 14,995 | 14,995 | 14,995 |
- ⚪ No frontend change: base and PR serve identical HTML (ignoring Astro's random island ids) and identical built client files for this page, so any difference in the table is run-to-run noise.
Method
- Builds: base is the PR's base commit; head is the PR merged onto it, so only this PR's changes differ. Each is a production
astro buildfrom its own worktree, with everypreviewfeature flag forced on in both. - Frontend-only: each tree's server-rendered HTML plus its own
dist/client, served gzip-compressed with no server wait, so the numbers measure what the branch ships. Base and PR runs alternate. - Runs: Lighthouse CLI with simulated throttling, mobile and desktop presets. A delta is flagged only when the gap between the base and PR run ranges clears an absolute floor and the median moved by a relative floor (
lighthouse-verdicts.mjs; Performance, already a 0–100 score, needs only the 3-point gap); Performance moves 10+ points between identical builds. - ⚪ No frontend change: printed instead of deltas when base and PR serve identical HTML (ignoring Astro's random island ids) and identical built client files for a page.
- Walkthrough:
astro/scripts/walkthrough.mjsrecords the PR build (desktop + mobile, light) and the clips are published beside the screenshots, pinned to a commit. - Tooling:
astro/scripts/lighthouse-compare.mjs,visual-check.mjsandwalkthrough.mjs; see CLAUDE.md "PR evidence".
Summary
Follow-up to #295. Removes the
feathernpm dependency. Nothing imports it: the feather icons the site draws come from the vendoredastro/public/assets/js/feather.min.js. #295 bumped it from 0.0.5 to 0.0.6, and 0.0.6 depends onmoment@1.3.0, which carries CVE-2017-18214 (ReDoS) and CVE-2022-24785 (locale path traversal), the two findings Sourcery raised on #295. Dropping the package takesfeather,momentandutestout ofpackage-lock.json. The lockfile change only deletes those three entries.CodeRabbit's other #295 findings:
[tool.uv.sources]still pins sportsdataverse-pymain, anduv.lockcarries the git SHA the Dockerfile extracts. The review ran against a commit that was force-pushed away.esbuildscript approval":allowScriptsis read by npm 11. CI and the droplet run npm 10.9, which ignores the field, so it is left as is for now.Tests
npx vitest run(full suite) passes locally.npm run build(Cloudflare adapter, workerd prerender) passes locally.python/is untouched; CI's pytest covers it.Evidence
see evidence comment
Evidence routes: /game/401856682
Walkthrough steps:
Walkthrough
see evidence comment
Checklist
python/unchanged)Evidence routes:names the pages this change affects mostWalkthrough steps:names any new interaction), or one is attached aboveastro/src/utils/features.tsSummary by Sourcery
Enhancements:
Summary by CodeRabbit