serhalp/npm.tax

GitHub: serhalp/npm.tax

npm.tax 是一个交互式应用,通过统计模型可视化 npm 依赖数量、时间跨度与单包被攻破概率如何叠加成累积供应链风险。

Stars: 0 | Forks: 0

# npm.tax:npm 供应链风险探索器 这是一个交互式应用,用于探索 npm 的依赖数量、时间和单个包被攻破的概率是如何叠加成累积供应链风险的。 ## 功能 - 通过 URL 参数控制直接依赖、间接依赖、时间范围和每日被攻破概率。 - 通过服务器路由进行真实的 npm 包查询,该路由调用 npmx 的 install-size 数据和 npm registry,并使用 Netlify Cache API/CDN 进行缓存。 - 内联 SVG 图表和可视化效果。 - 为分享的场景动态生成 Open Graph 图像。 - 浅色/深色/系统主题切换以及可分享的链接。 - 针对独立 Bernoulli 模型的通俗数学说明。 ## 技术栈 - TanStack Start + TanStack Router + Vite 8 - React 19 + TypeScript 严格模式 - Tailwind CSS v4 - 使用 Netlify Cache API 缓存包查询响应 - 使用 Netlify Vite 插件进行部署并在开发环境中实现完整的平台模拟 - 使用 Sonda 进行 bundle 可视化 - 使用 oxfmt 进行格式化 + 使用 oxlint 进行 lint - 使用 `node:test` 进行测试 + 使用 Axe Core 进行 a11y 测试 - Node.js 26 - pnpm 11 - 使用 knip 保持项目整洁 ## 本地开发 ``` pnpm install pnpm run dev ``` 开发服务器将在 `http://localhost:3000` 启动。 ## 检查 ``` pnpm run test pnpm run test:a11y pnpm run build pnpm run build:analyze pnpm run knip ``` `pnpm run test` 会运行单元测试、类型检查、格式检查和 lint。 `pnpm run build:analyze` 会将客户端 JavaScript bundle 的 Sonda HTML 和 JSON 报告写入到 `.sonda/` 目录中。 CI 会运行相同的分析构建,并将报告作为 `sonda-bundle-analysis` artifact 上传。 ## 模型 每个包每天被攻破的概率为 `p`。假设在 `d` 天内共有 `n` 个建模的包(包括项目本身): ``` P(breach) = 1 - (1 - p)^(n * d) ``` 该模型有意保持简单,并假设各个包的各个天数(package-days)是独立的。真实环境中发生的安全事件可能在不同的包、维护者和构建系统之间存在相关性,因此应将其视为一种探索性的估计,而非精确的预测。
标签:MITM代理, React, Syscalls, TanStack, Vite, 供应链风险, 可视化工具, 自动化攻击